0s autopkgtest [00:48:06]: starting date and time: 2024-03-28 00:48:06+0000 0s autopkgtest [00:48:06]: git checkout: 4a1cd702 l/adt_testbed: don't blame the testbed for unsolvable build deps 0s autopkgtest [00:48:06]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.vdtn2rql/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed --apt-upgrade r-cran-matrixstats --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=r-base/4.3.3-2build1 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-2@bos02-s390x-14.secgroup --name adt-noble-s390x-r-cran-matrixstats-20240328-004806-juju-7f2275-prod-proposed-migration-environment-2-c148e8b4-81f2-411b-a613-1643d7aff890 --image adt/ubuntu-noble-s390x-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-2 --net-id=net_prod-proposed-migration -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com'"'"'' --mirror=http://ftpmaster.internal/ubuntu/ 103s autopkgtest [00:49:49]: testbed dpkg architecture: s390x 104s autopkgtest [00:49:50]: testbed apt version: 2.7.12 104s autopkgtest [00:49:50]: @@@@@@@@@@@@@@@@@@@@ test bed setup 105s Get:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease [117 kB] 105s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main Sources [475 kB] 105s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/multiverse Sources [55.9 kB] 105s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/restricted Sources [8504 B] 105s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/universe Sources [3961 kB] 106s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main s390x Packages [652 kB] 106s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main s390x c-n-f Metadata [3032 B] 106s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/restricted s390x Packages [1372 B] 106s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/restricted s390x c-n-f Metadata [116 B] 106s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x Packages [4015 kB] 107s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x c-n-f Metadata [7292 B] 107s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/multiverse s390x Packages [46.2 kB] 107s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/multiverse s390x c-n-f Metadata [116 B] 108s Fetched 9343 kB in 3s (3021 kB/s) 109s Reading package lists... 110s Reading package lists... 111s Building dependency tree... 111s Reading state information... 111s Calculating upgrade... 111s The following packages will be upgraded: 111s binutils binutils-common binutils-s390x-linux-gnu dmsetup gcc-13-base 111s gcc-14-base initramfs-tools initramfs-tools-bin initramfs-tools-core jq 111s libbinutils libctf-nobfd0 libctf0 libdevmapper1.02.1 libexpat1 libftdi1-2 111s libgcc-s1 libjq1 libseccomp2 libsframe1 libstdc++6 libusb-1.0-0 111s 22 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 111s Need to get 4987 kB of archives. 111s After this operation, 1024 B of additional disk space will be used. 111s Get:1 http://ftpmaster.internal/ubuntu noble/main s390x gcc-14-base s390x 14-20240315-1ubuntu1 [47.0 kB] 111s Get:2 http://ftpmaster.internal/ubuntu noble/main s390x libstdc++6 s390x 14-20240315-1ubuntu1 [908 kB] 112s Get:3 http://ftpmaster.internal/ubuntu noble/main s390x libgcc-s1 s390x 14-20240315-1ubuntu1 [35.9 kB] 112s Get:4 http://ftpmaster.internal/ubuntu noble/main s390x libseccomp2 s390x 2.5.5-1ubuntu2 [53.4 kB] 112s Get:5 http://ftpmaster.internal/ubuntu noble/main s390x libdevmapper1.02.1 s390x 2:1.02.185-3ubuntu2 [142 kB] 112s Get:6 http://ftpmaster.internal/ubuntu noble/main s390x dmsetup s390x 2:1.02.185-3ubuntu2 [80.4 kB] 112s Get:7 http://ftpmaster.internal/ubuntu noble/main s390x libexpat1 s390x 2.6.1-2 [94.8 kB] 112s Get:8 http://ftpmaster.internal/ubuntu noble/main s390x libusb-1.0-0 s390x 2:1.0.27-1 [54.8 kB] 112s Get:9 http://ftpmaster.internal/ubuntu noble/main s390x libctf0 s390x 2.42-4ubuntu1 [98.4 kB] 112s Get:10 http://ftpmaster.internal/ubuntu noble/main s390x libctf-nobfd0 s390x 2.42-4ubuntu1 [100 kB] 112s Get:11 http://ftpmaster.internal/ubuntu noble/main s390x binutils-s390x-linux-gnu s390x 2.42-4ubuntu1 [2270 kB] 112s Get:12 http://ftpmaster.internal/ubuntu noble/main s390x libbinutils s390x 2.42-4ubuntu1 [477 kB] 112s Get:13 http://ftpmaster.internal/ubuntu noble/main s390x binutils s390x 2.42-4ubuntu1 [3056 B] 112s Get:14 http://ftpmaster.internal/ubuntu noble/main s390x binutils-common s390x 2.42-4ubuntu1 [217 kB] 112s Get:15 http://ftpmaster.internal/ubuntu noble/main s390x libsframe1 s390x 2.42-4ubuntu1 [14.2 kB] 112s Get:16 http://ftpmaster.internal/ubuntu noble/main s390x gcc-13-base s390x 13.2.0-21ubuntu1 [48.3 kB] 112s Get:17 http://ftpmaster.internal/ubuntu noble/main s390x initramfs-tools all 0.142ubuntu23 [9058 B] 112s Get:18 http://ftpmaster.internal/ubuntu noble/main s390x initramfs-tools-core all 0.142ubuntu23 [50.1 kB] 112s Get:19 http://ftpmaster.internal/ubuntu noble/main s390x initramfs-tools-bin s390x 0.142ubuntu23 [20.5 kB] 112s Get:20 http://ftpmaster.internal/ubuntu noble/main s390x jq s390x 1.7.1-3 [66.5 kB] 112s Get:21 http://ftpmaster.internal/ubuntu noble/main s390x libjq1 s390x 1.7.1-3 [168 kB] 112s Get:22 http://ftpmaster.internal/ubuntu noble/main s390x libftdi1-2 s390x 1.5-6build4 [29.3 kB] 113s Fetched 4987 kB in 2s (3280 kB/s) 113s (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 ... 52167 files and directories currently installed.) 113s Preparing to unpack .../gcc-14-base_14-20240315-1ubuntu1_s390x.deb ... 113s Unpacking gcc-14-base:s390x (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 113s Setting up gcc-14-base:s390x (14-20240315-1ubuntu1) ... 113s (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 ... 52167 files and directories currently installed.) 113s Preparing to unpack .../libstdc++6_14-20240315-1ubuntu1_s390x.deb ... 113s Unpacking libstdc++6:s390x (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 113s Setting up libstdc++6:s390x (14-20240315-1ubuntu1) ... 113s (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 ... 52167 files and directories currently installed.) 113s Preparing to unpack .../libgcc-s1_14-20240315-1ubuntu1_s390x.deb ... 113s Unpacking libgcc-s1:s390x (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 113s Setting up libgcc-s1:s390x (14-20240315-1ubuntu1) ... 113s (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 ... 52167 files and directories currently installed.) 113s Preparing to unpack .../libseccomp2_2.5.5-1ubuntu2_s390x.deb ... 113s Unpacking libseccomp2:s390x (2.5.5-1ubuntu2) over (2.5.5-1ubuntu1) ... 113s Setting up libseccomp2:s390x (2.5.5-1ubuntu2) ... 113s (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 ... 52167 files and directories currently installed.) 113s Preparing to unpack .../00-libdevmapper1.02.1_2%3a1.02.185-3ubuntu2_s390x.deb ... 113s Unpacking libdevmapper1.02.1:s390x (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 113s Preparing to unpack .../01-dmsetup_2%3a1.02.185-3ubuntu2_s390x.deb ... 113s Unpacking dmsetup (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 113s Preparing to unpack .../02-libexpat1_2.6.1-2_s390x.deb ... 113s Unpacking libexpat1:s390x (2.6.1-2) over (2.6.0-1) ... 113s Preparing to unpack .../03-libusb-1.0-0_2%3a1.0.27-1_s390x.deb ... 113s Unpacking libusb-1.0-0:s390x (2:1.0.27-1) over (2:1.0.26-1) ... 113s Preparing to unpack .../04-libctf0_2.42-4ubuntu1_s390x.deb ... 113s Unpacking libctf0:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 113s Preparing to unpack .../05-libctf-nobfd0_2.42-4ubuntu1_s390x.deb ... 113s Unpacking libctf-nobfd0:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 113s Preparing to unpack .../06-binutils-s390x-linux-gnu_2.42-4ubuntu1_s390x.deb ... 113s Unpacking binutils-s390x-linux-gnu (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 113s Preparing to unpack .../07-libbinutils_2.42-4ubuntu1_s390x.deb ... 113s Unpacking libbinutils:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 113s Preparing to unpack .../08-binutils_2.42-4ubuntu1_s390x.deb ... 113s Unpacking binutils (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 113s Preparing to unpack .../09-binutils-common_2.42-4ubuntu1_s390x.deb ... 113s Unpacking binutils-common:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 113s Preparing to unpack .../10-libsframe1_2.42-4ubuntu1_s390x.deb ... 113s Unpacking libsframe1:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 113s Preparing to unpack .../11-gcc-13-base_13.2.0-21ubuntu1_s390x.deb ... 113s Unpacking gcc-13-base:s390x (13.2.0-21ubuntu1) over (13.2.0-17ubuntu2) ... 113s Preparing to unpack .../12-initramfs-tools_0.142ubuntu23_all.deb ... 113s Unpacking initramfs-tools (0.142ubuntu23) over (0.142ubuntu20) ... 113s Preparing to unpack .../13-initramfs-tools-core_0.142ubuntu23_all.deb ... 113s Unpacking initramfs-tools-core (0.142ubuntu23) over (0.142ubuntu20) ... 113s Preparing to unpack .../14-initramfs-tools-bin_0.142ubuntu23_s390x.deb ... 113s Unpacking initramfs-tools-bin (0.142ubuntu23) over (0.142ubuntu20) ... 113s Preparing to unpack .../15-jq_1.7.1-3_s390x.deb ... 113s Unpacking jq (1.7.1-3) over (1.7.1-2) ... 113s Preparing to unpack .../16-libjq1_1.7.1-3_s390x.deb ... 113s Unpacking libjq1:s390x (1.7.1-3) over (1.7.1-2) ... 113s Preparing to unpack .../17-libftdi1-2_1.5-6build4_s390x.deb ... 113s Unpacking libftdi1-2:s390x (1.5-6build4) over (1.5-6build3) ... 113s Setting up libexpat1:s390x (2.6.1-2) ... 113s Setting up libjq1:s390x (1.7.1-3) ... 113s Setting up binutils-common:s390x (2.42-4ubuntu1) ... 113s Setting up libctf-nobfd0:s390x (2.42-4ubuntu1) ... 113s Setting up libsframe1:s390x (2.42-4ubuntu1) ... 113s Setting up gcc-13-base:s390x (13.2.0-21ubuntu1) ... 113s Setting up libdevmapper1.02.1:s390x (2:1.02.185-3ubuntu2) ... 113s Setting up dmsetup (2:1.02.185-3ubuntu2) ... 114s Setting up jq (1.7.1-3) ... 114s Setting up libusb-1.0-0:s390x (2:1.0.27-1) ... 114s Setting up libbinutils:s390x (2.42-4ubuntu1) ... 114s Setting up initramfs-tools-bin (0.142ubuntu23) ... 114s Setting up libctf0:s390x (2.42-4ubuntu1) ... 114s Setting up binutils-s390x-linux-gnu (2.42-4ubuntu1) ... 114s Setting up binutils (2.42-4ubuntu1) ... 114s Setting up libftdi1-2:s390x (1.5-6build4) ... 114s Setting up initramfs-tools-core (0.142ubuntu23) ... 114s Setting up initramfs-tools (0.142ubuntu23) ... 114s update-initramfs: deferring update (trigger activated) 114s Processing triggers for man-db (2.12.0-3) ... 114s Processing triggers for libc-bin (2.39-0ubuntu6) ... 114s Processing triggers for initramfs-tools (0.142ubuntu23) ... 114s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 114s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 118s Using config file '/etc/zipl.conf' 118s Building bootmap in '/boot' 118s Adding IPL section 'ubuntu' (default) 118s Preparing boot device for LD-IPL: vda (0000). 118s Done. 118s Reading package lists... 118s Building dependency tree... 118s Reading state information... 118s 0 upgraded, 0 newly installed, 0 to remove and 222 not upgraded. 119s Hit:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease 119s Hit:2 http://ftpmaster.internal/ubuntu noble InRelease 119s Hit:3 http://ftpmaster.internal/ubuntu noble-updates InRelease 119s Hit:4 http://ftpmaster.internal/ubuntu noble-security InRelease 120s Reading package lists... 120s Reading package lists... 120s Building dependency tree... 120s Reading state information... 120s Calculating upgrade... 121s The following packages were automatically installed and are no longer required: 121s libaio1 libnetplan0 python3-distutils python3-lib2to3 121s Use 'sudo apt autoremove' to remove them. 121s The following packages will be REMOVED: 121s libapt-pkg6.0 libarchive13 libatm1 libcurl3-gnutls libcurl4 libdb5.3 libelf1 121s libext2fs2 libgdbm-compat4 libgdbm6 libglib2.0-0 libgnutls30 libgpgme11 121s libhogweed6 libmagic1 libnettle8 libnpth0 libnvme1 libparted2 libperl5.38 121s libpng16-16 libpsl5 libreadline8 libreiserfscore0 libssl3 libtirpc3 liburcu8 121s libuv1 121s The following NEW packages will be installed: 121s bpfcc-tools bpftrace fontconfig-config fonts-dejavu-core fonts-dejavu-mono 121s hwdata ieee-data libaio1t64 libapt-pkg6.0t64 libarchive13t64 libatm1t64 121s libbpfcc libc-dev-bin libc-devtools libc6-dev libclang-cpp18 libclang1-18 121s libcrypt-dev libcurl3t64-gnutls libcurl4t64 libdb5.3t64 libdeflate0 121s libdw1t64 libelf1t64 libext2fs2t64 libfontconfig1 libfreetype6 libgd3 121s libgdbm-compat4t64 libgdbm6t64 libglib2.0-0t64 libgnutls30t64 libgpgme11t64 121s libhogweed6t64 libjbig0 libjpeg-turbo8 libjpeg8 libllvm18 libmagic1t64 121s libnetplan1 libnettle8t64 libnpth0t64 libnvme1t64 libparted2t64 121s libperl5.38t64 libpng16-16t64 libpsl5t64 libreadline8t64 libreiserfscore0t64 121s libsharpyuv0 libssl3t64 libtiff6 libtirpc3t64 liburcu8t64 libuv1t64 libwebp7 121s libxpm4 linux-headers-6.8.0-20 linux-headers-6.8.0-20-generic 121s linux-image-6.8.0-20-generic linux-libc-dev linux-modules-6.8.0-20-generic 121s linux-modules-extra-6.8.0-20-generic linux-tools-6.8.0-20 121s linux-tools-6.8.0-20-generic linux-tools-common manpages manpages-dev 121s python3-bpfcc python3-netaddr rpcsvc-proto ubuntu-kernel-accessories 121s xdg-user-dirs 121s The following packages have been kept back: 121s s390-tools 121s The following packages will be upgraded: 121s apparmor apt apt-utils base-files bash bind9-dnsutils bind9-host bind9-libs 121s bolt bsdextrautils bsdutils btrfs-progs coreutils cryptsetup-bin curl dbus 121s dbus-bin dbus-daemon dbus-session-bus-common dbus-system-bus-common 121s dbus-user-session dhcpcd-base dirmngr dpkg dpkg-dev e2fsprogs e2fsprogs-l10n 121s eject fdisk file ftp fwupd gawk gir1.2-girepository-2.0 gir1.2-glib-2.0 121s gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpgconf gpgsm gpgv 121s groff-base ibverbs-providers inetutils-telnet info install-info iproute2 121s keyboxd kmod kpartx krb5-locales libapparmor1 libaudit-common libaudit1 121s libblkid1 libblockdev-crypto3 libblockdev-fs3 libblockdev-loop3 121s libblockdev-mdraid3 libblockdev-nvme3 libblockdev-part3 libblockdev-swap3 121s libblockdev-utils3 libblockdev3 libbpf1 libbrotli1 libcap-ng0 libcom-err2 121s libcryptsetup12 libdbus-1-3 libdebconfclient0 libdpkg-perl 121s libevent-core-2.1-7 libfdisk1 libfido2-1 libfwupd2 libgirepository-1.0-1 121s libglib2.0-data libgssapi-krb5-2 libgudev-1.0-0 libgusb2 libibverbs1 121s libjcat1 libjson-glib-1.0-0 libjson-glib-1.0-common libk5crypto3 libkmod2 121s libkrb5-3 libkrb5support0 libldap-common libldap2 liblocale-gettext-perl 121s liblzma5 libmagic-mgc libmbim-glib4 libmbim-proxy libmm-glib0 libmount1 121s libnghttp2-14 libnsl2 libnss-systemd libpam-modules libpam-modules-bin 121s libpam-runtime libpam-systemd libpam0g libplymouth5 libpolkit-agent-1-0 121s libpolkit-gobject-1-0 libproc2-0 libprotobuf-c1 libpython3-stdlib 121s libpython3.11-minimal libpython3.11-stdlib libpython3.12-minimal 121s libpython3.12-stdlib libqmi-glib5 libqmi-proxy libqrtr-glib0 librtmp1 121s libsasl2-2 libsasl2-modules libsasl2-modules-db libselinux1 121s libsemanage-common libsemanage2 libslang2 libsmartcols1 libsqlite3-0 libss2 121s libssh-4 libsystemd-shared libsystemd0 libtext-charwidth-perl 121s libtext-iconv-perl libtirpc-common libudev1 libudisks2-0 libuuid1 121s libvolume-key1 libxml2 libxmlb2 libxmuu1 linux-generic linux-headers-generic 121s linux-headers-virtual linux-image-generic linux-image-virtual linux-virtual 121s logsave lshw lsof man-db motd-news-config mount mtr-tiny multipath-tools 121s netplan-generator netplan.io openssh-client openssh-server 121s openssh-sftp-server openssl parted perl perl-base perl-modules-5.38 121s pinentry-curses plymouth plymouth-theme-ubuntu-text procps python-apt-common 121s python3 python3-apt python3-cryptography python3-dbus python3-distutils 121s python3-gdbm python3-gi python3-lib2to3 python3-minimal python3-netplan 121s python3-pkg-resources python3-pyrsistent python3-setuptools 121s python3-typing-extensions python3-yaml python3.11 python3.11-minimal 121s python3.12 python3.12-minimal readline-common rsync rsyslog s390-tools-data 121s shared-mime-info sudo systemd systemd-dev systemd-resolved systemd-sysv 121s systemd-timesyncd tcpdump telnet tnftp ubuntu-pro-client 121s ubuntu-pro-client-l10n udev udisks2 usb.ids util-linux uuid-runtime 121s vim-common vim-tiny wget xxd xz-utils zlib1g 121s 221 upgraded, 73 newly installed, 28 to remove and 1 not upgraded. 121s Need to get 223 MB of archives. 121s After this operation, 524 MB of additional disk space will be used. 121s Get:1 http://ftpmaster.internal/ubuntu noble-proposed/main s390x motd-news-config all 13ubuntu8 [5098 B] 121s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main s390x base-files s390x 13ubuntu8 [74.2 kB] 121s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bash s390x 5.2.21-2ubuntu3 [845 kB] 121s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bsdutils s390x 1:2.39.3-9ubuntu2 [96.1 kB] 121s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libbrotli1 s390x 1.1.0-2build1 [375 kB] 121s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgssapi-krb5-2 s390x 1.20.1-6ubuntu1 [149 kB] 122s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libkrb5-3 s390x 1.20.1-6ubuntu1 [360 kB] 122s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libkrb5support0 s390x 1.20.1-6ubuntu1 [34.6 kB] 122s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libk5crypto3 s390x 1.20.1-6ubuntu1 [90.3 kB] 122s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcom-err2 s390x 1.47.0-2.4~exp1ubuntu2 [22.9 kB] 122s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/main s390x zlib1g s390x 1:1.3.dfsg-3.1ubuntu1 [75.7 kB] 122s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/main s390x librtmp1 s390x 2.4+20151223.gitfa8646d.1-2build6 [58.4 kB] 122s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main s390x udisks2 s390x 2.10.1-6 [298 kB] 122s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libudisks2-0 s390x 2.10.1-6 [179 kB] 122s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblkid1 s390x 2.39.3-9ubuntu2 [128 kB] 122s Get:16 http://ftpmaster.internal/ubuntu noble-proposed/main s390x liblzma5 s390x 5.6.0-0.2 [137 kB] 122s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main s390x kmod s390x 31+20240202-2ubuntu4 [107 kB] 122s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libkmod2 s390x 31+20240202-2ubuntu4 [56.3 kB] 122s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-dev all 255.4-1ubuntu5 [103 kB] 122s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-timesyncd s390x 255.4-1ubuntu5 [35.3 kB] 122s Get:21 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-session-bus-common all 1.14.10-4ubuntu2 [80.3 kB] 122s Get:22 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libaudit-common all 1:3.1.2-2.1 [5674 B] 122s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcap-ng0 s390x 0.8.4-2build1 [15.7 kB] 122s Get:24 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libaudit1 s390x 1:3.1.2-2.1 [48.9 kB] 122s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam0g s390x 1.5.3-5ubuntu3 [69.8 kB] 122s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libselinux1 s390x 3.5-2ubuntu1 [84.7 kB] 122s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcurl4t64 s390x 8.5.0-2ubuntu8 [363 kB] 122s Get:28 http://ftpmaster.internal/ubuntu noble-proposed/main s390x curl s390x 8.5.0-2ubuntu8 [227 kB] 122s Get:29 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpsl5t64 s390x 0.21.2-1.1 [57.6 kB] 122s Get:30 http://ftpmaster.internal/ubuntu noble-proposed/main s390x wget s390x 1.21.4-1ubuntu2 [351 kB] 122s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main s390x tnftp s390x 20230507-2build1 [107 kB] 122s Get:32 http://ftpmaster.internal/ubuntu noble-proposed/main s390x tcpdump s390x 4.99.4-3ubuntu2 [490 kB] 122s Get:33 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsystemd-shared s390x 255.4-1ubuntu5 [2131 kB] 122s Get:34 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-resolved s390x 255.4-1ubuntu5 [304 kB] 122s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main s390x sudo s390x 1.9.15p5-3ubuntu3 [968 kB] 122s Get:36 http://ftpmaster.internal/ubuntu noble-proposed/main s390x rsync s390x 3.2.7-1build1 [446 kB] 122s Get:37 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-cryptography s390x 41.0.7-4build2 [918 kB] 122s Get:38 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssl s390x 3.0.13-0ubuntu2 [1010 kB] 123s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssh-sftp-server s390x 1:9.6p1-3ubuntu11 [39.0 kB] 123s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssh-client s390x 1:9.6p1-3ubuntu11 [935 kB] 123s Get:41 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssh-server s390x 1:9.6p1-3ubuntu11 [529 kB] 123s Get:42 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libssh-4 s390x 0.10.6-2build1 [189 kB] 123s Get:43 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsasl2-modules s390x 2.1.28+dfsg1-5ubuntu1 [76.6 kB] 123s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.12 s390x 3.12.2-4build3 [645 kB] 123s Get:45 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.12-minimal s390x 3.12.2-4build3 [2419 kB] 123s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.12-minimal s390x 3.12.2-4build3 [829 kB] 123s Get:47 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libparted2t64 s390x 3.6-3.1build2 [172 kB] 123s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main s390x parted s390x 3.6-3.1build2 [44.6 kB] 123s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.11 s390x 3.11.8-1build4 [589 kB] 123s Get:50 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.11-minimal s390x 3.11.8-1build4 [2280 kB] 123s Get:51 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.11-minimal s390x 3.11.8-1build4 [838 kB] 123s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.11-stdlib s390x 3.11.8-1build4 [1944 kB] 123s Get:53 http://ftpmaster.internal/ubuntu noble-proposed/main s390x shared-mime-info s390x 2.4-1build1 [474 kB] 123s Get:54 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gir1.2-girepository-2.0 s390x 1.79.1-1ubuntu6 [24.5 kB] 123s Get:55 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gir1.2-glib-2.0 s390x 2.79.3-3ubuntu5 [180 kB] 123s Get:56 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgirepository-1.0-1 s390x 1.79.1-1ubuntu6 [84.0 kB] 123s Get:57 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-gi s390x 3.47.0-3build1 [236 kB] 123s Get:58 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-dbus s390x 1.3.2-5build2 [100 kB] 123s Get:59 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnetplan1 s390x 1.0-1 [123 kB] 123s Get:60 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-netplan s390x 1.0-1 [23.0 kB] 123s Get:61 http://ftpmaster.internal/ubuntu noble-proposed/main s390x netplan-generator s390x 1.0-1 [59.1 kB] 125s Get:62 http://ftpmaster.internal/ubuntu noble-proposed/main s390x netplan.io s390x 1.0-1 [65.4 kB] 125s Get:63 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxmlb2 s390x 0.3.15-1build1 [70.6 kB] 125s Get:64 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgpgme11t64 s390x 1.18.0-4.1ubuntu3 [150 kB] 125s Get:65 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libvolume-key1 s390x 0.3.12-7build1 [40.8 kB] 125s Get:66 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libqrtr-glib0 s390x 1.2.2-1ubuntu3 [17.5 kB] 125s Get:67 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libqmi-glib5 s390x 1.35.2-0ubuntu1 [918 kB] 125s Get:68 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libqmi-proxy s390x 1.35.2-0ubuntu1 [6122 B] 125s Get:69 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpolkit-agent-1-0 s390x 124-1ubuntu1 [17.8 kB] 125s Get:70 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpolkit-gobject-1-0 s390x 124-1ubuntu1 [48.3 kB] 125s Get:71 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmm-glib0 s390x 1.23.4-0ubuntu1 [251 kB] 125s Get:72 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmbim-glib4 s390x 1.31.2-0ubuntu2 [238 kB] 125s Get:73 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmbim-proxy s390x 1.31.2-0ubuntu2 [6154 B] 125s Get:74 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libjson-glib-1.0-common all 1.8.0-2build1 [4210 B] 125s Get:75 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libjson-glib-1.0-0 s390x 1.8.0-2build1 [68.4 kB] 125s Get:76 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgusb2 s390x 0.4.8-1build1 [39.0 kB] 125s Get:77 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgudev-1.0-0 s390x 1:238-3ubuntu2 [15.7 kB] 125s Get:78 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libarchive13t64 s390x 3.7.2-1.1ubuntu2 [419 kB] 125s Get:79 http://ftpmaster.internal/ubuntu noble-proposed/main s390x fwupd s390x 1.9.15-2 [4435 kB] 125s Get:80 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcurl3t64-gnutls s390x 8.5.0-2ubuntu8 [356 kB] 125s Get:81 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfwupd2 s390x 1.9.15-2 [136 kB] 125s Get:82 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev3 s390x 3.1.0-1build1 [52.3 kB] 125s Get:83 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-utils3 s390x 3.1.0-1build1 [19.2 kB] 125s Get:84 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-swap3 s390x 3.1.0-1build1 [7778 B] 125s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-part3 s390x 3.1.0-1build1 [15.4 kB] 125s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnvme1t64 s390x 1.8-3 [78.7 kB] 125s Get:87 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-nvme3 s390x 3.1.0-1build1 [18.3 kB] 125s Get:88 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-mdraid3 s390x 3.1.0-1build1 [13.2 kB] 125s Get:89 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-loop3 s390x 3.1.0-1build1 [7138 B] 125s Get:90 http://ftpmaster.internal/ubuntu noble-proposed/main s390x logsave s390x 1.47.0-2.4~exp1ubuntu2 [22.5 kB] 125s Get:91 http://ftpmaster.internal/ubuntu noble-proposed/main s390x e2fsprogs-l10n all 1.47.0-2.4~exp1ubuntu2 [5996 B] 125s Get:92 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libext2fs2t64 s390x 1.47.0-2.4~exp1ubuntu2 [235 kB] 125s Get:93 http://ftpmaster.internal/ubuntu noble-proposed/main s390x e2fsprogs s390x 1.47.0-2.4~exp1ubuntu2 [615 kB] 125s Get:94 http://ftpmaster.internal/ubuntu noble/main s390x libreiserfscore0t64 s390x 1:3.6.27-7.1 [85.5 kB] 125s Get:95 http://ftpmaster.internal/ubuntu noble-proposed/main s390x btrfs-progs s390x 6.6.3-1.1build1 [959 kB] 125s Get:96 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-fs3 s390x 3.1.0-1build1 [36.5 kB] 125s Get:97 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-crypto3 s390x 3.1.0-1build1 [21.6 kB] 125s Get:98 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bolt s390x 0.9.6-2build1 [142 kB] 125s Get:99 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libglib2.0-0t64 s390x 2.79.3-3ubuntu5 [1566 kB] 125s Get:100 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libjcat1 s390x 0.2.0-2build2 [34.4 kB] 125s Get:101 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libldap2 s390x 2.6.7+dfsg-1~exp1ubuntu6 [202 kB] 125s Get:102 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ubuntu-pro-client-l10n s390x 31.2.2 [19.4 kB] 125s Get:103 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ubuntu-pro-client s390x 31.2.2 [214 kB] 125s Get:104 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gnupg-utils s390x 2.4.4-2ubuntu15 [116 kB] 125s Get:105 http://ftpmaster.internal/ubuntu noble-proposed/main s390x keyboxd s390x 2.4.4-2ubuntu15 [83.1 kB] 125s Get:106 http://ftpmaster.internal/ubuntu noble/main s390x libnpth0t64 s390x 1.6-3.1 [8148 B] 125s Get:107 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpgv s390x 2.4.4-2ubuntu15 [165 kB] 125s Get:108 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpg-wks-client s390x 2.4.4-2ubuntu15 [76.8 kB] 125s Get:109 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpg-agent s390x 2.4.4-2ubuntu15 [240 kB] 126s Get:110 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpg s390x 2.4.4-2ubuntu15 [589 kB] 126s Get:111 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dirmngr s390x 2.4.4-2ubuntu15 [340 kB] 127s Get:112 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gnupg all 2.4.4-2ubuntu15 [359 kB] 127s Get:113 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-apt s390x 2.7.7 [171 kB] 127s Get:114 http://ftpmaster.internal/ubuntu noble-proposed/main s390x apt-utils s390x 2.7.14 [214 kB] 127s Get:115 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libapt-pkg6.0t64 s390x 2.7.14 [1014 kB] 128s Get:116 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnettle8t64 s390x 3.9.1-2.2 [210 kB] 128s Get:117 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libhogweed6t64 s390x 3.9.1-2.2 [204 kB] 129s Get:118 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgnutls30t64 s390x 3.8.3-1.1ubuntu2 [1044 kB] 129s Get:119 http://ftpmaster.internal/ubuntu noble-proposed/main s390x apt s390x 2.7.14 [1390 kB] 131s Get:120 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpgconf s390x 2.4.4-2ubuntu15 [111 kB] 131s Get:121 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpgsm s390x 2.4.4-2ubuntu15 [244 kB] 132s Get:122 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libreadline8t64 s390x 8.2-4 [170 kB] 132s Get:123 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gawk s390x 1:5.2.1-2build2 [496 kB] 132s Get:124 http://ftpmaster.internal/ubuntu noble-proposed/main s390x fdisk s390x 2.39.3-9ubuntu2 [124 kB] 132s Get:125 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.12-stdlib s390x 3.12.2-4build3 [2046 kB] 135s Get:126 http://ftpmaster.internal/ubuntu noble-proposed/main s390x perl-base s390x 5.38.2-3.2 [1961 kB] 136s Get:127 http://ftpmaster.internal/ubuntu noble-proposed/main s390x perl-modules-5.38 all 5.38.2-3.2 [3110 kB] 139s Get:128 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-gdbm s390x 3.12.2-3ubuntu1.1 [19.0 kB] 139s Get:129 http://ftpmaster.internal/ubuntu noble-proposed/main s390x man-db s390x 2.12.0-3build4 [1246 kB] 140s Get:130 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgdbm6t64 s390x 1.23-5.1 [36.4 kB] 140s Get:131 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgdbm-compat4t64 s390x 1.23-5.1 [6880 B] 140s Get:132 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libperl5.38t64 s390x 5.38.2-3.2 [5007 kB] 145s Get:133 http://ftpmaster.internal/ubuntu noble-proposed/main s390x perl s390x 5.38.2-3.2 [231 kB] 145s Get:134 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdb5.3t64 s390x 5.3.28+dfsg2-6 [763 kB] 146s Get:135 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsasl2-modules-db s390x 2.1.28+dfsg1-5ubuntu1 [21.1 kB] 146s Get:136 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsasl2-2 s390x 2.1.28+dfsg1-5ubuntu1 [57.8 kB] 146s Get:137 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfido2-1 s390x 1.14.0-1build1 [81.0 kB] 146s Get:138 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcryptsetup12 s390x 2:2.7.0-1ubuntu2 [264 kB] 146s Get:139 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dhcpcd-base s390x 1:10.0.6-1ubuntu2 [217 kB] 147s Get:140 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libuv1t64 s390x 1.48.0-1.1 [101 kB] 147s Get:141 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bind9-host s390x 1:9.18.24-0ubuntu3 [50.5 kB] 147s Get:142 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bind9-dnsutils s390x 1:9.18.24-0ubuntu3 [162 kB] 147s Get:143 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bind9-libs s390x 1:9.18.24-0ubuntu3 [1243 kB] 148s Get:144 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libssl3t64 s390x 3.0.13-0ubuntu2 [1675 kB] 149s Get:145 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnss-systemd s390x 255.4-1ubuntu5 [166 kB] 149s Get:146 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libudev1 s390x 255.4-1ubuntu5 [178 kB] 150s Get:147 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd s390x 255.4-1ubuntu5 [3533 kB] 152s Get:148 http://ftpmaster.internal/ubuntu noble-proposed/main s390x udev s390x 255.4-1ubuntu5 [1887 kB] 153s Get:149 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-sysv s390x 255.4-1ubuntu5 [11.9 kB] 153s Get:150 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-systemd s390x 255.4-1ubuntu5 [242 kB] 153s Get:151 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsystemd0 s390x 255.4-1ubuntu5 [443 kB] 153s Get:152 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-modules-bin s390x 1.5.3-5ubuntu3 [57.4 kB] 153s Get:153 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-modules s390x 1.5.3-5ubuntu3 [289 kB] 154s Get:154 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-runtime all 1.5.3-5ubuntu3 [40.8 kB] 154s Get:155 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-user-session s390x 1.14.10-4ubuntu2 [9960 B] 154s Get:156 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libapparmor1 s390x 4.0.0-beta3-0ubuntu2 [50.8 kB] 154s Get:157 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-system-bus-common all 1.14.10-4ubuntu2 [81.5 kB] 154s Get:158 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-bin s390x 1.14.10-4ubuntu2 [41.4 kB] 154s Get:159 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus s390x 1.14.10-4ubuntu2 [24.3 kB] 154s Get:160 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-daemon s390x 1.14.10-4ubuntu2 [118 kB] 154s Get:161 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdbus-1-3 s390x 1.14.10-4ubuntu2 [213 kB] 154s Get:162 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmount1 s390x 2.39.3-9ubuntu2 [138 kB] 154s Get:163 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libuuid1 s390x 2.39.3-9ubuntu2 [35.6 kB] 154s Get:164 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfdisk1 s390x 2.39.3-9ubuntu2 [151 kB] 154s Get:165 http://ftpmaster.internal/ubuntu noble-proposed/main s390x mount s390x 2.39.3-9ubuntu2 [119 kB] 154s Get:166 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsqlite3-0 s390x 3.45.1-1ubuntu1 [747 kB] 155s Get:167 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dpkg s390x 1.22.6ubuntu5 [1278 kB] 157s Get:168 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-minimal s390x 3.12.2-0ubuntu1 [27.1 kB] 157s Get:169 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3 s390x 3.12.2-0ubuntu1 [24.1 kB] 157s Get:170 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3-stdlib s390x 3.12.2-0ubuntu1 [9804 B] 157s Get:171 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsmartcols1 s390x 2.39.3-9ubuntu2 [67.9 kB] 157s Get:172 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bsdextrautils s390x 2.39.3-9ubuntu2 [76.3 kB] 157s Get:173 http://ftpmaster.internal/ubuntu noble-proposed/main s390x groff-base s390x 1.23.0-3build1 [1049 kB] 157s Get:174 http://ftpmaster.internal/ubuntu noble-proposed/main s390x pinentry-curses s390x 1.2.1-3ubuntu4 [37.6 kB] 157s Get:175 http://ftpmaster.internal/ubuntu noble-proposed/main s390x readline-common all 8.2-4 [56.4 kB] 157s Get:176 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxml2 s390x 2.9.14+dfsg-1.3ubuntu2 [818 kB] 157s Get:177 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libbpf1 s390x 1:1.3.0-2build1 [176 kB] 157s Get:178 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libelf1t64 s390x 0.190-1.1build2 [69.7 kB] 157s Get:179 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtirpc-common all 1.3.4+ds-1.1 [8018 B] 157s Get:180 http://ftpmaster.internal/ubuntu noble-proposed/main s390x lsof s390x 4.95.0-1build2 [248 kB] 157s Get:181 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnsl2 s390x 1.3.0-3build2 [44.1 kB] 157s Get:182 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtirpc3t64 s390x 1.3.4+ds-1.1 [85.8 kB] 157s Get:183 http://ftpmaster.internal/ubuntu noble-proposed/main s390x iproute2 s390x 6.1.0-1ubuntu5 [1156 kB] 158s Get:184 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-yaml s390x 6.0.1-2build1 [121 kB] 158s Get:185 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libprotobuf-c1 s390x 1.4.1-1ubuntu3 [23.4 kB] 158s Get:186 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnghttp2-14 s390x 1.59.0-1build1 [77.8 kB] 158s Get:187 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libproc2-0 s390x 2:4.0.4-4ubuntu2 [60.1 kB] 158s Get:188 http://ftpmaster.internal/ubuntu noble-proposed/main s390x procps s390x 2:4.0.4-4ubuntu2 [724 kB] 158s Get:189 http://ftpmaster.internal/ubuntu noble-proposed/main s390x coreutils s390x 9.4-3ubuntu3 [1482 kB] 159s Get:190 http://ftpmaster.internal/ubuntu noble-proposed/main s390x util-linux s390x 2.39.3-9ubuntu2 [1143 kB] 159s Get:191 http://ftpmaster.internal/ubuntu noble-proposed/main s390x file s390x 1:5.45-3 [22.2 kB] 159s Get:192 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmagic-mgc s390x 1:5.45-3 [305 kB] 159s Get:193 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmagic1t64 s390x 1:5.45-3 [93.1 kB] 160s Get:194 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libplymouth5 s390x 24.004.60-1ubuntu6 [151 kB] 160s Get:195 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpng16-16t64 s390x 1.6.43-3 [200 kB] 160s Get:196 http://ftpmaster.internal/ubuntu noble-proposed/main s390x multipath-tools s390x 0.9.4-5ubuntu6 [318 kB] 160s Get:197 http://ftpmaster.internal/ubuntu noble/main s390x liburcu8t64 s390x 0.14.0-3.1 [67.3 kB] 160s Get:198 http://ftpmaster.internal/ubuntu noble-proposed/main s390x liblocale-gettext-perl s390x 1.07-6ubuntu4 [15.8 kB] 160s Get:199 http://ftpmaster.internal/ubuntu noble-proposed/main s390x uuid-runtime s390x 2.39.3-9ubuntu2 [33.4 kB] 160s Get:200 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdebconfclient0 s390x 0.271ubuntu2 [11.4 kB] 160s Get:201 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsemanage-common all 3.5-1build4 [10.1 kB] 160s Get:202 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsemanage2 s390x 3.5-1build4 [96.7 kB] 160s Get:203 http://ftpmaster.internal/ubuntu noble-proposed/main s390x install-info s390x 7.1-3build1 [64.5 kB] 160s Get:204 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libss2 s390x 1.47.0-2.4~exp1ubuntu2 [17.2 kB] 160s Get:205 http://ftpmaster.internal/ubuntu noble-proposed/main s390x eject s390x 2.39.3-9ubuntu2 [26.2 kB] 160s Get:206 http://ftpmaster.internal/ubuntu noble-proposed/main s390x krb5-locales all 1.20.1-6ubuntu1 [13.8 kB] 160s Get:207 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libglib2.0-data all 2.79.3-3ubuntu5 [46.6 kB] 160s Get:208 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libslang2 s390x 2.3.3-3build1 [501 kB] 161s Get:209 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtext-charwidth-perl s390x 0.04-11build2 [9484 B] 161s Get:210 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtext-iconv-perl s390x 1.7-8build2 [13.8 kB] 161s Get:211 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python-apt-common all 2.7.7 [19.8 kB] 161s Get:212 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-setuptools all 68.1.2-2ubuntu1 [396 kB] 161s Get:213 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-pkg-resources all 68.1.2-2ubuntu1 [168 kB] 161s Get:214 http://ftpmaster.internal/ubuntu noble-proposed/main s390x rsyslog s390x 8.2312.0-3ubuntu7 [536 kB] 162s Get:215 http://ftpmaster.internal/ubuntu noble-proposed/main s390x vim-tiny s390x 2:9.1.0016-1ubuntu6 [879 kB] 162s Get:216 http://ftpmaster.internal/ubuntu noble-proposed/main s390x vim-common all 2:9.1.0016-1ubuntu6 [385 kB] 162s Get:217 http://ftpmaster.internal/ubuntu noble/main s390x xdg-user-dirs s390x 0.18-1 [18.5 kB] 162s Get:218 http://ftpmaster.internal/ubuntu noble-proposed/main s390x xxd s390x 2:9.1.0016-1ubuntu6 [63.5 kB] 162s Get:219 http://ftpmaster.internal/ubuntu noble-proposed/main s390x apparmor s390x 4.0.0-beta3-0ubuntu2 [710 kB] 162s Get:220 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ftp all 20230507-2build1 [4724 B] 162s Get:221 http://ftpmaster.internal/ubuntu noble-proposed/main s390x inetutils-telnet s390x 2:2.5-3ubuntu3 [105 kB] 163s Get:222 http://ftpmaster.internal/ubuntu noble-proposed/main s390x info s390x 7.1-3build1 [152 kB] 163s Get:223 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxmuu1 s390x 2:1.1.3-3build1 [8860 B] 163s Get:224 http://ftpmaster.internal/ubuntu noble-proposed/main s390x lshw s390x 02.19.git.2021.06.19.996aaad9c7-2build2 [346 kB] 163s Get:225 http://ftpmaster.internal/ubuntu noble/main s390x manpages all 6.05.01-1 [1340 kB] 163s Get:226 http://ftpmaster.internal/ubuntu noble-proposed/main s390x mtr-tiny s390x 0.95-1.1build1 [57.0 kB] 163s Get:227 http://ftpmaster.internal/ubuntu noble-proposed/main s390x plymouth-theme-ubuntu-text s390x 24.004.60-1ubuntu6 [10.2 kB] 163s Get:228 http://ftpmaster.internal/ubuntu noble-proposed/main s390x plymouth s390x 24.004.60-1ubuntu6 [147 kB] 163s Get:229 http://ftpmaster.internal/ubuntu noble-proposed/main s390x telnet all 0.17+2.5-3ubuntu3 [3682 B] 163s Get:230 http://ftpmaster.internal/ubuntu noble-proposed/main s390x usb.ids all 2024.03.18-1 [223 kB] 164s Get:231 http://ftpmaster.internal/ubuntu noble-proposed/main s390x xz-utils s390x 5.6.0-0.2 [274 kB] 164s Get:232 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libllvm18 s390x 1:18.1.2-1ubuntu2 [33.4 MB] 179s Get:233 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libclang-cpp18 s390x 1:18.1.2-1ubuntu2 [16.1 MB] 184s Get:234 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x libbpfcc s390x 0.29.1+ds-1ubuntu4 [697 kB] 185s Get:235 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x python3-bpfcc all 0.29.1+ds-1ubuntu4 [40.2 kB] 185s Get:236 http://ftpmaster.internal/ubuntu noble/main s390x ieee-data all 20220827.1 [2113 kB] 185s Get:237 http://ftpmaster.internal/ubuntu noble/main s390x python3-netaddr all 0.8.0-2ubuntu1 [319 kB] 185s Get:238 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x bpfcc-tools all 0.29.1+ds-1ubuntu4 [687 kB] 186s Get:239 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libclang1-18 s390x 1:18.1.2-1ubuntu2 [9349 kB] 188s Get:240 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdw1t64 s390x 0.190-1.1build2 [286 kB] 188s Get:241 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x bpftrace s390x 0.20.2-1ubuntu1 [1139 kB] 189s Get:242 http://ftpmaster.internal/ubuntu noble-proposed/main s390x cryptsetup-bin s390x 2:2.7.0-1ubuntu2 [211 kB] 189s Get:243 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dpkg-dev all 1.22.6ubuntu5 [1074 kB] 189s Get:244 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdpkg-perl all 1.22.6ubuntu5 [269 kB] 189s Get:245 http://ftpmaster.internal/ubuntu noble/main s390x fonts-dejavu-mono all 2.37-8 [502 kB] 189s Get:246 http://ftpmaster.internal/ubuntu noble/main s390x fonts-dejavu-core all 2.37-8 [835 kB] 190s Get:247 http://ftpmaster.internal/ubuntu noble/main s390x fontconfig-config s390x 2.15.0-1.1ubuntu1 [37.4 kB] 190s Get:248 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gnupg-l10n all 2.4.4-2ubuntu15 [65.8 kB] 190s Get:249 http://ftpmaster.internal/ubuntu noble/main s390x hwdata all 0.379-1 [29.1 kB] 190s Get:250 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libibverbs1 s390x 50.0-2build1 [70.0 kB] 190s Get:251 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ibverbs-providers s390x 50.0-2build1 [408 kB] 190s Get:252 http://ftpmaster.internal/ubuntu noble/main s390x libaio1t64 s390x 0.3.113-6 [7290 B] 190s Get:253 http://ftpmaster.internal/ubuntu noble/main s390x libatm1t64 s390x 1:2.5.1-5.1 [24.5 kB] 190s Get:254 http://ftpmaster.internal/ubuntu noble/main s390x libc-dev-bin s390x 2.39-0ubuntu6 [20.2 kB] 190s Get:255 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfreetype6 s390x 2.13.2+dfsg-1build2 [437 kB] 190s Get:256 http://ftpmaster.internal/ubuntu noble/main s390x libfontconfig1 s390x 2.15.0-1.1ubuntu1 [150 kB] 190s Get:257 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg-turbo8 s390x 2.1.5-2ubuntu1 [128 kB] 190s Get:258 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg8 s390x 8c-2ubuntu11 [2146 B] 190s Get:259 http://ftpmaster.internal/ubuntu noble/main s390x libdeflate0 s390x 1.19-1 [46.0 kB] 190s Get:260 http://ftpmaster.internal/ubuntu noble/main s390x libjbig0 s390x 2.1-6.1ubuntu1 [29.8 kB] 190s Get:261 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsharpyuv0 s390x 1.3.2-0.4build2 [14.9 kB] 190s Get:262 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libwebp7 s390x 1.3.2-0.4build2 [207 kB] 190s Get:263 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtiff6 s390x 4.5.1+git230720-4ubuntu1 [218 kB] 190s Get:264 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxpm4 s390x 1:3.5.17-1build1 [41.4 kB] 190s Get:265 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgd3 s390x 2.3.3-9ubuntu3 [141 kB] 190s Get:266 http://ftpmaster.internal/ubuntu noble/main s390x libc-devtools s390x 2.39-0ubuntu6 [30.6 kB] 190s Get:267 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-libc-dev s390x 6.8.0-20.20 [1592 kB] 191s Get:268 http://ftpmaster.internal/ubuntu noble/main s390x libcrypt-dev s390x 1:4.4.36-4 [135 kB] 191s Get:269 http://ftpmaster.internal/ubuntu noble/main s390x rpcsvc-proto s390x 1.4.2-0ubuntu6 [64.7 kB] 191s Get:270 http://ftpmaster.internal/ubuntu noble/main s390x libc6-dev s390x 2.39-0ubuntu6 [1629 kB] 191s Get:271 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libevent-core-2.1-7 s390x 2.1.12-stable-9build1 [94.3 kB] 191s Get:272 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libldap-common all 2.6.7+dfsg-1~exp1ubuntu6 [31.3 kB] 191s Get:273 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-modules-6.8.0-20-generic s390x 6.8.0-20.20 [21.0 MB] 200s Get:274 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-image-6.8.0-20-generic s390x 6.8.0-20.20 [9872 kB] 205s Get:275 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-modules-extra-6.8.0-20-generic s390x 6.8.0-20.20 [11.7 MB] 210s Get:276 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-generic s390x 6.8.0-20.20+1 [1734 B] 210s Get:277 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-image-generic s390x 6.8.0-20.20+1 [9688 B] 210s Get:278 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-virtual s390x 6.8.0-20.20+1 [1682 B] 210s Get:279 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-image-virtual s390x 6.8.0-20.20+1 [9700 B] 210s Get:280 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-virtual s390x 6.8.0-20.20+1 [1642 B] 210s Get:281 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-6.8.0-20 all 6.8.0-20.20 [13.6 MB] 217s Get:282 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-6.8.0-20-generic s390x 6.8.0-20.20 [2579 kB] 218s Get:283 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-generic s390x 6.8.0-20.20+1 [9608 B] 218s Get:284 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-tools-common all 6.8.0-20.20 [437 kB] 219s Get:285 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-tools-6.8.0-20 s390x 6.8.0-20.20 [2674 kB] 220s Get:286 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-tools-6.8.0-20-generic s390x 6.8.0-20.20 [1724 B] 220s Get:287 http://ftpmaster.internal/ubuntu noble/main s390x manpages-dev all 6.05.01-1 [2018 kB] 221s Get:288 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-distutils all 3.12.2-3ubuntu1.1 [133 kB] 221s Get:289 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-lib2to3 all 3.12.2-3ubuntu1.1 [79.1 kB] 221s Get:290 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-pyrsistent s390x 0.20.0-1build1 [55.8 kB] 221s Get:291 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-typing-extensions all 4.10.0-1 [60.7 kB] 221s Get:292 http://ftpmaster.internal/ubuntu noble-proposed/main s390x s390-tools-data all 2.31.0-0ubuntu3 [17.8 kB] 221s Get:293 http://ftpmaster.internal/ubuntu noble/main s390x ubuntu-kernel-accessories s390x 1.536build1 [10.5 kB] 221s Get:294 http://ftpmaster.internal/ubuntu noble-proposed/main s390x kpartx s390x 0.9.4-5ubuntu6 [32.8 kB] 222s Preconfiguring packages ... 222s Fetched 223 MB in 1min 40s (2231 kB/s) 222s (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 ... 52168 files and directories currently installed.) 222s Preparing to unpack .../motd-news-config_13ubuntu8_all.deb ... 222s Unpacking motd-news-config (13ubuntu8) over (13ubuntu7) ... 222s Preparing to unpack .../base-files_13ubuntu8_s390x.deb ... 222s Unpacking base-files (13ubuntu8) over (13ubuntu7) ... 222s Setting up base-files (13ubuntu8) ... 223s motd-news.service is a disabled or a static unit not running, not starting it. 223s (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 ... 52168 files and directories currently installed.) 223s Preparing to unpack .../bash_5.2.21-2ubuntu3_s390x.deb ... 223s Unpacking bash (5.2.21-2ubuntu3) over (5.2.21-2ubuntu2) ... 223s Setting up bash (5.2.21-2ubuntu3) ... 223s update-alternatives: using /usr/share/man/man7/bash-builtins.7.gz to provide /usr/share/man/man7/builtins.7.gz (builtins.7.gz) in auto mode 223s (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 ... 52168 files and directories currently installed.) 223s Preparing to unpack .../bsdutils_1%3a2.39.3-9ubuntu2_s390x.deb ... 223s Unpacking bsdutils (1:2.39.3-9ubuntu2) over (1:2.39.3-6ubuntu2) ... 223s Setting up bsdutils (1:2.39.3-9ubuntu2) ... 223s (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 ... 52168 files and directories currently installed.) 223s Preparing to unpack .../0-libbrotli1_1.1.0-2build1_s390x.deb ... 223s Unpacking libbrotli1:s390x (1.1.0-2build1) over (1.1.0-2) ... 223s Preparing to unpack .../1-libgssapi-krb5-2_1.20.1-6ubuntu1_s390x.deb ... 223s Unpacking libgssapi-krb5-2:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 223s Preparing to unpack .../2-libkrb5-3_1.20.1-6ubuntu1_s390x.deb ... 223s Unpacking libkrb5-3:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 223s Preparing to unpack .../3-libkrb5support0_1.20.1-6ubuntu1_s390x.deb ... 223s Unpacking libkrb5support0:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 223s Preparing to unpack .../4-libk5crypto3_1.20.1-6ubuntu1_s390x.deb ... 223s Unpacking libk5crypto3:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 223s Preparing to unpack .../5-libcom-err2_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 223s Unpacking libcom-err2:s390x (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 223s Preparing to unpack .../6-zlib1g_1%3a1.3.dfsg-3.1ubuntu1_s390x.deb ... 223s Unpacking zlib1g:s390x (1:1.3.dfsg-3.1ubuntu1) over (1:1.3.dfsg-3ubuntu1) ... 223s Setting up zlib1g:s390x (1:1.3.dfsg-3.1ubuntu1) ... 223s (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 ... 52168 files and directories currently installed.) 223s Preparing to unpack .../librtmp1_2.4+20151223.gitfa8646d.1-2build6_s390x.deb ... 223s Unpacking librtmp1:s390x (2.4+20151223.gitfa8646d.1-2build6) over (2.4+20151223.gitfa8646d.1-2build4) ... 223s Preparing to unpack .../udisks2_2.10.1-6_s390x.deb ... 223s Unpacking udisks2 (2.10.1-6) over (2.10.1-1ubuntu2) ... 223s Preparing to unpack .../libudisks2-0_2.10.1-6_s390x.deb ... 223s Unpacking libudisks2-0:s390x (2.10.1-6) over (2.10.1-1ubuntu2) ... 223s Preparing to unpack .../libblkid1_2.39.3-9ubuntu2_s390x.deb ... 223s Unpacking libblkid1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 223s Setting up libblkid1:s390x (2.39.3-9ubuntu2) ... 223s (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 ... 52168 files and directories currently installed.) 223s Preparing to unpack .../liblzma5_5.6.0-0.2_s390x.deb ... 223s Unpacking liblzma5:s390x (5.6.0-0.2) over (5.4.5-0.3) ... 223s Setting up liblzma5:s390x (5.6.0-0.2) ... 223s (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 ... 52168 files and directories currently installed.) 223s Preparing to unpack .../0-kmod_31+20240202-2ubuntu4_s390x.deb ... 223s Unpacking kmod (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 223s Preparing to unpack .../1-libkmod2_31+20240202-2ubuntu4_s390x.deb ... 223s Unpacking libkmod2:s390x (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 223s Preparing to unpack .../2-systemd-dev_255.4-1ubuntu5_all.deb ... 223s Unpacking systemd-dev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 223s Preparing to unpack .../3-systemd-timesyncd_255.4-1ubuntu5_s390x.deb ... 223s Unpacking systemd-timesyncd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 223s Preparing to unpack .../4-dbus-session-bus-common_1.14.10-4ubuntu2_all.deb ... 223s Unpacking dbus-session-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 223s Preparing to unpack .../5-libaudit-common_1%3a3.1.2-2.1_all.deb ... 223s Unpacking libaudit-common (1:3.1.2-2.1) over (1:3.1.2-2) ... 223s Setting up libaudit-common (1:3.1.2-2.1) ... 223s (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 ... 52168 files and directories currently installed.) 223s Preparing to unpack .../libcap-ng0_0.8.4-2build1_s390x.deb ... 223s Unpacking libcap-ng0:s390x (0.8.4-2build1) over (0.8.4-2) ... 223s Setting up libcap-ng0:s390x (0.8.4-2build1) ... 223s (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 ... 52168 files and directories currently installed.) 223s Preparing to unpack .../libaudit1_1%3a3.1.2-2.1_s390x.deb ... 223s Unpacking libaudit1:s390x (1:3.1.2-2.1) over (1:3.1.2-2) ... 223s Setting up libaudit1:s390x (1:3.1.2-2.1) ... 223s (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 ... 52168 files and directories currently installed.) 223s Preparing to unpack .../libpam0g_1.5.3-5ubuntu3_s390x.deb ... 223s Unpacking libpam0g:s390x (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 223s Setting up libpam0g:s390x (1.5.3-5ubuntu3) ... 223s (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 ... 52168 files and directories currently installed.) 224s Preparing to unpack .../libselinux1_3.5-2ubuntu1_s390x.deb ... 224s Unpacking libselinux1:s390x (3.5-2ubuntu1) over (3.5-2build1) ... 224s Setting up libselinux1:s390x (3.5-2ubuntu1) ... 224s dpkg: libcurl4:s390x: dependency problems, but removing anyway as you requested: 224s s390-tools depends on libcurl4 (>= 7.16.2). 224s curl depends on libcurl4 (= 8.5.0-2ubuntu2). 224s 224s (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 ... 52168 files and directories currently installed.) 224s Removing libcurl4:s390x (8.5.0-2ubuntu2) ... 224s Selecting previously unselected package libcurl4t64:s390x. 224s (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 ... 52163 files and directories currently installed.) 224s Preparing to unpack .../libcurl4t64_8.5.0-2ubuntu8_s390x.deb ... 224s Unpacking libcurl4t64:s390x (8.5.0-2ubuntu8) ... 224s Preparing to unpack .../curl_8.5.0-2ubuntu8_s390x.deb ... 224s Unpacking curl (8.5.0-2ubuntu8) over (8.5.0-2ubuntu2) ... 224s dpkg: libpsl5:s390x: dependency problems, but removing anyway as you requested: 224s wget depends on libpsl5 (>= 0.16.0). 224s libcurl3-gnutls:s390x depends on libpsl5 (>= 0.16.0). 224s 224s (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 ... 52169 files and directories currently installed.) 224s Removing libpsl5:s390x (0.21.2-1build1) ... 224s Selecting previously unselected package libpsl5t64:s390x. 224s (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 ... 52164 files and directories currently installed.) 224s Preparing to unpack .../00-libpsl5t64_0.21.2-1.1_s390x.deb ... 224s Unpacking libpsl5t64:s390x (0.21.2-1.1) ... 224s Preparing to unpack .../01-wget_1.21.4-1ubuntu2_s390x.deb ... 224s Unpacking wget (1.21.4-1ubuntu2) over (1.21.4-1ubuntu1) ... 224s Preparing to unpack .../02-tnftp_20230507-2build1_s390x.deb ... 224s Unpacking tnftp (20230507-2build1) over (20230507-2) ... 224s Preparing to unpack .../03-tcpdump_4.99.4-3ubuntu2_s390x.deb ... 224s Unpacking tcpdump (4.99.4-3ubuntu2) over (4.99.4-3ubuntu1) ... 224s Preparing to unpack .../04-libsystemd-shared_255.4-1ubuntu5_s390x.deb ... 224s Unpacking libsystemd-shared:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 224s Preparing to unpack .../05-systemd-resolved_255.4-1ubuntu5_s390x.deb ... 224s Unpacking systemd-resolved (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 224s Preparing to unpack .../06-sudo_1.9.15p5-3ubuntu3_s390x.deb ... 224s Unpacking sudo (1.9.15p5-3ubuntu3) over (1.9.15p5-3ubuntu1) ... 224s Preparing to unpack .../07-rsync_3.2.7-1build1_s390x.deb ... 224s Unpacking rsync (3.2.7-1build1) over (3.2.7-1) ... 224s Preparing to unpack .../08-python3-cryptography_41.0.7-4build2_s390x.deb ... 224s Unpacking python3-cryptography (41.0.7-4build2) over (41.0.7-3) ... 224s Preparing to unpack .../09-openssl_3.0.13-0ubuntu2_s390x.deb ... 224s Unpacking openssl (3.0.13-0ubuntu2) over (3.0.10-1ubuntu4) ... 224s Preparing to unpack .../10-openssh-sftp-server_1%3a9.6p1-3ubuntu11_s390x.deb ... 224s Unpacking openssh-sftp-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 224s Preparing to unpack .../11-openssh-client_1%3a9.6p1-3ubuntu11_s390x.deb ... 224s Unpacking openssh-client (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 224s Preparing to unpack .../12-openssh-server_1%3a9.6p1-3ubuntu11_s390x.deb ... 224s Unpacking openssh-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 224s Preparing to unpack .../13-libssh-4_0.10.6-2build1_s390x.deb ... 224s Unpacking libssh-4:s390x (0.10.6-2build1) over (0.10.6-2) ... 224s Preparing to unpack .../14-libsasl2-modules_2.1.28+dfsg1-5ubuntu1_s390x.deb ... 224s Unpacking libsasl2-modules:s390x (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 224s Preparing to unpack .../15-python3.12_3.12.2-4build3_s390x.deb ... 224s Unpacking python3.12 (3.12.2-4build3) over (3.12.2-1) ... 224s Preparing to unpack .../16-python3.12-minimal_3.12.2-4build3_s390x.deb ... 224s Unpacking python3.12-minimal (3.12.2-4build3) over (3.12.2-1) ... 225s Preparing to unpack .../17-libpython3.12-minimal_3.12.2-4build3_s390x.deb ... 225s Unpacking libpython3.12-minimal:s390x (3.12.2-4build3) over (3.12.2-1) ... 225s dpkg: libparted2:s390x: dependency problems, but removing anyway as you requested: 225s parted depends on libparted2 (= 3.6-3). 225s 225s (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 ... 52170 files and directories currently installed.) 225s Removing libparted2:s390x (3.6-3) ... 225s Selecting previously unselected package libparted2t64:s390x. 225s (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 ... 52164 files and directories currently installed.) 225s Preparing to unpack .../00-libparted2t64_3.6-3.1build2_s390x.deb ... 225s Unpacking libparted2t64:s390x (3.6-3.1build2) ... 225s Preparing to unpack .../01-parted_3.6-3.1build2_s390x.deb ... 225s Unpacking parted (3.6-3.1build2) over (3.6-3) ... 225s Preparing to unpack .../02-python3.11_3.11.8-1build4_s390x.deb ... 225s Unpacking python3.11 (3.11.8-1build4) over (3.11.8-1) ... 225s Preparing to unpack .../03-python3.11-minimal_3.11.8-1build4_s390x.deb ... 225s Unpacking python3.11-minimal (3.11.8-1build4) over (3.11.8-1) ... 225s Preparing to unpack .../04-libpython3.11-minimal_3.11.8-1build4_s390x.deb ... 225s Unpacking libpython3.11-minimal:s390x (3.11.8-1build4) over (3.11.8-1) ... 225s Preparing to unpack .../05-libpython3.11-stdlib_3.11.8-1build4_s390x.deb ... 225s Unpacking libpython3.11-stdlib:s390x (3.11.8-1build4) over (3.11.8-1) ... 225s Preparing to unpack .../06-shared-mime-info_2.4-1build1_s390x.deb ... 225s Unpacking shared-mime-info (2.4-1build1) over (2.4-1) ... 225s Preparing to unpack .../07-gir1.2-girepository-2.0_1.79.1-1ubuntu6_s390x.deb ... 225s Unpacking gir1.2-girepository-2.0:s390x (1.79.1-1ubuntu6) over (1.79.1-1) ... 225s Preparing to unpack .../08-gir1.2-glib-2.0_2.79.3-3ubuntu5_s390x.deb ... 225s Unpacking gir1.2-glib-2.0:s390x (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 225s Preparing to unpack .../09-libgirepository-1.0-1_1.79.1-1ubuntu6_s390x.deb ... 225s Unpacking libgirepository-1.0-1:s390x (1.79.1-1ubuntu6) over (1.79.1-1) ... 225s Preparing to unpack .../10-python3-gi_3.47.0-3build1_s390x.deb ... 226s Unpacking python3-gi (3.47.0-3build1) over (3.47.0-3) ... 226s Preparing to unpack .../11-python3-dbus_1.3.2-5build2_s390x.deb ... 226s Unpacking python3-dbus (1.3.2-5build2) over (1.3.2-5build1) ... 226s Selecting previously unselected package libnetplan1:s390x. 226s Preparing to unpack .../12-libnetplan1_1.0-1_s390x.deb ... 226s Unpacking libnetplan1:s390x (1.0-1) ... 226s Preparing to unpack .../13-python3-netplan_1.0-1_s390x.deb ... 226s Unpacking python3-netplan (1.0-1) over (0.107.1-3) ... 226s Preparing to unpack .../14-netplan-generator_1.0-1_s390x.deb ... 226s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 226s Unpacking netplan-generator (1.0-1) over (0.107.1-3) ... 226s Preparing to unpack .../15-netplan.io_1.0-1_s390x.deb ... 226s Unpacking netplan.io (1.0-1) over (0.107.1-3) ... 226s Preparing to unpack .../16-libxmlb2_0.3.15-1build1_s390x.deb ... 226s Unpacking libxmlb2:s390x (0.3.15-1build1) over (0.3.15-1) ... 226s dpkg: libgpgme11:s390x: dependency problems, but removing anyway as you requested: 226s libvolume-key1:s390x depends on libgpgme11 (>= 1.4.1). 226s libjcat1:s390x depends on libgpgme11 (>= 1.2.0). 226s 226s (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 ... 52172 files and directories currently installed.) 226s Removing libgpgme11:s390x (1.18.0-4ubuntu1) ... 226s Selecting previously unselected package libgpgme11t64:s390x. 226s (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 ... 52166 files and directories currently installed.) 226s Preparing to unpack .../00-libgpgme11t64_1.18.0-4.1ubuntu3_s390x.deb ... 226s Unpacking libgpgme11t64:s390x (1.18.0-4.1ubuntu3) ... 226s Preparing to unpack .../01-libvolume-key1_0.3.12-7build1_s390x.deb ... 226s Unpacking libvolume-key1:s390x (0.3.12-7build1) over (0.3.12-5build2) ... 226s Preparing to unpack .../02-libqrtr-glib0_1.2.2-1ubuntu3_s390x.deb ... 226s Unpacking libqrtr-glib0:s390x (1.2.2-1ubuntu3) over (1.2.2-1ubuntu2) ... 226s Preparing to unpack .../03-libqmi-glib5_1.35.2-0ubuntu1_s390x.deb ... 226s Unpacking libqmi-glib5:s390x (1.35.2-0ubuntu1) over (1.34.0-2) ... 226s Preparing to unpack .../04-libqmi-proxy_1.35.2-0ubuntu1_s390x.deb ... 226s Unpacking libqmi-proxy (1.35.2-0ubuntu1) over (1.34.0-2) ... 226s Preparing to unpack .../05-libpolkit-agent-1-0_124-1ubuntu1_s390x.deb ... 226s Unpacking libpolkit-agent-1-0:s390x (124-1ubuntu1) over (124-1) ... 226s Preparing to unpack .../06-libpolkit-gobject-1-0_124-1ubuntu1_s390x.deb ... 226s Unpacking libpolkit-gobject-1-0:s390x (124-1ubuntu1) over (124-1) ... 226s Preparing to unpack .../07-libmm-glib0_1.23.4-0ubuntu1_s390x.deb ... 226s Unpacking libmm-glib0:s390x (1.23.4-0ubuntu1) over (1.22.0-3) ... 226s Preparing to unpack .../08-libmbim-glib4_1.31.2-0ubuntu2_s390x.deb ... 226s Unpacking libmbim-glib4:s390x (1.31.2-0ubuntu2) over (1.30.0-1) ... 226s Preparing to unpack .../09-libmbim-proxy_1.31.2-0ubuntu2_s390x.deb ... 226s Unpacking libmbim-proxy (1.31.2-0ubuntu2) over (1.30.0-1) ... 226s Preparing to unpack .../10-libjson-glib-1.0-common_1.8.0-2build1_all.deb ... 226s Unpacking libjson-glib-1.0-common (1.8.0-2build1) over (1.8.0-2) ... 226s Preparing to unpack .../11-libjson-glib-1.0-0_1.8.0-2build1_s390x.deb ... 226s Unpacking libjson-glib-1.0-0:s390x (1.8.0-2build1) over (1.8.0-2) ... 226s Preparing to unpack .../12-libgusb2_0.4.8-1build1_s390x.deb ... 226s Unpacking libgusb2:s390x (0.4.8-1build1) over (0.4.8-1) ... 226s Preparing to unpack .../13-libgudev-1.0-0_1%3a238-3ubuntu2_s390x.deb ... 226s Unpacking libgudev-1.0-0:s390x (1:238-3ubuntu2) over (1:238-3) ... 226s dpkg: libarchive13:s390x: dependency problems, but removing anyway as you requested: 226s fwupd depends on libarchive13 (>= 3.2.1). 226s 226s (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 ... 52173 files and directories currently installed.) 226s Removing libarchive13:s390x (3.7.2-1ubuntu2) ... 226s Selecting previously unselected package libarchive13t64:s390x. 226s (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 ... 52167 files and directories currently installed.) 226s Preparing to unpack .../libarchive13t64_3.7.2-1.1ubuntu2_s390x.deb ... 226s Unpacking libarchive13t64:s390x (3.7.2-1.1ubuntu2) ... 226s Preparing to unpack .../fwupd_1.9.15-2_s390x.deb ... 226s Unpacking fwupd (1.9.15-2) over (1.9.14-1) ... 226s dpkg: libcurl3-gnutls:s390x: dependency problems, but removing anyway as you requested: 226s libfwupd2:s390x depends on libcurl3-gnutls (>= 7.63.0). 226s 226s (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 ... 52174 files and directories currently installed.) 226s Removing libcurl3-gnutls:s390x (8.5.0-2ubuntu2) ... 226s Selecting previously unselected package libcurl3t64-gnutls:s390x. 226s (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 ... 52167 files and directories currently installed.) 226s Preparing to unpack .../0-libcurl3t64-gnutls_8.5.0-2ubuntu8_s390x.deb ... 226s Unpacking libcurl3t64-gnutls:s390x (8.5.0-2ubuntu8) ... 226s Preparing to unpack .../1-libfwupd2_1.9.15-2_s390x.deb ... 226s Unpacking libfwupd2:s390x (1.9.15-2) over (1.9.14-1) ... 227s Preparing to unpack .../2-libblockdev3_3.1.0-1build1_s390x.deb ... 227s Unpacking libblockdev3:s390x (3.1.0-1build1) over (3.1.0-1) ... 227s Preparing to unpack .../3-libblockdev-utils3_3.1.0-1build1_s390x.deb ... 227s Unpacking libblockdev-utils3:s390x (3.1.0-1build1) over (3.1.0-1) ... 227s Preparing to unpack .../4-libblockdev-swap3_3.1.0-1build1_s390x.deb ... 227s Unpacking libblockdev-swap3:s390x (3.1.0-1build1) over (3.1.0-1) ... 227s Preparing to unpack .../5-libblockdev-part3_3.1.0-1build1_s390x.deb ... 227s Unpacking libblockdev-part3:s390x (3.1.0-1build1) over (3.1.0-1) ... 227s dpkg: libnvme1: dependency problems, but removing anyway as you requested: 227s libblockdev-nvme3:s390x depends on libnvme1 (>= 1.7.1). 227s 227s (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 ... 52174 files and directories currently installed.) 227s Removing libnvme1 (1.8-2) ... 227s Selecting previously unselected package libnvme1t64. 227s (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 ... 52167 files and directories currently installed.) 227s Preparing to unpack .../0-libnvme1t64_1.8-3_s390x.deb ... 227s Unpacking libnvme1t64 (1.8-3) ... 227s Preparing to unpack .../1-libblockdev-nvme3_3.1.0-1build1_s390x.deb ... 227s Unpacking libblockdev-nvme3:s390x (3.1.0-1build1) over (3.1.0-1) ... 227s Preparing to unpack .../2-libblockdev-mdraid3_3.1.0-1build1_s390x.deb ... 227s Unpacking libblockdev-mdraid3:s390x (3.1.0-1build1) over (3.1.0-1) ... 227s Preparing to unpack .../3-libblockdev-loop3_3.1.0-1build1_s390x.deb ... 227s Unpacking libblockdev-loop3:s390x (3.1.0-1build1) over (3.1.0-1) ... 227s Preparing to unpack .../4-logsave_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 227s Unpacking logsave (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 227s Preparing to unpack .../5-e2fsprogs-l10n_1.47.0-2.4~exp1ubuntu2_all.deb ... 227s Unpacking e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 227s dpkg: libext2fs2:s390x: dependency problems, but removing anyway as you requested: 227s libblockdev-fs3:s390x depends on libext2fs2 (>= 1.42.11). 227s e2fsprogs depends on libext2fs2 (= 1.47.0-2ubuntu1). 227s btrfs-progs depends on libext2fs2 (>= 1.42). 227s 227s (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 ... 52175 files and directories currently installed.) 227s Removing libext2fs2:s390x (1.47.0-2ubuntu1) ... 227s Selecting previously unselected package libext2fs2t64:s390x. 227s (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 ... 52168 files and directories currently installed.) 227s Preparing to unpack .../libext2fs2t64_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 227s Adding 'diversion of /lib/s390x-linux-gnu/libe2p.so.2 to /lib/s390x-linux-gnu/libe2p.so.2.usr-is-merged by libext2fs2t64' 227s Adding 'diversion of /lib/s390x-linux-gnu/libe2p.so.2.3 to /lib/s390x-linux-gnu/libe2p.so.2.3.usr-is-merged by libext2fs2t64' 227s Adding 'diversion of /lib/s390x-linux-gnu/libext2fs.so.2 to /lib/s390x-linux-gnu/libext2fs.so.2.usr-is-merged by libext2fs2t64' 227s Adding 'diversion of /lib/s390x-linux-gnu/libext2fs.so.2.4 to /lib/s390x-linux-gnu/libext2fs.so.2.4.usr-is-merged by libext2fs2t64' 227s Unpacking libext2fs2t64:s390x (1.47.0-2.4~exp1ubuntu2) ... 227s Setting up libcom-err2:s390x (1.47.0-2.4~exp1ubuntu2) ... 227s Setting up libext2fs2t64:s390x (1.47.0-2.4~exp1ubuntu2) ... 227s (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 ... 52184 files and directories currently installed.) 227s Preparing to unpack .../e2fsprogs_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 227s Unpacking e2fsprogs (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 227s dpkg: libreiserfscore0: dependency problems, but removing anyway as you requested: 227s btrfs-progs depends on libreiserfscore0 (>= 1:3.6.27). 227s 227s (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 ... 52184 files and directories currently installed.) 227s Removing libreiserfscore0 (1:3.6.27-7) ... 227s Selecting previously unselected package libreiserfscore0t64. 227s (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 ... 52179 files and directories currently installed.) 227s Preparing to unpack .../libreiserfscore0t64_1%3a3.6.27-7.1_s390x.deb ... 227s Unpacking libreiserfscore0t64 (1:3.6.27-7.1) ... 227s Preparing to unpack .../btrfs-progs_6.6.3-1.1build1_s390x.deb ... 227s Unpacking btrfs-progs (6.6.3-1.1build1) over (6.6.3-1.1) ... 227s Preparing to unpack .../libblockdev-fs3_3.1.0-1build1_s390x.deb ... 227s Unpacking libblockdev-fs3:s390x (3.1.0-1build1) over (3.1.0-1) ... 227s Preparing to unpack .../libblockdev-crypto3_3.1.0-1build1_s390x.deb ... 227s Unpacking libblockdev-crypto3:s390x (3.1.0-1build1) over (3.1.0-1) ... 227s Preparing to unpack .../bolt_0.9.6-2build1_s390x.deb ... 227s Unpacking bolt (0.9.6-2build1) over (0.9.6-2) ... 227s dpkg: libglib2.0-0:s390x: dependency problems, but removing anyway as you requested: 227s s390-tools depends on libglib2.0-0 (>= 2.77.0). 227s libnetplan0:s390x depends on libglib2.0-0 (>= 2.75.3). 227s libjcat1:s390x depends on libglib2.0-0 (>= 2.75.3). 227s 227s (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 ... 52185 files and directories currently installed.) 227s Removing libglib2.0-0:s390x (2.79.2-1~ubuntu1) ... 227s Selecting previously unselected package libglib2.0-0t64:s390x. 227s (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 ... 52160 files and directories currently installed.) 227s Preparing to unpack .../0-libglib2.0-0t64_2.79.3-3ubuntu5_s390x.deb ... 227s libglib2.0-0t64.preinst: Removing /var/lib/dpkg/info/libglib2.0-0:s390x.postrm to avoid loss of /usr/share/glib-2.0/schemas/gschemas.compiled... 227s removed '/var/lib/dpkg/info/libglib2.0-0:s390x.postrm' 227s Unpacking libglib2.0-0t64:s390x (2.79.3-3ubuntu5) ... 227s Preparing to unpack .../1-libjcat1_0.2.0-2build2_s390x.deb ... 227s Unpacking libjcat1:s390x (0.2.0-2build2) over (0.2.0-2) ... 227s Preparing to unpack .../2-libldap2_2.6.7+dfsg-1~exp1ubuntu6_s390x.deb ... 227s Unpacking libldap2:s390x (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 227s Preparing to unpack .../3-ubuntu-pro-client-l10n_31.2.2_s390x.deb ... 227s Unpacking ubuntu-pro-client-l10n (31.2.2) over (31.1) ... 227s Preparing to unpack .../4-ubuntu-pro-client_31.2.2_s390x.deb ... 227s Unpacking ubuntu-pro-client (31.2.2) over (31.1) ... 227s Preparing to unpack .../5-gnupg-utils_2.4.4-2ubuntu15_s390x.deb ... 227s Unpacking gnupg-utils (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 227s Preparing to unpack .../6-keyboxd_2.4.4-2ubuntu15_s390x.deb ... 227s Unpacking keyboxd (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 228s dpkg: libnpth0:s390x: dependency problems, but removing anyway as you requested: 228s gpgv depends on libnpth0 (>= 0.90). 228s gpgsm depends on libnpth0 (>= 0.90). 228s gpg-agent depends on libnpth0 (>= 0.90). 228s gpg depends on libnpth0 (>= 0.90). 228s dirmngr depends on libnpth0 (>= 0.90). 228s 228s (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 ... 52185 files and directories currently installed.) 228s Removing libnpth0:s390x (1.6-3build2) ... 228s Selecting previously unselected package libnpth0t64:s390x. 228s (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 ... 52180 files and directories currently installed.) 228s Preparing to unpack .../libnpth0t64_1.6-3.1_s390x.deb ... 228s Unpacking libnpth0t64:s390x (1.6-3.1) ... 228s Setting up libnpth0t64:s390x (1.6-3.1) ... 228s (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 ... 52186 files and directories currently installed.) 228s Preparing to unpack .../gpgv_2.4.4-2ubuntu15_s390x.deb ... 228s Unpacking gpgv (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 228s Setting up gpgv (2.4.4-2ubuntu15) ... 228s (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 ... 52186 files and directories currently installed.) 228s Preparing to unpack .../0-gpg-wks-client_2.4.4-2ubuntu15_s390x.deb ... 228s Unpacking gpg-wks-client (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 228s Preparing to unpack .../1-gpg-agent_2.4.4-2ubuntu15_s390x.deb ... 228s Unpacking gpg-agent (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 228s Preparing to unpack .../2-gpg_2.4.4-2ubuntu15_s390x.deb ... 228s Unpacking gpg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 228s Preparing to unpack .../3-dirmngr_2.4.4-2ubuntu15_s390x.deb ... 228s Unpacking dirmngr (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 228s Preparing to unpack .../4-gnupg_2.4.4-2ubuntu15_all.deb ... 228s Unpacking gnupg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 228s Preparing to unpack .../5-python3-apt_2.7.7_s390x.deb ... 228s Unpacking python3-apt (2.7.7) over (2.7.6) ... 228s Preparing to unpack .../6-apt-utils_2.7.14_s390x.deb ... 228s Unpacking apt-utils (2.7.14) over (2.7.12) ... 228s dpkg: libapt-pkg6.0:s390x: dependency problems, but removing anyway as you requested: 228s apt depends on libapt-pkg6.0 (>= 2.7.12). 228s 228s (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 ... 52184 files and directories currently installed.) 228s Removing libapt-pkg6.0:s390x (2.7.12) ... 228s dpkg: libnettle8:s390x: dependency problems, but removing anyway as you requested: 228s libhogweed6:s390x depends on libnettle8. 228s libgnutls30:s390x depends on libnettle8 (>= 3.9~). 228s 228s Removing libnettle8:s390x (3.9.1-2) ... 228s Selecting previously unselected package libapt-pkg6.0t64:s390x. 228s (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 ... 52128 files and directories currently installed.) 228s Preparing to unpack .../libapt-pkg6.0t64_2.7.14_s390x.deb ... 228s Unpacking libapt-pkg6.0t64:s390x (2.7.14) ... 228s Setting up libapt-pkg6.0t64:s390x (2.7.14) ... 228s Selecting previously unselected package libnettle8t64:s390x. 228s (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 ... 52178 files and directories currently installed.) 228s Preparing to unpack .../libnettle8t64_3.9.1-2.2_s390x.deb ... 228s Unpacking libnettle8t64:s390x (3.9.1-2.2) ... 228s Setting up libnettle8t64:s390x (3.9.1-2.2) ... 228s dpkg: libhogweed6:s390x: dependency problems, but removing anyway as you requested: 228s libgnutls30:s390x depends on libhogweed6 (>= 3.6). 228s 228s (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 ... 52186 files and directories currently installed.) 228s Removing libhogweed6:s390x (3.9.1-2) ... 228s Selecting previously unselected package libhogweed6t64:s390x. 228s (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 ... 52181 files and directories currently installed.) 228s Preparing to unpack .../libhogweed6t64_3.9.1-2.2_s390x.deb ... 228s Unpacking libhogweed6t64:s390x (3.9.1-2.2) ... 228s Setting up libhogweed6t64:s390x (3.9.1-2.2) ... 228s dpkg: libgnutls30:s390x: dependency problems, but removing anyway as you requested: 228s apt depends on libgnutls30 (>= 3.8.1). 228s 228s (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 ... 52187 files and directories currently installed.) 228s Removing libgnutls30:s390x (3.8.3-1ubuntu1) ... 228s Selecting previously unselected package libgnutls30t64:s390x. 228s (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 ... 52178 files and directories currently installed.) 228s Preparing to unpack .../libgnutls30t64_3.8.3-1.1ubuntu2_s390x.deb ... 228s Unpacking libgnutls30t64:s390x (3.8.3-1.1ubuntu2) ... 228s Setting up libgnutls30t64:s390x (3.8.3-1.1ubuntu2) ... 228s (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 ... 52206 files and directories currently installed.) 228s Preparing to unpack .../archives/apt_2.7.14_s390x.deb ... 228s Unpacking apt (2.7.14) over (2.7.12) ... 229s Setting up apt (2.7.14) ... 229s (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 ... 52206 files and directories currently installed.) 229s Preparing to unpack .../gpgconf_2.4.4-2ubuntu15_s390x.deb ... 229s Unpacking gpgconf (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 229s Preparing to unpack .../gpgsm_2.4.4-2ubuntu15_s390x.deb ... 229s Unpacking gpgsm (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 229s dpkg: libreadline8:s390x: dependency problems, but removing anyway as you requested: 229s libpython3.12-stdlib:s390x depends on libreadline8 (>= 7.0~beta). 229s gawk depends on libreadline8 (>= 6.0). 229s fdisk depends on libreadline8 (>= 6.0). 229s 229s (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 ... 52206 files and directories currently installed.) 229s Removing libreadline8:s390x (8.2-3) ... 229s Selecting previously unselected package libreadline8t64:s390x. 229s (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 ... 52194 files and directories currently installed.) 229s Preparing to unpack .../libreadline8t64_8.2-4_s390x.deb ... 229s Adding 'diversion of /lib/s390x-linux-gnu/libhistory.so.8 to /lib/s390x-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' 229s Adding 'diversion of /lib/s390x-linux-gnu/libhistory.so.8.2 to /lib/s390x-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' 229s Adding 'diversion of /lib/s390x-linux-gnu/libreadline.so.8 to /lib/s390x-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' 229s Adding 'diversion of /lib/s390x-linux-gnu/libreadline.so.8.2 to /lib/s390x-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' 229s Unpacking libreadline8t64:s390x (8.2-4) ... 229s Setting up libreadline8t64:s390x (8.2-4) ... 229s (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 ... 52214 files and directories currently installed.) 229s Preparing to unpack .../gawk_1%3a5.2.1-2build2_s390x.deb ... 229s Unpacking gawk (1:5.2.1-2build2) over (1:5.2.1-2) ... 229s Preparing to unpack .../fdisk_2.39.3-9ubuntu2_s390x.deb ... 229s Unpacking fdisk (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 229s Preparing to unpack .../libpython3.12-stdlib_3.12.2-4build3_s390x.deb ... 229s Unpacking libpython3.12-stdlib:s390x (3.12.2-4build3) over (3.12.2-1) ... 229s Preparing to unpack .../perl-base_5.38.2-3.2_s390x.deb ... 229s Unpacking perl-base (5.38.2-3.2) over (5.38.2-3) ... 230s Setting up perl-base (5.38.2-3.2) ... 230s (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 ... 52212 files and directories currently installed.) 230s Preparing to unpack .../perl-modules-5.38_5.38.2-3.2_all.deb ... 230s Unpacking perl-modules-5.38 (5.38.2-3.2) over (5.38.2-3) ... 230s Preparing to unpack .../python3-gdbm_3.12.2-3ubuntu1.1_s390x.deb ... 230s Unpacking python3-gdbm:s390x (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 230s Preparing to unpack .../man-db_2.12.0-3build4_s390x.deb ... 230s Unpacking man-db (2.12.0-3build4) over (2.12.0-3) ... 230s dpkg: libgdbm-compat4:s390x: dependency problems, but removing anyway as you requested: 230s libperl5.38:s390x depends on libgdbm-compat4 (>= 1.18-3). 230s 230s (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 ... 52212 files and directories currently installed.) 230s Removing libgdbm-compat4:s390x (1.23-5) ... 230s dpkg: libgdbm6:s390x: dependency problems, but removing anyway as you requested: 230s libperl5.38:s390x depends on libgdbm6 (>= 1.21). 230s 230s Removing libgdbm6:s390x (1.23-5) ... 230s Selecting previously unselected package libgdbm6t64:s390x. 230s (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 ... 52202 files and directories currently installed.) 230s Preparing to unpack .../libgdbm6t64_1.23-5.1_s390x.deb ... 230s Unpacking libgdbm6t64:s390x (1.23-5.1) ... 230s Selecting previously unselected package libgdbm-compat4t64:s390x. 230s Preparing to unpack .../libgdbm-compat4t64_1.23-5.1_s390x.deb ... 230s Unpacking libgdbm-compat4t64:s390x (1.23-5.1) ... 230s dpkg: libperl5.38:s390x: dependency problems, but removing anyway as you requested: 230s perl depends on libperl5.38 (= 5.38.2-3). 230s 230s (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 ... 52214 files and directories currently installed.) 230s Removing libperl5.38:s390x (5.38.2-3) ... 230s Selecting previously unselected package libperl5.38t64:s390x. 230s (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 ... 51692 files and directories currently installed.) 230s Preparing to unpack .../libperl5.38t64_5.38.2-3.2_s390x.deb ... 230s Unpacking libperl5.38t64:s390x (5.38.2-3.2) ... 230s Preparing to unpack .../perl_5.38.2-3.2_s390x.deb ... 231s Unpacking perl (5.38.2-3.2) over (5.38.2-3) ... 231s dpkg: libdb5.3:s390x: dependency problems, but removing anyway as you requested: 231s libsasl2-modules-db:s390x depends on libdb5.3. 231s libpam-modules:s390x depends on libdb5.3. 231s iproute2 depends on libdb5.3. 231s 231s (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 ... 52214 files and directories currently installed.) 231s Removing libdb5.3:s390x (5.3.28+dfsg2-4) ... 231s Selecting previously unselected package libdb5.3t64:s390x. 231s (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 ... 52208 files and directories currently installed.) 231s Preparing to unpack .../0-libdb5.3t64_5.3.28+dfsg2-6_s390x.deb ... 231s Unpacking libdb5.3t64:s390x (5.3.28+dfsg2-6) ... 231s Preparing to unpack .../1-libsasl2-modules-db_2.1.28+dfsg1-5ubuntu1_s390x.deb ... 231s Unpacking libsasl2-modules-db:s390x (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 231s Preparing to unpack .../2-libsasl2-2_2.1.28+dfsg1-5ubuntu1_s390x.deb ... 231s Unpacking libsasl2-2:s390x (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 231s Preparing to unpack .../3-libfido2-1_1.14.0-1build1_s390x.deb ... 231s Unpacking libfido2-1:s390x (1.14.0-1build1) over (1.14.0-1) ... 231s Preparing to unpack .../4-libcryptsetup12_2%3a2.7.0-1ubuntu2_s390x.deb ... 231s Unpacking libcryptsetup12:s390x (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 231s Preparing to unpack .../5-dhcpcd-base_1%3a10.0.6-1ubuntu2_s390x.deb ... 231s Unpacking dhcpcd-base (1:10.0.6-1ubuntu2) over (1:10.0.6-1ubuntu1) ... 231s dpkg: libuv1:s390x: dependency problems, but removing anyway as you requested: 231s bind9-libs:s390x depends on libuv1 (>= 1.40.0). 231s 231s (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 ... 52214 files and directories currently installed.) 231s Removing libuv1:s390x (1.48.0-1) ... 231s Selecting previously unselected package libuv1t64:s390x. 231s (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 ... 52209 files and directories currently installed.) 231s Preparing to unpack .../libuv1t64_1.48.0-1.1_s390x.deb ... 231s Unpacking libuv1t64:s390x (1.48.0-1.1) ... 231s Preparing to unpack .../bind9-host_1%3a9.18.24-0ubuntu3_s390x.deb ... 231s Unpacking bind9-host (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 231s Preparing to unpack .../bind9-dnsutils_1%3a9.18.24-0ubuntu3_s390x.deb ... 231s Unpacking bind9-dnsutils (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 231s Preparing to unpack .../bind9-libs_1%3a9.18.24-0ubuntu3_s390x.deb ... 231s Unpacking bind9-libs:s390x (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 231s dpkg: libssl3:s390x: dependency problems, but removing anyway as you requested: 231s systemd depends on libssl3 (>= 3.0.0). 231s s390-tools depends on libssl3 (>= 3.0.0). 231s linux-headers-6.8.0-11-generic depends on libssl3 (>= 3.0.0). 231s 231s (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 ... 52215 files and directories currently installed.) 231s Removing libssl3:s390x (3.0.10-1ubuntu4) ... 231s Selecting previously unselected package libssl3t64:s390x. 231s (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 ... 52204 files and directories currently installed.) 231s Preparing to unpack .../libssl3t64_3.0.13-0ubuntu2_s390x.deb ... 231s Unpacking libssl3t64:s390x (3.0.13-0ubuntu2) ... 231s Setting up libssl3t64:s390x (3.0.13-0ubuntu2) ... 231s (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 ... 52217 files and directories currently installed.) 231s Preparing to unpack .../libnss-systemd_255.4-1ubuntu5_s390x.deb ... 231s Unpacking libnss-systemd:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 231s Preparing to unpack .../libudev1_255.4-1ubuntu5_s390x.deb ... 231s Unpacking libudev1:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 231s Setting up libudev1:s390x (255.4-1ubuntu5) ... 231s (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 ... 52217 files and directories currently installed.) 231s Preparing to unpack .../systemd_255.4-1ubuntu5_s390x.deb ... 231s Unpacking systemd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 231s Preparing to unpack .../udev_255.4-1ubuntu5_s390x.deb ... 231s Unpacking udev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 231s Preparing to unpack .../libsystemd0_255.4-1ubuntu5_s390x.deb ... 231s Unpacking libsystemd0:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 232s Setting up libsystemd0:s390x (255.4-1ubuntu5) ... 232s Setting up libcryptsetup12:s390x (2:2.7.0-1ubuntu2) ... 232s Setting up libkmod2:s390x (31+20240202-2ubuntu4) ... 232s Setting up libsystemd-shared:s390x (255.4-1ubuntu5) ... 232s Setting up systemd-dev (255.4-1ubuntu5) ... 232s Setting up systemd (255.4-1ubuntu5) ... 232s (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 ... 52217 files and directories currently installed.) 232s Preparing to unpack .../systemd-sysv_255.4-1ubuntu5_s390x.deb ... 232s Unpacking systemd-sysv (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 232s Preparing to unpack .../libpam-systemd_255.4-1ubuntu5_s390x.deb ... 232s Unpacking libpam-systemd:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 232s Preparing to unpack .../libpam-modules-bin_1.5.3-5ubuntu3_s390x.deb ... 232s Unpacking libpam-modules-bin (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 232s Setting up libpam-modules-bin (1.5.3-5ubuntu3) ... 233s pam_namespace.service is a disabled or a static unit not running, not starting it. 233s (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 ... 52217 files and directories currently installed.) 233s Preparing to unpack .../libpam-modules_1.5.3-5ubuntu3_s390x.deb ... 233s Unpacking libpam-modules:s390x (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 233s Setting up libpam-modules:s390x (1.5.3-5ubuntu3) ... 233s Installing new version of config file /etc/security/namespace.init ... 233s (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 ... 52215 files and directories currently installed.) 233s Preparing to unpack .../libpam-runtime_1.5.3-5ubuntu3_all.deb ... 233s Unpacking libpam-runtime (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 233s Setting up libpam-runtime (1.5.3-5ubuntu3) ... 233s (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 ... 52215 files and directories currently installed.) 233s Preparing to unpack .../0-dbus-user-session_1.14.10-4ubuntu2_s390x.deb ... 233s Unpacking dbus-user-session (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 233s Preparing to unpack .../1-libapparmor1_4.0.0-beta3-0ubuntu2_s390x.deb ... 233s Unpacking libapparmor1:s390x (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 233s Preparing to unpack .../2-dbus-system-bus-common_1.14.10-4ubuntu2_all.deb ... 233s Unpacking dbus-system-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 233s Preparing to unpack .../3-dbus-bin_1.14.10-4ubuntu2_s390x.deb ... 233s Unpacking dbus-bin (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 233s Preparing to unpack .../4-dbus_1.14.10-4ubuntu2_s390x.deb ... 233s Unpacking dbus (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 233s Preparing to unpack .../5-dbus-daemon_1.14.10-4ubuntu2_s390x.deb ... 233s Unpacking dbus-daemon (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 233s Preparing to unpack .../6-libdbus-1-3_1.14.10-4ubuntu2_s390x.deb ... 233s Unpacking libdbus-1-3:s390x (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 233s Preparing to unpack .../7-libmount1_2.39.3-9ubuntu2_s390x.deb ... 233s Unpacking libmount1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 233s Setting up libmount1:s390x (2.39.3-9ubuntu2) ... 233s (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 ... 52215 files and directories currently installed.) 233s Preparing to unpack .../libuuid1_2.39.3-9ubuntu2_s390x.deb ... 233s Unpacking libuuid1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 233s Setting up libuuid1:s390x (2.39.3-9ubuntu2) ... 233s (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 ... 52215 files and directories currently installed.) 233s Preparing to unpack .../libfdisk1_2.39.3-9ubuntu2_s390x.deb ... 233s Unpacking libfdisk1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 233s Preparing to unpack .../mount_2.39.3-9ubuntu2_s390x.deb ... 233s Unpacking mount (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 233s Preparing to unpack .../libsqlite3-0_3.45.1-1ubuntu1_s390x.deb ... 233s Unpacking libsqlite3-0:s390x (3.45.1-1ubuntu1) over (3.45.1-1) ... 233s Preparing to unpack .../dpkg_1.22.6ubuntu5_s390x.deb ... 233s Unpacking dpkg (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 233s Setting up dpkg (1.22.6ubuntu5) ... 234s Setting up libpython3.12-minimal:s390x (3.12.2-4build3) ... 234s Setting up python3.12-minimal (3.12.2-4build3) ... 237s (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 ... 52215 files and directories currently installed.) 237s Preparing to unpack .../python3-minimal_3.12.2-0ubuntu1_s390x.deb ... 237s Unpacking python3-minimal (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 237s Setting up python3-minimal (3.12.2-0ubuntu1) ... 237s (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 ... 52215 files and directories currently installed.) 237s Preparing to unpack .../python3_3.12.2-0ubuntu1_s390x.deb ... 237s Unpacking python3 (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 237s Preparing to unpack .../libpython3-stdlib_3.12.2-0ubuntu1_s390x.deb ... 237s Unpacking libpython3-stdlib:s390x (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 237s Preparing to unpack .../libsmartcols1_2.39.3-9ubuntu2_s390x.deb ... 237s Unpacking libsmartcols1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 237s Setting up libsmartcols1:s390x (2.39.3-9ubuntu2) ... 237s (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 ... 52215 files and directories currently installed.) 237s Preparing to unpack .../0-bsdextrautils_2.39.3-9ubuntu2_s390x.deb ... 237s Unpacking bsdextrautils (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 237s Preparing to unpack .../1-groff-base_1.23.0-3build1_s390x.deb ... 237s Unpacking groff-base (1.23.0-3build1) over (1.23.0-3) ... 237s Preparing to unpack .../2-pinentry-curses_1.2.1-3ubuntu4_s390x.deb ... 237s Unpacking pinentry-curses (1.2.1-3ubuntu4) over (1.2.1-3ubuntu1) ... 237s Preparing to unpack .../3-readline-common_8.2-4_all.deb ... 237s Unpacking readline-common (8.2-4) over (8.2-3) ... 237s Preparing to unpack .../4-libxml2_2.9.14+dfsg-1.3ubuntu2_s390x.deb ... 237s Unpacking libxml2:s390x (2.9.14+dfsg-1.3ubuntu2) over (2.9.14+dfsg-1.3ubuntu1) ... 237s Preparing to unpack .../5-libbpf1_1%3a1.3.0-2build1_s390x.deb ... 237s Unpacking libbpf1:s390x (1:1.3.0-2build1) over (1:1.3.0-2) ... 237s dpkg: libelf1:s390x: dependency problems, but removing anyway as you requested: 237s linux-headers-6.8.0-11-generic depends on libelf1 (>= 0.144). 237s iproute2 depends on libelf1 (>= 0.131). 237s 237s (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 ... 52215 files and directories currently installed.) 237s Removing libelf1:s390x (0.190-1) ... 237s Selecting previously unselected package libelf1t64:s390x. 237s (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 ... 52210 files and directories currently installed.) 237s Preparing to unpack .../libelf1t64_0.190-1.1build2_s390x.deb ... 237s Unpacking libelf1t64:s390x (0.190-1.1build2) ... 237s Preparing to unpack .../libtirpc-common_1.3.4+ds-1.1_all.deb ... 237s Unpacking libtirpc-common (1.3.4+ds-1.1) over (1.3.4+ds-1build1) ... 237s Preparing to unpack .../lsof_4.95.0-1build2_s390x.deb ... 237s Unpacking lsof (4.95.0-1build2) over (4.95.0-1build1) ... 237s Preparing to unpack .../libnsl2_1.3.0-3build2_s390x.deb ... 237s Unpacking libnsl2:s390x (1.3.0-3build2) over (1.3.0-3) ... 237s dpkg: libtirpc3:s390x: dependency problems, but removing anyway as you requested: 237s iproute2 depends on libtirpc3 (>= 1.0.2). 237s 237s (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 ... 52215 files and directories currently installed.) 237s Removing libtirpc3:s390x (1.3.4+ds-1build1) ... 237s Selecting previously unselected package libtirpc3t64:s390x. 237s (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 ... 52209 files and directories currently installed.) 237s Preparing to unpack .../0-libtirpc3t64_1.3.4+ds-1.1_s390x.deb ... 237s Adding 'diversion of /lib/s390x-linux-gnu/libtirpc.so.3 to /lib/s390x-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' 237s Adding 'diversion of /lib/s390x-linux-gnu/libtirpc.so.3.0.0 to /lib/s390x-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' 237s Unpacking libtirpc3t64:s390x (1.3.4+ds-1.1) ... 237s Preparing to unpack .../1-iproute2_6.1.0-1ubuntu5_s390x.deb ... 237s Unpacking iproute2 (6.1.0-1ubuntu5) over (6.1.0-1ubuntu2) ... 237s Preparing to unpack .../2-python3-yaml_6.0.1-2build1_s390x.deb ... 237s Unpacking python3-yaml (6.0.1-2build1) over (6.0.1-2) ... 237s Preparing to unpack .../3-libprotobuf-c1_1.4.1-1ubuntu3_s390x.deb ... 237s Unpacking libprotobuf-c1:s390x (1.4.1-1ubuntu3) over (1.4.1-1ubuntu2) ... 237s Preparing to unpack .../4-libnghttp2-14_1.59.0-1build1_s390x.deb ... 237s Unpacking libnghttp2-14:s390x (1.59.0-1build1) over (1.59.0-1) ... 237s Preparing to unpack .../5-libproc2-0_2%3a4.0.4-4ubuntu2_s390x.deb ... 237s Unpacking libproc2-0:s390x (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 237s Preparing to unpack .../6-procps_2%3a4.0.4-4ubuntu2_s390x.deb ... 237s Unpacking procps (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 237s Preparing to unpack .../7-coreutils_9.4-3ubuntu3_s390x.deb ... 237s Unpacking coreutils (9.4-3ubuntu3) over (9.4-2ubuntu4) ... 237s Setting up coreutils (9.4-3ubuntu3) ... 237s (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 ... 52220 files and directories currently installed.) 237s Preparing to unpack .../util-linux_2.39.3-9ubuntu2_s390x.deb ... 237s Unpacking util-linux (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 237s Setting up util-linux (2.39.3-9ubuntu2) ... 237s fstrim.service is a disabled or a static unit not running, not starting it. 237s (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 ... 52220 files and directories currently installed.) 237s Removing libatm1:s390x (1:2.5.1-5) ... 237s (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 ... 52215 files and directories currently installed.) 237s Preparing to unpack .../file_1%3a5.45-3_s390x.deb ... 237s Unpacking file (1:5.45-3) over (1:5.45-2) ... 237s (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 ... 52215 files and directories currently installed.) 237s Removing libmagic1:s390x (1:5.45-2) ... 237s (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 ... 52205 files and directories currently installed.) 237s Preparing to unpack .../libmagic-mgc_1%3a5.45-3_s390x.deb ... 237s Unpacking libmagic-mgc (1:5.45-3) over (1:5.45-2) ... 237s Selecting previously unselected package libmagic1t64:s390x. 237s Preparing to unpack .../libmagic1t64_1%3a5.45-3_s390x.deb ... 237s Unpacking libmagic1t64:s390x (1:5.45-3) ... 237s Preparing to unpack .../libplymouth5_24.004.60-1ubuntu6_s390x.deb ... 237s Unpacking libplymouth5:s390x (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 237s (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 ... 52216 files and directories currently installed.) 237s Removing libpng16-16:s390x (1.6.43-1) ... 237s Selecting previously unselected package libpng16-16t64:s390x. 237s (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 ... 52206 files and directories currently installed.) 237s Preparing to unpack .../libpng16-16t64_1.6.43-3_s390x.deb ... 237s Unpacking libpng16-16t64:s390x (1.6.43-3) ... 237s Preparing to unpack .../multipath-tools_0.9.4-5ubuntu6_s390x.deb ... 237s Unpacking multipath-tools (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 237s dpkg: liburcu8:s390x: dependency problems, but removing anyway as you requested: 237s xfsprogs depends on liburcu8 (>= 0.13.0). 237s 237s (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 ... 52216 files and directories currently installed.) 237s Removing liburcu8:s390x (0.14.0-3) ... 237s Selecting previously unselected package liburcu8t64:s390x. 237s (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 ... 52197 files and directories currently installed.) 237s Preparing to unpack .../liburcu8t64_0.14.0-3.1_s390x.deb ... 237s Unpacking liburcu8t64:s390x (0.14.0-3.1) ... 237s Preparing to unpack .../liblocale-gettext-perl_1.07-6ubuntu4_s390x.deb ... 237s Unpacking liblocale-gettext-perl (1.07-6ubuntu4) over (1.07-6build1) ... 237s Preparing to unpack .../uuid-runtime_2.39.3-9ubuntu2_s390x.deb ... 237s Unpacking uuid-runtime (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 237s Preparing to unpack .../libdebconfclient0_0.271ubuntu2_s390x.deb ... 237s Unpacking libdebconfclient0:s390x (0.271ubuntu2) over (0.271ubuntu1) ... 238s Setting up libdebconfclient0:s390x (0.271ubuntu2) ... 238s (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 ... 52217 files and directories currently installed.) 238s Preparing to unpack .../libsemanage-common_3.5-1build4_all.deb ... 238s Unpacking libsemanage-common (3.5-1build4) over (3.5-1build2) ... 238s Setting up libsemanage-common (3.5-1build4) ... 238s (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 ... 52217 files and directories currently installed.) 238s Preparing to unpack .../libsemanage2_3.5-1build4_s390x.deb ... 238s Unpacking libsemanage2:s390x (3.5-1build4) over (3.5-1build2) ... 238s Setting up libsemanage2:s390x (3.5-1build4) ... 238s (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 ... 52217 files and directories currently installed.) 238s Preparing to unpack .../install-info_7.1-3build1_s390x.deb ... 238s Unpacking install-info (7.1-3build1) over (7.1-3) ... 238s Setting up install-info (7.1-3build1) ... 238s (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 ... 52217 files and directories currently installed.) 238s Preparing to unpack .../00-libss2_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 238s Unpacking libss2:s390x (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 238s Preparing to unpack .../01-eject_2.39.3-9ubuntu2_s390x.deb ... 238s Unpacking eject (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 238s Preparing to unpack .../02-krb5-locales_1.20.1-6ubuntu1_all.deb ... 238s Unpacking krb5-locales (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 238s Preparing to unpack .../03-libglib2.0-data_2.79.3-3ubuntu5_all.deb ... 238s Unpacking libglib2.0-data (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 238s Preparing to unpack .../04-libslang2_2.3.3-3build1_s390x.deb ... 238s Unpacking libslang2:s390x (2.3.3-3build1) over (2.3.3-3) ... 238s Preparing to unpack .../05-libtext-charwidth-perl_0.04-11build2_s390x.deb ... 238s Unpacking libtext-charwidth-perl:s390x (0.04-11build2) over (0.04-11build1) ... 238s Preparing to unpack .../06-libtext-iconv-perl_1.7-8build2_s390x.deb ... 238s Unpacking libtext-iconv-perl:s390x (1.7-8build2) over (1.7-8build1) ... 238s Preparing to unpack .../07-python-apt-common_2.7.7_all.deb ... 238s Unpacking python-apt-common (2.7.7) over (2.7.6) ... 238s Preparing to unpack .../08-python3-setuptools_68.1.2-2ubuntu1_all.deb ... 238s Unpacking python3-setuptools (68.1.2-2ubuntu1) over (68.1.2-2) ... 238s Preparing to unpack .../09-python3-pkg-resources_68.1.2-2ubuntu1_all.deb ... 238s Unpacking python3-pkg-resources (68.1.2-2ubuntu1) over (68.1.2-2) ... 238s Preparing to unpack .../10-rsyslog_8.2312.0-3ubuntu7_s390x.deb ... 238s Unpacking rsyslog (8.2312.0-3ubuntu7) over (8.2312.0-3ubuntu3) ... 238s Preparing to unpack .../11-vim-tiny_2%3a9.1.0016-1ubuntu6_s390x.deb ... 238s Unpacking vim-tiny (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 238s Preparing to unpack .../12-vim-common_2%3a9.1.0016-1ubuntu6_all.deb ... 238s Unpacking vim-common (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 238s Selecting previously unselected package xdg-user-dirs. 238s Preparing to unpack .../13-xdg-user-dirs_0.18-1_s390x.deb ... 238s Unpacking xdg-user-dirs (0.18-1) ... 238s Preparing to unpack .../14-xxd_2%3a9.1.0016-1ubuntu6_s390x.deb ... 238s Unpacking xxd (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 238s Preparing to unpack .../15-apparmor_4.0.0-beta3-0ubuntu2_s390x.deb ... 239s Unpacking apparmor (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 239s Preparing to unpack .../16-ftp_20230507-2build1_all.deb ... 239s Unpacking ftp (20230507-2build1) over (20230507-2) ... 239s Preparing to unpack .../17-inetutils-telnet_2%3a2.5-3ubuntu3_s390x.deb ... 239s Unpacking inetutils-telnet (2:2.5-3ubuntu3) over (2:2.5-3ubuntu1) ... 239s Preparing to unpack .../18-info_7.1-3build1_s390x.deb ... 239s Unpacking info (7.1-3build1) over (7.1-3) ... 239s Preparing to unpack .../19-libxmuu1_2%3a1.1.3-3build1_s390x.deb ... 239s Unpacking libxmuu1:s390x (2:1.1.3-3build1) over (2:1.1.3-3) ... 239s Preparing to unpack .../20-lshw_02.19.git.2021.06.19.996aaad9c7-2build2_s390x.deb ... 239s Unpacking lshw (02.19.git.2021.06.19.996aaad9c7-2build2) over (02.19.git.2021.06.19.996aaad9c7-2build1) ... 239s Selecting previously unselected package manpages. 239s Preparing to unpack .../21-manpages_6.05.01-1_all.deb ... 239s Unpacking manpages (6.05.01-1) ... 239s Preparing to unpack .../22-mtr-tiny_0.95-1.1build1_s390x.deb ... 239s Unpacking mtr-tiny (0.95-1.1build1) over (0.95-1.1) ... 239s Preparing to unpack .../23-plymouth-theme-ubuntu-text_24.004.60-1ubuntu6_s390x.deb ... 239s Unpacking plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 239s Preparing to unpack .../24-plymouth_24.004.60-1ubuntu6_s390x.deb ... 239s Unpacking plymouth (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 239s Preparing to unpack .../25-telnet_0.17+2.5-3ubuntu3_all.deb ... 239s Unpacking telnet (0.17+2.5-3ubuntu3) over (0.17+2.5-3ubuntu1) ... 239s Preparing to unpack .../26-usb.ids_2024.03.18-1_all.deb ... 239s Unpacking usb.ids (2024.03.18-1) over (2024.01.30-1) ... 239s Preparing to unpack .../27-xz-utils_5.6.0-0.2_s390x.deb ... 239s Unpacking xz-utils (5.6.0-0.2) over (5.4.5-0.3) ... 239s Selecting previously unselected package libllvm18:s390x. 239s Preparing to unpack .../28-libllvm18_1%3a18.1.2-1ubuntu2_s390x.deb ... 239s Unpacking libllvm18:s390x (1:18.1.2-1ubuntu2) ... 240s Selecting previously unselected package libclang-cpp18. 240s Preparing to unpack .../29-libclang-cpp18_1%3a18.1.2-1ubuntu2_s390x.deb ... 240s Unpacking libclang-cpp18 (1:18.1.2-1ubuntu2) ... 241s Selecting previously unselected package libbpfcc:s390x. 241s Preparing to unpack .../30-libbpfcc_0.29.1+ds-1ubuntu4_s390x.deb ... 241s Unpacking libbpfcc:s390x (0.29.1+ds-1ubuntu4) ... 241s Selecting previously unselected package python3-bpfcc. 241s Preparing to unpack .../31-python3-bpfcc_0.29.1+ds-1ubuntu4_all.deb ... 241s Unpacking python3-bpfcc (0.29.1+ds-1ubuntu4) ... 241s Selecting previously unselected package ieee-data. 241s Preparing to unpack .../32-ieee-data_20220827.1_all.deb ... 241s Unpacking ieee-data (20220827.1) ... 241s Selecting previously unselected package python3-netaddr. 241s Preparing to unpack .../33-python3-netaddr_0.8.0-2ubuntu1_all.deb ... 241s Unpacking python3-netaddr (0.8.0-2ubuntu1) ... 241s Selecting previously unselected package bpfcc-tools. 241s Preparing to unpack .../34-bpfcc-tools_0.29.1+ds-1ubuntu4_all.deb ... 241s Unpacking bpfcc-tools (0.29.1+ds-1ubuntu4) ... 241s Selecting previously unselected package libclang1-18. 241s Preparing to unpack .../35-libclang1-18_1%3a18.1.2-1ubuntu2_s390x.deb ... 241s Unpacking libclang1-18 (1:18.1.2-1ubuntu2) ... 242s Selecting previously unselected package libdw1t64:s390x. 242s Preparing to unpack .../36-libdw1t64_0.190-1.1build2_s390x.deb ... 242s Unpacking libdw1t64:s390x (0.190-1.1build2) ... 242s Selecting previously unselected package bpftrace. 242s Preparing to unpack .../37-bpftrace_0.20.2-1ubuntu1_s390x.deb ... 242s Unpacking bpftrace (0.20.2-1ubuntu1) ... 242s Preparing to unpack .../38-cryptsetup-bin_2%3a2.7.0-1ubuntu2_s390x.deb ... 242s Unpacking cryptsetup-bin (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 242s Preparing to unpack .../39-dpkg-dev_1.22.6ubuntu5_all.deb ... 242s Unpacking dpkg-dev (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 242s Preparing to unpack .../40-libdpkg-perl_1.22.6ubuntu5_all.deb ... 242s Unpacking libdpkg-perl (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 242s Selecting previously unselected package fonts-dejavu-mono. 242s Preparing to unpack .../41-fonts-dejavu-mono_2.37-8_all.deb ... 242s Unpacking fonts-dejavu-mono (2.37-8) ... 242s Selecting previously unselected package fonts-dejavu-core. 242s Preparing to unpack .../42-fonts-dejavu-core_2.37-8_all.deb ... 242s Unpacking fonts-dejavu-core (2.37-8) ... 242s Selecting previously unselected package fontconfig-config. 242s Preparing to unpack .../43-fontconfig-config_2.15.0-1.1ubuntu1_s390x.deb ... 242s Unpacking fontconfig-config (2.15.0-1.1ubuntu1) ... 242s Preparing to unpack .../44-gnupg-l10n_2.4.4-2ubuntu15_all.deb ... 242s Unpacking gnupg-l10n (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 242s Selecting previously unselected package hwdata. 242s Preparing to unpack .../45-hwdata_0.379-1_all.deb ... 242s Unpacking hwdata (0.379-1) ... 242s Preparing to unpack .../46-libibverbs1_50.0-2build1_s390x.deb ... 242s Unpacking libibverbs1:s390x (50.0-2build1) over (50.0-2) ... 242s Preparing to unpack .../47-ibverbs-providers_50.0-2build1_s390x.deb ... 242s Unpacking ibverbs-providers:s390x (50.0-2build1) over (50.0-2) ... 242s Selecting previously unselected package libaio1t64:s390x. 242s Preparing to unpack .../48-libaio1t64_0.3.113-6_s390x.deb ... 242s Unpacking libaio1t64:s390x (0.3.113-6) ... 242s Selecting previously unselected package libatm1t64:s390x. 242s Preparing to unpack .../49-libatm1t64_1%3a2.5.1-5.1_s390x.deb ... 242s Unpacking libatm1t64:s390x (1:2.5.1-5.1) ... 242s Selecting previously unselected package libc-dev-bin. 242s Preparing to unpack .../50-libc-dev-bin_2.39-0ubuntu6_s390x.deb ... 242s Unpacking libc-dev-bin (2.39-0ubuntu6) ... 242s Selecting previously unselected package libfreetype6:s390x. 242s Preparing to unpack .../51-libfreetype6_2.13.2+dfsg-1build2_s390x.deb ... 242s Unpacking libfreetype6:s390x (2.13.2+dfsg-1build2) ... 242s Selecting previously unselected package libfontconfig1:s390x. 242s Preparing to unpack .../52-libfontconfig1_2.15.0-1.1ubuntu1_s390x.deb ... 242s Unpacking libfontconfig1:s390x (2.15.0-1.1ubuntu1) ... 242s Selecting previously unselected package libjpeg-turbo8:s390x. 242s Preparing to unpack .../53-libjpeg-turbo8_2.1.5-2ubuntu1_s390x.deb ... 242s Unpacking libjpeg-turbo8:s390x (2.1.5-2ubuntu1) ... 242s Selecting previously unselected package libjpeg8:s390x. 242s Preparing to unpack .../54-libjpeg8_8c-2ubuntu11_s390x.deb ... 242s Unpacking libjpeg8:s390x (8c-2ubuntu11) ... 242s Selecting previously unselected package libdeflate0:s390x. 242s Preparing to unpack .../55-libdeflate0_1.19-1_s390x.deb ... 242s Unpacking libdeflate0:s390x (1.19-1) ... 242s Selecting previously unselected package libjbig0:s390x. 242s Preparing to unpack .../56-libjbig0_2.1-6.1ubuntu1_s390x.deb ... 242s Unpacking libjbig0:s390x (2.1-6.1ubuntu1) ... 242s Selecting previously unselected package libsharpyuv0:s390x. 242s Preparing to unpack .../57-libsharpyuv0_1.3.2-0.4build2_s390x.deb ... 242s Unpacking libsharpyuv0:s390x (1.3.2-0.4build2) ... 242s Selecting previously unselected package libwebp7:s390x. 242s Preparing to unpack .../58-libwebp7_1.3.2-0.4build2_s390x.deb ... 242s Unpacking libwebp7:s390x (1.3.2-0.4build2) ... 242s Selecting previously unselected package libtiff6:s390x. 242s Preparing to unpack .../59-libtiff6_4.5.1+git230720-4ubuntu1_s390x.deb ... 242s Unpacking libtiff6:s390x (4.5.1+git230720-4ubuntu1) ... 242s Selecting previously unselected package libxpm4:s390x. 242s Preparing to unpack .../60-libxpm4_1%3a3.5.17-1build1_s390x.deb ... 242s Unpacking libxpm4:s390x (1:3.5.17-1build1) ... 242s Selecting previously unselected package libgd3:s390x. 242s Preparing to unpack .../61-libgd3_2.3.3-9ubuntu3_s390x.deb ... 242s Unpacking libgd3:s390x (2.3.3-9ubuntu3) ... 242s Selecting previously unselected package libc-devtools. 242s Preparing to unpack .../62-libc-devtools_2.39-0ubuntu6_s390x.deb ... 242s Unpacking libc-devtools (2.39-0ubuntu6) ... 242s Selecting previously unselected package linux-libc-dev:s390x. 242s Preparing to unpack .../63-linux-libc-dev_6.8.0-20.20_s390x.deb ... 242s Unpacking linux-libc-dev:s390x (6.8.0-20.20) ... 242s Selecting previously unselected package libcrypt-dev:s390x. 242s Preparing to unpack .../64-libcrypt-dev_1%3a4.4.36-4_s390x.deb ... 242s Unpacking libcrypt-dev:s390x (1:4.4.36-4) ... 243s Selecting previously unselected package rpcsvc-proto. 243s Preparing to unpack .../65-rpcsvc-proto_1.4.2-0ubuntu6_s390x.deb ... 243s Unpacking rpcsvc-proto (1.4.2-0ubuntu6) ... 243s Selecting previously unselected package libc6-dev:s390x. 243s Preparing to unpack .../66-libc6-dev_2.39-0ubuntu6_s390x.deb ... 243s Unpacking libc6-dev:s390x (2.39-0ubuntu6) ... 243s Preparing to unpack .../67-libevent-core-2.1-7_2.1.12-stable-9build1_s390x.deb ... 243s Unpacking libevent-core-2.1-7:s390x (2.1.12-stable-9build1) over (2.1.12-stable-9) ... 243s Preparing to unpack .../68-libldap-common_2.6.7+dfsg-1~exp1ubuntu6_all.deb ... 243s Unpacking libldap-common (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 243s Selecting previously unselected package linux-modules-6.8.0-20-generic. 243s Preparing to unpack .../69-linux-modules-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 243s Unpacking linux-modules-6.8.0-20-generic (6.8.0-20.20) ... 243s Selecting previously unselected package linux-image-6.8.0-20-generic. 243s Preparing to unpack .../70-linux-image-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 243s Unpacking linux-image-6.8.0-20-generic (6.8.0-20.20) ... 243s Selecting previously unselected package linux-modules-extra-6.8.0-20-generic. 243s Preparing to unpack .../71-linux-modules-extra-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 243s Unpacking linux-modules-extra-6.8.0-20-generic (6.8.0-20.20) ... 243s Preparing to unpack .../72-linux-generic_6.8.0-20.20+1_s390x.deb ... 243s Unpacking linux-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 243s Preparing to unpack .../73-linux-image-generic_6.8.0-20.20+1_s390x.deb ... 243s Unpacking linux-image-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 243s Preparing to unpack .../74-linux-virtual_6.8.0-20.20+1_s390x.deb ... 243s Unpacking linux-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 243s Preparing to unpack .../75-linux-image-virtual_6.8.0-20.20+1_s390x.deb ... 243s Unpacking linux-image-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 243s Preparing to unpack .../76-linux-headers-virtual_6.8.0-20.20+1_s390x.deb ... 243s Unpacking linux-headers-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 243s Selecting previously unselected package linux-headers-6.8.0-20. 243s Preparing to unpack .../77-linux-headers-6.8.0-20_6.8.0-20.20_all.deb ... 243s Unpacking linux-headers-6.8.0-20 (6.8.0-20.20) ... 245s Selecting previously unselected package linux-headers-6.8.0-20-generic. 245s Preparing to unpack .../78-linux-headers-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 245s Unpacking linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 246s Preparing to unpack .../79-linux-headers-generic_6.8.0-20.20+1_s390x.deb ... 246s Unpacking linux-headers-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 246s Selecting previously unselected package linux-tools-common. 246s Preparing to unpack .../80-linux-tools-common_6.8.0-20.20_all.deb ... 246s Unpacking linux-tools-common (6.8.0-20.20) ... 246s Selecting previously unselected package linux-tools-6.8.0-20. 246s Preparing to unpack .../81-linux-tools-6.8.0-20_6.8.0-20.20_s390x.deb ... 246s Unpacking linux-tools-6.8.0-20 (6.8.0-20.20) ... 246s Selecting previously unselected package linux-tools-6.8.0-20-generic. 246s Preparing to unpack .../82-linux-tools-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 246s Unpacking linux-tools-6.8.0-20-generic (6.8.0-20.20) ... 246s Selecting previously unselected package manpages-dev. 246s Preparing to unpack .../83-manpages-dev_6.05.01-1_all.deb ... 246s Unpacking manpages-dev (6.05.01-1) ... 246s Preparing to unpack .../84-python3-distutils_3.12.2-3ubuntu1.1_all.deb ... 246s Unpacking python3-distutils (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 246s Preparing to unpack .../85-python3-lib2to3_3.12.2-3ubuntu1.1_all.deb ... 246s Unpacking python3-lib2to3 (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 246s Preparing to unpack .../86-python3-pyrsistent_0.20.0-1build1_s390x.deb ... 246s Unpacking python3-pyrsistent:s390x (0.20.0-1build1) over (0.20.0-1) ... 246s Preparing to unpack .../87-python3-typing-extensions_4.10.0-1_all.deb ... 247s Unpacking python3-typing-extensions (4.10.0-1) over (4.9.0-1) ... 247s Preparing to unpack .../88-s390-tools-data_2.31.0-0ubuntu3_all.deb ... 247s Unpacking s390-tools-data (2.31.0-0ubuntu3) over (2.31.0-0ubuntu1) ... 247s Selecting previously unselected package ubuntu-kernel-accessories. 247s Preparing to unpack .../89-ubuntu-kernel-accessories_1.536build1_s390x.deb ... 247s Unpacking ubuntu-kernel-accessories (1.536build1) ... 247s Preparing to unpack .../90-kpartx_0.9.4-5ubuntu6_s390x.deb ... 247s Unpacking kpartx (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 247s Setting up cryptsetup-bin (2:2.7.0-1ubuntu2) ... 247s Setting up pinentry-curses (1.2.1-3ubuntu4) ... 247s Setting up motd-news-config (13ubuntu8) ... 247s Setting up libtext-iconv-perl:s390x (1.7-8build2) ... 247s Setting up libtext-charwidth-perl:s390x (0.04-11build2) ... 247s Setting up libsharpyuv0:s390x (1.3.2-0.4build2) ... 247s Setting up liburcu8t64:s390x (0.14.0-3.1) ... 247s Setting up tcpdump (4.99.4-3ubuntu2) ... 247s Setting up libibverbs1:s390x (50.0-2build1) ... 247s Setting up systemd-sysv (255.4-1ubuntu5) ... 247s Setting up ubuntu-kernel-accessories (1.536build1) ... 247s Setting up libapparmor1:s390x (4.0.0-beta3-0ubuntu2) ... 247s Setting up libatm1t64:s390x (1:2.5.1-5.1) ... 247s Setting up libgdbm6t64:s390x (1.23-5.1) ... 247s Setting up bsdextrautils (2.39.3-9ubuntu2) ... 247s Setting up libxpm4:s390x (1:3.5.17-1build1) ... 247s Setting up libgdbm-compat4t64:s390x (1.23-5.1) ... 247s Setting up xdg-user-dirs (0.18-1) ... 247s Setting up ibverbs-providers:s390x (50.0-2build1) ... 247s Setting up linux-headers-6.8.0-20 (6.8.0-20.20) ... 247s Setting up libmagic-mgc (1:5.45-3) ... 247s Setting up gawk (1:5.2.1-2build2) ... 247s Setting up manpages (6.05.01-1) ... 247s Setting up libtirpc-common (1.3.4+ds-1.1) ... 247s Setting up libbrotli1:s390x (1.1.0-2build1) ... 247s Setting up libsqlite3-0:s390x (3.45.1-1ubuntu1) ... 247s Setting up libsasl2-modules:s390x (2.1.28+dfsg1-5ubuntu1) ... 247s Setting up libuv1t64:s390x (1.48.0-1.1) ... 247s Setting up libmagic1t64:s390x (1:5.45-3) ... 247s Setting up rsyslog (8.2312.0-3ubuntu7) ... 247s info: The user `syslog' is already a member of `adm'. 248s Setting up libpsl5t64:s390x (0.21.2-1.1) ... 248s Setting up libnghttp2-14:s390x (1.59.0-1build1) ... 248s Setting up libdeflate0:s390x (1.19-1) ... 248s Setting up linux-libc-dev:s390x (6.8.0-20.20) ... 248s Setting up libreiserfscore0t64 (1:3.6.27-7.1) ... 248s Setting up libnss-systemd:s390x (255.4-1ubuntu5) ... 248s Setting up libparted2t64:s390x (3.6-3.1build2) ... 248s Setting up krb5-locales (1.20.1-6ubuntu1) ... 248s Setting up file (1:5.45-3) ... 248s Setting up kmod (31+20240202-2ubuntu4) ... 248s Setting up lshw (02.19.git.2021.06.19.996aaad9c7-2build2) ... 248s Setting up libldap-common (2.6.7+dfsg-1~exp1ubuntu6) ... 248s Setting up libprotobuf-c1:s390x (1.4.1-1ubuntu3) ... 248s Setting up libjbig0:s390x (2.1-6.1ubuntu1) ... 248s Setting up xxd (2:9.1.0016-1ubuntu6) ... 248s Setting up libelf1t64:s390x (0.190-1.1build2) ... 248s Setting up libkrb5support0:s390x (1.20.1-6ubuntu1) ... 248s Setting up libdw1t64:s390x (0.190-1.1build2) ... 248s Setting up linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 248s Setting up eject (2.39.3-9ubuntu2) ... 248s Setting up apparmor (4.0.0-beta3-0ubuntu2) ... 248s Installing new version of config file /etc/apparmor.d/abstractions/authentication ... 248s Installing new version of config file /etc/apparmor.d/abstractions/crypto ... 248s Installing new version of config file /etc/apparmor.d/abstractions/kde-open5 ... 248s Installing new version of config file /etc/apparmor.d/abstractions/openssl ... 248s Installing new version of config file /etc/apparmor.d/code ... 248s Installing new version of config file /etc/apparmor.d/firefox ... 249s Reloading AppArmor profiles 250s Setting up libglib2.0-0t64:s390x (2.79.3-3ubuntu5) ... 250s No schema files found: doing nothing. 250s Setting up libglib2.0-data (2.79.3-3ubuntu5) ... 250s Setting up rpcsvc-proto (1.4.2-0ubuntu6) ... 250s Setting up vim-common (2:9.1.0016-1ubuntu6) ... 250s Setting up libqrtr-glib0:s390x (1.2.2-1ubuntu3) ... 250s Setting up libslang2:s390x (2.3.3-3build1) ... 250s Setting up libnvme1t64 (1.8-3) ... 250s Setting up mtr-tiny (0.95-1.1build1) ... 250s Setting up gnupg-l10n (2.4.4-2ubuntu15) ... 250s Setting up librtmp1:s390x (2.4+20151223.gitfa8646d.1-2build6) ... 250s Setting up libdbus-1-3:s390x (1.14.10-4ubuntu2) ... 250s Setting up xz-utils (5.6.0-0.2) ... 250s Setting up perl-modules-5.38 (5.38.2-3.2) ... 250s Setting up libproc2-0:s390x (2:4.0.4-4ubuntu2) ... 250s Setting up libblockdev-utils3:s390x (3.1.0-1build1) ... 250s Setting up fonts-dejavu-mono (2.37-8) ... 250s Setting up libpng16-16t64:s390x (1.6.43-3) ... 250s Setting up systemd-timesyncd (255.4-1ubuntu5) ... 250s Setting up libevent-core-2.1-7:s390x (2.1.12-stable-9build1) ... 250s Setting up udev (255.4-1ubuntu5) ... 251s Setting up libss2:s390x (1.47.0-2.4~exp1ubuntu2) ... 251s Setting up usb.ids (2024.03.18-1) ... 251s Setting up sudo (1.9.15p5-3ubuntu3) ... 251s Setting up fonts-dejavu-core (2.37-8) ... 251s Setting up dhcpcd-base (1:10.0.6-1ubuntu2) ... 251s Setting up gir1.2-glib-2.0:s390x (2.79.3-3ubuntu5) ... 251s Setting up libk5crypto3:s390x (1.20.1-6ubuntu1) ... 251s Setting up libjpeg-turbo8:s390x (2.1.5-2ubuntu1) ... 251s Setting up logsave (1.47.0-2.4~exp1ubuntu2) ... 251s Setting up libwebp7:s390x (1.3.2-0.4build2) ... 251s Setting up libfdisk1:s390x (2.39.3-9ubuntu2) ... 251s Setting up libdb5.3t64:s390x (5.3.28+dfsg2-6) ... 251s Setting up libblockdev-nvme3:s390x (3.1.0-1build1) ... 251s Setting up libblockdev-fs3:s390x (3.1.0-1build1) ... 251s Setting up libaio1t64:s390x (0.3.113-6) ... 251s Setting up python-apt-common (2.7.7) ... 251s Setting up mount (2.39.3-9ubuntu2) ... 251s Setting up uuid-runtime (2.39.3-9ubuntu2) ... 252s uuidd.service is a disabled or a static unit not running, not starting it. 252s Setting up libmm-glib0:s390x (1.23.4-0ubuntu1) ... 252s Setting up groff-base (1.23.0-3build1) ... 252s Setting up libcrypt-dev:s390x (1:4.4.36-4) ... 252s Setting up libplymouth5:s390x (24.004.60-1ubuntu6) ... 252s Setting up dbus-session-bus-common (1.14.10-4ubuntu2) ... 252s Setting up kpartx (0.9.4-5ubuntu6) ... 252s Setting up procps (2:4.0.4-4ubuntu2) ... 252s Setting up gpgconf (2.4.4-2ubuntu15) ... 252s Setting up libgirepository-1.0-1:s390x (1.79.1-1ubuntu6) ... 252s Setting up libjson-glib-1.0-common (1.8.0-2build1) ... 252s Setting up libkrb5-3:s390x (1.20.1-6ubuntu1) ... 252s Setting up libpython3.11-minimal:s390x (3.11.8-1build4) ... 252s Setting up libperl5.38t64:s390x (5.38.2-3.2) ... 252s Setting up tnftp (20230507-2build1) ... 252s Setting up dbus-system-bus-common (1.14.10-4ubuntu2) ... 252s Setting up libfido2-1:s390x (1.14.0-1build1) ... 252s Setting up libc-dev-bin (2.39-0ubuntu6) ... 252s Setting up openssl (3.0.13-0ubuntu2) ... 252s Setting up linux-modules-6.8.0-20-generic (6.8.0-20.20) ... 252s Setting up readline-common (8.2-4) ... 252s Setting up libxml2:s390x (2.9.14+dfsg-1.3ubuntu2) ... 252s Setting up libxmuu1:s390x (2:1.1.3-3build1) ... 252s Setting up dbus-bin (1.14.10-4ubuntu2) ... 252s Setting up info (7.1-3build1) ... 252s Setting up liblocale-gettext-perl (1.07-6ubuntu4) ... 252s Setting up gpg (2.4.4-2ubuntu15) ... 252s Setting up libgudev-1.0-0:s390x (1:238-3ubuntu2) ... 252s Setting up libpolkit-gobject-1-0:s390x (124-1ubuntu1) ... 252s Setting up libbpf1:s390x (1:1.3.0-2build1) ... 252s Setting up libmbim-glib4:s390x (1.31.2-0ubuntu2) ... 252s Setting up rsync (3.2.7-1build1) ... 253s rsync.service is a disabled or a static unit not running, not starting it. 253s Setting up libudisks2-0:s390x (2.10.1-6) ... 253s Setting up bolt (0.9.6-2build1) ... 253s bolt.service is a disabled or a static unit not running, not starting it. 253s Setting up s390-tools-data (2.31.0-0ubuntu3) ... 253s Setting up libllvm18:s390x (1:18.1.2-1ubuntu2) ... 253s Setting up gnupg-utils (2.4.4-2ubuntu15) ... 253s Setting up libjpeg8:s390x (8c-2ubuntu11) ... 253s Setting up python3.11-minimal (3.11.8-1build4) ... 254s Setting up libclang1-18 (1:18.1.2-1ubuntu2) ... 254s Setting up manpages-dev (6.05.01-1) ... 254s Setting up linux-modules-extra-6.8.0-20-generic (6.8.0-20.20) ... 255s Setting up apt-utils (2.7.14) ... 255s Setting up gpg-agent (2.4.4-2ubuntu15) ... 255s Setting up libpython3.12-stdlib:s390x (3.12.2-4build3) ... 255s Setting up libblockdev-mdraid3:s390x (3.1.0-1build1) ... 255s Setting up wget (1.21.4-1ubuntu2) ... 255s Setting up linux-image-6.8.0-20-generic (6.8.0-20.20) ... 256s I: /boot/vmlinuz is now a symlink to vmlinuz-6.8.0-20-generic 256s I: /boot/initrd.img is now a symlink to initrd.img-6.8.0-20-generic 256s Setting up libblockdev-swap3:s390x (3.1.0-1build1) ... 256s Setting up plymouth (24.004.60-1ubuntu6) ... 256s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 256s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 259s Not invoking zipl: initrd doesn't exist yet 259s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 259s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 260s Setting up fontconfig-config (2.15.0-1.1ubuntu1) ... 260s Setting up libxmlb2:s390x (0.3.15-1build1) ... 260s Setting up btrfs-progs (6.6.3-1.1build1) ... 260s Setting up libpython3.11-stdlib:s390x (3.11.8-1build4) ... 260s Setting up python3.12 (3.12.2-4build3) ... 261s Setting up libblockdev-loop3:s390x (3.1.0-1build1) ... 261s Setting up gpgsm (2.4.4-2ubuntu15) ... 261s Setting up inetutils-telnet (2:2.5-3ubuntu3) ... 261s Setting up parted (3.6-3.1build2) ... 261s Setting up e2fsprogs (1.47.0-2.4~exp1ubuntu2) ... 261s update-initramfs: deferring update (trigger activated) 262s e2scrub_all.service is a disabled or a static unit not running, not starting it. 262s Setting up linux-headers-generic (6.8.0-20.20+1) ... 262s Setting up dbus-daemon (1.14.10-4ubuntu2) ... 262s Setting up libmbim-proxy (1.31.2-0ubuntu2) ... 262s Setting up vim-tiny (2:9.1.0016-1ubuntu6) ... 262s Setting up libnetplan1:s390x (1.0-1) ... 262s Setting up man-db (2.12.0-3build4) ... 262s Updating database of manual pages ... 264s man-db.service is a disabled or a static unit not running, not starting it. 264s Setting up libblockdev3:s390x (3.1.0-1build1) ... 264s Setting up fdisk (2.39.3-9ubuntu2) ... 264s Setting up multipath-tools (0.9.4-5ubuntu6) ... 264s Setting up libjson-glib-1.0-0:s390x (1.8.0-2build1) ... 264s Setting up libblockdev-part3:s390x (3.1.0-1build1) ... 264s Setting up libsasl2-modules-db:s390x (2.1.28+dfsg1-5ubuntu1) ... 264s Setting up hwdata (0.379-1) ... 264s Setting up perl (5.38.2-3.2) ... 264s Setting up plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) ... 264s update-initramfs: deferring update (trigger activated) 264s Setting up libfreetype6:s390x (2.13.2+dfsg-1build2) ... 264s Setting up gir1.2-girepository-2.0:s390x (1.79.1-1ubuntu6) ... 264s Setting up dbus (1.14.10-4ubuntu2) ... 264s A reboot is required to replace the running dbus-daemon. 264s Please reboot the system when convenient. 265s Setting up shared-mime-info (2.4-1build1) ... 265s Setting up libgssapi-krb5-2:s390x (1.20.1-6ubuntu1) ... 265s Setting up ftp (20230507-2build1) ... 265s Setting up keyboxd (2.4.4-2ubuntu15) ... 265s Setting up libdpkg-perl (1.22.6ubuntu5) ... 265s Setting up libsasl2-2:s390x (2.1.28+dfsg1-5ubuntu1) ... 265s Setting up libssh-4:s390x (0.10.6-2build1) ... 265s Setting up ieee-data (20220827.1) ... 265s Setting up libtiff6:s390x (4.5.1+git230720-4ubuntu1) ... 265s Setting up libpam-systemd:s390x (255.4-1ubuntu5) ... 265s Setting up libpolkit-agent-1-0:s390x (124-1ubuntu1) ... 265s Setting up libc6-dev:s390x (2.39-0ubuntu6) ... 265s Setting up libgpgme11t64:s390x (1.18.0-4.1ubuntu3) ... 265s Setting up libfontconfig1:s390x (2.15.0-1.1ubuntu1) ... 265s Setting up linux-image-virtual (6.8.0-20.20+1) ... 265s Setting up netplan-generator (1.0-1) ... 265s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 265s Setting up libclang-cpp18 (1:18.1.2-1ubuntu2) ... 265s Setting up libbpfcc:s390x (0.29.1+ds-1ubuntu4) ... 265s Setting up linux-tools-common (6.8.0-20.20) ... 265s Setting up libarchive13t64:s390x (3.7.2-1.1ubuntu2) ... 265s Setting up libldap2:s390x (2.6.7+dfsg-1~exp1ubuntu6) ... 265s Setting up libpython3-stdlib:s390x (3.12.2-0ubuntu1) ... 265s Setting up systemd-resolved (255.4-1ubuntu5) ... 266s Setting up python3.11 (3.11.8-1build4) ... 267s Setting up linux-image-generic (6.8.0-20.20+1) ... 267s Setting up telnet (0.17+2.5-3ubuntu3) ... 267s Setting up linux-headers-virtual (6.8.0-20.20+1) ... 267s Setting up linux-generic (6.8.0-20.20+1) ... 267s Setting up libcurl4t64:s390x (8.5.0-2ubuntu8) ... 267s Setting up bpftrace (0.20.2-1ubuntu1) ... 267s Setting up bind9-libs:s390x (1:9.18.24-0ubuntu3) ... 267s Setting up libtirpc3t64:s390x (1.3.4+ds-1.1) ... 267s Setting up e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) ... 267s Setting up iproute2 (6.1.0-1ubuntu5) ... 267s Setting up openssh-client (1:9.6p1-3ubuntu11) ... 267s Setting up libgusb2:s390x (0.4.8-1build1) ... 267s Setting up libcurl3t64-gnutls:s390x (8.5.0-2ubuntu8) ... 267s Setting up libqmi-glib5:s390x (1.35.2-0ubuntu1) ... 267s Setting up linux-tools-6.8.0-20 (6.8.0-20.20) ... 267s Setting up python3 (3.12.2-0ubuntu1) ... 267s Setting up libjcat1:s390x (0.2.0-2build2) ... 267s Setting up dpkg-dev (1.22.6ubuntu5) ... 267s Setting up linux-virtual (6.8.0-20.20+1) ... 267s Setting up dirmngr (2.4.4-2ubuntu15) ... 267s Setting up dbus-user-session (1.14.10-4ubuntu2) ... 267s Setting up linux-tools-6.8.0-20-generic (6.8.0-20.20) ... 267s Setting up python3-cryptography (41.0.7-4build2) ... 268s Setting up python3-gi (3.47.0-3build1) ... 268s Setting up libgd3:s390x (2.3.3-9ubuntu3) ... 268s Setting up python3-typing-extensions (4.10.0-1) ... 268s Setting up lsof (4.95.0-1build2) ... 268s Setting up python3-pyrsistent:s390x (0.20.0-1build1) ... 268s Setting up python3-netaddr (0.8.0-2ubuntu1) ... 268s Setting up libnsl2:s390x (1.3.0-3build2) ... 268s Setting up gnupg (2.4.4-2ubuntu15) ... 268s Setting up python3-netplan (1.0-1) ... 268s Setting up curl (8.5.0-2ubuntu8) ... 268s Setting up libvolume-key1:s390x (0.3.12-7build1) ... 268s Setting up bind9-host (1:9.18.24-0ubuntu3) ... 268s Setting up python3-lib2to3 (3.12.2-3ubuntu1.1) ... 269s Setting up python3-bpfcc (0.29.1+ds-1ubuntu4) ... 269s Setting up libc-devtools (2.39-0ubuntu6) ... 269s Setting up python3-pkg-resources (68.1.2-2ubuntu1) ... 269s Setting up python3-distutils (3.12.2-3ubuntu1.1) ... 269s python3.12: can't get files for byte-compilation 269s Setting up openssh-sftp-server (1:9.6p1-3ubuntu11) ... 269s Setting up python3-dbus (1.3.2-5build2) ... 269s Setting up python3-setuptools (68.1.2-2ubuntu1) ... 270s Setting up gpg-wks-client (2.4.4-2ubuntu15) ... 270s Setting up openssh-server (1:9.6p1-3ubuntu11) ... 270s Replacing config file /etc/ssh/sshd_config with new version 272s Created symlink /etc/systemd/system/ssh.service.requires/ssh.socket → /usr/lib/systemd/system/ssh.socket. 273s Setting up libblockdev-crypto3:s390x (3.1.0-1build1) ... 273s Setting up python3-gdbm:s390x (3.12.2-3ubuntu1.1) ... 273s Setting up python3-apt (2.7.7) ... 273s Setting up libfwupd2:s390x (1.9.15-2) ... 273s Setting up python3-yaml (6.0.1-2build1) ... 273s Setting up libqmi-proxy (1.35.2-0ubuntu1) ... 273s Setting up netplan.io (1.0-1) ... 273s Setting up bpfcc-tools (0.29.1+ds-1ubuntu4) ... 273s Setting up bind9-dnsutils (1:9.18.24-0ubuntu3) ... 273s Setting up ubuntu-pro-client (31.2.2) ... 274s Setting up fwupd (1.9.15-2) ... 275s fwupd-offline-update.service is a disabled or a static unit not running, not starting it. 275s fwupd-refresh.service is a disabled or a static unit not running, not starting it. 275s fwupd.service is a disabled or a static unit not running, not starting it. 275s Setting up ubuntu-pro-client-l10n (31.2.2) ... 275s Setting up udisks2 (2.10.1-6) ... 276s Processing triggers for libc-bin (2.39-0ubuntu6) ... 276s Processing triggers for ufw (0.36.2-5) ... 276s Processing triggers for debianutils (5.17) ... 276s Processing triggers for install-info (7.1-3build1) ... 276s Processing triggers for initramfs-tools (0.142ubuntu23) ... 276s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 276s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 279s Not invoking zipl: initrd doesn't exist yet 279s Processing triggers for linux-image-6.8.0-20-generic (6.8.0-20.20) ... 279s /etc/kernel/postinst.d/initramfs-tools: 279s update-initramfs: Generating /boot/initrd.img-6.8.0-20-generic 279s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 283s Using config file '/etc/zipl.conf' 283s Building bootmap in '/boot' 283s Adding IPL section 'ubuntu' (default) 283s Preparing boot device for LD-IPL: vda (0000). 283s Done. 283s /etc/kernel/postinst.d/zz-zipl: 283s Using config file '/etc/zipl.conf' 283s Building bootmap in '/boot' 283s Adding IPL section 'ubuntu' (default) 283s Preparing boot device for LD-IPL: vda (0000). 283s Done. 284s Reading package lists... 284s Building dependency tree... 284s Reading state information... 284s The following packages will be REMOVED: 284s libaio1* libnetplan0* python3-distutils* python3-lib2to3* 285s 0 upgraded, 0 newly installed, 4 to remove and 1 not upgraded. 285s After this operation, 1445 kB disk space will be freed. 285s (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 ... 81786 files and directories currently installed.) 285s Removing libaio1:s390x (0.3.113-5) ... 285s Removing libnetplan0:s390x (0.107.1-3) ... 285s Removing python3-distutils (3.12.2-3ubuntu1.1) ... 285s Removing python3-lib2to3 (3.12.2-3ubuntu1.1) ... 285s Processing triggers for libc-bin (2.39-0ubuntu6) ... 285s autopkgtest [00:52:51]: rebooting testbed after setup commands that affected boot 314s autopkgtest [00:53:20]: testbed running kernel: Linux 6.8.0-20-generic #20-Ubuntu SMP Mon Mar 18 10:49:25 UTC 2024 317s autopkgtest [00:53:23]: @@@@@@@@@@@@@@@@@@@@ apt-source r-cran-matrixstats 319s Get:1 http://ftpmaster.internal/ubuntu noble/universe r-cran-matrixstats 1.2.0-1 (dsc) [2230 B] 319s Get:2 http://ftpmaster.internal/ubuntu noble/universe r-cran-matrixstats 1.2.0-1 (tar) [211 kB] 319s Get:3 http://ftpmaster.internal/ubuntu noble/universe r-cran-matrixstats 1.2.0-1 (diff) [4752 B] 319s gpgv: Signature made Mon Jan 8 21:38:59 2024 UTC 319s gpgv: using RSA key F1F007320A035541F0A663CA578A0494D1C646D1 319s gpgv: issuer "tille@debian.org" 319s gpgv: Can't check signature: No public key 319s dpkg-source: warning: cannot verify inline signature for ./r-cran-matrixstats_1.2.0-1.dsc: no acceptable signature found 319s autopkgtest [00:53:25]: testing package r-cran-matrixstats version 1.2.0-1 320s autopkgtest [00:53:26]: build not needed 322s autopkgtest [00:53:28]: test run-unit-test: preparing testbed 324s Reading package lists... 324s Building dependency tree... 324s Reading state information... 324s Starting pkgProblemResolver with broken count: 0 324s Starting 2 pkgProblemResolver with broken count: 0 324s Done 324s The following additional packages will be installed: 324s fontconfig fonts-glyphicons-halflings fonts-mathjax libblas3 libcairo2 324s libdatrie1 libgfortran5 libgomp1 libgraphite2-3 libharfbuzz0b libice6 324s libjs-bootstrap libjs-highlight.js libjs-jquery libjs-jquery-datatables 324s libjs-mathjax liblapack3 libpango-1.0-0 libpangocairo-1.0-0 324s libpangoft2-1.0-0 libpaper-utils libpaper1 libpixman-1-0 libsm6 libtcl8.6 324s libthai-data libthai0 libtk8.6 libxcb-render0 libxcb-shm0 libxft2 324s libxrender1 libxss1 libxt6t64 node-normalize.css r-base-core 324s r-cran-base64enc r-cran-cli r-cran-colorspace r-cran-commonmark 324s r-cran-digest r-cran-evaluate r-cran-fansi r-cran-farver r-cran-ggplot2 324s r-cran-glue r-cran-gtable r-cran-highr r-cran-isoband r-cran-knitr 324s r-cran-labeling r-cran-lattice r-cran-lifecycle r-cran-magrittr 324s r-cran-markdown r-cran-mass r-cran-matrix r-cran-matrixstats r-cran-mgcv 324s r-cran-munsell r-cran-nlme r-cran-pillar r-cran-pkgconfig r-cran-r.cache 324s r-cran-r.devices r-cran-r.methodss3 r-cran-r.oo r-cran-r.rsp r-cran-r.utils 324s r-cran-r6 r-cran-rcolorbrewer r-cran-rlang r-cran-scales r-cran-tibble 324s r-cran-utf8 r-cran-vctrs r-cran-viridislite r-cran-withr r-cran-xfun 324s r-cran-yaml tcl tcl8.6 unzip x11-common xdg-utils zip 324s Suggested packages: 324s fonts-mathjax-extras fonts-stix libjs-mathjax-doc tk8.6 libjs-html5shiv 324s elpa-ess r-doc-info | r-doc-pdf r-mathlib r-base-html r-cran-kernsmooth 324s r-cran-kernlab r-cran-mvtnorm r-cran-vcd r-cran-shiny r-cran-shinyjs 324s r-cran-dplyr r-cran-png r-cran-jpeg r-cran-rmarkdown r-cran-viridis 324s r-cran-covr r-cran-magick r-cran-sf r-cran-bit64 r-cran-dbi 324s r-cran-formattable r-cran-nanotime r-cran-palmerpenguins r-cran-stringi 324s r-cran-survival r-cran-units r-cran-vdiffr r-cran-testthat r-cran-cairo 324s r-cran-codetools r-cran-bench r-cran-blob r-cran-brio r-cran-callr 324s r-cran-crayon r-cran-here r-cran-hms r-cran-htmltools r-cran-pkgbuild 324s r-cran-pkgload r-cran-purrr r-cran-tidyr tcl-tclreadline 324s Recommended packages: 324s javascript-common r-recommended r-base-dev r-doc-html r-cran-callr 324s r-cran-covr r-cran-crayon r-cran-htmltools r-cran-htmlwidgets r-cran-mockery 324s r-cran-processx r-cran-ps r-cran-rmarkdown r-cran-rprojroot 324s r-cran-rstudioapi r-cran-testthat r-cran-whoami r-cran-curl r-cran-xml2 324s r-cran-unitizer r-cran-dplyr r-cran-hexbin r-cran-hmisc r-cran-mapproj 324s r-cran-maps r-cran-multcomp r-cran-profvis r-cran-quantreg r-cran-ragg 324s r-cran-rpart r-cran-sf r-cran-svglite r-cran-vdiffr r-cran-dbi 324s r-cran-rsqlite r-cran-waldo r-cran-testit r-cran-bslib r-cran-codetools 324s r-cran-formatr r-cran-gridsvg r-cran-jpeg r-cran-magick r-cran-png 324s r-cran-reticulate r-cran-rgl r-cran-sass r-cran-tikzdevice r-cran-tinytex 324s r-cran-webshot node-highlight.js r-cran-lintr r-cran-tidyverse r-cran-rcurl 324s r-cran-lubridate libjs-remark-slide r-cran-fs r-cran-usethis r-cran-bit64 324s r-cran-dichromat r-cran-hms r-cran-stringi r-cran-data.table r-cran-mockr 324s r-cran-formattable r-cran-generics r-cran-pkgdown r-cran-zeallot r-cran-mime 324s r-cran-remotes r-cran-renv r-cran-jsonlite r-cran-runit 324s libfile-mimeinfo-perl libnet-dbus-perl libx11-protocol-perl x11-utils 324s x11-xserver-utils 324s The following NEW packages will be installed: 324s autopkgtest-satdep fontconfig fonts-glyphicons-halflings fonts-mathjax 324s libblas3 libcairo2 libdatrie1 libgfortran5 libgomp1 libgraphite2-3 324s libharfbuzz0b libice6 libjs-bootstrap libjs-highlight.js libjs-jquery 324s libjs-jquery-datatables libjs-mathjax liblapack3 libpango-1.0-0 324s libpangocairo-1.0-0 libpangoft2-1.0-0 libpaper-utils libpaper1 libpixman-1-0 324s libsm6 libtcl8.6 libthai-data libthai0 libtk8.6 libxcb-render0 libxcb-shm0 324s libxft2 libxrender1 libxss1 libxt6t64 node-normalize.css r-base-core 324s r-cran-base64enc r-cran-cli r-cran-colorspace r-cran-commonmark 324s r-cran-digest r-cran-evaluate r-cran-fansi r-cran-farver r-cran-ggplot2 324s r-cran-glue r-cran-gtable r-cran-highr r-cran-isoband r-cran-knitr 324s r-cran-labeling r-cran-lattice r-cran-lifecycle r-cran-magrittr 324s r-cran-markdown r-cran-mass r-cran-matrix r-cran-matrixstats r-cran-mgcv 324s r-cran-munsell r-cran-nlme r-cran-pillar r-cran-pkgconfig r-cran-r.cache 324s r-cran-r.devices r-cran-r.methodss3 r-cran-r.oo r-cran-r.rsp r-cran-r.utils 324s r-cran-r6 r-cran-rcolorbrewer r-cran-rlang r-cran-scales r-cran-tibble 324s r-cran-utf8 r-cran-vctrs r-cran-viridislite r-cran-withr r-cran-xfun 324s r-cran-yaml tcl tcl8.6 unzip x11-common xdg-utils zip 324s 0 upgraded, 87 newly installed, 0 to remove and 1 not upgraded. 324s Need to get 80.8 MB/80.8 MB of archives. 324s After this operation, 179 MB of additional disk space will be used. 324s Get:1 /tmp/autopkgtest.FOBwGM/1-autopkgtest-satdep.deb autopkgtest-satdep s390x 0 [760 B] 325s Get:2 http://ftpmaster.internal/ubuntu noble/main s390x fontconfig s390x 2.15.0-1.1ubuntu1 [191 kB] 325s Get:3 http://ftpmaster.internal/ubuntu noble/universe s390x fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 325s Get:4 http://ftpmaster.internal/ubuntu noble/main s390x fonts-mathjax all 2.7.9+dfsg-1 [2208 kB] 327s Get:5 http://ftpmaster.internal/ubuntu noble/main s390x libblas3 s390x 3.12.0-3 [245 kB] 327s Get:6 http://ftpmaster.internal/ubuntu noble/main s390x libpixman-1-0 s390x 0.42.2-1 [173 kB] 327s Get:7 http://ftpmaster.internal/ubuntu noble/main s390x libxcb-render0 s390x 1.15-1 [17.0 kB] 327s Get:8 http://ftpmaster.internal/ubuntu noble/main s390x libxcb-shm0 s390x 1.15-1 [5782 B] 327s Get:9 http://ftpmaster.internal/ubuntu noble/main s390x libxrender1 s390x 1:0.9.10-1.1 [19.4 kB] 327s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcairo2 s390x 1.18.0-1ubuntu1 [589 kB] 327s Get:11 http://ftpmaster.internal/ubuntu noble/main s390x libdatrie1 s390x 0.2.13-3 [22.6 kB] 327s Get:12 http://ftpmaster.internal/ubuntu noble/main s390x libgfortran5 s390x 14-20240315-1ubuntu1 [600 kB] 328s Get:13 http://ftpmaster.internal/ubuntu noble/main s390x libgomp1 s390x 14-20240315-1ubuntu1 [151 kB] 328s Get:14 http://ftpmaster.internal/ubuntu noble/main s390x libgraphite2-3 s390x 1.3.14-2 [90.4 kB] 328s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libharfbuzz0b s390x 8.3.0-2build1 [515 kB] 328s Get:16 http://ftpmaster.internal/ubuntu noble/main s390x x11-common all 1:7.7+23ubuntu2 [23.4 kB] 328s Get:17 http://ftpmaster.internal/ubuntu noble/main s390x libice6 s390x 2:1.0.10-1build2 [40.8 kB] 328s Get:18 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 328s Get:19 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-highlight.js all 9.18.5+dfsg1-2 [385 kB] 328s Get:20 http://ftpmaster.internal/ubuntu noble/main s390x libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 328s Get:21 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-jquery-datatables all 1.11.5+dfsg-2 [146 kB] 328s Get:22 http://ftpmaster.internal/ubuntu noble/main s390x liblapack3 s390x 3.12.0-3 [2979 kB] 329s Get:23 http://ftpmaster.internal/ubuntu noble/main s390x libthai-data all 0.1.29-2 [158 kB] 329s Get:24 http://ftpmaster.internal/ubuntu noble/main s390x libthai0 s390x 0.1.29-2 [20.6 kB] 329s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpango-1.0-0 s390x 1.52.1+ds-1 [242 kB] 329s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpangoft2-1.0-0 s390x 1.52.1+ds-1 [44.2 kB] 329s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpangocairo-1.0-0 s390x 1.52.1+ds-1 [28.7 kB] 329s Get:28 http://ftpmaster.internal/ubuntu noble/main s390x libpaper1 s390x 1.1.29 [13.3 kB] 329s Get:29 http://ftpmaster.internal/ubuntu noble/main s390x libpaper-utils s390x 1.1.29 [8452 B] 329s Get:30 http://ftpmaster.internal/ubuntu noble/main s390x libsm6 s390x 2:1.2.3-1build2 [16.9 kB] 329s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtcl8.6 s390x 8.6.14+dfsg-1 [1037 kB] 329s Get:32 http://ftpmaster.internal/ubuntu noble/main s390x libxft2 s390x 2.3.6-1 [44.3 kB] 329s Get:33 http://ftpmaster.internal/ubuntu noble/main s390x libxss1 s390x 1:1.2.3-1build2 [8192 B] 329s Get:34 http://ftpmaster.internal/ubuntu noble/main s390x libtk8.6 s390x 8.6.14-1 [833 kB] 329s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxt6t64 s390x 1:1.2.1-1.2 [184 kB] 329s Get:36 http://ftpmaster.internal/ubuntu noble/universe s390x node-normalize.css all 8.0.1-5 [10.8 kB] 329s Get:37 http://ftpmaster.internal/ubuntu noble/main s390x zip s390x 3.0-13 [175 kB] 329s Get:38 http://ftpmaster.internal/ubuntu noble/main s390x unzip s390x 6.0-28ubuntu3 [180 kB] 329s Get:39 http://ftpmaster.internal/ubuntu noble/main s390x xdg-utils all 1.1.3-4.1ubuntu3 [62.0 kB] 329s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x r-base-core s390x 4.3.3-2build1 [27.1 MB] 331s Get:41 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-base64enc s390x 0.1-3-3 [28.0 kB] 331s Get:42 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-cli s390x 3.6.2-1 [1382 kB] 331s Get:43 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-colorspace s390x 2.1-0+dfsg-1 [1540 kB] 331s Get:44 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-commonmark s390x 1.9.1-1 [142 kB] 331s Get:45 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-digest s390x 0.6.34-1 [187 kB] 331s Get:46 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-evaluate all 0.23-1 [90.2 kB] 331s Get:47 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-fansi s390x 1.0.5-1 [615 kB] 331s Get:48 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-farver s390x 2.1.1-1 [1347 kB] 331s Get:49 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-glue s390x 1.7.0-1 [154 kB] 331s Get:50 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-rlang s390x 1.1.3-1 [1672 kB] 331s Get:51 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-lifecycle all 1.0.4+dfsg-1 [110 kB] 331s Get:52 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-gtable all 0.3.4+dfsg-1 [191 kB] 331s Get:53 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-isoband s390x 0.2.7-1 [1481 kB] 331s Get:54 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-mass s390x 7.3-60.0.1-1 [1122 kB] 331s Get:55 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-lattice s390x 0.22-5-1 [1341 kB] 331s Get:56 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-nlme s390x 3.1.164-1 [2268 kB] 331s Get:57 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-matrix s390x 1.6-5-1 [3983 kB] 331s Get:58 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-mgcv s390x 1.9-1-1 [3348 kB] 332s Get:59 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-labeling all 0.4.3-1 [62.1 kB] 332s Get:60 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-munsell all 0.5.0-2build1 [208 kB] 332s Get:61 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-r6 all 2.5.1-1 [99.0 kB] 332s Get:62 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-rcolorbrewer all 1.1-3-1build1 [55.4 kB] 332s Get:63 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-viridislite all 0.4.2-2 [1088 kB] 332s Get:64 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-scales all 1.3.0-1 [603 kB] 332s Get:65 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-magrittr s390x 2.0.3-1 [154 kB] 332s Get:66 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-utf8 s390x 1.2.4-1 [143 kB] 332s Get:67 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-vctrs s390x 0.6.5-1 [1448 kB] 332s Get:68 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-pillar all 1.9.0+dfsg-1 [464 kB] 332s Get:69 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-pkgconfig all 2.0.3-2build1 [19.7 kB] 332s Get:70 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-tibble s390x 3.2.1+dfsg-2 [415 kB] 332s Get:71 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x r-cran-withr all 3.0.0+dfsg-1 [228 kB] 332s Get:72 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-ggplot2 all 3.4.4+dfsg-1 [3411 kB] 332s Get:73 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-xfun s390x 0.41+dfsg-1 [415 kB] 332s Get:74 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-highr all 0.10+dfsg-1 [38.3 kB] 332s Get:75 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-yaml s390x 2.3.8-1 [127 kB] 332s Get:76 http://ftpmaster.internal/ubuntu noble/main s390x libjs-mathjax all 2.7.9+dfsg-1 [5665 kB] 332s Get:77 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-knitr all 1.45+dfsg-1 [917 kB] 332s Get:78 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-markdown all 1.12+dfsg-1 [179 kB] 332s Get:79 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-matrixstats s390x 1.2.0-1 [513 kB] 332s Get:80 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-r.methodss3 all 1.8.2-1 [84.0 kB] 332s Get:81 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-r.oo all 1.26.0-1 [955 kB] 332s Get:82 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-r.utils all 2.12.3-1 [1386 kB] 332s Get:83 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-r.cache all 0.16.0-1 [113 kB] 332s Get:84 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-r.devices all 2.17.2+ds-1 [398 kB] 332s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main s390x tcl8.6 s390x 8.6.14+dfsg-1 [14.7 kB] 332s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main s390x tcl s390x 8.6.14 [4016 B] 332s Get:87 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-r.rsp all 0.46.0+ds-1 [1412 kB] 333s Preconfiguring packages ... 333s Fetched 80.8 MB in 8s (10.2 MB/s) 333s Selecting previously unselected package fontconfig. 333s (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 ... 81562 files and directories currently installed.) 333s Preparing to unpack .../00-fontconfig_2.15.0-1.1ubuntu1_s390x.deb ... 333s Unpacking fontconfig (2.15.0-1.1ubuntu1) ... 333s Selecting previously unselected package fonts-glyphicons-halflings. 333s Preparing to unpack .../01-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 333s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 333s Selecting previously unselected package fonts-mathjax. 333s Preparing to unpack .../02-fonts-mathjax_2.7.9+dfsg-1_all.deb ... 333s Unpacking fonts-mathjax (2.7.9+dfsg-1) ... 333s Selecting previously unselected package libblas3:s390x. 333s Preparing to unpack .../03-libblas3_3.12.0-3_s390x.deb ... 333s Unpacking libblas3:s390x (3.12.0-3) ... 333s Selecting previously unselected package libpixman-1-0:s390x. 333s Preparing to unpack .../04-libpixman-1-0_0.42.2-1_s390x.deb ... 333s Unpacking libpixman-1-0:s390x (0.42.2-1) ... 333s Selecting previously unselected package libxcb-render0:s390x. 333s Preparing to unpack .../05-libxcb-render0_1.15-1_s390x.deb ... 333s Unpacking libxcb-render0:s390x (1.15-1) ... 333s Selecting previously unselected package libxcb-shm0:s390x. 333s Preparing to unpack .../06-libxcb-shm0_1.15-1_s390x.deb ... 333s Unpacking libxcb-shm0:s390x (1.15-1) ... 333s Selecting previously unselected package libxrender1:s390x. 333s Preparing to unpack .../07-libxrender1_1%3a0.9.10-1.1_s390x.deb ... 333s Unpacking libxrender1:s390x (1:0.9.10-1.1) ... 333s Selecting previously unselected package libcairo2:s390x. 333s Preparing to unpack .../08-libcairo2_1.18.0-1ubuntu1_s390x.deb ... 333s Unpacking libcairo2:s390x (1.18.0-1ubuntu1) ... 333s Selecting previously unselected package libdatrie1:s390x. 333s Preparing to unpack .../09-libdatrie1_0.2.13-3_s390x.deb ... 333s Unpacking libdatrie1:s390x (0.2.13-3) ... 333s Selecting previously unselected package libgfortran5:s390x. 333s Preparing to unpack .../10-libgfortran5_14-20240315-1ubuntu1_s390x.deb ... 333s Unpacking libgfortran5:s390x (14-20240315-1ubuntu1) ... 333s Selecting previously unselected package libgomp1:s390x. 333s Preparing to unpack .../11-libgomp1_14-20240315-1ubuntu1_s390x.deb ... 333s Unpacking libgomp1:s390x (14-20240315-1ubuntu1) ... 333s Selecting previously unselected package libgraphite2-3:s390x. 333s Preparing to unpack .../12-libgraphite2-3_1.3.14-2_s390x.deb ... 333s Unpacking libgraphite2-3:s390x (1.3.14-2) ... 333s Selecting previously unselected package libharfbuzz0b:s390x. 333s Preparing to unpack .../13-libharfbuzz0b_8.3.0-2build1_s390x.deb ... 333s Unpacking libharfbuzz0b:s390x (8.3.0-2build1) ... 333s Selecting previously unselected package x11-common. 333s Preparing to unpack .../14-x11-common_1%3a7.7+23ubuntu2_all.deb ... 333s Unpacking x11-common (1:7.7+23ubuntu2) ... 333s Selecting previously unselected package libice6:s390x. 333s Preparing to unpack .../15-libice6_2%3a1.0.10-1build2_s390x.deb ... 333s Unpacking libice6:s390x (2:1.0.10-1build2) ... 333s Selecting previously unselected package libjs-bootstrap. 333s Preparing to unpack .../16-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 333s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 333s Selecting previously unselected package libjs-highlight.js. 333s Preparing to unpack .../17-libjs-highlight.js_9.18.5+dfsg1-2_all.deb ... 333s Unpacking libjs-highlight.js (9.18.5+dfsg1-2) ... 333s Selecting previously unselected package libjs-jquery. 333s Preparing to unpack .../18-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 333s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 333s Selecting previously unselected package libjs-jquery-datatables. 333s Preparing to unpack .../19-libjs-jquery-datatables_1.11.5+dfsg-2_all.deb ... 333s Unpacking libjs-jquery-datatables (1.11.5+dfsg-2) ... 333s Selecting previously unselected package liblapack3:s390x. 333s Preparing to unpack .../20-liblapack3_3.12.0-3_s390x.deb ... 333s Unpacking liblapack3:s390x (3.12.0-3) ... 334s Selecting previously unselected package libthai-data. 334s Preparing to unpack .../21-libthai-data_0.1.29-2_all.deb ... 334s Unpacking libthai-data (0.1.29-2) ... 334s Selecting previously unselected package libthai0:s390x. 334s Preparing to unpack .../22-libthai0_0.1.29-2_s390x.deb ... 334s Unpacking libthai0:s390x (0.1.29-2) ... 334s Selecting previously unselected package libpango-1.0-0:s390x. 334s Preparing to unpack .../23-libpango-1.0-0_1.52.1+ds-1_s390x.deb ... 334s Unpacking libpango-1.0-0:s390x (1.52.1+ds-1) ... 334s Selecting previously unselected package libpangoft2-1.0-0:s390x. 334s Preparing to unpack .../24-libpangoft2-1.0-0_1.52.1+ds-1_s390x.deb ... 334s Unpacking libpangoft2-1.0-0:s390x (1.52.1+ds-1) ... 334s Selecting previously unselected package libpangocairo-1.0-0:s390x. 334s Preparing to unpack .../25-libpangocairo-1.0-0_1.52.1+ds-1_s390x.deb ... 334s Unpacking libpangocairo-1.0-0:s390x (1.52.1+ds-1) ... 334s Selecting previously unselected package libpaper1:s390x. 334s Preparing to unpack .../26-libpaper1_1.1.29_s390x.deb ... 334s Unpacking libpaper1:s390x (1.1.29) ... 334s Selecting previously unselected package libpaper-utils. 334s Preparing to unpack .../27-libpaper-utils_1.1.29_s390x.deb ... 334s Unpacking libpaper-utils (1.1.29) ... 334s Selecting previously unselected package libsm6:s390x. 334s Preparing to unpack .../28-libsm6_2%3a1.2.3-1build2_s390x.deb ... 334s Unpacking libsm6:s390x (2:1.2.3-1build2) ... 334s Selecting previously unselected package libtcl8.6:s390x. 334s Preparing to unpack .../29-libtcl8.6_8.6.14+dfsg-1_s390x.deb ... 334s Unpacking libtcl8.6:s390x (8.6.14+dfsg-1) ... 334s Selecting previously unselected package libxft2:s390x. 334s Preparing to unpack .../30-libxft2_2.3.6-1_s390x.deb ... 334s Unpacking libxft2:s390x (2.3.6-1) ... 334s Selecting previously unselected package libxss1:s390x. 334s Preparing to unpack .../31-libxss1_1%3a1.2.3-1build2_s390x.deb ... 334s Unpacking libxss1:s390x (1:1.2.3-1build2) ... 334s Selecting previously unselected package libtk8.6:s390x. 334s Preparing to unpack .../32-libtk8.6_8.6.14-1_s390x.deb ... 334s Unpacking libtk8.6:s390x (8.6.14-1) ... 334s Selecting previously unselected package libxt6t64:s390x. 334s Preparing to unpack .../33-libxt6t64_1%3a1.2.1-1.2_s390x.deb ... 334s Unpacking libxt6t64:s390x (1:1.2.1-1.2) ... 334s Selecting previously unselected package node-normalize.css. 334s Preparing to unpack .../34-node-normalize.css_8.0.1-5_all.deb ... 334s Unpacking node-normalize.css (8.0.1-5) ... 334s Selecting previously unselected package zip. 334s Preparing to unpack .../35-zip_3.0-13_s390x.deb ... 334s Unpacking zip (3.0-13) ... 334s Selecting previously unselected package unzip. 334s Preparing to unpack .../36-unzip_6.0-28ubuntu3_s390x.deb ... 334s Unpacking unzip (6.0-28ubuntu3) ... 334s Selecting previously unselected package xdg-utils. 334s Preparing to unpack .../37-xdg-utils_1.1.3-4.1ubuntu3_all.deb ... 334s Unpacking xdg-utils (1.1.3-4.1ubuntu3) ... 334s Selecting previously unselected package r-base-core. 334s Preparing to unpack .../38-r-base-core_4.3.3-2build1_s390x.deb ... 334s Unpacking r-base-core (4.3.3-2build1) ... 334s Selecting previously unselected package r-cran-base64enc. 334s Preparing to unpack .../39-r-cran-base64enc_0.1-3-3_s390x.deb ... 334s Unpacking r-cran-base64enc (0.1-3-3) ... 334s Selecting previously unselected package r-cran-cli. 334s Preparing to unpack .../40-r-cran-cli_3.6.2-1_s390x.deb ... 334s Unpacking r-cran-cli (3.6.2-1) ... 334s Selecting previously unselected package r-cran-colorspace. 334s Preparing to unpack .../41-r-cran-colorspace_2.1-0+dfsg-1_s390x.deb ... 334s Unpacking r-cran-colorspace (2.1-0+dfsg-1) ... 334s Selecting previously unselected package r-cran-commonmark. 334s Preparing to unpack .../42-r-cran-commonmark_1.9.1-1_s390x.deb ... 334s Unpacking r-cran-commonmark (1.9.1-1) ... 334s Selecting previously unselected package r-cran-digest. 334s Preparing to unpack .../43-r-cran-digest_0.6.34-1_s390x.deb ... 334s Unpacking r-cran-digest (0.6.34-1) ... 334s Selecting previously unselected package r-cran-evaluate. 334s Preparing to unpack .../44-r-cran-evaluate_0.23-1_all.deb ... 334s Unpacking r-cran-evaluate (0.23-1) ... 334s Selecting previously unselected package r-cran-fansi. 334s Preparing to unpack .../45-r-cran-fansi_1.0.5-1_s390x.deb ... 334s Unpacking r-cran-fansi (1.0.5-1) ... 334s Selecting previously unselected package r-cran-farver. 335s Preparing to unpack .../46-r-cran-farver_2.1.1-1_s390x.deb ... 335s Unpacking r-cran-farver (2.1.1-1) ... 335s Selecting previously unselected package r-cran-glue. 335s Preparing to unpack .../47-r-cran-glue_1.7.0-1_s390x.deb ... 335s Unpacking r-cran-glue (1.7.0-1) ... 335s Selecting previously unselected package r-cran-rlang. 335s Preparing to unpack .../48-r-cran-rlang_1.1.3-1_s390x.deb ... 335s Unpacking r-cran-rlang (1.1.3-1) ... 335s Selecting previously unselected package r-cran-lifecycle. 335s Preparing to unpack .../49-r-cran-lifecycle_1.0.4+dfsg-1_all.deb ... 335s Unpacking r-cran-lifecycle (1.0.4+dfsg-1) ... 335s Selecting previously unselected package r-cran-gtable. 335s Preparing to unpack .../50-r-cran-gtable_0.3.4+dfsg-1_all.deb ... 335s Unpacking r-cran-gtable (0.3.4+dfsg-1) ... 335s Selecting previously unselected package r-cran-isoband. 335s Preparing to unpack .../51-r-cran-isoband_0.2.7-1_s390x.deb ... 335s Unpacking r-cran-isoband (0.2.7-1) ... 335s Selecting previously unselected package r-cran-mass. 335s Preparing to unpack .../52-r-cran-mass_7.3-60.0.1-1_s390x.deb ... 335s Unpacking r-cran-mass (7.3-60.0.1-1) ... 335s Selecting previously unselected package r-cran-lattice. 335s Preparing to unpack .../53-r-cran-lattice_0.22-5-1_s390x.deb ... 335s Unpacking r-cran-lattice (0.22-5-1) ... 335s Selecting previously unselected package r-cran-nlme. 335s Preparing to unpack .../54-r-cran-nlme_3.1.164-1_s390x.deb ... 335s Unpacking r-cran-nlme (3.1.164-1) ... 335s Selecting previously unselected package r-cran-matrix. 335s Preparing to unpack .../55-r-cran-matrix_1.6-5-1_s390x.deb ... 335s Unpacking r-cran-matrix (1.6-5-1) ... 335s Selecting previously unselected package r-cran-mgcv. 335s Preparing to unpack .../56-r-cran-mgcv_1.9-1-1_s390x.deb ... 335s Unpacking r-cran-mgcv (1.9-1-1) ... 335s Selecting previously unselected package r-cran-labeling. 335s Preparing to unpack .../57-r-cran-labeling_0.4.3-1_all.deb ... 335s Unpacking r-cran-labeling (0.4.3-1) ... 335s Selecting previously unselected package r-cran-munsell. 335s Preparing to unpack .../58-r-cran-munsell_0.5.0-2build1_all.deb ... 335s Unpacking r-cran-munsell (0.5.0-2build1) ... 335s Selecting previously unselected package r-cran-r6. 335s Preparing to unpack .../59-r-cran-r6_2.5.1-1_all.deb ... 335s Unpacking r-cran-r6 (2.5.1-1) ... 335s Selecting previously unselected package r-cran-rcolorbrewer. 335s Preparing to unpack .../60-r-cran-rcolorbrewer_1.1-3-1build1_all.deb ... 335s Unpacking r-cran-rcolorbrewer (1.1-3-1build1) ... 335s Selecting previously unselected package r-cran-viridislite. 335s Preparing to unpack .../61-r-cran-viridislite_0.4.2-2_all.deb ... 335s Unpacking r-cran-viridislite (0.4.2-2) ... 335s Selecting previously unselected package r-cran-scales. 335s Preparing to unpack .../62-r-cran-scales_1.3.0-1_all.deb ... 335s Unpacking r-cran-scales (1.3.0-1) ... 335s Selecting previously unselected package r-cran-magrittr. 335s Preparing to unpack .../63-r-cran-magrittr_2.0.3-1_s390x.deb ... 335s Unpacking r-cran-magrittr (2.0.3-1) ... 335s Selecting previously unselected package r-cran-utf8. 335s Preparing to unpack .../64-r-cran-utf8_1.2.4-1_s390x.deb ... 335s Unpacking r-cran-utf8 (1.2.4-1) ... 335s Selecting previously unselected package r-cran-vctrs. 335s Preparing to unpack .../65-r-cran-vctrs_0.6.5-1_s390x.deb ... 335s Unpacking r-cran-vctrs (0.6.5-1) ... 335s Selecting previously unselected package r-cran-pillar. 335s Preparing to unpack .../66-r-cran-pillar_1.9.0+dfsg-1_all.deb ... 335s Unpacking r-cran-pillar (1.9.0+dfsg-1) ... 335s Selecting previously unselected package r-cran-pkgconfig. 335s Preparing to unpack .../67-r-cran-pkgconfig_2.0.3-2build1_all.deb ... 335s Unpacking r-cran-pkgconfig (2.0.3-2build1) ... 335s Selecting previously unselected package r-cran-tibble. 335s Preparing to unpack .../68-r-cran-tibble_3.2.1+dfsg-2_s390x.deb ... 335s Unpacking r-cran-tibble (3.2.1+dfsg-2) ... 335s Selecting previously unselected package r-cran-withr. 335s Preparing to unpack .../69-r-cran-withr_3.0.0+dfsg-1_all.deb ... 335s Unpacking r-cran-withr (3.0.0+dfsg-1) ... 335s Selecting previously unselected package r-cran-ggplot2. 335s Preparing to unpack .../70-r-cran-ggplot2_3.4.4+dfsg-1_all.deb ... 335s Unpacking r-cran-ggplot2 (3.4.4+dfsg-1) ... 335s Selecting previously unselected package r-cran-xfun. 335s Preparing to unpack .../71-r-cran-xfun_0.41+dfsg-1_s390x.deb ... 335s Unpacking r-cran-xfun (0.41+dfsg-1) ... 335s Selecting previously unselected package r-cran-highr. 335s Preparing to unpack .../72-r-cran-highr_0.10+dfsg-1_all.deb ... 335s Unpacking r-cran-highr (0.10+dfsg-1) ... 335s Selecting previously unselected package r-cran-yaml. 335s Preparing to unpack .../73-r-cran-yaml_2.3.8-1_s390x.deb ... 335s Unpacking r-cran-yaml (2.3.8-1) ... 335s Selecting previously unselected package libjs-mathjax. 335s Preparing to unpack .../74-libjs-mathjax_2.7.9+dfsg-1_all.deb ... 335s Unpacking libjs-mathjax (2.7.9+dfsg-1) ... 336s Selecting previously unselected package r-cran-knitr. 336s Preparing to unpack .../75-r-cran-knitr_1.45+dfsg-1_all.deb ... 336s Unpacking r-cran-knitr (1.45+dfsg-1) ... 337s Selecting previously unselected package r-cran-markdown. 337s Preparing to unpack .../76-r-cran-markdown_1.12+dfsg-1_all.deb ... 337s Unpacking r-cran-markdown (1.12+dfsg-1) ... 337s Selecting previously unselected package r-cran-matrixstats. 337s Preparing to unpack .../77-r-cran-matrixstats_1.2.0-1_s390x.deb ... 337s Unpacking r-cran-matrixstats (1.2.0-1) ... 337s Selecting previously unselected package r-cran-r.methodss3. 337s Preparing to unpack .../78-r-cran-r.methodss3_1.8.2-1_all.deb ... 337s Unpacking r-cran-r.methodss3 (1.8.2-1) ... 337s Selecting previously unselected package r-cran-r.oo. 337s Preparing to unpack .../79-r-cran-r.oo_1.26.0-1_all.deb ... 337s Unpacking r-cran-r.oo (1.26.0-1) ... 337s Selecting previously unselected package r-cran-r.utils. 337s Preparing to unpack .../80-r-cran-r.utils_2.12.3-1_all.deb ... 337s Unpacking r-cran-r.utils (2.12.3-1) ... 337s Selecting previously unselected package r-cran-r.cache. 337s Preparing to unpack .../81-r-cran-r.cache_0.16.0-1_all.deb ... 337s Unpacking r-cran-r.cache (0.16.0-1) ... 337s Selecting previously unselected package r-cran-r.devices. 337s Preparing to unpack .../82-r-cran-r.devices_2.17.2+ds-1_all.deb ... 337s Unpacking r-cran-r.devices (2.17.2+ds-1) ... 337s Selecting previously unselected package tcl8.6. 337s Preparing to unpack .../83-tcl8.6_8.6.14+dfsg-1_s390x.deb ... 337s Unpacking tcl8.6 (8.6.14+dfsg-1) ... 337s Selecting previously unselected package tcl. 337s Preparing to unpack .../84-tcl_8.6.14_s390x.deb ... 337s Unpacking tcl (8.6.14) ... 337s Selecting previously unselected package r-cran-r.rsp. 337s Preparing to unpack .../85-r-cran-r.rsp_0.46.0+ds-1_all.deb ... 337s Unpacking r-cran-r.rsp (0.46.0+ds-1) ... 337s Selecting previously unselected package autopkgtest-satdep. 337s Preparing to unpack .../86-1-autopkgtest-satdep.deb ... 337s Unpacking autopkgtest-satdep (0) ... 337s Setting up libgraphite2-3:s390x (1.3.14-2) ... 337s Setting up libpixman-1-0:s390x (0.42.2-1) ... 337s Setting up libpaper1:s390x (1.1.29) ... 337s 337s Creating config file /etc/papersize with new version 337s Setting up fontconfig (2.15.0-1.1ubuntu1) ... 339s Regenerating fonts cache... done. 339s Setting up fonts-mathjax (2.7.9+dfsg-1) ... 339s Setting up libjs-mathjax (2.7.9+dfsg-1) ... 339s Setting up libxrender1:s390x (1:0.9.10-1.1) ... 339s Setting up libdatrie1:s390x (0.2.13-3) ... 339s Setting up libxcb-render0:s390x (1.15-1) ... 339s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 339s Setting up unzip (6.0-28ubuntu3) ... 339s Setting up x11-common (1:7.7+23ubuntu2) ... 339s Setting up libxcb-shm0:s390x (1.15-1) ... 339s Setting up libpaper-utils (1.1.29) ... 339s Setting up libgomp1:s390x (14-20240315-1ubuntu1) ... 339s Setting up libcairo2:s390x (1.18.0-1ubuntu1) ... 339s Setting up zip (3.0-13) ... 339s Setting up libblas3:s390x (3.12.0-3) ... 339s update-alternatives: using /usr/lib/s390x-linux-gnu/blas/libblas.so.3 to provide /usr/lib/s390x-linux-gnu/libblas.so.3 (libblas.so.3-s390x-linux-gnu) in auto mode 339s Setting up libtcl8.6:s390x (8.6.14+dfsg-1) ... 339s Setting up libgfortran5:s390x (14-20240315-1ubuntu1) ... 339s Setting up libjs-highlight.js (9.18.5+dfsg1-2) ... 339s Setting up libharfbuzz0b:s390x (8.3.0-2build1) ... 339s Setting up libthai-data (0.1.29-2) ... 339s Setting up libxss1:s390x (1:1.2.3-1build2) ... 339s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 339s Setting up node-normalize.css (8.0.1-5) ... 339s Setting up xdg-utils (1.1.3-4.1ubuntu3) ... 339s update-alternatives: using /usr/bin/xdg-open to provide /usr/bin/open (open) in auto mode 339s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 339s Setting up libice6:s390x (2:1.0.10-1build2) ... 339s Setting up tcl8.6 (8.6.14+dfsg-1) ... 339s Setting up liblapack3:s390x (3.12.0-3) ... 339s update-alternatives: using /usr/lib/s390x-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/s390x-linux-gnu/liblapack.so.3 (liblapack.so.3-s390x-linux-gnu) in auto mode 339s Setting up libxft2:s390x (2.3.6-1) ... 339s Setting up libtk8.6:s390x (8.6.14-1) ... 339s Setting up libjs-jquery-datatables (1.11.5+dfsg-2) ... 339s Setting up libthai0:s390x (0.1.29-2) ... 339s Setting up tcl (8.6.14) ... 339s Setting up libsm6:s390x (2:1.2.3-1build2) ... 339s Setting up libpango-1.0-0:s390x (1.52.1+ds-1) ... 339s Setting up libxt6t64:s390x (1:1.2.1-1.2) ... 339s Setting up libpangoft2-1.0-0:s390x (1.52.1+ds-1) ... 339s Setting up libpangocairo-1.0-0:s390x (1.52.1+ds-1) ... 339s Setting up r-base-core (4.3.3-2build1) ... 340s 340s Creating config file /etc/R/Renviron with new version 340s Setting up r-cran-labeling (0.4.3-1) ... 340s Setting up r-cran-lattice (0.22-5-1) ... 340s Setting up r-cran-nlme (3.1.164-1) ... 340s Setting up r-cran-farver (2.1.1-1) ... 340s Setting up r-cran-viridislite (0.4.2-2) ... 340s Setting up r-cran-commonmark (1.9.1-1) ... 340s Setting up r-cran-r6 (2.5.1-1) ... 340s Setting up r-cran-magrittr (2.0.3-1) ... 340s Setting up r-cran-rlang (1.1.3-1) ... 340s Setting up r-cran-matrixstats (1.2.0-1) ... 340s Setting up r-cran-xfun (0.41+dfsg-1) ... 340s Setting up r-cran-withr (3.0.0+dfsg-1) ... 340s Setting up r-cran-base64enc (0.1-3-3) ... 340s Setting up r-cran-digest (0.6.34-1) ... 340s Setting up r-cran-yaml (2.3.8-1) ... 340s Setting up r-cran-evaluate (0.23-1) ... 340s Setting up r-cran-highr (0.10+dfsg-1) ... 340s Setting up r-cran-fansi (1.0.5-1) ... 340s Setting up r-cran-mass (7.3-60.0.1-1) ... 340s Setting up r-cran-glue (1.7.0-1) ... 340s Setting up r-cran-cli (3.6.2-1) ... 340s Setting up r-cran-lifecycle (1.0.4+dfsg-1) ... 340s Setting up r-cran-r.methodss3 (1.8.2-1) ... 340s Setting up r-cran-pkgconfig (2.0.3-2build1) ... 340s Setting up r-cran-utf8 (1.2.4-1) ... 340s Setting up r-cran-colorspace (2.1-0+dfsg-1) ... 340s Setting up r-cran-markdown (1.12+dfsg-1) ... 340s Setting up r-cran-rcolorbrewer (1.1-3-1build1) ... 340s Setting up r-cran-isoband (0.2.7-1) ... 340s Setting up r-cran-gtable (0.3.4+dfsg-1) ... 340s Setting up r-cran-matrix (1.6-5-1) ... 340s Setting up r-cran-knitr (1.45+dfsg-1) ... 340s Setting up r-cran-mgcv (1.9-1-1) ... 340s Setting up r-cran-vctrs (0.6.5-1) ... 340s Setting up r-cran-pillar (1.9.0+dfsg-1) ... 340s Setting up r-cran-munsell (0.5.0-2build1) ... 340s Setting up r-cran-tibble (3.2.1+dfsg-2) ... 340s Setting up r-cran-r.oo (1.26.0-1) ... 340s Setting up r-cran-scales (1.3.0-1) ... 340s Setting up r-cran-r.utils (2.12.3-1) ... 340s Setting up r-cran-ggplot2 (3.4.4+dfsg-1) ... 340s Setting up r-cran-r.devices (2.17.2+ds-1) ... 340s Setting up r-cran-r.cache (0.16.0-1) ... 340s Setting up r-cran-r.rsp (0.46.0+ds-1) ... 340s Setting up autopkgtest-satdep (0) ... 340s Processing triggers for man-db (2.12.0-3build4) ... 340s Processing triggers for install-info (7.1-3build1) ... 340s Processing triggers for libc-bin (2.39-0ubuntu6) ... 345s (Reading database ... 92407 files and directories currently installed.) 345s Removing autopkgtest-satdep (0) ... 345s autopkgtest [00:53:51]: test run-unit-test: [----------------------- 345s 345s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 345s Copyright (C) 2024 The R Foundation for Statistical Computing 345s Platform: s390x-ibm-linux-gnu (64-bit) 345s 345s R is free software and comes with ABSOLUTELY NO WARRANTY. 345s You are welcome to redistribute it under certain conditions. 345s Type 'license()' or 'licence()' for distribution details. 345s 345s R is a collaborative project with many contributors. 345s Type 'contributors()' for more information and 345s 'citation()' on how to cite R or R packages in publications. 345s 345s Type 'demo()' for some demos, 'help()' for on-line help, or 345s 'help.start()' for an HTML browser interface to help. 345s Type 'q()' to quit R. 345s 345s > library("matrixStats") 345s > 345s > allocArray_R <- function(nrow, ncol, value = NA) { 345s + array(data = value, dim = dim) 345s + } 345s > 345s > values <- list( 345s + -1L, 0L, +1L, NA_integer_, .Machine$integer.max, 345s + -1, 0, +1, NA_real_, NaN, -Inf, +Inf, 345s + .Machine$double.xmin, .Machine$double.xmax, 345s + .Machine$double.eps, .Machine$double.neg.eps, 345s + FALSE, TRUE, NA 345s + ) 345s > 345s > dim <- c(2L, 4L, 3L) 345s > for (value in values) { 345s + x0 <- allocArray_R(dim, value = value) 345s + x <- allocArray(dim, value = value) 345s + if (!identical(x, x0)) { 345s + str(list(dim = dim, value = value, x = x, x0 = x0)) 345s + stopifnot(identical(x, x0)) 345s + } 345s + } 346s > 346s 346s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 346s Copyright (C) 2024 The R Foundation for Statistical Computing 346s Platform: s390x-ibm-linux-gnu (64-bit) 346s 346s R is free software and comes with ABSOLUTELY NO WARRANTY. 346s You are welcome to redistribute it under certain conditions. 346s Type 'license()' or 'licence()' for distribution details. 346s 346s R is a collaborative project with many contributors. 346s Type 'contributors()' for more information and 346s 'citation()' on how to cite R or R packages in publications. 346s 346s Type 'demo()' for some demos, 'help()' for on-line help, or 346s 'help.start()' for an HTML browser interface to help. 346s Type 'q()' to quit R. 346s 346s > library("matrixStats") 346s > 346s > allocMatrix_R <- function(nrow, ncol, value = NA) { 346s + matrix(data = value, nrow = nrow, ncol = ncol) 346s + } 346s > 346s > values <- list( 346s + -1L, 0L, +1L, NA_integer_, .Machine$integer.max, 346s + -1, 0, +1, NA_real_, NaN, -Inf, +Inf, 346s + .Machine$double.xmin, .Machine$double.xmax, 346s + .Machine$double.eps, .Machine$double.neg.eps, 346s + FALSE, TRUE, NA 346s + ) 346s > 346s > nrow <- 2L 346s > ncol <- 3L 346s > for (value in values) { 346s + x0 <- allocMatrix_R(nrow, ncol, value = value) 346s + x <- allocMatrix(nrow, ncol, value = value) 346s + if (!identical(x, x0)) { 346s + str(list(nrow = nrow, ncol = ncol, value = value, x = x, x0 = x0)) 346s + stopifnot(identical(x, x0)) 346s + } 346s + } 346s > 346s 346s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 346s Copyright (C) 2024 The R Foundation for Statistical Computing 346s Platform: s390x-ibm-linux-gnu (64-bit) 346s 346s R is free software and comes with ABSOLUTELY NO WARRANTY. 346s You are welcome to redistribute it under certain conditions. 346s Type 'license()' or 'licence()' for distribution details. 346s 346s R is a collaborative project with many contributors. 346s Type 'contributors()' for more information and 346s 'citation()' on how to cite R or R packages in publications. 346s 346s Type 'demo()' for some demos, 'help()' for on-line help, or 346s 'help.start()' for an HTML browser interface to help. 346s Type 'q()' to quit R. 346s 346s > library("matrixStats") 346s > 346s > allocVector_R <- function(length, value = NA) { 346s + x <- vector(mode = typeof(value), length = length) 346s + if (!is.finite(value) || value != 0) x[] <- value 346s + x 346s + } 346s > 346s > values <- list( 346s + -1L, 0L, +1L, NA_integer_, .Machine$integer.max, 346s + -1, 0, +1, NA_real_, NaN, -Inf, +Inf, 346s + .Machine$double.xmin, .Machine$double.xmax, 346s + .Machine$double.eps, .Machine$double.neg.eps, 346s + FALSE, TRUE, NA 346s + ) 346s > 346s > n <- 10L 346s > for (value in values) { 346s + x0 <- allocVector_R(n, value = value) 346s + x <- allocVector(n, value = value) 346s + if (!identical(x, x0)) { 346s + str(list(n = n, value = value, x = x, x0 = x0)) 346s + stopifnot(identical(x, x0)) 346s + } 346s + } 346s > 346s 346s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 346s Copyright (C) 2024 The R Foundation for Statistical Computing 346s Platform: s390x-ibm-linux-gnu (64-bit) 346s 346s R is free software and comes with ABSOLUTELY NO WARRANTY. 346s You are welcome to redistribute it under certain conditions. 346s Type 'license()' or 'licence()' for distribution details. 346s 346s R is a collaborative project with many contributors. 346s Type 'contributors()' for more information and 346s 'citation()' on how to cite R or R packages in publications. 346s 346s Type 'demo()' for some demos, 'help()' for on-line help, or 346s 'help.start()' for an HTML browser interface to help. 346s Type 'q()' to quit R. 346s 346s > library("matrixStats") 346s > 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > # Setup 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > data <- data.frame( 346s + logical = c(TRUE, FALSE, TRUE), 346s + integer = 1:3, 346s + double = seq(from = 1.0, to = 3.0, by = 1.0), 346s + complex = seq(from = 1.0, to = 3.0, by = 1.0) + 1.0i, 346s + character = letters[1:3], 346s + stringsAsFactors = FALSE 346s + ) 346s > 346s > modes <- names(data) 346s > 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > # Special cases 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > cat("NULL...\n") 346s NULL... 346s > stopifnot(identical(anyMissing(NULL), FALSE)) 346s > cat("NULL...done\n") 346s NULL...done 346s > 346s > cat("raw...\n") 346s raw... 346s > stopifnot(identical(anyMissing(as.raw(0:2)), FALSE)) 346s > cat("raw...done\n") 346s raw...done 346s > 346s > cat("list(NULL)...\n") 346s list(NULL)... 346s > stopifnot(identical(anyMissing(list(NULL)), FALSE)) 346s > cat("list(NULL)...done\n") 346s list(NULL)...done 346s > 346s > 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > # Scalars, vectors, and matrices of various modes 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > for (mode in modes) { 346s + cat(sprintf("Mode: %s...\n", mode)) 346s + values <- data[[mode]] 346s + 346s + # Scalars 346s + cat(" scalar\n") 346s + x <- values[1L] 346s + print(x) 346s + stopifnot(identical(anyMissing(x), FALSE)) 346s + is.na(x) <- TRUE 346s + print(x) 346s + stopifnot(identical(anyMissing(x), TRUE)) 346s + 346s + # Vectors 346s + cat(" vector\n") 346s + x <- values 346s + print(x) 346s + stopifnot(identical(anyMissing(x), FALSE)) 346s + is.na(x)[2L] <- TRUE 346s + print(x) 346s + stopifnot(identical(anyMissing(x), TRUE)) 346s + 346s + # Matrices 346s + cat(" matrix\n") 346s + x <- matrix(c(values, values), ncol = 2L) 346s + print(x) 346s + stopifnot(identical(anyMissing(x), FALSE)) 346s + is.na(x)[2L] <- TRUE 346s + print(x) 346s + stopifnot(identical(anyMissing(x), TRUE)) 346s + 346s + cat(sprintf("Mode: %s...done\n", mode)) 346s + } # for (mode ...) 346s Mode: logical... 346s scalar 346s [1] TRUE 346s [1] NA 346s vector 346s [1] TRUE FALSE TRUE 346s [1] TRUE NA TRUE 346s matrix 346s [,1] [,2] 346s [1,] TRUE TRUE 346s [2,] FALSE FALSE 346s [3,] TRUE TRUE 346s [,1] [,2] 346s [1,] TRUE TRUE 346s [2,] NA FALSE 346s [3,] TRUE TRUE 346s Mode: logical...done 346s Mode: integer... 346s scalar 346s [1] 1 346s [1] NA 346s vector 346s [1] 1 2 3 346s [1] 1 NA 3 346s matrix 346s [,1] [,2] 346s [1,] 1 1 346s [2,] 2 2 346s [3,] 3 3 346s [,1] [,2] 346s [1,] 1 1 346s [2,] NA 2 346s [3,] 3 3 346s Mode: integer...done 346s Mode: double... 346s scalar 346s [1] 1 346s [1] NA 346s vector 346s [1] 1 2 3 346s [1] 1 NA 3 346s matrix 346s [,1] [,2] 346s [1,] 1 1 346s [2,] 2 2 346s [3,] 3 3 346s [,1] [,2] 346s [1,] 1 1 346s [2,] NA 2 346s [3,] 3 3 346s Mode: double...done 346s Mode: complex... 346s scalar 346s [1] 1+1i 346s [1] NA 346s vector 346s [1] 1+1i 2+1i 3+1i 346s [1] 1+1i NA 3+1i 346s matrix 346s [,1] [,2] 346s [1,] 1+1i 1+1i 346s [2,] 2+1i 2+1i 346s [3,] 3+1i 3+1i 346s [,1] [,2] 346s [1,] 1+1i 1+1i 346s [2,] NA 2+1i 346s [3,] 3+1i 3+1i 346s Mode: complex...done 346s Mode: character... 346s scalar 346s [1] "a" 346s [1] NA 346s vector 346s [1] "a" "b" "c" 346s [1] "a" NA "c" 346s matrix 346s [,1] [,2] 346s [1,] "a" "a" 346s [2,] "b" "b" 346s [3,] "c" "c" 346s [,1] [,2] 346s [1,] "a" "a" 346s [2,] NA "b" 346s [3,] "c" "c" 346s Mode: character...done 346s > 346s > 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > # Data frames 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > cat("data.frame...\n") 346s data.frame... 346s > x <- data 346s > stopifnot(identical(anyMissing(x), FALSE)) 346s > for (mode in modes) { 346s + x <- data 346s + is.na(x[[mode]])[2L] <- TRUE 346s + print(x) 346s + stopifnot(identical(anyMissing(x), TRUE)) 346s + } # for (mode ...) 346s logical integer double complex character 346s 1 TRUE 1 1 1+1i a 346s 2 NA 2 2 2+1i b 346s 3 TRUE 3 3 3+1i c 346s logical integer double complex character 346s 1 TRUE 1 1 1+1i a 346s 2 FALSE NA 2 2+1i b 346s 3 TRUE 3 3 3+1i c 346s logical integer double complex character 346s 1 TRUE 1 1 1+1i a 346s 2 FALSE 2 NA 2+1i b 346s 3 TRUE 3 3 3+1i c 346s logical integer double complex character 346s 1 TRUE 1 1 1+1i a 346s 2 FALSE 2 2 NA b 346s 3 TRUE 3 3 3+1i c 346s logical integer double complex character 346s 1 TRUE 1 1 1+1i a 346s 2 FALSE 2 2 2+1i 346s 3 TRUE 3 3 3+1i c 346s > cat("data.frame...done\n") 346s data.frame...done 346s > 346s > 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > # Lists 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > cat("list...\n") 346s list... 346s > x <- as.list(data) 346s > stopifnot(identical(anyMissing(x), FALSE)) 346s > for (mode in modes) { 346s + x <- as.list(data) 346s + is.na(x[[mode]])[2L] <- TRUE 346s + print(x) 346s + stopifnot(identical(anyMissing(x), TRUE)) 346s + } # for (mode ...) 346s $logical 346s [1] TRUE NA TRUE 346s 346s $integer 346s [1] 1 2 3 346s 346s $double 346s [1] 1 2 3 346s 346s $complex 346s [1] 1+1i 2+1i 3+1i 346s 346s $character 346s [1] "a" "b" "c" 346s 346s $logical 346s [1] TRUE FALSE TRUE 346s 346s $integer 346s [1] 1 NA 3 346s 346s $double 346s [1] 1 2 3 346s 346s $complex 346s [1] 1+1i 2+1i 3+1i 346s 346s $character 346s [1] "a" "b" "c" 346s 346s $logical 346s [1] TRUE FALSE TRUE 346s 346s $integer 346s [1] 1 2 3 346s 346s $double 346s [1] 1 NA 3 346s 346s $complex 346s [1] 1+1i 2+1i 3+1i 346s 346s $character 346s [1] "a" "b" "c" 346s 346s $logical 346s [1] TRUE FALSE TRUE 346s 346s $integer 346s [1] 1 2 3 346s 346s $double 346s [1] 1 2 3 346s 346s $complex 346s [1] 1+1i NA 3+1i 346s 346s $character 346s [1] "a" "b" "c" 346s 346s $logical 346s [1] TRUE FALSE TRUE 346s 346s $integer 346s [1] 1 2 3 346s 346s $double 346s [1] 1 2 3 346s 346s $complex 346s [1] 1+1i 2+1i 3+1i 346s 346s $character 346s [1] "a" NA "c" 346s 346s > cat("list...done\n") 346s list...done 346s > 346s 346s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 346s Copyright (C) 2024 The R Foundation for Statistical Computing 346s Platform: s390x-ibm-linux-gnu (64-bit) 346s 346s R is free software and comes with ABSOLUTELY NO WARRANTY. 346s You are welcome to redistribute it under certain conditions. 346s Type 'license()' or 'licence()' for distribution details. 346s 346s R is a collaborative project with many contributors. 346s Type 'contributors()' for more information and 346s 'citation()' on how to cite R or R packages in publications. 346s 346s Type 'demo()' for some demos, 'help()' for on-line help, or 346s 'help.start()' for an HTML browser interface to help. 346s Type 'q()' to quit R. 346s 346s > library("matrixStats") 346s > 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > # Subsetted tests 346s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 346s > source("utils/validateIndicesFramework.R") 346s > x <- runif(4, min = -3, max = 3) 346s > x[2] <- NA 346s > for (mode in c("integer", "numeric")) { 346s + storage.mode(x) <- mode 346s + for (idxs in index_cases) { 346s + validateIndicesTestVector(x, idxs, 346s + ftest = anyMissing, fsure = function(x, ...) { 346s + anyValue(x, value = NA) 346s + }) 346s + } 346s + } 346s > 347s 347s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 347s Copyright (C) 2024 The R Foundation for Statistical Computing 347s Platform: s390x-ibm-linux-gnu (64-bit) 347s 347s R is free software and comes with ABSOLUTELY NO WARRANTY. 347s You are welcome to redistribute it under certain conditions. 347s Type 'license()' or 'licence()' for distribution details. 347s 347s R is a collaborative project with many contributors. 347s Type 'contributors()' for more information and 347s 'citation()' on how to cite R or R packages in publications. 347s 347s Type 'demo()' for some demos, 'help()' for on-line help, or 347s 'help.start()' for an HTML browser interface to help. 347s Type 'q()' to quit R. 347s 347s > ## 1. Don't test with valgrind 347s > ## 2. Test only R (>= 3.0.2) because of that's what knitr requires 347s > if (getRversion() >= "3.0.2" && Sys.getenv("_R_CHECK_USE_VALGRIND_") == "") { 347s + 347s + ## 3. Make sure all suggested packages are installed / can be loaded 347s Loading required namespace: base64enc 347s + pkgs <- c("base64enc", "ggplot2", "knitr", "markdown", "microbenchmark", 347s + "R.devices", "R.rsp") 347s + if (all(unlist(lapply(pkgs, FUN = requireNamespace)))) { 347s + html <- matrixStats:::benchmark("binCounts") 347s + print(html) 347s + } 347s + 347s + rm(list = "pkgs") 347s + 347s + } 347s Loading required namespace: ggplot2 347s Loading required namespace: knitr 347s Loading required namespace: markdown 347s Loading required namespace: microbenchmark 347s Failed with error: ‘there is no package called ‘microbenchmark’’ 347s Loading required namespace: R.devices 347s Loading required namespace: R.rsp 347s > 347s 347s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 347s Copyright (C) 2024 The R Foundation for Statistical Computing 347s Platform: s390x-ibm-linux-gnu (64-bit) 347s 347s R is free software and comes with ABSOLUTELY NO WARRANTY. 347s You are welcome to redistribute it under certain conditions. 347s Type 'license()' or 'licence()' for distribution details. 347s 347s R is a collaborative project with many contributors. 347s Type 'contributors()' for more information and 347s 'citation()' on how to cite R or R packages in publications. 347s 347s Type 'demo()' for some demos, 'help()' for on-line help, or 347s 'help.start()' for an HTML browser interface to help. 347s Type 'q()' to quit R. 347s 347s > library("matrixStats") 347s > library("stats") 347s > 347s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 347s > # Local functions 347s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 347s > binCounts_hist <- function(x, bx, right = FALSE, ...) { 347s + n0 <- graphics::hist(x, breaks = bx, right = right, 347s + include.lowest = TRUE, plot = FALSE)$counts 347s + } 347s > 347s > 347s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 347s > # Non-sorted and sorted positions 347s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 347s > nx <- 1000L # Number of data points 347s > nb <- 200L # Number of bins 347s > 347s > # Uniformely distributed bins 347s > bx <- seq(from = 0, to = 1, length.out = nb + 1L) 347s > bx <- c(-1, bx, 2) 347s > 347s > # Sample data points 347s > set.seed(0xBEEF) 347s > x <- runif(nx, min = 0, max = 1) 347s > 347s > for (kk in 1:2) { 347s + n0 <- binCounts_hist(x, bx = bx) 347s + n1 <- binCounts(x, bx = bx) 347s + # Sanity check 347s + stopifnot(identical(n1, n0)) 347s + 347s + # Check reversed 347s + n1r <- rev(binCounts(-x, bx = rev(-bx), right = TRUE)) 347s + stopifnot(identical(n1r, n1)) 347s + 347s + # Retry with a sorted vector 347s + x <- sort(x) 347s + } # for (kk in 1:2) 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Missing values 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > x <- 1:40 348s > x[20] <- NA_integer_ 348s > nx <- length(x) 348s > 348s > # Bins 348s > bx <- c(0.5, 50.5, 100.5, 150.5, 200.5) 348s > 348s > y_smooth0 <- binCounts_hist(x, bx = bx) 348s > y_smooth <- binCounts(x, bx = bx) 348s > # Sanity check 348s > stopifnot(all.equal(y_smooth, y_smooth0)) 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Border cases 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > x <- 1:10 348s > bx <- min(x) - c(10, 1) 348s > y_smooth <- binCounts(x, bx = bx) 348s > stopifnot(all.equal(y_smooth, 0L)) 348s > bx <- range(x) 348s > y_smooth <- binCounts(x, bx = bx) 348s > stopifnot(all.equal(y_smooth, length(x) - 1L)) 348s > bx <- max(x) + c(1, 10) 348s > y_smooth <- binCounts(x, bx = bx) 348s > stopifnot(all.equal(y_smooth, 0L)) 348s > 348s > # Every second empty 348s > x <- 1:10 348s > bx <- rep(x, each = 2L) 348s > y_smooth <- binCounts(x, bx = bx) 348s > stopifnot(all.equal(y_smooth, rep(c(0L, 1L), length.out = length(bx) - 1L))) 348s > ## NOTE: binCounts_hist() does not give the same last bin count 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Exception handling 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Zero bin bounderies (invalid bin definition) 348s > bx <- double(0L) 348s > res <- try(y_smooth <- binCounts(1:10, bx = bx), silent = TRUE) 348s > stopifnot(inherits(res, "try-error")) 348s > 348s > # One bin boundery (invalid bin definition) 348s > bx <- double(1L) 348s > res <- try(y_smooth <- binCounts(1:10, bx = bx), silent = TRUE) 348s > stopifnot(inherits(res, "try-error")) 348s > 348s 348s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 348s Copyright (C) 2024 The R Foundation for Statistical Computing 348s Platform: s390x-ibm-linux-gnu (64-bit) 348s 348s R is free software and comes with ABSOLUTELY NO WARRANTY. 348s You are welcome to redistribute it under certain conditions. 348s Type 'license()' or 'licence()' for distribution details. 348s 348s R is a collaborative project with many contributors. 348s Type 'contributors()' for more information and 348s 'citation()' on how to cite R or R packages in publications. 348s 348s Type 'demo()' for some demos, 'help()' for on-line help, or 348s 'help.start()' for an HTML browser interface to help. 348s Type 'q()' to quit R. 348s 348s > library("matrixStats") 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Local functions 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > binCounts_hist <- function(x, bx, right = FALSE, ...) { 348s + n0 <- graphics::hist(x, breaks = bx, right = right, 348s + include.lowest = TRUE, plot = FALSE)$counts 348s + } 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Subsetted tests 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > source("utils/validateIndicesFramework.R") 348s > x <- runif(6, min = -6, max = 6) 348s > storage.mode(x) <- "integer" 348s > bx <- c(-6, 0, 3, 4, 10) 348s > for (idxs in index_cases) { 348s + validateIndicesTestVector(x, idxs, 348s + ftest = binCounts, fsure = binCounts_hist, 348s + bx = bx, right = FALSE) 348s + validateIndicesTestVector(x, idxs, 348s + ftest = binCounts, fsure = binCounts_hist, 348s + bx = bx, right = TRUE) 348s + } 348s > 348s 348s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 348s Copyright (C) 2024 The R Foundation for Statistical Computing 348s Platform: s390x-ibm-linux-gnu (64-bit) 348s 348s R is free software and comes with ABSOLUTELY NO WARRANTY. 348s You are welcome to redistribute it under certain conditions. 348s Type 'license()' or 'licence()' for distribution details. 348s 348s R is a collaborative project with many contributors. 348s Type 'contributors()' for more information and 348s 'citation()' on how to cite R or R packages in publications. 348s 348s Type 'demo()' for some demos, 'help()' for on-line help, or 348s 'help.start()' for an HTML browser interface to help. 348s Type 'q()' to quit R. 348s 348s > library("matrixStats") 348s > library("stats") 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Naive R implementation of binMeans() 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > binMeans0 <- function(y, x, bx, na.rm = TRUE, count = TRUE, right = FALSE) { 348s + n_smooth <- length(bx) - 1L 348s + res <- double(n_smooth) 348s + counts <- rep(NaN, times = n_smooth) 348s + 348s + if (na.rm) { 348s + keep <- !is.na(x) & !is.na(y) 348s + x <- x[keep] 348s + y <- y[keep] 348s + } 348s + 348s + # For each bin... 348s + for (kk in seq_len(n_smooth)) { 348s + if (right) { 348s + idxs <- which(bx[kk] < x & x <= bx[kk + 1L]) 348s + } else { 348s + idxs <- which(bx[kk] <= x & x < bx[kk + 1L]) 348s + } 348s + y_kk <- y[idxs] 348s + res[kk] <- mean(y_kk) 348s + counts[kk] <- length(idxs) 348s + } # for (kk ...) 348s + 348s + if (count) attr(res, "count") <- counts 348s + res 348s + } 348s > 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Case #1 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > x <- 1:100 348s > nx <- length(x) 348s > y <- double(nx) 348s > y[1:25] <- 5 348s > y[51:75] <- -5 348s > y <- y + rnorm(nx) 348s > 348s > # Bins 348s > bx <- c(0.5, 25.5, 50.5, 75.5, 100.5) 348s > 348s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 348s > y_smooth <- binMeans(y, x = x, bx = bx) 348s > n_smooth <- binCounts(x, bx = bx) 348s > # Sanity check 348s > stopifnot(all.equal(y_smooth, y_smooth0)) 348s > stopifnot(all.equal(attr(y_smooth, "count"), n_smooth)) 348s > 348s > y_smooth0r <- rev(binMeans0(y, x = -x, bx = rev(-bx), 348s + count = FALSE, right = TRUE)) 348s > y_smoothr <- rev(binMeans(y, x = -x, bx = rev(-bx), 348s + count = FALSE, right = TRUE)) 348s > # Sanity check 348s > stopifnot(all.equal(y_smooth0r, y_smooth0, check.attributes = FALSE)) 348s > stopifnot(all.equal(y_smoothr, y_smooth0r)) 348s > 348s > 348s > # Integer input 348s > y <- as.integer(y) 348s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 348s > y_smooth <- binMeans(y, x = x, bx = bx) 348s > n_smooth <- binCounts(x, bx = bx) 348s > # Sanity check 348s > stopifnot(is.integer(y), 348s + all.equal(y_smooth, y_smooth0), 348s + all.equal(attr(y_smooth, "count"), n_smooth)) 348s > 348s > # Logical input 348s > y <- as.logical(y) 348s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 348s > y_smooth <- binMeans(y, x = x, bx = bx) 348s > n_smooth <- binCounts(x, bx = bx) 348s > # Sanity check 348s > stopifnot(is.logical(y), 348s + all.equal(y_smooth, y_smooth0), 348s + all.equal(attr(y_smooth, "count"), n_smooth)) 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Case #2 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > nx <- 1e3 348s > x <- runif(nx) 348s > y <- runif(nx) 348s > 348s > nb <- 10 348s > bx <- do.call(seq, c(as.list(range(x)), length.out = nb)) 348s > bx1 <- c(bx[-1], bx[nb] + 1) 348s > 348s > y_smooth0 <- binMeans0(y, x = x, bx = bx1) 348s > y_smooth <- binMeans(y, x = x, bx = bx1) 348s > n_smooth <- binCounts(x, bx = bx1) 348s > y_smoothr <- rev(binMeans(y, x = -x, bx = rev(-bx1), right = TRUE)) 348s > 348s > # Sanity check 348s > stopifnot(all.equal(y_smooth, y_smooth0)) 348s > stopifnot(all.equal(attr(y_smooth, "count"), n_smooth)) 348s > stopifnot(all.equal(y_smoothr, y_smooth, check.attributes = FALSE)) 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Empty bins 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > x <- c(6:8, 16:19) 348s > nx <- length(x) 348s > y <- runif(nx) 348s > bx <- c(0, 5, 10, 15, 20, 25) 348s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 348s > y_smooth <- binMeans(y, x = x, bx = bx) 348s > n_smooth <- binCounts(x, bx = bx) 348s > stopifnot(all.equal(attr(y_smooth, "count"), n_smooth)) 348s > stopifnot(all.equal(y_smooth, y_smooth0)) 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Missing values 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > x <- 1:100 348s > x[50] <- NA_integer_ 348s > nx <- length(x) 348s > y <- double(nx) 348s > y[1:25] <- 5 348s > y[51:75] <- -5 348s > y[82:92] <- NA_real_ 348s > y <- y + rnorm(nx) 348s > 348s > # Bins 348s > bx <- c(0.5, 25.5, 75.5, 82.5, 100.5) 348s > 348s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 348s > y_smooth <- binMeans(y, x = x, bx = bx) 348s > # Sanity check 348s > stopifnot(all.equal(y_smooth, y_smooth0)) 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Exception handling 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Zero bin bounderies (invalid bin definition) 348s > bx <- double(0L) 348s > res <- try(y_smooth <- binMeans(x = 1:5, y = 1:5, bx = bx), silent = TRUE) 348s > stopifnot(inherits(res, "try-error")) 348s > 348s > # One bin boundery (invalid bin definition) 348s > bx <- double(1L) 348s > res <- try(y_smooth <- binMeans(x = 1:5, y = 1:5, bx = bx), silent = TRUE) 348s > stopifnot(inherits(res, "try-error")) 348s > 348s 348s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 348s Copyright (C) 2024 The R Foundation for Statistical Computing 348s Platform: s390x-ibm-linux-gnu (64-bit) 348s 348s R is free software and comes with ABSOLUTELY NO WARRANTY. 348s You are welcome to redistribute it under certain conditions. 348s Type 'license()' or 'licence()' for distribution details. 348s 348s R is a collaborative project with many contributors. 348s Type 'contributors()' for more information and 348s 'citation()' on how to cite R or R packages in publications. 348s 348s Type 'demo()' for some demos, 'help()' for on-line help, or 348s 'help.start()' for an HTML browser interface to help. 348s Type 'q()' to quit R. 348s 348s > library("matrixStats") 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Naive R implementation of binMeans() 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > binMeans0 <- function(y, x, bx, na.rm = TRUE, count = TRUE, right = FALSE) { 348s + n_smooth <- length(bx) - 1L 348s + res <- double(n_smooth) 348s + counts <- rep(NaN, times = n_smooth) 348s + 348s + if (na.rm) { 348s + keep <- !is.na(x) & !is.na(y) 348s + x <- x[keep] 348s + y <- y[keep] 348s + } 348s + 348s + # For each bin... 348s + for (kk in seq_len(n_smooth)) { 348s + if (right) { 348s + idxs <- which(bx[kk] < x & x <= bx[kk + 1L]) 348s + } else { 348s + idxs <- which(bx[kk] <= x & x < bx[kk + 1L]) 348s + } 348s + y_kk <- y[idxs] 348s + res[kk] <- mean(y_kk) 348s + counts[kk] <- length(idxs) 348s + } # for (kk ...) 348s + 348s + if (count) attr(res, "count") <- counts 348s + res 348s + } 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Subsetted tests 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > source("utils/validateIndicesFramework.R") 348s > y <- runif(6, min = -6, max = 6) 348s > x <- runif(6, min = -6, max = 6) 348s > storage.mode(x) <- "integer" 348s > bx <- c(-6, 0, 3, 4, 10) 348s > for (idxs in index_cases) { 348s + for (na.rm in c(TRUE, FALSE)) { 348s + validateIndicesTestVector_w(y, x, idxs, 348s + ftest = binMeans, fsure = binMeans0, 348s + bx = bx, na.rm = na.rm, 348s + count = TRUE, right = FALSE) 348s + validateIndicesTestVector_w(y, x, idxs, 348s + ftest = binMeans, fsure = binMeans0, 348s + bx = bx, na.rm = na.rm, 348s + count = TRUE, right = TRUE) 348s + } 348s + } 348s > 348s 348s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 348s Copyright (C) 2024 The R Foundation for Statistical Computing 348s Platform: s390x-ibm-linux-gnu (64-bit) 348s 348s R is free software and comes with ABSOLUTELY NO WARRANTY. 348s You are welcome to redistribute it under certain conditions. 348s Type 'license()' or 'licence()' for distribution details. 348s 348s R is a collaborative project with many contributors. 348s Type 'contributors()' for more information and 348s 'citation()' on how to cite R or R packages in publications. 348s 348s Type 'demo()' for some demos, 'help()' for on-line help, or 348s 'help.start()' for an HTML browser interface to help. 348s Type 'q()' to quit R. 348s 348s > library("matrixStats") 348s > 348s > count_R <- function(x, value = TRUE, na.rm = FALSE, ...) { 348s + if (is.na(value)) { 348s + counts <- sum(is.na(x)) 348s + } else { 348s + counts <- sum(x == value, na.rm = na.rm) 348s + } 348s + as.integer(counts) 348s + } 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Data type: integer and numeric 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > for (mode in c("integer", "double")) { 348s + x <- runif(20 * 5, min = -3, max = 3) 348s + x[sample.int(length(x), size = 7)] <- 0 348s + storage.mode(x) <- mode 348s + 348s + for (na.rm in c(FALSE, TRUE)) { 348s + # Count zeros 348s + n0 <- count_R(x, value = 0, na.rm = na.rm) 348s + n1 <- count(x, value = 0, na.rm = na.rm) 348s + stopifnot(identical(n1, n0)) 348s + all <- allValue(x, value = 0, na.rm = na.rm) 348s + any <- anyValue(x, value = 0, na.rm = na.rm) 348s + 348s + # Count NAs 348s + n0 <- count_R(x, value = NA, na.rm = na.rm) 348s + n1 <- count(x, value = NA, na.rm = na.rm) 348s + stopifnot(identical(n1, n0)) 348s + all <- allValue(x, value = NA, na.rm = na.rm) 348s + any <- anyValue(x, value = NA, na.rm = na.rm) 348s + 348s + if (mode == "integer") { 348s + ux <- unique(as.vector(x)) 348s + n0 <- n1 <- integer(length(x)) 348s + for (value in ux) { 348s + n0 <- n0 + count_R(x, value = value, na.rm = na.rm) 348s + n1 <- n1 + count(x, value = value, na.rm = na.rm) 348s + stopifnot(identical(n1, n0)) 348s + } 348s + stopifnot(all(n0 == ncol(x))) 348s + } # if (mode == "integer") 348s + 348s + } # for (na.rm ...) 348s + } # for (mode ...) 348s > 348s > # All NAs 348s > na_list <- list(NA_integer_, NA_real_, NaN) 348s > for (na_value in na_list) { 348s + x <- rep(na_value, times = 10L) 348s + for (na.rm in c(FALSE, TRUE)) { 348s + n0 <- count_R(x, na.rm = na.rm) 348s + n1 <- count(x, na.rm = na.rm) 348s + stopifnot(identical(n1, n0)) 348s + 348s + # Count NAs 348s + n0 <- count_R(x, value = NA, na.rm = na.rm) 348s + n1 <- count(x, value = NA, na.rm = na.rm) 348s + stopifnot(identical(n1, n0)) 348s + any <- anyValue(x, value = NA, na.rm = na.rm) 348s + all <- allValue(x, value = NA, na.rm = na.rm) 348s + stopifnot(any) 348s + stopifnot(all) 348s + } 348s + } # for (na_value ...) 348s > 348s > 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > # Data type: logical 348s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 348s > x <- logical(length = 10L) 348s > x[3:7] <- TRUE 348s > 348s > # Row/column counts 348s > for (na.rm in c(FALSE, TRUE)) { 348s + n0 <- count_R(x, na.rm = na.rm) 348s + n1 <- count(x, na.rm = na.rm) 348s + stopifnot(identical(n1, n0)) 348s + 348s + n_true <- count(x, value = TRUE, na.rm = na.rm) 348s + n_false <- count(x, value = FALSE, na.rm = na.rm) 348s + stopifnot(n_true + n_false == ncol(x)) 348s + 348s + # Count NAs 348s + n0 <- count_R(x, value = NA, na.rm = na.rm) 348s + n1 <- count(x, value = NA, na.rm = na.rm) 348s + stopifnot(identical(n1, n0)) 348s + } 348s > 349s 349s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 349s Copyright (C) 2024 The R Foundation for Statistical Computing 349s Platform: s390x-ibm-linux-gnu (64-bit) 349s 349s R is free software and comes with ABSOLUTELY NO WARRANTY. 349s You are welcome to redistribute it under certain conditions. 349s Type 'license()' or 'licence()' for distribution details. 349s 349s R is a collaborative project with many contributors. 349s Type 'contributors()' for more information and 349s 'citation()' on how to cite R or R packages in publications. 349s 349s Type 'demo()' for some demos, 'help()' for on-line help, or 349s 'help.start()' for an HTML browser interface to help. 349s Type 'q()' to quit R. 349s 349s > library("matrixStats") 349s > 349s > count_R <- function(x, value = TRUE, na.rm = FALSE, ...) { 349s + if (is.na(value)) { 349s + counts <- sum(is.na(x)) 349s + } else { 349s + counts <- sum(x == value, na.rm = na.rm) 349s + } 349s + as.integer(counts) 349s + } 349s > 349s > 349s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 349s > # Subsetted tests 349s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 349s > source("utils/validateIndicesFramework.R") 349s > x <- runif(6, min = -3, max = 3) 349s > storage.mode(x) <- "integer" 349s > for (idxs in index_cases) { 349s + validateIndicesTestVector(x, idxs, 349s + ftest = count, fsure = count_R, 349s + value = 0, na.rm = TRUE) 349s + validateIndicesTestVector(x, idxs, 349s + ftest = count, fsure = count_R, 349s + value = 0, na.rm = FALSE) 349s + validateIndicesTestVector(x, idxs, 349s + ftest = count, fsure = count_R, 349s + value = NA_integer_) 349s + } 349s > 349s 349s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 349s Copyright (C) 2024 The R Foundation for Statistical Computing 349s Platform: s390x-ibm-linux-gnu (64-bit) 349s 349s R is free software and comes with ABSOLUTELY NO WARRANTY. 349s You are welcome to redistribute it under certain conditions. 349s Type 'license()' or 'licence()' for distribution details. 349s 349s R is a collaborative project with many contributors. 349s Type 'contributors()' for more information and 349s 'citation()' on how to cite R or R packages in publications. 349s 349s Type 'demo()' for some demos, 'help()' for on-line help, or 349s 'help.start()' for an HTML browser interface to help. 349s Type 'q()' to quit R. 349s 349s > library("matrixStats") 349s > 349s > diff2_R <- function(..., useNames = NA){ 349s + res <- diff(...) 349s + if (is.na(useNames) || !useNames) names(res) <- NULL 349s + res 349s + } 349s > 349s > set.seed(0x42) 349s > 349s > for (mode in c("integer", "double")) { 349s + x <- rnorm(10, sd = 5) 349s + storage.mode(x) <- mode 349s + str(x) 349s + 349s + for (has_na in c(FALSE, TRUE)) { 349s + for (setNames in c(TRUE, FALSE)) { 349s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 349s + if (has_na) { 349s + x[sample(1:10, size = 3)] <- NA 349s + } 349s + if (setNames) { 349s + names(x) <- LETTERS[1:10] 349s + } 349s + for (l in 1:3) { 349s + for (d in 1:4) { 349s + cat(sprintf("%s: NAs = %s, lag = %d, differences = %d, setNames = %d, useNames = %d\n", 349s + mode, has_na, l, d, setNames, useNames)) 349s + y0 <- diff2_R(x, lag = l, differences = d, useNames = useNames) 349s + str(y0) 349s + y1 <- diff2(x, lag = l, differences = d, useNames = useNames) 349s + str(y1) 349s + stopifnot(identical(y1, y0)) 349s + } 349s + } 349s + } 349s + } 349s + } # for (has_na ...) 349s + } 349s int [1:10] 11 1 2 0 -1 -3 -3 6 0 0 349s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 1 349s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 1 349s Named int [1:8] 11 -3 1 -1 2 9 -15 6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named int [1:8] 11 -3 1 -1 2 9 -15 6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 1 349s Named int [1:7] -14 4 -2 3 7 -24 21 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named int [1:7] -14 4 -2 3 7 -24 21 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 1 349s Named int [1:6] 18 -6 5 4 -31 45 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named int [1:6] 18 -6 5 4 -31 45 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 1 349s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 1 349s Named int [1:6] 6 -2 1 12 5 -15 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named int [1:6] 6 -2 1 12 5 -15 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 1 349s Named int [1:4] -5 14 4 -27 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named int [1:4] -5 14 4 -27 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 1 349s Named int [1:2] 9 -41 349s - attr(*, "names")= chr [1:2] "I" "J" 349s Named int [1:2] 9 -41 349s - attr(*, "names")= chr [1:2] "I" "J" 349s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 1 349s Named int [1:7] -11 -2 -5 -3 7 3 3 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named int [1:7] -11 -2 -5 -3 7 3 3 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 1 349s Named int [1:4] 8 9 8 6 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named int [1:4] 8 9 8 6 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 1 349s Named int -2 349s - attr(*, "names")= chr "J" 349s Named int -2 349s - attr(*, "names")= chr "J" 349s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 1 349s Named int(0) 349s - attr(*, "names")= chr(0) 349s Named int(0) 349s - attr(*, "names")= chr(0) 349s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 0 349s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 349s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 349s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 0 349s int [1:8] 11 -3 1 -1 2 9 -15 6 349s int [1:8] 11 -3 1 -1 2 9 -15 6 349s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 0 349s int [1:7] -14 4 -2 3 7 -24 21 349s int [1:7] -14 4 -2 3 7 -24 21 349s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 0 349s int [1:6] 18 -6 5 4 -31 45 349s int [1:6] 18 -6 5 4 -31 45 349s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 0 349s int [1:8] -9 -1 -3 -3 -2 9 3 -6 349s int [1:8] -9 -1 -3 -3 -2 9 3 -6 349s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 0 349s int [1:6] 6 -2 1 12 5 -15 349s int [1:6] 6 -2 1 12 5 -15 349s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 0 349s int [1:4] -5 14 4 -27 349s int [1:4] -5 14 4 -27 349s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 0 349s int [1:2] 9 -41 349s int [1:2] 9 -41 349s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 0 349s int [1:7] -11 -2 -5 -3 7 3 3 349s int [1:7] -11 -2 -5 -3 7 3 3 349s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 0 349s int [1:4] 8 9 8 6 349s int [1:4] 8 9 8 6 349s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 0 349s int -2 349s int -2 349s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 0 349s int(0) 349s int(0) 349s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 1 349s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 1 349s Named int [1:8] 11 -3 1 -1 2 9 -15 6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named int [1:8] 11 -3 1 -1 2 9 -15 6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 1 349s Named int [1:7] -14 4 -2 3 7 -24 21 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named int [1:7] -14 4 -2 3 7 -24 21 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 1 349s Named int [1:6] 18 -6 5 4 -31 45 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named int [1:6] 18 -6 5 4 -31 45 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 1 349s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 1 349s Named int [1:6] 6 -2 1 12 5 -15 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named int [1:6] 6 -2 1 12 5 -15 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 1 349s Named int [1:4] -5 14 4 -27 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named int [1:4] -5 14 4 -27 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 1 349s Named int [1:2] 9 -41 349s - attr(*, "names")= chr [1:2] "I" "J" 349s Named int [1:2] 9 -41 349s - attr(*, "names")= chr [1:2] "I" "J" 349s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 1 349s Named int [1:7] -11 -2 -5 -3 7 3 3 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named int [1:7] -11 -2 -5 -3 7 3 3 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 1 349s Named int [1:4] 8 9 8 6 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named int [1:4] 8 9 8 6 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 1 349s Named int -2 349s - attr(*, "names")= chr "J" 349s Named int -2 349s - attr(*, "names")= chr "J" 349s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 1 349s Named int(0) 349s - attr(*, "names")= chr(0) 349s Named int(0) 349s - attr(*, "names")= chr(0) 349s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 0 349s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 349s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 349s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 0 349s int [1:8] 11 -3 1 -1 2 9 -15 6 349s int [1:8] 11 -3 1 -1 2 9 -15 6 349s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 0 349s int [1:7] -14 4 -2 3 7 -24 21 349s int [1:7] -14 4 -2 3 7 -24 21 349s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 0 349s int [1:6] 18 -6 5 4 -31 45 349s int [1:6] 18 -6 5 4 -31 45 349s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 0 349s int [1:8] -9 -1 -3 -3 -2 9 3 -6 349s int [1:8] -9 -1 -3 -3 -2 9 3 -6 349s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 0 349s int [1:6] 6 -2 1 12 5 -15 349s int [1:6] 6 -2 1 12 5 -15 349s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 0 349s int [1:4] -5 14 4 -27 349s int [1:4] -5 14 4 -27 349s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 0 349s int [1:2] 9 -41 349s int [1:2] 9 -41 349s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 0 349s int [1:7] -11 -2 -5 -3 7 3 3 349s int [1:7] -11 -2 -5 -3 7 3 3 349s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 0 349s int [1:4] 8 9 8 6 349s int [1:4] 8 9 8 6 349s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 0 349s int -2 349s int -2 349s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 0 349s int(0) 349s int(0) 349s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 1 349s Named int [1:9] NA NA NA NA NA 0 9 -6 0 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s Named int [1:9] NA NA NA NA NA 0 9 -6 0 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 1 349s Named int [1:8] NA NA NA NA NA 9 -15 6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named int [1:8] NA NA NA NA NA 9 -15 6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 1 349s Named int [1:7] NA NA NA NA NA -24 21 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named int [1:7] NA NA NA NA NA -24 21 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 1 349s Named int [1:6] NA NA NA NA NA 45 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named int [1:6] NA NA NA NA NA 45 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 1 349s Named int [1:8] -9 NA NA NA NA 9 3 -6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named int [1:8] -9 NA NA NA NA 9 3 -6 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 1 349s Named int [1:6] NA NA NA NA NA -15 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named int [1:6] NA NA NA NA NA -15 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 1 349s Named int [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named int [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 1 349s Named int [1:2] NA NA 349s - attr(*, "names")= chr [1:2] "I" "J" 349s Named int [1:2] NA NA 349s - attr(*, "names")= chr [1:2] "I" "J" 349s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 1 349s Named int [1:7] NA NA -5 NA NA 3 3 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named int [1:7] NA NA -5 NA NA 3 3 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 1 349s Named int [1:4] NA NA 8 NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named int [1:4] NA NA 8 NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 1 349s Named int NA 349s - attr(*, "names")= chr "J" 349s Named int NA 349s - attr(*, "names")= chr "J" 349s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 1 349s Named int(0) 349s - attr(*, "names")= chr(0) 349s Named int(0) 349s - attr(*, "names")= chr(0) 349s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 0 349s int [1:9] NA NA NA NA NA 0 9 NA NA 349s int [1:9] NA NA NA NA NA 0 9 NA NA 349s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 0 349s int [1:8] NA NA NA NA NA 9 NA NA 349s int [1:8] NA NA NA NA NA 9 NA NA 349s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 0 349s int [1:7] NA NA NA NA NA NA NA 349s int [1:7] NA NA NA NA NA NA NA 349s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 0 349s int [1:6] NA NA NA NA NA NA 349s int [1:6] NA NA NA NA NA NA 349s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 0 349s int [1:8] NA NA NA NA NA 9 NA -6 349s int [1:8] NA NA NA NA NA 9 NA -6 349s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 0 349s int [1:6] NA NA NA NA NA -15 349s int [1:6] NA NA NA NA NA -15 349s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 0 349s int [1:4] NA NA NA NA 349s int [1:4] NA NA NA NA 349s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 0 349s int [1:2] NA NA 349s int [1:2] NA NA 349s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 0 349s int [1:7] NA NA NA NA NA NA 3 349s int [1:7] NA NA NA NA NA NA 3 349s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 0 349s int [1:4] NA NA NA NA 349s int [1:4] NA NA NA NA 349s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 0 349s int NA 349s int NA 349s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 0 349s int(0) 349s int(0) 349s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 1 349s Named int [1:9] NA NA NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s Named int [1:9] NA NA NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 1 349s Named int [1:8] NA NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named int [1:8] NA NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 1 349s Named int [1:7] NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named int [1:7] NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 1 349s Named int [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named int [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 1 349s Named int [1:8] NA NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named int [1:8] NA NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 1 349s Named int [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named int [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 1 349s Named int [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named int [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 1 349s Named int [1:2] NA NA 349s - attr(*, "names")= chr [1:2] "I" "J" 349s Named int [1:2] NA NA 349s - attr(*, "names")= chr [1:2] "I" "J" 349s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 1 349s Named int [1:7] NA NA NA NA NA NA 3 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named int [1:7] NA NA NA NA NA NA 3 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 1 349s Named int [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named int [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 1 349s Named int NA 349s - attr(*, "names")= chr "J" 349s Named int NA 349s - attr(*, "names")= chr "J" 349s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 1 349s Named int(0) 349s - attr(*, "names")= chr(0) 349s Named int(0) 349s - attr(*, "names")= chr(0) 349s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 0 349s int [1:9] NA NA NA NA NA NA NA NA NA 349s int [1:9] NA NA NA NA NA NA NA NA NA 349s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 0 349s int [1:8] NA NA NA NA NA NA NA NA 349s int [1:8] NA NA NA NA NA NA NA NA 349s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 0 349s int [1:7] NA NA NA NA NA NA NA 349s int [1:7] NA NA NA NA NA NA NA 349s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 0 349s int [1:6] NA NA NA NA NA NA 349s int [1:6] NA NA NA NA NA NA 349s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 0 349s int [1:8] NA NA NA NA NA NA NA NA 349s int [1:8] NA NA NA NA NA NA NA NA 349s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 0 349s int [1:6] NA NA NA NA NA NA 349s int [1:6] NA NA NA NA NA NA 349s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 0 349s int [1:4] NA NA NA NA 349s int [1:4] NA NA NA NA 349s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 0 349s int [1:2] NA NA 349s int [1:2] NA NA 349s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 0 349s int [1:7] NA NA NA NA NA NA 3 349s int [1:7] NA NA NA NA NA NA 3 349s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 0 349s int [1:4] NA NA NA NA 349s int [1:4] NA NA NA NA 349s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 0 349s int NA 349s int NA 349s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 0 349s int(0) 349s int(0) 349s num [1:10] 2.586 -0.344 0.33 9.155 -3.254 ... 349s double: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 1 349s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s double: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 1 349s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s double: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 1 349s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s double: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 1 349s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s double: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 1 349s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s double: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 1 349s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s double: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 1 349s Named num [1:4] 0.368 42.988 15.396 -29.313 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named num [1:4] 0.368 42.988 15.396 -29.313 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s double: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 1 349s Named num [1:2] 15 -72.3 349s - attr(*, "names")= chr [1:2] "I" "J" 349s Named num [1:2] 15 -72.3 349s - attr(*, "names")= chr [1:2] "I" "J" 349s double: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 1 349s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s double: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 1 349s Named num [1:4] -23.52 7.92 11.38 23.27 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named num [1:4] -23.52 7.92 11.38 23.27 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s double: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 1 349s Named num 46.8 349s - attr(*, "names")= chr "J" 349s Named num 46.8 349s - attr(*, "names")= chr "J" 349s double: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 1 349s Named num(0) 349s - attr(*, "names")= chr(0) 349s Named num(0) 349s - attr(*, "names")= chr(0) 349s double: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 0 349s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 349s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 349s double: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 0 349s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 349s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 349s double: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 0 349s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 349s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 349s double: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 0 349s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 349s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 349s double: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 0 349s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 349s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 349s double: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 0 349s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 349s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 349s double: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 0 349s num [1:4] 0.368 42.988 15.396 -29.313 349s num [1:4] 0.368 42.988 15.396 -29.313 349s double: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 0 349s num [1:2] 15 -72.3 349s num [1:2] 15 -72.3 349s double: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 0 349s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 349s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 349s double: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 0 349s num [1:4] -23.52 7.92 11.38 23.27 349s num [1:4] -23.52 7.92 11.38 23.27 349s double: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 0 349s num 46.8 349s num 46.8 349s double: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 0 349s num(0) 349s num(0) 349s double: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 1 349s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s double: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 1 349s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s double: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 1 349s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s double: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 1 349s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s double: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 1 349s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s double: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 1 349s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s double: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 1 349s Named num [1:4] 0.368 42.988 15.396 -29.313 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named num [1:4] 0.368 42.988 15.396 -29.313 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s double: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 1 349s Named num [1:2] 15 -72.3 349s - attr(*, "names")= chr [1:2] "I" "J" 349s Named num [1:2] 15 -72.3 349s - attr(*, "names")= chr [1:2] "I" "J" 349s double: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 1 349s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s double: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 1 349s Named num [1:4] -23.52 7.92 11.38 23.27 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named num [1:4] -23.52 7.92 11.38 23.27 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s double: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 1 349s Named num 46.8 349s - attr(*, "names")= chr "J" 349s Named num 46.8 349s - attr(*, "names")= chr "J" 349s double: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 1 349s Named num(0) 349s - attr(*, "names")= chr(0) 349s Named num(0) 349s - attr(*, "names")= chr(0) 349s double: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 0 349s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 349s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 349s double: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 0 349s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 349s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 349s double: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 0 349s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 349s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 349s double: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 0 349s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 349s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 349s double: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 0 349s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 349s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 349s double: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 0 349s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 349s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 349s double: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 0 349s num [1:4] 0.368 42.988 15.396 -29.313 349s num [1:4] 0.368 42.988 15.396 -29.313 349s double: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 0 349s num [1:2] 15 -72.3 349s num [1:2] 15 -72.3 349s double: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 0 349s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 349s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 349s double: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 0 349s num [1:4] -23.52 7.92 11.38 23.27 349s num [1:4] -23.52 7.92 11.38 23.27 349s double: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 0 349s num 46.8 349s num 46.8 349s double: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 0 349s num(0) 349s num(0) 349s double: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 1 349s Named num [1:9] -2.929 0.673 8.826 NA NA ... 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s Named num [1:9] -2.929 0.673 8.826 NA NA ... 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s double: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 1 349s Named num [1:8] 3.6 8.15 NA NA NA ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named num [1:8] 3.6 8.15 NA NA NA ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s double: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 1 349s Named num [1:7] 4.55 NA NA NA NA ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named num [1:7] 4.55 NA NA NA NA ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s double: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 1 349s Named num [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named num [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s double: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 1 349s Named num [1:8] -2.26 9.5 NA NA NA ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named num [1:8] -2.26 9.5 NA NA NA ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s double: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 1 349s Named num [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named num [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s double: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 1 349s Named num [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named num [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s double: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 1 349s Named num [1:2] NA NA 349s - attr(*, "names")= chr [1:2] "I" "J" 349s Named num [1:2] NA NA 349s - attr(*, "names")= chr [1:2] "I" "J" 349s double: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 1 349s Named num [1:7] 6.57 NA NA -16.95 NA ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named num [1:7] 6.57 NA NA -16.95 NA ... 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s double: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 1 349s Named num [1:4] -23.5 NA NA 23.3 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named num [1:4] -23.5 NA NA 23.3 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s double: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 1 349s Named num 46.8 349s - attr(*, "names")= chr "J" 349s Named num 46.8 349s - attr(*, "names")= chr "J" 349s double: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 1 349s Named num(0) 349s - attr(*, "names")= chr(0) 349s Named num(0) 349s - attr(*, "names")= chr(0) 349s double: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 0 349s num [1:9] NA 0.673 8.826 NA NA ... 349s num [1:9] NA 0.673 8.826 NA NA ... 349s double: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 0 349s num [1:8] NA 8.15 NA NA NA ... 349s num [1:8] NA 8.15 NA NA NA ... 349s double: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 0 349s num [1:7] NA NA NA NA NA NA NA 349s num [1:7] NA NA NA NA NA NA NA 349s double: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 0 349s num [1:6] NA NA NA NA NA NA 349s num [1:6] NA NA NA NA NA NA 349s double: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 0 349s num [1:8] NA 9.5 NA NA NA ... 349s num [1:8] NA 9.5 NA NA NA ... 349s double: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 0 349s num [1:6] NA NA NA NA NA NA 349s num [1:6] NA NA NA NA NA NA 349s double: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 0 349s num [1:4] NA NA NA NA 349s num [1:4] NA NA NA NA 349s double: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 0 349s num [1:2] NA NA 349s num [1:2] NA NA 349s double: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 0 349s num [1:7] NA NA NA NA NA NA NA 349s num [1:7] NA NA NA NA NA NA NA 349s double: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 0 349s num [1:4] NA NA NA NA 349s num [1:4] NA NA NA NA 349s double: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 0 349s num NA 349s num NA 349s double: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 0 349s num(0) 349s num(0) 349s double: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 1 349s Named num [1:9] NA 0.673 8.826 NA NA ... 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s Named num [1:9] NA 0.673 8.826 NA NA ... 349s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 349s double: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 1 349s Named num [1:8] NA 8.15 NA NA NA ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named num [1:8] NA 8.15 NA NA NA ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s double: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 1 349s Named num [1:7] NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named num [1:7] NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s double: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 1 349s Named num [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named num [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s double: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 1 349s Named num [1:8] NA 9.5 NA NA NA ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s Named num [1:8] NA 9.5 NA NA NA ... 349s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 349s double: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 1 349s Named num [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s Named num [1:6] NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 349s double: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 1 349s Named num [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named num [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s double: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 1 349s Named num [1:2] NA NA 349s - attr(*, "names")= chr [1:2] "I" "J" 349s Named num [1:2] NA NA 349s - attr(*, "names")= chr [1:2] "I" "J" 349s double: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 1 349s Named num [1:7] NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s Named num [1:7] NA NA NA NA NA NA NA 349s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 349s double: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 1 349s Named num [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s Named num [1:4] NA NA NA NA 349s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 349s double: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 1 349s Named num NA 349s - attr(*, "names")= chr "J" 349s Named num NA 349s - attr(*, "names")= chr "J" 349s double: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 1 349s Named num(0) 349s - attr(*, "names")= chr(0) 349s Named num(0) 349s - attr(*, "names")= chr(0) 349s double: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 0 349s num [1:9] NA 0.673 8.826 NA NA ... 349s num [1:9] NA 0.673 8.826 NA NA ... 349s double: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 0 349s num [1:8] NA 8.15 NA NA NA ... 349s num [1:8] NA 8.15 NA NA NA ... 349s double: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 0 349s num [1:7] NA NA NA NA NA NA NA 349s num [1:7] NA NA NA NA NA NA NA 349s double: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 0 349s num [1:6] NA NA NA NA NA NA 349s num [1:6] NA NA NA NA NA NA 349s double: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 0 349s num [1:8] NA 9.5 NA NA NA ... 349s num [1:8] NA 9.5 NA NA NA ... 349s double: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 0 349s num [1:6] NA NA NA NA NA NA 349s num [1:6] NA NA NA NA NA NA 349s double: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 0 349s num [1:4] NA NA NA NA 349s num [1:4] NA NA NA NA 349s double: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 0 349s num [1:2] NA NA 349s num [1:2] NA NA 349s double: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 0 349s num [1:7] NA NA NA NA NA NA NA 349s num [1:7] NA NA NA NA NA NA NA 349s double: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 0 349s num [1:4] NA NA NA NA 349s num [1:4] NA NA NA NA 349s double: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 0 349s num NA 349s num NA 349s double: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 0 349s num(0) 349s num(0) 349s > 349s 349s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 349s Copyright (C) 2024 The R Foundation for Statistical Computing 349s Platform: s390x-ibm-linux-gnu (64-bit) 349s 349s R is free software and comes with ABSOLUTELY NO WARRANTY. 349s You are welcome to redistribute it under certain conditions. 349s Type 'license()' or 'licence()' for distribution details. 349s 349s R is a collaborative project with many contributors. 349s Type 'contributors()' for more information and 349s 'citation()' on how to cite R or R packages in publications. 349s 349s Type 'demo()' for some demos, 'help()' for on-line help, or 349s 'help.start()' for an HTML browser interface to help. 349s Type 'q()' to quit R. 349s 349s > library("matrixStats") 349s > 349s > diff2_R <- function(..., useNames=NA){ 349s + res <- diff(...) 349s + if (is.na(useNames) || !useNames) names(res) <- NULL 349s + res 349s + } 349s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 349s > # Subsetted tests 349s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 349s > source("utils/validateIndicesFramework.R") 349s > x <- runif(6, min = -6, max = 6) 349s > for (setNames in c(TRUE, FALSE)) { 349s + if (setNames) names(x) <- LETTERS[1:6] 349s + else names(x) <- NULL 349s + for (l in 1:2) { 349s + for (d in 1:2) { 349s + for (idxs in index_cases) { 349s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 349s + validateIndicesTestVector(x, idxs, 349s + ftest = diff2, fsure = diff2_R, 349s + lag = l, differences = d, useNames = useNames) 349s + } 349s + } 349s + } 349s + } 349s + } 349s > 349s 349s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 349s Copyright (C) 2024 The R Foundation for Statistical Computing 349s Platform: s390x-ibm-linux-gnu (64-bit) 349s 349s R is free software and comes with ABSOLUTELY NO WARRANTY. 349s You are welcome to redistribute it under certain conditions. 349s Type 'license()' or 'licence()' for distribution details. 349s 349s R is a collaborative project with many contributors. 349s Type 'contributors()' for more information and 349s 'citation()' on how to cite R or R packages in publications. 349s 349s Type 'demo()' for some demos, 'help()' for on-line help, or 349s 'help.start()' for an HTML browser interface to help. 349s Type 'q()' to quit R. 349s 350s > library("matrixStats") 350s > 350s > indexByRow_R1 <- function(dim, idxs = NULL, ...) { 350s + n <- prod(dim) 350s + x <- matrix(seq_len(n), nrow = dim[2L], ncol = dim[1L], byrow = TRUE) 350s + if (!is.null(idxs)) 350s + x <- x[idxs] 350s + as.vector(x) 350s + } 350s > 350s > 350s > indexByRow_R2 <- function(dim, idxs = NULL, ...) { 350s + n <- prod(dim) 350s + if (is.null(idxs)) { 350s + x <- matrix(seq_len(n), nrow = dim[2L], ncol = dim[1L], byrow = TRUE) 350s + as.vector(x) 350s + } else { 350s + idxs <- idxs - 1L 350s + cols <- idxs %/% dim[2L] 350s + rows <- idxs %% dim[2L] 350s + cols + dim[1L] * rows + 1L 350s + } 350s + } 350s > 350s > 350s > dim <- c(5L, 4L) 350s > x <- matrix(NA_integer_, nrow = dim[1L], ncol = dim[2L]) 350s > y <- t(x) 350s > idxs_by_cols <- seq_along(x) 350s > 350s > # Assign by columns 350s > x[idxs_by_cols] <- idxs_by_cols 350s > print(x) 350s [,1] [,2] [,3] [,4] 350s [1,] 1 6 11 16 350s [2,] 2 7 12 17 350s [3,] 3 8 13 18 350s [4,] 4 9 14 19 350s [5,] 5 10 15 20 350s > 350s > # Truth 350s > y0 <- t(x) 350s > idxs_by_rows <- as.vector(y0) 350s > 350s > # Assert 350s > idxs <- indexByRow(dim) 350s > stopifnot(all.equal(idxs, idxs_by_rows)) 350s > y <- x 350s > y[idxs_by_rows] <- idxs 350s > print(y) 350s [,1] [,2] [,3] [,4] 350s [1,] 1 6 11 16 350s [2,] 2 7 12 17 350s [3,] 3 8 13 18 350s [4,] 4 9 14 19 350s [5,] 5 10 15 20 350s > stopifnot(all(as.vector(y) == as.vector(x))) 350s > 350s > idxs_R1 <- indexByRow_R1(dim) 350s > stopifnot(all.equal(idxs_R1, idxs_by_rows)) 350s > 350s > idxs_R2 <- indexByRow_R2(dim) 350s > stopifnot(all.equal(idxs_R2, idxs_by_rows)) 350s > 350s > # Assert 350s > idxs_by_cols <- seq(from = 1, to = length(x), by = 3L) 350s > idxs_by_rows <- as.vector(t(x)[idxs_by_cols]) 350s > 350s > idxs <- indexByRow(dim, idxs = idxs_by_cols) 350s > stopifnot(all(idxs == idxs_by_rows)) 350s > 350s > idxs_R1 <- indexByRow_R1(dim, idxs = idxs_by_cols) 350s > stopifnot(all(idxs_R1 == idxs_by_rows)) 350s > 350s > idxs_R2 <- indexByRow_R2(dim, idxs = idxs_by_cols) 350s > stopifnot(all(idxs_R2 == idxs_by_rows)) 350s > 350s > 350s > ## DEFUNCT: Backward compatibility 350s > res <- tryCatch({ 350s + idxs1 <- indexByRow(x) 350s + }, error = identity) 350s > stopifnot(inherits(res, "error")) 350s > 350s > 350s > ## Exceptions: 350s > ## Too large matrices are not supported, which happens 350s > ## when prod(dim) > .Machine$integer.max 350s > dim_too_large <- c(.Machine$integer.max, 2L) 350s > res <- tryCatch({ 350s + idxs <- indexByRow(dim_too_large, idxs = 1L) 350s + }, error = identity) 350s > stopifnot(inherits(res, "error")) 350s > 350s > ## Non-positive indices are not supported 350s > res <- tryCatch({ 350s + idxs <- indexByRow(c(1,1), idxs = 0L) 350s + }, error = identity) 350s > stopifnot(inherits(res, "error")) 350s > 350s > res <- tryCatch({ 350s + idxs <- indexByRow(c(1,1), idxs = -1L) 350s + }, error = identity) 350s > stopifnot(inherits(res, "error")) 350s > 350s 350s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 350s Copyright (C) 2024 The R Foundation for Statistical Computing 350s Platform: s390x-ibm-linux-gnu (64-bit) 350s 350s R is free software and comes with ABSOLUTELY NO WARRANTY. 350s You are welcome to redistribute it under certain conditions. 350s Type 'license()' or 'licence()' for distribution details. 350s 350s R is a collaborative project with many contributors. 350s Type 'contributors()' for more information and 350s 'citation()' on how to cite R or R packages in publications. 350s 350s Type 'demo()' for some demos, 'help()' for on-line help, or 350s 'help.start()' for an HTML browser interface to help. 350s Type 'q()' to quit R. 350s 350s > library("matrixStats") 350s > library("stats") 350s > 350s > logSumExp_R <- function(lx, na.rm = FALSE) { 350s + log(sum(exp(lx), na.rm = na.rm)) 350s + } 350s > 350s > ## R-help thread \emph{'[R] Beyond double-precision?'} on May 9, 2009. 350s > 350s > for (mode in c("integer", "double")) { 350s + cat("mode: ", mode, "\n", sep = "") 350s + 350s + set.seed(1) 350s + x <- runif(20, min = 1.0, max = 3.0) 350s + storage.mode(x) <- mode 350s + str(x) 350s + 350s + ## The logarithm of the harmonic mean 350s + y0 <- log(1 / mean(1 / x)) 350s + print(y0) ## -1.600885 350s + 350s + lx <- log(x) 350s + y1 <- log(length(x)) - logSumExp(-lx) 350s + print(y1) ## [1] -1.600885 350s + 350s + # Sanity check 350s + stopifnot(all.equal(y1, y0)) 350s + 350s + y2 <- log(length(x)) - logSumExp_R(-lx) 350s + # Sanity check 350s + stopifnot(all.equal(y2, y0)) 350s + } # for (mode ...) 350s mode: integer 350s int [1:20] 1 1 2 2 1 2 2 2 2 1 ... 350s [1] 0.3215836 350s [1] 0.3215836 350s mode: double 350s num [1:20] 1.53 1.74 2.15 2.82 1.4 ... 350s [1] 0.6673156 350s [1] 0.6673156 350s > 350s > 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > # Missing values 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > ## NA values 350s > lx <- c(1, 2, 3) 350s > lx[2] <- NA_real_ 350s > y0 <- logSumExp_R(lx, na.rm = FALSE) 350s > y <- logSumExp(lx, na.rm = FALSE) 350s > print(y) 350s [1] NA 350s > stopifnot(identical(y, NA_real_)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > y0 <- logSumExp_R(lx, na.rm = TRUE) 350s > y <- logSumExp(lx, na.rm = TRUE) 350s > print(y) 350s [1] 3.126928 350s > stopifnot(all.equal(y, y0)) 350s > 350s > ## NaN values 350s > lx <- c(1, 2, 3) 350s > lx[2] <- NaN 350s > y0 <- logSumExp_R(lx, na.rm = FALSE) 350s > y <- logSumExp(lx, na.rm = FALSE) 350s > print(y) 350s [1] NA 350s > stopifnot(identical(y, NA_real_)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > y0 <- logSumExp_R(lx, na.rm = TRUE) 350s > y <- logSumExp(lx, na.rm = TRUE) 350s > print(y) 350s [1] 3.126928 350s > stopifnot(all.equal(y, y0)) 350s > 350s > 350s > 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > # Corner cases 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > ## Zero-length vectors 350s > lx <- numeric(0L) 350s > y0 <- logSumExp_R(lx) 350s > y <- logSumExp(lx) 350s > print(y) 350s [1] -Inf 350s > stopifnot(identical(y, -Inf)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > ## Vectors of length one 350s > lx <- 1.0 350s > y0 <- logSumExp_R(lx) 350s > y <- logSumExp(lx) 350s > print(y) 350s [1] 1 350s > stopifnot(identical(y, lx)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > lx <- NA_real_ 350s > y0 <- logSumExp_R(lx, na.rm = TRUE) 350s > y <- logSumExp(lx, na.rm = TRUE) 350s > print(y) 350s [1] -Inf 350s > stopifnot(identical(y, -Inf)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > ## All missing values 350s > lx <- c(NA_real_, NA_real_) 350s > y0 <- logSumExp_R(lx, na.rm = TRUE) 350s > y <- logSumExp(lx, na.rm = TRUE) 350s > print(y) 350s [1] -Inf 350s > stopifnot(identical(y, -Inf)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > lx <- c(NA_real_, NA_real_) 350s > y0 <- logSumExp_R(lx, na.rm = FALSE) 350s > y <- logSumExp(lx, na.rm = FALSE) 350s > print(y) 350s [1] NA 350s > stopifnot(identical(y, NA_real_)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > 350s > ## +Inf values 350s > lx <- c(1, 2, +Inf) 350s > y0 <- logSumExp_R(lx) 350s > y <- logSumExp(lx) 350s > print(y) 350s [1] Inf 350s > stopifnot(identical(y, +Inf)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > ## First element is a missing value, cf. PR #33 350s > lx <- c(NA_real_, 1) 350s > y0 <- logSumExp_R(lx) 350s > print(y0) 350s [1] NA 350s > y <- logSumExp(lx, na.rm = FALSE) 350s > print(y) 350s [1] NA 350s > stopifnot(identical(y, NA_real_)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > y0 <- logSumExp_R(lx, na.rm = TRUE) 350s > print(y0) 350s [1] 1 350s > y <- logSumExp(lx, na.rm = TRUE) 350s > print(y) 350s [1] 1 350s > stopifnot(identical(y, 1)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > ## Multiple -Inf values, cf. issue #84 350s > lx <- c(-Inf, -Inf) 350s > y0 <- logSumExp_R(lx) 350s > y <- logSumExp(lx) 350s > print(y) 350s [1] -Inf 350s > stopifnot(identical(y, -Inf)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s > lx <- c(-Inf, 5, -Inf) 350s > y0 <- logSumExp_R(lx) 350s > y <- logSumExp(lx) 350s > print(y) 350s [1] 5 350s > stopifnot(identical(y, 5)) 350s > stopifnot(all.equal(y, y0)) 350s > 350s 350s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 350s Copyright (C) 2024 The R Foundation for Statistical Computing 350s Platform: s390x-ibm-linux-gnu (64-bit) 350s 350s R is free software and comes with ABSOLUTELY NO WARRANTY. 350s You are welcome to redistribute it under certain conditions. 350s Type 'license()' or 'licence()' for distribution details. 350s 350s R is a collaborative project with many contributors. 350s Type 'contributors()' for more information and 350s 'citation()' on how to cite R or R packages in publications. 350s 350s Type 'demo()' for some demos, 'help()' for on-line help, or 350s 'help.start()' for an HTML browser interface to help. 350s Type 'q()' to quit R. 350s 350s > library("matrixStats") 350s > 350s > logSumExp_R <- function(lx, na.rm = FALSE) { 350s + log(sum(exp(lx), na.rm = na.rm)) 350s + } 350s > 350s > 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > # Subsetted tests 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > source("utils/validateIndicesFramework.R") 350s > x <- runif(6, min = -6, max = 6) 350s > for (idxs in index_cases) { 350s + validateIndicesTestVector(x, idxs, 350s + ftest = logSumExp, fsure = logSumExp_R, 350s + na.rm = FALSE) 350s + validateIndicesTestVector(x, idxs, 350s + ftest = logSumExp, fsure = logSumExp_R, 350s + na.rm = TRUE) 350s + } 350s > 350s 350s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 350s Copyright (C) 2024 The R Foundation for Statistical Computing 350s Platform: s390x-ibm-linux-gnu (64-bit) 350s 350s R is free software and comes with ABSOLUTELY NO WARRANTY. 350s You are welcome to redistribute it under certain conditions. 350s Type 'license()' or 'licence()' for distribution details. 350s 350s R is a collaborative project with many contributors. 350s Type 'contributors()' for more information and 350s 'citation()' on how to cite R or R packages in publications. 350s 350s Type 'demo()' for some demos, 'help()' for on-line help, or 350s 'help.start()' for an HTML browser interface to help. 350s Type 'q()' to quit R. 350s 350s > library("matrixStats") 350s > 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > # Consistency checks 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > set.seed(1) 350s > 350s > mean2_R <- function(x, na.rm = FALSE, idxs = NULL) { 350s + if (is.null(idxs)) { 350s + mean(x, na.rm = na.rm) 350s + } else { 350s + mean(x[idxs], na.rm = na.rm) 350s + } 350s + } # mean2_R() 350s > 350s > 350s > cat("Consistency checks:\n") 350s Consistency checks: 350s > for (kk in 1:20) { 350s + cat("Random test #", kk, "\n", sep = "") 350s + 350s + # Simulate data in a matrix of any shape 350s + n <- sample(100L, size = 1L) 350s + x <- rnorm(n, sd = 100) 350s + 350s + # Add NAs? 350s + if ((kk %% 4) %in% c(3, 0)) { 350s + cat("Adding NAs\n") 350s + nna <- sample(n, size = 1L) 350s + na_values <- c(NA_real_, NaN) 350s + t <- sample(na_values, size = nna, replace = TRUE) 350s + x[sample(length(x), size = nna)] <- t 350s + } 350s + 350s + # Integer or double? 350s + if ((kk %% 4) %in% c(2, 0)) { 350s + cat("Coercing to integers\n") 350s + storage.mode(x) <- "integer" 350s + } 350s + 350s + na.rm <- sample(c(TRUE, FALSE), size = 1L) 350s + 350s + # Sum over all 350s + y0 <- mean2_R(x, na.rm = na.rm) 350s + y1 <- mean2(x, na.rm = na.rm) 350s + stopifnot(all.equal(y1, y0)) 350s + 350s + # Sum over subset 350s + nidxs <- sample(n, size = 1L) 350s + idxs <- sample(n, size = nidxs) 350s + y0 <- mean2_R(x, na.rm = na.rm, idxs = idxs) 350s + y1 <- mean2(x, na.rm = na.rm, idxs = idxs) 350s + stopifnot(all.equal(y1, y0)) 350s + 350s + if (storage.mode(x) == "integer") { 350s + storage.mode(x) <- "logical" 350s + 350s + y0 <- mean2_R(x, na.rm = na.rm) 350s + y1 <- mean2(x, na.rm = na.rm) 350s + stopifnot(all.equal(y1, y0)) 350s + 350s + y0 <- mean2_R(x, na.rm = na.rm, idxs = idxs) 350s + y1 <- mean2(x, na.rm = na.rm, idxs = idxs) 350s + stopifnot(all.equal(y1, y0)) 350s + } 350s + } # for (kk ...) 350s Random test #1 350s Random test #2 350s Coercing to integers 350s Random test #3 350s Adding NAs 350s Random test #4 350s Adding NAs 350s Coercing to integers 350s Random test #5 350s Random test #6 350s Coercing to integers 350s Random test #7 350s Adding NAs 350s Random test #8 350s Adding NAs 350s Coercing to integers 350s Random test #9 350s Random test #10 350s Coercing to integers 350s Random test #11 350s Adding NAs 350s Random test #12 350s Adding NAs 350s Coercing to integers 350s Random test #13 350s Random test #14 350s Coercing to integers 350s Random test #15 350s Adding NAs 350s Random test #16 350s Adding NAs 350s Coercing to integers 350s Random test #17 350s Random test #18 350s Coercing to integers 350s Random test #19 350s Adding NAs 350s Random test #20 350s Adding NAs 350s Coercing to integers 350s > 350s > 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > # Special cases 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > for (na.rm in c(FALSE, TRUE)) { 350s + # Averaging over zero elements (integers) 350s + x <- integer(0) 350s + s1 <- mean(x, na.rm = na.rm) 350s + s2 <- mean2(x, na.rm = na.rm) 350s + stopifnot(identical(s1, s2)) 350s + 350s + x <- 1:5 350s + idxs <- integer(0) 350s + s1 <- mean(x[idxs], na.rm = na.rm) 350s + s2 <- mean2(x, idxs = idxs, na.rm = na.rm) 350s + stopifnot(identical(s1, s2)) 350s + 350s + # Averaging over NA_integer_:s 350s + x <- rep(NA_integer_, times = 5L) 350s + s1 <- mean(x, na.rm = na.rm) 350s + s2 <- mean2(x, na.rm = na.rm) 350s + stopifnot(identical(s1, s2)) 350s + 350s + x <- rep(NA_integer_, times = 5L) 350s + idxs <- 1:3 350s + s1 <- mean(x[idxs], na.rm = na.rm) 350s + s2 <- mean2(x, idxs = idxs, na.rm = na.rm) 350s + stopifnot(identical(s1, s2)) 350s + 350s + 350s + # Averaging over zero elements (doubles) 350s + x <- double(0) 350s + s1 <- mean(x) 350s + s2 <- mean2(x) 350s + stopifnot(identical(s1, s2)) 350s + 350s + x <- as.double(1:10) 350s + idxs <- integer(0) 350s + s1 <- mean(x[idxs]) 350s + s2 <- mean2(x, idxs = idxs) 350s + stopifnot(identical(s1, s2)) 350s + 350s + # Averaging over NA_real_:s 350s + x <- rep(NA_real_, times = 5L) 350s + s1 <- mean(x, na.rm = na.rm) 350s + s2 <- mean2(x, na.rm = na.rm) 350s + stopifnot(identical(s1, s2)) 350s + 350s + x <- rep(NA_real_, times = 5L) 350s + idxs <- 1:3 350s + s1 <- mean(x[idxs], na.rm = na.rm) 350s + s2 <- mean2(x, idxs = idxs, na.rm = na.rm) 350s + stopifnot(identical(s1, s2)) 350s + 350s + # Averaging over -Inf:s 350s + x <- rep(-Inf, times = 3L) 350s + s1 <- mean(x, na.rm = na.rm) 350s + s2 <- mean2(x, na.rm = na.rm) 350s + stopifnot(identical(s1, s2)) 350s + 350s + # Averaging over +Inf:s 350s + x <- rep(+Inf, times = 3L) 350s + s1 <- mean(x, na.rm = na.rm) 350s + s2 <- mean2(x, na.rm = na.rm) 350s + stopifnot(identical(s1, s2)) 350s + 350s + # Averaging over mix of -Inf:s and +Inf:s 350s + x <- rep(c(-Inf, +Inf), times = 3L) 350s + s1 <- mean(x, na.rm = na.rm) 350s + s2 <- mean2(x, na.rm = na.rm) 350s + stopifnot(identical(s1, s2)) 350s + 350s + # Averaging over mix of -Inf:s and +Inf:s and numerics 350s + x <- rep(c(-Inf, +Inf, 3.14), times = 2L) 350s + s1 <- mean(x, na.rm = na.rm) 350s + s2 <- mean2(x, na.rm = na.rm) 350s + stopifnot(identical(s1, s2)) 350s + 350s + # Averaging over mix of NaN, NA, +Inf, and numerics 350s + x <- c(NaN, NA, +Inf, 3.14) 350s + s1 <- mean(x, na.rm = na.rm) 350s + s2 <- mean2(x, na.rm = na.rm) 350s + if (na.rm) { 350s + stopifnot(identical(s2, s1)) 350s + } else { 350s + stopifnot(is.na(s1), is.na(s2)) 350s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 350s + ## returned here (as one would expect). NaN might very well be returned, 350s + ## when both NA and NaN are involved. This is an accepted feature in R, 350s + ## which is documented in help("is.nan"). See also 350s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 350s + ## Thus, we cannot guarantee that s1 is identical to s0. 350s + } 350s + 350s + # Averaging over mix of NaN, NA_real_, +Inf, and numerics 350s + x <- c(NA_real_, NaN, +Inf, 3.14) 350s + s1 <- mean(x, na.rm = na.rm) 350s + s2 <- mean2(x, na.rm = na.rm) 350s + if (na.rm) { 350s + stopifnot(identical(s2, s1)) 350s + } else { 350s + stopifnot(is.na(s1), is.na(s2)) 350s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 350s + ## returned here (as one would expect). NaN might very well be returned, 350s + ## when both NA and NaN are involved. This is an accepted feature in R, 350s + ## which is documented in help("is.nan"). See also 350s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 350s + ## Thus, we cannot guarantee that s1 is identical to s0. 350s + } 350s + } 350s > 350s > 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > # Argument 'idxs' 350s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 350s > x <- 1:5 350s > idxs_list <- list( 350s + integer = 1:3, 350s + double = as.double(1:3), 350s + logical = (x <= 3) 350s + ) 350s > 350s > for (idxs in idxs_list) { 350s + cat("idxs:\n") 350s + str(idxs) 350s + s1 <- mean(x[idxs], na.rm = TRUE) 350s + s2 <- mean2(x, idxs = idxs, na.rm = TRUE) 350s + stopifnot(identical(s1, s2)) 350s + } 350s idxs: 350s int [1:3] 1 2 3 350s idxs: 350s num [1:3] 1 2 3 350s idxs: 350s logi [1:5] TRUE TRUE TRUE FALSE FALSE 350s > 350s 350s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 350s Copyright (C) 2024 The R Foundation for Statistical Computing 350s Platform: s390x-ibm-linux-gnu (64-bit) 350s 350s R is free software and comes with ABSOLUTELY NO WARRANTY. 350s You are welcome to redistribute it under certain conditions. 350s Type 'license()' or 'licence()' for distribution details. 350s 350s R is a collaborative project with many contributors. 350s Type 'contributors()' for more information and 350s 'citation()' on how to cite R or R packages in publications. 350s 350s Type 'demo()' for some demos, 'help()' for on-line help, or 350s 'help.start()' for an HTML browser interface to help. 350s Type 'q()' to quit R. 350s 351s > library("matrixStats") 351s > 351s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351s > # Subsetted tests 351s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351s > source("utils/validateIndicesFramework.R") 351s > x <- runif(6, min = -6, max = 6) 351s > storage.mode(x) <- "integer" 351s > for (idxs in index_cases) { 351s + validateIndicesTestVector(x, idxs, 351s + ftest = mean2, fsure = mean, 351s + na.rm = FALSE) 351s + validateIndicesTestVector(x, idxs, 351s + ftest = mean2, fsure = mean, 351s + na.rm = TRUE) 351s + } 351s > 351s 351s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 351s Copyright (C) 2024 The R Foundation for Statistical Computing 351s Platform: s390x-ibm-linux-gnu (64-bit) 351s 351s R is free software and comes with ABSOLUTELY NO WARRANTY. 351s You are welcome to redistribute it under certain conditions. 351s Type 'license()' or 'licence()' for distribution details. 351s 351s R is a collaborative project with many contributors. 351s Type 'contributors()' for more information and 351s 'citation()' on how to cite R or R packages in publications. 351s 351s Type 'demo()' for some demos, 'help()' for on-line help, or 351s 'help.start()' for an HTML browser interface to help. 351s Type 'q()' to quit R. 351s 351s > library("matrixStats") 351s > 351s > for (mode in c("integer", "double")) { 351s + cat("mode: ", mode, "\n", sep = "") 351s + 351s + # Empty vector 351s + x <- 0 351s + storage.mode(x) <- mode 351s + y <- prod(x, na.rm = TRUE) 351s + print(y) 351s + z <- product(x, na.rm = TRUE) 351s + print(z) 351s + stopifnot(all.equal(z, y)) 351s + 351s + # Test negative values 351s + x <- c(1, -4, 2) 351s + storage.mode(x) <- mode 351s + y <- prod(x, na.rm = TRUE) 351s + print(y) 351s + z <- product(x, na.rm = TRUE) 351s + print(z) 351s + stopifnot(all.equal(z, y)) 351s + 351s + # Test missing values 351s + x <- c(1, NA, NaN, 2) 351s + storage.mode(x) <- mode 351s + y <- prod(x, na.rm = TRUE) 351s + print(y) 351s + z <- product(x, na.rm = TRUE) 351s + print(z) 351s + stopifnot(all.equal(z, y)) 351s + 351s + x <- c(1, NA, NaN, 2) 351s + storage.mode(x) <- mode 351s + y <- prod(x, na.rm = FALSE) 351s + print(y) 351s + z <- product(x, na.rm = FALSE) 351s + print(z) 351s + stopifnot(all(is.na(z), is.na(y))) 351s + 351s + x <- c(1, NaN, 2) 351s + storage.mode(x) <- mode 351s + y <- prod(x, na.rm = FALSE) 351s + print(y) 351s + stopifnot(is.na(y)) 351s + z <- product(x, na.rm = FALSE) 351s + print(z) 351s + stopifnot(is.na(z)) 351s + 351s + } # for (mode ...) 351s mode: integer 351s [1] 0 351s [1] 0 351s [1] -8 351s [1] -8 351s [1] 2 351s [1] 2 351s [1] NA 351s [1] NA 351s [1] NA 351s [1] NA 351s mode: double 351s [1] 0 351s [1] 0 351s [1] -8 351s [1] -8 351s [1] 2 351s [1] 2 351s [1] NA 351s [1] NA 351s [1] NaN 351s [1] NA 351s > 351s > 351s > # NAs following 0s 351s > x <- c(0L, NA_integer_) 351s > y <- prod(x, na.rm = FALSE) 351s > print(y) 351s [1] NA 351s > z <- product(x, na.rm = FALSE) 351s > print(z) 351s [1] NA 351s > stopifnot(identical(z, y)) 351s > 351s 351s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 351s Copyright (C) 2024 The R Foundation for Statistical Computing 351s Platform: s390x-ibm-linux-gnu (64-bit) 351s 351s R is free software and comes with ABSOLUTELY NO WARRANTY. 351s You are welcome to redistribute it under certain conditions. 351s Type 'license()' or 'licence()' for distribution details. 351s 351s R is a collaborative project with many contributors. 351s Type 'contributors()' for more information and 351s 'citation()' on how to cite R or R packages in publications. 351s 351s Type 'demo()' for some demos, 'help()' for on-line help, or 351s 'help.start()' for an HTML browser interface to help. 351s Type 'q()' to quit R. 351s 351s > library("matrixStats") 351s > 351s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351s > # Subsetted tests 351s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351s > source("utils/validateIndicesFramework.R") 351s > x <- runif(6, min = -6, max = 6) 351s > storage.mode(x) <- "integer" 351s > for (idxs in index_cases) { 351s + validateIndicesTestVector(x, idxs, 351s + ftest = product, fsure = prod, 351s + na.rm = TRUE) 351s + validateIndicesTestVector(x, idxs, 351s + ftest = product, fsure = prod, 351s + na.rm = FALSE) 351s + } 351s > 351s 351s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 351s Copyright (C) 2024 The R Foundation for Statistical Computing 351s Platform: s390x-ibm-linux-gnu (64-bit) 351s 351s R is free software and comes with ABSOLUTELY NO WARRANTY. 351s You are welcome to redistribute it under certain conditions. 351s Type 'license()' or 'licence()' for distribution details. 351s 351s R is a collaborative project with many contributors. 351s Type 'contributors()' for more information and 351s 'citation()' on how to cite R or R packages in publications. 351s 351s Type 'demo()' for some demos, 'help()' for on-line help, or 351s 'help.start()' for an HTML browser interface to help. 351s Type 'q()' to quit R. 351s 351s > library("matrixStats") 351s > library("utils") ## utils::str 351s > 351s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351s > # Local functions 351s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351s > psortKM_R <- function(x, k, m) { 351s + x <- sort(x) 351s + x[(k - m + 1):k] 351s + } 351s > 351s > psortKM_R2 <- function(x, k, m) { 351s + partial <- (k - m + 1):k 351s + x <- sort.int(x, partial = partial) 351s + x[partial] 351s + } 351s > 351s > 351s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351s > # Consistency checks 351s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351s > set.seed(1) 351s > 351s > cat("Consistency checks:\n") 351s Consistency checks: 351s > x <- 1:30 351s > x[18:20] <- 20 351s > y <- sample(x) 351s > cat("x:\n") 351s x: 351s > str(x) 351s num [1:30] 1 2 3 4 5 6 7 8 9 10 ... 351s > cat("sample(x):\n") 351s sample(x): 351s > str(y) 351s num [1:30] 25 4 7 1 2 23 11 14 20 20 ... 351s > 351s > for (k in c(1L, 2L, 20L, 21L, length(x))) { 351s + for (m in 1:min(5L, k)) { 351s + px0 <- psortKM_R(x, k = k, m = m) 351s + px0b <- psortKM_R2(x, k = k, m = m) 351s + stopifnot(identical(px0b, px0)) 351s + px1 <- matrixStats:::.psortKM(x, k = k, m = m) 351s + cat(sprintf(".psortKM(x, k = %d, m = %d):\n", k, m)) 351s + print(px1) 351s + stopifnot(identical(px1, px0)) 351s + 351s + py0 <- psortKM_R(y, k = k, m = m) 351s + py0b <- psortKM_R2(y, k = k, m = m) 351s + stopifnot(identical(py0b, py0)) 351s + py1 <- matrixStats:::.psortKM(y, k = k, m = m) 351s + cat(sprintf(".psortKM(y, k = %d, m = %d):\n", k, m)) 351s + print(py1) 351s + stopifnot(identical(py1, py0)) 351s + stopifnot(identical(py1, px1)) 351s + } # for (m ...) 351s + } # for (k ...) 351s .psortKM(x, k = 1, m = 1): 351s [1] 1 351s .psortKM(y, k = 1, m = 1): 351s [1] 1 351s .psortKM(x, k = 2, m = 1): 351s [1] 2 351s .psortKM(y, k = 2, m = 1): 351s [1] 2 351s .psortKM(x, k = 2, m = 2): 351s [1] 1 2 351s .psortKM(y, k = 2, m = 2): 351s [1] 1 2 351s .psortKM(x, k = 20, m = 1): 351s [1] 20 351s .psortKM(y, k = 20, m = 1): 351s [1] 20 351s .psortKM(x, k = 20, m = 2): 351s [1] 20 20 351s .psortKM(y, k = 20, m = 2): 351s [1] 20 20 351s .psortKM(x, k = 20, m = 3): 351s [1] 20 20 20 351s .psortKM(y, k = 20, m = 3): 351s [1] 20 20 20 351s .psortKM(x, k = 20, m = 4): 351s [1] 17 20 20 20 351s .psortKM(y, k = 20, m = 4): 351s [1] 17 20 20 20 351s .psortKM(x, k = 20, m = 5): 351s [1] 16 17 20 20 20 351s .psortKM(y, k = 20, m = 5): 351s [1] 16 17 20 20 20 351s .psortKM(x, k = 21, m = 1): 351s [1] 21 351s .psortKM(y, k = 21, m = 1): 351s [1] 21 351s .psortKM(x, k = 21, m = 2): 351s [1] 20 21 351s .psortKM(y, k = 21, m = 2): 351s [1] 20 21 351s .psortKM(x, k = 21, m = 3): 351s [1] 20 20 21 351s .psortKM(y, k = 21, m = 3): 351s [1] 20 20 21 351s .psortKM(x, k = 21, m = 4): 351s [1] 20 20 20 21 351s .psortKM(y, k = 21, m = 4): 351s [1] 20 20 20 21 351s .psortKM(x, k = 21, m = 5): 351s [1] 17 20 20 20 21 351s .psortKM(y, k = 21, m = 5): 351s [1] 17 20 20 20 21 351s .psortKM(x, k = 30, m = 1): 351s [1] 30 351s .psortKM(y, k = 30, m = 1): 351s [1] 30 351s .psortKM(x, k = 30, m = 2): 351s [1] 29 30 351s .psortKM(y, k = 30, m = 2): 351s [1] 29 30 351s .psortKM(x, k = 30, m = 3): 351s [1] 28 29 30 351s .psortKM(y, k = 30, m = 3): 351s [1] 28 29 30 351s .psortKM(x, k = 30, m = 4): 351s [1] 27 28 29 30 351s .psortKM(y, k = 30, m = 4): 351s [1] 27 28 29 30 351s .psortKM(x, k = 30, m = 5): 351s [1] 26 27 28 29 30 351s .psortKM(y, k = 30, m = 5): 351s [1] 26 27 28 29 30 351s > 351s 351s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 351s Copyright (C) 2024 The R Foundation for Statistical Computing 351s Platform: s390x-ibm-linux-gnu (64-bit) 351s 351s R is free software and comes with ABSOLUTELY NO WARRANTY. 351s You are welcome to redistribute it under certain conditions. 351s Type 'license()' or 'licence()' for distribution details. 351s 351s R is a collaborative project with many contributors. 351s Type 'contributors()' for more information and 351s 'citation()' on how to cite R or R packages in publications. 351s 351s Type 'demo()' for some demos, 'help()' for on-line help, or 351s 'help.start()' for an HTML browser interface to help. 351s Type 'q()' to quit R. 351s 351s > library("matrixStats") 351s > 351s > rowAlls_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 351s + if (is.na(value)) { 351s + res <- apply(is.na(x), MARGIN = 1L, FUN = all, na.rm = na.rm) 351s + } else { 351s + y <- x == value 351s + 351s + # Preserve dimnames attribute 351s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 351s + if (!isTRUE(all.equal(dim(y), dim))) { 351s + dim(y) <- dim 351s + dimnames(y) <- dimnames(x) 351s + } 351s + 351s + res <- apply(y, MARGIN = 1L, FUN = all, na.rm = na.rm) 351s + } 351s + if (is.na(useNames) || !useNames) names(res) <- NULL 351s + res 351s + } 351s > 351s > rowAnys_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 351s + if (is.na(value)) { 351s + res <- apply(is.na(x), MARGIN = 1L, FUN = any, na.rm = na.rm) 351s + } else { 351s + y <- x == value 351s + 351s + # Preserve dimnames attribute 351s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 351s + if (!isTRUE(all.equal(dim(y), dim))) { 351s + dim(y) <- dim 351s + dimnames(y) <- dimnames(x) 351s + } 351s + 351s + res <- apply(y, MARGIN = 1L, FUN = any, na.rm = na.rm) 351s + } 351s + if (is.na(useNames) || !useNames) names(res) <- NULL 351s + res 351s + } 351s > 351s > rowAnyMissings_R <- function(x, ..., useNames = NA) { 351s + res <- apply(x, MARGIN = 1L, FUN = anyMissing) 351s + if (is.na(useNames) || !useNames) names(res) <- NULL 351s + res 351s + } 351s > 351s > 351s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351s > # Data type: logical 351s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 351s > x <- matrix(FALSE, nrow = 10L, ncol = 4L) 351s > x[7:8, 2:3] <- TRUE 351s > x[1:3, ] <- TRUE 351s > x[, 1] <- TRUE 351s > x[4, ] <- FALSE 351s > x[, 4] <- FALSE 351s > x[2, ] <- FALSE 351s > x[3, ] <- TRUE 351s > 351s > # To check names attribute 351s > dimnames <- list(letters[1:10], LETTERS[1:4]) 351s > 351s > for (kk in 1:3) { 351s + if (kk == 2) { 351s + x[2, 2] <- NA 351s + } else if (kk == 3) { 351s + x[, 2] <- NA 351s + x[2, ] <- NA 351s + } 351s + 351s + # Test with and without dimnames on x 351s + for (setDimnames in c(TRUE, FALSE)) { 351s + dimnames(x) <- if (setDimnames) dimnames else NULL 351s + 351s + for (na.rm in c(FALSE, TRUE)) { 351s + # Check names attribute 351s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 351s + m0 <- rowAlls_R(x, na.rm = na.rm, useNames = useNames) 351s + m1 <- rowAlls(x, na.rm = na.rm, useNames = useNames) 351s + m2 <- colAlls(t(x), na.rm = na.rm, useNames = useNames) 351s + str(list("all()", m0 = m0, m1 = m1, m2 = m2)) 351s + stopifnot(identical(m1, m0)) 351s + stopifnot(identical(m2, m0)) 351s + 351s + m0 <- rowAnys_R(x, na.rm = na.rm, useNames = useNames) 351s + m1 <- rowAnys(x, na.rm = na.rm, useNames = useNames) 351s + m2 <- colAnys(t(x), na.rm = na.rm, useNames = useNames) 351s + str(list("any()", m0 = m0, m1 = m1, m2 = m2)) 351s + stopifnot(identical(m1, m0)) 351s + stopifnot(identical(m2, m0)) 351s + 351s + m0 <- rowAnyMissings_R(x, useNames = useNames) 351s + m1 <- rowAnyMissings(x, useNames = useNames) 351s + m2 <- colAnyMissings(t(x), useNames = useNames) 351s + str(list("anyMissing()", m0 = m0, m1 = m1, m2 = m2)) 351s + stopifnot(identical(m1, m0)) 351s + stopifnot(identical(m2, m0)) 351s + } 351s + } 351s + } 351s + } # for (kk ...) 351s List of 4 351s $ : chr "all()" 351s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 351s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 351s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 351s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 351s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 351s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 351s List of 4 351s $ : chr "any()" 351s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 351s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 351s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 351s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 351s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 351s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 351s List of 4 351s $ : chr "anyMissing()" 351s $ m0: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 351s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 351s $ m1: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 351s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 351s $ m2: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 351s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 351s List of 4 351s $ : chr "all()" 351s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 351s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 351s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 351s List of 4 351s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "any()" 352s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "any()" 352s $ m0: Named logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "any()" 352s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: Named logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "any()" 352s $ m0: Named logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s $ m1: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s $ m2: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: Named logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "any()" 352s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m1: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s $ m2: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s $ m1: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s $ m2: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s $ m1: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s $ m2: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s List of 4 352s $ : chr "all()" 352s $ m0: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s $ m1: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s $ m2: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 352s List of 4 352s $ : chr "any()" 352s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 352s List of 4 352s $ : chr "anyMissing()" 352s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 352s > 352s > 352s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 352s > # Data type: integer 352s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 352s > x <- matrix(rep(1:6, length.out = 4 * 5), nrow = 4L, ncol = 5L) 352s > x[2, ] <- 7L 352s > x[3, 1] <- 7L 352s > x[2:3, 3:4] <- NA_integer_ 352s > 352s > # To check names attribute 352s > dimnames <- list(letters[1:4], LETTERS[1:5]) 352s > 352s > # Row/column counts 352s > value <- 7L 352s > 352s > # Test with and without dimnames on x 352s > for (setDimnames in c(TRUE, FALSE)) { 352s + dimnames(x) <- if (setDimnames) dimnames else NULL 352s + for (na.rm in c(FALSE, TRUE)) { 352s + # Check names attribute 352s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 352s + r0 <- rowAlls_R(x, value = value, na.rm = na.rm, useNames = useNames) 352s + r1 <- rowAlls(x, value = value, na.rm = na.rm, useNames = useNames) 352s + r2 <- colAlls(t(x), value = value, na.rm = na.rm, useNames = useNames) 352s + stopifnot(identical(r1, r0)) 352s + stopifnot(identical(r2, r1)) 352s + if (!is.na(useNames) && !useNames && !setDimnames) { 352s + for (rr in seq_len(nrow(x))) { 352s + c <- allValue(x[rr, ], value = value, na.rm = na.rm) 352s + stopifnot(identical(c, r1[rr])) 352s + c <- allValue(x[rr, ], value = value, na.rm = na.rm) 352s + stopifnot(identical(c, r1[rr])) 352s + } 352s + } 352s + 352s + r0 <- rowAnys_R(x, value = value, na.rm = na.rm, useNames = useNames) 352s + r1 <- rowAnys(x, value = value, na.rm = na.rm, useNames = useNames) 352s + r2 <- colAnys(t(x), value = value, na.rm = na.rm, useNames = useNames) 352s + stopifnot(identical(r1, r0)) 352s + stopifnot(identical(r2, r1)) 352s + if (!is.na(useNames) && !useNames && !setDimnames) { 352s + for (rr in seq_len(nrow(x))) { 352s + c <- anyValue(x[rr, ], value = value, na.rm = na.rm) 352s + stopifnot(identical(c, r1[rr])) 352s + c <- anyValue(x[rr, ], value = value, na.rm = na.rm) 352s + stopifnot(identical(c, r1[rr])) 352s + } 352s + } 352s + } 352s + } 352s + } 352s > 352s > 352s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 352s > # rowAlls(x) et al. on numeric 'x' with logical 'value' 352s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 352s > x <- matrix(0, nrow = 4L, ncol = 5L) 352s > x[2:4, 2] <- (1:3) / 4 352s > x[2, 2:4] <- (1:3) / 4 352s > x[3:4, 3] <- (3:4) / 4 352s > x[3, 3:4] <- (3:4) / 4 352s > x[1:4, 5] <- (1:4) / 5 352s > x[4, 4] <- NA_real_ 352s > 352s > # To check names attribute 352s > dimnames <- list(letters[1:4], LETTERS[1:5]) 352s > 352s > for (value in c(TRUE, FALSE)) { 352s + for (na.rm in c(FALSE, TRUE)) { 352s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 352s + y <- rowAnys(x, na.rm = na.rm, value = value) 352s + stopifnot(identical(y, y0)) 352s + # Check names attribute 352s + dimnames(x) <- dimnames 352s + y <- rowAnys(x, na.rm = na.rm, value = value, useNames = FALSE) 352s + stopifnot(all.equal(y, y0)) 352s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 352s + y <- rowAnys(x, na.rm = na.rm, value = value, useNames = TRUE) 352s + stopifnot(all.equal(y, y0)) 352s + dimnames(x) <- NULL 352s + 352s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 352s + y <- colAnys(x, na.rm = na.rm, value = value) 352s + stopifnot(identical(y, y0)) 352s + # Check names attribute 352s + dimnames(x) <- dimnames 352s + y <- colAnys(x, na.rm = na.rm, value = value, useNames = FALSE) 352s + stopifnot(all.equal(y, y0)) 352s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 352s + y <- colAnys(x, na.rm = na.rm, value = value, useNames = TRUE) 352s + stopifnot(all.equal(y, y0)) 352s + dimnames(x) <- NULL 352s + 352s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 352s + y <- rowAlls(x, na.rm = na.rm, value = value) 352s + stopifnot(identical(y, y0)) 352s + # Check names attribute 352s + dimnames(x) <- dimnames 352s + y <- rowAlls(x, na.rm = na.rm, value = value, useNames = FALSE) 352s + stopifnot(all.equal(y, y0)) 352s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 352s + y <- rowAlls(x, na.rm = na.rm, value = value, useNames = TRUE) 352s + stopifnot(all.equal(y, y0)) 352s + dimnames(x) <- NULL 352s + 352s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 352s + y <- colAlls(x, na.rm = na.rm, value = value) 352s + stopifnot(identical(y, y0)) 352s + print(y0) 352s + # Check names attribute 352s + dimnames(x) <- dimnames 352s + y <- colAlls(x, na.rm = na.rm, value = value, useNames = FALSE) 352s + stopifnot(all.equal(y, y0)) 352s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 352s + y <- colAlls(x, na.rm = na.rm, value = value, useNames = TRUE) 352s + stopifnot(all.equal(y, y0)) 352s + dimnames(x) <- NULL 352s + } ## for (na.rm ...) 352s + } ## for(value ...) 352s [1] FALSE FALSE FALSE FALSE TRUE 352s [1] FALSE FALSE FALSE FALSE TRUE 352s [1] TRUE FALSE FALSE FALSE FALSE 352s [1] TRUE FALSE FALSE FALSE FALSE 352s > 352s > 352s > 352s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 352s > # Data type: character (not sure if this should be supported) 352s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 352s > all_R <- function(x, value = TRUE, ...) { 352s + if (is.na(value)) { 352s + all(is.na(x), ...) 352s + } else { 352s + all(x == value, ...) 352s + } 352s + } 352s > 352s > any_R <- function(x, value = TRUE, ...) { 352s + if (is.na(value)) { 352s + any(is.na(x), ...) 352s + } else { 352s + any(x == value, ...) 352s + } 352s + } 352s > 352s > x <- matrix(rep(letters, length.out = 10 * 5), nrow = 10L, ncol = 5L) 352s > x[2, ] <- "g" 352s > x[2:4, 3:4] <- NA_character_ 352s > 352s > # To check names attribute 352s > dimnames <- list(letters[1:10], LETTERS[1:5]) 352s > 352s > # Test with and without dimnames on x 352s > for (setDimnames in c(TRUE, FALSE)) { 352s + dimnames(x) <- if (setDimnames) dimnames else NULL 352s + 352s + # Row/column counts 352s + for (value in c("g", NA_character_)) { 352s + for (na.rm in c(FALSE, TRUE)) { 352s + # Check names attribute 352s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 352s + r0 <- rowAlls_R(x, value = value, na.rm = na.rm, useNames = useNames) 352s + r1 <- rowAlls(x, value = value, na.rm = na.rm, useNames = useNames) 352s + r2 <- colAlls(t(x), value = value, na.rm = na.rm, useNames = useNames) 352s + stopifnot(identical(r1, r0)) 352s + stopifnot(identical(r2, r1)) 352s + if (!is.na(useNames) && !useNames && !setDimnames) { 352s + for (rr in seq_len(nrow(x))) { 352s + c0 <- all_R(x[rr, ], value, na.rm = na.rm) 352s + c <- allValue(x[rr, ], value = value, na.rm = na.rm) 352s + stopifnot(identical(c, r1[rr])) 352s + stopifnot(identical(c, c0)) 352s + } 352s + } 352s + 352s + r0 <- rowAnys_R(x, value = value, na.rm = na.rm, useNames = useNames) 352s + r1 <- rowAnys(x, value = value, na.rm = na.rm, useNames = useNames) 352s + r2 <- colAnys(t(x), value = value, na.rm = na.rm, useNames = useNames) 352s + stopifnot(identical(r1, r0)) 352s + stopifnot(identical(r2, r1)) 352s + if (!is.na(useNames) && !useNames && !setDimnames) { 352s + for (rr in seq_len(nrow(x))) { 352s + c0 <- any_R(x[rr, ], value, na.rm = na.rm) 352s + c <- anyValue(x[rr, ], value = value, na.rm = na.rm) 352s + stopifnot(identical(c, c0)) 352s + stopifnot(identical(c, r1[rr])) 352s + } 352s + } 352s + } 352s + } 352s + } 352s + } 352s > 352s > 352s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 352s > # NA 0 test 352s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 352s > x <- matrix(0, nrow = 3L, ncol = 3L) 352s > x[1, ] <- c(NA_real_, NA_real_, 0) 352s > x[3, ] <- c(1, 0, 1) 352s > 352s > dimnames <- list(letters[1:3], LETTERS[1:3]) 352s > 352s > # Test with and without dimnames on x 352s > for (setDimnames in c(TRUE, FALSE)) { 352s + dimnames(x) <- if (setDimnames) dimnames else NULL 352s + # Check names attribute 352s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 352s + r0 <- rowAnys_R(x, value = 0, useNames = useNames) 352s + r1 <- rowAnys(x, value = 0, useNames = useNames) 352s + stopifnot(identical(r0, r1)) 352s + } 352s + } 352s > 352s 352s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 352s Copyright (C) 2024 The R Foundation for Statistical Computing 352s Platform: s390x-ibm-linux-gnu (64-bit) 352s 352s R is free software and comes with ABSOLUTELY NO WARRANTY. 352s You are welcome to redistribute it under certain conditions. 352s Type 'license()' or 'licence()' for distribution details. 352s 352s R is a collaborative project with many contributors. 352s Type 'contributors()' for more information and 352s 'citation()' on how to cite R or R packages in publications. 352s 352s Type 'demo()' for some demos, 'help()' for on-line help, or 352s 'help.start()' for an HTML browser interface to help. 352s Type 'q()' to quit R. 352s 352s > library("matrixStats") 352s > 352s > rowAlls_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 352s + if (is.na(value)) { 352s + res <- apply(is.na(x), MARGIN = 1L, FUN = all, na.rm = na.rm) 352s + } else { 352s + y <- x == value 352s + 352s + # Preserve dimnames attribute 352s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 352s + if (!isTRUE(all.equal(dim(y), dim))) { 352s + dim(y) <- dim 352s + dimnames(y) <- dimnames(x) 352s + } 352s + 352s + res <- apply(y, MARGIN = 1L, FUN = all, na.rm = na.rm) 352s + } 352s + if (is.na(useNames) || !useNames) names(res) <- NULL 352s + res 352s + } 352s > 352s > rowAnys_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 352s + if (is.na(value)) { 352s + res <- apply(is.na(x), MARGIN = 1L, FUN = any, na.rm = na.rm) 352s + } else { 352s + y <- x == value 352s + 352s + # Preserve dimnames attribute 352s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 352s + if (!isTRUE(all.equal(dim(y), dim))) { 352s + dim(y) <- dim 352s + dimnames(y) <- dimnames(x) 352s + } 352s + 352s + res <- apply(y, MARGIN = 1L, FUN = any, na.rm = na.rm) 352s + } 352s + if (is.na(useNames) || !useNames) names(res) <- NULL 352s + res 352s + } 352s > 352s > rowAnyMissings_R <- function(x, ..., useNames = NA) { 352s + res <- apply(x, MARGIN = 1L, FUN = anyMissing) 352s + if (is.na(useNames) || !useNames) names(res) <- NULL 352s + res 352s + } 352s > 352s > 352s > all_R <- function(x, value = TRUE, ...) { 352s + if (is.na(value)) { 352s + all(is.na(x), ...) 352s + } else { 352s + all(x == value, ...) 352s + } 352s + } 352s > 352s > any_R <- function(x, value = TRUE, ...) { 352s + if (is.na(value)) { 352s + any(is.na(x), ...) 352s + } else { 352s + any(x == value, ...) 352s + } 352s + } 352s > 352s > 352s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 352s > # Subsetted tests 352s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 352s > source("utils/validateIndicesFramework.R") 352s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 352s > storage.mode(x) <- "integer" 352s > x[2:3, ] <- NA_integer_ 352s > x[2, 1] <- 0L 352s > x[4:5, ] <- 0L 352s > x[4, 6] <- NA_integer_ 352s > 352s > # To check names attribute 352s > dimnames <- list(letters[1:6], LETTERS[1:6]) 352s > 352s > # Test with and without dimnames on x 352s > for (setDimnames in c(TRUE, FALSE)) { 352s + if (setDimnames) dimnames(x) <- dimnames 352s + else dimnames(x) <- NULL 352s + 352s + count <- 0L 352s + for (rows in index_cases) { 352s + for (cols in index_cases) { 352s + count <- count + 1L 352s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 352s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 352s + useNames <- useNames[count %% length(useNames) + 1] 352s + 352s + validateIndicesTestMatrix(x, rows, cols, 352s + ftest = rowAlls, fsure = rowAlls_R, 352s + value = 0, na.rm = TRUE, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + ftest = rowAlls, fsure = rowAlls_R, 352s + value = 0, na.rm = FALSE, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + ftest = rowAlls, fsure = rowAlls_R, 352s + value = NA_integer_, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + fcoltest = colAlls, fsure = rowAlls_R, 352s + value = 0, na.rm = TRUE, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + fcoltest = colAlls, fsure = rowAlls_R, 352s + value = 0, na.rm = FALSE, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + fcoltest = colAlls, fsure = rowAlls_R, 352s + value = NA_integer_, useNames = useNames) 352s + 352s + validateIndicesTestMatrix(x, rows, cols, 352s + ftest = rowAnys, fsure = rowAnys_R, 352s + value = 0, na.rm = TRUE, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + ftest = rowAnys, fsure = rowAnys_R, 352s + value = 0, na.rm = FALSE, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + ftest = rowAnys, fsure = rowAnys_R, 352s + value = NA_integer_, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + fcoltest = colAnys, fsure = rowAnys_R, 352s + value = 0, na.rm = TRUE, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + fcoltest = colAnys, fsure = rowAnys_R, 352s + value = 0, na.rm = FALSE, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + fcoltest = colAnys, fsure = rowAnys_R, 352s + value = NA_integer_, useNames = useNames) 352s + 352s + validateIndicesTestMatrix(x, rows, cols, 352s + ftest = rowAnyMissings, 352s + fsure = rowAnyMissings_R, useNames = useNames) 352s + validateIndicesTestMatrix(x, rows, cols, 352s + fcoltest = colAnyMissings, 352s + fsure = rowAnyMissings_R, useNames = useNames) 352s + } 352s + } 352s + } 354s > 354s > for (rr in seq_len(nrow(x))) { 354s + for (idxs in index_cases) { 354s + validateIndicesTestVector(x[rr, ], idxs, 354s + ftest = allValue, fsure = all_R, 354s + value = 0, na.rm = TRUE) 354s + validateIndicesTestVector(x[rr, ], idxs, 354s + ftest = allValue, fsure = all_R, 354s + value = 0, na.rm = FALSE) 354s + validateIndicesTestVector(x[rr, ], idxs, 354s + ftest = allValue, fsure = all_R, 354s + value = NA_integer_) 354s + 354s + validateIndicesTestVector(x[rr, ], idxs, 354s + ftest = anyValue, fsure = any_R, 354s + value = 0, na.rm = TRUE) 354s + validateIndicesTestVector(x[rr, ], idxs, 354s + ftest = anyValue, fsure = any_R, 354s + value = 0, na.rm = FALSE) 354s + validateIndicesTestVector(x[rr, ], idxs, 354s + ftest = anyValue, fsure = any_R, 354s + value = NA_integer_) 354s + } 354s + } 354s > 354s > 354s > storage.mode(x) <- "character" 354s > # Test with and without dimnames on x 354s > for (setDimnames in c(TRUE, FALSE)) { 354s + if (setDimnames) dimnames(x) <- dimnames 354s + else dimnames(x) <- NULL 354s + for (rows in index_cases) { 354s + for (cols in index_cases) { 354s + # Check names attribute 354s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 354s + validateIndicesTestMatrix(x, rows, cols, 354s + ftest = rowAlls, fsure = rowAlls_R, 354s + value = "0", na.rm = TRUE, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + ftest = rowAlls, fsure = rowAlls_R, 354s + value = "0", na.rm = FALSE, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + ftest = rowAlls, fsure = rowAlls_R, 354s + value = NA_character_, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + fcoltest = colAlls, fsure = rowAlls_R, 354s + value = "0", na.rm = TRUE, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + fcoltest = colAlls, fsure = rowAlls_R, 354s + value = "0", na.rm = FALSE, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + fcoltest = colAlls, fsure = rowAlls_R, 354s + value = NA_character_, useNames = useNames) 354s + 354s + validateIndicesTestMatrix(x, rows, cols, 354s + ftest = rowAnys, fsure = rowAnys_R, 354s + value = "0", na.rm = TRUE, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + ftest = rowAnys, fsure = rowAnys_R, 354s + value = "0", na.rm = FALSE, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + ftest = rowAnys, fsure = rowAnys_R, 354s + value = NA_character_, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + fcoltest = colAnys, fsure = rowAnys_R, 354s + value = "0", na.rm = TRUE, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + fcoltest = colAnys, fsure = rowAnys_R, 354s + value = "0", na.rm = FALSE, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + fcoltest = colAnys, fsure = rowAnys_R, 354s + value = NA_character_, useNames = useNames) 354s + 354s + validateIndicesTestMatrix(x, rows, cols, 354s + ftest = rowAnyMissings, 354s + fsure = rowAnyMissings_R, useNames = useNames) 354s + validateIndicesTestMatrix(x, rows, cols, 354s + fcoltest = colAnyMissings, 354s + fsure = rowAnyMissings_R, useNames = useNames) 354s + } 354s + } 354s + } 354s + } 357s > 357s > for (rr in seq_len(nrow(x))) { 357s + for (idxs in index_cases) { 357s + validateIndicesTestVector(x[rr, ], idxs, 357s + ftest = allValue, fsure = all_R, 357s + value = "0", na.rm = TRUE) 357s + validateIndicesTestVector(x[rr, ], idxs, 357s + ftest = allValue, fsure = all_R, 357s + value = "0", na.rm = FALSE) 357s + validateIndicesTestVector(x[rr, ], idxs, 357s + ftest = allValue, fsure = all_R, 357s + value = NA_integer_) 357s + 357s + validateIndicesTestVector(x[rr, ], idxs, 357s + ftest = anyValue, fsure = any_R, 357s + value = "0", na.rm = TRUE) 357s + validateIndicesTestVector(x[rr, ], idxs, 357s + ftest = anyValue, fsure = any_R, 357s + value = "0", na.rm = FALSE) 357s + validateIndicesTestVector(x[rr, ], idxs, 357s + ftest = anyValue, fsure = any_R, 357s + value = NA_integer_) 357s + } 357s + } 357s > 358s 358s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 358s Copyright (C) 2024 The R Foundation for Statistical Computing 358s Platform: s390x-ibm-linux-gnu (64-bit) 358s 358s R is free software and comes with ABSOLUTELY NO WARRANTY. 358s You are welcome to redistribute it under certain conditions. 358s Type 'license()' or 'licence()' for distribution details. 358s 358s R is a collaborative project with many contributors. 358s Type 'contributors()' for more information and 358s 'citation()' on how to cite R or R packages in publications. 358s 358s Type 'demo()' for some demos, 'help()' for on-line help, or 358s 'help.start()' for an HTML browser interface to help. 358s Type 'q()' to quit R. 358s 358s > library("matrixStats") 358s > 358s > X <- matrix(rnorm(20 * 6), nrow = 20, ncol = 6) 358s > rownames(X) <- LETTERS[1:nrow(X)] 358s > colnames(X) <- letters[1:ncol(X)] 358s > print(X) 358s a b c d e f 358s A -0.12681517 0.26224071 -1.4778341 1.66356809 -0.4050689 -0.55850905 358s B -0.41633096 1.27457512 -0.5909093 0.63982674 -0.8673694 0.37532857 358s C 0.16241625 -1.56933656 -0.5960093 0.44399423 -0.7000012 1.01225465 358s D 0.50395240 -1.65692360 -0.9199502 -1.05954417 0.9558668 -0.28462041 358s E 0.01175605 0.74068875 -0.3483584 -0.19300196 0.2078134 2.27239538 358s F 0.04149907 -0.22941090 0.2987248 -0.14178977 0.4259311 -0.25117465 358s G 0.74505366 0.27148335 -0.3272712 0.62403408 0.9491801 -1.35110902 358s H -0.02044367 -2.14379348 1.1670786 -0.30430048 -0.2338375 0.09486442 358s I 1.28538912 -1.19302428 1.1276952 -0.75641038 0.6249164 0.30418018 358s J 0.07605995 -0.05064447 -0.5084538 -1.24884293 -0.1722712 -0.51421471 358s K 1.00628390 1.09867011 1.3747847 -0.13697603 0.8216061 -0.69255783 358s L 0.08500415 -0.53296134 -0.1296058 -0.31526533 0.2040496 -0.45102152 358s M -1.38216971 -0.94865198 -0.2211663 1.54807074 -0.9472360 0.14353861 358s N -0.29414343 -0.93202561 1.2341450 -1.02204722 2.1122181 -0.99746851 358s O -0.64420960 0.26505976 -0.7887462 -0.02687611 -0.1679611 -1.58012295 358s P 1.59983708 -0.07764332 -0.1674541 0.68394225 -0.4329916 -1.63059088 358s Q -0.58628881 0.74430284 0.7604640 1.65899845 1.0201701 1.69615521 358s R -0.31768800 -0.65522868 -0.9667103 0.50406137 1.1232059 -0.52297634 358s S -2.30534376 0.20434882 -0.9156107 -1.50518605 0.5218270 -1.93430042 358s T -1.28377427 0.36187175 1.9938260 -1.12556704 0.0446969 0.74315495 358s > 358s > 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > # Apply rowMeans() for 3 sets of 2 columns 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > nbr_of_sets <- 3L 358s > S <- matrix(1:ncol(X), ncol = nbr_of_sets) 358s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 358s > print(S) 358s s1 s2 s3 358s [1,] 1 3 5 358s [2,] 2 4 6 358s > 358s > Z <- rowAvgsPerColSet(X, S = S) 358s > print(Z) 358s s1 s2 s3 358s A 0.06771277 0.09286702 -0.48178896 358s B 0.42912208 0.02445871 -0.24602043 358s C -0.70346016 -0.07600755 0.15612671 358s D -0.57648560 -0.98974719 0.33562317 358s E 0.37622240 -0.27068017 1.24010439 358s F -0.09395592 0.07846751 0.08737825 358s G 0.50826850 0.14838141 -0.20096448 358s H -1.08211858 0.43138908 -0.06948655 358s I 0.04618242 0.18564241 0.46454829 358s J 0.01270774 -0.87864834 -0.34324295 358s K 1.05247701 0.61890432 0.06452412 358s L -0.22397859 -0.22243556 -0.12348596 358s M -1.16541084 0.66345221 -0.40184870 358s N -0.61308452 0.10604887 0.55737481 358s O -0.18957492 -0.40781114 -0.87404200 358s P 0.76109688 0.25824405 -1.03179126 358s Q 0.07900702 1.20973125 1.35816267 358s R -0.48645834 -0.23132445 0.30011478 358s S -1.05049747 -1.21039838 -0.70623670 358s T -0.46095126 0.43412947 0.39392593 358s > 358s > # Validation 358s > Z0 <- cbind(s1 = rowMeans(X[, 1:2]), s2 = rowMeans(X[, 3:4]), 358s + s3 = rowMeans(X[, 5:6])) 358s > stopifnot(identical(drop(Z), Z0)) 358s > 358s > 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > # Apply colMeans() for 5 sets of 4 rows 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > nbr_of_sets <- 5L 358s > S <- matrix(1:nrow(X), ncol = nbr_of_sets) 358s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 358s > print(S) 358s s1 s2 s3 s4 s5 358s [1,] 1 5 9 13 17 358s [2,] 2 6 10 14 18 358s [3,] 3 7 11 15 19 358s [4,] 4 8 12 16 20 358s > 358s > Z <- colAvgsPerRowSet(X, S = S) 358s > print(Z) 358s a b c d e f 358s s1 0.03080563 -0.4223611 -0.89617573 0.421961220 -0.2541432 0.136113440 358s s2 0.19446628 -0.3402581 0.19754345 -0.003764534 0.3372718 0.191244032 358s s3 0.61318428 -0.1694900 0.46610509 -0.614373670 0.3695752 -0.338403469 358s s4 -0.18017142 -0.4233153 0.01419458 0.295772416 0.1410074 -1.016160934 358s s5 -1.12327371 0.1638237 0.21799226 -0.116923319 0.6774750 -0.004491649 358s > 358s > # Validation 358s > Z0 <- rbind(s1 = colMeans(X[1:4, ]), s2 = colMeans(X[5:8, ]), 358s + s3 = colMeans(X[9:12, ]), s4 = colMeans(X[13:16, ]), 358s + s5 = colMeans(X[17:20, ])) 358s > stopifnot(identical(drop(Z), Z0)) 358s > 358s > 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > # When there is only one "complete" set 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > nbr_of_sets <- 1L 358s > S <- matrix(1:ncol(X), ncol = nbr_of_sets) 358s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 358s > print(S) 358s s1 358s [1,] 1 358s [2,] 2 358s [3,] 3 358s [4,] 4 358s [5,] 5 358s [6,] 6 358s > 358s > Z <- rowAvgsPerColSet(X, S = S, FUN = rowMeans) 358s > print(Z) 358s s1 358s A -0.10706972 358s B 0.06918679 358s C -0.20778033 358s D -0.41020321 358s E 0.44854887 358s F 0.02396328 358s G 0.15189515 358s H -0.24007202 358s I 0.23212438 358s J -0.40306118 358s K 0.57863515 358s L -0.18996670 358s M -0.30126911 358s N 0.01677972 358s O -0.49047602 358s P -0.00415011 358s Q 0.88230031 358s R -0.13922267 358s S -0.98904418 358s T 0.12236805 358s > 358s > Z0 <- rowMeans(X) 358s > stopifnot(identical(drop(Z), Z0)) 358s > 358s > 358s > nbr_of_sets <- 1L 358s > S <- matrix(1:nrow(X), ncol = nbr_of_sets) 358s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 358s > print(S) 358s s1 358s [1,] 1 358s [2,] 2 358s [3,] 3 358s [4,] 4 358s [5,] 5 358s [6,] 6 358s [7,] 7 358s [8,] 8 358s [9,] 9 358s [10,] 10 358s [11,] 11 358s [12,] 12 358s [13,] 13 358s [14,] 14 358s [15,] 15 358s [16,] 16 358s [17,] 17 358s [18,] 18 358s [19,] 19 358s [20,] 20 358s > 358s > Z <- colAvgsPerRowSet(X, S = S, FUN = colMeans) 358s > print(Z) 358s a b c d e f 358s s1 -0.09299779 -0.2383202 -6.806904e-05 -0.003465577 0.2542372 -0.2063397 358s > 358s > Z0 <- colMeans(X) 358s > stopifnot(identical(drop(Z), Z0)) 358s > 358s > 358s > 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > # Use weights 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > nbr_of_sets <- 3L 358s > S <- matrix(1:ncol(X), ncol = nbr_of_sets) 358s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 358s > print(S) 358s s1 s2 s3 358s [1,] 1 3 5 358s [2,] 2 4 6 358s > 358s > W <- matrix(runif(length(X)), nrow = nrow(X), ncol = ncol(X)) 358s > Z1 <- rowAvgsPerColSet(X, W = W, S = S, FUN = rowWeightedMeans) 358s > print(Z1) 358s s1 s2 s3 358s A 0.06771277 0.09286702 -0.48178896 358s B 0.42912208 0.02445871 -0.24602043 358s C -0.70346016 -0.07600755 0.15612671 358s D -0.57648560 -0.98974719 0.33562317 358s E 0.37622240 -0.27068017 1.24010439 358s F -0.09395592 0.07846751 0.08737825 358s G 0.50826850 0.14838141 -0.20096448 358s H -1.08211858 0.43138908 -0.06948655 358s I 0.04618242 0.18564241 0.46454829 358s J 0.01270774 -0.87864834 -0.34324295 358s K 1.05247701 0.61890432 0.06452412 358s L -0.22397859 -0.22243556 -0.12348596 358s M -1.16541084 0.66345221 -0.40184870 358s N -0.61308452 0.10604887 0.55737481 358s O -0.18957492 -0.40781114 -0.87404200 358s P 0.76109688 0.25824405 -1.03179126 358s Q 0.07900702 1.20973125 1.35816267 358s R -0.48645834 -0.23132445 0.30011478 358s S -1.05049747 -1.21039838 -0.70623670 358s T -0.46095126 0.43412947 0.39392593 358s > Z2 <- colAvgsPerRowSet(X, W = W, S = S, FUN = colWeightedMeans) 358s > print(Z2) 358s a b c d e f 358s s1 -0.27157307 0.7684079 -1.0343717 1.1516974 -0.6362191 -0.09159024 358s s2 0.33318432 -1.6131301 -0.7579798 -0.3077750 0.1279328 0.36381712 358s s3 0.02662756 0.2556389 -0.0248168 -0.1673959 0.3168723 1.01061036 358s > 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > # Result should always be a matrix, including when nrow(X) <= 1 358s > # (https://github.com/HenrikBengtsson/matrixStats/issues/108) 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > X <- matrix(1:3, nrow = 1L, ncol = 3L) 358s > S <- matrix(1, nrow = 1L, ncol = 1L) 358s > Z1 <- rowAvgsPerColSet(X, S = S) 358s > stopifnot(is.matrix(Z1)) 358s > Z2 <- rowAvgsPerColSet(X, S = S, rows = 0) 358s > stopifnot(is.matrix(Z2)) 358s > 358s > 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > # Works with many, one or zero columns / rows 358s > # (https://github.com/HenrikBengtsson/matrixStats/issues/172) 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > S <- cbind(1:2, 3:4, 5:6) 358s > X <- matrix(rnorm(2 * 6), nrow = 6, ncol = 2) 358s > Z2 <- colAvgsPerRowSet(X, S = S, FUN = colSums2) 358s > Z2_ref <- rbind(colSums2(X[S[,1], ,drop=FALSE]), 358s + colSums2(X[S[,2], ,drop=FALSE]), 358s + colSums2(X[S[,3], ,drop=FALSE])) 358s > stopifnot(identical(Z2, Z2_ref)) 358s > X <- matrix(rnorm(6), nrow = 6, ncol = 1) 358s > Z1 <- colAvgsPerRowSet(X, S = S, FUN = colSums2) 358s > Z1_ref <- rbind(colSums2(X[S[,1], ,drop=FALSE]), 358s + colSums2(X[S[,2], ,drop=FALSE]), 358s + colSums2(X[S[,3], ,drop=FALSE])) 358s > stopifnot(identical(Z1, Z1_ref)) 358s > X <- matrix(numeric(0), nrow = 6, ncol = 0) 358s > Z0 <- colAvgsPerRowSet(X, S = S, FUN = colSums2) 358s > Z0_ref <- matrix(numeric(0), nrow = ncol(S), ncol = 0) 358s > stopifnot(identical(Z0, unname(Z0_ref))) 358s > 358s > 358s > S <- rbind(1:4, 5:8) 358s > X <- matrix(rnorm(n = 2 * 8), nrow = 2, ncol = 8) 358s > Z2 <- rowAvgsPerColSet(X, S = S, FUN = rowMeans2) 358s > Z2_ref <- cbind(rowMeans2(X[,S[,1],drop=FALSE]), 358s + rowMeans2(X[,S[,2],drop=FALSE]), 358s + rowMeans2(X[,S[,3],drop=FALSE]), 358s + rowMeans2(X[,S[,4],drop=FALSE])) 358s > stopifnot(identical(Z2, Z2_ref)) 358s > X <- matrix(rnorm(n = 8), nrow = 1, ncol = 8) 358s > Z1 <- rowAvgsPerColSet(X, S = S, FUN = rowMeans2) 358s > Z1_ref <- cbind(rowMeans2(X[,S[,1],drop=FALSE]), 358s + rowMeans2(X[,S[,2],drop=FALSE]), 358s + rowMeans2(X[,S[,3],drop=FALSE]), 358s + rowMeans2(X[,S[,4],drop=FALSE])) 358s > stopifnot(identical(Z1, Z1_ref)) 358s > X <- matrix(numeric(0), nrow = 0, ncol = 8) 358s > Z0 <- rowAvgsPerColSet(X, S = S, FUN = rowMeans2) 358s > Z0_ref <- matrix(numeric(0), nrow = 0, ncol = ncol(S)) 358s > stopifnot(identical(Z0, Z0_ref)) 358s > 358s 358s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 358s Copyright (C) 2024 The R Foundation for Statistical Computing 358s Platform: s390x-ibm-linux-gnu (64-bit) 358s 358s R is free software and comes with ABSOLUTELY NO WARRANTY. 358s You are welcome to redistribute it under certain conditions. 358s Type 'license()' or 'licence()' for distribution details. 358s 358s R is a collaborative project with many contributors. 358s Type 'contributors()' for more information and 358s 'citation()' on how to cite R or R packages in publications. 358s 358s Type 'demo()' for some demos, 'help()' for on-line help, or 358s 'help.start()' for an HTML browser interface to help. 358s Type 'q()' to quit R. 358s 358s > library("matrixStats") 358s > 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > # Subsetted tests 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > source("utils/validateIndicesFramework.R") 358s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 358s > #W <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 358s > for (rows in index_cases) { 358s + for (cols in index_cases) { 358s + if (is.null(rows)) { 358s + rows <- seq_len(nrow(x)) 358s + rows_finite <- rows 358s + } else { 358s + rows_finite <- rows[is.finite(rows)] 358s + } 358s + 358s + if (is.null(cols)) { 358s + cols <- seq_len(ncol(x)) 358s + cols_finite <- cols 358s + } else { 358s + cols_finite <- cols[is.finite(cols)] 358s + } 358s + 358s + suppressWarnings({ 358s + actual <- tryCatch({ 358s + rowAvgsPerColSet(x, rows = rows, S = matrix(cols, ncol = 1), 358s + FUN = rowMeans) 358s + }, error = function(c) "error") 358s + expect <- tryCatch({ 358s + rowMeans(x[rows, cols_finite, drop = FALSE], na.rm = TRUE) 358s + }, error = function(c) "error") 358s + }) 358s + stopifnot(all.equal(as.vector(actual), expect)) 358s + 358s + suppressWarnings({ 358s + actual <- tryCatch({ 358s + colAvgsPerRowSet(x, cols = cols, S = matrix(rows, ncol = 1), 358s + FUN = colMeans) 358s + }, error = function(c) "error") 358s + expect <- tryCatch({ 358s + colMeans(x[rows_finite, cols, drop = FALSE], na.rm = TRUE) 358s + }, error = function(c) "error") 358s + }) 358s + stopifnot(all.equal(as.vector(actual), expect)) 358s + } 358s + } 358s > 358s 358s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 358s Copyright (C) 2024 The R Foundation for Statistical Computing 358s Platform: s390x-ibm-linux-gnu (64-bit) 358s 358s R is free software and comes with ABSOLUTELY NO WARRANTY. 358s You are welcome to redistribute it under certain conditions. 358s Type 'license()' or 'licence()' for distribution details. 358s 358s R is a collaborative project with many contributors. 358s Type 'contributors()' for more information and 358s 'citation()' on how to cite R or R packages in publications. 358s 358s Type 'demo()' for some demos, 'help()' for on-line help, or 358s 'help.start()' for an HTML browser interface to help. 358s Type 'q()' to quit R. 358s 358s > library("matrixStats") 358s > 358s > x <- matrix(1:27, ncol = 3) 358s > 358s > # To check names attribute 358s > dimnames <- list(letters[1:9], LETTERS[1:3]) 358s > 358s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 358s + res <- x[, idxs] 358s + # Preserve names attribute? 358s + if (is.na(useNames) || !useNames) names(res) <- NULL 358s + res 358s + } 358s > 358s > idxs <- 1L 358s > # Test with and without dimnames on x 358s > for (setDimnames in c(TRUE, FALSE)) { 358s + if (setDimnames) dimnames(x) <- dimnames 358s + else dimnames(x) <- NULL 358s + # Check names attribute 358s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 358s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 358s + y <- rowCollapse(x, idxs, useNames = useNames) 358s + stopifnot(identical(y, y_truth)) 358s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 358s + stopifnot(identical(y2, y)) 358s + } 358s + } 358s > 358s > idxs <- 2L 358s > # Test with and without dimnames on x 358s > for (setDimnames in c(TRUE, FALSE)) { 358s + if (setDimnames) dimnames(x) <- dimnames 358s + else dimnames(x) <- NULL 358s + # Check names attribute 358s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 358s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 358s + y <- rowCollapse(x, idxs, useNames = useNames) 358s + stopifnot(identical(y, y_truth)) 358s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 358s + stopifnot(identical(y2, y)) 358s + } 358s + } 358s > 358s > 358s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 358s + res <- c(x[1:5, 1], x[6:9, 3]) 358s + # Preserve names attribute? 358s + if (is.na(useNames) || !useNames) names(res) <- NULL 358s + res 358s + } 358s > 358s > idxs <- c(1, 1, 1, 1, 1, 3, 3, 3, 3) 358s > # Test with and without dimnames on x 358s > for (setDimnames in c(TRUE, FALSE)) { 358s + if (setDimnames) dimnames(x) <- dimnames 358s + else dimnames(x) <- NULL 358s + # Check names attribute 358s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 358s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 358s + y <- rowCollapse(x, idxs, useNames = useNames) 358s + stopifnot(identical(y, y_truth)) 358s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 358s + stopifnot(identical(y2, y)) 358s + } 358s + } 358s > 358s > 358s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 358s + res <- c(x[1, 1], x[2, 2], x[3, 3], x[4, 1], x[5, 2], 358s + x[6, 3], x[7, 1], x[8, 2], x[9, 3]) 358s + # Preserve names attribute? 358s + if (isTRUE(useNames)) { 358s + names <- rownames(x) 358s + if (!is.null(names)) names(res) <- names 358s + } 358s + res 358s + } 358s > 358s > idxs <- 1:3 358s > # Test with and without dimnames on x 358s > for (setDimnames in c(TRUE, FALSE)) { 358s + if (setDimnames) dimnames(x) <- dimnames 358s + else dimnames(x) <- NULL 358s + # Check names attribute 358s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 358s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 358s + y <- rowCollapse(x, idxs, useNames = useNames) 358s + stopifnot(identical(y, y_truth)) 358s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 358s + stopifnot(identical(y2, y)) 358s + } 358s + } 358s > 358s 358s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 358s Copyright (C) 2024 The R Foundation for Statistical Computing 358s Platform: s390x-ibm-linux-gnu (64-bit) 358s 358s R is free software and comes with ABSOLUTELY NO WARRANTY. 358s You are welcome to redistribute it under certain conditions. 358s Type 'license()' or 'licence()' for distribution details. 358s 358s R is a collaborative project with many contributors. 358s Type 'contributors()' for more information and 358s 'citation()' on how to cite R or R packages in publications. 358s 358s Type 'demo()' for some demos, 'help()' for on-line help, or 358s 'help.start()' for an HTML browser interface to help. 358s Type 'q()' to quit R. 358s 358s > library("matrixStats") 358s > 358s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 358s + ans <- c() 358s + storage.mode(ans) <- storage.mode(x) 358s + for (ii in seq_len(length(idxs))) { 358s + ans[ii] <- x[ii, idxs[ii]] 358s + } 358s + 358s + # Preserve names attribute 358s + if (isTRUE(useNames)) { 358s + names <- rownames(x) 358s + if (!is.null(names)) names(ans) <- names 358s + } 358s + 358s + ans 358s + } 358s > 358s > 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > # Subsetted tests 358s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 358s > source("utils/validateIndicesFramework.R") 358s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 358s > storage.mode(x) <- "integer" 358s > 358s > # To check names attribute 358s > dimnames <- list(letters[1:6], LETTERS[1:6]) 358s > 358s > for (rows in index_cases) { 358s + if (is.null(rows)) rows <- seq_len(nrow(x)) 358s + 358s + for (idxs in list(2L, seq_len(6L))) { 358s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 358s + suppressWarnings({ 358s + actual <- tryCatch(rowCollapse(x, idxs, rows = rows, useNames = useNames), 358s + error = function(c) "error") 358s + expect <- tryCatch({ 358s + idxs_0 <- rep(idxs, length.out = nrow(x))[rows] 358s + rowCollapse_R(x[rows, , drop = FALSE], idxs_0, useNames = useNames) 358s + }, error = function(c) "error") 358s + }) 358s + stopifnot(all.equal(actual, expect)) 358s + 358s + suppressWarnings({ 358s + actual <- tryCatch(colCollapse(t(x), idxs, cols = rows, useNames = useNames), 358s + error = function(c) "error") 358s + }) 358s + stopifnot(all.equal(actual, expect)) 358s + 358s + # Check names attribute 358s + dimnames(x) <- dimnames 358s + suppressWarnings({ 358s + actual <- tryCatch(rowCollapse(x, idxs, rows = rows, useNames = useNames), 358s + error = function(c) "error") 358s + expect <- tryCatch({ 358s + idxs_0 <- rep(idxs, length.out = nrow(x))[rows] 358s + rowCollapse_R(x[rows, , drop = FALSE], idxs_0, useNames = useNames) 358s + }, error = function(c) "error") 358s + }) 358s + stopifnot(all.equal(actual, expect)) 358s + 358s + suppressWarnings({ 358s + actual <- tryCatch(colCollapse(t(x), idxs, cols = rows, useNames = useNames), 358s + error = function(c) "error") 358s + }) 358s + stopifnot(all.equal(actual, expect)) 358s + 358s + dimnames(x) <- NULL 358s + } 358s + } 358s + } 359s > 359s 359s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 359s Copyright (C) 2024 The R Foundation for Statistical Computing 359s Platform: s390x-ibm-linux-gnu (64-bit) 359s 359s R is free software and comes with ABSOLUTELY NO WARRANTY. 359s You are welcome to redistribute it under certain conditions. 359s Type 'license()' or 'licence()' for distribution details. 359s 359s R is a collaborative project with many contributors. 359s Type 'contributors()' for more information and 359s 'citation()' on how to cite R or R packages in publications. 359s 359s Type 'demo()' for some demos, 'help()' for on-line help, or 359s 'help.start()' for an HTML browser interface to help. 359s Type 'q()' to quit R. 359s 359s > library("matrixStats") 359s > 359s > rowCounts_R <- function(x, value = TRUE, na.rm = FALSE, ...) { 359s + if (is.na(value)) { 359s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 359s + sum(is.na(x)) 359s + ) 359s + } else { 359s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 359s + sum(x == value, na.rm = na.rm) 359s + ) 359s + } 359s + # Preserve names attribute 359s + names <- names(counts) 359s + counts <- as.integer(counts) 359s + if (isTRUE(useNames) && !is.null(names)) names(counts) <- names 359s + counts 359s + } 359s > 359s > 359s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 359s > # Data type: integer and numeric 359s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 359s > for (mode in c("integer", "double")) { 359s + x <- matrix(runif(10 * 5, min = -3, max = 3), nrow = 10L, ncol = 5L) 359s + x[sample.int(length(x), size = 7L)] <- 0 359s + storage.mode(x) <- mode 359s + 359s + dimnames = list(letters[1:10], LETTERS[1:5]) 359s + 359s + # Test with and without dimnames on x 359s + for (setDimnames in c(TRUE, FALSE)) { 359s + if (setDimnames) dimnames(x) <- dimnames 359s + else dimnames(x) <- NULL 359s + for (na.rm in c(FALSE, TRUE)) { 359s + # Check names attribute 359s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 359s + # Count zeros 359s + r0 <- rowCounts_R(x, value = 0, na.rm = na.rm, useNames = useNames) 359s + r1 <- rowCounts(x, value = 0, na.rm = na.rm, useNames = useNames) 359s + r2 <- colCounts(t(x), value = 0, na.rm = na.rm, useNames = useNames) 359s + stopifnot(identical(r1, r0)) 359s + stopifnot(identical(r2, r0)) 359s + 359s + # Count NAs 359s + r0 <- rowCounts_R(x, value = NA, na.rm = na.rm, useNames = useNames) 359s + r1 <- rowCounts(x, value = NA, na.rm = na.rm, useNames = useNames) 359s + r2 <- colCounts(t(x), value = NA, na.rm = na.rm, useNames = useNames) 359s + stopifnot(identical(r1, r0)) 359s + stopifnot(identical(r2, r0)) 359s + 359s + if (mode == "integer") { 359s + ux <- unique(as.vector(x)) 359s + r0 <- r1 <- r2 <- integer(nrow(x)) 359s + for (value in ux) { 359s + r0 <- r0 + rowCounts_R(x, value = value, na.rm = na.rm, useNames = useNames) 359s + r1 <- r1 + rowCounts(x, value = value, na.rm = na.rm, useNames = useNames) 359s + r2 <- r2 + colCounts(t(x), value = value, na.rm = na.rm, useNames = useNames) 359s + stopifnot(identical(r1, r0)) 359s + stopifnot(identical(r2, r0)) 359s + } 359s + stopifnot(all(r0 == ncol(x))) 359s + } # if (mode == "integer") 359s + } # for (useNames ...) 359s + } # for (na.rm ...) 359s + } # for (setDimnames ...) 359s + } # for (mode ...) 359s > 359s > 359s > # All NAs 359s > na_list <- list(NA_integer_, NA_real_, NaN) 359s > for (na_value in na_list) { 359s + x <- matrix(na_value, nrow = 10L, ncol = 5L) 359s + # Test with and without dimnames on x 359s + for (setDimnames in c(TRUE, FALSE)) { 359s + if (setDimnames) dimnames(x) <- dimnames 359s + else dimnames(x) <- NULL 359s + for (na.rm in c(FALSE, TRUE)) { 359s + # Check names attribute 359s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 359s + r0 <- rowCounts_R(x, na.rm = na.rm, useNames = useNames) 359s + r1 <- rowCounts(x, na.rm = na.rm, useNames = useNames) 359s + r2 <- colCounts(t(x), na.rm = na.rm, useNames = useNames) 359s + stopifnot(identical(r1, r0)) 359s + stopifnot(identical(r2, r0)) 359s + 359s + # Count NAs 359s + r0 <- rowCounts_R(x, value = NA, na.rm = na.rm, useNames = useNames) 359s + r1 <- rowCounts(x, value = NA, na.rm = na.rm, useNames = useNames) 359s + r2 <- colCounts(t(x), value = NA, na.rm = na.rm, useNames = useNames) 359s + stopifnot(all(r0 == ncol(x))) 359s + stopifnot(identical(r1, r0)) 359s + stopifnot(identical(r2, r0)) 359s + } 359s + } 359s + } 359s + } # for (na_value ...) 359s > 359s > 359s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 359s > # Data type: logical 359s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 359s > x <- matrix(FALSE, nrow = 10L, ncol = 4L) 359s > x[7:8, 2:3] <- TRUE 359s > x[1:3, ] <- TRUE 359s > x[, 1] <- TRUE 359s > x[4, ] <- FALSE 359s > x[, 4] <- FALSE 359s > x[2, ] <- FALSE 359s > x[3, ] <- TRUE 359s > 359s > # To check names attribute 359s > dimnames <- list(letters[1:10], LETTERS[1:4]) 359s > 359s > # Test with and without dimnames on x 359s > for (setDimnames in c(TRUE, FALSE)) { 359s + if (setDimnames) dimnames(x) <- dimnames 359s + else dimnames(x) <- NULL 359s + # Row/column counts 359s + for (na.rm in c(FALSE, TRUE)) { 359s + # Check names attribute 359s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 359s + r0 <- rowCounts_R(x, na.rm = na.rm, useNames = useNames) 359s + r1 <- rowCounts(x, na.rm = na.rm, useNames = useNames) 359s + r2 <- colCounts(t(x), na.rm = na.rm, useNames = useNames) 359s + stopifnot(identical(r1, r0)) 359s + stopifnot(identical(r2, r0)) 359s + 359s + r_true <- rowCounts(x, value = TRUE, na.rm = na.rm, useNames = useNames) 359s + r_false <- rowCounts(x, value = FALSE, na.rm = na.rm, useNames = useNames) 359s + stopifnot(r_true + r_false == ncol(x)) 359s + 359s + c_true <- colCounts(x, value = TRUE, na.rm = na.rm, useNames = useNames) 359s + c_false <- colCounts(x, value = FALSE, na.rm = na.rm, useNames = useNames) 359s + stopifnot(c_true + c_false == nrow(x)) 359s + 359s + # Count NAs 359s + r0 <- rowCounts_R(x, value = NA, na.rm = na.rm, useNames = useNames) 359s + r1 <- rowCounts(x, value = NA, na.rm = na.rm, useNames = useNames) 359s + r2 <- colCounts(t(x), value = NA, na.rm = na.rm, useNames = useNames) 359s + stopifnot(identical(r1, r0)) 359s + stopifnot(identical(r2, r0)) 359s + } 359s + } 359s + } 359s > 359s > 359s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 359s > # Data type: character (not sure if this should be supported) 359s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 359s > x <- matrix(rep(letters, length.out = 10 * 5), nrow = 10L, ncol = 5L) 359s > x[2:3, 3:4] <- NA_character_ 359s > 359s > # Row/column counts 359s > for (na.rm in c(FALSE, TRUE)) { 359s + for (value in c("g", NA_character_)) { 359s + r0 <- rowCounts_R(x, value = value, na.rm = na.rm) 359s + r1 <- rowCounts(x, value = value, na.rm = na.rm) 359s + r2 <- colCounts(t(x), value = value, na.rm = na.rm) 359s + stopifnot(identical(r1, r0)) 359s + stopifnot(identical(r2, r0)) 359s + 359s + c <- count(x[1, ], value = value, na.rm = na.rm) 359s + stopifnot(identical(c, r1[1])) 359s + 359s + c <- count(x[2, ], value = value, na.rm = na.rm) 359s + stopifnot(identical(c, r1[2])) 359s + } 359s + } 359s > 359s > # NA row 359s > x <- matrix(0, nrow = 2L, ncol = 2L) 359s > x[1, ] <- NA_integer_ 359s > 359s > dimnames <- list(letters[1:2], LETTERS[1:2]) 359s > 359s > # Test with and without dimnames on x 359s > for (setDimnames in c(TRUE, FALSE)) { 359s + if (setDimnames) dimnames(x) <- dimnames 359s + else dimnames(x) <- NULL 359s + # Check names attribute 359s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 359s + r0 <- rowCounts(x, value = 0, useNames = useNames) 359s + r1 <- rowCounts_R(x, value = 0, useNames = useNames) 359s + stopifnot(identical(r0, r1)) 359s + } 359s + } 359s > 359s 359s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 359s Copyright (C) 2024 The R Foundation for Statistical Computing 359s Platform: s390x-ibm-linux-gnu (64-bit) 359s 359s R is free software and comes with ABSOLUTELY NO WARRANTY. 359s You are welcome to redistribute it under certain conditions. 359s Type 'license()' or 'licence()' for distribution details. 359s 359s R is a collaborative project with many contributors. 359s Type 'contributors()' for more information and 359s 'citation()' on how to cite R or R packages in publications. 359s 359s Type 'demo()' for some demos, 'help()' for on-line help, or 359s 'help.start()' for an HTML browser interface to help. 359s Type 'q()' to quit R. 359s 359s > library("matrixStats") 359s > 359s > rowCounts_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 359s + if (is.na(value)) { 359s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 359s + sum(is.na(x)) 359s + ) 359s + } else { 359s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 359s + sum(x == value, na.rm = na.rm) 359s + ) 359s + } 359s + # Preserve names attribute 359s + names <- names(counts) 359s + counts <- as.integer(counts) 359s + if (isTRUE(useNames) && !is.null(names)) names(counts) <- names 359s + counts 359s + } # rowCounts_R() 359s > 359s > 359s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 359s > # Subsetted tests 359s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 359s > source("utils/validateIndicesFramework.R") 359s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 359s > x[2:3, 3:4] <- NA_real_ 359s > storage.mode(x) <- "integer" 359s > 359s > # To check names attribute 359s > dimnames <- list(letters[1:6], LETTERS[1:6]) 359s > 359s > # Test with and without dimnames on x 359s > for (setDimnames in c(TRUE, FALSE)) { 359s + if (setDimnames) dimnames(x) <- dimnames 359s + else dimnames(x) <- NULL 359s + for (rows in index_cases) { 359s + for (cols in index_cases) { 359s + # Check names attribute 359s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 359s + validateIndicesTestMatrix(x, rows, cols, 359s + ftest = rowCounts, fsure = rowCounts_R, 359s + value = 0, na.rm = TRUE, useNames = useNames) 359s + validateIndicesTestMatrix(x, rows, cols, 359s + fcoltest = colCounts, fsure = rowCounts_R, 359s + value = 0, na.rm = TRUE, useNames = useNames) 359s + for (value in c(0, NA_integer_)) { 359s + validateIndicesTestMatrix(x, rows, cols, 359s + ftest = rowCounts, fsure = rowCounts_R, 359s + value = value, useNames = useNames) 359s + validateIndicesTestMatrix(x, rows, cols, 359s + fcoltest = colCounts, fsure = rowCounts_R, 359s + value = value, useNames = useNames) 359s + } 359s + } 359s + } 359s + } 359s + } 361s > 361s > x <- matrix(rep(letters, length.out = 6 * 6), nrow = 6, ncol = 6) 361s > x[2:3, 3:4] <- NA_character_ 361s > # Test with and without dimnames on x 361s > for (setDimnames in c(TRUE, FALSE)) { 361s + if (setDimnames) dimnames(x) <- dimnames 361s + else dimnames(x) <- NULL 361s + 361s + count <- 0L 361s + for (rows in index_cases) { 361s + for (cols in index_cases) { 361s + count <- count + 1L 361s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 361s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 361s + useNames <- useNames[count %% length(useNames) + 1] 361s + 361s + validateIndicesTestMatrix(x, rows, cols, 361s + ftest = rowCounts, fsure = rowCounts_R, 361s + value = "g", na.rm = TRUE, useNames = useNames) 361s + validateIndicesTestMatrix(x, rows, cols, 361s + fcoltest = colCounts, fsure = rowCounts_R, 361s + value = "g", na.rm = TRUE, useNames = useNames) 361s + for (value in c("g", NA_character_)) { 361s + validateIndicesTestMatrix(x, rows, cols, 361s + ftest = rowCounts, fsure = rowCounts_R, 361s + value = value, useNames = useNames) 361s + validateIndicesTestMatrix(x, rows, cols, 361s + fcoltest = colCounts, fsure = rowCounts_R, 361s + value = value, useNames = useNames) 361s + } 361s + } 361s + } 361s + } 361s > 361s 361s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 361s Copyright (C) 2024 The R Foundation for Statistical Computing 361s Platform: s390x-ibm-linux-gnu (64-bit) 361s 361s R is free software and comes with ABSOLUTELY NO WARRANTY. 361s You are welcome to redistribute it under certain conditions. 361s Type 'license()' or 'licence()' for distribution details. 361s 361s R is a collaborative project with many contributors. 361s Type 'contributors()' for more information and 361s 'citation()' on how to cite R or R packages in publications. 361s 361s Type 'demo()' for some demos, 'help()' for on-line help, or 361s 'help.start()' for an HTML browser interface to help. 361s Type 'q()' to quit R. 361s 362s > library("matrixStats") 362s > 362s > rowCummins_R <- function(x, ..., useNames = NA) { 362s + suppressWarnings({ 362s + y <- t(apply(x, MARGIN = 1L, FUN = cummin)) 362s + }) 362s + 362s + # Preserve dimnames attribute? 362s + dim(y) <- dim(x) 362s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 362s + y 362s + } 362s > 362s > rowCummaxs_R <- function(x, ..., useNames = NA) { 362s + mode <- storage.mode(x) 362s + # Change mode because a bug is detected on cummax for integer in R-3.2.0 362s + storage.mode(x) <- "numeric" 362s + suppressWarnings({ 362s + y <- t(apply(x, MARGIN = 1L, FUN = cummax)) 362s + }) 362s + 362s + # Preserve dimnames attribute? 362s + dim(y) <- dim(x) 362s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 362s + 362s + y 362s + } 362s > 362s > 362s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362s > # With and without some NAs 362s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362s > for (mode in c("logical", "integer", "double")) { 362s + for (add_na in c(FALSE, TRUE)) { 362s + cat("add_na = ", add_na, "\n", sep = "") 362s + 362s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 362s + diag(x) <- 0 362s + if (add_na) { 362s + x[3:7, c(2, 4)] <- NA_real_ 362s + } 362s + cat("mode: ", mode, "\n", sep = "") 362s + storage.mode(x) <- mode 362s + str(x) 362s + 362s + # To check dimnames attribute 362s + dimnames <- list(letters[1:10], LETTERS[1:5]) 362s + 362s + # Test with and without dimnames on x 362s + for (setDimnames in c(TRUE, FALSE)) { 362s + if (setDimnames) dimnames(x) <- dimnames 362s + else dimnames(x) <- NULL 362s + # Check names attribute 362s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 362s + # Row/column ranges 362s + r0 <- rowCummins_R(x, useNames = useNames) 362s + r1 <- rowCummins(x, useNames = useNames) 362s + r2 <- t(colCummins(t(x), useNames = useNames)) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + 362s + r0 <- rowCummaxs_R(x, useNames = useNames) 362s + r1 <- rowCummaxs(x, useNames = useNames) 362s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + } # for (useNames ...) 362s + } # for (setDimnames ...) 362s + } # for (add_na ...) 362s + } # for (mode ...) 362s add_na = FALSE 362s mode: logical 362s logi [1:10, 1:5] FALSE TRUE TRUE TRUE TRUE TRUE ... 362s add_na = TRUE 362s mode: logical 362s logi [1:10, 1:5] FALSE TRUE TRUE TRUE TRUE TRUE ... 362s add_na = FALSE 362s mode: integer 362s int [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 362s add_na = TRUE 362s mode: integer 362s int [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 362s add_na = FALSE 362s mode: double 362s num [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 362s add_na = TRUE 362s mode: double 362s num [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 362s > 362s > 362s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362s > # All NAs 362s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362s > for (mode in c("logical", "integer", "double")) { 362s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 362s + cat("mode: ", mode, "\n", sep = "") 362s + storage.mode(x) <- mode 362s + str(x) 362s + 362s + # Test with and without dimnames on x 362s + for (setDimnames in c(TRUE, FALSE)) { 362s + if (setDimnames) dimnames(x) <- dimnames 362s + else dimnames(x) <- NULL 362s + # Check names attribute 362s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 362s + r0 <- rowCummins_R(x, useNames = useNames) 362s + r1 <- rowCummins(x, useNames = useNames) 362s + r2 <- t(colCummins(t(x), useNames = useNames)) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + 362s + r0 <- rowCummaxs_R(x, useNames = useNames) 362s + r1 <- rowCummaxs(x, useNames = useNames) 362s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + } # for (useNames ...) 362s + } # for (setDimnames ...) 362s + } # for (mode ...) 362s mode: logical 362s logi [1:10, 1:5] NA NA NA NA NA NA ... 362s mode: integer 362s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 362s mode: double 362s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 362s > 362s > 362s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362s > # A 1x1 matrix 362s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362s > for (mode in c("logical", "integer", "double")) { 362s + x <- matrix(0, nrow = 1L, ncol = 1L) 362s + cat("mode: ", mode, "\n", sep = "") 362s + storage.mode(x) <- mode 362s + str(x) 362s + 362s + # To check dimnames attribute 362s + dimnames <- list("a", "A") 362s + 362s + # Test with and without dimnames on x 362s + for (setDimnames in c(TRUE, FALSE)) { 362s + if (setDimnames) dimnames(x) <- dimnames 362s + else dimnames(x) <- NULL 362s + # Check names attribute 362s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 362s + r0 <- rowCummins_R(x, useNames = useNames) 362s + r1 <- rowCummins(x, useNames = useNames) 362s + r2 <- t(colCummins(t(x), useNames = useNames)) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + 362s + r0 <- rowCummaxs_R(x, useNames = useNames) 362s + r1 <- rowCummaxs(x, useNames = useNames) 362s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + } # for (useNames ...) 362s + } # for (setDimnames ...) 362s + } # for (mode ...) 362s mode: logical 362s logi [1, 1] FALSE 362s mode: integer 362s int [1, 1] 0 362s mode: double 362s num [1, 1] 0 362s > 362s > 362s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362s > # Corner cases 362s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362s > for (mode in c("logical", "integer", "double")) { 362s + cat("mode: ", mode, "\n", sep = "") 362s + value <- 0 362s + storage.mode(value) <- mode 362s + value0 <- if (mode == "logical") 0L else value 362s + 362s + # A 0x0 matrix 362s + x <- matrix(value, nrow = 0L, ncol = 0L) 362s + str(x) 362s + r0 <- matrix(value0, nrow = nrow(x), ncol = ncol(x)) 362s + r1 <- rowCummins(x) 362s + r2 <- t(colCummins(t(x))) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + 362s + # A 0xK matrix 362s + x <- matrix(value, nrow = 0L, ncol = 5L) 362s + str(x) 362s + colnames <- LETTERS[1:5] 362s + # Test with and without dimnames on x 362s + for (setDimnames in c(TRUE, FALSE)) { 362s + if (setDimnames) colnames(x) <- colnames 362s + else dimnames(x) <- NULL 362s + # Check names attribute 362s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 362s + r0 <- rowCummins_R(x, useNames = useNames) 362s + r1 <- rowCummins(x, useNames = useNames) 362s + r2 <- t(colCummins(t(x), useNames = useNames)) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + r0 <- rowCummaxs_R(x, useNames = useNames) 362s + r1 <- rowCummaxs(x, useNames = useNames) 362s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + } # for (useNames ...) 362s + } # for (setDimnames ...) 362s + 362s + # A Nx0 matrix 362s + x <- matrix(value, nrow = 5L, ncol = 0L) 362s + str(x) 362s + rownames <- LETTERS[1:5] 362s + # Test with and without dimnames on x 362s + for (setDimnames in c(TRUE, FALSE)) { 362s + if (setDimnames) rownames(x) <- rownames 362s + else dimnames(x) <- NULL 362s + # Check names attribute 362s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 362s + r0 <- rowCummins_R(x, useNames = useNames) 362s + r1 <- rowCummins(x, useNames = useNames) 362s + r2 <- t(colCummins(t(x), useNames = useNames)) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + 362s + r0 <- rowCummaxs_R(x, useNames = useNames) 362s + r1 <- rowCummaxs(x, useNames = useNames) 362s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 362s + stopifnot(all.equal(r1, r2)) 362s + stopifnot(all.equal(r1, r0)) 362s + stopifnot(all.equal(r2, r0)) 362s + } # for (useNames ...) 362s + } # for (setDimnames ...) 362s + } # for (mode ...) 362s mode: logical 362s logi[0 , 0 ] 362s logi[0 , 1:5] 362s logi[1:5, 0 ] 362s mode: integer 362s int[0 , 0 ] 362s int[0 , 1:5] 362s int[1:5, 0 ] 362s mode: double 362s num[0 , 0 ] 362s num[0 , 1:5] 362s num[1:5, 0 ] 362s > 362s 362s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 362s Copyright (C) 2024 The R Foundation for Statistical Computing 362s Platform: s390x-ibm-linux-gnu (64-bit) 362s 362s R is free software and comes with ABSOLUTELY NO WARRANTY. 362s You are welcome to redistribute it under certain conditions. 362s Type 'license()' or 'licence()' for distribution details. 362s 362s R is a collaborative project with many contributors. 362s Type 'contributors()' for more information and 362s 'citation()' on how to cite R or R packages in publications. 362s 362s Type 'demo()' for some demos, 'help()' for on-line help, or 362s 'help.start()' for an HTML browser interface to help. 362s Type 'q()' to quit R. 362s 362s > library("matrixStats") 362s > 362s > rowCummins_R <- function(x, ..., useNames = NA) { 362s + suppressWarnings({ 362s + y <- t(apply(x, MARGIN = 1L, FUN = cummin)) 362s + }) 362s + 362s + # Preserve dimnames attribute? 362s + dim(y) <- dim(x) 362s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 362s + 362s + y 362s + } 362s > 362s > rowCummaxs_R <- function(x, ..., useNames = NA) { 362s + mode <- storage.mode(x) 362s + # Change mode because a bug is detected on cummax for integer in R-3.2.0 362s + storage.mode(x) <- "numeric" 362s + suppressWarnings({ 362s + y <- t(apply(x, MARGIN = 1L, FUN = cummax)) 362s + }) 362s + 362s + # Preserve dimnames attribute? 362s + dim(y) <- dim(x) 362s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 362s + 362s + storage.mode(y) <- mode 362s + y 362s + } 362s > 362s > 362s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362s > # Subsetted tests 362s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 362s > source("utils/validateIndicesFramework.R") 362s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 362s > storage.mode(x) <- "integer" 362s > 362s > # To check dimnames attribute 362s > dimnames <- list(letters[1:6], LETTERS[1:6]) 362s > 362s > # Test with and without dimnames on x 362s > for (setDimnames in c(TRUE, FALSE)) { 362s + if (setDimnames) dimnames(x) <- dimnames 362s + else dimnames(x) <- NULL 362s + for (rows in index_cases) { 362s + for (cols in index_cases) { 362s + # Check names attribute 362s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 362s + validateIndicesTestMatrix(x, rows, cols, 362s + ftest = rowCummins, fsure = rowCummins_R, useNames = useNames,verbose=TRUE) 362s + validateIndicesTestMatrix(x, rows, cols, 362s + ftest = function(x, rows, cols, ..., useNames) { 362s + t(colCummins(t(x), rows = cols, cols = rows, useNames = useNames)) 362s + }, fsure = rowCummins_R, useNames = useNames) 362s + 362s + validateIndicesTestMatrix(x, rows, cols, 362s + ftest = rowCummaxs, fsure = rowCummaxs_R, useNames = useNames) 362s + validateIndicesTestMatrix(x, rows, cols, 362s + ftest = function(x, rows, cols, ..., useNames) { 362s + t(colCummaxs(t(x), rows = cols, cols = rows, useNames = useNames)) 362s + }, fsure = rowCummaxs_R, useNames = useNames) 362s + } 362s + } 362s + } 362s + } 365s > 365s 365s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 365s Copyright (C) 2024 The R Foundation for Statistical Computing 365s Platform: s390x-ibm-linux-gnu (64-bit) 365s 365s R is free software and comes with ABSOLUTELY NO WARRANTY. 365s You are welcome to redistribute it under certain conditions. 365s Type 'license()' or 'licence()' for distribution details. 365s 365s R is a collaborative project with many contributors. 365s Type 'contributors()' for more information and 365s 'citation()' on how to cite R or R packages in publications. 365s 365s Type 'demo()' for some demos, 'help()' for on-line help, or 365s 'help.start()' for an HTML browser interface to help. 365s Type 'q()' to quit R. 365s 365s > library("matrixStats") 365s > 365s > rowCumprods_R <- function(x, ..., useNames = NA) { 365s + suppressWarnings({ 365s + y <- t(apply(x, MARGIN = 1L, FUN = cumprod)) 365s + }) 365s + 365s + # Preserve dimnames attribute? 365s + dim(y) <- dim(x) 365s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 365s + 365s + y 365s + } 365s > 365s > 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > # With and without some NAs 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > for (mode in c("logical", "integer", "double")) { 365s + for (add_na in c(FALSE, TRUE)) { 365s + cat("add_na = ", add_na, "\n", sep = "") 365s + 365s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 365s + if (add_na) { 365s + x[3:7, c(2, 4)] <- NA_real_ 365s + } 365s + cat("mode: ", mode, "\n", sep = "") 365s + storage.mode(x) <- mode 365s + str(x) 365s + 365s + # To check dimnames attribute 365s + dimnames <- list(letters[1:10], LETTERS[1:5]) 365s + 365s + # Test with and without dimnames on x 365s + for (setDimnames in c(TRUE, FALSE)) { 365s + if (setDimnames) dimnames(x) <- dimnames 365s + else dimnames(x) <- NULL 365s + # Check names attribute 365s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 365s + # Row/column ranges 365s + r0 <- rowCumprods_R(x, useNames = useNames) 365s + r1 <- rowCumprods(x, useNames = useNames) 365s + r2 <- t(colCumprods(t(x), useNames = useNames)) 365s + stopifnot(all.equal(r1, r2)) 365s + stopifnot(all.equal(r1, r0)) 365s + stopifnot(all.equal(r2, r0)) 365s + } # for (useNames ...) 365s + } # for (setDimnames ...) 365s + } # for (add_na ...) 365s + } # for (mode ...) 365s add_na = FALSE 365s mode: logical 365s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 365s add_na = TRUE 365s mode: logical 365s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 365s add_na = FALSE 365s mode: integer 365s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 365s add_na = TRUE 365s mode: integer 365s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 365s add_na = FALSE 365s mode: double 365s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 365s add_na = TRUE 365s mode: double 365s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 365s > 365s > 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > # All NAs 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > for (mode in c("logical", "integer", "double")) { 365s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 365s + cat("mode: ", mode, "\n", sep = "") 365s + storage.mode(x) <- mode 365s + str(x) 365s + 365s + # Test with and without dimnames on x 365s + for (setDimnames in c(TRUE, FALSE)) { 365s + if (setDimnames) dimnames(x) <- dimnames 365s + else dimnames(x) <- NULL 365s + # Check names attribute 365s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 365s + # Row/column ranges 365s + r0 <- rowCumprods_R(x, useNames = useNames) 365s + r1 <- rowCumprods(x, useNames = useNames) 365s + r2 <- t(colCumprods(t(x), useNames = useNames)) 365s + stopifnot(all.equal(r1, r2)) 365s + stopifnot(all.equal(r1, r0)) 365s + stopifnot(all.equal(r2, r0)) 365s + } # for (useNames ...) 365s + } # for (setDimnames ...) 365s + } # for (mode ...) 365s mode: logical 365s logi [1:10, 1:5] NA NA NA NA NA NA ... 365s mode: integer 365s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 365s mode: double 365s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 365s > 365s > 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > # A 1x1 matrix 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > for (mode in c("logical", "integer", "double")) { 365s + x <- matrix(0, nrow = 1L, ncol = 1L) 365s + cat("mode: ", mode, "\n", sep = "") 365s + storage.mode(x) <- mode 365s + str(x) 365s + 365s + dimnames <- list("a", "A") 365s + # Test with and without dimnames on x 365s + for (setDimnames in c(TRUE, FALSE)) { 365s + if (setDimnames) dimnames(x) <- dimnames 365s + else dimnames(x) <- NULL 365s + # Check names attribute 365s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 365s + # Row/column ranges 365s + r0 <- rowCumprods_R(x, useNames = useNames) 365s + r1 <- rowCumprods(x, useNames = useNames) 365s + r2 <- t(colCumprods(t(x), useNames = useNames)) 365s + stopifnot(all.equal(r1, r2)) 365s + stopifnot(all.equal(r1, r0)) 365s + stopifnot(all.equal(r2, r0)) 365s + } # for (useNames ...) 365s + } # for (setDimnames ...) 365s + } 365s mode: logical 365s logi [1, 1] FALSE 365s mode: integer 365s int [1, 1] 0 365s mode: double 365s num [1, 1] 0 365s > 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > # BUG FIX TEST: Assert zeros don't trump NAs in integer matrices 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > for (mode in c("logical", "integer", "double")) { 365s + x <- matrix(NA_real_, nrow = 3L, ncol = 2L) 365s + x[1, 2] <- 0 365s + x[2, 2] <- 1 365s + x[3, 1] <- 0 365s + storage.mode(x) <- mode 365s + cat("mode: ", mode, "\n", sep = "") 365s + str(x) 365s + 365s + dimnames <- list(letters[1:3], LETTERS[1:2]) 365s + # Test with and without dimnames on x 365s + for (setDimnames in c(TRUE, FALSE)) { 365s + if (setDimnames) dimnames(x) <- dimnames 365s + else dimnames(x) <- NULL 365s + # Check names attribute 365s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 365s + # Row/column ranges 365s + r0 <- rowCumprods_R(x, useNames = useNames) 365s + r1 <- rowCumprods(x, useNames = useNames) 365s + r2 <- t(colCumprods(t(x), useNames = useNames)) 365s + stopifnot(all.equal(r1, r2)) 365s + stopifnot(all.equal(r1, r0)) 365s + stopifnot(all.equal(r2, r0)) 365s + } # for (useNames ...) 365s + } # for (setDimnames ...) 365s + } 365s mode: logical 365s logi [1:3, 1:2] NA NA FALSE FALSE TRUE NA 365s mode: integer 365s int [1:3, 1:2] NA NA 0 0 1 NA 365s mode: double 365s num [1:3, 1:2] NA NA 0 0 1 NA 365s > 365s > 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > # Corner cases 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > for (mode in c("logical", "integer", "double")) { 365s + cat("mode: ", mode, "\n", sep = "") 365s + value <- 0 365s + storage.mode(value) <- mode 365s + if (mode == "logical") value2 <- 0L 365s + 365s + # A 0x0 matrix 365s + x <- matrix(value, nrow = 0L, ncol = 0L) 365s + str(x) 365s + r0 <- matrix(value2, nrow = nrow(x), ncol = ncol(x)) 365s + r1 <- rowCumprods(x) 365s + r2 <- t(colCumprods(t(x))) 365s + stopifnot(all.equal(r1, r2)) 365s + stopifnot(all.equal(r1, r0)) 365s + stopifnot(all.equal(r2, r0)) 365s + 365s + # A 0xK matrix 365s + x <- matrix(value, nrow = 0L, ncol = 5L) 365s + str(x) 365s + colnames <- LETTERS[1:5] 365s + # Test with and without dimnames on x 365s + for (setDimnames in c(TRUE, FALSE)) { 365s + if (setDimnames) colnames(x) <- colnames 365s + else dimnames(x) <- NULL 365s + # Check names attribute 365s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 365s + r0 <- rowCumprods_R(x, useNames = useNames) 365s + r1 <- rowCumprods(x, useNames = useNames) 365s + r2 <- t(rowCumprods(t(x), useNames = useNames)) 365s + stopifnot(all.equal(r1, r2)) 365s + stopifnot(all.equal(r1, r0)) 365s + stopifnot(all.equal(r2, r0)) 365s + } # for (useNames ...) 365s + } # for (setDimnames ...) 365s + 365s + # A Nx0 matrix 365s + x <- matrix(value, nrow = 5L, ncol = 0L) 365s + str(x) 365s + rownames <- LETTERS[1:5] 365s + # Test with and without dimnames on x 365s + for (setDimnames in c(TRUE, FALSE)) { 365s + if (setDimnames) rownames(x) <- rownames 365s + else dimnames(x) <- NULL 365s + # Check names attribute 365s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 365s + r0 <- rowCumprods_R(x, useNames = useNames) 365s + r1 <- rowCumprods(x, useNames = useNames) 365s + r2 <- t(rowCumprods(t(x), useNames = useNames)) 365s + stopifnot(all.equal(r1, r2)) 365s + stopifnot(all.equal(r1, r0)) 365s + stopifnot(all.equal(r2, r0)) 365s + } # for (useNames ...) 365s + } # for (setDimnames ...) 365s + } # for (mode ...) 365s mode: logical 365s logi[0 , 0 ] 365s logi[0 , 1:5] 365s logi[1:5, 0 ] 365s mode: integer 365s int[0 , 0 ] 365s int[0 , 1:5] 365s int[1:5, 0 ] 365s mode: double 365s num[0 , 0 ] 365s num[0 , 1:5] 365s num[1:5, 0 ] 365s > 365s 365s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 365s Copyright (C) 2024 The R Foundation for Statistical Computing 365s Platform: s390x-ibm-linux-gnu (64-bit) 365s 365s R is free software and comes with ABSOLUTELY NO WARRANTY. 365s You are welcome to redistribute it under certain conditions. 365s Type 'license()' or 'licence()' for distribution details. 365s 365s R is a collaborative project with many contributors. 365s Type 'contributors()' for more information and 365s 'citation()' on how to cite R or R packages in publications. 365s 365s Type 'demo()' for some demos, 'help()' for on-line help, or 365s 'help.start()' for an HTML browser interface to help. 365s Type 'q()' to quit R. 365s 365s > library("matrixStats") 365s > 365s > rowCumprods_R <- function(x, ..., useNames = NA) { 365s + suppressWarnings({ 365s + y <- t(apply(x, MARGIN = 1L, FUN = cumprod)) 365s + }) 365s + 365s + # Preserve dimnames attribute? 365s + dim(y) <- dim(x) 365s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 365s + 365s + y 365s + } 365s > 365s > 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > # Subsetted tests 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > source("utils/validateIndicesFramework.R") 365s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 365s > storage.mode(x) <- "integer" 365s > 365s > # To check dimnames attribute 365s > dimnames <- list(letters[1:6], LETTERS[1:6]) 365s > 365s > # Test with and without dimnames on x 365s > for (setDimnames in c(TRUE, FALSE)) { 365s + if (setDimnames) dimnames(x) <- dimnames 365s + else dimnames(x) <- NULL 365s + for (rows in index_cases) { 365s + for (cols in index_cases) { 365s + # Check names attribute 365s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 365s + validateIndicesTestMatrix(x, rows, cols, 365s + ftest = rowCumprods, fsure = rowCumprods_R, useNames = useNames) 365s + validateIndicesTestMatrix(x, rows, cols, 365s + ftest = function(x, rows, cols, ..., useNames) { 365s + t(colCumprods(t(x), rows = cols, cols = rows, useNames = useNames)) 365s + }, fsure = rowCumprods_R, useNames = useNames) 365s + } 365s + } 365s + } 365s + } 365s > 365s 365s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 365s Copyright (C) 2024 The R Foundation for Statistical Computing 365s Platform: s390x-ibm-linux-gnu (64-bit) 365s 365s R is free software and comes with ABSOLUTELY NO WARRANTY. 365s You are welcome to redistribute it under certain conditions. 365s Type 'license()' or 'licence()' for distribution details. 365s 365s R is a collaborative project with many contributors. 365s Type 'contributors()' for more information and 365s 'citation()' on how to cite R or R packages in publications. 365s 365s Type 'demo()' for some demos, 'help()' for on-line help, or 365s 'help.start()' for an HTML browser interface to help. 365s Type 'q()' to quit R. 365s 365s > library("matrixStats") 365s > 365s > rowCumsums_R <- function(x, ..., useNames = NA) { 365s + suppressWarnings({ 365s + y <- t(apply(x, MARGIN = 1L, FUN = cumsum)) 365s + }) 365s + 365s + # Preserve dimnames attribute? 365s + dim(y) <- dim(x) 365s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 365s + 365s + y 365s + } 365s > 365s > 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > # With and without some NAs 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > dimnames <- list(letters[1:10], LETTERS[1:5]) # to check dimnames attribute 365s > for (mode in c("logical", "integer", "double")) { 365s + for (add_na in c(FALSE, TRUE)) { 365s + cat("add_na = ", add_na, "\n", sep = "") 365s + 365s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 365s + if (add_na) { 365s + x[3:7, c(2, 4)] <- NA_real_ 365s + } 365s + cat("mode: ", mode, "\n", sep = "") 365s + storage.mode(x) <- mode 365s + str(x) 365s + 365s + # Test with and without dimnames on x 365s + for (setDimnames in c(TRUE, FALSE)) { 365s + if (setDimnames) dimnames(x) <- dimnames 365s + else dimnames(x) <- NULL 365s + # Check names attribute 365s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 365s + # Row/column ranges 365s + r0 <- rowCumsums_R(x, useNames = useNames) 365s + r1 <- rowCumsums(x, useNames = useNames) 365s + r2 <- t(colCumsums(t(x), useNames = useNames)) 365s + stopifnot(all.equal(r1, r2)) 365s + stopifnot(all.equal(r1, r0)) 365s + stopifnot(all.equal(r2, r0)) 365s + } # for (useNames ...) 365s + } # for (setDimnames ...) 365s + } # for (add_na ...) 365s + } 365s add_na = FALSE 365s mode: logical 365s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 365s add_na = TRUE 365s mode: logical 365s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 365s add_na = FALSE 365s mode: integer 365s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 365s add_na = TRUE 365s mode: integer 365s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 365s add_na = FALSE 365s mode: double 365s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 365s add_na = TRUE 365s mode: double 365s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 365s > 365s > 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > # All NAs 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > for (mode in c("logical", "integer", "double")) { 365s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 365s + cat("mode: ", mode, "\n", sep = "") 365s + storage.mode(x) <- mode 365s + str(x) 365s + 365s + # Test with and without dimnames on x 365s + for (setDimnames in c(TRUE, FALSE)) { 365s + if (setDimnames) dimnames(x) <- dimnames 365s + else dimnames(x) <- NULL 365s + # Check names attribute 365s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 365s + # Row/column ranges 365s + r0 <- rowCumsums_R(x, useNames = useNames) 365s + r1 <- rowCumsums(x, useNames = useNames) 365s + r2 <- t(colCumsums(t(x), useNames = useNames)) 365s + stopifnot(all.equal(r1, r2)) 365s + stopifnot(all.equal(r1, r0)) 365s + stopifnot(all.equal(r2, r0)) 365s + } # for (useNames ...) 365s + } # for (setDimnames ...) 365s + } # for (mode ...) 365s mode: logical 365s logi [1:10, 1:5] NA NA NA NA NA NA ... 365s mode: integer 365s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 365s mode: double 365s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 365s > 365s > 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > # A 1x1 matrix 365s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 365s > dimnames <- list("a", "A") # to check dimnames attribute 365s > for (mode in c("logical", "integer", "double")) { 365s + x <- matrix(0, nrow = 1L, ncol = 1L) 365s + cat("mode: ", mode, "\n", sep = "") 365s + storage.mode(x) <- mode 365s + str(x) 366s + 366s + r0 <- rowCumsums_R(x) 366s + r1 <- rowCumsums(x) 366s + r2 <- t(colCumsums(t(x))) 366s + stopifnot(all.equal(r1, r2)) 366s + stopifnot(all.equal(r1, r0)) 366s + stopifnot(all.equal(r2, r0)) 366s + 366s + # Check dimnames attribute 366s + dimnames(x) <- dimnames 366s + # r0 <- rowCumsums_R(x) 366s + # > r0 366s + # a 366s + # [1,] 0 366s + r1 <- rowCumsums(x, useNames = TRUE) 366s + r2 <- t(colCumsums(t(x), useNames = TRUE)) 366s + stopifnot(identical(dimnames(r1), dimnames)) 366s + stopifnot(identical(dimnames(r2), dimnames)) 366s + dimnames(x) <- NULL 366s + } 366s mode: logical 366s logi [1, 1] FALSE 366s mode: integer 366s int [1, 1] 0 366s mode: double 366s num [1, 1] 0 366s > 366s > 366s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 366s > # Corner cases 366s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 366s > names <- LETTERS[1:5] # to check dimnames attribute 366s > for (mode in c("logical", "integer", "double")) { 366s + cat("mode: ", mode, "\n", sep = "") 366s + value <- 0 366s + storage.mode(value) <- mode 366s + value2 <- value 366s + if (mode == "logical") value2 <- 0L 366s + 366s + # A 0x0 matrix 366s + x <- matrix(value, nrow = 0L, ncol = 0L) 366s + str(x) 366s + r0 <- matrix(value2, nrow = nrow(x), ncol = ncol(x)) 366s + r1 <- rowCumsums(x) 366s + r2 <- t(colCumsums(t(x))) 366s + stopifnot(all.equal(r1, r2)) 366s + stopifnot(all.equal(r1, r0)) 366s + stopifnot(all.equal(r2, r0)) 366s + 366s + # A 0xK matrix 366s + x <- matrix(value, nrow = 0L, ncol = 5L) 366s + str(x) 366s + colnames <- LETTERS[1:5] 366s + # Test with and without dimnames on x 366s + for (setDimnames in c(TRUE, FALSE)) { 366s + if (setDimnames) colnames(x) <- colnames 366s + else dimnames(x) <- NULL 366s + # Check names attribute 366s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 366s + r0 <- rowCumsums_R(x, useNames = useNames) 366s + r1 <- rowCumsums(x, useNames = useNames) 366s + r2 <- t(rowCumsums(t(x), useNames = useNames)) 366s + stopifnot(all.equal(r1, r2)) 366s + stopifnot(all.equal(r1, r0)) 366s + stopifnot(all.equal(r2, r0)) 366s + } # for (useNames ...) 366s + } # for (setDimnames ...) 366s + 366s + # A Nx0 matrix 366s + x <- matrix(value, nrow = 5L, ncol = 0L) 366s + str(x) 366s + rownames <- LETTERS[1:5] 366s + # Test with and without dimnames on x 366s + for (setDimnames in c(TRUE, FALSE)) { 366s + if (setDimnames) rownames(x) <- rownames 366s + else dimnames(x) <- NULL 366s + # Check names attribute 366s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 366s + r0 <- rowCumsums_R(x, useNames = useNames) 366s + r1 <- rowCumsums(x, useNames = useNames) 366s + r2 <- t(rowCumsums(t(x), useNames = useNames)) 366s + stopifnot(all.equal(r1, r2)) 366s + stopifnot(all.equal(r1, r0)) 366s + stopifnot(all.equal(r2, r0)) 366s + } # for (useNames ...) 366s + } # for (setDimnames ...) 366s + } # for (mode ...) 366s mode: logical 366s logi[0 , 0 ] 366s logi[0 , 1:5] 366s logi[1:5, 0 ] 366s mode: integer 366s int[0 , 0 ] 366s int[0 , 1:5] 366s int[1:5, 0 ] 366s mode: double 366s num[0 , 0 ] 366s num[0 , 1:5] 366s num[1:5, 0 ] 366s > 366s 366s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 366s Copyright (C) 2024 The R Foundation for Statistical Computing 366s Platform: s390x-ibm-linux-gnu (64-bit) 366s 366s R is free software and comes with ABSOLUTELY NO WARRANTY. 366s You are welcome to redistribute it under certain conditions. 366s Type 'license()' or 'licence()' for distribution details. 366s 366s R is a collaborative project with many contributors. 366s Type 'contributors()' for more information and 366s 'citation()' on how to cite R or R packages in publications. 366s 366s Type 'demo()' for some demos, 'help()' for on-line help, or 366s 'help.start()' for an HTML browser interface to help. 366s Type 'q()' to quit R. 366s 366s > library("matrixStats") 366s > 366s > rowCumsums_R <- function(x, ..., useNames = NA) { 366s + suppressWarnings({ 366s + y <- t(apply(x, MARGIN = 1L, FUN = cumsum)) 366s + }) 366s + 366s + # Preserve dimnames attribute? 366s + dim(y) <- dim(x) 366s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 366s + 366s + y 366s + } 366s > 366s > 366s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 366s > # Subsetted tests 366s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 366s > source("utils/validateIndicesFramework.R") 366s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 366s > storage.mode(x) <- "integer" 366s > 366s > # To check dimnames attribute 366s > dimnames <- list(letters[1:6], LETTERS[1:6]) 366s > 366s > # Test with and without dimnames on x 366s > for (setDimnames in c(TRUE, FALSE)) { 366s + if (setDimnames) dimnames(x) <- dimnames 366s + else dimnames(x) <- NULL 366s + for (rows in index_cases) { 366s + for (cols in index_cases) { 366s + # Check names attribute 366s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 366s + validateIndicesTestMatrix(x, rows, cols, 366s + ftest = rowCumsums, fsure = rowCumsums_R, useNames = useNames) 366s + validateIndicesTestMatrix(x, rows, cols, 366s + ftest = function(x, rows, cols, ..., useNames) { 366s + t(colCumsums(t(x), rows = cols, cols = rows, useNames = useNames)) 366s + }, fsure = rowCumsums_R, useNames = useNames) 366s + } 366s + } 366s + } 366s + } 367s > 367s 367s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 367s Copyright (C) 2024 The R Foundation for Statistical Computing 367s Platform: s390x-ibm-linux-gnu (64-bit) 367s 367s R is free software and comes with ABSOLUTELY NO WARRANTY. 367s You are welcome to redistribute it under certain conditions. 367s Type 'license()' or 'licence()' for distribution details. 367s 367s R is a collaborative project with many contributors. 367s Type 'contributors()' for more information and 367s 'citation()' on how to cite R or R packages in publications. 367s 367s Type 'demo()' for some demos, 'help()' for on-line help, or 367s 'help.start()' for an HTML browser interface to help. 367s Type 'q()' to quit R. 367s 367s > library("matrixStats") 367s > 367s > rowDiffs_R <- function(x, lag = 1L, differences = 1L, ..., useNames = NA) { 367s + ncol2 <- ncol(x) - lag * differences 367s + if (ncol2 <= 0) { 367s + y <- matrix(x[integer(0L)], nrow = nrow(x), ncol = 0L) 367s + # Preserve names attribute 367s + if (isTRUE(useNames) && !is.null(rownames(x))) rownames(y) <- rownames(x) 367s + return(y) 367s + } 367s + suppressWarnings({ 367s + y <- apply(x, MARGIN = 1L, FUN = diff, lag = lag, differences = differences) 367s + }) 367s + y <- t(y) 367s + 367s + # Preserve dimnames attribute 367s + dim(y) <- c(nrow(x), ncol2) 367s + if (isTRUE(useNames) && !is.null(dimnames(x))) { 367s + colnames <- colnames(x) 367s + if (!is.null(colnames)) { 367s + len <- length(colnames) 367s + colnames <- colnames[(len - ncol2 + 1):len] 367s + } 367s + dimnames(y) <- list(rownames(x), colnames) 367s + } 367s + else dimnames(y) <- NULL 367s + 367s + y 367s + } 367s > 367s > 367s > set.seed(0x42) 367s > 367s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 367s > # With and without some NAs 367s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 367s > for (mode in c("integer", "double")) { 367s + cat("mode: ", mode, "\n", sep = "") 367s + 367s + for (add_na in c(FALSE, TRUE)) { 367s + cat("add_na = ", add_na, "\n", sep = "") 367s + 367s + x <- matrix(sample(10 * 8) + 0.1, nrow = 10L, ncol = 8L) 367s + if (add_na) { 367s + x[3:7, c(2, 4)] <- NA_real_ 367s + } 367s + storage.mode(x) <- mode 367s + str(x) 367s + 367s + dimnames <- list(letters[1:10], LETTERS[1:8]) 367s + 367s + # Test with and without dimnames on x 367s + for (setDimnames in c(TRUE, FALSE)) { 367s + if (setDimnames) dimnames(x) <- dimnames 367s + else dimnames(x) <- NULL 367s + # Check dimnames attribute 367s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 367s + for (lag in 1:4) { 367s + for (differences in 1:3) { 367s + cat(sprintf("mode: %s, lag = %d, differences = %d\n", 367s + mode, lag, differences)) 367s + # Row/column ranges 367s + r0 <- rowDiffs_R(x, lag = lag, differences = differences, useNames = useNames) 367s + r1 <- rowDiffs(x, lag = lag, differences = differences, useNames = useNames) 367s + r2 <- t(colDiffs(t(x), lag = lag, differences = differences, useNames = useNames)) 367s + stopifnot(all.equal(r1, r0)) 367s + stopifnot(all.equal(r2, r0)) 367s + stopifnot(all.equal(r1, r2)) 367s + } 367s + } 367s + } # for (useNames ...) 367s + } # for (setDimnames ...) 367s + } # for (add_na ...) 367s + } # for (mode ...) 367s mode: integer 367s add_na = FALSE 367s int [1:10, 1:8] 68 26 29 47 48 10 1 38 16 40 ... 367s mode: integer, lag = 1, differences = 1 367s mode: integer, lag = 1, differences = 2 367s mode: integer, lag = 1, differences = 3 367s mode: integer, lag = 2, differences = 1 367s mode: integer, lag = 2, differences = 2 367s mode: integer, lag = 2, differences = 3 367s mode: integer, lag = 3, differences = 1 367s mode: integer, lag = 3, differences = 2 367s mode: integer, lag = 3, differences = 3 367s mode: integer, lag = 4, differences = 1 367s mode: integer, lag = 4, differences = 2 367s mode: integer, lag = 4, differences = 3 367s mode: integer, lag = 1, differences = 1 367s mode: integer, lag = 1, differences = 2 367s mode: integer, lag = 1, differences = 3 367s mode: integer, lag = 2, differences = 1 367s mode: integer, lag = 2, differences = 2 367s mode: integer, lag = 2, differences = 3 367s mode: integer, lag = 3, differences = 1 367s mode: integer, lag = 3, differences = 2 367s mode: integer, lag = 3, differences = 3 367s mode: integer, lag = 4, differences = 1 367s mode: integer, lag = 4, differences = 2 367s mode: integer, lag = 4, differences = 3 367s mode: integer, lag = 1, differences = 1 367s mode: integer, lag = 1, differences = 2 367s mode: integer, lag = 1, differences = 3 367s mode: integer, lag = 2, differences = 1 367s mode: integer, lag = 2, differences = 2 367s mode: integer, lag = 2, differences = 3 367s mode: integer, lag = 3, differences = 1 367s mode: integer, lag = 3, differences = 2 367s mode: integer, lag = 3, differences = 3 367s mode: integer, lag = 4, differences = 1 367s mode: integer, lag = 4, differences = 2 367s mode: integer, lag = 4, differences = 3 367s mode: integer, lag = 1, differences = 1 367s mode: integer, lag = 1, differences = 2 367s mode: integer, lag = 1, differences = 3 367s mode: integer, lag = 2, differences = 1 367s mode: integer, lag = 2, differences = 2 367s mode: integer, lag = 2, differences = 3 367s mode: integer, lag = 3, differences = 1 367s mode: integer, lag = 3, differences = 2 367s mode: integer, lag = 3, differences = 3 367s mode: integer, lag = 4, differences = 1 367s mode: integer, lag = 4, differences = 2 367s mode: integer, lag = 4, differences = 3 367s add_na = TRUE 367s int [1:10, 1:8] 80 71 7 52 79 22 31 10 29 63 ... 367s mode: integer, lag = 1, differences = 1 367s mode: integer, lag = 1, differences = 2 367s mode: integer, lag = 1, differences = 3 367s mode: integer, lag = 2, differences = 1 367s mode: integer, lag = 2, differences = 2 367s mode: integer, lag = 2, differences = 3 367s mode: integer, lag = 3, differences = 1 367s mode: integer, lag = 3, differences = 2 367s mode: integer, lag = 3, differences = 3 367s mode: integer, lag = 4, differences = 1 367s mode: integer, lag = 4, differences = 2 367s mode: integer, lag = 4, differences = 3 367s mode: integer, lag = 1, differences = 1 367s mode: integer, lag = 1, differences = 2 367s mode: integer, lag = 1, differences = 3 367s mode: integer, lag = 2, differences = 1 367s mode: integer, lag = 2, differences = 2 367s mode: integer, lag = 2, differences = 3 367s mode: integer, lag = 3, differences = 1 367s mode: integer, lag = 3, differences = 2 367s mode: integer, lag = 3, differences = 3 367s mode: integer, lag = 4, differences = 1 367s mode: integer, lag = 4, differences = 2 367s mode: integer, lag = 4, differences = 3 367s mode: integer, lag = 1, differences = 1 367s mode: integer, lag = 1, differences = 2 367s mode: integer, lag = 1, differences = 3 367s mode: integer, lag = 2, differences = 1 367s mode: integer, lag = 2, differences = 2 367s mode: integer, lag = 2, differences = 3 367s mode: integer, lag = 3, differences = 1 367s mode: integer, lag = 3, differences = 2 367s mode: integer, lag = 3, differences = 3 367s mode: integer, lag = 4, differences = 1 367s mode: integer, lag = 4, differences = 2 367s mode: integer, lag = 4, differences = 3 367s mode: integer, lag = 1, differences = 1 367s mode: integer, lag = 1, differences = 2 367s mode: integer, lag = 1, differences = 3 367s mode: integer, lag = 2, differences = 1 367s mode: integer, lag = 2, differences = 2 367s mode: integer, lag = 2, differences = 3 367s mode: integer, lag = 3, differences = 1 367s mode: integer, lag = 3, differences = 2 367s mode: integer, lag = 3, differences = 3 367s mode: integer, lag = 4, differences = 1 367s mode: integer, lag = 4, differences = 2 367s mode: integer, lag = 4, differences = 3 367s mode: double 367s add_na = FALSE 367s num [1:10, 1:8] 36.1 15.1 27.1 63.1 62.1 58.1 28.1 19.1 41.1 3.1 ... 367s mode: double, lag = 1, differences = 1 367s mode: double, lag = 1, differences = 2 367s mode: double, lag = 1, differences = 3 367s mode: double, lag = 2, differences = 1 367s mode: double, lag = 2, differences = 2 367s mode: double, lag = 2, differences = 3 367s mode: double, lag = 3, differences = 1 367s mode: double, lag = 3, differences = 2 367s mode: double, lag = 3, differences = 3 367s mode: double, lag = 4, differences = 1 367s mode: double, lag = 4, differences = 2 367s mode: double, lag = 4, differences = 3 367s mode: double, lag = 1, differences = 1 367s mode: double, lag = 1, differences = 2 367s mode: double, lag = 1, differences = 3 367s mode: double, lag = 2, differences = 1 367s mode: double, lag = 2, differences = 2 367s mode: double, lag = 2, differences = 3 367s mode: double, lag = 3, differences = 1 367s mode: double, lag = 3, differences = 2 367s mode: double, lag = 3, differences = 3 367s mode: double, lag = 4, differences = 1 367s mode: double, lag = 4, differences = 2 367s mode: double, lag = 4, differences = 3 367s mode: double, lag = 1, differences = 1 367s mode: double, lag = 1, differences = 2 367s mode: double, lag = 1, differences = 3 367s mode: double, lag = 2, differences = 1 367s mode: double, lag = 2, differences = 2 367s mode: double, lag = 2, differences = 3 367s mode: double, lag = 3, differences = 1 367s mode: double, lag = 3, differences = 2 367s mode: double, lag = 3, differences = 3 367s mode: double, lag = 4, differences = 1 367s mode: double, lag = 4, differences = 2 367s mode: double, lag = 4, differences = 3 367s mode: double, lag = 1, differences = 1 367s mode: double, lag = 1, differences = 2 367s mode: double, lag = 1, differences = 3 367s mode: double, lag = 2, differences = 1 367s mode: double, lag = 2, differences = 2 367s mode: double, lag = 2, differences = 3 367s mode: double, lag = 3, differences = 1 367s mode: double, lag = 3, differences = 2 367s mode: double, lag = 3, differences = 3 367s mode: double, lag = 4, differences = 1 367s mode: double, lag = 4, differences = 2 367s mode: double, lag = 4, differences = 3 367s add_na = TRUE 367s num [1:10, 1:8] 67.1 80.1 45.1 8.1 39.1 66.1 27.1 71.1 47.1 46.1 ... 367s mode: double, lag = 1, differences = 1 367s mode: double, lag = 1, differences = 2 367s mode: double, lag = 1, differences = 3 367s mode: double, lag = 2, differences = 1 367s mode: double, lag = 2, differences = 2 367s mode: double, lag = 2, differences = 3 367s mode: double, lag = 3, differences = 1 367s mode: double, lag = 3, differences = 2 367s mode: double, lag = 3, differences = 3 367s mode: double, lag = 4, differences = 1 367s mode: double, lag = 4, differences = 2 367s mode: double, lag = 4, differences = 3 367s mode: double, lag = 1, differences = 1 367s mode: double, lag = 1, differences = 2 367s mode: double, lag = 1, differences = 3 367s mode: double, lag = 2, differences = 1 367s mode: double, lag = 2, differences = 2 367s mode: double, lag = 2, differences = 3 367s mode: double, lag = 3, differences = 1 367s mode: double, lag = 3, differences = 2 367s mode: double, lag = 3, differences = 3 367s mode: double, lag = 4, differences = 1 367s mode: double, lag = 4, differences = 2 367s mode: double, lag = 4, differences = 3 367s mode: double, lag = 1, differences = 1 367s mode: double, lag = 1, differences = 2 367s mode: double, lag = 1, differences = 3 367s mode: double, lag = 2, differences = 1 367s mode: double, lag = 2, differences = 2 367s mode: double, lag = 2, differences = 3 367s mode: double, lag = 3, differences = 1 367s mode: double, lag = 3, differences = 2 367s mode: double, lag = 3, differences = 3 367s mode: double, lag = 4, differences = 1 367s mode: double, lag = 4, differences = 2 367s mode: double, lag = 4, differences = 3 367s mode: double, lag = 1, differences = 1 367s mode: double, lag = 1, differences = 2 367s mode: double, lag = 1, differences = 3 367s mode: double, lag = 2, differences = 1 367s mode: double, lag = 2, differences = 2 367s mode: double, lag = 2, differences = 3 367s mode: double, lag = 3, differences = 1 367s mode: double, lag = 3, differences = 2 367s mode: double, lag = 3, differences = 3 367s mode: double, lag = 4, differences = 1 367s mode: double, lag = 4, differences = 2 367s mode: double, lag = 4, differences = 3 367s > 367s > 367s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 367s > # All NAs 367s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 367s > for (mode in c("integer", "double")) { 367s + cat("mode: ", mode, "\n", sep = "") 367s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 367s + storage.mode(x) <- mode 367s + str(x) 367s + 367s + dimnames <- list(letters[1:10], LETTERS[1:5]) 367s + 367s + # Test with and without dimnames on x 367s + for (setDimnames in c(TRUE, FALSE)) { 367s + if (setDimnames) dimnames(x) <- dimnames 367s + else dimnames(x) <- NULL 367s + # Check dimnames attribute 367s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 367s + r0 <- rowDiffs_R(x, useNames = useNames) 367s + r1 <- rowDiffs(x, useNames = useNames) 367s + r2 <- t(colDiffs(t(x), useNames = useNames)) 367s + stopifnot(all.equal(r1, r0)) 367s + stopifnot(all.equal(r2, r0)) 367s + stopifnot(all.equal(r1, r2)) 367s + } # for (useNames ...) 367s + } # for (setDimnames ...) 367s + } # for (mode ...) 367s mode: integer 367s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 367s mode: double 367s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 367s > 367s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 367s > # A 1x1 matrix 367s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 367s > x <- matrix(0, nrow = 1L, ncol = 1L) 367s > dimnames <- list("a", "A") 367s > # Test with and without dimnames on x 367s > for (setDimnames in c(TRUE, FALSE)) { 367s + if (setDimnames) dimnames(x) <- dimnames 367s + else dimnames(x) <- NULL 367s + # Check dimnames attribute 367s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 367s + r0 <- rowDiffs_R(x, useNames = useNames) 367s + r1 <- rowDiffs(x, useNames = useNames) 367s + r2 <- t(colDiffs(t(x), useNames = useNames)) 367s + stopifnot(all.equal(r1, r0)) 367s + stopifnot(all.equal(r2, r0)) 367s + stopifnot(all.equal(r1, r2)) 367s + } # for (useNames ...) 367s + } # for (setDimnames ...) 367s > 367s 367s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 367s Copyright (C) 2024 The R Foundation for Statistical Computing 367s Platform: s390x-ibm-linux-gnu (64-bit) 367s 367s R is free software and comes with ABSOLUTELY NO WARRANTY. 367s You are welcome to redistribute it under certain conditions. 367s Type 'license()' or 'licence()' for distribution details. 367s 367s R is a collaborative project with many contributors. 367s Type 'contributors()' for more information and 367s 'citation()' on how to cite R or R packages in publications. 367s 367s Type 'demo()' for some demos, 'help()' for on-line help, or 367s 'help.start()' for an HTML browser interface to help. 367s Type 'q()' to quit R. 367s 367s > library("matrixStats") 367s > 367s > rowDiffs_R <- function(x, lag = 1L, differences = 1L, ..., useNames = NA) { 367s + ncol2 <- ncol(x) - lag * differences 367s + if (ncol2 <= 0) { 367s + y <- matrix(x[integer(0L)], nrow = nrow(x), ncol = 0L) 367s + # Preserve names attribute 367s + if (isTRUE(useNames) && !is.null(rownames(x))) rownames(y) <- rownames(x) 367s + return(y) 367s + } 367s + suppressWarnings({ 367s + y <- apply(x, MARGIN = 1L, FUN = diff, lag = lag, differences = differences) 367s + }) 367s + y <- t(y) 367s + 367s + # Preserve dimnames attribute 367s + dim(y) <- c(nrow(x), ncol2) 367s + if (isTRUE(useNames) && !is.null(dimnames(x))) { 367s + colnames <- colnames(x) 367s + if (!is.null(colnames)) { 367s + len <- length(colnames) 367s + colnames <- colnames[(len - ncol2 + 1):len] 367s + } 367s + dimnames(y) <- list(rownames(x), colnames) 367s + } 367s + else dimnames(y) <- NULL 367s + 367s + y 367s + } 367s > 367s > 367s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 367s > # Subsetted tests 367s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 367s > source("utils/validateIndicesFramework.R") 367s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 367s > storage.mode(x) <- "integer" 367s > 367s > # To check dimnames attribute 367s > dimnames <- list(letters[1:6], LETTERS[1:6]) 367s > 367s > # Test with and without dimnames on x 367s > for (setDimnames in c(TRUE, FALSE)) { 367s + if (setDimnames) dimnames(x) <- dimnames 367s + else dimnames(x) <- NULL 367s + 367s + count <- 0L 367s + for (rows in index_cases) { 367s + for (cols in index_cases) { 367s + count <- count + 1L 367s + for (lag in 1:2) { 367s + for (differences in 1:3) { 367s + # Check dimnames attribute 367s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 367s + useNames <- useNames[count %% length(useNames) + 1] 367s + validateIndicesTestMatrix(x, rows, cols, 367s + ftest = rowDiffs, fsure = rowDiffs_R, 367s + lag = lag, differences = differences, useNames = useNames) 367s + validateIndicesTestMatrix(x, rows, cols, 367s + ftest = function(x, rows, cols, ..., useNames) { 367s + t(colDiffs(t(x), rows = cols, cols = rows, ..., useNames = useNames)) 367s + }, fsure = rowDiffs_R, 367s + lag = lag, differences = differences, useNames = useNames) 367s + } 367s + } 367s + } 367s + } 367s + } 370s > 370s 370s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 370s Copyright (C) 2024 The R Foundation for Statistical Computing 370s Platform: s390x-ibm-linux-gnu (64-bit) 370s 370s R is free software and comes with ABSOLUTELY NO WARRANTY. 370s You are welcome to redistribute it under certain conditions. 370s Type 'license()' or 'licence()' for distribution details. 370s 370s R is a collaborative project with many contributors. 370s Type 'contributors()' for more information and 370s 'citation()' on how to cite R or R packages in publications. 370s 370s Type 'demo()' for some demos, 'help()' for on-line help, or 370s 'help.start()' for an HTML browser interface to help. 370s Type 'q()' to quit R. 370s 370s > library("matrixStats") 370s > 370s > rowIQRs_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 370s + quantile_na <- function(x, ..., na.rm = FALSE) { 370s + if (!na.rm && anyMissing(x)) 370s + return(c(NA_real_, NA_real_)) 370s + quantile(x, ..., na.rm = na.rm) 370s + } 370s + q <- apply(x, MARGIN = 1L, FUN = quantile_na, 370s + probs = c(0.25, 0.75), na.rm = na.rm) 370s + rownames(q) <- NULL # Not needed anymore 370s + 370s + # Preserve names attribute 370s + dim(q) <- c(2L, nrow(x)) 370s + colnames(q) <- if (isTRUE(useNames)) rownames(x) else NULL 370s + 370s + q[2L, , drop = TRUE] - q[1L, , drop = TRUE] 370s + } 370s > 370s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 370s > # Test with multiple quantiles 370s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 370s > for (mode in c("integer", "double")) { 370s + cat("mode: ", mode, "\n", sep = "") 370s + x <- matrix(1:100 + 0.1, nrow = 10, ncol = 10) 370s + storage.mode(x) <- mode 370s + str(x) 370s + 370s + # To check names attribute 370s + dimnames <- list(letters[1:10], LETTERS[1:10]) 370s + 370s + for (add_na in c(FALSE, TRUE)) { 370s + if (add_na) { 370s + x[3:5, 6:9] <- NA 370s + } 370s + # Test with and without dimnames on x 370s + for (setDimnames in c(TRUE, FALSE)) { 370s + if (setDimnames) dimnames(x) <- dimnames 370s + else dimnames(x) <- NULL 370s + for (na.rm in c(FALSE, TRUE)) { 370s + # Check names attribute 370s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 370s + probs <- c(0, 0.5, 1) 370s + q0 <- rowIQRs_R(x, na.rm = na.rm, useNames = useNames) 370s + print(q0) 370s + q1 <- rowIQRs(x, na.rm = na.rm, useNames = useNames) 370s + print(q1) 370s + stopifnot(all.equal(q1, q0)) 370s + q2 <- colIQRs(t(x), na.rm = na.rm, useNames = useNames) 370s + stopifnot(all.equal(q2, q0)) 370s + 370s + q <- iqr(x[3, ], na.rm = na.rm) 370s + print(q) 370s + } # for (useNames ...) 370s + } # for (na.rm ...) 370s + } # for (setDimnames ...) 370s + } # for (add_na ...) 370s + } # for (mode ...) 370s mode: integer 370s int [1:10, 1:10] 1 2 3 4 5 6 7 8 9 10 ... 370s a b c d e f g h i j 370s 45 45 45 45 45 45 45 45 45 45 370s a b c d e f g h i j 370s 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s a b c d e f g h i j 370s 45 45 45 45 45 45 45 45 45 45 370s a b c d e f g h i j 370s 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s a b c d e f g h i j 370s 45 45 NA NA NA 45 45 45 45 45 370s a b c d e f g h i j 370s 45 45 NA NA NA 45 45 45 45 45 370s [1] NA 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] NA 370s a b c d e f g h i j 370s 45 45 25 25 25 45 45 45 45 45 370s a b c d e f g h i j 370s 45 45 25 25 25 45 45 45 45 45 370s [1] 25 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 25 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] NA 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] NA 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 25 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 25 370s mode: double 370s num [1:10, 1:10] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 370s a b c d e f g h i j 370s 45 45 45 45 45 45 45 45 45 45 370s a b c d e f g h i j 370s 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s a b c d e f g h i j 370s 45 45 45 45 45 45 45 45 45 45 370s a b c d e f g h i j 370s 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 45 45 45 45 45 45 45 45 45 370s [1] 45 370s a b c d e f g h i j 370s 45 45 NA NA NA 45 45 45 45 45 370s a b c d e f g h i j 370s 45 45 NA NA NA 45 45 45 45 45 370s [1] NA 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] NA 370s a b c d e f g h i j 370s 45 45 25 25 25 45 45 45 45 45 370s a b c d e f g h i j 370s 45 45 25 25 25 45 45 45 45 45 370s [1] 25 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 25 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] NA 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] 45 45 NA NA NA 45 45 45 45 45 370s [1] NA 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 25 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 45 45 25 25 25 45 45 45 45 45 370s [1] 25 370s > 370s > 370s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 370s > # Test corner cases 370s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 370s > for (mode in c("integer", "double")) { 370s + cat("mode: ", mode, "\n", sep = "") 370s + # Empty vectors 370s + x <- integer(0L) 370s + storage.mode(x) <- mode 370s + str(x) 370s + q <- iqr(x) 370s + print(q) 370s + stopifnot(identical(q, NA_real_)) 370s + 370s + # Scalar 370s + x <- 1L 370s + storage.mode(x) <- mode 370s + str(x) 370s + q <- iqr(x) 370s + str(q) 370s + stopifnot(identical(q, 0)) 370s + } 370s mode: integer 370s int(0) 370s [1] NA 370s int 1 370s num 0 370s mode: double 370s num(0) 370s [1] NA 370s num 1 370s num 0 370s > 370s > 370s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 370s > # Single row matrices 370s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 370s > x <- matrix(1, nrow = 1L, ncol = 2L) 370s > dimnames <- list("a", LETTERS[1:2]) 370s > # Test with and without dimnames on x 370s > for (setDimnames in c(TRUE, FALSE)) { 370s + if (setDimnames) dimnames(x) <- dimnames 370s + else dimnames(x) <- NULL 370s + # Check names attribute 370s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 370s + q0 <- rowIQRs_R(x, useNames = useNames) 370s + q1 <- rowIQRs(x, useNames = useNames) 370s + q2 <- colIQRs(t(x), useNames = useNames) 370s + stopifnot(all.equal(q0, q1)) 370s + stopifnot(all.equal(q0, q2)) 370s + } 370s + } 370s > 370s > x <- matrix(1, nrow = 2L, ncol = 1L) 370s > q <- colIQRs(x) 370s > stopifnot(identical(q, 0)) 370s > 370s 370s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 370s Copyright (C) 2024 The R Foundation for Statistical Computing 370s Platform: s390x-ibm-linux-gnu (64-bit) 370s 370s R is free software and comes with ABSOLUTELY NO WARRANTY. 370s You are welcome to redistribute it under certain conditions. 370s Type 'license()' or 'licence()' for distribution details. 370s 370s R is a collaborative project with many contributors. 370s Type 'contributors()' for more information and 370s 'citation()' on how to cite R or R packages in publications. 370s 370s Type 'demo()' for some demos, 'help()' for on-line help, or 370s 'help.start()' for an HTML browser interface to help. 370s Type 'q()' to quit R. 370s 370s > library("matrixStats") 370s > 370s > rowIQRs_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 370s + quantile_na <- function(x, ..., na.rm = FALSE) { 370s + if (!na.rm && anyMissing(x)) 370s + return(c(NA_real_, NA_real_)) 370s + quantile(x, ..., na.rm = na.rm) 370s + } 370s + q <- apply(x, MARGIN = 1L, FUN = quantile_na, 370s + probs = c(0.25, 0.75), na.rm = na.rm) 370s + rownames(q) <- NULL # Not needed anymore 370s + 370s + # Preserve names attribute 370s + dim(q) <- c(2L, nrow(x)) 370s + colnames(q) <- if (isTRUE(useNames)) rownames(x) else NULL 370s + 370s + q[2L, , drop = TRUE] - q[1L, , drop = TRUE] 370s + } 370s > 370s > 370s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 370s > # Subsetted tests 370s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 370s > source("utils/validateIndicesFramework.R") 370s > x <- runif(6, min = -6, max = 6) 370s > for (idxs in index_cases) { 370s + for (na.rm in c(TRUE, FALSE)) { 370s + validateIndicesTestVector(x, idxs, ftest = iqr, fsure = function(x, na.rm) { 370s + dim(x) <- c(1L, length(x)) 370s + rowIQRs_R(x, na.rm = na.rm) 370s + }, na.rm = na.rm) 370s + } 370s + } 370s > 370s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 370s > 370s > # To check names attribute 370s > dimnames <- list(letters[1:6], LETTERS[1:6]) 370s > 370s > # Test with and without dimnames on x 370s > for (setDimnames in c(TRUE, FALSE)) { 370s + if (setDimnames) dimnames(x) <- dimnames 370s + else dimnames(x) <- NULL 370s + 370s + count <- 0L 370s + for (rows in index_cases) { 370s + for (cols in index_cases) { 370s + count <- count + 1L 370s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 370s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 370s + useNames <- useNames[count %% length(useNames) + 1] 370s + 370s + validateIndicesTestMatrix(x, rows, cols, 370s + ftest = rowIQRs, fsure = rowIQRs_R, 370s + na.rm = na.rm, useNames = useNames) 370s + validateIndicesTestMatrix(x, rows, cols, 370s + fcoltest = colIQRs, fsure = rowIQRs_R, 370s + na.rm = na.rm, useNames = useNames) 370s + } 370s + } 370s + } 371s > 371s 371s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 371s Copyright (C) 2024 The R Foundation for Statistical Computing 371s Platform: s390x-ibm-linux-gnu (64-bit) 371s 371s R is free software and comes with ABSOLUTELY NO WARRANTY. 371s You are welcome to redistribute it under certain conditions. 371s Type 'license()' or 'licence()' for distribution details. 371s 371s R is a collaborative project with many contributors. 371s Type 'contributors()' for more information and 371s 'citation()' on how to cite R or R packages in publications. 371s 371s Type 'demo()' for some demos, 'help()' for on-line help, or 371s 'help.start()' for an HTML browser interface to help. 371s Type 'q()' to quit R. 371s 371s > # Test inspired by the harmonic mean example in R-help 371s > # thread '[R] Beyond double-precision?' on May 9, 2009. 371s > 371s > library("matrixStats") 371s > library("stats") 371s > 371s > logSumExp0 <- function(lx) { 371s + idx_max <- which.max(lx) 371s + log1p(sum(exp(lx[-idx_max] - lx[idx_max]))) + lx[idx_max] 371s + } 371s > 371s > n <- 200L 371s > set.seed(1) 371s > 371s > for (mode in c("integer", "double")) { 371s + cat("mode: ", mode, "\n", sep = "") 371s + x <- matrix(runif(n, min = 1.0, max = 3.0), nrow = 20L) 371s + storage.mode(x) <- mode 371s + str(x) 371s + 371s + # The logarithm of the harmonic mean by rows 371s + y_h <- log(1 / rowMeans(1 / x)) 371s + str(y_h) 371s + 371s + lx_neg <- -log(x) 371s + 371s + y0 <- log(ncol(x)) - apply(lx_neg, MARGIN = 1L, FUN = logSumExp0) 371s + stopifnot(all.equal(y0, y_h)) 371s + 371s + y1 <- log(ncol(x)) - apply(lx_neg, MARGIN = 1L, FUN = logSumExp) 371s + stopifnot(all.equal(y1, y0)) 371s + 371s + y2 <- log(ncol(x)) - rowLogSumExps(lx_neg) 371s + stopifnot(all.equal(y2, y0)) 371s + 371s + y3 <- log(ncol(x)) - colLogSumExps(t(lx_neg)) 371s + stopifnot(all.equal(y3, y0)) 371s + 371s + 371s + # The logarithm of the harmonic mean by columns 371s + y_h <- log(1 / colMeans(1 / x)) 371s + str(y_h) 371s + 371s + y0 <- log(nrow(x)) - apply(lx_neg, MARGIN = 2L, FUN = logSumExp0) 371s + stopifnot(all.equal(y0, y_h)) 371s + 371s + y1 <- log(nrow(x)) - apply(lx_neg, MARGIN = 2L, FUN = logSumExp) 371s + stopifnot(all.equal(y1, y0)) 371s + 371s + y2 <- log(nrow(x)) - colLogSumExps(lx_neg) 371s + stopifnot(all.equal(y2, y0)) 371s + 371s + y3 <- log(nrow(x)) - rowLogSumExps(t(lx_neg)) 371s + stopifnot(all.equal(y3, y0)) 371s + 371s + # Testing names 371s + rownames(lx_neg) <- seq_len(nrow(x)) 371s + colnames(lx_neg) <- seq_len(ncol(x)) 371s + y2 <- rowLogSumExps(lx_neg, useNames = TRUE) 371s + stopifnot(identical(names(y2), rownames(lx_neg))) 371s + y3 <- colLogSumExps(t(lx_neg), useNames = TRUE) 371s + stopifnot(identical(names(y3), rownames(lx_neg))) 371s + } # for (mode ...) 372s mode: integer 372s int [1:20, 1:10] 1 1 2 2 1 2 2 2 2 1 ... 372s num [1:20] 0.357 0.223 0.223 0.288 0.511 ... 372s num [1:10] 0.322 0.223 0.322 0.255 0.255 ... 372s mode: double 372s num [1:20, 1:10] 1.54 1.44 2.03 1.54 1.36 ... 372s num [1:20] 0.526 0.466 0.734 0.638 0.604 ... 372s num [1:10] 0.627 0.582 0.617 0.474 0.418 ... 372s > 372s > 372s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 372s > # Corner cases 372s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 372s > ## Zero-size matrices 372s > lx <- matrix(numeric(0L), nrow = 0L, ncol = 0L) 372s > y <- rowLogSumExps(lx) 372s > print(y) 372s numeric(0) 372s > stopifnot(length(y) == nrow(lx)) 372s > 372s > y <- colLogSumExps(lx) 372s > print(y) 372s numeric(0) 372s > stopifnot(length(y) == ncol(lx)) 372s > 372s > ## Zero-height matrices 372s > lx <- matrix(numeric(0L), nrow = 0L, ncol = 5L) 372s > y <- rowLogSumExps(lx) 372s > print(y) 372s numeric(0) 372s > stopifnot(length(y) == nrow(lx)) 372s > 372s > y <- colLogSumExps(lx) 372s > print(y) 372s [1] -Inf -Inf -Inf -Inf -Inf 372s > stopifnot(length(y) == ncol(lx)) 372s > stopifnot(all(y == -Inf)) 372s > 372s > ## Zero-width matrices 372s > lx <- matrix(numeric(0L), nrow = 5L, ncol = 0L) 372s > y <- colLogSumExps(lx) 372s > print(y) 372s numeric(0) 372s > stopifnot(length(y) == ncol(lx)) 372s > 372s > y <- rowLogSumExps(lx) 372s > print(y) 372s [1] -Inf -Inf -Inf -Inf -Inf 372s > stopifnot(length(y) == nrow(lx)) 372s > stopifnot(all(y == -Inf)) 372s > 372s > 372s > ## Matrices with one element 372s > lx <- matrix(1.0, nrow = 1L, ncol = 1L) 372s > y <- rowLogSumExps(lx) 372s > print(y) 372s [1] 1 372s > stopifnot(length(y) == nrow(lx)) 372s > stopifnot(all(y == lx)) 372s > 372s > y <- colLogSumExps(lx) 372s > print(y) 372s [1] 1 372s > stopifnot(length(y) == ncol(lx)) 372s > stopifnot(all(y == lx)) 372s > 372s > ## All missing values 372s > lx <- matrix(NA_real_, nrow = 1L, ncol = 1L) 372s > y <- rowLogSumExps(lx, na.rm = TRUE) 372s > print(y) 372s [1] -Inf 372s > stopifnot(length(y) == nrow(lx)) 372s > stopifnot(identical(y, -Inf)) 372s > 372s > lx <- matrix(NA_real_, nrow = 1L, ncol = 1L) 372s > y <- colLogSumExps(lx, na.rm = TRUE) 372s > print(y) 372s [1] -Inf 372s > stopifnot(length(y) == ncol(lx)) 372s > stopifnot(identical(y, -Inf)) 372s > 372s > lx <- matrix(NA_real_, nrow = 2L, ncol = 2L) 372s > y <- rowLogSumExps(lx, na.rm = TRUE) 372s > print(y) 372s [1] -Inf -Inf 372s > stopifnot(length(y) == nrow(lx)) 372s > stopifnot(all(y == -Inf)) 372s > 372s > y <- rowLogSumExps(lx, na.rm = FALSE) 372s > print(y) 372s [1] NA NA 372s > stopifnot(length(y) == nrow(lx)) 372s > stopifnot(all(is.na(y) & !is.nan(y))) 372s > 372s > lx <- matrix(NA_real_, nrow = 2L, ncol = 2L) 372s > y <- colLogSumExps(lx, na.rm = TRUE) 372s > print(y) 372s [1] -Inf -Inf 372s > stopifnot(length(y) == ncol(lx)) 372s > stopifnot(all(y == -Inf)) 372s > 372s > y <- colLogSumExps(lx, na.rm = FALSE) 372s > print(y) 372s [1] NA NA 372s > stopifnot(length(y) == ncol(lx)) 372s > stopifnot(all(is.na(y) & !is.nan(y))) 372s > 372s > ## +Inf values 372s > lx <- matrix(c(1, 2, +Inf), nrow = 3L, ncol = 2L) 372s > y <- colLogSumExps(lx, na.rm = TRUE) 372s > print(y) 372s [1] Inf Inf 372s > stopifnot(length(y) == ncol(lx)) 372s > stopifnot(all(y == +Inf)) 372s > 372s > ## multiple -Inf values 372s > lx <- matrix(c(-Inf, -Inf), nrow = 2L, ncol = 3L) 372s > y <- rowLogSumExps(lx) 372s > print(y) 372s [1] -Inf -Inf 372s > stopifnot(length(y) == nrow(lx)) 372s > stopifnot(all(y == -Inf)) 372s > 372s > lx <- matrix(c(-Inf, 5, -Inf), nrow = 2L, ncol = 3L, byrow = TRUE) 372s > y <- rowLogSumExps(lx) 372s > print(y) 372s [1] 5 5 372s > stopifnot(length(y) == nrow(lx)) 372s > stopifnot(all(y == 5)) 372s > 372s > ## Bug report #104 (https://github.com/HenrikBengtsson/matrixStats/issues/104) 372s > ## (This would core dump on Windows) 372s > x <- matrix(0.0, nrow = 2L, ncol = 32762L) 372s > y <- colLogSumExps(x) 372s > str(y) 372s num [1:32762] 0.693 0.693 0.693 0.693 0.693 ... 372s > 372s > ## Bug report #120 (https://github.com/HenrikBengtsson/matrixStats/issues/120) 372s > ## (This would error if x had rownames/colnames and non-NULL rows/cols were 372s > ## used) 372s > x <- matrix(runif(6), nrow = 2L, ncol = 3L, 372s + dimnames = list(c("A", "B"), c("a", "b", "c"))) 372s > y <- colLogSumExps(x, cols = 3:1, useNames = TRUE) 372s > stopifnot(names(y) == c("c", "b", "a")) 372s > y <- rowLogSumExps(x, rows = 2, useNames = TRUE) 372s > stopifnot(names(y) == "B") 372s > 372s > 372s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 372s > # Check names attributes 372s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 372s > 372s > ## Create isFALSE() if running on an old version of R 372s > if (!exists("isFALSE", mode="function")) { 372s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 372s + } 372s > 372s > rowLogSumExps_R <- function(x, ..., useNames = NA) { 372s + res <- apply(x, MARGIN = 1L, FUN = function(rx, ...) { 372s + log(sum(exp(rx), ...)) 372s + }, ...) 372s + if (isFALSE(useNames)) names(res) <- NULL 372s + res 372s + } 372s > 372s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 372s > 372s > # To check names attribute 372s > dimnames <- list(letters[1:6], LETTERS[1:6]) 372s > 372s > # Test with and without dimnames on x 372s > for (setDimnames in c(TRUE, FALSE)) { 372s + if (setDimnames) dimnames(x) <- dimnames 372s + else dimnames(x) <- NULL 372s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 372s + y0 <- rowLogSumExps_R(x, useNames = useNames) 372s + y1 <- rowLogSumExps(x, useNames = useNames) 372s + y2 <- colLogSumExps(t(x), useNames = useNames) 372s + stopifnot(all.equal(y1, y0)) 372s + stopifnot(all.equal(y2, y0)) 372s + } 372s + } 372s > 372s 372s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 372s Copyright (C) 2024 The R Foundation for Statistical Computing 372s Platform: s390x-ibm-linux-gnu (64-bit) 372s 372s R is free software and comes with ABSOLUTELY NO WARRANTY. 372s You are welcome to redistribute it under certain conditions. 372s Type 'license()' or 'licence()' for distribution details. 372s 372s R is a collaborative project with many contributors. 372s Type 'contributors()' for more information and 372s 'citation()' on how to cite R or R packages in publications. 372s 372s Type 'demo()' for some demos, 'help()' for on-line help, or 372s 'help.start()' for an HTML browser interface to help. 372s Type 'q()' to quit R. 372s 372s > library("matrixStats") 372s > 372s > ## Create isFALSE() if running on an old version of R 372s > if (!exists("isFALSE", mode="function")) { 372s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 372s + } 372s > 372s > rowLogSumExps_R <- function(x, ..., useNames = NA) { 372s + res <- apply(x, MARGIN = 1L, FUN = function(rx, ...) { 372s + log(sum(exp(rx), ...)) 372s + }, ...) 372s + if (isFALSE(useNames)) names(res) <- NULL 372s + res 372s + } 372s > 372s > 372s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 372s > # Subsetted tests 372s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 372s > source("utils/validateIndicesFramework.R") 372s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 372s > 372s > # To check names attribute 372s > dimnames <- list(letters[1:6], LETTERS[1:6]) 372s > 372s > # Test with and without dimnames on x 372s > for (setDimnames in c(TRUE, FALSE)) { 372s + if (setDimnames) dimnames(x) <- dimnames 372s + else dimnames(x) <- NULL 372s + for (rows in index_cases) { 372s + for (cols in index_cases) { 372s + for (na.rm in c(TRUE, FALSE)) { 372s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 372s + validateIndicesTestMatrix(x, rows, cols, 372s + ftest = rowLogSumExps, 372s + fsure = rowLogSumExps_R, 372s + na.rm = na.rm, useNames = useNames) 372s + validateIndicesTestMatrix(x, rows, cols, 372s + fcoltest = colLogSumExps, 372s + fsure = rowLogSumExps_R, 372s + na.rm = na.rm, useNames = useNames) 372s + } 372s + } 372s + } 372s + } 372s + } 373s > 373s 373s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 373s Copyright (C) 2024 The R Foundation for Statistical Computing 373s Platform: s390x-ibm-linux-gnu (64-bit) 373s 373s R is free software and comes with ABSOLUTELY NO WARRANTY. 373s You are welcome to redistribute it under certain conditions. 373s Type 'license()' or 'licence()' for distribution details. 373s 373s R is a collaborative project with many contributors. 373s Type 'contributors()' for more information and 373s 'citation()' on how to cite R or R packages in publications. 373s 373s Type 'demo()' for some demos, 'help()' for on-line help, or 373s 'help.start()' for an HTML browser interface to help. 373s Type 'q()' to quit R. 373s 373s > library("matrixStats") 373s > 373s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 373s > options(matrixStats.center.onUse = "ignore") 373s > 373s > rowMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 373s + suppressWarnings({ 373s + res <- apply(x, MARGIN = 1L, FUN = mad, na.rm = na.rm) 373s + }) 373s + if (is.na(useNames) || !useNames) names(res) <- NULL 373s + res 373s + } 373s > 373s > colMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 373s + suppressWarnings({ 373s + res <- apply(x, MARGIN = 2L, FUN = mad, na.rm = na.rm) 373s + }) 373s + if (is.na(useNames) || !useNames) names(res) <- NULL 373s + res 373s + } 373s > 373s > rowMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 373s + center <- rowMedians(x, cols = cols, na.rm = na.rm, useNames = FALSE) 373s + rowMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 373s + } 373s > 373s > colMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 373s + center <- colMedians(x, rows = rows, na.rm = na.rm, useNames = FALSE) 373s + colMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 373s + } 373s > 373s > 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > # A 3x3 matrix (no ties) 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > for (mode in c("integer", "double")) { 373s + x <- matrix(c(1, 2, 3, 2, 3, 4, 3, 4, 5) + 0.1, nrow = 3, ncol = 3) 373s + cat("mode: ", mode, "\n", sep = "") 373s + storage.mode(x) <- mode 373s + str(x) 373s + 373s + # To check name attribute 373s + dimnames <- list(letters[1:3], LETTERS[1:3]) 373s + 373s + # Test with and without dimnames on x 373s + for (setDimnames in c(TRUE, FALSE)) { 373s + if (setDimnames) dimnames(x) <- dimnames 373s + else dimnames(x) <- NULL 373s + tx <- t(x) 373s + # Check names attribute 373s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 373s + cat("rowMads():\n") 373s + center <- rowMedians(x, na.rm = TRUE, useNames = useNames) 373s + r0 <- rowMads_R(x, na.rm = TRUE, useNames = useNames) 373s + r1 <- rowMads(x, na.rm = TRUE, useNames = useNames) 373s + r1b <- rowMads_center(x, na.rm = TRUE, useNames = useNames) 373s + r1c <- rowMads(x, center = center, na.rm = TRUE, useNames = useNames) 373s + r2 <- colMads(tx, na.rm = TRUE, useNames = useNames) 373s + r2b <- colMads_center(tx, na.rm = TRUE, useNames = useNames) 373s + stopifnot(all.equal(r1, r2)) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r1b, r1)) 373s + stopifnot(all.equal(r1c, r1)) 373s + stopifnot(all.equal(r2, r0)) 373s + stopifnot(all.equal(r2b, r2)) 373s + 373s + cat("colMads():\n") 373s + center <- colMedians(x, na.rm = TRUE, useNames = useNames) 373s + r0 <- colMads_R(x, na.rm = TRUE, useNames = useNames) 373s + r1 <- colMads(x, na.rm = TRUE, useNames = useNames) 373s + r1b <- colMads_center(x, na.rm = TRUE, useNames = useNames) 373s + r1c <- colMads(x, center = center, na.rm = TRUE, useNames = useNames) 373s + r2 <- rowMads(tx, na.rm = TRUE, useNames = useNames) 373s + r2b <- rowMads_center(tx, na.rm = TRUE, useNames = useNames) 373s + stopifnot(all.equal(r1, r2)) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r1b, r1)) 373s + stopifnot(all.equal(r1c, r1)) 373s + stopifnot(all.equal(r2, r0)) 373s + stopifnot(all.equal(r2b, r2)) 373s + } 373s + } 373s + } 373s mode: integer 373s int [1:3, 1:3] 1 2 3 2 3 4 3 4 5 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s mode: double 373s num [1:3, 1:3] 1.1 2.1 3.1 2.1 3.1 4.1 3.1 4.1 5.1 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s > 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > # Ties: a 4x4 matrix 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > for (mode in c("integer", "double")) { 373s + x <- matrix(c(1:4, 2:5, 3:6, 4:7) + 0.1, nrow = 4, ncol = 4) 373s + cat("mode: ", mode, "\n", sep = "") 373s + storage.mode(x) <- mode 373s + str(x) 373s + tx <- t(x) 373s + 373s + # To check name attribute 373s + dimnames <- list(letters[1:4], LETTERS[1:4]) 373s + 373s + # Test with and without dimnames on x 373s + for (setDimnames in c(TRUE, FALSE)) { 373s + if (setDimnames) dimnames(x) <- dimnames 373s + else dimnames(x) <- NULL 373s + tx <- t(x) 373s + # Check names attribute 373s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 373s + cat("rowMads():\n") 373s + r0 <- rowMads_R(x, na.rm = TRUE, useNames = useNames) 373s + r1 <- rowMads(x, na.rm = TRUE, useNames = useNames) 373s + r2 <- colMads(tx, na.rm = TRUE, useNames = useNames) 373s + stopifnot(all.equal(r1, r2)) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r2, r0)) 373s + 373s + cat("colMads():\n") 373s + r0 <- colMads_R(x, na.rm = TRUE, useNames = useNames) 373s + r1 <- colMads(x, na.rm = TRUE, useNames = useNames) 373s + r2 <- rowMads(tx, na.rm = TRUE, useNames = useNames) 373s + stopifnot(all.equal(r1, r2)) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r2, r0)) 373s + } 373s + } 373s + } 373s mode: integer 373s int [1:4, 1:4] 1 2 3 4 2 3 4 5 3 4 ... 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s mode: double 373s num [1:4, 1:4] 1.1 2.1 3.1 4.1 2.1 3.1 4.1 5.1 3.1 4.1 ... 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s > tx <- NULL 373s > 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > # No ties: a 3x3 matrix with an NA value 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > for (mode in c("integer", "double")) { 373s + x <- matrix(c(1, 2, 3, 2, 3, 4, 3, 4, 5) + 0.1, nrow = 3, ncol = 3) 373s + x[2, 2] <- NA_real_ 373s + 373s + cat("mode: ", mode, "\n", sep = "") 373s + storage.mode(x) <- mode 373s + str(x) 373s + tx <- t(x) 373s + 373s + # To check name attribute 373s + dimnames <- list(letters[1:3], LETTERS[1:3]) 373s + 373s + # Test with and without dimnames on x 373s + for (setDimnames in c(TRUE, FALSE)) { 373s + if (setDimnames) dimnames(x) <- dimnames 373s + else dimnames(x) <- NULL 373s + tx <- t(x) 373s + # Check names attribute 373s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 373s + cat("rowMads():\n") 373s + r0 <- rowMads_R(x, na.rm = TRUE, useNames = useNames) 373s + r1 <- rowMads(x, na.rm = TRUE, useNames = useNames) 373s + r2 <- colMads(tx, na.rm = TRUE, useNames = useNames) 373s + stopifnot(all.equal(r1, r2)) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r2, r0)) 373s + 373s + cat("colMads():\n") 373s + r0 <- colMads_R(x, na.rm = TRUE, useNames = useNames) 373s + r1 <- colMads(x, na.rm = TRUE, useNames = useNames) 373s + r2 <- rowMads(tx, na.rm = TRUE, useNames = useNames) 373s + stopifnot(all.equal(r1, r2)) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r2, r0)) 373s + } 373s + } 373s + } 373s mode: integer 373s int [1:3, 1:3] 1 2 3 2 NA 4 3 4 5 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s mode: double 373s num [1:3, 1:3] 1.1 2.1 3.1 2.1 NA 4.1 3.1 4.1 5.1 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s rowMads(): 373s colMads(): 373s > tx <- NULL 373s > 373s > 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > # With and without some NAs 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > for (add_na in c(FALSE, TRUE)) { 373s + cat("add_na = ", add_na, "\n", sep = "") 373s + 373s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 373s + if (add_na) { 373s + x[3:7, c(2, 4)] <- NA_real_ 373s + } 373s + 373s + # To check name attribute 373s + dimnames <- list(letters[1:10], LETTERS[1:5]) 373s + 373s + # Test with and without dimnames on x 373s + for (setDimnames in c(TRUE, FALSE)) { 373s + if (setDimnames) dimnames(x) <- dimnames 373s + else dimnames(x) <- NULL 373s + tx <- t(x) 373s + # Row/column ranges 373s + for (na.rm in c(FALSE, TRUE)) { 373s + # Check names attribute 373s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 373s + cat("na.rm = ", na.rm, "\n", sep = "") 373s + cat("rowMads():\n") 373s + center <- rowMedians(x, na.rm = na.rm, useNames = useNames) 373s + r0 <- rowMads_R(x, na.rm = na.rm, useNames = useNames) 373s + r1 <- rowMads(x, na.rm = na.rm, useNames = useNames) 373s + r2 <- rowMads(x, center = center, na.rm = na.rm, useNames = useNames) 373s + r3 <- colMads(tx, na.rm = na.rm, useNames = useNames) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r2, r0)) 373s + stopifnot(all.equal(r2, r1)) 373s + stopifnot(all.equal(r3, r0)) 373s + stopifnot(all.equal(r3, r1)) 373s + stopifnot(all.equal(r3, r2)) 373s + 373s + cat("colMads():\n") 373s + center <- colMedians(x, na.rm = na.rm, useNames = useNames) 373s + r0 <- colMads_R(x, na.rm = na.rm, useNames = useNames) 373s + r1 <- colMads(x, na.rm = na.rm, useNames = useNames) 373s + r2 <- colMads(x, center = center, na.rm = na.rm, useNames = useNames) 373s + r3 <- rowMads(tx, na.rm = na.rm, useNames = useNames) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r2, r0)) 373s + stopifnot(all.equal(r2, r1)) 373s + stopifnot(all.equal(r3, r0)) 373s + stopifnot(all.equal(r3, r1)) 373s + stopifnot(all.equal(r3, r2)) 373s + } 373s + } 373s + } 373s + tx <- NULL 373s + } # for (add_na ...) 373s add_na = FALSE 373s na.rm = FALSE 373s rowMads(): 373s colMads(): 373s na.rm = FALSE 373s rowMads(): 373s colMads(): 373s na.rm = TRUE 373s rowMads(): 373s colMads(): 373s na.rm = TRUE 373s rowMads(): 373s colMads(): 373s na.rm = FALSE 373s rowMads(): 373s colMads(): 373s na.rm = FALSE 373s rowMads(): 373s colMads(): 373s na.rm = TRUE 373s rowMads(): 373s colMads(): 373s na.rm = TRUE 373s rowMads(): 373s colMads(): 373s add_na = TRUE 373s na.rm = FALSE 373s rowMads(): 373s colMads(): 373s na.rm = FALSE 373s rowMads(): 373s colMads(): 373s na.rm = TRUE 373s rowMads(): 373s colMads(): 373s na.rm = TRUE 373s rowMads(): 373s colMads(): 373s na.rm = FALSE 373s rowMads(): 373s colMads(): 373s na.rm = FALSE 373s rowMads(): 373s colMads(): 373s na.rm = TRUE 373s rowMads(): 373s colMads(): 373s na.rm = TRUE 373s rowMads(): 373s colMads(): 373s > 373s > 373s > 373s > 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > # All NAs 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 373s > # Test with and without dimnames on x 373s > for (setDimnames in c(TRUE, FALSE)) { 373s + if (setDimnames) dimnames(x) <- dimnames 373s + else dimnames(x) <- NULL 373s + tx <- t(x) 373s + # Row/column ranges 373s + for (na.rm in c(FALSE, TRUE)) { 373s + # Check names attribute 373s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 373s + cat("na.rm = ", na.rm, "\n", sep = "") 373s + r0 <- rowMads_R(x, na.rm = na.rm, useNames = useNames) 373s + if (na.rm) r0[is.na(r0)] <- NaN 373s + r1 <- rowMads(x, na.rm = na.rm, useNames = useNames) 373s + r2 <- colMads(tx, na.rm = na.rm, useNames = useNames) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r2, r0)) 373s + stopifnot(all.equal(r1, r2)) 373s + } 373s + } 373s + } 373s na.rm = FALSE 373s na.rm = FALSE 373s na.rm = TRUE 373s na.rm = TRUE 373s na.rm = FALSE 373s na.rm = FALSE 373s na.rm = TRUE 373s na.rm = TRUE 373s > tx <- NULL 373s > 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > # A 1x1 matrix 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > x <- matrix(0, nrow = 1L, ncol = 1L) 373s > dimnames <- list("a", "A") 373s > # Test with and without dimnames on x 373s > for (setDimnames in c(TRUE, FALSE)) { 373s + if (setDimnames) dimnames(x) <- dimnames 373s + else dimnames(x) <- NULL 373s + tx <- t(x) 373s + # Row/column ranges 373s + for (na.rm in c(FALSE, TRUE)) { 373s + # Check names attribute 373s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 373s + cat("na.rm = ", na.rm, "\n", sep = "") 373s + r0 <- rowMads_R(x, na.rm = na.rm, useNames = useNames) 373s + r1 <- rowMads(x, na.rm = na.rm, useNames = useNames) 373s + r2 <- colMads(tx, na.rm = na.rm, useNames = useNames) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r2, r0)) 373s + stopifnot(all.equal(r1, r2)) 373s + } 373s + } 373s + } 373s na.rm = FALSE 373s na.rm = FALSE 373s na.rm = TRUE 373s na.rm = TRUE 373s na.rm = FALSE 373s na.rm = FALSE 373s na.rm = TRUE 373s na.rm = TRUE 373s > 373s > 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > # A 0x0 matrix 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > x <- matrix(double(0), nrow = 0, ncol = 0) 373s > tx <- t(x) 373s > for (na.rm in c(FALSE, TRUE)) { 373s + cat("na.rm = ", na.rm, "\n", sep = "") 373s + r0 <- rowMads_R(x, na.rm = na.rm) 373s + r1 <- rowMads(x, na.rm = na.rm) 373s + r2 <- colMads(tx, na.rm = na.rm) 373s + stopifnot(all.equal(r1, r2)) 373s + stopifnot(all.equal(r1, r0)) 373s + stopifnot(all.equal(r2, r0)) 373s + } 373s na.rm = FALSE 373s na.rm = TRUE 373s > 373s 373s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 373s Copyright (C) 2024 The R Foundation for Statistical Computing 373s Platform: s390x-ibm-linux-gnu (64-bit) 373s 373s R is free software and comes with ABSOLUTELY NO WARRANTY. 373s You are welcome to redistribute it under certain conditions. 373s Type 'license()' or 'licence()' for distribution details. 373s 373s R is a collaborative project with many contributors. 373s Type 'contributors()' for more information and 373s 'citation()' on how to cite R or R packages in publications. 373s 373s Type 'demo()' for some demos, 'help()' for on-line help, or 373s 'help.start()' for an HTML browser interface to help. 373s Type 'q()' to quit R. 373s 373s > library("matrixStats") 373s > 373s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 373s > options(matrixStats.center.onUse = "ignore") 373s > 373s > rowMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 373s + suppressWarnings({ 373s + res <- apply(x, MARGIN = 1L, FUN = mad, na.rm = na.rm) 373s + }) 373s + if (is.na(useNames) || !useNames) names(res) <- NULL 373s + res 373s + } 373s > 373s > colMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 373s + suppressWarnings({ 373s + res <- apply(x, MARGIN = 2L, FUN = mad, na.rm = na.rm) 373s + }) 373s + if (is.na(useNames) || !useNames) names(res) <- NULL 373s + res 373s + } 373s > 373s > rowMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 373s + center <- rowMedians(x, cols = cols, na.rm = na.rm, useNames = FALSE) 373s + rowMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 373s + } 373s > 373s > colMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 373s + center <- colMedians(x, rows = rows, na.rm = na.rm, useNames = FALSE) 373s + colMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 373s + } 373s > 373s > 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > # Subsetted tests 373s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 373s > source("utils/validateIndicesFramework.R") 373s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 373s > storage.mode(x) <- "integer" 373s > 373s > # To check names attribute 373s > dimnames <- list(letters[1:6], LETTERS[1:6]) 373s > 373s > # Test with and without dimnames on x 373s > for (setDimnames in c(TRUE, FALSE)) { 373s + if (setDimnames) dimnames(x) <- dimnames 373s + else dimnames(x) <- NULL 373s + 373s + count <- 0L 373s + for (rows in index_cases) { 373s + for (cols in index_cases) { 373s + count <- count + 1L 373s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 373s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 373s + useNames <- useNames[count %% length(useNames) + 1] 373s + 373s + validateIndicesTestMatrix(x, rows, cols, 373s + ftest = rowMads, fsure = rowMads_R, 373s + na.rm = na.rm, useNames = useNames) 373s + validateIndicesTestMatrix(x, rows, cols, 373s + ftest = rowMads_center, fsure = rowMads_R, 373s + na.rm = na.rm, useNames = useNames) 373s + 373s + validateIndicesTestMatrix(x, rows, cols, 373s + fcoltest = colMads, fsure = rowMads_R, 373s + na.rm = na.rm, useNames = useNames) 373s + validateIndicesTestMatrix(x, rows, cols, 373s + fcoltest = colMads_center, fsure = rowMads_R, 373s + na.rm = na.rm, useNames = useNames) 373s + } 373s + } 373s + } 374s > 374s 374s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 374s Copyright (C) 2024 The R Foundation for Statistical Computing 374s Platform: s390x-ibm-linux-gnu (64-bit) 374s 374s R is free software and comes with ABSOLUTELY NO WARRANTY. 374s You are welcome to redistribute it under certain conditions. 374s Type 'license()' or 'licence()' for distribution details. 374s 374s R is a collaborative project with many contributors. 374s Type 'contributors()' for more information and 374s 'citation()' on how to cite R or R packages in publications. 374s 374s Type 'demo()' for some demos, 'help()' for on-line help, or 374s 'help.start()' for an HTML browser interface to help. 374s Type 'q()' to quit R. 374s 374s > library("matrixStats") 374s > 374s > rowMeans_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 374s + res <- rowMeans(x, na.rm = na.rm) 374s + if (is.na(useNames) || !useNames) names(res) <- NULL 374s + res 374s + } 374s > 374s > colMeans_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 374s + res <- colMeans(x, na.rm = na.rm) 374s + if (is.na(useNames) || !useNames) names(res) <- NULL 374s + res 374s + } 374s > 374s > for (mode in c("integer", "logical", "double")) { 374s + x <- matrix(-4:4, nrow = 3, ncol = 3) 374s + storage.mode(x) <- mode 374s + if (mode == "double") x <- x + 0.1 374s + 374s + # To check names attribute 374s + dimnames <- list(letters[1:3], LETTERS[1:3]) 374s + 374s + # Test with and without dimnames on x 374s + for (setDimnames in c(TRUE, FALSE)) { 374s + if (setDimnames) dimnames(x) <- dimnames 374s + else dimnames(x) <- NULL 374s + # Check names attribute 374s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 374s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 374s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 374s + stopifnot(all.equal(y1, y0)) 374s + 374s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 374s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 374s + stopifnot(all.equal(y1, y0)) 374s + } 374s + } 374s + } 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: Single-element matrix 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: Single-element matrix:\n") 375s Special case: Single-element matrix: 375s > for (mode in c("integer", "logical", "double")) { 375s + x <- matrix(1, nrow = 1, ncol = 1) 375s + storage.mode(x) <- mode 375s + 375s + # To check names attribute 375s + dimnames <- list("a", "A") 375s + 375s + # Test with and without dimnames on x 375s + for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: Empty matrix 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: Empty matrix:\n") 375s Special case: Empty matrix: 375s > for (mode in c("integer", "logical", "double")) { 375s + x <- matrix(integer(0), nrow = 0, ncol = 0) 375s + storage.mode(x) <- mode 375s + 375s + y0 <- rowMeans(x, na.rm = FALSE) 375s + y1 <- rowMeans2(x, na.rm = FALSE) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMeans(x, na.rm = FALSE) 375s + y1 <- colMeans2(x, na.rm = FALSE) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: All NAs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: All NAs:\n") 375s Special case: All NAs: 375s > for (mode in c("integer", "logical", "double")) { 375s + x <- matrix(NA_integer_, nrow = 3, ncol = 3) 375s + storage.mode(x) <- mode 375s + 375s + # To check names attribute 375s + dimnames <- list(letters[1:3], LETTERS[1:3]) 375s + 375s + # Test with and without dimnames on x 375s + for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMeans_R(x, na.rm = TRUE, useNames = useNames) 375s + y1 <- rowMeans2(x, na.rm = TRUE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMeans_R(x, na.rm = TRUE, useNames = useNames) 375s + y1 <- colMeans2(x, na.rm = TRUE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: All NaNs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: All NaNs:\n") 375s Special case: All NaNs: 375s > x <- matrix(NA_real_, nrow = 3, ncol = 3) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMeans_R(x, na.rm = TRUE, useNames = useNames) 375s + y1 <- rowMeans2(x, na.rm = TRUE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMeans_R(x, na.rm = TRUE, useNames = useNames) 375s + y1 <- colMeans2(x, na.rm = TRUE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: All Infs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: All Infs:\n") 375s Special case: All Infs: 375s > x <- matrix(Inf, nrow = 3, ncol = 3) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: All -Infs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: All -Infs:\n") 375s Special case: All -Infs: 375s > x <- matrix(-Inf, nrow = 3, ncol = 3) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: Infs and -Infs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: Infs and -Infs:\n") 375s Special case: Infs and -Infs: 375s > x <- matrix(c(-Inf, +Inf), nrow = 4, ncol = 4) 375s > 375s > # To check names attribute 375s > dimnames <- list(letters[1:4], LETTERS[1:4]) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: NaNs and NAs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: NaNs and NAs:\n") 375s Special case: NaNs and NAs: 375s > x <- matrix(c(NaN, NA_real_), nrow = 4, ncol = 4) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + str(y0) 375s + stopifnot(all(is.na(y0)), length(unique(y0)) >= 1L) 375s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 375s + str(y1) 375s + stopifnot(all(is.na(y1)), length(unique(y1)) >= 1L) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all(is.na(y0)), length(unique(y0)) == 1L) 375s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all(is.na(y1)), length(unique(y1)) == 1L) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s Named num [1:4] NaN NA NaN NA 375s - attr(*, "names")= chr [1:4] "a" "b" "c" "d" 375s Named num [1:4] NaN NA NaN NA 375s - attr(*, "names")= chr [1:4] "a" "b" "c" "d" 375s num [1:4] NaN NA NaN NA 375s num [1:4] NaN NA NaN NA 375s num [1:4] NaN NA NaN NA 375s num [1:4] NaN NA NaN NA 375s num [1:4] NaN NA NaN NA 375s num [1:4] NaN NA NaN NA 375s > ## NOTE, due to compiler optimization, it is not guaranteed that NA is 375s > ## returned here (as one would expect). NaN might very well be returned, 375s > ## when both NA and NaN are involved. This is an accepted feature in R, 375s > ## which is documented in help("is.nan"). See also 375s > ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 375s > ## Thus, we cannot guarantee that y1 is identical to y0. 375s > 375s > 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: Integer overflow with ties 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: Integer overflow with ties:\n") 375s Special case: Integer overflow with ties: 375s > x <- matrix(.Machine$integer.max, nrow = 4, ncol = 4) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Consistency checks 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > set.seed(1) 375s > 375s > cat("Consistency checks:\n") 375s Consistency checks: 375s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 4L else 20L 375s > for (kk in seq_len(n_sims)) { 375s + cat("Random test #", kk, "\n", sep = "") 375s + 375s + # Simulate data in a matrix of any shape 375s + dim <- sample(50:200, size = 2) 375s + n <- prod(dim) 375s + x <- rnorm(n, sd = 100) 375s + dim(x) <- dim 375s + 375s + # Add NAs? 375s + if ((kk %% 4) %in% c(3, 0)) { 375s + cat("Adding NAs\n") 375s + nna <- sample(n, size = 1) 375s + na_values <- c(NA_real_, NaN) 375s + t <- sample(na_values, size = nna, replace = TRUE) 375s + x[sample(length(x), size = nna)] <- t 375s + } 375s + 375s + # Mode? 375s + modes <- "double" 375s + if ((kk %% 4) %in% c(2, 0)) { 375s + modes <- c("integer", "logical") 375s + } 375s + 375s + for (mode in modes) { 375s + if (mode != "double") { 375s + cat(sprintf("Coercing from %s to %s\n", storage.mode(x), mode)) 375s + storage.mode(x) <- mode 375s + } 375s + 375s + na.rm <- sample(c(TRUE, FALSE), size = 1) 375s + 375s + # rowMeans2(): 375s + y0 <- rowMeans(x, na.rm = na.rm) 375s + y1 <- rowMeans2(x, na.rm = na.rm) 375s + stopifnot(all.equal(y1, y0)) 375s + y2 <- colMeans2(t(x), na.rm = na.rm) 375s + stopifnot(all.equal(y2, y0)) 375s + 375s + # colMeans2(): 375s + y0 <- colMeans(x, na.rm = na.rm) 375s + y1 <- colMeans2(x, na.rm = na.rm) 375s + stopifnot(all.equal(y1, y0)) 375s + y2 <- rowMeans2(t(x), na.rm = na.rm) 375s + stopifnot(all.equal(y2, y0)) 375s + } 375s + } # for (kk ...) 375s Random test #1 375s Random test #2 375s Coercing from double to integer 375s Coercing from integer to logical 375s Random test #3 375s Adding NAs 375s Random test #4 375s Adding NAs 375s Coercing from double to integer 375s Coercing from integer to logical 375s Random test #5 375s Random test #6 375s Coercing from double to integer 375s Coercing from integer to logical 375s Random test #7 375s Adding NAs 375s Random test #8 375s Adding NAs 375s Coercing from double to integer 375s Coercing from integer to logical 375s Random test #9 375s Random test #10 375s Coercing from double to integer 375s Coercing from integer to logical 375s Random test #11 375s Adding NAs 375s Random test #12 375s Adding NAs 375s Coercing from double to integer 375s Coercing from integer to logical 375s Random test #13 375s Random test #14 375s Coercing from double to integer 375s Coercing from integer to logical 375s Random test #15 375s Adding NAs 375s Random test #16 375s Adding NAs 375s Coercing from double to integer 375s Coercing from integer to logical 375s Random test #17 375s Random test #18 375s Coercing from double to integer 375s Coercing from integer to logical 375s Random test #19 375s Adding NAs 375s Random test #20 375s Adding NAs 375s Coercing from double to integer 375s Coercing from integer to logical 375s > 375s 375s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 375s Copyright (C) 2024 The R Foundation for Statistical Computing 375s Platform: s390x-ibm-linux-gnu (64-bit) 375s 375s R is free software and comes with ABSOLUTELY NO WARRANTY. 375s You are welcome to redistribute it under certain conditions. 375s Type 'license()' or 'licence()' for distribution details. 375s 375s R is a collaborative project with many contributors. 375s Type 'contributors()' for more information and 375s 'citation()' on how to cite R or R packages in publications. 375s 375s Type 'demo()' for some demos, 'help()' for on-line help, or 375s 'help.start()' for an HTML browser interface to help. 375s Type 'q()' to quit R. 375s 375s > library("matrixStats") 375s > 375s > rowMeans_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 375s + res <- rowMeans(x, na.rm = na.rm) 375s + if (is.na(useNames) || !useNames) names(res) <- NULL 375s + res 375s + } 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Subsetted tests 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > source("utils/validateIndicesFramework.R") 375s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 375s > storage.mode(x) <- "integer" 375s > 375s > # To check names attribute 375s > dimnames <- list(letters[1:6], LETTERS[1:6]) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + 375s + count <- 0L 375s + for (rows in index_cases) { 375s + for (cols in index_cases) { 375s + count <- count + 1L 375s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 375s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 375s + useNames <- useNames[count %% length(useNames) + 1] 375s + 375s + validateIndicesTestMatrix(x, rows, cols, 375s + ftest = rowMeans2, fsure = rowMeans_R, 375s + na.rm = na.rm, useNames = useNames) 375s + validateIndicesTestMatrix(x, rows, cols, 375s + fcoltest = colMeans2, fsure = rowMeans_R, 375s + na.rm = na.rm, useNames = useNames) 375s + } 375s + } 375s + } 375s > 375s 375s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 375s Copyright (C) 2024 The R Foundation for Statistical Computing 375s Platform: s390x-ibm-linux-gnu (64-bit) 375s 375s R is free software and comes with ABSOLUTELY NO WARRANTY. 375s You are welcome to redistribute it under certain conditions. 375s Type 'license()' or 'licence()' for distribution details. 375s 375s R is a collaborative project with many contributors. 375s Type 'contributors()' for more information and 375s 'citation()' on how to cite R or R packages in publications. 375s 375s Type 'demo()' for some demos, 'help()' for on-line help, or 375s 'help.start()' for an HTML browser interface to help. 375s Type 'q()' to quit R. 375s 375s > library("matrixStats") 375s > 375s > rowMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 375s + res <- apply(x, MARGIN = 1L, FUN = median, na.rm = na.rm) 375s + if (is.na(useNames) || !useNames) names(res) <- NULL 375s + res 375s + } 375s > 375s > colMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 375s + res <- apply(x, MARGIN = 2L, FUN = median, na.rm = na.rm) 375s + if (is.na(useNames) || !useNames) names(res) <- NULL 375s + res 375s + } 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: Non-ties 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: Non-ties:\n") 375s Special case: Non-ties: 375s > for (mode in c("integer", "double")) { 375s + x <- matrix(1:9 + 0.1, nrow = 3, ncol = 3) 375s + storage.mode(x) <- mode 375s + 375s + # To check names attribute 375s + dimnames <- list(letters[1:3], LETTERS[1:3]) 375s + 375s + # Test with and without dimnames on x 375s + for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: Ties 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: Ties:\n") 375s Special case: Ties: 375s > for (mode in c("integer", "double")) { 375s + x <- matrix(1:16 + 0.1, nrow = 4, ncol = 4) 375s + storage.mode(x) <- mode 375s + 375s + # To check names attribute 375s + dimnames <- list(letters[1:4], LETTERS[1:4]) 375s + 375s + # Test with and without dimnames on x 375s + for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: Single-element matrix 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: Single-element matrix:\n") 375s Special case: Single-element matrix: 375s > for (mode in c("integer", "double")) { 375s + x <- matrix(1, nrow = 1, ncol = 1) 375s + storage.mode(x) <- mode 375s + 375s + # To check names attribute 375s + dimnames <- list("a", "A") 375s + 375s + # Test with and without dimnames on x 375s + for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: Empty matrix 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: Empty matrix:\n") 375s Special case: Empty matrix: 375s > for (mode in c("integer", "double")) { 375s + x <- matrix(integer(0), nrow = 0, ncol = 0) 375s + storage.mode(x) <- mode 375s + 375s + y0 <- rowMedians_R(x, na.rm = FALSE) 375s + y1 <- rowMedians(x, na.rm = FALSE) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMedians_R(x, na.rm = FALSE) 375s + y1 <- colMedians(x, na.rm = FALSE) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: All NAs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: All NAs:\n") 375s Special case: All NAs: 375s > for (mode in c("integer", "double")) { 375s + x <- matrix(NA_integer_, nrow = 3, ncol = 3) 375s + storage.mode(x) <- mode 375s + 375s + # To check names attribute 375s + dimnames <- list(letters[1:3], LETTERS[1:3]) 375s + 375s + # Test with and without dimnames on x 375s + for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMedians_R(x, na.rm = TRUE, useNames = useNames) 375s + y1 <- rowMedians(x, na.rm = TRUE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMedians_R(x, na.rm = TRUE, useNames = useNames) 375s + y1 <- colMedians(x, na.rm = TRUE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: All NaNs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: All NaNs:\n") 375s Special case: All NaNs: 375s > x <- matrix(NA_real_, nrow = 3, ncol = 3) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMedians_R(x, na.rm = TRUE, useNames = useNames) 375s + y1 <- rowMedians(x, na.rm = TRUE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMedians_R(x, na.rm = TRUE, useNames = useNames) 375s + y1 <- colMedians(x, na.rm = TRUE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: All Infs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: All Infs:\n") 375s Special case: All Infs: 375s > x <- matrix(Inf, nrow = 3, ncol = 3) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: All -Infs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: All -Infs:\n") 375s Special case: All -Infs: 375s > x <- matrix(-Inf, nrow = 3, ncol = 3) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: Infs and -Infs 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: Infs and -Infs:\n") 375s Special case: Infs and -Infs: 375s > x <- matrix(c(-Inf, +Inf), nrow = 4, ncol = 4) 375s > 375s > # To check names attribute 375s > dimnames <- list(letters[1:4], LETTERS[1:4]) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Special case: Integer overflow with ties 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > cat("Special case: Integer overflow with ties:\n") 375s Special case: Integer overflow with ties: 375s > x <- matrix(.Machine$integer.max, nrow = 4, ncol = 4) 375s > 375s > # Test with and without dimnames on x 375s > for (setDimnames in c(TRUE, FALSE)) { 375s + if (setDimnames) dimnames(x) <- dimnames 375s + else dimnames(x) <- NULL 375s + # Check names attribute 375s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 375s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + 375s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 375s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 375s + stopifnot(all.equal(y1, y0)) 375s + } 375s + } 375s > 375s > 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > # Consistency checks 375s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 375s > set.seed(1) 375s > 375s > cat("Consistency checks:\n") 375s Consistency checks: 375s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 4L else 20L 375s > for (kk in seq_len(n_sims)) { 375s + cat("Random test #", kk, "\n", sep = "") 375s + 375s + # Simulate data in a matrix of any shape 375s + dim <- sample(50:200, size = 2) 375s + n <- prod(dim) 375s + x <- rnorm(n, sd = 100) 375s + dim(x) <- dim 375s + 375s + # Add NAs? 375s + if ((kk %% 4) %in% c(3, 0)) { 375s + cat("Adding NAs\n") 375s + nna <- sample(n, size = 1) 375s + na_values <- c(NA_real_, NaN) 375s + t <- sample(na_values, size = nna, replace = TRUE) 375s + x[sample(length(x), size = nna)] <- t 375s + } 375s + 375s + # Integer or double? 375s + if ((kk %% 4) %in% c(2, 0)) { 375s + cat("Coercing to integers\n") 375s + storage.mode(x) <- "integer" 375s + } 375s + 375s + na.rm <- sample(c(TRUE, FALSE), size = 1) 375s + 375s + # rowMedians(): 375s + y0 <- rowMedians_R(x, na.rm = na.rm) 375s + y1 <- rowMedians(x, na.rm = na.rm) 375s + stopifnot(all.equal(y1, y0)) 375s + y2 <- colMedians(t(x), na.rm = na.rm) 375s + stopifnot(all.equal(y2, y0)) 375s + 375s + # colMedians(): 375s + y0 <- colMedians_R(x, na.rm = na.rm) 375s + y1 <- colMedians(x, na.rm = na.rm) 375s + stopifnot(all.equal(y1, y0)) 375s + y2 <- rowMedians(t(x), na.rm = na.rm) 375s + stopifnot(all.equal(y2, y0)) 375s + } # for (kk ...) 376s Random test #1 376s Random test #2 376s Coercing to integers 376s Random test #3 376s Adding NAs 376s Random test #4 376s Adding NAs 376s Coercing to integers 376s Random test #5 376s Random test #6 376s Coercing to integers 376s Random test #7 376s Adding NAs 376s Random test #8 376s Adding NAs 376s Coercing to integers 376s Random test #9 376s Random test #10 376s Coercing to integers 376s Random test #11 376s Adding NAs 376s Random test #12 376s Adding NAs 376s Coercing to integers 376s Random test #13 376s Random test #14 376s Coercing to integers 376s Random test #15 376s Adding NAs 376s Random test #16 376s Adding NAs 376s Coercing to integers 376s Random test #17 376s Random test #18 376s Coercing to integers 376s Random test #19 376s Adding NAs 376s Random test #20 376s Adding NAs 376s Coercing to integers 376s > 376s 376s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 376s Copyright (C) 2024 The R Foundation for Statistical Computing 376s Platform: s390x-ibm-linux-gnu (64-bit) 376s 376s R is free software and comes with ABSOLUTELY NO WARRANTY. 376s You are welcome to redistribute it under certain conditions. 376s Type 'license()' or 'licence()' for distribution details. 376s 376s R is a collaborative project with many contributors. 376s Type 'contributors()' for more information and 376s 'citation()' on how to cite R or R packages in publications. 376s 376s Type 'demo()' for some demos, 'help()' for on-line help, or 376s 'help.start()' for an HTML browser interface to help. 376s Type 'q()' to quit R. 376s 376s > library("matrixStats") 376s > 376s > rowMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 376s + res <- apply(x, MARGIN = 1L, FUN = median, na.rm = na.rm) 376s + if (is.na(useNames) || !useNames) names(res) <- NULL 376s + res 376s + } 376s > 376s > colMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 376s + res <- apply(x, MARGIN = 2L, FUN = median, na.rm = na.rm) 376s + if (is.na(useNames) || !useNames) names(res) <- NULL 376s + res 376s + } 376s > 376s > 376s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 376s > # Subsetted tests 376s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 376s > source("utils/validateIndicesFramework.R") 376s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 376s > storage.mode(x) <- "integer" 376s > 376s > # To check names attribute 376s > dimnames <- list(letters[1:6], LETTERS[1:6]) 376s > 376s > # Test with and without dimnames on x 376s > for (setDimnames in c(TRUE, FALSE)) { 376s + if (setDimnames) dimnames(x) <- dimnames 376s + else dimnames(x) <- NULL 376s + 376s + count <- 0L 376s + for (rows in index_cases) { 376s + for (cols in index_cases) { 376s + count <- count + 1L 376s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 376s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 376s + useNames <- useNames[count %% length(useNames) + 1] 376s + 376s + validateIndicesTestMatrix(x, rows, cols, 376s + ftest = rowMedians, fsure = rowMedians_R, 376s + na.rm = na.rm, useNames = useNames) 376s + validateIndicesTestMatrix(x, rows, cols, 376s + fcoltest = colMedians, fsure = rowMedians_R, 376s + na.rm = na.rm, useNames = useNames) 376s + } 376s + } 376s + } 376s > 376s 376s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 376s Copyright (C) 2024 The R Foundation for Statistical Computing 376s Platform: s390x-ibm-linux-gnu (64-bit) 376s 376s R is free software and comes with ABSOLUTELY NO WARRANTY. 376s You are welcome to redistribute it under certain conditions. 376s Type 'license()' or 'licence()' for distribution details. 376s 376s R is a collaborative project with many contributors. 376s Type 'contributors()' for more information and 376s 'citation()' on how to cite R or R packages in publications. 376s 376s Type 'demo()' for some demos, 'help()' for on-line help, or 376s 'help.start()' for an HTML browser interface to help. 376s Type 'q()' to quit R. 376s 376s > library("matrixStats") 376s > library("stats") 376s > 376s > asWhich <- function(probs, max) { 376s + idx <- as.integer(round(probs * max)) 376s + if (idx < 1L) { 376s + idx <- 1L 376s + } else if (idx > max) { 376s + idx <- max 376s + } 376s + idx 376s + } # asWhich() 376s > 376s > rowOrderStats_R <- function(x, probs, ..., useNames = NA) { 376s + ans <- apply(x, MARGIN = 1L, FUN = quantile, probs = probs, type = 3L) 376s + 376s + # Remove Attributes 376s + if (is.na(useNames) || !useNames || length(ans) == 0L) attributes(ans) <- NULL 376s + ans 376s + } # rowOrderStats_R() 376s > 376s > 376s > set.seed(1) 376s > 376s > 376s > # Simulate data in a matrix of any shape 376s > nrow <- 60L 376s > ncol <- 30L 376s > x <- rnorm(nrow * ncol) 376s > dim(x) <- c(nrow, ncol) 376s > probs <- 0.3 376s > which <- asWhich(probs, max = ncol) 376s > 376s > y0 <- rowOrderStats_R(x, probs = probs) 376s > y1 <- rowOrderStats(x, which = which) 376s > stopifnot(all.equal(y1, y0)) 376s > y2 <- colOrderStats(t(x), which = which) 376s > stopifnot(all.equal(y2, y0)) 376s > 376s > 376s > 376s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 376s > # Consistency checks 376s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 376s > for (mode in c("integer", "double")) { 376s + cat("Consistency checks without NAs:\n") 376s + for (kk in 1:3) { 376s + cat("Random test #", kk, "\n", sep = "") 376s + 376s + # Simulate data in a matrix of any shape 376s + nrow <- sample(20L, size = 1L) 376s + ncol <- sample(20L, size = 1L) 376s + x <- rnorm(nrow * ncol) 376s + dim(x) <- c(nrow, ncol) 376s + 376s + cat("mode: ", mode, "\n", sep = "") 376s + storage.mode(x) <- mode 376s + str(x) 376s + 376s + probs <- runif(1) 376s + which <- asWhich(probs, max = ncol) 376s + 376s + y0 <- rowOrderStats_R(x, probs = probs) 376s + y1 <- rowOrderStats(x, which = which) 376s + stopifnot(all.equal(y1, y0)) 376s + y2 <- colOrderStats(t(x), which = which) 376s + stopifnot(all.equal(y2, y0)) 376s + } # for (kk in ...) 376s + } # for (mode ...) 377s Consistency checks without NAs: 377s Random test #1 377s mode: integer 377s int [1:14, 1:6] 0 0 1 0 2 -1 1 0 0 0 ... 377s Random test #2 377s mode: integer 377s int [1:8, 1:13] 0 0 1 -2 0 0 0 0 1 0 ... 377s Random test #3 377s mode: integer 377s int [1:20, 1:17] 0 0 0 0 1 0 1 0 0 -1 ... 377s Consistency checks without NAs: 377s Random test #1 377s mode: double 377s num [1:9, 1:5] -1.4286 -0.00386 -0.70456 -0.29242 -0.49607 ... 377s Random test #2 377s mode: double 377s num [1:11, 1:20] -0.796 0.482 -0.952 0.5 1.242 ... 377s Random test #3 377s mode: double 377s num [1:7, 1:18] 1.553 -2.405 0.167 -0.403 -1.746 ... 377s > 377s > 377s > # Check names attribute 377s > x <- matrix(1:9 + 0.1, nrow = 3L, ncol = 3L) 377s > 377s > probs <- runif(1) 377s > which <- asWhich(probs, max = ncol(x)) 377s > 377s > dimnames <- list(letters[1:3], LETTERS[1:3]) 377s > 377s > # Test with and without dimnames on x 377s > for (setDimnames in c(TRUE, FALSE)) { 377s + if (setDimnames) dimnames(x) <- dimnames 377s + else dimnames(x) <- NULL 377s + # Check names attribute 377s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 377s + y0 <- rowOrderStats_R(x, probs = probs, useNames = useNames) 377s + y1 <- rowOrderStats(x, which = which, useNames = useNames) 377s + stopifnot(all.equal(y1, y0)) 377s + y2 <- colOrderStats(t(x), which = which, useNames = useNames) 377s + stopifnot(all.equal(y2, y0)) 377s + } 377s + } 377s > 377s 377s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 377s Copyright (C) 2024 The R Foundation for Statistical Computing 377s Platform: s390x-ibm-linux-gnu (64-bit) 377s 377s R is free software and comes with ABSOLUTELY NO WARRANTY. 377s You are welcome to redistribute it under certain conditions. 377s Type 'license()' or 'licence()' for distribution details. 377s 377s R is a collaborative project with many contributors. 377s Type 'contributors()' for more information and 377s 'citation()' on how to cite R or R packages in publications. 377s 377s Type 'demo()' for some demos, 'help()' for on-line help, or 377s 'help.start()' for an HTML browser interface to help. 377s Type 'q()' to quit R. 377s 377s > library("matrixStats") 377s > 377s > rowOrderStats_R <- function(x, probs, ..., useNames = NA) { 377s + ans <- apply(x, MARGIN = 1L, FUN = quantile, probs = probs, type = 3L) 377s + 377s + # Remove Attributes 377s + if (is.na(useNames) || !useNames || length(ans) == 0L) attributes(ans) <- NULL 377s + ans 377s + } # rowOrderStats_R() 377s > 377s > 377s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 377s > # Subsetted tests 377s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 377s > source("utils/validateIndicesFramework.R") 377s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 377s > storage.mode(x) <- "integer" 377s > 377s > # To check names attribute 377s > dimnames <- list(letters[1:6], LETTERS[1:6]) 377s > 377s > probs <- 0.3 377s > # Test with and without dimnames on x 377s > for (setDimnames in c(TRUE, FALSE)) { 377s + if (setDimnames) dimnames(x) <- dimnames 377s + else dimnames(x) <- NULL 377s + for (rows in index_cases) { 377s + for (cols in index_cases) { 377s + # Check names attribute 377s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 377s + if (is.null(cols)) which <- round(probs * ncol(x)) 377s + else { 377s + xxrows <- rows 377s + suppressWarnings({ 377s + xx <- tryCatch(x[, cols, drop = FALSE], error = function(c) "error") 377s + if (identical(xx, "error")) which <- 0L 377s + else which <- round(probs * ncol(xx)) 377s + }) 377s + } 377s + if (which == 0L) next 377s + 377s + validateIndicesTestMatrix(x, rows, cols, 377s + ftest = rowOrderStats, fsure = rowOrderStats_R, 377s + which = which, probs = probs, useNames = useNames) 377s + validateIndicesTestMatrix(x, rows, cols, 377s + fcoltest = colOrderStats, fsure = rowOrderStats_R, 377s + which = which, probs = probs, useNames = useNames) 377s + } 377s + } 377s + } 377s + } 378s > 378s 378s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 378s Copyright (C) 2024 The R Foundation for Statistical Computing 378s Platform: s390x-ibm-linux-gnu (64-bit) 378s 378s R is free software and comes with ABSOLUTELY NO WARRANTY. 378s You are welcome to redistribute it under certain conditions. 378s Type 'license()' or 'licence()' for distribution details. 378s 378s R is a collaborative project with many contributors. 378s Type 'contributors()' for more information and 378s 'citation()' on how to cite R or R packages in publications. 378s 378s Type 'demo()' for some demos, 'help()' for on-line help, or 378s 'help.start()' for an HTML browser interface to help. 378s Type 'q()' to quit R. 378s 378s > library("matrixStats") 378s > 378s > rowProds_R <- function(x, FUN = prod, na.rm = FALSE, ..., useNames = NA) { 378s + res <- apply(x, MARGIN = 1L, FUN = FUN, na.rm = na.rm) 378s + if (is.na(useNames) || !useNames) names(res) <- NULL 378s + res 378s + } 378s > 378s > all.equal.na <- function(target, current, ...) { 378s + # Computations involving NaN may return NaN or NA, cf. ?is.nan 378s + current[is.nan(current)] <- NA_real_ 378s + target[is.nan(target)] <- NA_real_ 378s + all.equal(target, current, ...) 378s + } 378s > 378s > for (mode in c("integer", "double")) { 378s + # Missing values 378s + x <- matrix(c(1, NA, NaN, 1, 1, 0, 1, 0), nrow = 4, ncol = 2) 378s + cat("mode: ", mode, "\n", sep = "") 378s + storage.mode(x) <- mode 378s + str(x) 378s + 378s + # To check names attribute 378s + dimnames <- list(letters[1:4], LETTERS[1:2]) 378s + 378s + # Test with and without dimnames on x 378s + for (setDimnames in c(TRUE, FALSE)) { 378s + if (setDimnames) dimnames(x) <- dimnames 378s + else dimnames(x) <- NULL 378s + # Check names attribute 378s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 378s + y0 <- rowProds_R(x, na.rm = TRUE, useNames = useNames) 378s + print(y0) 378s + y1 <- rowProds(x, na.rm = TRUE, useNames = useNames) 378s + print(y1) 378s + y2 <- colProds(t(x), na.rm = TRUE, useNames = useNames) 378s + print(y2) 378s + stopifnot(all.equal(y1, y0)) 378s + stopifnot(all.equal(y2, y1)) 378s + 378s + # Missing values 378s + y0 <- rowProds_R(x, na.rm = FALSE, useNames = useNames) 378s + print(y0) 378s + y1 <- rowProds(x, na.rm = FALSE, useNames = useNames) 378s + print(y1) 378s + y2 <- colProds(t(x), na.rm = FALSE, useNames = useNames) 378s + print(y2) 378s + stopifnot(all.equal(y1, y0)) 378s + stopifnot(all.equal(y2, y1)) 378s + 378s + # "Empty" rows 378s + y0 <- rowProds_R(x[integer(0), , drop = FALSE], na.rm = FALSE, useNames = useNames) 378s + print(y0) 378s + y1 <- rowProds(x[integer(0), , drop = FALSE], na.rm = FALSE, useNames = useNames) 378s + print(y1) 378s + y2 <- colProds(t(x[integer(0), , drop = FALSE]), na.rm = FALSE, useNames = useNames) 378s + print(y2) 378s + stopifnot(all.equal.na(y1, y0)) 378s + stopifnot(all.equal(y2, y1)) 378s + stopifnot(length(y1) == 0L) 378s + 378s + # Using product() 378s + y1 <- rowProds(x, method = "expSumLog", na.rm = FALSE, useNames = useNames) 378s + print(y1) 378s + y2 <- colProds(t(x), method = "expSumLog", na.rm = FALSE, useNames = useNames) 378s + print(y2) 378s + stopifnot(all.equal(y2, y1)) 378s + } 378s + } 378s + } # for (mode ...) 378s mode: integer 378s int [1:4, 1:2] 1 NA NA 1 1 0 1 0 378s a b c d 378s 1 0 1 0 378s a b c d 378s 1 0 1 0 378s a b c d 378s 1 0 1 0 378s a b c d 378s 1 NA NA 0 378s a b c d 378s 1 NA NA 0 378s a b c d 378s 1 NA NA 0 378s numeric(0) 378s numeric(0) 378s numeric(0) 378s a b c d 378s 1 NA NA 0 378s a b c d 378s 1 NA NA 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s numeric(0) 378s numeric(0) 378s numeric(0) 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s numeric(0) 378s numeric(0) 378s numeric(0) 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s numeric(0) 378s numeric(0) 378s numeric(0) 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s mode: double 378s num [1:4, 1:2] 1 NA NaN 1 1 0 1 0 378s a b c d 378s 1 0 1 0 378s a b c d 378s 1 0 1 0 378s a b c d 378s 1 0 1 0 378s a b c d 378s 1 NA NaN 0 378s a b c d 378s 1 NA NaN 0 378s a b c d 378s 1 NA NaN 0 378s numeric(0) 378s numeric(0) 378s numeric(0) 378s a b c d 378s 1 NA NA 0 378s a b c d 378s 1 NA NA 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 NA NaN 0 378s [1] 1 NA NaN 0 378s [1] 1 NA NaN 0 378s numeric(0) 378s numeric(0) 378s numeric(0) 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 NA NaN 0 378s [1] 1 NA NaN 0 378s [1] 1 NA NaN 0 378s numeric(0) 378s numeric(0) 378s numeric(0) 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 0 1 0 378s [1] 1 NA NaN 0 378s [1] 1 NA NaN 0 378s [1] 1 NA NaN 0 378s numeric(0) 378s numeric(0) 378s numeric(0) 378s [1] 1 NA NA 0 378s [1] 1 NA NA 0 378s > 378s > 378s > # Bug report 2012-06-25 378s > x <- matrix(c(1, 1, 1, 1, 1, 0, 1, 0), nrow = 4, ncol = 2) 378s > y0 <- rowProds_R(x) 378s > print(y0) 378s [1] 1 0 1 0 378s > y1 <- rowProds(x) 378s > print(y1) 378s [1] 1 0 1 0 378s > y2 <- colProds(t(x)) 378s > print(y2) 378s [1] 1 0 1 0 378s > stopifnot(all.equal.na(y1, y0)) 378s > stopifnot(all.equal.na(y1, x[, 1] * x[, 2])) 378s > stopifnot(all.equal.na(y2, y1)) 378s > # Check names attribute 378s > dimnames(x) <- dimnames 378s > y0 <- rowProds_R(x, useNames = TRUE) 378s > print(y0) 378s a b c d 378s 1 0 1 0 378s > y1 <- rowProds(x, useNames = TRUE) 378s > print(y1) 378s a b c d 378s 1 0 1 0 378s > y2 <- colProds(t(x), useNames = TRUE) 378s > print(y2) 378s a b c d 378s 1 0 1 0 378s > stopifnot(all.equal.na(y1, y0)) 378s > stopifnot(all.equal.na(y1, x[, 1] * x[, 2])) 378s > stopifnot(all.equal.na(y2, y1)) 378s > 378s > # Bug report 2014-03-25 ("all rows contains a zero") 378s > x <- matrix(c(0, 1, 1, 0), nrow = 2, ncol = 2) 378s > # To check names attribute 378s > dimnames <- list(letters[1:2], LETTERS[1:2]) 378s > y0 <- rowProds_R(x) 378s > print(y0) 378s [1] 0 0 378s > y1 <- rowProds(x) 378s > print(y1) 378s [1] 0 0 378s > y2 <- colProds(t(x)) 378s > print(y2) 378s [1] 0 0 378s > stopifnot(all.equal.na(y1, y0)) 378s > stopifnot(all.equal.na(y1, c(0, 0))) 378s > stopifnot(all.equal.na(y2, y1)) 378s > # Check names attribute 378s > dimnames(x) <- dimnames 378s > y0 <- rowProds_R(x, useNames = TRUE) 378s > print(y0) 378s a b 378s 0 0 378s > y1 <- rowProds(x, useNames = TRUE) 378s > print(y1) 378s a b 378s 0 0 378s > y2 <- colProds(t(x), useNames = TRUE) 378s > print(y2) 378s a b 378s 0 0 378s > stopifnot(all.equal.na(y1, y0)) 378s > stopifnot(all.equal.na(y2, y1)) 378s > 378s 378s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 378s Copyright (C) 2024 The R Foundation for Statistical Computing 378s Platform: s390x-ibm-linux-gnu (64-bit) 378s 378s R is free software and comes with ABSOLUTELY NO WARRANTY. 378s You are welcome to redistribute it under certain conditions. 378s Type 'license()' or 'licence()' for distribution details. 378s 378s R is a collaborative project with many contributors. 378s Type 'contributors()' for more information and 378s 'citation()' on how to cite R or R packages in publications. 378s 378s Type 'demo()' for some demos, 'help()' for on-line help, or 378s 'help.start()' for an HTML browser interface to help. 378s Type 'q()' to quit R. 378s 378s > library("matrixStats") 378s > 378s > rowProds_R <- function(x, FUN = prod, na.rm = FALSE, ..., useNames = NA) { 378s + res <- apply(x, MARGIN = 1L, FUN = FUN, na.rm = na.rm) 378s + if (is.na(useNames) || !useNames) names(res) <- NULL 378s + res 378s + } 378s > 378s > 378s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 378s > # Subsetted tests 378s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 378s > source("utils/validateIndicesFramework.R") 378s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 378s > storage.mode(x) <- "integer" 378s > 378s > # To check names attribute 378s > dimnames <- list(letters[1:6], LETTERS[1:6]) 378s > 378s > # Test with and without dimnames on x 378s > for (setDimnames in c(TRUE, FALSE)) { 378s + if (setDimnames) dimnames(x) <- dimnames 378s + else dimnames(x) <- NULL 378s + for (rows in index_cases) { 378s + for (cols in index_cases) { 378s + for (na.rm in c(TRUE, FALSE)) { 378s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 378s + validateIndicesTestMatrix(x, rows, cols, 378s + ftest = rowProds, fsure = rowProds_R, 378s + method = "expSumLog", 378s + FUN = product, na.rm = na.rm, useNames = useNames) 378s + validateIndicesTestMatrix(x, rows, cols, 378s + fcoltest = colProds, fsure = rowProds_R, 378s + method = "expSumLog", 378s + FUN = product, na.rm = na.rm, useNames = useNames) 378s + } 378s + } 378s + } 378s + } 378s + } 379s > 379s 379s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 379s Copyright (C) 2024 The R Foundation for Statistical Computing 379s Platform: s390x-ibm-linux-gnu (64-bit) 379s 379s R is free software and comes with ABSOLUTELY NO WARRANTY. 379s You are welcome to redistribute it under certain conditions. 379s Type 'license()' or 'licence()' for distribution details. 379s 379s R is a collaborative project with many contributors. 379s Type 'contributors()' for more information and 379s 'citation()' on how to cite R or R packages in publications. 379s 379s Type 'demo()' for some demos, 'help()' for on-line help, or 379s 'help.start()' for an HTML browser interface to help. 379s Type 'q()' to quit R. 379s 379s > library("matrixStats") 379s > 379s > ## Create isFALSE() if running on an old version of R 379s > if (!exists("isFALSE", mode="function")) { 379s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 379s + } 379s > 379s > rowQuantiles_R <- function(x, probs = c(0, 0.25, 0.50, 0.75, 1), na.rm = FALSE, drop = TRUE, type = 7L, ..., useNames = NA) { 379s + q <- apply(x, MARGIN = 1L, FUN = function(x, probs, na.rm) { 379s + if (!na.rm && any(is.na(x))) { 379s + na_value <- NA_real_ 379s + if (type != 7L) storage.mode(na_value) <- storage.mode(x) 379s + rep(na_value, times = length(probs)) 379s + } else { 379s + as.vector(quantile(x, probs = probs, na.rm = na.rm, type = type, names = FALSE, ...)) 379s + } 379s + }, probs = probs, na.rm = na.rm) 379s + 379s + if (!is.null(dim(q))) q <- t(q) 379s + else dim(q) <- c(nrow(x), length(probs)) 379s + 379s + colnames(q) <- matrixStats:::quantile_probs_names(probs) 379s + rownames(q) <- rownames(x) 379s + if (isFALSE(useNames)) dimnames(q) <- NULL 379s + 379s + if (drop) q <- drop(q) 379s + q 379s + } 379s > 379s > 379s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 379s > # Test with multiple quantiles 379s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 379s > for (mode in c("logical", "integer", "double")) { 379s + cat("mode: ", mode, "\n", sep = "") 379s + x <- matrix(1:40 + 0.1, nrow = 8, ncol = 5) 379s + storage.mode(x) <- mode 379s + dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 379s + str(x) 379s + 379s + probs <- c(0, 0.5, 1) 379s + # Test with and without dimnames on x 379s + for (setDimnames in c(TRUE, FALSE)) { 379s + if (setDimnames) dimnames(x) <- dimnames 379s + else dimnames(x) <- NULL 379s + # Check names attribute 379s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 379s + q0 <- rowQuantiles_R(x, probs = probs, useNames = useNames) 379s + print(q0) 379s + q1 <- rowQuantiles(x, probs = probs, useNames = useNames) 379s + print(q1) 379s + ## FIXME: Workaround for R (< 3.0.0) 379s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q1) <- storage.mode(q0) 379s + stopifnot(all.equal(q1, q0)) 379s + q2 <- colQuantiles(t(x), probs = probs, useNames = useNames) 379s + ## FIXME: Workaround for R (< 3.0.0) 379s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q2) <- storage.mode(q0) 379s + stopifnot(all.equal(q2, q0)) 379s + } 379s + } 379s + } # for (mode ...) 379s mode: logical 379s logi [1:8, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 379s 0% 50% 100% 379s a 1 1 1 379s b 1 1 1 379s c 1 1 1 379s d 1 1 1 379s e 1 1 1 379s f 1 1 1 379s g 1 1 1 379s h 1 1 1 379s 0% 50% 100% 379s a 1 1 1 379s b 1 1 1 379s c 1 1 1 379s d 1 1 1 379s e 1 1 1 379s f 1 1 1 379s g 1 1 1 379s h 1 1 1 379s [,1] [,2] [,3] 379s [1,] 1 1 1 379s [2,] 1 1 1 379s [3,] 1 1 1 379s [4,] 1 1 1 379s [5,] 1 1 1 379s [6,] 1 1 1 379s [7,] 1 1 1 379s [8,] 1 1 1 379s [,1] [,2] [,3] 379s [1,] 1 1 1 379s [2,] 1 1 1 379s [3,] 1 1 1 379s [4,] 1 1 1 379s [5,] 1 1 1 379s [6,] 1 1 1 379s [7,] 1 1 1 379s [8,] 1 1 1 379s 0% 50% 100% 379s [1,] 1 1 1 379s [2,] 1 1 1 379s [3,] 1 1 1 379s [4,] 1 1 1 379s [5,] 1 1 1 379s [6,] 1 1 1 379s [7,] 1 1 1 379s [8,] 1 1 1 379s 0% 50% 100% 379s [1,] 1 1 1 379s [2,] 1 1 1 379s [3,] 1 1 1 379s [4,] 1 1 1 379s [5,] 1 1 1 379s [6,] 1 1 1 379s [7,] 1 1 1 379s [8,] 1 1 1 379s [,1] [,2] [,3] 379s [1,] 1 1 1 379s [2,] 1 1 1 379s [3,] 1 1 1 379s [4,] 1 1 1 379s [5,] 1 1 1 379s [6,] 1 1 1 379s [7,] 1 1 1 379s [8,] 1 1 1 379s [,1] [,2] [,3] 379s [1,] 1 1 1 379s [2,] 1 1 1 379s [3,] 1 1 1 379s [4,] 1 1 1 379s [5,] 1 1 1 379s [6,] 1 1 1 379s [7,] 1 1 1 379s [8,] 1 1 1 379s mode: integer 379s int [1:8, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 379s 0% 50% 100% 379s a 1 17 33 379s b 2 18 34 379s c 3 19 35 379s d 4 20 36 379s e 5 21 37 379s f 6 22 38 379s g 7 23 39 379s h 8 24 40 379s 0% 50% 100% 379s a 1 17 33 379s b 2 18 34 379s c 3 19 35 379s d 4 20 36 379s e 5 21 37 379s f 6 22 38 379s g 7 23 39 379s h 8 24 40 379s [,1] [,2] [,3] 379s [1,] 1 17 33 379s [2,] 2 18 34 379s [3,] 3 19 35 379s [4,] 4 20 36 379s [5,] 5 21 37 379s [6,] 6 22 38 379s [7,] 7 23 39 379s [8,] 8 24 40 379s [,1] [,2] [,3] 379s [1,] 1 17 33 379s [2,] 2 18 34 379s [3,] 3 19 35 379s [4,] 4 20 36 379s [5,] 5 21 37 379s [6,] 6 22 38 379s [7,] 7 23 39 379s [8,] 8 24 40 379s 0% 50% 100% 379s [1,] 1 17 33 379s [2,] 2 18 34 379s [3,] 3 19 35 379s [4,] 4 20 36 379s [5,] 5 21 37 379s [6,] 6 22 38 379s [7,] 7 23 39 379s [8,] 8 24 40 379s 0% 50% 100% 379s [1,] 1 17 33 379s [2,] 2 18 34 379s [3,] 3 19 35 379s [4,] 4 20 36 379s [5,] 5 21 37 379s [6,] 6 22 38 379s [7,] 7 23 39 379s [8,] 8 24 40 379s [,1] [,2] [,3] 379s [1,] 1 17 33 379s [2,] 2 18 34 379s [3,] 3 19 35 379s [4,] 4 20 36 379s [5,] 5 21 37 379s [6,] 6 22 38 379s [7,] 7 23 39 379s [8,] 8 24 40 379s [,1] [,2] [,3] 379s [1,] 1 17 33 379s [2,] 2 18 34 379s [3,] 3 19 35 379s [4,] 4 20 36 379s [5,] 5 21 37 379s [6,] 6 22 38 379s [7,] 7 23 39 379s [8,] 8 24 40 379s mode: double 379s num [1:8, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 379s 0% 50% 100% 379s a 1.1 17.1 33.1 379s b 2.1 18.1 34.1 379s c 3.1 19.1 35.1 379s d 4.1 20.1 36.1 379s e 5.1 21.1 37.1 379s f 6.1 22.1 38.1 379s g 7.1 23.1 39.1 379s h 8.1 24.1 40.1 379s 0% 50% 100% 379s a 1.1 17.1 33.1 379s b 2.1 18.1 34.1 379s c 3.1 19.1 35.1 379s d 4.1 20.1 36.1 379s e 5.1 21.1 37.1 379s f 6.1 22.1 38.1 379s g 7.1 23.1 39.1 379s h 8.1 24.1 40.1 379s [,1] [,2] [,3] 379s [1,] 1.1 17.1 33.1 379s [2,] 2.1 18.1 34.1 379s [3,] 3.1 19.1 35.1 379s [4,] 4.1 20.1 36.1 379s [5,] 5.1 21.1 37.1 379s [6,] 6.1 22.1 38.1 379s [7,] 7.1 23.1 39.1 379s [8,] 8.1 24.1 40.1 379s [,1] [,2] [,3] 379s [1,] 1.1 17.1 33.1 379s [2,] 2.1 18.1 34.1 379s [3,] 3.1 19.1 35.1 379s [4,] 4.1 20.1 36.1 379s [5,] 5.1 21.1 37.1 379s [6,] 6.1 22.1 38.1 379s [7,] 7.1 23.1 39.1 379s [8,] 8.1 24.1 40.1 379s 0% 50% 100% 379s [1,] 1.1 17.1 33.1 379s [2,] 2.1 18.1 34.1 379s [3,] 3.1 19.1 35.1 379s [4,] 4.1 20.1 36.1 379s [5,] 5.1 21.1 37.1 379s [6,] 6.1 22.1 38.1 379s [7,] 7.1 23.1 39.1 379s [8,] 8.1 24.1 40.1 379s 0% 50% 100% 379s [1,] 1.1 17.1 33.1 379s [2,] 2.1 18.1 34.1 379s [3,] 3.1 19.1 35.1 379s [4,] 4.1 20.1 36.1 379s [5,] 5.1 21.1 37.1 379s [6,] 6.1 22.1 38.1 379s [7,] 7.1 23.1 39.1 379s [8,] 8.1 24.1 40.1 379s [,1] [,2] [,3] 379s [1,] 1.1 17.1 33.1 379s [2,] 2.1 18.1 34.1 379s [3,] 3.1 19.1 35.1 379s [4,] 4.1 20.1 36.1 379s [5,] 5.1 21.1 37.1 379s [6,] 6.1 22.1 38.1 379s [7,] 7.1 23.1 39.1 379s [8,] 8.1 24.1 40.1 379s [,1] [,2] [,3] 379s [1,] 1.1 17.1 33.1 379s [2,] 2.1 18.1 34.1 379s [3,] 3.1 19.1 35.1 379s [4,] 4.1 20.1 36.1 379s [5,] 5.1 21.1 37.1 379s [6,] 6.1 22.1 38.1 379s [7,] 7.1 23.1 39.1 379s [8,] 8.1 24.1 40.1 379s > 379s > 379s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 379s > # Test with a single quantile 379s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 379s > for (mode in c("logical", "integer", "double")) { 379s + cat("mode: ", mode, "\n", sep = "") 379s + x <- matrix(1:40, nrow = 8, ncol = 5) 379s + storage.mode(x) <- mode 379s + dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 379s + str(x) 379s + 379s + probs <- c(0.5) 379s + # Test with and without dimnames on x 379s + for (setDimnames in c(TRUE, FALSE)) { 379s + if (setDimnames) dimnames(x) <- dimnames 379s + else dimnames(x) <- NULL 379s + # Check names attribute 379s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 379s + q0 <- rowQuantiles_R(x, probs = probs, useNames = useNames) 379s + print(q0) 379s + q1 <- rowQuantiles(x, probs = probs, useNames = useNames) 379s + ## FIXME: Workaround for R (< 3.0.0) 379s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q1) <- storage.mode(q0) 379s + print(q1) 379s + stopifnot(all.equal(q1, q0)) 379s + q2 <- colQuantiles(t(x), probs = probs, useNames = useNames) 379s + ## FIXME: Workaround for R (< 3.0.0) 379s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q2) <- storage.mode(q0) 379s + stopifnot(all.equal(q2, q0)) 379s + } 379s + } 379s + } # for (mode ...) 379s mode: logical 379s logi [1:8, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 379s a b c d e f g h 379s 1 1 1 1 1 1 1 1 379s a b c d e f g h 379s 1 1 1 1 1 1 1 1 379s [1] 1 1 1 1 1 1 1 1 379s [1] 1 1 1 1 1 1 1 1 379s [1] 1 1 1 1 1 1 1 1 379s [1] 1 1 1 1 1 1 1 1 379s [1] 1 1 1 1 1 1 1 1 379s [1] 1 1 1 1 1 1 1 1 379s mode: integer 379s int [1:8, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 379s a b c d e f g h 379s 17 18 19 20 21 22 23 24 379s a b c d e f g h 379s 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s mode: double 379s num [1:8, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 379s a b c d e f g h 379s 17 18 19 20 21 22 23 24 379s a b c d e f g h 379s 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s [1] 17 18 19 20 21 22 23 24 379s > 379s > 379s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 379s > # Consistency checks 379s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 379s > set.seed(1) 379s > 379s > probs <- seq(from = 0, to = 1, by = 0.25) 379s > 379s > cat("Consistency checks:\n") 379s Consistency checks: 379s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 6L else 24L 379s > for (kk in seq_len(n_sims)) { 379s + cat("Random test #", kk, "\n", sep = "") 379s + 379s + # Simulate data in a matrix of any shape 379s + dim <- sample(20:60, size = 2L) 379s + n <- prod(dim) 379s + x <- rnorm(n, sd = 100) 379s + dim(x) <- dim 379s + dimnames <- lapply(dim(x), FUN = function(n) rep(letters, length.out = n)) 379s + 379s + # Add NAs? 379s + has_na <- ((kk %% 2) == 0L) 379s + if (has_na) { 379s + cat("Adding NAs\n") 379s + nna <- sample(n, size = 1) 379s + na_values <- c(NA_real_, NaN) 379s + t <- sample(na_values, size = nna, replace = TRUE) 379s + x[sample(length(x), size = nna)] <- t 379s + } 379s + 379s + # Logical, integer, or double? 379s + mode <- "numeric" 379s + if ((kk %% 6) %in% 1:2) { 379s + cat("Coercing to logical\n") 379s + mode <- "logical" 379s + } else if ((kk %% 6) %in% 3:4) { 379s + cat("Coercing to integers\n") 379s + mode <- "integer" 379s + } 379s + storage.mode(x) <- mode 379s + 379s + str(x) 379s + 379s + # rowQuantiles(): 379s + for (type in 1:9) { 379s + cat(sprintf("type=%d, has_na=%s:\n", type, has_na)) 379s + # Test with and without dimnames on x 379s + for (setDimnames in c(TRUE, FALSE)) { 379s + if (setDimnames) dimnames(x) <- dimnames 379s + else dimnames(x) <- NULL 379s + # Check names attribute 379s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 379s + q0 <- rowQuantiles_R(x, probs = probs, na.rm = has_na, type = type, useNames = useNames) 379s + q1 <- rowQuantiles(x, probs = probs, na.rm = has_na, type = type, useNames = useNames) 379s + ## FIXME: Workaround for R (< 3.0.0) 379s + if (getRversion() < "3.0.0" && mode == "logical" && !has_na && type == 7L) storage.mode(q1) <- storage.mode(q0) 379s + stopifnot(all.equal(q1, q0)) 379s + q2 <- colQuantiles(t(x), probs = probs, na.rm = has_na, type = type, useNames = useNames) 379s + ## FIXME: Workaround for R (< 3.0.0) 379s + if (getRversion() < "3.0.0" && mode == "logical" && !has_na && type == 7L) storage.mode(q2) <- storage.mode(q0) 379s + stopifnot(all.equal(q2, q0)) 379s + } 379s + } 379s + } 379s + } # for (kk ...) 379s Random test #1 379s Coercing to logical 379s logi [1:23, 1:58] TRUE TRUE TRUE TRUE TRUE TRUE ... 379s type=1, has_na=FALSE: 379s type=2, has_na=FALSE: 379s type=3, has_na=FALSE: 379s type=4, has_na=FALSE: 379s type=5, has_na=FALSE: 380s type=6, has_na=FALSE: 380s type=7, has_na=FALSE: 380s type=8, has_na=FALSE: 380s type=9, has_na=FALSE: 380s Random test #2 380s Adding NAs 380s Coercing to logical 380s logi [1:58, 1:33] TRUE TRUE TRUE TRUE TRUE NA ... 380s type=1, has_na=TRUE: 380s type=2, has_na=TRUE: 380s type=3, has_na=TRUE: 380s type=4, has_na=TRUE: 380s type=5, has_na=TRUE: 380s type=6, has_na=TRUE: 380s type=7, has_na=TRUE: 380s type=8, has_na=TRUE: 380s type=9, has_na=TRUE: 380s Random test #3 380s Coercing to integers 380s int [1:28, 1:60] 119 -164 115 -129 209 -175 2 -32 120 -28 ... 380s type=1, has_na=FALSE: 380s type=2, has_na=FALSE: 380s type=3, has_na=FALSE: 380s type=4, has_na=FALSE: 380s type=5, has_na=FALSE: 380s type=6, has_na=FALSE: 380s type=7, has_na=FALSE: 380s type=8, has_na=FALSE: 380s type=9, has_na=FALSE: 380s Random test #4 380s Adding NAs 380s Coercing to integers 380s int [1:54, 1:35] 147 11 116 -50 NA -69 132 NA 114 NA ... 380s type=1, has_na=TRUE: 380s type=2, has_na=TRUE: 381s type=3, has_na=TRUE: 381s type=4, has_na=TRUE: 381s type=5, has_na=TRUE: 381s type=6, has_na=TRUE: 381s type=7, has_na=TRUE: 381s type=8, has_na=TRUE: 381s type=9, has_na=TRUE: 381s Random test #5 381s num [1:39, 1:53] 5.94 -27.16 -30.78 173 126.05 ... 381s type=1, has_na=FALSE: 381s type=2, has_na=FALSE: 381s type=3, has_na=FALSE: 381s type=4, has_na=FALSE: 381s type=5, has_na=FALSE: 381s type=6, has_na=FALSE: 381s type=7, has_na=FALSE: 381s type=8, has_na=FALSE: 381s type=9, has_na=FALSE: 381s Random test #6 381s Adding NAs 381s num [1:46, 1:22] 197 -107 15 148 -110 ... 381s type=1, has_na=TRUE: 381s type=2, has_na=TRUE: 381s type=3, has_na=TRUE: 381s type=4, has_na=TRUE: 382s type=5, has_na=TRUE: 382s type=6, has_na=TRUE: 382s type=7, has_na=TRUE: 382s type=8, has_na=TRUE: 382s type=9, has_na=TRUE: 382s Random test #7 382s Coercing to logical 382s logi [1:21, 1:51] TRUE TRUE TRUE TRUE TRUE TRUE ... 382s type=1, has_na=FALSE: 382s type=2, has_na=FALSE: 382s type=3, has_na=FALSE: 382s type=4, has_na=FALSE: 382s type=5, has_na=FALSE: 382s type=6, has_na=FALSE: 382s type=7, has_na=FALSE: 382s type=8, has_na=FALSE: 382s type=9, has_na=FALSE: 382s Random test #8 382s Adding NAs 382s Coercing to logical 382s logi [1:33, 1:53] NA NA TRUE TRUE TRUE TRUE ... 382s type=1, has_na=TRUE: 382s type=2, has_na=TRUE: 382s type=3, has_na=TRUE: 382s type=4, has_na=TRUE: 382s type=5, has_na=TRUE: 382s type=6, has_na=TRUE: 382s type=7, has_na=TRUE: 382s type=8, has_na=TRUE: 382s type=9, has_na=TRUE: 382s Random test #9 382s Coercing to integers 382s int [1:53, 1:24] -73 10 -73 -5 44 -107 -100 95 58 -50 ... 382s type=1, has_na=FALSE: 382s type=2, has_na=FALSE: 382s type=3, has_na=FALSE: 382s type=4, has_na=FALSE: 382s type=5, has_na=FALSE: 383s type=6, has_na=FALSE: 383s type=7, has_na=FALSE: 383s type=8, has_na=FALSE: 383s type=9, has_na=FALSE: 383s Random test #10 383s Adding NAs 383s Coercing to integers 383s int [1:44, 1:20] NA -140 NA -57 -252 NA NA 20 NA NA ... 383s type=1, has_na=TRUE: 383s type=2, has_na=TRUE: 383s type=3, has_na=TRUE: 383s type=4, has_na=TRUE: 383s type=5, has_na=TRUE: 383s type=6, has_na=TRUE: 383s type=7, has_na=TRUE: 383s type=8, has_na=TRUE: 383s type=9, has_na=TRUE: 383s Random test #11 383s num [1:54, 1:23] -160.87 74.13 196.08 7.27 4.92 ... 383s type=1, has_na=FALSE: 383s type=2, has_na=FALSE: 383s type=3, has_na=FALSE: 383s type=4, has_na=FALSE: 383s type=5, has_na=FALSE: 383s type=6, has_na=FALSE: 383s type=7, has_na=FALSE: 384s type=8, has_na=FALSE: 384s type=9, has_na=FALSE: 384s Random test #12 384s Adding NAs 384s num [1:59, 1:27] -139.2 -86.3 NA -40.7 NA ... 384s type=1, has_na=TRUE: 384s type=2, has_na=TRUE: 384s type=3, has_na=TRUE: 384s type=4, has_na=TRUE: 384s type=5, has_na=TRUE: 384s type=6, has_na=TRUE: 384s type=7, has_na=TRUE: 384s type=8, has_na=TRUE: 384s type=9, has_na=TRUE: 384s Random test #13 384s Coercing to logical 384s logi [1:53, 1:60] TRUE TRUE TRUE TRUE TRUE TRUE ... 384s type=1, has_na=FALSE: 384s type=2, has_na=FALSE: 384s type=3, has_na=FALSE: 384s type=4, has_na=FALSE: 384s type=5, has_na=FALSE: 384s type=6, has_na=FALSE: 385s type=7, has_na=FALSE: 385s type=8, has_na=FALSE: 385s type=9, has_na=FALSE: 385s Random test #14 385s Adding NAs 385s Coercing to logical 385s logi [1:22, 1:57] TRUE TRUE TRUE TRUE TRUE TRUE ... 385s type=1, has_na=TRUE: 385s type=2, has_na=TRUE: 385s type=3, has_na=TRUE: 385s type=4, has_na=TRUE: 385s type=5, has_na=TRUE: 385s type=6, has_na=TRUE: 385s type=7, has_na=TRUE: 385s type=8, has_na=TRUE: 385s type=9, has_na=TRUE: 385s Random test #15 385s Coercing to integers 385s int [1:20, 1:34] 78 -41 183 190 -71 37 0 -4 -86 27 ... 385s type=1, has_na=FALSE: 385s type=2, has_na=FALSE: 385s type=3, has_na=FALSE: 385s type=4, has_na=FALSE: 385s type=5, has_na=FALSE: 385s type=6, has_na=FALSE: 385s type=7, has_na=FALSE: 385s type=8, has_na=FALSE: 385s type=9, has_na=FALSE: 385s Random test #16 385s Adding NAs 385s Coercing to integers 385s int [1:42, 1:37] NA 12 -15 41 -28 17 NA -74 NA NA ... 385s type=1, has_na=TRUE: 385s type=2, has_na=TRUE: 385s type=3, has_na=TRUE: 385s type=4, has_na=TRUE: 385s type=5, has_na=TRUE: 385s type=6, has_na=TRUE: 385s type=7, has_na=TRUE: 385s type=8, has_na=TRUE: 385s type=9, has_na=TRUE: 385s Random test #17 385s num [1:42, 1:29] -50.51 -6.51 -117.59 135.58 226.87 ... 385s type=1, has_na=FALSE: 386s type=2, has_na=FALSE: 386s type=3, has_na=FALSE: 386s type=4, has_na=FALSE: 386s type=5, has_na=FALSE: 386s type=6, has_na=FALSE: 386s type=7, has_na=FALSE: 386s type=8, has_na=FALSE: 386s type=9, has_na=FALSE: 386s Random test #18 386s Adding NAs 386s num [1:57, 1:39] 223 156.8 -44.6 -127.5 -147.7 ... 386s type=1, has_na=TRUE: 386s type=2, has_na=TRUE: 386s type=3, has_na=TRUE: 386s type=4, has_na=TRUE: 386s type=5, has_na=TRUE: 386s type=6, has_na=TRUE: 386s type=7, has_na=TRUE: 386s type=8, has_na=TRUE: 386s type=9, has_na=TRUE: 386s Random test #19 386s Coercing to logical 386s logi [1:52, 1:57] TRUE TRUE TRUE TRUE TRUE TRUE ... 386s type=1, has_na=FALSE: 386s type=2, has_na=FALSE: 387s type=3, has_na=FALSE: 387s type=4, has_na=FALSE: 387s type=5, has_na=FALSE: 387s type=6, has_na=FALSE: 387s type=7, has_na=FALSE: 387s type=8, has_na=FALSE: 387s type=9, has_na=FALSE: 387s Random test #20 387s Adding NAs 387s Coercing to logical 387s logi [1:25, 1:48] NA TRUE NA NA NA NA ... 387s type=1, has_na=TRUE: 387s type=2, has_na=TRUE: 387s type=3, has_na=TRUE: 387s type=4, has_na=TRUE: 387s type=5, has_na=TRUE: 387s type=6, has_na=TRUE: 387s type=7, has_na=TRUE: 387s type=8, has_na=TRUE: 387s type=9, has_na=TRUE: 387s Random test #21 387s Coercing to integers 387s int [1:53, 1:27] 3 -30 203 -49 19 -45 -138 28 46 -44 ... 387s type=1, has_na=FALSE: 387s type=2, has_na=FALSE: 387s type=3, has_na=FALSE: 387s type=4, has_na=FALSE: 387s type=5, has_na=FALSE: 387s type=6, has_na=FALSE: 387s type=7, has_na=FALSE: 387s type=8, has_na=FALSE: 388s type=9, has_na=FALSE: 388s Random test #22 388s Adding NAs 388s Coercing to integers 388s int [1:48, 1:36] -131 NA NA -201 45 -17 NA 57 NA NA ... 388s type=1, has_na=TRUE: 388s type=2, has_na=TRUE: 388s type=3, has_na=TRUE: 388s type=4, has_na=TRUE: 388s type=5, has_na=TRUE: 388s type=6, has_na=TRUE: 388s type=7, has_na=TRUE: 388s type=8, has_na=TRUE: 388s type=9, has_na=TRUE: 388s Random test #23 388s num [1:23, 1:43] -99.2 -68.8 -86.7 -104.2 48 ... 388s type=1, has_na=FALSE: 388s type=2, has_na=FALSE: 388s type=3, has_na=FALSE: 388s type=4, has_na=FALSE: 388s type=5, has_na=FALSE: 388s type=6, has_na=FALSE: 388s type=7, has_na=FALSE: 388s type=8, has_na=FALSE: 388s type=9, has_na=FALSE: 388s Random test #24 388s Adding NAs 388s num [1:53, 1:29] NaN -67.6 10.8 -88.4 130.1 ... 388s type=1, has_na=TRUE: 388s type=2, has_na=TRUE: 388s type=3, has_na=TRUE: 388s type=4, has_na=TRUE: 389s type=5, has_na=TRUE: 389s type=6, has_na=TRUE: 389s type=7, has_na=TRUE: 389s type=8, has_na=TRUE: 389s type=9, has_na=TRUE: 389s > 389s > 389s > 389s > for (mode in c("logical", "integer", "double")) { 389s + naValue <- NA_real_ 389s + storage.mode(naValue) <- mode 389s + 389s + someValue <- 1 389s + storage.mode(someValue) <- mode 389s + 389s + for (type in 1:9) { 389s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 389s + # All NA 389s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 389s + x <- matrix(naValue, nrow = 3L, ncol = 4L) 389s + dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 389s + # Test with and without dimnames on x 389s + for (setDimnames in c(TRUE, FALSE)) { 389s + if (setDimnames) dimnames(x) <- dimnames 389s + else dimnames(x) <- NULL 389s + # Check names attribute 389s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 389s + qr0 <- rowQuantiles_R(x, type = type, useNames = useNames) 389s + 389s + qr <- rowQuantiles(x, type = type, useNames = useNames) 389s + stopifnot(identical(qr, qr0)) 389s + 389s + # x <- matrix(naValue, nrow = 4L, ncol = 3L) 389s + qc <- colQuantiles(t(x), type = type, useNames = useNames) 389s + 389s + stopifnot(identical(qc, qr)) 389s + } 389s + } 389s + 389s + 389s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 389s + # Empty matrices 389s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 389s + probs <- c(0, 0.25, 0.75, 1) 389s + x <- matrix(naValue, nrow = 0L, ncol = 0L) 389s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 389s + q <- rowQuantiles(x, probs = probs, type = type, useNames = TRUE) 389s + stopifnot(identical(dim(q), c(nrow(x), length(probs)))) 389s + q <- colQuantiles(x, probs = probs, type = type, useNames = TRUE) 389s + stopifnot(identical(dim(q), c(ncol(x), length(probs)))) 389s + 389s + x <- matrix(naValue, nrow = 2L, ncol = 0L) 389s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 389s + q <- rowQuantiles(x, probs = probs, type = type, useNames = TRUE) 389s + stopifnot(identical(dim(q), c(nrow(x), length(probs)))) 389s + 389s + x <- matrix(naValue, nrow = 0L, ncol = 2L) 389s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 389s + q <- colQuantiles(x, probs = probs, type = type, useNames = TRUE) 389s + stopifnot(identical(dim(q), c(ncol(x), length(probs)))) 389s + 389s + 389s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 389s + # Single column matrices 389s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 389s + probs <- c(0, 0.25, 0.75, 1) 389s + x <- matrix(someValue, nrow = 2L, ncol = 1L) 389s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 389s + qr <- rowQuantiles(x, probs = probs, type = type, useNames = TRUE) 389s + print(qr) 389s + 389s + x <- matrix(someValue, nrow = 1L, ncol = 2L) 389s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 389s + qc <- colQuantiles(x, probs = probs, type = type, useNames = TRUE) 389s + print(qc) 389s + 389s + stopifnot(identical(qc, qr)) 389s + } 389s + } 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s 0% 25% 75% 100% 389s a 1 1 1 1 389s b 1 1 1 1 389s > 389s 389s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 389s Copyright (C) 2024 The R Foundation for Statistical Computing 389s Platform: s390x-ibm-linux-gnu (64-bit) 389s 389s R is free software and comes with ABSOLUTELY NO WARRANTY. 389s You are welcome to redistribute it under certain conditions. 389s Type 'license()' or 'licence()' for distribution details. 389s 389s R is a collaborative project with many contributors. 389s Type 'contributors()' for more information and 389s 'citation()' on how to cite R or R packages in publications. 389s 389s Type 'demo()' for some demos, 'help()' for on-line help, or 389s 'help.start()' for an HTML browser interface to help. 389s Type 'q()' to quit R. 389s 389s > library("matrixStats") 389s > 389s > ## Create isFALSE() if running on an old version of R 389s > if (!exists("isFALSE", mode="function")) { 389s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 389s + } 389s > 389s > rowQuantiles_R <- function(x, probs, na.rm = FALSE, drop = TRUE, ..., useNames = NA) { 389s + q <- apply(x, MARGIN = 1L, FUN = function(x, probs, na.rm) { 389s + if (!na.rm && any(is.na(x))) { 389s + na_value <- NA_real_ 389s + storage.mode(na_value) <- storage.mode(x) 389s + rep(na_value, times = length(probs)) 389s + 389s + } else { 389s + as.vector(quantile(x, probs = probs, na.rm = na.rm, names = FALSE, ...)) 389s + } 389s + }, probs = probs, na.rm = na.rm) 389s + 389s + if (!is.null(dim(q))) q <- t(q) 389s + else dim(q) <- c(nrow(x), length(probs)) 389s + 389s + colnames(q) <- matrixStats:::quantile_probs_names(probs) 389s + rownames(q) <- rownames(x) 389s + if (isFALSE(useNames)) dimnames(q) <- NULL 389s + 389s + if (drop) q <- drop(q) 389s + q 389s + } 389s > 389s > 389s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 389s > # Subsetted tests 389s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 389s > source("utils/validateIndicesFramework.R") 389s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 389s > dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 389s > probs <- c(0, 0.25, 0.75, 1) 389s > # Test with and without dimnames on x 389s > for (setDimnames in c(TRUE, FALSE)) { 389s + if (setDimnames) dimnames(x) <- dimnames 389s + else dimnames(x) <- NULL 389s + 389s + count <- 0L 389s + for (rows in index_cases) { 389s + for (cols in index_cases) { 389s + count <- count + 1L 389s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 389s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 389s + useNames <- useNames[count %% length(useNames) + 1] 389s + 389s + validateIndicesTestMatrix(x, rows, cols, 389s + ftest = rowQuantiles, fsure = rowQuantiles_R, 389s + probs = probs, na.rm = na.rm, drop = FALSE, useNames = useNames) 389s + validateIndicesTestMatrix(x, rows, cols, 389s + fcoltest = colQuantiles, fsure = rowQuantiles_R, 389s + probs = probs, na.rm = na.rm, drop = FALSE, useNames = useNames) 389s + } 389s + } 389s + } 390s > 390s > 390s 390s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 390s Copyright (C) 2024 The R Foundation for Statistical Computing 390s Platform: s390x-ibm-linux-gnu (64-bit) 390s 390s R is free software and comes with ABSOLUTELY NO WARRANTY. 390s You are welcome to redistribute it under certain conditions. 390s Type 'license()' or 'licence()' for distribution details. 390s 390s R is a collaborative project with many contributors. 390s Type 'contributors()' for more information and 390s 'citation()' on how to cite R or R packages in publications. 390s 390s Type 'demo()' for some demos, 'help()' for on-line help, or 390s 'help.start()' for an HTML browser interface to help. 390s Type 'q()' to quit R. 390s 390s > library("matrixStats") 390s > 390s > rowMins_R <- function(x, ..., useNames = NA) { 390s + suppressWarnings({ 390s + res <- apply(x, MARGIN = 1L, FUN = min, ...) 390s + }) 390s + if (is.na(useNames) || !useNames) names(res) <- NULL 390s + res 390s + } # rowMins_R() 390s > 390s > rowMaxs_R <- function(x, ..., useNames = NA) { 390s + suppressWarnings({ 390s + res <- apply(x, MARGIN = 1L, FUN = max, ...) 390s + }) 390s + if (is.na(useNames) || !useNames) names(res) <- NULL 390s + res 390s + } # rowMaxs_R() 390s > 390s > rowRanges_R <- function(x, ..., useNames = NA) { 390s + suppressWarnings({ 390s + ans <- t(apply(x, MARGIN = 1L, FUN = range, ...)) 390s + }) 390s + 390s + # Preserve rownames attribute 390s + dim <- c(dim(x)[1], 2L) 390s + if (!isTRUE(all.equal(dim(ans), dim))) { 390s + dim(ans) <- dim 390s + rownames <- rownames(x) 390s + if (!is.null(dimnames)) rownames(ans) <- rownames 390s + } 390s + if (is.na(useNames) || !useNames) dimnames(ans) <- NULL 390s + ans 390s + } # rowRanges_R() 390s > 390s > 390s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 390s > # With and without some NAs 390s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 390s > for (mode in c("integer", "double")) { 390s + cat("mode: ", mode, "\n", sep = "") 390s + 390s + for (add_na in c(FALSE, TRUE)) { 390s + cat("add_na = ", add_na, "\n", sep = "") 390s + 390s + x <- matrix(1:50 + 0.1, nrow = 10L, ncol = 5L) 390s + if (add_na) { 390s + x[3:7, c(2, 4)] <- NA_real_ 390s + } 390s + storage.mode(x) <- mode 390s + str(x) 390s + 390s + # To check names attribute 390s + dimnames <- list(letters[1:10], LETTERS[1:5]) 390s + 390s + # Test with and without dimnames on x 390s + for (setDimnames in c(TRUE, FALSE)) { 390s + if (setDimnames) dimnames(x) <- dimnames 390s + else dimnames(x) <- NULL 390s + # Row/column extremes 390s + for (na.rm in c(FALSE, TRUE)) { 390s + # Check names attribute 390s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 390s + cat("na.rm = ", na.rm, "\n", sep = "") 390s + 390s + # Ranges 390s + cat("range:\n") 390s + r0 <- rowRanges_R(x, na.rm = na.rm, useNames = useNames) 390s + r1 <- rowRanges(x, na.rm = na.rm, useNames = useNames) 390s + r2 <- colRanges(t(x), na.rm = na.rm, useNames = useNames) 390s + stopifnot(all.equal(r1, r2)) 390s + stopifnot(all.equal(r1, r0)) 390s + 390s + # Min 390s + cat("min:\n") 390s + m0 <- rowMins_R(x, na.rm = na.rm, useNames = useNames) 390s + m1 <- rowMins(x, na.rm = na.rm, useNames = useNames) 390s + m2 <- colMins(t(x), na.rm = na.rm, useNames = useNames) 391s + stopifnot(all.equal(m1, m2)) 391s + stopifnot(all.equal(m1, m0)) 391s + 391s + # Max 391s + cat("max:\n") 391s + m0 <- rowMaxs_R(x, na.rm = na.rm, useNames = useNames) 391s + m1 <- rowMaxs(x, na.rm = na.rm, useNames = useNames) 391s + m2 <- colMaxs(t(x), na.rm = na.rm, useNames = useNames) 391s + stopifnot(all.equal(m1, m2)) 391s + stopifnot(all.equal(m1, m0)) 391s + } 391s + } 391s + } 391s + } # for (add_na ...) 391s + } # for (mode ...) 391s mode: integer 391s add_na = FALSE 391s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s add_na = TRUE 391s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s mode: double 391s add_na = FALSE 391s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s add_na = TRUE 391s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = FALSE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s na.rm = TRUE 391s range: 391s min: 391s max: 391s > 391s > 391s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 391s > # All NAs 391s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 391s > for (mode in c("integer", "double")) { 391s + cat("mode: ", mode, "\n", sep = "") 391s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 391s + storage.mode(x) <- mode 391s + str(x) 391s + 391s + # Test with and without dimnames on x 391s + for (setDimnames in c(TRUE, FALSE)) { 391s + if (setDimnames) dimnames(x) <- dimnames 391s + else dimnames(x) <- NULL 391s + for (na.rm in c(FALSE, TRUE)) { 391s + # Check names attribute 391s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 391s + cat("na.rm = ", na.rm, "\n", sep = "") 391s + r0 <- rowRanges_R(x, na.rm = na.rm, useNames = useNames) 391s + r1 <- rowRanges(x, na.rm = na.rm, useNames = useNames) 391s + r2 <- colRanges(t(x), na.rm = na.rm, useNames = useNames) 391s + stopifnot(all.equal(r1, r2)) 391s + stopifnot(all.equal(r1, r0)) 391s + } 391s + } 391s + } 391s + } # for (mode ...) 391s mode: integer 391s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 391s na.rm = FALSE 391s na.rm = FALSE 391s na.rm = TRUE 391s na.rm = TRUE 391s na.rm = FALSE 391s na.rm = FALSE 391s na.rm = TRUE 391s na.rm = TRUE 391s mode: double 391s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 391s na.rm = FALSE 391s na.rm = FALSE 391s na.rm = TRUE 391s na.rm = TRUE 391s na.rm = FALSE 391s na.rm = FALSE 391s na.rm = TRUE 391s na.rm = TRUE 391s > 391s > 391s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 391s > # Special cases 391s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 391s > # Nx0 matrix 391s > x <- matrix(double(0L), nrow = 5L, ncol = 0L) 391s > r0 <- rowRanges_R(x) 391s > #r1 <- rowRanges(x) 391s > #r_truth <- matrix(c(Inf, -Inf), nrow = nrow(x), ncol = 2L, byrow = TRUE) 391s > #stopifnot(all.equal(r1, r_truth)) 391s > 391s > # 0xN matrix 391s > x <- t(x) 391s > #r1 <- colRanges(x) 391s > #stopifnot(all.equal(r1, r_truth)) 391s > 391s > # Nx1 matrix 391s > x <- matrix(1:5, nrow = 5L, ncol = 1L) 391s > # To check names attribute 391s > dimnames <- list(letters[1:5], "A") 391s > r1 <- rowRanges(x) 391s > r_truth <- matrix(1:5, nrow = nrow(x), ncol = 2L, byrow = FALSE) 391s > stopifnot(all.equal(r1, r_truth)) 391s > # Check names attribute 391s > dimnames(x) <- dimnames 391s > r0 <- rowRanges_R(x, useNames = TRUE) 391s > r1 <- rowRanges(x, useNames = TRUE) 391s > stopifnot(all.equal(r1, r0)) 391s > dimnames(x) <- NULL 391s > 391s > # 1xN matrix 391s > x <- t(x) 391s > r1 <- colRanges(x) 391s > stopifnot(all.equal(r1, r_truth)) 391s > # Check names attribute 391s > dimnames(x) <- list("a", LETTERS[1:5]) 391s > r1 <- colRanges(x, useNames = TRUE) 391s > stopifnot(identical(rownames(r1), colnames(x))) 391s > 391s > 391s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 391s > # Additional tests with NA_integer_, NA_real, NaN, -Inf, +Inf 391s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 391s > x <- matrix(1:12, nrow = 4L, ncol = 3L) 391s > 391s > na_list <- list( 391s + "integer" = matrix(1:12, nrow = 4L, ncol = 3L), 391s + "integer w/ NA" = matrix(NA_integer_, nrow = 4L, ncol = 3L), 391s + "real" = matrix(as.double(1:12), nrow = 4L, ncol = 3L), 391s + "real w/ NA" = matrix(NA_real_, nrow = 4L, ncol = 3L) 391s + ) 391s > 391s > na <- na_list[["real"]] 391s > na[2, 2] <- NA 391s > na_list[["real + NA cell"]] <- na 391s > 391s > na <- na_list[["real"]] 391s > na[2, ] <- NA 391s > na_list[["real + NA row"]] <- na 391s > 391s > na <- na_list[["real"]] 391s > na[2, ] <- NaN 391s > na_list[["real + NaN row"]] <- na 391s > 391s > na <- na_list[["real"]] 391s > na[2, 2] <- Inf 391s > na_list[["real + Inf cell"]] <- na 391s > 391s > na <- na_list[["real"]] 391s > na[2, ] <- Inf 391s > na_list[["real + Inf row"]] <- na 391s > 391s > na <- na_list[["real"]] 391s > na[2, 2] <- NaN 391s > na_list[["real + NaN cell"]] <- na 391s > 391s > na <- na_list[["real w/ NA"]] 391s > na[2, 2] <- NaN 391s > na_list[["real w/ NA + NaN cell"]] <- na 391s > 391s > na <- na_list[["real w/ NA"]] 391s > na[2, ] <- NaN 391s > na_list[["real w/ NA + NaN row"]] <- na 391s > 391s > # To check names attribute 391s > dimnames <- list(letters[1:4], LETTERS[1:3]) 391s > 391s > # Test with and without dimnames on x 391s > for (setDimnames in c(TRUE, FALSE)) { 391s + if (setDimnames) dimnames(x) <- dimnames 391s + else dimnames(x) <- NULL 391s + for (na.rm in c(FALSE, TRUE)) { 391s + for (name in names(na_list)) { 391s + # Check names attribute 391s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 391s + na <- na_list[[name]] 391s + cat(sprintf("%s (%s) w/ na.rm = %s:\n", name, typeof(na), na.rm)) 391s + print(na) 391s + 391s + cat(" min:\n") 391s + y0 <- rowMins_R(na, na.rm = na.rm, useNames = useNames) 391s + str(y0) 391s + y1 <- rowMins(na, na.rm = na.rm, useNames = useNames) 391s + str(y1) 391s + stopifnot(all.equal(y1, y0)) 391s + y1c <- colMins(t(na), na.rm = na.rm, useNames = useNames) 391s + str(y1c) 391s + stopifnot(all.equal(y1c, y1)) 391s + 391s + cat(" max:\n") 391s + y0 <- rowMaxs_R(na, na.rm = na.rm, useNames = useNames) 391s + str(y0) 391s + y1 <- rowMaxs(na, na.rm = na.rm, useNames = useNames) 391s + str(y1) 391s + stopifnot(all.equal(y1, y0)) 391s + y1c <- colMaxs(t(na), na.rm = na.rm, useNames = useNames) 391s + str(y1c) 391s + stopifnot(all.equal(y1c, y1)) 391s + 391s + cat(" range:\n") 391s + y0 <- rowRanges_R(na, na.rm = na.rm, useNames = useNames) 391s + str(y0) 391s + y1 <- rowRanges(na, na.rm = na.rm, useNames = useNames) 391s + str(y1) 391s + stopifnot(all.equal(y1, y0)) 391s + y1c <- colRanges(t(na), na.rm = na.rm, useNames = useNames) 391s + str(y1c) 391s + stopifnot(all.equal(y1c, y1)) 391s + } 391s + } # for (name ...) 391s + } # for (na.rm ...) 391s + } 391s integer (integer) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s max: 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s range: 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s integer (integer) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s max: 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s range: 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s integer w/ NA (integer) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s max: 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s range: 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s integer w/ NA (integer) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s max: 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s range: 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s real (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real w/ NA (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s max: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s range: 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s real w/ NA (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s max: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s range: 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s real + NA cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NA 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s max: 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s range: 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s real + NA cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NA 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s max: 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s range: 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s real + NA row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NA NA NA 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s max: 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s range: 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s real + NA row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NA NA NA 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s max: 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s range: 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s real + NaN row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NaN NaN NaN 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s max: 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s range: 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s real + NaN row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NaN NaN NaN 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s max: 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s range: 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s real + Inf cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 Inf 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s real + Inf cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 Inf 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s real + Inf row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] Inf Inf Inf 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + Inf row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] Inf Inf Inf 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + NaN cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NaN 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s max: 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s range: 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s real + NaN cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NaN 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s max: 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s range: 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NaN NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s max: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s range: 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NaN NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s max: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s range: 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s real w/ NA + NaN row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NaN NaN NaN 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s max: 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s range: 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s real w/ NA + NaN row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NaN NaN NaN 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s max: 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s range: 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s integer (integer) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s max: 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s range: 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s integer (integer) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s max: 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s range: 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s integer w/ NA (integer) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s integer w/ NA (integer) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real w/ NA (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real w/ NA (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real + NA cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NA 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real + NA cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NA 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real + NA row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NA NA NA 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + NA row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NA NA NA 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + NaN row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NaN NaN NaN 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + NaN row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NaN NaN NaN 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + Inf cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 Inf 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s real + Inf cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 Inf 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s real + Inf row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] Inf Inf Inf 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + Inf row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] Inf Inf Inf 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + NaN cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NaN 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real + NaN cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NaN 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NaN NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NaN NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real w/ NA + NaN row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NaN NaN NaN 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real w/ NA + NaN row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NaN NaN NaN 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s integer (integer) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s max: 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s range: 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s integer (integer) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s max: 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s range: 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s integer w/ NA (integer) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s max: 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s range: 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s integer w/ NA (integer) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s max: 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s int [1:4] NA NA NA NA 391s range: 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s int [1:4, 1:2] NA NA NA NA NA NA NA NA 391s real (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real w/ NA (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s max: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s range: 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s real w/ NA (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s max: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s range: 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s real + NA cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NA 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s max: 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s range: 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s real + NA cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NA 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s max: 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s range: 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s real + NA row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NA NA NA 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s max: 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s range: 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s real + NA row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NA NA NA 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s num [1:4] 1 NA 3 4 391s max: 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s num [1:4] 9 NA 11 12 391s range: 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 391s real + NaN row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NaN NaN NaN 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s max: 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s range: 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s real + NaN row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NaN NaN NaN 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s max: 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s range: 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s real + Inf cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 Inf 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s real + Inf cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 Inf 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s real + Inf row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] Inf Inf Inf 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + Inf row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] Inf Inf Inf 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + NaN cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NaN 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s max: 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s range: 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s real + NaN cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NaN 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s num [1:4] 1 NaN 3 4 391s max: 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s num [1:4] 9 NaN 11 12 391s range: 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 391s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NaN NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s max: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s range: 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NaN NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s max: 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s num [1:4] NA NA NA NA 391s range: 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s num [1:4, 1:2] NA NA NA NA NA NA NA NA 391s real w/ NA + NaN row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NaN NaN NaN 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s max: 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s range: 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s real w/ NA + NaN row (double) w/ na.rm = FALSE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NaN NaN NaN 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s max: 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s num [1:4] NA NaN NA NA 391s range: 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 391s integer (integer) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s max: 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s range: 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s integer (integer) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s int [1:4] 1 2 3 4 391s max: 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s int [1:4] 9 10 11 12 391s range: 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s int [1:4, 1:2] 1 2 3 4 9 10 11 12 391s integer w/ NA (integer) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s integer w/ NA (integer) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 6 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real w/ NA (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real w/ NA (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NA NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real + NA cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NA 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real + NA cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NA 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real + NA row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NA NA NA 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + NA row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NA NA NA 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + NaN row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NaN NaN NaN 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + NaN row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] NaN NaN NaN 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s num [1:4] 9 -Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + Inf cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 Inf 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s real + Inf cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 Inf 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s num [1:4, 1:2] 1 2 3 4 9 ... 391s real + Inf row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] Inf Inf Inf 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + Inf row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] Inf Inf Inf 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s num [1:4] 1 Inf 3 4 391s max: 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s num [1:4] 9 Inf 11 12 391s range: 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s num [1:4, 1:2] 1 Inf 3 4 9 ... 391s real + NaN cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NaN 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real + NaN cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] 1 5 9 391s [2,] 2 NaN 10 391s [3,] 3 7 11 391s [4,] 4 8 12 391s min: 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s num [1:4] 1 2 3 4 391s max: 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s num [1:4] 9 10 11 12 391s range: 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s num [1:4, 1:2] 1 2 3 4 9 10 11 12 391s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NaN NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NA NaN NA 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real w/ NA + NaN row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NaN NaN NaN 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s real w/ NA + NaN row (double) w/ na.rm = TRUE: 391s [,1] [,2] [,3] 391s [1,] NA NA NA 391s [2,] NaN NaN NaN 391s [3,] NA NA NA 391s [4,] NA NA NA 391s min: 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s num [1:4] Inf Inf Inf Inf 391s max: 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s num [1:4] -Inf -Inf -Inf -Inf 391s range: 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 391s > 391s 391s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 391s Copyright (C) 2024 The R Foundation for Statistical Computing 391s Platform: s390x-ibm-linux-gnu (64-bit) 391s 391s R is free software and comes with ABSOLUTELY NO WARRANTY. 391s You are welcome to redistribute it under certain conditions. 391s Type 'license()' or 'licence()' for distribution details. 391s 391s R is a collaborative project with many contributors. 391s Type 'contributors()' for more information and 391s 'citation()' on how to cite R or R packages in publications. 391s 391s Type 'demo()' for some demos, 'help()' for on-line help, or 391s 'help.start()' for an HTML browser interface to help. 391s Type 'q()' to quit R. 391s 391s > library("matrixStats") 391s > 391s > rowMins_R <- function(x, ..., useNames = NA) { 391s + suppressWarnings({ 391s + res <- apply(x, MARGIN = 1L, FUN = min, ...) 391s + }) 391s + if (is.na(useNames) || !useNames) names(res) <- NULL 391s + res 391s + } # rowMins_R() 391s > 391s > rowMaxs_R <- function(x, ..., useNames = NA) { 391s + suppressWarnings({ 391s + res <- apply(x, MARGIN = 1L, FUN = max, ...) 391s + }) 391s + if (is.na(useNames) || !useNames) names(res) <- NULL 391s + res 391s + } # rowMaxs_R() 391s > 391s > rowRanges_R <- function(x, ..., useNames = NA) { 391s + suppressWarnings({ 391s + ans <- t(apply(x, MARGIN = 1L, FUN = range, ...)) 391s + }) 391s + 391s + # Preserve rownames attribute 391s + dim <- c(dim(x)[1], 2L) 391s + if (!isTRUE(all.equal(dim(ans), dim))) { 391s + dim(ans) <- dim 391s + rownames <- rownames(x) 391s + if (!is.null(dimnames)) rownames(ans) <- rownames 391s + } 391s + if (is.na(useNames) || !useNames) dimnames(ans) <- NULL 391s + ans 391s + } # rowRanges_R() 391s > 391s > 391s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 391s > # Subsetted tests 391s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 391s > source("utils/validateIndicesFramework.R") 391s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 391s > storage.mode(x) <- "integer" 391s > 391s > # To check rownames/names attributes 391s > dimnames <- list(letters[1:6], LETTERS[1:6]) 391s > 391s > # Test with and without dimnames on x 391s > for (setDimnames in c(TRUE, FALSE)) { 391s + if (setDimnames) dimnames(x) <- dimnames 391s + else dimnames(x) <- NULL 391s + 391s + count <- 0L 391s + for (rows in index_cases) { 391s + for (cols in index_cases) { 391s + count <- count + 1L 391s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 391s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 391s + useNames <- useNames[count %% length(useNames) + 1] 391s + 391s + validateIndicesTestMatrix(x, rows, cols, 391s + ftest = rowRanges, fsure = rowRanges_R, 391s + na.rm = na.rm, useNames = useNames) 391s + validateIndicesTestMatrix(x, rows, cols, 391s + ftest = rowMins, fsure = rowMins_R, 391s + na.rm = na.rm, useNames = useNames) 391s + validateIndicesTestMatrix(x, rows, cols, 391s + ftest = rowMaxs, fsure = rowMaxs_R, 391s + na.rm = na.rm, useNames = useNames) 391s + 391s + validateIndicesTestMatrix(x, rows, cols, 391s + fcoltest = colRanges, fsure = rowRanges_R, 391s + na.rm = na.rm, useNames = useNames) 391s + validateIndicesTestMatrix(x, rows, cols, 391s + fcoltest = colMins, fsure = rowMins_R, 391s + na.rm = na.rm, useNames = useNames) 391s + validateIndicesTestMatrix(x, rows, cols, 391s + fcoltest = colMaxs, fsure = rowMaxs_R, 391s + na.rm = na.rm, useNames = useNames) 391s + } 391s + } 391s + } 392s > 392s 392s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 392s Copyright (C) 2024 The R Foundation for Statistical Computing 392s Platform: s390x-ibm-linux-gnu (64-bit) 392s 392s R is free software and comes with ABSOLUTELY NO WARRANTY. 392s You are welcome to redistribute it under certain conditions. 392s Type 'license()' or 'licence()' for distribution details. 392s 392s R is a collaborative project with many contributors. 392s Type 'contributors()' for more information and 392s 'citation()' on how to cite R or R packages in publications. 392s 392s Type 'demo()' for some demos, 'help()' for on-line help, or 392s 'help.start()' for an HTML browser interface to help. 392s Type 'q()' to quit R. 392s 392s > library("matrixStats") 392s > 392s > dense_rank <- function(x) match(x, table = sort(unique(x))) 392s > 392s > rowRanks_R <- function(x, ties.method, ..., useNames = NA) { 392s + if (ties.method == "dense") { 392s + res <- t(apply(x, MARGIN = 1L, FUN = dense_rank)) 392s + } else { 392s + res <- t(apply(x, MARGIN = 1L, FUN = rank, na.last = "keep", ties.method = ties.method)) 392s + } 392s + 392s + # Preserve dimnames attribute? 392s + dim(res) <- dim(x) 392s + dimnames(res) <- if (isTRUE(useNames)) dimnames(x) else NULL 392s + 392s + res 392s + } 392s > 392s > colRanks_R <- function(x, ties.method, preserveShape = FALSE, ..., useNames = NA) { 392s + if (ties.method == "dense") { 392s + res <- t(apply(x, MARGIN = 2L, FUN = dense_rank)) 392s + } else { 392s + res <- t(apply(x, MARGIN = 2L, FUN = rank, na.last = "keep", ties.method = ties.method)) 392s + } 392s + 392s + # Preserve dimnames attribute? 392s + tx <- t(x) 392s + dim(res) <- dim(tx) 392s + dimnames(res) <- if (isTRUE(useNames)) dimnames(tx) else NULL 392s + 392s + if (preserveShape) res <- t(res) 392s + res 392s + } 392s > 392s > set.seed(1) 392s > 392s > cat("Consistency checks:\n") 392s Consistency checks: 392s > xs <- vector("list", length = 4L) 392s > for (kk in 1:4) { 392s + 392s + # Simulate data in a matrix of any shape 392s + dim <- sample(40:80, size = 2L) 392s + n <- prod(dim) 392s + x <- rnorm(n, sd = 10) 392s + dim(x) <- dim 392s + 392s + # Add NAs? 392s + if ((kk %% 4) %in% c(3, 0)) { 392s + cat("Adding NAs\n") 392s + nna <- sample(n, size = 1L) 392s + x[sample(length(x), size = nna)] <- NA_real_ 392s + } 392s + 392s + # Integer or double? 392s + if ((kk %% 4) %in% c(2, 0)) { 392s + cat("Coercing to integers\n") 392s + storage.mode(x) <- "integer" 392s + } 392s + 392s + xs[[kk]] <- x 392s + } # for (kk ...) 393s Coercing to integers 393s Adding NAs 393s Adding NAs 393s Coercing to integers 393s > str(xs) 393s List of 4 393s $ : num [1:43, 1:78] 13.3 12.72 4.15 -15.4 -9.29 ... 393s $ : int [1:46, 1:61] 2 11 -16 -5 19 5 26 -13 1 -9 ... 393s $ : num [1:42, 1:47] NA -22.3 NA NA NA ... 393s $ : int [1:42, 1:78] NA NA NA NA NA NA NA NA NA NA ... 393s > 393s > for (kk in 1:4) { 393s + cat("Random test #", kk, "\n", sep = "") 393s + x <- xs[[kk]] 393s + tx <- t(x) 393s + 393s + for (ties in c("max", "min", "average", "first", "last", "dense")) { 393s + cat(sprintf("ties.method = %s\n", ties)) 393s + # rowRanks(): 393s + y1 <- matrixStats::rowRanks(x, ties.method = ties) 393s + if (ties != "last" || getRversion() >= "3.3.0") { 393s + y2 <- rowRanks_R(x, ties.method = ties) 393s + stopifnot(identical(y1, y2)) 393s + } 393s + 393s + y3 <- matrixStats::colRanks(tx, ties.method = ties) 393s + stopifnot(identical(y1, y3)) 393s + 393s + # colRanks(): 393s + y1 <- matrixStats::colRanks(x, ties.method = ties) 393s + if (ties != "last" || getRversion() >= "3.3.0") { 393s + y2 <- colRanks_R(x, ties.method = ties) 393s + stopifnot(identical(y1, y2)) 393s + } 393s + 393s + y3 <- matrixStats::rowRanks(tx, ties.method = ties) 393s + stopifnot(identical(y1, y3)) 393s + } 393s + } # for (kk ...) 393s Random test #1 393s ties.method = max 393s ties.method = min 393s ties.method = average 393s ties.method = first 393s ties.method = last 393s ties.method = dense 393s Random test #2 393s ties.method = max 393s ties.method = min 393s ties.method = average 393s ties.method = first 393s ties.method = last 393s ties.method = dense 393s Random test #3 393s ties.method = max 393s ties.method = min 393s ties.method = average 393s ties.method = first 393s ties.method = last 393s ties.method = dense 393s Random test #4 393s ties.method = max 393s ties.method = min 393s ties.method = average 393s ties.method = first 393s ties.method = last 393s ties.method = dense 393s > 393s > # Note, below we know ties.method %in% c("min", "max", "average") is correct 393s > 393s > cat("Consistency checks for random:\n") 393s Consistency checks for random: 393s > tolerance <- 0.1 393s > nsamples <- 10000 393s > for (kk in 1:4) { 393s + cat("Random test #", kk, "\n", sep = "") 393s + x <- xs[[kk]] 393s + tx <- t(x) 393s + 393s + for (ties in c("random")) { 393s + cat(sprintf("ties.method = %s\n", ties)) 393s + 393s + ## rowRanks(): 393s + y0 <- rowRanks_R(x, ties.method = ties) 393s + y1 <- matrixStats::rowRanks(x, ties.method = ties) 393s + 393s + ## Assert symmetric rank differences 393s + d <- y1 - y0 393s + stopifnot(all(rowSums(d) == 0, na.rm = TRUE)) 393s + 393s + ## Assert within [min, max] 393s + y2min <- matrixStats::rowRanks(x, ties.method = "min") 393s + y2max <- matrixStats::rowRanks(x, ties.method = "max") 393s + stopifnot(all(y1 >= y2min, na.rm = TRUE) && all(y1 <= y2max, na.rm = TRUE)) 393s + ## Assert near average 393s + y1list <- replicate(nsamples, matrixStats::rowRanks(x, ties.method = ties), simplify = FALSE) 393s + y1mean <- Reduce(`+`, y1list) / nsamples 393s + y2avg <- matrixStats::rowRanks(x, ties.method = "average") 393s + stopifnot(all(abs(y1mean - y2avg) < tolerance, na.rm = TRUE)) 393s + 393s + ## colRanks(): 393s + y0 <- colRanks_R(x, ties.method = ties) 393s + y1 <- matrixStats::colRanks(x, ties.method = ties) 393s + 393s + ## Assert symmetric rank differences 393s + d <- y1 - y0 393s + stopifnot(all(rowSums(d) == 0, na.rm = TRUE)) 393s + 393s + ## Assert within [min, max] 393s + y2min <- matrixStats::colRanks(x, ties.method = "min") 393s + y2max <- matrixStats::colRanks(x, ties.method = "max") 393s + stopifnot(all(y1 >= y2min, na.rm = TRUE) && all(y1 <= y2max, na.rm = TRUE)) 393s + y1list <- replicate(nsamples, matrixStats::colRanks(x, ties.method = ties), simplify = FALSE) 393s + y1mean <- Reduce(`+`, y1list) / nsamples 393s + ## Assert near average 393s + y2avg <- matrixStats::colRanks(x, ties.method = "average") 393s + stopifnot(all(abs(y1mean - y2avg) < tolerance, na.rm = TRUE)) 393s + } 393s + } # for (kk ...) 393s Random test #1 393s ties.method = random 397s Random test #2 397s ties.method = random 400s Random test #3 400s ties.method = random 401s Random test #4 401s ties.method = random 403s > 403s > 403s > ## Exception handling 403s > x <- matrix(1:12, nrow = 3L, ncol = 4L) 403s > y <- try(rowRanks(x, ties.method = "unknown"), silent = TRUE) 403s > stopifnot(inherits(y, "try-error")) 403s > 403s > y <- try(colRanks(x, ties.method = "unknown"), silent = TRUE) 403s > stopifnot(inherits(y, "try-error")) 403s > 403s > dimnames <- list(letters[1:3], LETTERS[1:4]) 403s > for (mode in c("integer", "double")){ 403s + storage.mode(x) <- mode 403s + # Test with and without dimnames on x 403s + for (setDimnames in c(TRUE, FALSE)) { 403s + if (setDimnames) dimnames(x) <- dimnames 403s + else dimnames(x) <- NULL 403s + # Check names attribute 403s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 403s + for (ties in c("max", "min", "average", "first", "last", "dense", "random")) { 403s + cat(sprintf("ties.method = %s\n", ties)) 403s + # rowRanks(): 403s + y1 <- matrixStats::rowRanks(x, ties.method = ties, useNames = useNames) 403s + if (ties != "last" || getRversion() >= "3.3.0") { 403s + y2 <- rowRanks_R(x, ties.method = ties, useNames = useNames) 403s + stopifnot(identical(y1, y2)) 403s + } 403s + 403s + y3 <- matrixStats::colRanks(t(x), ties.method = ties, useNames = useNames) 403s + stopifnot(identical(y1, y3)) 403s + 403s + # colRanks(): 403s + y1 <- matrixStats::colRanks(x, ties.method = ties, useNames = useNames) 403s + if (ties != "last" || getRversion() >= "3.3.0") { 403s + y2 <- colRanks_R(x, ties.method = ties, useNames = useNames) 403s + stopifnot(identical(y1, y2)) 403s + } 403s + 403s + y3 <- matrixStats::rowRanks(t(x), ties.method = ties, useNames = useNames) 403s + stopifnot(identical(y1, y3)) 403s + 403s + # Check preserveShape 403s + y1 <- matrixStats::colRanks(x, ties.method = ties, preserveShape = TRUE, useNames = useNames) 403s + if (ties != "last" || getRversion() >= "3.3.0") { 403s + y2 <- colRanks_R(x, ties.method = ties, preserveShape = TRUE, useNames = useNames) 403s + stopifnot(identical(y1, y2)) 403s + } 403s + } 403s + } 403s + } 403s + } 403s ties.method = max 403s ties.method = min 403s ties.method = average 403s ties.method = first 403s ties.method = last 403s ties.method = dense 403s ties.method = random 403s ties.method = max 403s ties.method = min 403s ties.method = average 403s ties.method = first 403s ties.method = last 403s ties.method = dense 403s ties.method = random 403s ties.method = max 403s ties.method = min 403s ties.method = average 403s ties.method = first 403s ties.method = last 403s ties.method = dense 403s ties.method = random 403s ties.method = max 403s ties.method = min 403s ties.method = average 403s ties.method = first 403s ties.method = last 403s ties.method = dense 403s ties.method = random 403s ties.method = max 403s ties.method = min 403s ties.method = average 403s ties.method = first 403s ties.method = last 403s ties.method = dense 403s ties.method = random 403s ties.method = max 403s ties.method = min 403s ties.method = average 403s ties.method = first 403s ties.method = last 403s ties.method = dense 403s ties.method = random 403s ties.method = max 403s ties.method = min 403s ties.method = average 403s ties.method = first 403s ties.method = last 403s ties.method = dense 403s ties.method = random 403s ties.method = max 403s ties.method = min 403s ties.method = average 403s ties.method = first 403s ties.method = last 403s ties.method = dense 403s ties.method = random 403s > 403s 403s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 403s Copyright (C) 2024 The R Foundation for Statistical Computing 403s Platform: s390x-ibm-linux-gnu (64-bit) 403s 403s R is free software and comes with ABSOLUTELY NO WARRANTY. 403s You are welcome to redistribute it under certain conditions. 403s Type 'license()' or 'licence()' for distribution details. 403s 403s R is a collaborative project with many contributors. 403s Type 'contributors()' for more information and 403s 'citation()' on how to cite R or R packages in publications. 403s 403s Type 'demo()' for some demos, 'help()' for on-line help, or 403s 'help.start()' for an HTML browser interface to help. 403s Type 'q()' to quit R. 403s 403s > library("matrixStats") 403s > 403s > rowRanks_R <- function(x, ties.method = "average", ..., useNames = NA) { 403s + ans <- t(apply(x, MARGIN = 1L, FUN = rank, na.last = "keep", 403s + ties.method = ties.method)) 403s + 403s + # Preserve dimnames attribute? 403s + dim(ans) <- dim(x) 403s + dimnames(ans) <- if (isTRUE(useNames)) dimnames(x) else NULL 403s + 403s + ans 403s + } 403s > 403s > colRanks_R <- function(x, ties.method, preserveShape = FALSE, ..., useNames = NA) { 403s + ans <- t(apply(x, MARGIN = 2L, FUN = rank, na.last = "keep", ties.method = ties.method)) 403s + 403s + # Preserve dimnames attribute? 403s + tx <- t(x) 403s + dim(ans) <- dim(tx) 403s + dimnames(ans) <- if (isTRUE(useNames)) dimnames(tx) else NULL 403s + 403s + if (preserveShape) ans <- t(ans) 403s + ans 403s + } 403s > 403s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 403s > # Subsetted tests 403s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 403s > source("utils/validateIndicesFramework.R") 403s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 403s > storage.mode(x) <- "integer" 403s > 403s > # To check dimnames attribute 403s > dimnames <- list(letters[1:6], LETTERS[1:6]) 403s > 403s > colRanks_R_t <- function(x, rows, cols, ..., useNames = NA) { 403s + t(colRanks(t(x), rows = cols, cols = rows, preserveShape = TRUE, ..., useNames = useNames)) 403s + } 403s > 403s > # Test with and without dimnames on x 403s > for (setDimnames in c(TRUE, FALSE)) { 403s + if (setDimnames) dimnames(x) <- dimnames 403s + else dimnames(x) <- NULL 403s + 403s + count <- 0L 403s + for (rows in index_cases) { 403s + for (cols in index_cases) { 403s + count <- count + 1L 403s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 403s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 403s + useNames <- useNames[count %% length(useNames) + 1] 403s + 403s + validateIndicesTestMatrix(x, rows, cols, 403s + ftest = rowRanks, fsure = rowRanks_R, 403s + ties.method = "average", useNames = useNames) 403s + 403s + validateIndicesTestMatrix(x, rows, cols, 403s + ftest = colRanks_R_t, fsure = rowRanks_R, 403s + ties.method = "average", useNames = useNames) 403s + 403s + for (perserveShape in c(TRUE, FALSE)) { 403s + validateIndicesTestMatrix(x, rows, cols, 403s + ftest = colRanks, fsure = colRanks_R, 403s + ties.method = "average", perserveShape = perserveShape, 403s + useNames = useNames) 403s + } 403s + } 403s + } 403s + } 404s > 404s 404s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 404s Copyright (C) 2024 The R Foundation for Statistical Computing 404s Platform: s390x-ibm-linux-gnu (64-bit) 404s 404s R is free software and comes with ABSOLUTELY NO WARRANTY. 404s You are welcome to redistribute it under certain conditions. 404s Type 'license()' or 'licence()' for distribution details. 404s 404s R is a collaborative project with many contributors. 404s Type 'contributors()' for more information and 404s 'citation()' on how to cite R or R packages in publications. 404s 404s Type 'demo()' for some demos, 'help()' for on-line help, or 404s 'help.start()' for an HTML browser interface to help. 404s Type 'q()' to quit R. 404s 404s > library("matrixStats") 404s > 404s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 404s > options(matrixStats.center.onUse = "ignore") 404s > 404s > ## Create isFALSE() if running on an old version of R 404s > if (!exists("isFALSE", mode="function")) { 404s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 404s + } 404s > 404s > rowSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 404s + suppressWarnings({ 404s + sigma <- apply(x, MARGIN = 1L, FUN = sd, na.rm = na.rm) 404s + }) 404s + stopifnot(!any(is.infinite(sigma))) 404s + 404s + # Keep naming support consistency same as rowSds() 404s + if (is.null(center) || ncol(x) <= 1L) { 404s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 404s + } 404s + else if (isFALSE(useNames)) names(sigma) <- NULL 404s + sigma 404s + } 404s > 404s > colSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 404s + suppressWarnings({ 404s + sigma <- apply(x, MARGIN = 2L, FUN = sd, na.rm = na.rm) 404s + }) 404s + stopifnot(!any(is.infinite(sigma))) 404s + 404s + # Keep naming support consistency same as colSds() 404s + if (is.null(center) || nrow(x) <= 1L) { 404s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 404s + } 404s + if (isFALSE(useNames)) names(sigma) <- NULL 404s + sigma 404s + } 404s > 404s > 404s > rowSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 404s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 404s + sigma <- rowSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 404s + stopifnot(!any(is.infinite(sigma))) 404s + sigma 404s + } 404s > 404s > colSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 404s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 404s + sigma <- colSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 404s + stopifnot(!any(is.infinite(sigma))) 404s + sigma 404s + } 404s > 404s > 404s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 404s > # With and without some NAs 404s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 404s > for (mode in c("integer", "double")) { 404s + for (add_na in c(FALSE, TRUE)) { 404s + cat("add_na = ", add_na, "\n", sep = "") 404s + 404s + x <- matrix(1:50 + 0.1, nrow = 10L, ncol = 5L) 404s + if (add_na) { 404s + x[3:7, c(2, 4)] <- NA_real_ 404s + } 404s + cat("mode: ", mode, "\n", sep = "") 404s + storage.mode(x) <- mode 404s + str(x) 404s + 404s + # To check names attribute 404s + dimnames <- list(letters[1:10], LETTERS[1:5]) 404s + 404s + # Test with and without dimnames on x 404s + for (setDimnames in c(TRUE, FALSE)) { 404s + if (setDimnames) dimnames(x) <- dimnames 404s + else dimnames(x) <- NULL 404s + # Row/column ranges 404s + for (na.rm in c(FALSE, TRUE)) { 404s + # Check names attribute 404s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 404s + r0 <- rowSds_R(x, na.rm = na.rm, useNames = useNames) 404s + r1 <- rowSds(x, na.rm = na.rm, useNames = useNames) 404s + r1b <- rowSds_center(x, na.rm = na.rm, useNames = useNames) 404s + r2 <- colSds(t(x), na.rm = na.rm, useNames = useNames) 404s + r2b <- colSds_center(t(x), na.rm = na.rm, useNames = useNames) 404s + stopifnot(all.equal(r1, r2)) 404s + stopifnot(all.equal(r1, r0)) 404s + stopifnot(all.equal(r2, r0)) 404s + stopifnot(all.equal(r1b, r2b)) 404s + stopifnot( 404s + !any(is.infinite(r1)), 404s + !any(is.infinite(r2)), 404s + !any(is.infinite(r1b)), 404s + !any(is.infinite(r2b)) 404s + ) 404s + } 404s + } 404s + } 404s + } # for (add_na ...) 404s + } 404s add_na = FALSE 404s mode: integer 404s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 404s add_na = TRUE 404s mode: integer 404s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 404s add_na = FALSE 404s mode: double 404s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 404s add_na = TRUE 404s mode: double 404s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 404s > 404s > 404s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 404s > # All NAs 404s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 404s > for (mode in c("integer", "double")) { 404s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 404s + cat("mode: ", mode, "\n", sep = "") 404s + storage.mode(x) <- mode 404s + str(x) 404s + 404s + # Test with and without dimnames on x 404s + for (setDimnames in c(TRUE, FALSE)) { 404s + if (setDimnames) dimnames(x) <- dimnames 404s + else dimnames(x) <- NULL 404s + # Row/column ranges 404s + for (na.rm in c(FALSE, TRUE)) { 404s + # Check names attribute 404s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 404s + r0 <- rowSds_R(x, na.rm = na.rm, useNames = useNames) 404s + r1 <- rowSds(x, na.rm = na.rm, useNames = useNames) 404s + r1b <- rowSds_center(x, na.rm = na.rm, useNames = useNames) 404s + r2 <- colSds(t(x), na.rm = na.rm, useNames = useNames) 404s + r2b <- colSds_center(t(x), na.rm = na.rm, useNames = useNames) 404s + stopifnot(all.equal(r1, r2)) 404s + stopifnot(all.equal(r1, r0)) 404s + stopifnot(all.equal(r2, r0)) 404s + stopifnot(all.equal(r1b, r2b)) 404s + stopifnot( 404s + !any(is.infinite(r1)), 404s + !any(is.infinite(r2)), 404s + !any(is.infinite(r1b)), 404s + !any(is.infinite(r2b)) 404s + ) 404s + } 404s + } 404s + } 404s + } 404s mode: integer 404s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 404s mode: double 404s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 404s > 404s > 404s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 404s > # A 1x1 matrix 404s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 404s > x <- matrix(0, nrow = 1L, ncol = 1L) 404s > dimnames <- list("a", "A") 404s > for (na.rm in c(FALSE, TRUE)) { 404s + cat("na.rm = ", na.rm, "\n", sep = "") 404s + 404s + # Test with and without dimnames on x 404s + for (setDimnames in c(TRUE, FALSE)) { 404s + if (setDimnames) dimnames(x) <- dimnames 404s + else dimnames(x) <- NULL 404s + # Row/column ranges 404s + for (na.rm in c(FALSE, TRUE)) { 404s + # Check names attribute 404s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 404s + r0 <- rowSds_R(x, na.rm = na.rm, useNames = useNames) 404s + r1 <- rowSds(x, na.rm = na.rm, useNames = useNames) 404s + r1b <- rowSds_center(x, na.rm = na.rm, useNames = useNames) 404s + r2 <- colSds(t(x), na.rm = na.rm, useNames = useNames) 404s + r2b <- colSds_center(t(x), na.rm = na.rm, useNames = useNames) 404s + stopifnot(all.equal(r1, r2)) 404s + stopifnot(all.equal(r1, r0)) 404s + stopifnot(all.equal(r2, r0)) 404s + stopifnot(all.equal(r1b, r2b)) 404s + stopifnot( 404s + !any(is.infinite(r1)), 404s + !any(is.infinite(r2)), 404s + !any(is.infinite(r1b)), 404s + !any(is.infinite(r2b)) 404s + ) 404s + } 404s + } 404s + } 404s + } 404s na.rm = FALSE 404s na.rm = TRUE 404s > 404s 404s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 404s Copyright (C) 2024 The R Foundation for Statistical Computing 404s Platform: s390x-ibm-linux-gnu (64-bit) 404s 404s R is free software and comes with ABSOLUTELY NO WARRANTY. 404s You are welcome to redistribute it under certain conditions. 404s Type 'license()' or 'licence()' for distribution details. 404s 404s R is a collaborative project with many contributors. 404s Type 'contributors()' for more information and 404s 'citation()' on how to cite R or R packages in publications. 404s 404s Type 'demo()' for some demos, 'help()' for on-line help, or 404s 'help.start()' for an HTML browser interface to help. 404s Type 'q()' to quit R. 404s 405s > library("matrixStats") 405s > 405s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 405s > options(matrixStats.center.onUse = "ignore") 405s > 405s > ## Create isFALSE() if running on an old version of R 405s > if (!exists("isFALSE", mode="function")) { 405s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 405s + } 405s > 405s > rowSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 405s + suppressWarnings({ 405s + sigma <- apply(x, MARGIN = 1L, FUN = sd, na.rm = na.rm) 405s + }) 405s + stopifnot(!any(is.infinite(sigma))) 405s + 405s + # Keep naming support consistency same as rowSds() 405s + if (is.null(center) || ncol(x) <= 1L) { 405s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 405s + } 405s + else if (isFALSE(useNames)) names(sigma) <- NULL 405s + sigma 405s + } 405s > 405s > colSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 405s + suppressWarnings({ 405s + sigma <- apply(x, MARGIN = 2L, FUN = sd, na.rm = na.rm) 405s + }) 405s + stopifnot(!any(is.infinite(sigma))) 405s + 405s + # Keep naming support consistency same as colSds() 405s + if (is.null(center) || nrow(x) <= 1L) { 405s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 405s + } 405s + else if (isFALSE(useNames)) names(sigma) <- NULL 405s + sigma 405s + } 405s > 405s > 405s > rowSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 405s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 405s + sigma <- rowSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 405s + stopifnot(!any(is.infinite(sigma))) 405s + sigma 405s + } 405s > 405s > colSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 405s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 405s + sigma <- colSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 405s + stopifnot(!any(is.infinite(sigma))) 405s + sigma 405s + } 405s > 405s > 405s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 405s > # Subsetted tests 405s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 405s > source("utils/validateIndicesFramework.R") 405s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 405s > storage.mode(x) <- "integer" 405s > 405s > # To check names attribute 405s > dimnames <- list(letters[1:6], LETTERS[1:6]) 405s > 405s > # Test with and without dimnames on x 405s > for (setDimnames in c(TRUE, FALSE)) { 405s + if (setDimnames) dimnames(x) <- dimnames 405s + else dimnames(x) <- NULL 405s + 405s + count <- 0L 405s + for (rows in index_cases) { 405s + for (cols in index_cases) { 405s + count <- count + 1L 405s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 405s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 405s + useNames <- useNames[count %% length(useNames) + 1] 405s + 405s + validateIndicesTestMatrix(x, rows, cols, 405s + ftest = rowSds, fsure = rowSds_R, 405s + na.rm = na.rm, useNames = useNames) 405s + validateIndicesTestMatrix(x, rows, cols, 405s + ftest = rowSds_center, fsure = rowSds_R, 405s + na.rm = na.rm, center = TRUE, useNames = useNames) 405s + 405s + validateIndicesTestMatrix(x, rows, cols, 405s + fcoltest = colSds, fsure = rowSds_R, 405s + na.rm = na.rm, useNames = useNames) 405s + validateIndicesTestMatrix(x, rows, cols, 405s + fcoltest = colSds_center, fsure = rowSds_R, 405s + na.rm = na.rm, center = TRUE, useNames = useNames) 405s + } 405s + } 405s + } 405s > 405s 405s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 405s Copyright (C) 2024 The R Foundation for Statistical Computing 405s Platform: s390x-ibm-linux-gnu (64-bit) 405s 405s R is free software and comes with ABSOLUTELY NO WARRANTY. 405s You are welcome to redistribute it under certain conditions. 405s Type 'license()' or 'licence()' for distribution details. 405s 405s R is a collaborative project with many contributors. 405s Type 'contributors()' for more information and 405s 'citation()' on how to cite R or R packages in publications. 405s 405s Type 'demo()' for some demos, 'help()' for on-line help, or 405s 'help.start()' for an HTML browser interface to help. 405s Type 'q()' to quit R. 405s 406s > library("matrixStats") 406s > 406s > rowSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 406s + ## FIXME: sum() may overflow for integers, whereas 406s + ## base::rowSums() doesn't. What should rowSums2() do? 406s + ## apply(x, MARGIN = 1L, FUN = sum, na.rm = na.rm) 406s + res <- rowSums(x, na.rm = na.rm) 406s + if (is.na(useNames) || !useNames) names(res) <- NULL 406s + res 406s + } 406s > 406s > colSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 406s + ## FIXME: sum() may overflow for integers, whereas 406s + ## base::colSums() doesn't. What should colSums2() do? 406s + ## apply(x, MARGIN = 2L, FUN = sum, na.rm = na.rm) 406s + res <- colSums(x, na.rm = na.rm) 406s + if (is.na(useNames) || !useNames) names(res) <- NULL 406s + res 406s + } 406s > 406s > for (mode in c("integer", "logical", "double")) { 406s + x <- matrix(-4:4, nrow = 3, ncol = 3) 406s + storage.mode(x) <- mode 406s + if (mode == "double") x <- x + 0.1 406s + 406s + # To check names attribute 406s + dimnames <- list(letters[1:3], LETTERS[1:3]) 406s + 406s + # Test with and without dimnames on x 406s + for (setDimnames in c(TRUE, FALSE)) { 406s + if (setDimnames) dimnames(x) <- dimnames 406s + else dimnames(x) <- NULL 406s + # Check names attribute 406s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 406s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + 406s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + } 406s + } 406s + } 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Special case: Single-element matrix 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > cat("Special case: Single-element matrix:\n") 406s Special case: Single-element matrix: 406s > for (mode in c("integer", "logical", "double")) { 406s + x <- matrix(1, nrow = 1, ncol = 1) 406s + storage.mode(x) <- mode 406s + 406s + # To check names attribute 406s + dimnames <- list("a", "A") 406s + 406s + # Test with and without dimnames on x 406s + for (setDimnames in c(TRUE, FALSE)) { 406s + if (setDimnames) dimnames(x) <- dimnames 406s + else dimnames(x) <- NULL 406s + # Check names attribute 406s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 406s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + 406s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + } 406s + } 406s + } 406s > 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Special case: Empty matrix 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > cat("Special case: Empty matrix:\n") 406s Special case: Empty matrix: 406s > for (mode in c("integer", "logical", "double")) { 406s + x <- matrix(integer(0), nrow = 0, ncol = 0) 406s + storage.mode(x) <- mode 406s + 406s + y0 <- rowSums2_R(x, na.rm = FALSE) 406s + y1 <- rowSums2(x, na.rm = FALSE) 406s + stopifnot(all.equal(y1, y0)) 406s + 406s + y0 <- colSums2_R(x, na.rm = FALSE) 406s + y1 <- colSums2(x, na.rm = FALSE) 406s + stopifnot(all.equal(y1, y0)) 406s + } 406s > 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Special case: All NAs 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > cat("Special case: All NAs:\n") 406s Special case: All NAs: 406s > for (mode in c("integer", "logical", "double")) { 406s + x <- matrix(NA_integer_, nrow = 3, ncol = 3) 406s + storage.mode(x) <- mode 406s + 406s + # To check names attribute 406s + dimnames <- list(letters[1:3], LETTERS[1:3]) 406s + 406s + # Test with and without dimnames on x 406s + for (setDimnames in c(TRUE, FALSE)) { 406s + if (setDimnames) dimnames(x) <- dimnames 406s + else dimnames(x) <- NULL 406s + # Check names attribute 406s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 406s + y0 <- rowSums2_R(x, na.rm = TRUE, useNames = useNames) 406s + y1 <- rowSums2(x, na.rm = TRUE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + 406s + y0 <- colSums2_R(x, na.rm = TRUE, useNames = useNames) 406s + y1 <- colSums2(x, na.rm = TRUE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + } 406s + } 406s + } 406s > 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Special case: All NaNs 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > cat("Special case: All NaNs:\n") 406s Special case: All NaNs: 406s > x <- matrix(NA_real_, nrow = 3, ncol = 3) 406s > 406s > # Test with and without dimnames on x 406s > for (setDimnames in c(TRUE, FALSE)) { 406s + if (setDimnames) dimnames(x) <- dimnames 406s + else dimnames(x) <- NULL 406s + # Check names attribute 406s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 406s + y0 <- rowSums2_R(x, na.rm = TRUE, useNames = useNames) 406s + y1 <- rowSums2(x, na.rm = TRUE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + 406s + y0 <- colSums2_R(x, na.rm = TRUE, useNames = useNames) 406s + y1 <- colSums2(x, na.rm = TRUE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + } 406s + } 406s > 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Special case: All Infs 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > cat("Special case: All Infs:\n") 406s Special case: All Infs: 406s > x <- matrix(Inf, nrow = 3, ncol = 3) 406s > 406s > # Test with and without dimnames on x 406s > for (setDimnames in c(TRUE, FALSE)) { 406s + if (setDimnames) dimnames(x) <- dimnames 406s + else dimnames(x) <- NULL 406s + # Check names attribute 406s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 406s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + 406s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + } 406s + } 406s > 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Special case: All -Infs 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > cat("Special case: All -Infs:\n") 406s Special case: All -Infs: 406s > x <- matrix(-Inf, nrow = 3, ncol = 3) 406s > 406s > # Test with and without dimnames on x 406s > for (setDimnames in c(TRUE, FALSE)) { 406s + if (setDimnames) dimnames(x) <- dimnames 406s + else dimnames(x) <- NULL 406s + # Check names attribute 406s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 406s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + 406s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + } 406s + } 406s > 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Special case: Infs and -Infs 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > cat("Special case: Infs and -Infs:\n") 406s Special case: Infs and -Infs: 406s > x <- matrix(c(-Inf, +Inf), nrow = 4, ncol = 4) 406s > 406s > # To check names attribute 406s > dimnames <- list(letters[1:4], LETTERS[1:4]) 406s > 406s > # Test with and without dimnames on x 406s > for (setDimnames in c(TRUE, FALSE)) { 406s + if (setDimnames) dimnames(x) <- dimnames 406s + else dimnames(x) <- NULL 406s + # Check names attribute 406s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 406s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + 406s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + } 406s + } 406s > 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Special case: NaNs and NAs 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > cat("Special case: Infs and -Infs:\n") 406s Special case: Infs and -Infs: 406s > x <- matrix(c(NaN, NA_real_), nrow = 4, ncol = 4) 406s > 406s > y0 <- rowSums(x, na.rm = FALSE) 406s > str(y0) 406s num [1:4] NaN NA NaN NA 406s > stopifnot(all(is.na(y0)), length(unique(y0)) >= 1L) 406s > y1 <- rowSums2(x, na.rm = FALSE) 406s > str(y0) 406s num [1:4] NaN NA NaN NA 406s > stopifnot(all(is.na(y1)), length(unique(y1)) >= 1L) 406s > stopifnot(all.equal(y1, y0)) 406s > 406s > y0 <- colSums(x, na.rm = FALSE) 406s > stopifnot(all(is.na(y0)), length(unique(y0)) == 1L) 406s > y1 <- colSums2(x, na.rm = FALSE) 406s > stopifnot(all(is.na(y1)), length(unique(y1)) == 1L) 406s > ## NOTE, due to compiler optimization, it is not guaranteed that NA is 406s > ## returned here (as one would expect). NaN might very well be returned, 406s > ## when both NA and NaN are involved. This is an accepted feature in R, 406s > ## which is documented in help("is.nan"). See also 406s > ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 406s > ## Thus, we cannot guarantee that y1 is identical to y0. 406s > 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Special case: Integer overflow with ties 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > cat("Special case: Integer overflow with ties:\n") 406s Special case: Integer overflow with ties: 406s > x <- matrix(.Machine$integer.max, nrow = 4, ncol = 4) 406s > 406s > # Test with and without dimnames on x 406s > for (setDimnames in c(TRUE, FALSE)) { 406s + if (setDimnames) dimnames(x) <- dimnames 406s + else dimnames(x) <- NULL 406s + # Check names attribute 406s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 406s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + 406s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 406s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 406s + stopifnot(all.equal(y1, y0)) 406s + } 406s + } 406s > 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Consistency checks 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > set.seed(1) 406s > 406s > cat("Consistency checks:\n") 406s Consistency checks: 406s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 4L else 20L 406s > for (kk in seq_len(n_sims)) { 406s + cat("Random test #", kk, "\n", sep = "") 406s + 406s + # Simulate data in a matrix of any shape 406s + dim <- sample(50:200, size = 2) 406s + n <- prod(dim) 406s + x <- rnorm(n, sd = 100) 406s + dim(x) <- dim 406s + 406s + # Add NAs? 406s + if ((kk %% 4) %in% c(3, 0)) { 406s + cat("Adding NAs\n") 406s + nna <- sample(n, size = 1) 406s + na_values <- c(NA_real_, NaN) 406s + t <- sample(na_values, size = nna, replace = TRUE) 406s + x[sample(length(x), size = nna)] <- t 406s + } 406s + 406s + # Mode? 406s + modes <- "double" 406s + if ((kk %% 4) %in% c(2, 0)) { 406s + modes <- c("integer", "logical") 406s + } 406s + 406s + for (mode in modes) { 406s + if (mode != "double") { 406s + cat(sprintf("Coercing from %s to %s\n", storage.mode(x), mode)) 406s + storage.mode(x) <- mode 406s + } 406s + 406s + na.rm <- sample(c(TRUE, FALSE), size = 1) 406s + 406s + # rowSums2(): 406s + y0 <- rowSums2_R(x, na.rm = na.rm) 406s + y1 <- rowSums2(x, na.rm = na.rm) 406s + stopifnot(all.equal(y1, y0)) 406s + y2 <- colSums2(t(x), na.rm = na.rm) 406s + stopifnot(all.equal(y2, y0)) 406s + 406s + # colSums2(): 406s + y0 <- colSums2_R(x, na.rm = na.rm) 406s + y1 <- colSums2(x, na.rm = na.rm) 406s + stopifnot(all.equal(y1, y0)) 406s + y2 <- rowSums2(t(x), na.rm = na.rm) 406s + stopifnot(all.equal(y2, y0)) 406s + } 406s + } # for (kk ...) 406s Random test #1 406s Random test #2 406s Coercing from double to integer 406s Coercing from integer to logical 406s Random test #3 406s Adding NAs 406s Random test #4 406s Adding NAs 406s Coercing from double to integer 406s Coercing from integer to logical 406s Random test #5 406s Random test #6 406s Coercing from double to integer 406s Coercing from integer to logical 406s Random test #7 406s Adding NAs 406s Random test #8 406s Adding NAs 406s Coercing from double to integer 406s Coercing from integer to logical 406s Random test #9 406s Random test #10 406s Coercing from double to integer 406s Coercing from integer to logical 406s Random test #11 406s Adding NAs 406s Random test #12 406s Adding NAs 406s Coercing from double to integer 406s Coercing from integer to logical 406s Random test #13 406s Random test #14 406s Coercing from double to integer 406s Coercing from integer to logical 406s Random test #15 406s Adding NAs 406s Random test #16 406s Adding NAs 406s Coercing from double to integer 406s Coercing from integer to logical 406s Random test #17 406s Random test #18 406s Coercing from double to integer 406s Coercing from integer to logical 406s Random test #19 406s Adding NAs 406s Random test #20 406s Adding NAs 406s Coercing from double to integer 406s Coercing from integer to logical 406s > 406s 406s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 406s Copyright (C) 2024 The R Foundation for Statistical Computing 406s Platform: s390x-ibm-linux-gnu (64-bit) 406s 406s R is free software and comes with ABSOLUTELY NO WARRANTY. 406s You are welcome to redistribute it under certain conditions. 406s Type 'license()' or 'licence()' for distribution details. 406s 406s R is a collaborative project with many contributors. 406s Type 'contributors()' for more information and 406s 'citation()' on how to cite R or R packages in publications. 406s 406s Type 'demo()' for some demos, 'help()' for on-line help, or 406s 'help.start()' for an HTML browser interface to help. 406s Type 'q()' to quit R. 406s 406s > library("matrixStats") 406s > 406s > rowSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 406s + ## FIXME: sum() may overflow for integers, whereas 406s + ## base::rowSums() doesn't. What should rowSums2() do? 406s + ## apply(x, MARGIN = 1L, FUN = sum, na.rm = na.rm) 406s + res <- rowSums(x, na.rm = na.rm) 406s + if (is.na(useNames) || !useNames) names(res) <- NULL 406s + res 406s + } 406s > 406s > colSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 406s + ## FIXME: sum() may overflow for integers, whereas 406s + ## base::colSums() doesn't. What should colSums2() do? 406s + ## apply(x, MARGIN = 2L, FUN = sum, na.rm = na.rm) 406s + res <- colSums(x, na.rm = na.rm) 406s + if (is.na(useNames) || !useNames) names(res) <- NULL 406s + res 406s + } 406s > 406s > 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > # Subsetted tests 406s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 406s > source("utils/validateIndicesFramework.R") 406s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 406s > storage.mode(x) <- "integer" 406s > 406s > # To check names attribute 406s > dimnames <- list(letters[1:6], LETTERS[1:6]) 406s > 406s > # Test with and without dimnames on x 406s > for (setDimnames in c(TRUE, FALSE)) { 406s + if (setDimnames) dimnames(x) <- dimnames 406s + else dimnames(x) <- NULL 406s + for (rows in index_cases) { 406s + for (cols in index_cases) { 406s + for (na.rm in c(TRUE, FALSE)) { 406s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 406s + validateIndicesTestMatrix(x, rows, cols, 406s + ftest = rowSums2, fsure = rowSums2_R, 406s + na.rm = na.rm, useNames = useNames) 406s + validateIndicesTestMatrix(x, rows, cols, 406s + fcoltest = colSums2, fsure = rowSums2_R, 406s + na.rm = na.rm, useNames = useNames) 406s + } 406s + } 406s + } 406s + } 406s + } 407s > 407s 407s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 407s Copyright (C) 2024 The R Foundation for Statistical Computing 407s Platform: s390x-ibm-linux-gnu (64-bit) 407s 407s R is free software and comes with ABSOLUTELY NO WARRANTY. 407s You are welcome to redistribute it under certain conditions. 407s Type 'license()' or 'licence()' for distribution details. 407s 407s R is a collaborative project with many contributors. 407s Type 'contributors()' for more information and 407s 'citation()' on how to cite R or R packages in publications. 407s 407s Type 'demo()' for some demos, 'help()' for on-line help, or 407s 'help.start()' for an HTML browser interface to help. 407s Type 'q()' to quit R. 407s 407s > library("matrixStats") 407s > 407s > nrow <- 6L 407s > ncol <- 5L 407s > data <- matrix(0:4, nrow = nrow, ncol = ncol) 407s > 407s > # To check names attribute 407s > dimnames <- list(letters[1:6], LETTERS[1:5]) 407s > 407s > modes <- c("integer", "logical", "raw") 407s > for (mode in modes) { 407s + cat(sprintf("Mode: %s...\n", mode)) 407s + 407s + x <- data 407s + if (mode == "logical") x <- x - 2L 407s + if (mode != "raw") x[c(2,5,7)] <- NA_integer_ 407s + storage.mode(x) <- mode 407s + print(x) 407s + 407s + unique_values <- unique(as.vector(x)) 407s + nbr_of_unique_values <- length(unique_values) 407s + 407s + y <- rowTabulates(x) 407s + print(y) 407s + stopifnot( 407s + identical(dim(y), c(nrow, nbr_of_unique_values)), 407s + all(y >= 0) 407s + ) 407s + if (mode != "raw") { 407s + y0 <- t(table(x, row(x), useNA = "always")[, seq_len(nrow(x))]) 407s + stopifnot(all(y == y0)) 407s + } 407s + # Check names attribute 407s + dimnames(x) <- dimnames 407s + y1 <- rowTabulates(x, useNames = FALSE) 407s + stopifnot(all.equal(y1, y)) 407s + if (!matrixStats:::isUseNamesNADefunct()) { 407s + y2 <- rowTabulates(x, useNames = NA) 407s + stopifnot(all.equal(y2, y)) 407s + } 407s + y <- rowTabulates(x, useNames = TRUE) 407s + stopifnot(identical(rownames(y), rownames(x))) 407s + dimnames(x) <- NULL 407s + 407s + y <- colTabulates(x) 407s + print(y) 407s + stopifnot( 407s + identical(dim(y), c(ncol, nbr_of_unique_values)), 407s + all(y >= 0) 407s + ) 407s + if (mode != "raw") { 407s + y0 <- t(table(x, col(x), useNA = "always")[, seq_len(ncol(x))]) 407s + stopifnot(all(y == y0)) 407s + } 407s + # Check names attribute 407s + dimnames(x) <- dimnames 407s + y1 <- colTabulates(x, useNames = FALSE) 407s + stopifnot(all.equal(y1, y)) 407s + if (!matrixStats:::isUseNamesNADefunct()) { 407s + y2 <- colTabulates(x, useNames = NA) 407s + stopifnot(all.equal(y2, y)) 407s + } 407s + y <- colTabulates(x, useNames = TRUE) 407s + stopifnot(identical(rownames(y), colnames(x))) 407s + dimnames(x) <- NULL 407s + 407s + # Count only certain values 407s + if (mode == "integer") { 407s + subset <- c(0:2, NA_integer_) 407s + } else if (mode == "logical") { 407s + subset <- c(TRUE, FALSE, NA) 407s + } else { 407s + subset <- c(0:2) 407s + } 407s + y <- rowTabulates(x, values = subset) 407s + print(y) 407s + stopifnot(identical(dim(y), c(nrow, length(subset)))) 407s + # Check names attribute 407s + dimnames(x) <- dimnames 407s + y1 <- rowTabulates(x, values = subset, useNames = FALSE) 407s + stopifnot(all.equal(y1, y)) 407s + if (!matrixStats:::isUseNamesNADefunct()) { 407s + y2 <- rowTabulates(x, values = subset, useNames = NA) 407s + stopifnot(all.equal(y2, y)) 407s + } 407s + y <- rowTabulates(x, values = subset, useNames = TRUE) 407s + stopifnot(identical(rownames(y), rownames(x))) 407s + dimnames(x) <- NULL 407s + 407s + y <- colTabulates(x, values = subset) 407s + print(y) 407s + stopifnot(identical(dim(y), c(ncol, length(subset)))) 407s + # Check names attribute 407s + dimnames(x) <- dimnames 407s + y1 <- colTabulates(x, values = subset, useNames = FALSE) 407s + stopifnot(all.equal(y1, y)) 407s + if (!matrixStats:::isUseNamesNADefunct()) { 407s + y2 <- colTabulates(x, values = subset, useNames = NA) 407s + stopifnot(all.equal(y2, y)) 407s + } 407s + y <- colTabulates(x, values = subset, useNames = TRUE) 407s + stopifnot(identical(rownames(y), colnames(x))) 407s + dimnames(x) <- NULL 407s + 407s + # Raw 407s + if (mode %in% c("integer", "raw")) { 407s + subset <- c(0:2) 407s + 407s + y <- rowTabulates(x, values = as.raw(subset)) 407s + print(y) 407s + stopifnot(identical(dim(y), c(nrow, length(subset)))) 407s + # Check names attribute 407s + dimnames(x) <- dimnames 407s + y1 <- rowTabulates(x, values = as.raw(subset), useNames = FALSE) 407s + stopifnot(all.equal(y1, y)) 407s + if (!matrixStats:::isUseNamesNADefunct()) { 407s + y2 <- rowTabulates(x, values = as.raw(subset), useNames = NA) 407s + stopifnot(all.equal(y2, y)) 407s + } 407s + y3 <- rowTabulates(x, values = as.raw(subset), useNames = TRUE) 407s + stopifnot(identical(rownames(y3), rownames(x))) 407s + dimnames(x) <- NULL 407s + 407s + y2 <- colTabulates(t(x), values = as.raw(subset)) 407s + print(y2) 407s + stopifnot( 407s + identical(dim(y2), c(nrow, length(subset))), 407s + identical(y2, y) 407s + ) 407s + # Check names attribute 407s + dimnames(x) <- dimnames 407s + y1 <- colTabulates(t(x), values = as.raw(subset), useNames = FALSE) 407s + stopifnot(all.equal(y1, y)) 407s + if (!matrixStats:::isUseNamesNADefunct()) { 407s + y2 <- colTabulates(t(x), values = as.raw(subset), useNames = NA) 407s + stopifnot(all.equal(y2, y)) 407s + } 407s + y <- colTabulates(t(x), values = as.raw(subset), useNames = TRUE) 407s + stopifnot(identical(rownames(y), colnames(t(x)))) 407s + dimnames(x) <- NULL 407s + } 407s + 407s + cat(sprintf("Mode: %s...done\n", mode)) 407s + } # for (mode ...) 407s Mode: integer... 407s [,1] [,2] [,3] [,4] [,5] 407s [1,] 0 NA 2 3 4 407s [2,] NA 2 3 4 0 407s [3,] 2 3 4 0 1 407s [4,] 3 4 0 1 2 407s [5,] NA 0 1 2 3 407s [6,] 0 1 2 3 4 407s 0 1 2 3 4 407s [1,] 1 0 1 1 1 1 407s [2,] 1 0 1 1 1 1 407s [3,] 1 1 1 1 1 0 407s [4,] 1 1 1 1 1 0 407s [5,] 1 1 1 1 0 1 407s [6,] 1 1 1 1 1 0 407s 0 1 2 3 4 407s [1,] 2 0 1 1 0 2 407s [2,] 1 1 1 1 1 1 407s [3,] 1 1 2 1 1 0 407s [4,] 1 1 1 2 1 0 407s [5,] 1 1 1 1 2 0 407s 0 1 2 407s [1,] 1 0 1 1 407s [2,] 1 0 1 1 407s [3,] 1 1 1 0 407s [4,] 1 1 1 0 407s [5,] 1 1 1 1 407s [6,] 1 1 1 0 407s 0 1 2 407s [1,] 2 0 1 2 407s [2,] 1 1 1 1 407s [3,] 1 1 2 0 407s [4,] 1 1 1 0 407s [5,] 1 1 1 0 407s 0x0 0x1 0x2 407s [1,] 1 0 1 407s [2,] 1 0 1 407s [3,] 1 1 1 407s [4,] 1 1 1 407s [5,] 1 1 1 407s [6,] 1 1 1 407s 0x0 0x1 0x2 407s [1,] 1 0 1 407s [2,] 1 0 1 407s [3,] 1 1 1 407s [4,] 1 1 1 407s [5,] 1 1 1 407s [6,] 1 1 1 407s Mode: integer...done 407s Mode: logical... 407s [,1] [,2] [,3] [,4] [,5] 407s [1,] TRUE NA FALSE TRUE TRUE 407s [2,] NA FALSE TRUE TRUE TRUE 407s [3,] FALSE TRUE TRUE TRUE TRUE 407s [4,] TRUE TRUE TRUE TRUE FALSE 407s [5,] NA TRUE TRUE FALSE TRUE 407s [6,] TRUE TRUE FALSE TRUE TRUE 407s FALSE TRUE 407s [1,] 1 3 1 407s [2,] 1 3 1 407s [3,] 1 4 0 407s [4,] 1 4 0 407s [5,] 1 3 1 407s [6,] 1 4 0 407s FALSE TRUE 407s [1,] 1 3 2 407s [2,] 1 4 1 407s [3,] 2 4 0 407s [4,] 1 5 0 407s [5,] 1 5 0 407s TRUE FALSE 407s [1,] 3 1 1 407s [2,] 3 1 1 407s [3,] 4 1 0 407s [4,] 4 1 0 407s [5,] 3 1 1 407s [6,] 4 1 0 407s TRUE FALSE 407s [1,] 3 1 2 407s [2,] 4 1 1 407s [3,] 4 2 0 407s [4,] 5 1 0 407s [5,] 5 1 0 407s Mode: logical...done 407s Mode: raw... 407s [,1] [,2] [,3] [,4] [,5] 407s [1,] 00 01 02 03 04 407s [2,] 01 02 03 04 00 407s [3,] 02 03 04 00 01 407s [4,] 03 04 00 01 02 407s [5,] 04 00 01 02 03 407s [6,] 00 01 02 03 04 407s 0x0 0x1 0x2 0x3 0x4 407s [1,] 1 1 1 1 1 407s [2,] 1 1 1 1 1 407s [3,] 1 1 1 1 1 407s [4,] 1 1 1 1 1 407s [5,] 1 1 1 1 1 407s [6,] 1 1 1 1 1 407s 0x0 0x1 0x2 0x3 0x4 407s [1,] 2 1 1 1 1 407s [2,] 1 2 1 1 1 407s [3,] 1 1 2 1 1 407s [4,] 1 1 1 2 1 407s [5,] 1 1 1 1 2 407s 0 1 2 407s [1,] 1 1 1 407s [2,] 1 1 1 407s [3,] 1 1 1 407s [4,] 1 1 1 407s [5,] 1 1 1 407s [6,] 1 1 1 407s 0 1 2 407s [1,] 2 1 1 407s [2,] 1 2 1 407s [3,] 1 1 2 407s [4,] 1 1 1 407s [5,] 1 1 1 407s 0x0 0x1 0x2 407s [1,] 1 1 1 407s [2,] 1 1 1 407s [3,] 1 1 1 407s [4,] 1 1 1 407s [5,] 1 1 1 407s [6,] 1 1 1 407s 0x0 0x1 0x2 407s [1,] 1 1 1 407s [2,] 1 1 1 407s [3,] 1 1 1 407s [4,] 1 1 1 407s [5,] 1 1 1 407s [6,] 1 1 1 407s Mode: raw...done 407s > 407s 407s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 407s Copyright (C) 2024 The R Foundation for Statistical Computing 407s Platform: s390x-ibm-linux-gnu (64-bit) 407s 407s R is free software and comes with ABSOLUTELY NO WARRANTY. 407s You are welcome to redistribute it under certain conditions. 407s Type 'license()' or 'licence()' for distribution details. 407s 407s R is a collaborative project with many contributors. 407s Type 'contributors()' for more information and 407s 'citation()' on how to cite R or R packages in publications. 407s 407s Type 'demo()' for some demos, 'help()' for on-line help, or 407s 'help.start()' for an HTML browser interface to help. 407s Type 'q()' to quit R. 407s 407s > library("matrixStats") 407s > 407s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 407s > # Subsetted tests 407s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 407s > source("utils/validateIndicesFramework.R") 407s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 407s > storage.mode(x) <- "integer" 407s > 407s > # To check names attribute 407s > dimnames <- list(letters[1:6], LETTERS[1:6]) 407s > 407s > # Test with and without dimnames on x 407s > for (setDimnames in c(TRUE, FALSE)) { 407s + if (setDimnames) dimnames(x) <- dimnames 407s + else dimnames(x) <- NULL 407s + 407s + count <- 0L 407s + for (rows in index_cases) { 407s + for (cols in index_cases) { 407s + count <- count + 1L 407s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 407s + useNames <- useNames[count %% length(useNames) + 1] 407s + 407s + validateIndicesTestMatrix(x, rows, cols, 407s + ftest = rowTabulates, fsure = rowTabulates, useNames = useNames) 407s + validateIndicesTestMatrix(x, rows, cols, 407s + ftest = rowTabulates, fsure = rowTabulates, 407s + values = 1:3, useNames = useNames) 407s + 407s + validateIndicesTestMatrix(x, rows, cols, 407s + ftest = colTabulates, fsure = colTabulates, useNames = useNames) 407s + validateIndicesTestMatrix(x, rows, cols, 407s + ftest = colTabulates, fsure = colTabulates, 407s + values = 1:3, useNames = useNames) 407s + } 407s + } 407s + } 408s > 409s 409s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 409s Copyright (C) 2024 The R Foundation for Statistical Computing 409s Platform: s390x-ibm-linux-gnu (64-bit) 409s 409s R is free software and comes with ABSOLUTELY NO WARRANTY. 409s You are welcome to redistribute it under certain conditions. 409s Type 'license()' or 'licence()' for distribution details. 409s 409s R is a collaborative project with many contributors. 409s Type 'contributors()' for more information and 409s 'citation()' on how to cite R or R packages in publications. 409s 409s Type 'demo()' for some demos, 'help()' for on-line help, or 409s 'help.start()' for an HTML browser interface to help. 409s Type 'q()' to quit R. 409s 409s > library("matrixStats") 409s > 409s > fcns <- list( 409s + rowVarDiffs = list(rowVarDiffs, colVarDiffs), 409s + rowSdDiffs = list(rowSdDiffs, colSdDiffs), 409s + rowMadDiffs = list(rowMadDiffs, colMadDiffs), 409s + rowIQRDiffs = list(rowIQRDiffs, colIQRDiffs) 409s + ) 409s > 409s > for (fcn in names(fcns)) { 409s + cat(sprintf("%s()...\n", fcn)) 409s + row_fcn <- fcns[[fcn]][[1L]] 409s + col_fcn <- fcns[[fcn]][[2L]] 409s + 409s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 409s + # With and without some NAs 409s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 409s + for (mode in c("integer", "double")) { 409s + for (add_na in c(FALSE, TRUE)) { 409s + cat("add_na = ", add_na, "\n", sep = "") 409s + 409s + x <- matrix(1:50 + 0.1, nrow = 10L, ncol = 5L) 409s + if (add_na) { 409s + x[3:7, c(2, 4)] <- NA_real_ 409s + } 409s + cat("mode: ", mode, "\n", sep = "") 409s + storage.mode(x) <- mode 409s + str(x) 409s + 409s + # To check names attribute 409s + dimnames <- list(letters[1:10], LETTERS[1:5]) 409s + 409s + # Test with and without dimnames on x 409s + for (setDimnames in c(TRUE, FALSE)) { 409s + if (setDimnames) dimnames(x) <- dimnames 409s + else dimnames(x) <- NULL 409s + # Row/column ranges 409s + for (na.rm in c(FALSE, TRUE)) { 409s + # Check names attribute 409s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 409s + cat("na.rm = ", na.rm, "\n", sep = "") 409s + r1 <- row_fcn(x, na.rm = na.rm, useNames = useNames) 409s + r2 <- col_fcn(t(x), na.rm = na.rm, useNames = useNames) 409s + stopifnot(all.equal(r1, r2)) 409s + } 409s + } 409s + } 409s + } # for (add_na ...) 409s + } 409s + 409s + 409s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 409s + # All NAs 409s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 409s + for (mode in c("integer", "double")) { 409s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 409s + cat("mode: ", mode, "\n", sep = "") 409s + storage.mode(x) <- mode 409s + str(x) 409s + 409s + # Test with and without dimnames on x 409s + for (setDimnames in c(TRUE, FALSE)) { 409s + if (setDimnames) dimnames(x) <- dimnames 409s + else dimnames(x) <- NULL 409s + # Row/column ranges 409s + for (na.rm in c(FALSE, TRUE)) { 409s + # Check names attribute 409s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 409s + cat("na.rm = ", na.rm, "\n", sep = "") 409s + r1 <- row_fcn(x, na.rm = na.rm, useNames = useNames) 409s + r2 <- col_fcn(t(x), na.rm = na.rm, useNames = useNames) 409s + stopifnot(all.equal(r1, r2)) 409s + } 409s + } 409s + } 409s + } 409s + 409s + 409s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 409s + # A 1x1 matrix 409s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 409s + x <- matrix(0, nrow = 1L, ncol = 1L) 409s + dimnames <- list("a", "A") 409s + # Test with and without dimnames on x 409s + for (setDimnames in c(TRUE, FALSE)) { 409s + if (setDimnames) dimnames(x) <- dimnames 409s + else dimnames(x) <- NULL 409s + # Row/column ranges 409s + for (na.rm in c(FALSE, TRUE)) { 409s + # Check names attribute 409s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 409s + cat("na.rm = ", na.rm, "\n", sep = "") 409s + r1 <- row_fcn(x, na.rm = na.rm, useNames = useNames) 409s + r2 <- col_fcn(t(x), na.rm = na.rm, useNames = useNames) 409s + stopifnot(all.equal(r1, r2)) 409s + } 409s + } 409s + } 409s + 409s + cat(sprintf("%s()...DONE\n", fcn)) 409s + } # for (fcn ...) 409s rowVarDiffs()... 409s add_na = FALSE 409s mode: integer 409s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = TRUE 409s mode: integer 409s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = FALSE 409s mode: double 409s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = TRUE 409s mode: double 409s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s mode: integer 409s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s mode: double 409s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s rowVarDiffs()...DONE 409s rowSdDiffs()... 409s add_na = FALSE 409s mode: integer 409s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = TRUE 409s mode: integer 409s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = FALSE 409s mode: double 409s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = TRUE 409s mode: double 409s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s mode: integer 409s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s mode: double 409s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s rowSdDiffs()...DONE 409s rowMadDiffs()... 409s add_na = FALSE 409s mode: integer 409s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = TRUE 409s mode: integer 409s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = FALSE 409s mode: double 409s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = TRUE 409s mode: double 409s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s mode: integer 409s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s mode: double 409s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s rowMadDiffs()...DONE 409s rowIQRDiffs()... 409s add_na = FALSE 409s mode: integer 409s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = TRUE 409s mode: integer 409s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = FALSE 409s mode: double 409s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s add_na = TRUE 409s mode: double 409s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s mode: integer 409s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s mode: double 409s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s na.rm = FALSE 409s na.rm = FALSE 409s na.rm = TRUE 409s na.rm = TRUE 409s rowIQRDiffs()...DONE 409s > 409s 409s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 409s Copyright (C) 2024 The R Foundation for Statistical Computing 409s Platform: s390x-ibm-linux-gnu (64-bit) 409s 409s R is free software and comes with ABSOLUTELY NO WARRANTY. 409s You are welcome to redistribute it under certain conditions. 409s Type 'license()' or 'licence()' for distribution details. 409s 409s R is a collaborative project with many contributors. 409s Type 'contributors()' for more information and 409s 'citation()' on how to cite R or R packages in publications. 409s 409s Type 'demo()' for some demos, 'help()' for on-line help, or 409s 'help.start()' for an HTML browser interface to help. 409s Type 'q()' to quit R. 409s 409s > library("matrixStats") 409s > 409s > fcns <- list( 409s + madDiff = c(rowMadDiffs, colMadDiffs), 409s + iqrDiff = c(rowIQRDiffs, colIQRDiffs) 409s + ) 409s > 409s > 409s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 409s > # Subsetted tests 409s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 409s > source("utils/validateIndicesFramework.R") 409s > # To check names attribute 409s > dimnames <- list(letters[1:6], LETTERS[1:6]) 409s > trim <- runif(1, min = 0, max = 0.5) 409s > for (fcn in names(fcns)) { 409s + cat(sprintf("subsetted tests on %s()...\n", fcn)) 409s + row_fcn <- fcns[[fcn]][[1L]] 409s + col_fcn <- fcns[[fcn]][[2L]] 409s + 409s + for (mode in c("numeric", "integer")) { 409s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 409s + storage.mode(x) <- mode 409s + if (mode == "numeric") x[1:2, 3:4] <- Inf 409s + 409s + # Test with and without dimnames on x 409s + for (setDimnames in c(TRUE, FALSE)) { 409s + if (setDimnames) dimnames(x) <- dimnames 409s + else dimnames(x) <- NULL 409s + 409s + count <- 0L 409s + for (diff in 1:2) { 409s + for (rows in index_cases) { 409s + for (cols in index_cases) { 409s + count <- count + 1L 409s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 409s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 409s + useNames <- useNames[count %% length(useNames) + 1] 409s + validateIndicesTestMatrix(x, rows, cols, 409s + ftest = row_fcn, fsure = row_fcn, 409s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 409s + validateIndicesTestMatrix(x, rows, cols, 409s + fcoltest = col_fcn, fsure = row_fcn, 409s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 409s + } 409s + } 409s + } 409s + } 409s + } 409s + cat(sprintf("%s()...DONE\n", fcn)) 409s + } 409s subsetted tests on madDiff()... 412s madDiff()...DONE 412s subsetted tests on iqrDiff()... 414s iqrDiff()...DONE 414s > 414s 414s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 414s Copyright (C) 2024 The R Foundation for Statistical Computing 414s Platform: s390x-ibm-linux-gnu (64-bit) 414s 414s R is free software and comes with ABSOLUTELY NO WARRANTY. 414s You are welcome to redistribute it under certain conditions. 414s Type 'license()' or 'licence()' for distribution details. 414s 414s R is a collaborative project with many contributors. 414s Type 'contributors()' for more information and 414s 'citation()' on how to cite R or R packages in publications. 414s 414s Type 'demo()' for some demos, 'help()' for on-line help, or 414s 'help.start()' for an HTML browser interface to help. 414s Type 'q()' to quit R. 414s 414s > library("matrixStats") 414s > 414s > fcns <- list( 414s + varDiff = c(rowVarDiffs, colVarDiffs), 414s + sdDiff = c(rowSdDiffs, colSdDiffs) 414s + ) 414s > 414s > 414s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 414s > # Subsetted tests 414s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 414s > source("utils/validateIndicesFramework.R") 414s > # To check names attribute 414s > dimnames <- list(letters[1:6], LETTERS[1:6]) 414s > trim <- runif(1, min = 0, max = 0.5) 414s > for (fcn in names(fcns)) { 414s + cat(sprintf("subsetted tests on %s()...\n", fcn)) 414s + row_fcn <- fcns[[fcn]][[1L]] 414s + col_fcn <- fcns[[fcn]][[2L]] 414s + 414s + for (mode in c("numeric", "integer")) { 414s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 414s + storage.mode(x) <- mode 414s + if (mode == "numeric") x[1:2, 3:4] <- Inf 414s + 414s + # Test with and without dimnames on x 414s + for (setDimnames in c(TRUE, FALSE)) { 414s + if (setDimnames) dimnames(x) <- dimnames 414s + else dimnames(x) <- NULL 414s + 414s + count <- 0L 414s + for (diff in 1:2) { 414s + for (rows in index_cases) { 414s + for (cols in index_cases) { 414s + count <- count + 1L 414s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 414s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 414s + useNames <- useNames[count %% length(useNames) + 1] 414s + 414s + validateIndicesTestMatrix(x, rows, cols, 414s + ftest = row_fcn, fsure = row_fcn, 414s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 414s + validateIndicesTestMatrix(x, rows, cols, 414s + fcoltest = col_fcn, fsure = row_fcn, 414s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 414s + } 414s + } 414s + } 414s + } 414s + } 414s + cat(sprintf("%s()...DONE\n", fcn)) 414s + } 414s subsetted tests on varDiff()... 416s varDiff()...DONE 416s subsetted tests on sdDiff()... 418s sdDiff()...DONE 418s > 418s 418s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 418s Copyright (C) 2024 The R Foundation for Statistical Computing 418s Platform: s390x-ibm-linux-gnu (64-bit) 418s 418s R is free software and comes with ABSOLUTELY NO WARRANTY. 418s You are welcome to redistribute it under certain conditions. 418s Type 'license()' or 'licence()' for distribution details. 418s 418s R is a collaborative project with many contributors. 418s Type 'contributors()' for more information and 418s 'citation()' on how to cite R or R packages in publications. 418s 418s Type 'demo()' for some demos, 'help()' for on-line help, or 418s 'help.start()' for an HTML browser interface to help. 418s Type 'q()' to quit R. 418s 418s > library("matrixStats") 418s > 418s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 418s > options(matrixStats.center.onUse = "ignore") 418s > options(matrixStats.vars.formula.freq = Inf) 418s > 418s > ## Create isFALSE() if running on an old version of R 418s > if (!exists("isFALSE", mode="function")) { 418s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 418s + } 418s > 418s > rowVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 418s + suppressWarnings({ 418s + res <- apply(x, MARGIN = 1L, FUN = var, na.rm = na.rm) 418s + }) 418s + stopifnot(!any(is.infinite(res))) 418s + 418s + # Keep naming support consistency same as rowVars() 418s + if (is.null(center) || ncol(x) <= 1L) { 418s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 418s + } 418s + else if (isFALSE(useNames)) names(res) <- NULL 418s + res 418s + } 418s > 418s > colVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 418s + suppressWarnings({ 418s + res <- apply(x, MARGIN = 2L, FUN = var, na.rm = na.rm) 418s + }) 418s + stopifnot(!any(is.infinite(res))) 418s + 418s + # Keep naming support consistency same as colVars() 418s + if (is.null(center) || ncol(x) <= 1L) { 418s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 418s + } 418s + else if (isFALSE(useNames)) names(res) <- NULL 418s + res 418s + } 418s > 418s > 418s > rowVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 418s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 418s + res <- rowVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 418s + stopifnot(!any(is.infinite(res))) 418s + res 418s + } 418s > 418s > colVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 418s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 418s + res <- colVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 418s + stopifnot(!any(is.infinite(res))) 418s + res 418s + } 418s > 418s > rowVars_center_naive <- function(x, rows = NULL, cols = NULL, center = NULL, na.rm = FALSE, ..., useNames = NA) { 418s + x <- sweep(x, MARGIN = 1, STATS = as.array(center), FUN = "-") 418s + x[is.infinite(center), ] <- NaN 418s + res <- rowVars(x, rows = rows, cols = cols, center = rep(0, times = nrow(x)), na.rm = na.rm, useNames = useNames) 418s + stopifnot(!any(is.infinite(res))) 418s + res 418s + } 418s > 418s > colVars_center_naive <- function(x, rows = NULL, cols = NULL, center = NULL, na.rm = FALSE, ..., useNames = NA) { 418s + x <- sweep(x, MARGIN = 2, STATS = as.array(center), FUN = "-") 418s + x[, is.infinite(center)] <- NaN 418s + res <- colVars(x, rows = rows, cols = cols, center = rep(0, times = ncol(x)), na.rm = na.rm, useNames = useNames) 418s + stopifnot(!any(is.infinite(res))) 418s + res 418s + } 418s > 418s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418s > # With and without some NAs or Infs 418s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418s > for (mode in c("integer", "double")) { 418s + if (mode == "integer") { 418s + specials <- c(0L, NA_integer_) 418s + delta <- 0L 418s + } else { 418s + specials <- c(0, NA_real_, Inf) 418s + delta <- 0.1 418s + } 418s + 418s + for (special in specials) { 418s + cat("special = ", special, "\n", sep = "") 418s + x <- matrix(1:50 + delta, nrow = 10L, ncol = 5L) 418s + x[3:7, c(2, 4)] <- special 418s + cat("mode: ", mode, "\n", sep = "") 418s + str(x) 418s + stopifnot(storage.mode(x) == mode) 418s + 418s + # To check names attribute 418s + dimnames <- list(letters[1:10], LETTERS[1:5]) 418s + 418s + # Test with and without dimnames on x 418s + for (setDimnames in c(TRUE, FALSE)) { 418s + if (setDimnames) dimnames(x) <- dimnames 418s + else dimnames(x) <- NULL 418s + # Row/column variance 418s + for (na.rm in c(FALSE, TRUE)) { 418s + # Check names attribute 418s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 418s + cat("na.rm = ", na.rm, "\n", sep = "") 418s + center <- rowMeans(x, na.rm = na.rm) 418s + 418s + r0 <- rowVars_R(x, na.rm = na.rm, useNames = useNames) 418s + r1 <- rowVars(x, na.rm = na.rm, useNames = useNames) 418s + r1b <- rowVars_center(x, na.rm = na.rm, useNames = useNames) 418s + r1c <- rowVars(x, center = center, na.rm = na.rm, useNames = useNames) 418s + 418s + tx <- t(x) 418s + r2 <- colVars(tx, na.rm = na.rm, useNames = useNames) 418s + r2b <- colVars_center(tx, na.rm = na.rm, useNames = useNames) 418s + r2c <- colVars(tx, center = center, na.rm = na.rm, useNames = useNames) 418s + tx <- NULL 418s + 418s + stopifnot(all.equal(r1, r2)) 418s + stopifnot(all.equal(r1, r0)) 418s + stopifnot(all.equal(r1b, r1c)) 418s + stopifnot(all.equal(r2, r0)) 418s + stopifnot(all.equal(r2b, r2c)) 418s + 418s + center <- colMeans(x, na.rm = na.rm) 418s + 418s + r3 <- colVars(x, center = center, na.rm = na.rm, useNames = useNames) 418s + r3b <- colVars_center_naive(x, center = center, na.rm = na.rm, useNames = useNames) 418s + r3c <- rowVars(t(x), center = center, na.rm = na.rm, useNames = useNames) 418s + r3d <- rowVars_center_naive(t(x), center = center, na.rm = na.rm, useNames = useNames) 418s + stopifnot(all.equal(r3b, r3)) 418s + stopifnot(all.equal(r3c, r3)) 418s + stopifnot(all.equal(r3d, r3)) 418s + 418s + stopifnot( 418s + !any(is.infinite(r0)), 418s + !any(is.infinite(r1)), 418s + !any(is.infinite(r2)), 418s + !any(is.infinite(r3)), 418s + !any(is.infinite(r1b)), 418s + !any(is.infinite(r1c)), 418s + !any(is.infinite(r2b)), 418s + !any(is.infinite(r2c)), 418s + !any(is.infinite(r3b)), 418s + !any(is.infinite(r3c)), 418s + !any(is.infinite(r3d)) 418s + ) 418s + } 418s + } 418s + } 418s + } # for (special ...) 418s + } 418s special = 0 418s mode: integer 418s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s special = NA 418s mode: integer 418s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s special = 0 418s mode: double 418s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s special = NA 418s mode: double 418s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s special = Inf 418s mode: double 418s num [1:10, 1:5] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 ... 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s > 418s > 418s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418s > # All NAs 418s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418s > for (mode in c("integer", "double")) { 418s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 418s + cat("mode: ", mode, "\n", sep = "") 418s + storage.mode(x) <- mode 418s + str(x) 418s + 418s + # Test with and without dimnames on x 418s + for (setDimnames in c(TRUE, FALSE)) { 418s + if (setDimnames) dimnames(x) <- dimnames 418s + else dimnames(x) <- NULL 418s + # Row/column variance 418s + for (na.rm in c(FALSE, TRUE)) { 418s + # Check names attribute 418s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 418s + cat("na.rm = ", na.rm, "\n", sep = "") 418s + 418s + r0 <- rowVars_R(x, na.rm = na.rm, useNames = useNames) 418s + r1 <- rowVars(x, na.rm = na.rm, useNames = useNames) 418s + r1b <- rowVars_center(x, na.rm = na.rm, useNames = useNames) 418s + r2 <- colVars(t(x), na.rm = na.rm, useNames = useNames) 418s + r2b <- colVars_center(t(x), na.rm = na.rm, useNames = useNames) 418s + stopifnot(all.equal(r1, r2)) 418s + stopifnot(all.equal(r1, r0)) 418s + stopifnot(all.equal(r2, r0)) 418s + stopifnot(all.equal(r1b, r2b)) 418s + stopifnot( 418s + !any(is.infinite(r0)), 418s + !any(is.infinite(r1)), 418s + !any(is.infinite(r2)), 418s + !any(is.infinite(r1b)), 418s + !any(is.infinite(r2b)) 418s + ) 418s + } 418s + } 418s + } 418s + } 418s mode: integer 418s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s mode: double 418s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s > 418s > 418s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418s > # A 1x1 matrix 418s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418s > x <- matrix(0, nrow = 1L, ncol = 1L) 418s > dimnames <- list("a", "A") 418s > # Test with and without dimnames on x 418s > for (setDimnames in c(TRUE, FALSE)) { 418s + if (setDimnames) dimnames(x) <- dimnames 418s + else dimnames(x) <- NULL 418s + # Row/column variance 418s + for (na.rm in c(FALSE, TRUE)) { 418s + # Check names attribute 418s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 418s + cat("na.rm = ", na.rm, "\n", sep = "") 418s + 418s + r0 <- rowVars_R(x, na.rm = na.rm, useNames = useNames) 418s + r1 <- rowVars(x, na.rm = na.rm, useNames = useNames) 418s + r1b <- rowVars_center(x, na.rm = na.rm, useNames = useNames) 418s + r2 <- colVars(t(x), na.rm = na.rm, useNames = useNames) 418s + r2b <- colVars_center(t(x), na.rm = na.rm, useNames = useNames) 418s + stopifnot(all.equal(r1, r2)) 418s + stopifnot(all.equal(r1, r0)) 418s + stopifnot(all.equal(r2, r0)) 418s + stopifnot(all.equal(r1b, r2b)) 418s + stopifnot( 418s + !any(is.infinite(r0)), 418s + !any(is.infinite(r1)), 418s + !any(is.infinite(r2)), 418s + !any(is.infinite(r1b)), 418s + !any(is.infinite(r2b)) 418s + ) 418s + } 418s + } 418s + } 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s na.rm = FALSE 418s na.rm = FALSE 418s na.rm = TRUE 418s na.rm = TRUE 418s > 418s > 418s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418s > # center and .dim 418s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418s > m <- matrix(1:12, nrow = 3L, ncol = 4L) 418s > a <- array(m, dim = c(3, 2, 2)) 418s > stopifnot(prod(dim(a)) == prod(dim(m))) 418s > 418s > y0 <- rowVars(m, dim. = dim(m)) 418s > print(y0) 418s [1] 15 15 15 418s > y1 <- rowVars(a, dim. = dim(m)) 418s > print(y1) 418s [1] 15 15 15 418s > stopifnot(identical(y1, y0)) 418s > stopifnot( 418s + !any(is.infinite(y0)), 418s + !any(is.infinite(y1)) 418s + ) 418s > 418s > mu <- rowMeans(m) 418s > y0 <- rowVars(m, center = mu, dim. = dim(m)) 418s > print(y0) 418s [1] 15 15 15 418s > y1 <- rowVars(a, center = mu, dim. = dim(m)) 418s > print(y1) 418s [1] 15 15 15 418s > stopifnot(identical(y1, y0)) 418s > stopifnot( 418s + !any(is.infinite(y0)), 418s + !any(is.infinite(y1)) 418s + ) 418s > 418s > 418s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418s > # Corner cases 418s > # https://github.com/HenrikBengtsson/matrixStats/issues/195 418s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 418s > x <- matrix(c(1,2,3,4), nrow = 2L, ncol = 2L) 418s > x[1,1] <- NA_real_ 418s > x[1,2] <- Inf 418s > 418s > center <- colMeans2(x, na.rm = TRUE) 418s > y <- colVars(x, center = center, na.rm = TRUE) 418s > stopifnot(!any(is.infinite(y))) 418s > 418s > x <- t(x) 418s > center <- rowMeans2(x, na.rm = TRUE) 418s > y <- rowVars(x, center = center, na.rm = TRUE) 418s > stopifnot(!any(is.infinite(y))) 418s > 419s 419s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 419s Copyright (C) 2024 The R Foundation for Statistical Computing 419s Platform: s390x-ibm-linux-gnu (64-bit) 419s 419s R is free software and comes with ABSOLUTELY NO WARRANTY. 419s You are welcome to redistribute it under certain conditions. 419s Type 'license()' or 'licence()' for distribution details. 419s 419s R is a collaborative project with many contributors. 419s Type 'contributors()' for more information and 419s 'citation()' on how to cite R or R packages in publications. 419s 419s Type 'demo()' for some demos, 'help()' for on-line help, or 419s 'help.start()' for an HTML browser interface to help. 419s Type 'q()' to quit R. 419s 419s > library("matrixStats") 419s > 419s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 419s > options(matrixStats.center.onUse = "ignore") 419s > 419s > ## Create isFALSE() if running on an old version of R 419s > if (!exists("isFALSE", mode="function")) { 419s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 419s + } 419s > 419s > rowVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 419s + suppressWarnings({ 419s + res <- apply(x, MARGIN = 1L, FUN = var, na.rm = na.rm) 419s + }) 419s + stopifnot(!any(is.infinite(res))) 419s + 419s + # Keep naming support consistency same as rowVars() 419s + if (is.null(center) || ncol(x) <= 1L) { 419s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 419s + } 419s + else if (isFALSE(useNames)) names(res) <- NULL 419s + res 419s + } 419s > 419s > colVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 419s + suppressWarnings({ 419s + res <- apply(x, MARGIN = 2L, FUN = var, na.rm = na.rm) 419s + }) 419s + stopifnot(!any(is.infinite(res))) 419s + 419s + # Keep naming support consistency same as colVars() 419s + if (is.null(center) || nrow(x) <= 1L) { 419s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 419s + } 419s + else if (isFALSE(useNames)) names(res) <- NULL 419s + res 419s + } 419s > 419s > 419s > rowVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 419s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 419s + res <- rowVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 419s + stopifnot(!any(is.infinite(res))) 419s + res 419s + } 419s > 419s > colVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 419s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 419s + res <- colVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 419s + stopifnot(!any(is.infinite(res))) 419s + res 419s + } 419s > 419s > 419s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 419s > # Subsetted tests 419s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 419s > source("utils/validateIndicesFramework.R") 419s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 419s > storage.mode(x) <- "integer" 419s > 419s > # To check names attribute 419s > dimnames <- list(letters[1:6], LETTERS[1:6]) 419s > 419s > # Test with and without dimnames on x 419s > for (setDimnames in c(TRUE, FALSE)) { 419s + if (setDimnames) dimnames(x) <- dimnames 419s + else dimnames(x) <- NULL 419s + 419s + count <- 0L 419s + for (rows in index_cases) { 419s + for (cols in index_cases) { 419s + count <- count + 1L 419s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 419s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 419s + useNames <- useNames[count %% length(useNames) + 1] 419s + 419s + validateIndicesTestMatrix(x, rows, cols, 419s + ftest = rowVars, fsure = rowVars_R, 419s + na.rm = na.rm, useNames = useNames) 419s + validateIndicesTestMatrix(x, rows, cols, 419s + ftest = rowVars_center, fsure = rowVars_R, 419s + na.rm = na.rm, center = TRUE, useNames = useNames) 419s + 419s + validateIndicesTestMatrix(x, rows, cols, 419s + fcoltest = colVars, fsure = rowVars_R, 419s + na.rm = na.rm, useNames = useNames) 419s + validateIndicesTestMatrix(x, rows, cols, 419s + fcoltest = colVars_center, fsure = rowVars_R, 419s + na.rm = na.rm, center = TRUE, useNames = useNames) 419s + } 419s + } 419s + } 419s > 419s 419s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 419s Copyright (C) 2024 The R Foundation for Statistical Computing 419s Platform: s390x-ibm-linux-gnu (64-bit) 419s 419s R is free software and comes with ABSOLUTELY NO WARRANTY. 419s You are welcome to redistribute it under certain conditions. 419s Type 'license()' or 'licence()' for distribution details. 419s 419s R is a collaborative project with many contributors. 419s Type 'contributors()' for more information and 419s 'citation()' on how to cite R or R packages in publications. 419s 419s Type 'demo()' for some demos, 'help()' for on-line help, or 419s 'help.start()' for an HTML browser interface to help. 419s Type 'q()' to quit R. 419s 419s > library("matrixStats") 419s > 419s > ## Create isFALSE() if running on an old version of R 419s > if (!exists("isFALSE", mode="function")) { 419s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 419s + } 419s > 419s > rowWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 419s + res <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 419s + 419s + # Keep naming support consistency same as rowWeightedMeans() 419s + idxs <- which(is.na(w) | w != 0) 419s + nw <- length(idxs) 419s + if (na.rm) na.rm <- anyMissing(x) 419s + if ((!is.null(w) && nw == 0L) || isFALSE(na.rm)) { 419s + if (is.na(useNames) || !useNames) names(res) <- NULL 419s + } 419s + else if (isFALSE(useNames)) names(res) <- NULL 419s + 419s + res 419s + } 419s > 419s > colWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 419s + res <- apply(x, MARGIN = 2L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 419s + 419s + # Keep naming support consistency same as colWeightedMeans() 419s + idxs <- which(is.na(w) | w != 0) 419s + nw <- length(idxs) 419s + if (!is.null(w) && nw == 0L) { 419s + if (is.na(useNames) || !useNames) names(res) <- NULL 419s + } 419s + else if (isFALSE(useNames)) names(res) <- NULL 419s + 419s + res 419s + } 419s > 419s > set.seed(1) 419s > 419s > x <- matrix(rnorm(20), nrow = 5, ncol = 4) 419s > print(x) 419s [,1] [,2] [,3] [,4] 419s [1,] -0.6264538 -0.8204684 1.5117812 -0.04493361 419s [2,] 0.1836433 0.4874291 0.3898432 -0.01619026 419s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 419s [4,] 1.5952808 0.5757814 -2.2146999 0.82122120 419s [5,] 0.3295078 -0.3053884 1.1249309 0.59390132 419s > 419s > # To check names attribute 419s > dimnames <- list(letters[1:5], LETTERS[1:4]) 419s > 419s > # Non-weighted row averages 419s > x_est0 <- rowMeans(x) 419s > x_est1 <- rowWeightedMeans(x) 419s > print(x_est1) 419s [1] 0.004981341 0.261181337 0.056322931 0.194395865 0.435737906 419s > stopifnot(all.equal(x_est1, x_est0)) 419s > x_est2 <- colWeightedMeans(t(x)) 419s > stopifnot(all.equal(x_est2, x_est0)) 419s > # Check names attribute 419s > dimnames(x) <- dimnames 419s > x_est1 <- rowWeightedMeans(x, useNames = FALSE) 419s > x_est2 <- colWeightedMeans(t(x), useNames = FALSE) 419s > stopifnot(all.equal(x_est1, x_est0)) 419s > stopifnot(all.equal(x_est2, x_est0)) 419s > x_est0 <- rowMeans(x) 419s > x_est1 <- rowWeightedMeans(x, useNames = TRUE) 419s > x_est2 <- colWeightedMeans(t(x), useNames = TRUE) 419s > stopifnot(all.equal(x_est1, x_est0)) 419s > stopifnot(all.equal(x_est2, x_est0)) 419s > dimnames(x) <- NULL 419s > 419s > 419s > # Weighted row averages (uniform weights) 419s > w <- rep(2.5, times = ncol(x)) 419s > x_est0 <- rowMeans(x) 419s > x_est1 <- rowWeightedMeans(x, w = w) 419s > print(x_est1) 419s [1] 0.004981341 0.261181337 0.056322931 0.194395865 0.435737906 419s > stopifnot(all.equal(x_est1, x_est0)) 419s > x_est2 <- colWeightedMeans(t(x), w = w) 419s > stopifnot(all.equal(x_est2, x_est0)) 419s > # Test with and without dimnames on x 419s > for (setDimnames in c(TRUE, FALSE)) { 419s + if (setDimnames) dimnames(x) <- dimnames 419s + else dimnames(x) <- NULL 419s + # Check names attribute 419s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 419s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 419s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 419s + stopifnot(all.equal(x_est1, x_est0)) 419s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 419s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 419s + stopifnot(all.equal(x_est1, x_est0)) 419s + } 419s + } 419s > 419s > 419s > # Weighted row averages (excluding some columns) 419s > w <- c(1, 1, 0, 1) 419s > x_est0 <- rowMeans(x[, (w == 1), drop = FALSE]) 419s > x_est1 <- rowWeightedMeans(x, w = w) 419s > print(x_est1) 419s [1] -0.4972853 0.2182940 0.2821774 0.9974278 0.2060069 419s > stopifnot(all.equal(x_est1, x_est0)) 419s > x_est2 <- colWeightedMeans(t(x), w = w) 419s > stopifnot(all.equal(x_est2, x_est0)) 419s > # Test with and without dimnames on x 419s > for (setDimnames in c(TRUE, FALSE)) { 419s + if (setDimnames) dimnames(x) <- dimnames 419s + else dimnames(x) <- NULL 419s + # Check names attribute 419s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 419s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 419s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 419s + stopifnot(all.equal(x_est1, x_est0)) 419s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 419s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 419s + stopifnot(all.equal(x_est1, x_est0)) 419s + } 419s + } 419s > 419s > 419s > # Weighted row averages (excluding some columns) 419s > w <- c(0, 1, 0, 0) 419s > x_est0 <- rowMeans(x[, (w == 1), drop = FALSE]) 419s > x_est1 <- rowWeightedMeans(x, w = w) 419s > stopifnot(all.equal(x_est1, x_est0)) 419s > x_est2 <- colWeightedMeans(t(x), w = w) 419s > stopifnot(all.equal(x_est2, x_est0)) 419s > # Test with and without dimnames on x 419s > for (setDimnames in c(TRUE, FALSE)) { 419s + if (setDimnames) dimnames(x) <- dimnames 419s + else dimnames(x) <- NULL 419s + # Check names attribute 419s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 419s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 419s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 419s + stopifnot(all.equal(x_est1, x_est0)) 419s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 419s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 419s + stopifnot(all.equal(x_est1, x_est0)) 419s + } 419s + } 419s > 419s > 419s > # Weighted row averages (all zero weights) 419s > w <- c(0, 0, 0, 0) 419s > x_est0 <- rowMeans(x[, (w == 1), drop = FALSE]) 419s > x_est1 <- rowWeightedMeans(x, w = w) 419s > stopifnot(all.equal(x_est1, x_est0)) 419s > x_est2 <- colWeightedMeans(t(x), w = w) 419s > stopifnot(all.equal(x_est2, x_est0)) 419s > # Test with and without dimnames on x 419s > for (setDimnames in c(TRUE, FALSE)) { 419s + if (setDimnames) dimnames(x) <- dimnames 419s + else dimnames(x) <- NULL 419s + # Check names attribute 419s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 419s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 419s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 419s + stopifnot(all.equal(x_est1, x_est0)) 419s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 419s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 419s + stopifnot(all.equal(x_est1, x_est0)) 419s + } 419s + } 419s > 419s > 419s > # Weighted averages by rows and columns 419s > w <- 1:4 419s > x_est1 <- rowWeightedMeans(x, w = w) 419s > print(x_est1) 419s [1] 0.20882185 0.22632701 0.25526439 -0.06123714 0.54691290 419s > x_est2 <- colWeightedMeans(t(x), w = w) 419s > stopifnot(all.equal(x_est2, x_est1)) 419s > # Test with and without dimnames on x 419s > for (setDimnames in c(TRUE, FALSE)) { 419s + if (setDimnames) dimnames(x) <- dimnames 419s + else dimnames(x) <- NULL 419s + # Check names attribute 419s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 419s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 419s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 419s + stopifnot(all.equal(x_est1, x_est0)) 419s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 419s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 419s + stopifnot(all.equal(x_est1, x_est0)) 419s + } 419s + } 419s > 419s > 419s > x[sample(length(x), size = 0.3 * length(x))] <- NA 419s > print(x) 419s [,1] [,2] [,3] [,4] 419s [1,] -0.6264538 NA 1.5117812 -0.04493361 419s [2,] 0.1836433 NA NA -0.01619026 419s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 419s [4,] 1.5952808 NA -2.2146999 0.82122120 420s [5,] 0.3295078 NA NA 0.59390132 420s > 420s > # Non-weighted row averages with missing values 420s > x_est0 <- rowMeans(x, na.rm = TRUE) 420s > x_est1 <- rowWeightedMeans(x, na.rm = TRUE) 420s > print(x_est1) 420s [1] 0.28013125 0.08372653 0.05632293 0.06726737 0.46170455 420s > stopifnot(all.equal(x_est1, x_est0)) 420s > x_est2 <- colWeightedMeans(t(x), na.rm = TRUE) 420s > stopifnot(all.equal(x_est2, x_est0)) 420s > # Check names attribute 420s > dimnames(x) <- dimnames 420s > x_est1 <- rowWeightedMeans(x, na.rm = TRUE, useNames = FALSE) 420s > x_est2 <- colWeightedMeans(t(x), na.rm = TRUE, useNames = FALSE) 420s > stopifnot(all.equal(x_est1, x_est0)) 420s > stopifnot(all.equal(x_est2, x_est0)) 420s > x_est0 <- rowMeans(x, na.rm = TRUE) 420s > x_est1 <- rowWeightedMeans(x, na.rm = TRUE, useNames = TRUE) 420s > x_est2 <- colWeightedMeans(t(x), na.rm = TRUE, useNames = TRUE) 420s > stopifnot(all.equal(x_est1, x_est0)) 420s > stopifnot(all.equal(x_est2, x_est0)) 420s > dimnames(x) <- NULL 420s > 420s > 420s > # Weighted row averages with missing values 420s > x_est0 <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = TRUE) 420s > print(x_est0) 420s [1] 0.46614441 0.02377645 0.25526439 -0.22049176 0.54102261 420s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE) 420s > print(x_est1) 420s [1] 0.46614441 0.02377645 0.25526439 -0.22049176 0.54102261 420s > stopifnot(all.equal(x_est1, x_est0)) 420s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = TRUE) 420s > stopifnot(all.equal(x_est2, x_est0)) 420s > # Test with and without dimnames on x 420s > for (setDimnames in c(TRUE, FALSE)) { 420s + if (setDimnames) dimnames(x) <- dimnames 420s + else dimnames(x) <- NULL 420s + # Check names attribute 420s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 420s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = TRUE, useNames = useNames) 420s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE, useNames = useNames) 420s + stopifnot(all.equal(x_est1, x_est0)) 420s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 420s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = TRUE, useNames = useNames) 420s + stopifnot(all.equal(x_est1, x_est0)) 420s + } 420s + } 420s > 420s > 420s > # Weighted averages by rows and columns 420s > w <- 1:4 420s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE) 420s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = TRUE) 420s > stopifnot(all.equal(x_est2, x_est1)) 420s > # Test with and without dimnames on x 420s > for (setDimnames in c(TRUE, FALSE)) { 420s + if (setDimnames) dimnames(x) <- dimnames 420s + else dimnames(x) <- NULL 420s + # Check names attribute 420s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 420s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = TRUE, useNames = useNames) 420s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE, useNames = useNames) 420s + stopifnot(all.equal(x_est1, x_est0)) 420s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 420s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = TRUE, useNames = useNames) 420s + stopifnot(all.equal(x_est1, x_est0)) 420s + } 420s + } 420s > 420s > 420s > # w contains missing value 420s > w[1] <- NA_integer_ 420s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE) 420s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = TRUE) 420s > stopifnot(all.equal(x_est2, x_est1)) 420s > # Test with and without dimnames on x 420s > for (setDimnames in c(TRUE, FALSE)) { 420s + if (setDimnames) dimnames(x) <- dimnames 420s + else dimnames(x) <- NULL 420s + # Check names attribute 420s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 420s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = TRUE, useNames = useNames) 420s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE, useNames = useNames) 420s + stopifnot(all.equal(x_est1, x_est0)) 420s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 420s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = TRUE, useNames = useNames) 420s + stopifnot(all.equal(x_est1, x_est0)) 420s + } 420s + } 420s > 420s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = FALSE) 420s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = FALSE) 420s > stopifnot(all.equal(x_est2, x_est1)) 420s > # Test with and without dimnames on x 420s > for (setDimnames in c(TRUE, FALSE)) { 420s + if (setDimnames) dimnames(x) <- dimnames 420s + else dimnames(x) <- NULL 420s + # Check names attribute 420s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 420s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = FALSE, useNames = useNames) 420s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = FALSE, useNames = useNames) 420s + stopifnot(all.equal(x_est1, x_est0)) 420s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = FALSE, useNames = useNames) 420s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = FALSE, useNames = useNames) 420s + stopifnot(all.equal(x_est1, x_est0)) 420s + } 420s + } 420s > 420s 420s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 420s Copyright (C) 2024 The R Foundation for Statistical Computing 420s Platform: s390x-ibm-linux-gnu (64-bit) 420s 420s R is free software and comes with ABSOLUTELY NO WARRANTY. 420s You are welcome to redistribute it under certain conditions. 420s Type 'license()' or 'licence()' for distribution details. 420s 420s R is a collaborative project with many contributors. 420s Type 'contributors()' for more information and 420s 'citation()' on how to cite R or R packages in publications. 420s 420s Type 'demo()' for some demos, 'help()' for on-line help, or 420s 'help.start()' for an HTML browser interface to help. 420s Type 'q()' to quit R. 420s 420s > library("matrixStats") 420s > 420s > ## Create isFALSE() if running on an old version of R 420s > if (!exists("isFALSE", mode="function")) { 420s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 420s + } 420s > 420s > rowWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 420s + res <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 420s + 420s + # Keep naming support consistency same as rowWeightedMeans() 420s + idxs <- which(is.na(w) | w != 0) 420s + nw <- length(idxs) 420s + if (na.rm) na.rm <- anyMissing(x) 420s + if ((!is.null(w) && nw == 0L) || isFALSE(na.rm)) { 420s + if (is.na(useNames) || !useNames) names(res) <- NULL 420s + } 420s + else if (isFALSE(useNames)) names(res) <- NULL 420s + 420s + res 420s + } 420s > 420s > colWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 420s + res <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 420s + 420s + # Keep naming support consistency same as colWeightedMeans() 420s + idxs <- which(is.na(w) | w != 0) 420s + nw <- length(idxs) 420s + if (!is.null(w) && nw == 0L) { 420s + if (is.na(useNames) || !useNames) names(res) <- NULL 420s + } 420s + else if (isFALSE(useNames)) names(res) <- NULL 420s + 420s + res 420s + } 420s > 420s > 420s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 420s > # Subsetted tests 420s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 420s > source("utils/validateIndicesFramework.R") 420s > # To check names attribute 420s > dimnames <- list(letters[1:6], LETTERS[1:6]) 420s > for (mode in c("numeric", "integer", "logical")) { 420s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 420s + w <- runif(6, min = 0, max = 6) 420s + storage.mode(x) <- mode 420s + storage.mode(w) <- if (mode == "logical") "integer" else mode 420s + if (mode == "numeric") w[1] <- Inf 420s + 420s + # Test with and without dimnames on x 420s + for (setDimnames in c(TRUE, FALSE)) { 420s + if (setDimnames) dimnames(x) <- dimnames 420s + else dimnames(x) <- NULL 420s + 420s + count <- 0L 420s + for (rows in index_cases) { 420s + for (cols in index_cases) { 420s + count <- count + 1L 420s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 420s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 420s + useNames <- useNames[count %% length(useNames) + 1] 420s + 420s + validateIndicesTestMatrix_w(x, w, rows, cols, 420s + ftest = rowWeightedMeans, fsure = rowWeightedMeans_R, 420s + na.rm = na.rm, useNames = useNames) 420s + validateIndicesTestMatrix_w(x, w, rows, cols, 420s + fcoltest = colWeightedMeans, fsure = colWeightedMeans_R, 420s + na.rm = na.rm, useNames = useNames) 420s + } 420s + } 420s + } 420s + } 421s > 421s 421s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 421s Copyright (C) 2024 The R Foundation for Statistical Computing 421s Platform: s390x-ibm-linux-gnu (64-bit) 421s 421s R is free software and comes with ABSOLUTELY NO WARRANTY. 421s You are welcome to redistribute it under certain conditions. 421s Type 'license()' or 'licence()' for distribution details. 421s 421s R is a collaborative project with many contributors. 421s Type 'contributors()' for more information and 421s 'citation()' on how to cite R or R packages in publications. 421s 421s Type 'demo()' for some demos, 'help()' for on-line help, or 421s 'help.start()' for an HTML browser interface to help. 421s Type 'q()' to quit R. 421s 421s > library("matrixStats") 421s > 421s > ## Create isFALSE() if running on an old version of R 421s > if (!exists("isFALSE", mode="function")) { 421s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 421s + } 421s > 421s > rowWeightedMedians_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 421s + res <- apply(x, MARGIN = 1L, FUN = weightedMedian, w = w, na.rm = na.rm, ...) 421s + 421s + # Keep naming support consistency same as rowWeightedMedians() 421s + if (!is.null(w)) { 421s + if (isFALSE(useNames)) names(res) <- NULL 421s + } 421s + else if (is.na(useNames) || !useNames) names(res) <- NULL 421s + 421s + res 421s + } 421s > 421s > colWeightedMedians_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 421s + res <- apply(x, MARGIN = 2L, FUN = weightedMedian, w = w, na.rm = na.rm, ...) 421s + 421s + # Keep naming support consistency same as colWeightedMedians() 421s + if (!is.null(w)) { 421s + if (isFALSE(useNames)) names(res) <- NULL 421s + } 421s + else if (is.na(useNames) || !useNames) names(res) <- NULL 421s + 421s + res 421s + } 421s > 421s > set.seed(1) 421s > 421s > x <- matrix(rnorm(20), nrow = 5, ncol = 4) 421s > print(x) 421s [,1] [,2] [,3] [,4] 421s [1,] -0.6264538 -0.8204684 1.5117812 -0.04493361 421s [2,] 0.1836433 0.4874291 0.3898432 -0.01619026 421s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 421s [4,] 1.5952808 0.5757814 -2.2146999 0.82122120 421s [5,] 0.3295078 -0.3053884 1.1249309 0.59390132 421s > 421s > # To check names attribute 421s > dimnames <- list(letters[1:5], LETTERS[1:4]) 421s > 421s > # Non-weighted row medians 421s > x_est0 <- rowMedians(x) 421s > x_est1 <- rowWeightedMedians(x) 421s > stopifnot(all.equal(x_est1, x_est0)) 421s > x_est2 <- colWeightedMedians(t(x)) 421s > stopifnot(all.equal(x_est2, x_est0)) 421s > # Test with and without dimnames on x 421s > for (setDimnames in c(TRUE, FALSE)) { 421s + if (setDimnames) dimnames(x) <- dimnames 421s + else dimnames(x) <- NULL 421s + # Check names attribute 421s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 421s + x_est0 <- rowMedians(x, useNames = useNames) 421s + x_est1 <- rowWeightedMedians(x, useNames = useNames) 421s + x_est2 <- colWeightedMedians(t(x), useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + stopifnot(all.equal(x_est2, x_est0)) 421s + } 421s + } 421s > 421s > 421s > # Weighted row medians (uniform weights) 421s > w <- rep(2.5, times = ncol(x)) 421s > x_est0 <- rowMedians(x) 421s > x_est1 <- rowWeightedMedians(x, w = w) 421s > stopifnot(all.equal(x_est1, x_est0)) 421s > x_est2 <- colWeightedMedians(t(x), w = w) 421s > stopifnot(all.equal(x_est2, x_est0)) 421s > # Test with and without dimnames on x 421s > for (setDimnames in c(TRUE, FALSE)) { 421s + if (setDimnames) dimnames(x) <- dimnames 421s + else dimnames(x) <- NULL 421s + # Check names attribute 421s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 421s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 421s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 421s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + } 421s + } 421s > 421s > 421s > # Weighted row medians (excluding some columns) 421s > w <- c(1, 1, 0, 1) 421s > x_est0 <- rowMedians(x[, (w == 1), drop = FALSE]) 421s > x_est1 <- rowWeightedMedians(x, w = w) 421s > stopifnot(all.equal(x_est1, x_est0)) 421s > x_est2 <- colWeightedMedians(t(x), w = w) 421s > stopifnot(all.equal(x_est2, x_est0)) 421s > # Test with and without dimnames on x 421s > for (setDimnames in c(TRUE, FALSE)) { 421s + if (setDimnames) dimnames(x) <- dimnames 421s + else dimnames(x) <- NULL 421s + # Check names attribute 421s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 421s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 421s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 421s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + } 421s + } 421s > 421s > # Weighted row medians (excluding some columns) 421s > w <- c(0, 1, 0, 0) 421s > x_est0 <- rowMedians(x[, (w == 1), drop = FALSE]) 421s > x_est1 <- rowWeightedMedians(x, w = w) 421s > stopifnot(all.equal(x_est1, x_est0)) 421s > x_est2 <- colWeightedMedians(t(x), w = w) 421s > stopifnot(all.equal(x_est2, x_est0)) 421s > # Test with and without dimnames on x 421s > for (setDimnames in c(TRUE, FALSE)) { 421s + if (setDimnames) dimnames(x) <- dimnames 421s + else dimnames(x) <- NULL 421s + # Check names attribute 421s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 421s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 421s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 421s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + } 421s + } 421s > 421s > # Weighted row medians (all zero weights) 421s > w <- c(0, 0, 0, 0) 421s > x_est0 <- rowMedians(x[, (w == 1), drop = FALSE]) 421s > x_est1 <- rowWeightedMedians(x, w = w) 421s > stopifnot(all.equal(x_est1, x_est0)) 421s > x_est2 <- colWeightedMedians(t(x), w = w) 421s > stopifnot(all.equal(x_est2, x_est0)) 421s > # Test with and without dimnames on x 421s > for (setDimnames in c(TRUE, FALSE)) { 421s + if (setDimnames) dimnames(x) <- dimnames 421s + else dimnames(x) <- NULL 421s + # Check names attribute 421s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 421s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 421s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 421s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + } 421s + } 421s > 421s > # Weighted medians by rows and columns 421s > w <- 1:4 421s > x_est1 <- rowWeightedMedians(x, w = w) 421s > x_est2 <- colWeightedMedians(t(x), w = w) 421s > stopifnot(all.equal(x_est2, x_est1)) 421s > # Test with and without dimnames on x 421s > for (setDimnames in c(TRUE, FALSE)) { 421s + if (setDimnames) dimnames(x) <- dimnames 421s + else dimnames(x) <- NULL 421s + # Check names attribute 421s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 421s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 421s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 421s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + } 421s + } 421s > 421s > 421s > # Weighted row medians with missing values 421s > x_est0 <- apply(x, MARGIN = 1L, FUN = weightedMedian, w = w, na.rm = TRUE) 421s > print(x_est0) 421s [1] -0.04493361 0.23519330 0.73832471 0.65759463 0.59390132 421s > x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE) 421s > print(x_est1) 421s [1] -0.04493361 0.23519330 0.73832471 0.65759463 0.59390132 421s > stopifnot(all.equal(x_est1, x_est0)) 421s > x_est2 <- colWeightedMedians(t(x), w = w) 421s > stopifnot(all.equal(x_est2, x_est0)) 421s > # Test with and without dimnames on x 421s > for (setDimnames in c(TRUE, FALSE)) { 421s + if (setDimnames) dimnames(x) <- dimnames 421s + else dimnames(x) <- NULL 421s + # Check names attribute 421s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 421s + x_est0 <- rowWeightedMedians_R(x, w = w, na.rm = TRUE, useNames = useNames) 421s + x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + x_est0 <- colWeightedMedians_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 421s + x_est1 <- colWeightedMedians(t(x), w = w, na.rm = TRUE, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + } 421s + } 421s > 421s > # Weighted medians by rows and columns 421s > w <- 1:4 421s > x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE) 421s > x_est2 <- colWeightedMedians(t(x), w = w, na.rm = TRUE) 421s > stopifnot(all.equal(x_est2, x_est1)) 421s > # Test with and without dimnames on x 421s > for (setDimnames in c(TRUE, FALSE)) { 421s + if (setDimnames) dimnames(x) <- dimnames 421s + else dimnames(x) <- NULL 421s + # Check names attribute 421s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 421s + x_est0 <- rowWeightedMedians_R(x, w = w, na.rm = TRUE, useNames = useNames) 421s + x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + x_est0 <- colWeightedMedians_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 421s + x_est1 <- colWeightedMedians(t(x), w = w, na.rm = TRUE, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + } 421s + } 421s > 421s > 421s > # Inf weight 421s > x <- matrix(1:2, nrow = 1, ncol = 2) 421s > w <- c(7, Inf) 421s > x_est1 <- rowWeightedMedians(x, w = w) 421s > x_est2 <- colWeightedMedians(t(x), w = w) 421s > stopifnot(identical(2, x_est1)) 421s > stopifnot(identical(2, x_est2)) 421s > # Test with and without dimnames on x 421s > dimnames <- list("a", LETTERS[1:2]) 421s > for (setDimnames in c(TRUE, FALSE)) { 421s + if (setDimnames) dimnames(x) <- dimnames 421s + else dimnames(x) <- NULL 421s + # Check names attribute 421s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 421s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 421s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 421s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 421s + stopifnot(all.equal(x_est1, x_est0)) 421s + } 421s + } 421s > 421s 421s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 421s Copyright (C) 2024 The R Foundation for Statistical Computing 421s Platform: s390x-ibm-linux-gnu (64-bit) 421s 421s R is free software and comes with ABSOLUTELY NO WARRANTY. 421s You are welcome to redistribute it under certain conditions. 421s Type 'license()' or 'licence()' for distribution details. 421s 421s R is a collaborative project with many contributors. 421s Type 'contributors()' for more information and 421s 'citation()' on how to cite R or R packages in publications. 421s 421s Type 'demo()' for some demos, 'help()' for on-line help, or 421s 'help.start()' for an HTML browser interface to help. 421s Type 'q()' to quit R. 421s 421s > library("matrixStats") 421s > 421s > ## Create isFALSE() if running on an old version of R 421s > if (!exists("isFALSE", mode="function")) { 421s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 421s + } 421s > 421s > rowWeightedMedians_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 421s + res <- apply(x, MARGIN = 1L, FUN = weightedMedian, w = w, na.rm = na.rm, ...) 421s + 421s + # Keep naming support consistency same as rowWeightedMedians() 421s + if (!is.null(w)) { 421s + if (isFALSE(useNames)) names(res) <- NULL 421s + } 421s + else if (is.na(useNames) || !useNames) names(res) <- NULL 421s + 421s + res 421s + } 421s > 421s > 421s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 421s > # Subsetted tests 421s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 421s > source("utils/validateIndicesFramework.R") 421s > # To check names attribute 421s > dimnames <- list(letters[1:6], LETTERS[1:6]) 421s > for (mode in c("numeric", "integer", "logical")) { 421s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 421s + w <- runif(6, min = 0, max = 6) 421s + storage.mode(x) <- mode 421s + storage.mode(w) <- if (mode == "logical") "integer" else mode 421s + if (mode == "numeric") w[1] <- Inf 421s + 421s + # Test with and without dimnames on x 421s + for (setDimnames in c(TRUE, FALSE)) { 421s + if (setDimnames) dimnames(x) <- dimnames 421s + else dimnames(x) <- NULL 421s + 421s + count <- 0L 421s + for (rows in index_cases) { 421s + for (cols in index_cases) { 421s + count <- count + 1L 421s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 421s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 421s + useNames <- useNames[count %% length(useNames) + 1] 421s + 421s + validateIndicesTestMatrix_w(x, w, rows, cols, 421s + ftest = rowWeightedMedians, 421s + fsure = rowWeightedMedians_R, 421s + na.rm = na.rm, useNames = useNames) 421s + validateIndicesTestMatrix_w(x, w, rows, cols, 421s + fcoltest = colWeightedMedians, 421s + fsure = rowWeightedMedians_R, 421s + na.rm = na.rm, useNames = useNames) 421s + } 421s + } 421s + } 421s + } 422s > 422s 422s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 422s Copyright (C) 2024 The R Foundation for Statistical Computing 422s Platform: s390x-ibm-linux-gnu (64-bit) 422s 422s R is free software and comes with ABSOLUTELY NO WARRANTY. 422s You are welcome to redistribute it under certain conditions. 422s Type 'license()' or 'licence()' for distribution details. 422s 422s R is a collaborative project with many contributors. 422s Type 'contributors()' for more information and 422s 'citation()' on how to cite R or R packages in publications. 422s 422s Type 'demo()' for some demos, 'help()' for on-line help, or 422s 'help.start()' for an HTML browser interface to help. 422s Type 'q()' to quit R. 422s 423s > library("matrixStats") 423s > 423s > set.seed(1) 423s > 423s > x <- matrix(rnorm(20), nrow = 5L, ncol = 4L) 423s > print(x) 423s [,1] [,2] [,3] [,4] 423s [1,] -0.6264538 -0.8204684 1.5117812 -0.04493361 423s [2,] 0.1836433 0.4874291 0.3898432 -0.01619026 423s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 423s [4,] 1.5952808 0.5757814 -2.2146999 0.82122120 423s [5,] 0.3295078 -0.3053884 1.1249309 0.59390132 423s > 423s > # To check names attribute 423s > dimnames <- list(letters[1:5], LETTERS[1:4]) 423s > 423s > # Weighted row variances (uniform weights - all w = 1) 423s > # Non-weighted row variances 423s > x_est0 <- rowVars(x) 423s > w <- rep(1, times = ncol(x)) 423s > x_est1 <- rowWeightedVars(x, w = w) 423s > print(x_est1) 423s [1] 1.11767161 0.05022969 0.83582537 2.76819528 0.35351857 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > x_est2 <- colWeightedVars(t(x), w = w) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > # Check names attribute 423s > dimnames(x) <- dimnames 423s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 423s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > x_est0 <- rowVars(x, useNames = TRUE) 423s > if (!matrixStats:::isUseNamesNADefunct()) { 423s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 423s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 423s + stopifnot(all.equal(x_est1, x_est0)) 423s + stopifnot(all.equal(x_est2, x_est0)) 423s + } 423s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 423s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > dimnames(x) <- NULL 423s > 423s > 423s > # Weighted row variances (uniform weights - all w = 3) 423s > x3 <- cbind(x, x, x) 423s > x_est0 <- rowVars(x3) 423s > w <- rep(3, times = ncol(x)) 423s > x_est1 <- rowWeightedVars(x, w = w) 423s > print(x_est1) 423s [1] 0.91445859 0.04109702 0.68385712 2.26488705 0.28924246 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > x_est2 <- colWeightedVars(t(x), w = w) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > # Check names attribute 423s > dimnames(x) <- dimnames 423s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 423s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > x3 <- cbind(x, x, x) 423s > x_est0 <- rowVars(x3, useNames = TRUE) 423s > if (!matrixStats:::isUseNamesNADefunct()) { 423s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 423s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 423s + stopifnot(all.equal(x_est1, x_est0)) 423s + stopifnot(all.equal(x_est2, x_est0)) 423s + } 423s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 423s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > dimnames(x) <- NULL 423s > 423s > 423s > # Weighted row variances (excluding some columns) 423s > w <- c(1, 1, 0, 1) 423s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE]) 423s > x_est1 <- rowWeightedVars(x, w = w) 423s > print(x_est1) 423s [1] 0.16287693 0.06430861 0.94767651 0.28313135 0.21361984 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > x_est2 <- colWeightedVars(t(x), w = w) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > # Check names attribute 423s > dimnames(x) <- dimnames 423s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 423s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE], useNames = TRUE) 423s > if (!matrixStats:::isUseNamesNADefunct()) { 423s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 423s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 423s + stopifnot(all.equal(x_est1, x_est0)) 423s + stopifnot(all.equal(x_est2, x_est0)) 423s + } 423s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 423s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > dimnames(x) <- NULL 423s > 423s > 423s > # Weighted row variances (excluding some columns) 423s > w <- c(0, 1, 0, 0) 423s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE]) 423s > x_est1 <- rowWeightedVars(x, w = w) 423s > #stopifnot(all.equal(x_est1, x_est0)) 423s > x_est2 <- colWeightedVars(t(x), w = w) 423s > stopifnot(all.equal(x_est2, x_est1)) 423s > # Check names attribute 423s > dimnames(x) <- dimnames 423s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 423s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE], useNames = TRUE) 423s > if (!matrixStats:::isUseNamesNADefunct()) { 423s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 423s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 423s + stopifnot(all.equal(x_est1, x_est0)) 423s + stopifnot(all.equal(x_est2, x_est0)) 423s + } 423s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 423s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > dimnames(x) <- NULL 423s > 423s > 423s > # Weighted row variances (all zero weights) 423s > w <- c(0, 0, 0, 0) 423s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE]) 423s > x_est1 <- rowWeightedVars(x, w = w) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > x_est2 <- colWeightedVars(t(x), w = w) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > # Check names attribute 423s > dimnames(x) <- dimnames 423s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 423s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE], useNames = TRUE) 423s > if (!matrixStats:::isUseNamesNADefunct()) { 423s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 423s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 423s + stopifnot(all.equal(x_est1, x_est0)) 423s + stopifnot(all.equal(x_est2, x_est0)) 423s + } 423s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 423s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > dimnames(x) <- NULL 423s > 423s > # Weighted variances by rows and columns 423s > w <- 1:4 423s > # Test with and without dimnames on x 423s > for (setDimnames in c(TRUE, FALSE)) { 423s + if (setDimnames) dimnames(x) <- dimnames 423s + else dimnames(x) <- NULL 423s + # Check names attribute 423s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 423s + x_est1 <- rowWeightedVars(x, w = w, useNames = useNames) 423s + print(x_est1) 423s + x_est2 <- colWeightedVars(t(x), w = w, useNames = useNames) 423s + stopifnot(all.equal(x_est2, x_est1)) 423s + } 423s + } 423s a b c d e 423s 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 423s [1] 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 423s [1] 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 423s [1] 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 423s > 423s > 423s > x[sample(length(x), size = 0.3 * length(x))] <- NA 423s > print(x) 423s [,1] [,2] [,3] [,4] 423s [1,] -0.6264538 NA 1.5117812 -0.04493361 423s [2,] 0.1836433 NA NA -0.01619026 423s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 423s [4,] 1.5952808 NA -2.2146999 0.82122120 423s [5,] 0.3295078 NA NA 0.59390132 423s > 423s > # Non-weighted row variances with missing values 423s > x_est0 <- rowVars(x, na.rm = TRUE) 423s > x_est1 <- rowWeightedVars(x, w = rep(1, times = ncol(x)), na.rm = TRUE) 423s > print(x_est1) 423s [1] 1.22226258 0.01996673 0.83582537 4.05532299 0.03495197 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > x_est2 <- colWeightedVars(t(x), w = rep(1, times = ncol(x)), na.rm = TRUE) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > # Check names attribute 423s > dimnames(x) <- dimnames 423s > x_est1 <- rowWeightedVars(x, w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = FALSE) 423s > x_est2 <- colWeightedVars(t(x), w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = FALSE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > x_est0 <- rowVars(x, na.rm = TRUE, useNames = TRUE) 423s > x_est1 <- rowWeightedVars(x, w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = TRUE) 423s > x_est2 <- colWeightedVars(t(x), w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = TRUE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > dimnames(x) <- NULL 423s > 423s > 423s > # Weighted row variances with missing values 423s > # Test with and without dimnames on x 423s > for (setDimnames in c(TRUE, FALSE)) { 423s + if (setDimnames) dimnames(x) <- dimnames 423s + else dimnames(x) <- NULL 423s + # Check names attribute 423s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 423s + x_est1 <- rowWeightedVars(x, w = w, na.rm = TRUE, useNames = useNames) 423s + print(x_est1) 423s + x_est2 <- colWeightedVars(t(x), w = w, na.rm = TRUE, useNames = useNames) 423s + stopifnot(all.equal(x_est2, x_est1)) 423s + } 423s + } 423s a b c d e 423s 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 423s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 423s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 423s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 423s > 423s > 423s > # Weighted variances by rows and columns 423s > w <- 1:4 423s > # Test with and without dimnames on x 423s > for (setDimnames in c(TRUE, FALSE)) { 423s + if (setDimnames) dimnames(x) <- dimnames 423s + else dimnames(x) <- NULL 423s + # Check names attribute 423s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 423s + x_est1 <- rowWeightedVars(x, w = w, na.rm = TRUE, useNames = useNames) 423s + print(x_est1) 423s + x_est2 <- colWeightedVars(t(x), w = w, na.rm = TRUE, useNames = useNames) 423s + stopifnot(all.equal(x_est2, x_est1)) 423s + } 423s + } 423s a b c d e 423s 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 423s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 423s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 423s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 423s > 423s > 423s > # Weighted row standard deviation (excluding some columns) 423s > w <- c(1, 1, 0, 1) 423s > ## FIXME: rowVars()/rowSds() needs na.rm = FALSE (wrong default) 423s > x_est0 <- rowSds(x[, (w == 1), drop = FALSE], na.rm = FALSE) 423s > x_est1 <- rowWeightedSds(x, w = w) 423s > print(x_est1) 423s [1] NA NA 0.9734868 NA NA 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > # Check names attribute 423s > dimnames(x) <- dimnames 423s > x_est1 <- rowWeightedSds(x, w = w, na.rm = FALSE, useNames = FALSE) 423s > x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE, useNames = FALSE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > x_est0 <- rowSds(x[, (w == 1), drop = FALSE], na.rm = FALSE, useNames = TRUE) 423s > if (!matrixStats:::isUseNamesNADefunct()) { 423s + x_est1 <- rowWeightedSds(x, w = w, na.rm = FALSE, useNames = NA) 423s + x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE, useNames = NA) 423s + stopifnot(all.equal(x_est1, x_est0)) 423s + stopifnot(all.equal(x_est2, x_est0)) 423s + } 423s > x_est1 <- rowWeightedSds(x, w = w, na.rm = FALSE, useNames = TRUE) 423s > x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE, useNames = TRUE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > dimnames(x) <- NULL 423s > 423s > 423s > # Weighted row MADs (excluding some columns) 423s > w <- c(1, 1, 0, 1) 423s > x_est0 <- rowMads(x[, (w == 1), drop = FALSE]) 423s > x_est1 <- rowWeightedMads(x, w = w) 423s > print(x_est1) 423s [1] NA NA 0.3046914 NA NA 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > x_est2 <- colWeightedMads(t(x), w = w) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > # Check names attribute 423s > dimnames(x) <- dimnames 423s > x_est1 <- rowWeightedMads(x, w = w, useNames = FALSE) 423s > x_est2 <- colWeightedMads(t(x), w = w, useNames = FALSE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > x_est0 <- rowMads(x[, (w == 1), drop = FALSE], useNames = TRUE) 423s > if (!matrixStats:::isUseNamesNADefunct()) { 423s + x_est1 <- rowWeightedMads(x, w = w, useNames = NA) 423s + x_est2 <- colWeightedMads(t(x), w = w, useNames = NA) 423s + stopifnot(all.equal(x_est1, x_est0)) 423s + stopifnot(all.equal(x_est2, x_est0)) 423s + } 423s > x_est1 <- rowWeightedMads(x, w = w, useNames = TRUE) 423s > x_est2 <- colWeightedMads(t(x), w = w, useNames = TRUE) 423s > stopifnot(all.equal(x_est1, x_est0)) 423s > stopifnot(all.equal(x_est2, x_est0)) 423s > dimnames(x) <- NULL 423s > 423s 423s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 423s Copyright (C) 2024 The R Foundation for Statistical Computing 423s Platform: s390x-ibm-linux-gnu (64-bit) 423s 423s R is free software and comes with ABSOLUTELY NO WARRANTY. 423s You are welcome to redistribute it under certain conditions. 423s Type 'license()' or 'licence()' for distribution details. 423s 423s R is a collaborative project with many contributors. 423s Type 'contributors()' for more information and 423s 'citation()' on how to cite R or R packages in publications. 423s 423s Type 'demo()' for some demos, 'help()' for on-line help, or 423s 'help.start()' for an HTML browser interface to help. 423s Type 'q()' to quit R. 423s 423s > library("matrixStats") 423s > 423s > fcns <- list( 423s + weightedVar = c(rowWeightedVars, colWeightedVars), 423s + weightedSd = c(rowWeightedSds, colWeightedSds), 423s + weightedMad = c(rowWeightedMads, colWeightedMads) 423s + ) 423s > 423s > 423s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 423s > # Subsetted tests 423s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 423s > source("utils/validateIndicesFramework.R") 423s > # To check names attribute 423s > dimnames <- list(letters[1:6], LETTERS[1:6]) 423s > for (fcn in names(fcns)) { 423s + cat(sprintf("subsetted tests on matrix %s()...\n", fcn)) 423s + row_fcn <- fcns[[fcn]][[1]] 423s + col_fcn <- fcns[[fcn]][[2]] 423s + 423s + for (mode in c("numeric", "integer")) { 423s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 423s + w <- runif(6, min = 0, max = 6) 423s + storage.mode(x) <- mode 423s + storage.mode(w) <- mode 423s + if (mode == "numeric") w[1] <- Inf 423s + 423s + # Test with and without dimnames on x 423s + for (setDimnames in c(TRUE, FALSE)) { 423s + if (setDimnames) dimnames(x) <- dimnames 423s + else dimnames(x) <- NULL 423s + 423s + count <- 0L 423s + for (rows in index_cases) { 423s + for (cols in index_cases) { 423s + count <- count + 1L 423s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 423s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 423s + useNames <- useNames[count %% length(useNames) + 1] 423s + 423s + validateIndicesTestMatrix_w(x, w, rows, cols, 423s + ftest = row_fcn, fsure = row_fcn, 423s + na.rm = na.rm, useNames = useNames) 423s + validateIndicesTestMatrix_w(x, w, rows, cols, 423s + fcoltest = col_fcn, fsure = row_fcn, 423s + na.rm = na.rm, useNames = useNames) 423s + } 423s + } 423s + } 423s + } 423s + cat(sprintf("%s()...DONE\n", fcn)) 423s + } 423s subsetted tests on matrix weightedVar()... 424s weightedVar()...DONE 424s subsetted tests on matrix weightedSd()... 424s weightedSd()...DONE 424s subsetted tests on matrix weightedMad()... 425s weightedMad()...DONE 425s > 425s 425s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 425s Copyright (C) 2024 The R Foundation for Statistical Computing 425s Platform: s390x-ibm-linux-gnu (64-bit) 425s 425s R is free software and comes with ABSOLUTELY NO WARRANTY. 425s You are welcome to redistribute it under certain conditions. 425s Type 'license()' or 'licence()' for distribution details. 425s 425s R is a collaborative project with many contributors. 425s Type 'contributors()' for more information and 425s 'citation()' on how to cite R or R packages in publications. 425s 425s Type 'demo()' for some demos, 'help()' for on-line help, or 425s 'help.start()' for an HTML browser interface to help. 425s Type 'q()' to quit R. 425s 425s > library("matrixStats") 425s > 425s > signTabulate0 <- function(x, ...) { 425s + nneg <- sum(x < 0, na.rm = TRUE) 425s + nzero <- sum(x == 0, na.rm = TRUE) 425s + npos <- sum(x > 0, na.rm = TRUE) 425s + nna <- sum(is.na(x)) 425s + nneginf <- sum(is.infinite(x) & x < 0, na.rm = TRUE) 425s + nposinf <- sum(is.infinite(x) & x > 0, na.rm = TRUE) 425s + res <- c(nneg, nzero, npos, nna, nneginf, nposinf) 425s + res <- as.double(res) 425s + names(res) <- c("-1", "0", "+1", "NA", "-Inf", "+Inf") 425s + if (is.integer(x)) res <- res[1:4] 425s + res 425s + } # signTabulate0() 425s > 425s > 425s > # Simulate data 425s > set.seed(0xBEEF) 425s > n <- 100L 425s > x <- runif(n) 425s > x[sample(n, size = 0.1 * n)] <- 0 425s > x[sample(n, size = 0.1 * n)] <- NA_real_ 425s > x[sample(n, size = 0.1 * n)] <- -Inf 425s > x[sample(n, size = 0.1 * n)] <- +Inf 425s > 425s > # Doubles 425s > message("Doubles:") 425s > counts0 <- signTabulate0(x) 425s > print(counts0) 425s -1 0 +1 NA -Inf +Inf 425s 9 7 77 7 9 10 425s > counts1 <- signTabulate(x) 425s > print(counts1) 425s -1 0 +1 NA -Inf +Inf 425s 9 7 77 7 9 10 425s > stopifnot(identical(counts1, counts0)) 425s > 425s > # Integers 425s > message("Integers:") 425s > x <- suppressWarnings(as.integer(x)) 425s > counts0 <- signTabulate0(x) 425s > print(counts0) 425s -1 0 +1 NA 425s 0 74 0 26 425s > counts1 <- signTabulate(x) 425s > print(counts1) 425s -1 0 +1 NA 425s 0 74 0 26 425s > stopifnot(identical(counts1, counts0)) 425s > 425s Doubles: 425s Integers: 425s 425s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 425s Copyright (C) 2024 The R Foundation for Statistical Computing 425s Platform: s390x-ibm-linux-gnu (64-bit) 425s 425s R is free software and comes with ABSOLUTELY NO WARRANTY. 425s You are welcome to redistribute it under certain conditions. 425s Type 'license()' or 'licence()' for distribution details. 425s 425s R is a collaborative project with many contributors. 425s Type 'contributors()' for more information and 425s 'citation()' on how to cite R or R packages in publications. 425s 425s Type 'demo()' for some demos, 'help()' for on-line help, or 425s 'help.start()' for an HTML browser interface to help. 425s Type 'q()' to quit R. 425s 425s > library("matrixStats") 425s > 425s > signTabulate0 <- function(x, ...) { 425s + nneg <- sum(x < 0, na.rm = TRUE) 425s + nzero <- sum(x == 0, na.rm = TRUE) 425s + npos <- sum(x > 0, na.rm = TRUE) 425s + nna <- sum(is.na(x)) 425s + nneginf <- sum(is.infinite(x) & x < 0, na.rm = TRUE) 425s + nposinf <- sum(is.infinite(x) & x > 0, na.rm = TRUE) 425s + res <- c(nneg, nzero, npos, nna, nneginf, nposinf) 425s + res <- as.double(res) 425s + names(res) <- c("-1", "0", "+1", "NA", "-Inf", "+Inf") 425s + if (is.integer(x)) res <- res[1:4] 425s + res 425s + } # signTabulate0() 425s > 425s > 425s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 425s > # Subsetted tests 425s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 425s > source("utils/validateIndicesFramework.R") 425s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 425s > x[2:3, 4:5] <- +Inf 425s > x[4:5, 1:2] <- -Inf 425s > for (idxs in index_cases) { 425s + validateIndicesTestVector(x, idxs, 425s + ftest = signTabulate, fsure = signTabulate0) 425s + } 425s > 426s 426s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 426s Copyright (C) 2024 The R Foundation for Statistical Computing 426s Platform: s390x-ibm-linux-gnu (64-bit) 426s 426s R is free software and comes with ABSOLUTELY NO WARRANTY. 426s You are welcome to redistribute it under certain conditions. 426s Type 'license()' or 'licence()' for distribution details. 426s 426s R is a collaborative project with many contributors. 426s Type 'contributors()' for more information and 426s 'citation()' on how to cite R or R packages in publications. 426s 426s Type 'demo()' for some demos, 'help()' for on-line help, or 426s 'help.start()' for an HTML browser interface to help. 426s Type 'q()' to quit R. 426s 426s > library("matrixStats") 426s > options(warn = 1) 426s > 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > # Consistency checks 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > set.seed(1) 426s > 426s > sum2_R <- function(x, na.rm = FALSE, idxs = NULL) { 426s + if (is.null(idxs)) { 426s + sum(x, na.rm = na.rm) 426s + } else { 426s + sum(x[idxs], na.rm = na.rm) 426s + } 426s + } # sum2_R() 426s > 426s > 426s > cat("Consistency checks:\n") 426s Consistency checks: 426s > for (kk in 1:20) { 426s + cat("Random test #", kk, "\n", sep = "") 426s + 426s + # Simulate data in a matrix of any shape 426s + n <- sample(1e3, size = 1L) 426s + x <- rnorm(n, sd = 100) 426s + 426s + # Add NAs? 426s + if ((kk %% 4) %in% c(3, 0)) { 426s + cat("Adding NAs\n") 426s + nna <- sample(n, size = 1L) 426s + na_values <- c(NA_real_, NaN) 426s + t <- sample(na_values, size = nna, replace = TRUE) 426s + x[sample(length(x), size = nna)] <- t 426s + } 426s + 426s + # Integer or double? 426s + if ((kk %% 4) %in% c(2, 0)) { 426s + cat("Coercing to integers\n") 426s + storage.mode(x) <- "integer" 426s + } 426s + 426s + na.rm <- sample(c(TRUE, FALSE), size = 1L) 426s + 426s + # Sum over all 426s + y0 <- sum2_R(x, na.rm = na.rm) 426s + y1 <- sum2(x, na.rm = na.rm) 426s + stopifnot(all.equal(y1, y0)) 426s + 426s + # Sum over subset 426s + nidxs <- sample(n, size = 1L) 426s + idxs <- sample(n, size = nidxs) 426s + y0 <- sum2_R(x, na.rm = na.rm, idxs = idxs) 426s + y1 <- sum2(x, na.rm = na.rm, idxs = idxs) 426s + stopifnot(all.equal(y1, y0)) 426s + 426s + if (storage.mode(x) == "integer") { 426s + storage.mode(x) <- "logical" 426s + 426s + y0 <- sum2_R(x, na.rm = na.rm) 426s + y1 <- sum2(x, na.rm = na.rm) 426s + stopifnot(all.equal(y1, y0)) 426s + 426s + y0 <- sum2_R(x, na.rm = na.rm, idxs = idxs) 426s + y1 <- sum2(x, na.rm = na.rm, idxs = idxs) 426s + stopifnot(all.equal(y1, y0)) 426s + } 426s + } # for (kk ...) 426s Random test #1 426s Random test #2 426s Coercing to integers 426s Random test #3 426s Adding NAs 426s Random test #4 426s Adding NAs 426s Coercing to integers 426s Random test #5 426s Random test #6 426s Coercing to integers 426s Random test #7 426s Adding NAs 426s Random test #8 426s Adding NAs 426s Coercing to integers 426s Random test #9 426s Random test #10 426s Coercing to integers 426s Random test #11 426s Adding NAs 426s Random test #12 426s Adding NAs 426s Coercing to integers 426s Random test #13 426s Random test #14 426s Coercing to integers 426s Random test #15 426s Adding NAs 426s Random test #16 426s Adding NAs 426s Coercing to integers 426s Random test #17 426s Random test #18 426s Coercing to integers 426s Random test #19 426s Adding NAs 426s Random test #20 426s Adding NAs 426s Coercing to integers 426s > 426s > 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > # All missing values 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > for (n in 0:2) { 426s + for (na.rm in c(FALSE, TRUE)) { 426s + x <- rep(NA_real_, times = n) 426s + y0 <- sum(x, na.rm = na.rm) 426s + y <- sum2(x, na.rm = na.rm) 426s + stopifnot(all.equal(y, y0)) 426s + 426s + x <- rep(NA_integer_, times = n) 426s + y0 <- sum(x, na.rm = na.rm) 426s + y <- sum2(x, na.rm = na.rm) 426s + stopifnot(all.equal(y, y0)) 426s + 426s + x <- rep(NA, times = n) 426s + y0 <- sum(x, na.rm = na.rm) 426s + y <- sum2(x, na.rm = na.rm) 426s + stopifnot(all.equal(y, y0)) 426s + } 426s + } 426s > 426s > 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > # Special cases 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > for (na.rm in c(FALSE, TRUE)) { 426s + # Summing over zero elements (integers) 426s + x <- integer(0) 426s + s1 <- sum(x, na.rm = na.rm) 426s + s2 <- sum2(x, na.rm = na.rm) 426s + stopifnot(identical(s1, s2)) 426s + 426s + x <- 1:10 426s + idxs <- integer(0) 426s + s1 <- sum(x[idxs], na.rm = na.rm) 426s + s2 <- sum2(x, idxs = idxs, na.rm = na.rm) 426s + stopifnot(identical(s1, s2)) 426s + 426s + # Summing over NA_integer_:s 426s + x <- rep(NA_integer_, times = 10L) 426s + s1 <- sum(x, na.rm = na.rm) 426s + s2 <- sum2(x, na.rm = na.rm) 426s + stopifnot(identical(s1, s2)) 426s + 426s + x <- rep(NA_integer_, times = 10L) 426s + idxs <- 1:5 426s + s1 <- sum(x[idxs], na.rm = na.rm) 426s + s2 <- sum2(x, idxs = idxs, na.rm = na.rm) 426s + stopifnot(identical(s1, s2)) 426s + 426s + 426s + # Summing over zero elements (doubles) 426s + x <- double(0) 426s + s1 <- sum(x) 426s + s2 <- sum2(x) 426s + stopifnot( 426s + identical(s1, 0), 426s + identical(s1, s2) 426s + ) 426s + 426s + x <- as.double(1:10) 426s + idxs <- integer(0) 426s + s1 <- sum(x[idxs]) 426s + s2 <- sum2(x, idxs = idxs) 426s + stopifnot( 426s + identical(s1, 0), 426s + identical(s1, s2) 426s + ) 426s + 426s + # Summing over NA_real_:s 426s + x <- rep(NA_real_, times = 10L) 426s + s1 <- sum(x, na.rm = na.rm) 426s + s2 <- sum2(x, na.rm = na.rm) 426s + stopifnot( 426s + !na.rm || s1 == 0, 426s + identical(s1, s2) 426s + ) 426s + 426s + x <- rep(NA_real_, times = 10L) 426s + idxs <- 1:5 426s + s1 <- sum(x[idxs], na.rm = na.rm) 426s + s2 <- sum2(x, idxs = idxs, na.rm = na.rm) 426s + stopifnot( 426s + !na.rm || s1 == 0, 426s + identical(s1, s2) 426s + ) 426s + 426s + # Summing over -Inf:s 426s + x <- rep(-Inf, times = 3L) 426s + s1 <- sum(x, na.rm = na.rm) 426s + s2 <- sum2(x, na.rm = na.rm) 426s + stopifnot( 426s + is.infinite(s1) && s1 < 0, 426s + identical(s1, s2) 426s + ) 426s + 426s + # Summing over +Inf:s 426s + x <- rep(+Inf, times = 3L) 426s + s1 <- sum(x, na.rm = na.rm) 426s + s2 <- sum2(x, na.rm = na.rm) 426s + stopifnot(identical(s1, s2)) 426s + stopifnot( 426s + is.infinite(s1) && s1 > 0, 426s + identical(s1, s2) 426s + ) 426s + 426s + # Summing over mix of -Inf:s and +Inf:s 426s + x <- rep(c(-Inf, +Inf), times = 3L) 426s + s1 <- sum(x, na.rm = na.rm) 426s + s2 <- sum2(x, na.rm = na.rm) 426s + stopifnot( 426s + is.nan(s1), 426s + identical(s1, s2) 426s + ) 426s + 426s + # Summing over mix of -Inf:s and +Inf:s and numerics 426s + x <- rep(c(-Inf, +Inf, 3.14), times = 2L) 426s + s1 <- sum(x, na.rm = na.rm) 426s + s2 <- sum2(x, na.rm = na.rm) 426s + stopifnot( 426s + is.nan(s1), 426s + identical(s1, s2) 426s + ) 426s + 426s + # Summing over mix of NaN, NA, +Inf, and numerics 426s + x <- c(NaN, NA, +Inf, 3.14) 426s + s1 <- sum(x, na.rm = na.rm) 426s + s2 <- sum2(x, na.rm = na.rm) 426s + if (na.rm) { 426s + stopifnot( 426s + is.infinite(s1) && s1 > 0, 426s + identical(s2, s1) 426s + ) 426s + } else { 426s + stopifnot(is.na(s1), is.na(s2)) 426s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 426s + ## returned here (as one would expect). NaN might very well be returned, 426s + ## when both NA and NaN are involved. This is an accepted feature in R, 426s + ## which is documented in help("is.nan"). See also 426s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 426s + ## Thus, we cannot guarantee that s1 is identical to s0. 426s + } 426s + 426s + # Summing over mix of NaN, NA, +Inf, and numerics 426s + x <- c(NA, NaN, +Inf, 3.14) 426s + s1 <- sum(x, na.rm = na.rm) 426s + s2 <- sum2(x, na.rm = na.rm) 426s + if (na.rm) { 426s + stopifnot( 426s + is.infinite(s1) && s1 > 0, 426s + identical(s2, s1) 426s + ) 426s + } else { 426s + stopifnot(is.na(s1), is.na(s2)) 426s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 426s + ## returned here (as one would expect). NaN might very well be returned, 426s + ## when both NA and NaN are involved. This is an accepted feature in R, 426s + ## which is documented in help("is.nan"). See also 426s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 426s + ## Thus, we cannot guarantee that s1 is identical to s0. 426s + } 426s + } 426s > 426s > 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > # Summing of large integers 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > x <- c(.Machine$integer.max, 1L, -.Machine$integer.max) 426s > 426s > # Total gives integer overflow 426s > s1 <- sum(x[1:2]) # NA_integer_ w/ warning 426s > s2 <- sum2(x[1:2]) # NA_integer_ w/ warning 426s Warning in sum2(x[1:2]) :> 426s Integer overflow. Use sum2(..., mode = "double") to avoid this. 426s stopifnot( 426s + getRversion() >= "3.5.0" || identical(s1, NA_integer_), 426s + identical(s2, NA_integer_) 426s + ) 426s > 426s > ## Assert above warning 426s > res <- tryCatch({ 426s + s2 <- sum2(x[1:2]) 426s + }, warning = identity) 426s > stopifnot(inherits(res, "warning")) 426s > 426s > 426s > # Total gives integer overflow (coerce to numeric) 426s > s1 <- sum(as.numeric(x[1:2])) # 2147483648 426s > s2 <- sum2(as.numeric(x[1:2])) # 2147483648 426s > s3 <- sum2(x[1:2], mode = "double") # 2147483648 426s > stopifnot( 426s + identical(s1, 2147483648), 426s + identical(s1, s2), 426s + identical(s1, s3) 426s + ) 426s > 426s > # Cumulative sum would give integer overflow but not the total 426s > s1 <- sum(x) # 1L 426s > s2 <- sum2(x) # 1L 426s > stopifnot( 426s + identical(s1, 1L), 426s + identical(s1, s2) 426s + ) 426s > 426s > # Input is double but coersing result to integer 426s > x <- c(1, 2, 3.1) 426s > s1 <- sum2(x) 426s > s2 <- sum2(x, mode = "integer") 426s > stopifnot( 426s + identical(as.integer(s1), s2) 426s + ) 426s > 426s > ## Assert above warning 426s > res <- tryCatch({ 426s + s2 <- sum2(x, mode = "integer") 426s + }, warning = identity) 426s > stopifnot(inherits(res, "warning")) 426s > Warning in sum2(x, mode = "integer") : 426s sum2(x, mode = "integer") called with typeof(x) == "double"; did you mean to use as.integer(sum2(x))? 426s 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > # Summing of large doubles 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > ## Double overflow 426s > x <- rep(.Machine$double.xmax, times = 2L) 426s > y0 <- sum(x) 426s > print(y0) 426s [1] Inf 426s > y <- sum2(x) 426s > print(y) 426s [1] Inf 426s > stopifnot( 426s + is.infinite(y) && y > 0, 426s + identical(y, y0) 426s + ) 426s > 426s > x <- rep(-.Machine$double.xmax, times = 2L) 426s > y0 <- sum(x) 426s > print(y0) 426s [1] -Inf 426s > y <- sum2(x) 426s > print(y) 426s [1] -Inf 426s > stopifnot( 426s + is.infinite(y) && y < 0, 426s + identical(y, y0) 426s + ) 426s > 426s > 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > # Argument 'idxs' 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > x <- 1:10 426s > idxs_list <- list( 426s + integer = 1:5, 426s + double = as.double(1:5), 426s + logical = (x <= 5) 426s + ) 426s > 426s > for (idxs in idxs_list) { 426s + cat("idxs:\n") 426s + str(idxs) 426s + s1 <- sum(x[idxs], na.rm = TRUE) 426s + s2 <- sum2(x, idxs = idxs, na.rm = TRUE) 426s + stopifnot(identical(s1, s2)) 426s + } 426s idxs: 426s int [1:5] 1 2 3 4 5 426s idxs: 426s num [1:5] 1 2 3 4 5 426s idxs: 426s logi [1:10] TRUE TRUE TRUE TRUE TRUE FALSE ... 426s > 426s 426s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 426s Copyright (C) 2024 The R Foundation for Statistical Computing 426s Platform: s390x-ibm-linux-gnu (64-bit) 426s 426s R is free software and comes with ABSOLUTELY NO WARRANTY. 426s You are welcome to redistribute it under certain conditions. 426s Type 'license()' or 'licence()' for distribution details. 426s 426s R is a collaborative project with many contributors. 426s Type 'contributors()' for more information and 426s 'citation()' on how to cite R or R packages in publications. 426s 426s Type 'demo()' for some demos, 'help()' for on-line help, or 426s 'help.start()' for an HTML browser interface to help. 426s Type 'q()' to quit R. 426s 426s > library("matrixStats") 426s > 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > # Subsetted tests 426s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 426s > source("utils/validateIndicesFramework.R") 426s > x <- runif(6, min = -6, max = 6) 426s > storage.mode(x) <- "integer" 426s > for (idxs in index_cases) { 426s + validateIndicesTestVector(x, idxs, 426s + ftest = sum2, fsure = sum, 426s + na.rm = FALSE) 426s + validateIndicesTestVector(x, idxs, 426s + ftest = sum2, fsure = sum, 426s + na.rm = TRUE) 426s + } 426s > 426s 426s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 426s Copyright (C) 2024 The R Foundation for Statistical Computing 426s Platform: s390x-ibm-linux-gnu (64-bit) 426s 426s R is free software and comes with ABSOLUTELY NO WARRANTY. 426s You are welcome to redistribute it under certain conditions. 426s Type 'license()' or 'licence()' for distribution details. 426s 426s R is a collaborative project with many contributors. 426s Type 'contributors()' for more information and 426s 'citation()' on how to cite R or R packages in publications. 426s 426s Type 'demo()' for some demos, 'help()' for on-line help, or 426s 'help.start()' for an HTML browser interface to help. 426s Type 'q()' to quit R. 426s 426s > library(matrixStats) 426s > source("utils/validateIndicesFramework.R") 426s > 426s > oopts <- options(matrixStats.validateIndices = "ignore") 426s > 426s > ftest <- function(x, idxs) validateIndices(idxs, length(x)) 426s > 426s > x <- 1:6 426s > for (idxs in index_cases) { 426s + for (mode in c("integer", "numeric", "logical")) { 426s + if (!is.null(idxs)) { 426s + suppressWarnings({storage.mode(idxs) <- mode}) 426s + } 426s + validateIndicesTestVector(x, idxs, ftest = ftest, fsure = identity) 426s + } 426s + } 426s > 426s > ftest <- function(x, idxs) validateIndices(idxs, length(x)) 426s > 426s > for (idxs in index_error_cases) { 426s + validateIndicesTestVector(x, idxs, ftest = ftest, fsure = identity) 426s + } 426s > 426s > 426s > ftest <- function(x, rows, cols) { 426s + vr <- validateIndices(rows, dim(x)[1], FALSE) 426s + vc <- validateIndices(cols, dim(x)[2], FALSE) 426s + 426s + stopifnot(all((vr > 0 & vr <= dim(x)[1]) | is.na(vr))) 426s + stopifnot(all((vc > 0 & vc <= dim(x)[2]) | is.na(vc))) 426s + suppressWarnings(x <- x[vr, vc, drop = FALSE]) 426s + x 426s + } 426s > 426s > x <- matrix(1:36, nrow = 6, ncol = 6) 426s > for (rows in index_cases) { 426s + for (cols in index_cases) { 426s + validateIndicesTestMatrix(x, rows, cols, ftest = ftest, fsure = identity) 426s + } 426s + } 426s > 426s > # Testing for 64-bit builds (64 bits = 8 bytes) 426s > if (.Machine$sizeof.pointer == 8L) { 426s + validateIndices(c(1.25*2^40, 3, 1*2^38, 1, 1.4*2^39), maxIdx = 1*2^41) 426s + } 426s [1] 1.374390e+12 3.000000e+00 2.748779e+11 1.000000e+00 7.696581e+11 426s > 426s > options(oopts) 426s > 426s 426s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 426s Copyright (C) 2024 The R Foundation for Statistical Computing 426s Platform: s390x-ibm-linux-gnu (64-bit) 426s 426s R is free software and comes with ABSOLUTELY NO WARRANTY. 426s You are welcome to redistribute it under certain conditions. 426s Type 'license()' or 'licence()' for distribution details. 426s 426s R is a collaborative project with many contributors. 426s Type 'contributors()' for more information and 426s 'citation()' on how to cite R or R packages in publications. 426s 426s Type 'demo()' for some demos, 'help()' for on-line help, or 426s 'help.start()' for an HTML browser interface to help. 426s Type 'q()' to quit R. 426s 427s > library("matrixStats") 427s > 427s > set.seed(1) 427s > x <- rnorm(1e4) 427s > 427s > 427s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 427s > # Variance estimators 427s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 427s > sigma2_a <- var(x) 427s > cat(sprintf("var(x) = %g\n", sigma2_a)) 427s var(x) = 1.02487 427s > 427s > sigma2_b <- varDiff(x) 427s > cat(sprintf("varDiff(x) = %g\n", sigma2_b)) 427s varDiff(x) = 1.01224 427s > 427s > d <- abs(sigma2_b - sigma2_a) 427s > cat(sprintf("Absolute difference = %g\n", d)) 427s Absolute difference = 0.0126268 427s > stopifnot(d < 0.02) 427s > 427s > 427s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 427s > # Standard deviation estimators 427s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 427s > sigma_a <- sd(x) 427s > cat(sprintf("sd(x) = %g\n", sigma_a)) 427s sd(x) = 1.01236 427s > 427s > sigma_b <- sdDiff(x) 427s > cat(sprintf("sdDiff(x) = %g\n", sigma_b)) 427s sdDiff(x) = 1.0061 427s > 427s > d <- abs(sigma_b - sigma_a) 427s > cat(sprintf("Absolute difference = %g\n", d)) 427s Absolute difference = 0.00625567 427s > stopifnot(d < 0.01) 427s > 427s > # Sanity checks 427s > stopifnot(abs(sigma2_a - sigma_a ^ 2) < 1e-9) 427s > stopifnot(abs(sigma2_b - sigma_b ^ 2) < 1e-9) 427s > 427s > 427s > sigma_a2 <- mad(x) 427s > cat(sprintf("mad(x) = %g\n", sigma_a2)) 427s mad(x) = 0.998376 427s > 427s > sigma_b2 <- madDiff(x) 427s > cat(sprintf("madDiff(x) = %g\n", sigma_b2)) 427s madDiff(x) = 1.02513 427s > 427s > d <- abs(sigma_b2 - sigma_a2) 427s > cat(sprintf("Absolute difference = %g\n", d)) 427s Absolute difference = 0.0267497 427s > stopifnot(d < 0.05) 427s > 427s > 427s > sigma_a3 <- IQR(x) 427s > cat(sprintf("IQR(x) = %g\n", sigma_a3)) 427s IQR(x) = 1.35105 427s > 427s > sigma_b3 <- iqrDiff(x) 427s > cat(sprintf("iqrDiff(x) = %g\n", sigma_b3)) 427s iqrDiff(x) = 1.37797 427s > 427s > d <- abs(sigma_b3 - sigma_a3) 427s > cat(sprintf("Absolute difference = %g\n", d)) 427s Absolute difference = 0.0269152 427s > stopifnot(d < 0.05) 427s > 427s > 427s > 427s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 427s > # Trimmed estimators 427s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 427s > y <- x 427s > outliers <- sample(length(x), size = 0.1 * length(x)) 427s > y[outliers] <- 100 * y[outliers] 427s > 427s > sigma_ao <- sd(y[-outliers]) 427s > cat(sprintf("sd(y) = %g\n", sigma_ao)) 427s sd(y) = 1.01166 427s > 427s > sigma_bo <- sdDiff(y[-outliers]) 427s > cat(sprintf("sdDiff(y) = %g\n", sigma_bo)) 427s sdDiff(y) = 1.00743 427s > 427s > d <- abs(sigma_b - sigma_a) 427s > cat(sprintf("Absolute difference = %g\n", d)) 427s Absolute difference = 0.00625567 427s > stopifnot(d < 0.01) 427s > 427s > sigma_bot <- sdDiff(y, trim = 0.05) 427s > cat(sprintf("sdDiff(y, trim = 0.05) = %g\n", sigma_bot)) 427s sdDiff(y, trim = 0.05) = 7.74327 427s > 427s > d <- abs(sigma_bot - sigma_a) 427s > cat(sprintf("Absolute difference = %g\n", d)) 427s Absolute difference = 6.73091 427s > #stopifnot(d < 1e-3) 427s > 427s > sigma_cot <- madDiff(y, trim = 0.05) 427s > cat(sprintf("madDiff(y, trim = 0.05) = %g\n", sigma_cot)) 427s madDiff(y, trim = 0.05) = 1.15278 427s > 427s > sigma_dot <- iqrDiff(y, trim = 0.05) 427s > cat(sprintf("iqrDiff(y, trim = 0.05) = %g\n", sigma_dot)) 427s iqrDiff(y, trim = 0.05) = 1.55762 427s > 427s > 427s > fcns <- list( 427s + varDiff = varDiff, 427s + sdDiff = sdDiff, 427s + madDiff = madDiff, 427s + iqrDiff = iqrDiff 427s + ) 427s > 427s > for (name in names(fcns)) { 427s + cat(sprintf("%s()...\n", name)) 427s + fcn <- fcns[[name]] 427s + 427s + for (mode in c("integer", "double")) { 427s + cat("mode: ", mode, "", sep = "") 427s + for (n in 0:3) { 427s + x <- runif(n, min = -5, max = 5) 427s + storage.mode(x) <- mode 427s + str(x) 427s + 427s + y <- fcn(x) 427s + yt <- fcn(x, trim = 0.1) 427s + str(list("non-trimmed" = y, trimmed = yt)) 427s + } # for (mode ...) 427s + } 427s + 427s + cat(sprintf("%s()...DONE\n", name)) 427s + } # for (name ...) 427s varDiff()... 427s mode: integer int(0) 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s int -4 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s int [1:2] 3 2 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s int [1:3] 1 4 -1 427s List of 2 427s $ non-trimmed: num 16 427s $ trimmed : num 16 427s mode: double num(0) 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s num -0.794 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s num [1:2] 0.897 -3.728 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s num [1:3] 2.07 -1.13 1.94 427s List of 2 427s $ non-trimmed: num 9.83 427s $ trimmed : num 9.83 427s varDiff()...DONE 427s sdDiff()... 427s mode: integer int(0) 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s int 2 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s int [1:2] -4 1 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s int [1:3] -2 1 -1 427s List of 2 427s $ non-trimmed: num 2.5 427s $ trimmed : num 2.5 427s mode: double num(0) 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s num -3.78 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s num [1:2] -2.04 2.38 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s num [1:3] 1.42 -2.14 1.14 427s List of 2 427s $ non-trimmed: num 3.42 427s $ trimmed : num 3.42 427s sdDiff()...DONE 427s madDiff()... 427s mode: integer int(0) 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s int -1 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s int [1:2] -1 4 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s int [1:3] -1 0 -3 427s List of 2 427s $ non-trimmed: num 2.1 427s $ trimmed : num 2.1 427s mode: double num(0) 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s num -1.13 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s num [1:2] -1.7 -1.21 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s num [1:3] -2.39 -0.464 3.086 427s List of 2 427s $ non-trimmed: num 0.851 427s $ trimmed : num 0.851 427s madDiff()...DONE 427s iqrDiff()... 427s mode: integer int(0) 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s int 3 427s List of 2 427s $ non-trimmed: num 0 427s $ trimmed : num 0 427s int [1:2] -3 4 427s List of 2 427s $ non-trimmed: num 0 427s $ trimmed : num 0 427s int [1:3] 0 -2 -2 427s List of 2 427s $ non-trimmed: num 0.707 427s $ trimmed : num 0.707 427s mode: double num(0) 427s List of 2 427s $ non-trimmed: num NA 427s $ trimmed : num NA 427s num -4.46 427s List of 2 427s $ non-trimmed: num 0 427s $ trimmed : num 0 427s num [1:2] 3.67 1.02 427s List of 2 427s $ non-trimmed: num 0 427s $ trimmed : num 0 427s num [1:3] -0.537 -2.733 2.857 427s List of 2 427s $ non-trimmed: num 2.75 427s $ trimmed : num 2.75 427s iqrDiff()...DONE 427s > 427s 427s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 427s Copyright (C) 2024 The R Foundation for Statistical Computing 427s Platform: s390x-ibm-linux-gnu (64-bit) 427s 427s R is free software and comes with ABSOLUTELY NO WARRANTY. 427s You are welcome to redistribute it under certain conditions. 427s Type 'license()' or 'licence()' for distribution details. 427s 427s R is a collaborative project with many contributors. 427s Type 'contributors()' for more information and 427s 'citation()' on how to cite R or R packages in publications. 427s 427s Type 'demo()' for some demos, 'help()' for on-line help, or 427s 'help.start()' for an HTML browser interface to help. 427s Type 'q()' to quit R. 427s 427s > library("matrixStats") 427s > 427s > fcns <- list( 427s + varDiff = varDiff, 427s + sdDiff = sdDiff, 427s + madDiff = madDiff, 427s + iqrDiff = iqrDiff 427s + ) 427s > 427s > 427s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 427s > # Subsetted tests 427s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 427s > source("utils/validateIndicesFramework.R") 427s > for (name in names(fcns)) { 427s + cat(sprintf("subsetted tests on %s()...\n", name)) 427s + fcn <- fcns[[name]] 427s + 427s + for (mode in c("numeric", "integer")) { 427s + x <- runif(6, min = -6, max = 6) 427s + storage.mode(x) <- mode 427s + trim <- runif(1, min = 0, max = 0.5) 427s + if (mode == "numeric") x[1] <- Inf 427s + 427s + for (diff in 1:2) { 427s + for (idxs in index_cases) { 427s + validateIndicesTestVector(x, idxs, 427s + ftest = fcn, fsure = fcn, 427s + na.rm = TRUE, diff = diff, trim = trim) 427s + validateIndicesTestVector(x, idxs, 427s + ftest = fcn, fsure = fcn, 427s + na.rm = FALSE, diff = diff, trim = trim) 427s + } 427s + } 427s + } 427s + cat(sprintf("%s()...DONE\n", name)) 427s + } 427s subsetted tests on varDiff()... 427s varDiff()...DONE 427s subsetted tests on sdDiff()... 427s sdDiff()...DONE 427s subsetted tests on madDiff()... 427s madDiff()...DONE 427s subsetted tests on iqrDiff()... 427s iqrDiff()...DONE 427s > 427s 427s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 427s Copyright (C) 2024 The R Foundation for Statistical Computing 427s Platform: s390x-ibm-linux-gnu (64-bit) 427s 427s R is free software and comes with ABSOLUTELY NO WARRANTY. 427s You are welcome to redistribute it under certain conditions. 427s Type 'license()' or 'licence()' for distribution details. 427s 427s R is a collaborative project with many contributors. 427s Type 'contributors()' for more information and 427s 'citation()' on how to cite R or R packages in publications. 427s 427s Type 'demo()' for some demos, 'help()' for on-line help, or 427s 'help.start()' for an HTML browser interface to help. 427s Type 'q()' to quit R. 427s 427s > library("matrixStats") 427s > 427s > for (mode in c("logical", "integer", "double")) { 427s + cat("mode: ", mode, "", sep = "") 427s + n <- 2L 427s + x <- runif(n, min = -5, max = 5) 427s + if (mode == "logical") { 427s + x <- x > 0 427s + } 427s + storage.mode(x) <- mode 427s + str(x) 427s + 427s + cat("All weights are 1\n") 427s + w <- rep(1, times = n) 427s + m0 <- weighted.mean(x, w) 427s + m1 <- weightedMean(x, w) 427s + str(list(m0 = m0, m1 = m1)) 427s + stopifnot(identical(m1, m0)) 427s + 427s + cat("First weight is 5\n") 427s + # Pull the mean towards zero 427s + w[1] <- 5 427s + str(w) 427s + m0 <- weighted.mean(x, w) 427s + m1 <- weightedMean(x, w) 427s + str(list(m0 = m0, m1 = m1)) 427s + stopifnot(identical(m1, m0)) 427s + 427s + cat("All weights are 0\n") 427s + # All weights set to zero 427s + w <- rep(0, times = n) 427s + m0 <- weighted.mean(x, w) 427s + m1 <- weightedMean(x, w) 427s + str(list(m0 = m0, m1 = m1)) 427s + stopifnot(identical(m1, m0)) 427s + 427s + cat("First weight is 8.5\n") 427s + # Put even more weight on the zero 427s + w[1] <- 8.5 427s + m0 <- weighted.mean(x, w) 427s + m1 <- weightedMean(x, w) 427s + str(list(m0 = m0, m1 = m1)) 427s + stopifnot(identical(m1, m0)) 427s + 427s + cat("First weight is Inf\n") 427s + # All weight on the first value 427s + w[1] <- Inf 427s + m0 <- weighted.mean(x, w) 427s + m1 <- weightedMean(x, w) 427s + str(list(m0 = m0, m1 = m1)) 427s + stopifnot(identical(m1, m0)) 427s + 427s + cat("Last weight is Inf\n") 427s + # All weight on the last value 427s + w[1] <- 1 427s + w[n] <- Inf 427s + m0 <- weighted.mean(x, w) 427s + m1 <- weightedMean(x, w) 427s + str(list(m0 = m0, m1 = m1)) 427s + stopifnot(identical(m1, m0)) 427s + } # for (mode ...) 427s mode: logical logi [1:2] TRUE TRUE 427s All weights are 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s First weight is 5 427s num [1:2] 5 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s All weights are 0 427s List of 2 427s $ m0: num NaN 427s $ m1: num NaN 427s First weight is 8.5 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s First weight is Inf 427s List of 2 427s $ m0: num NaN 427s $ m1: num NaN 427s Last weight is Inf 427s List of 2 427s $ m0: num NaN 427s $ m1: num NaN 427s mode: integer int [1:2] -4 4 427s All weights are 1 427s List of 2 427s $ m0: num 0 427s $ m1: num 0 427s First weight is 5 427s num [1:2] 5 1 427s List of 2 427s $ m0: num -2.67 427s $ m1: num -2.67 427s All weights are 0 427s List of 2 427s $ m0: num NaN 427s $ m1: num NaN 427s First weight is 8.5 427s List of 2 427s $ m0: num -4 427s $ m1: num -4 427s First weight is Inf 427s List of 2 427s $ m0: num NaN 427s $ m1: num NaN 427s Last weight is Inf 427s List of 2 427s $ m0: num NaN 427s $ m1: num NaN 427s mode: double num [1:2] 4.03 -1.55 427s All weights are 1 427s List of 2 427s $ m0: num 1.24 427s $ m1: num 1.24 427s First weight is 5 427s num [1:2] 5 1 427s List of 2 427s $ m0: num 3.1 427s $ m1: num 3.1 427s All weights are 0 427s List of 2 427s $ m0: num NaN 427s $ m1: num NaN 427s First weight is 8.5 427s List of 2 427s $ m0: num 4.03 427s $ m1: num 4.03 427s First weight is Inf 427s List of 2 427s $ m0: num NaN 427s $ m1: num NaN 427s Last weight is Inf 427s List of 2 427s $ m0: num NaN 427s $ m1: num NaN 427s > 427s > 427s > message("*** Testing for missing values") 427s > *** Testing for missing values 427s # NA tests 427s > xs <- list(A = c(1, 2, 3), B = c(NA, 2, 3), C = c(NA, 2, 3)) 427s > ws <- list(A = c(1, 1, 1), B = c(NA, 1, 1), C = c(1, NA, 1)) 427s > ## NOTE: The (B, B) case with na.rm = TRUE is interesting because 427s > ## even if NAs in 'w' are not dropped by na.rm = TRUE, this one 427s > ## is because 'x' is dropped and therefore that first element 427s > ## is skipped in the computation. It basically does 427s > ## keep <- !is.na(x); x <- x[keep]; w <- w[keep] 427s > ## without looking at 'w'. 427s > for (x in xs) { 427s + for (mode in c("logical", "integer", "double")) { 427s + storage.mode(x) <- mode 427s + for (w in ws) { 427s + for (na.rm in c(FALSE, TRUE)) { 427s + cat(sprintf("mode: %s, na.rm = %s\n", mode, na.rm)) 427s + str(list(x = x, w = w)) 427s + m0 <- weighted.mean(x, w, na.rm = na.rm) 427s + m1 <- weightedMean(x, w, na.rm = na.rm) 427s + str(list(m0 = m0, m1 = m1)) 427s + stopifnot(all.equal(m1, m0)) 427s + } 427s + } 427s + } 427s + } 427s mode: logical, na.rm = FALSE 427s List of 2 427s $ x: logi [1:3] TRUE TRUE TRUE 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: logical, na.rm = TRUE 427s List of 2 427s $ x: logi [1:3] TRUE TRUE TRUE 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: logical, na.rm = FALSE 427s List of 2 427s $ x: logi [1:3] TRUE TRUE TRUE 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = TRUE 427s List of 2 427s $ x: logi [1:3] TRUE TRUE TRUE 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = FALSE 427s List of 2 427s $ x: logi [1:3] TRUE TRUE TRUE 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = TRUE 427s List of 2 427s $ x: logi [1:3] TRUE TRUE TRUE 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = FALSE 427s List of 2 427s $ x: int [1:3] 1 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: integer, na.rm = TRUE 427s List of 2 427s $ x: int [1:3] 1 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: integer, na.rm = FALSE 427s List of 2 427s $ x: int [1:3] 1 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = TRUE 427s List of 2 427s $ x: int [1:3] 1 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = FALSE 427s List of 2 427s $ x: int [1:3] 1 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = TRUE 427s List of 2 427s $ x: int [1:3] 1 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = FALSE 427s List of 2 427s $ x: num [1:3] 1 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: double, na.rm = TRUE 427s List of 2 427s $ x: num [1:3] 1 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: double, na.rm = FALSE 427s List of 2 427s $ x: num [1:3] 1 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = TRUE 427s List of 2 427s $ x: num [1:3] 1 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = FALSE 427s List of 2 427s $ x: num [1:3] 1 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = TRUE 427s List of 2 427s $ x: num [1:3] 1 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = FALSE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = TRUE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: logical, na.rm = FALSE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = TRUE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: logical, na.rm = FALSE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = TRUE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = FALSE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = TRUE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: integer, na.rm = FALSE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = TRUE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: integer, na.rm = FALSE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = TRUE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = FALSE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = TRUE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: double, na.rm = FALSE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = TRUE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: double, na.rm = FALSE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = TRUE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = FALSE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = TRUE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: logical, na.rm = FALSE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = TRUE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: logical, na.rm = FALSE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: logical, na.rm = TRUE 427s List of 2 427s $ x: logi [1:3] NA TRUE TRUE 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = FALSE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = TRUE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: integer, na.rm = FALSE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = TRUE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: integer, na.rm = FALSE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: integer, na.rm = TRUE 427s List of 2 427s $ x: int [1:3] NA 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = FALSE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = TRUE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] 1 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: double, na.rm = FALSE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = TRUE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] NA 1 1 427s List of 2 427s $ m0: num 1 427s $ m1: num 1 427s mode: double, na.rm = FALSE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s mode: double, na.rm = TRUE 427s List of 2 427s $ x: num [1:3] NA 1 1 427s $ w: num [1:3] 1 NA 1 427s List of 2 427s $ m0: num NA 427s $ m1: num NA 427s > 427s 427s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 427s Copyright (C) 2024 The R Foundation for Statistical Computing 427s Platform: s390x-ibm-linux-gnu (64-bit) 427s 427s R is free software and comes with ABSOLUTELY NO WARRANTY. 427s You are welcome to redistribute it under certain conditions. 427s Type 'license()' or 'licence()' for distribution details. 427s 427s R is a collaborative project with many contributors. 427s Type 'contributors()' for more information and 427s 'citation()' on how to cite R or R packages in publications. 427s 427s Type 'demo()' for some demos, 'help()' for on-line help, or 427s 'help.start()' for an HTML browser interface to help. 427s Type 'q()' to quit R. 427s 428s > library("matrixStats") 428s > 428s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 428s > # Subsetted tests 428s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 428s > source("utils/validateIndicesFramework.R") 428s > for (mode in c("numeric", "integer")) { 428s + x <- runif(6, min = -6, max = 6) 428s + w <- runif(6, min = 0, max = 6) 428s + storage.mode(x) <- mode 428s + storage.mode(w) <- mode 428s + if (mode == "numeric") w[1] <- Inf 428s + 428s + for (idxs in index_cases) { 428s + validateIndicesTestVector_w(x, w, idxs, 428s + ftest = weightedMean, fsure = weighted.mean, 428s + na.rm = TRUE, refine = TRUE) 428s + validateIndicesTestVector_w(x, w, idxs, 428s + ftest = weightedMean, fsure = weighted.mean, 428s + na.rm = FALSE, refine = TRUE) 428s + } 428s + } 428s > 428s 428s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 428s Copyright (C) 2024 The R Foundation for Statistical Computing 428s Platform: s390x-ibm-linux-gnu (64-bit) 428s 428s R is free software and comes with ABSOLUTELY NO WARRANTY. 428s You are welcome to redistribute it under certain conditions. 428s Type 'license()' or 'licence()' for distribution details. 428s 428s R is a collaborative project with many contributors. 428s Type 'contributors()' for more information and 428s 'citation()' on how to cite R or R packages in publications. 428s 428s Type 'demo()' for some demos, 'help()' for on-line help, or 428s 'help.start()' for an HTML browser interface to help. 428s Type 'q()' to quit R. 428s 428s > library("matrixStats") 428s > 428s > x <- 1:5 428s > y <- weightedMedian(x) 428s > y <- weightedMedian(x, w = c(NA, Inf, NA, Inf, NA), na.rm = TRUE) 428s > print(y) 428s [1] 3 428s > 428s > y <- weightedMedian(x, w = c(NA, Inf, NA, Inf, NA), na.rm = FALSE) 428s > print(y) 428s [1] NA 428s > stopifnot(is.na(y)) 428s > 428s > x <- 1:10 428s > n <- length(x) 428s > 428s > y1 <- median(x) # 5.5 428s > y2 <- weightedMedian(x) # 5.5 428s > stopifnot(all.equal(y1, y2)) 428s > 428s > 428s > w <- rep(1, times = n) 428s > y1 <- weightedMedian(x, w) # 5.5 (default) 428s > y2a <- weightedMedian(x, ties = "weighted") # 5.5 (default) 428s > y2b <- weightedMedian(x, ties = "min") # 5 428s > y2c <- weightedMedian(x, ties = "max") # 6 428s > stopifnot(all.equal(y2a, y1)) 428s > 428s > y3 <- weightedMedian(x, w) # 5.5 (default) 428s > 428s > 428s > # Pull the median towards zero 428s > w[1] <- 5 428s > y1 <- weightedMedian(x, w) # 3.5 428s > y <- c(rep(0, times = w[1]), x[-1]) # Only possible for integer weights 428s > y2 <- median(y) # 3.5 428s > stopifnot(all.equal(y1, y2)) 428s > 428s > # Put even more weight on the zero 428s > w[1] <- 8.5 428s > y <- weightedMedian(x, w) # 2 428s > 428s > # All weight on the first value 428s > w[1] <- Inf 428s > y <- weightedMedian(x, w) # 1 428s > 428s > # All weight on the last value 428s > w[1] <- 1 428s > w[n] <- Inf 428s > y <- weightedMedian(x, w) # 10 428s > 428s > # All weights set to zero 428s > w <- rep(0, times = n) 428s > y <- weightedMedian(x, w) # NA 428s > 428s > x <- 1:4 428s > w <- rep(1, times = 4) 428s > for (mode in c("integer", "double")) { 428s + storage.mode(x) <- mode 428s + for (ties in c("weighted", "mean", "min", "max")) { 428s + cat(sprintf("ties = %s\n", ties)) 428s + y <- weightedMedian(x, w, ties = ties) 428s + } 428s + } 428s ties = weighted 428s ties = mean 428s ties = min 428s ties = max 428s ties = weighted 428s ties = mean 428s ties = min 428s ties = max 428s > 428s > set.seed(0x42) 428s > 428s > y <- weightedMedian(x = double(0L)) 428s > print(y) 428s [1] NA 428s > stopifnot(length(y) == 1L) 428s > stopifnot(is.na(y)) 428s > 428s > y <- weightedMedian(x = x[1]) 428s > print(y) 428s [1] 1 428s > stopifnot(length(y) == 1L) 428s > stopifnot(all.equal(y, x[1])) 428s > 428s > 428s > n <- 1e3 428s > x <- runif(n) 428s > w <- runif(n, min = 0, max = 1) 428s > for (mode in c("integer", "double")) { 428s + storage.mode(x) <- mode 428s + for (ties in c("weighted", "mean", "min", "max")) { 428s + y <- weightedMedian(x, w, ties = ties) 428s + cat(sprintf("mode = %s, ties = %s, result = %g\n", mode, ties, y)) 428s + } 428s + } 428s mode = integer, ties = weighted, result = 0 428s mode = integer, ties = mean, result = 0 428s mode = integer, ties = min, result = 0 428s mode = integer, ties = max, result = 0 428s mode = double, ties = weighted, result = 0 428s mode = double, ties = mean, result = 0 428s mode = double, ties = min, result = 0 428s mode = double, ties = max, result = 0 428s > 428s > 428s > # A large vector 428s > n <- 1e5 428s > x <- runif(n) 428s > w <- runif(n, min = 0, max = 1) 428s > y <- weightedMedian(x, w) 428s > 428s > y <- weightedMedian(x, w, ties = "min") 428s > 428s > 428s > # Single Number 428s > xs <- c(1, NA_integer_) 428s > ws <- c(1, NA_integer_) 428s > for (x in xs) { 428s + for (w in ws) { 428s + y <- weightedMedian(x = x, w = w) 428s + if (is.na(w)) z <- NA_real_ 428s + else z <- x[1] 428s + stopifnot(all.equal(y, z)) 428s + } 428s + } 428s > 428s > ## Logical 428s > x1 <- c(TRUE, FALSE, TRUE) 428s > w0 <- c(0, 0, 0) 428s > stopifnot(!is.finite(weightedMedian(x1, w0)), 428s + !is.infinite(weightedMedian(x1, w0))) 428s > 428s > w1 <- c(1, 1, 1) 428s > stopifnot(weightedMedian(x1, w1) == 1) 428s > 428s > w2 <- c(1, 2, 3) 428s > stopifnot(weightedMedian(x1, w2) == 1) 428s > 428s > ### NA 428s > stopifnot(is.na(weightedMedian(c(TRUE, FALSE, NA), 428s + c(1, 2, 3))), 428s + all.equal(weightedMedian(c(TRUE, FALSE, NA), 428s + c(1, 2, 3), 428s + na.rm = TRUE), 428s + weightedMedian(c(TRUE, FALSE), 428s + c(1, 2)))) 428s > ### Identical to as.integer() 428s > x <- rcauchy(100) 428s > w <- abs(rcauchy(100)) 428s > stopifnot(all.equal(weightedMedian(x > 0, w), 428s + weightedMedian(as.integer(x > 0), w))) 428s > 428s > 428s > 428s 428s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 428s Copyright (C) 2024 The R Foundation for Statistical Computing 428s Platform: s390x-ibm-linux-gnu (64-bit) 428s 428s R is free software and comes with ABSOLUTELY NO WARRANTY. 428s You are welcome to redistribute it under certain conditions. 428s Type 'license()' or 'licence()' for distribution details. 428s 428s R is a collaborative project with many contributors. 428s Type 'contributors()' for more information and 428s 'citation()' on how to cite R or R packages in publications. 428s 428s Type 'demo()' for some demos, 'help()' for on-line help, or 428s 'help.start()' for an HTML browser interface to help. 428s Type 'q()' to quit R. 428s 428s > library("matrixStats") 428s > 428s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 428s > # Subsetted tests 428s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 428s > source("utils/validateIndicesFramework.R") 428s > for (mode in c("numeric", "integer")) { 428s + x <- runif(6, min = -6, max = 6) 428s + w <- runif(6, min = 0, max = 6) 428s + storage.mode(x) <- mode 428s + storage.mode(w) <- mode 428s + if (mode == "numeric") w[1] <- Inf 428s + 428s + for (idxs in index_cases) { 428s + validateIndicesTestVector_w(x, w, idxs, 428s + ftest = weightedMedian, 428s + fsure = weightedMedian, 428s + na.rm = TRUE) 428s + validateIndicesTestVector_w(x, w, idxs, 428s + ftest = weightedMedian, 428s + fsure = weightedMedian, 428s + na.rm = FALSE) 428s + 428s + for (ties in c("weighted", "mean", "min", "max")) { 428s + validateIndicesTestVector_w(x, w, idxs, 428s + ftest = weightedMedian, 428s + fsure = weightedMedian, 428s + na.rm = TRUE, ties = ties) 428s + validateIndicesTestVector_w(x, w, idxs, 428s + ftest = weightedMedian, 428s + fsure = weightedMedian, 428s + na.rm = FALSE, ties = ties) 428s + } 428s + } 428s + } 428s > 428s 428s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 428s Copyright (C) 2024 The R Foundation for Statistical Computing 428s Platform: s390x-ibm-linux-gnu (64-bit) 428s 428s R is free software and comes with ABSOLUTELY NO WARRANTY. 428s You are welcome to redistribute it under certain conditions. 428s Type 'license()' or 'licence()' for distribution details. 428s 428s R is a collaborative project with many contributors. 428s Type 'contributors()' for more information and 428s 'citation()' on how to cite R or R packages in publications. 428s 428s Type 'demo()' for some demos, 'help()' for on-line help, or 428s 'help.start()' for an HTML browser interface to help. 428s Type 'q()' to quit R. 428s 428s > library("matrixStats") 428s > 428s > weightedVar_R <- function(x, w) { 428s + mu <- weighted.mean(x, w = w) 428s + sum(w * (x - mu) ^ 2) / (sum(w) - 1) 428s + *** weightedVar() ... 428s - Zero elements 428s } 428s > 428s > 428s > n <- 10 428s > x <- as.double(1:n) 428s > 428s > message("*** weightedVar() ...") 428s > 428s > message("- Zero elements") 428s > m0 <- var(integer(0)) 428s > m1 <- weightedVar(integer(0), w = integer(0)) 428s > str(list(m0 = m0, m1 = m1)) 428s List of 2 428s $ m0: num NA 428s $ m1: int NA 428s > stopifnot(all.equal(m1, m0)) 428s > 428s > 428s > message("- One elements") 428s > m0 <- var(1) 428s > m1 <- weightedVar(1) 428s > str(list(m0 = m0, m1 = m1)) 428s List- One elements 428s of 2 428s $ m0: num NA 428s $ m1: num NA 428s > stopifnot(all.equal(m1, m0)) 428s > 428s > 428s > message("- Uniform weights (all w = 1)") 428s > m0 <- var(x) 428s > - Uniform weights (all w = 1) 428s w <- rep(1, times = n) 428s > m1 <- weightedVar(x, w = w) 428s > str(list(m0 = m0, m1 = m1)) 428s List of 2 428s $ m0: num 9.17 428s $ m1: num 9.17 428s > stopifnot(all.equal(m1, m0)) 428s > 428s > 428s - Uniform weights (all w = 3) 428s > message("- Uniform weights (all w = 3)") 428s > m0 <- var(rep(x, each = 3)) 428s > w <- rep(3, times = n) 428s > m1 <- weightedVar(x, w = w) 428s > str(list(m0 = m0, m1 = m1)) 428s List- Uniform weights on the first five elements 428s of 2 428s $ m0: num 8.53 428s $ m1: num 8.53 428s > stopifnot(all.equal(m1, m0)) 428s > 428s > 428s > message("- Uniform weights on the first five elements") 428s > idxs <- 1:5 428s > m0 <- var(x[1:5]) 428s > w <- rep(0, times = n) 428s > w[idxs] <- 1 428s > m1 <- weightedVar(x, w = w) 428s > str(list(m0 = m0, m1 = m1)) 428s List of 2 428s $ m0: num 2.5 428s $ m1: num 2.5 428s > stopifnot(all.equal(m1, m0)) 428s > 428s > 428s > message("- Uniform weights on every second elements") 428s > - Uniform weights on every second elements 428s idxs <- seq(from = 1, to = n, by = 2) 428s > m0 <- var(x[idxs]) 428s > w <- rep(0, times = n) 428s > w[idxs] <- 1 428s > m1 <- weightedVar(x, w = w) 428s > str(list(m0 = m0, m1 = m1)) 428s List of 2 428s $ m0: num 10 428s $ m1: num 10 428s > stopifnot(all.equal(m1, m0)) 428s > 428s > 428s > - All weights are zero 428s message("- All weights are zero") 428s > idxs <- integer(0L) 428s > m0 <- var(x[idxs]) 428s > w <- rep(0, times = n) 428s > w[idxs] <- 1 428s > m1 <- weightedVar(x, w = w) 428s > str(list(m0 = m0, m1 = m1)) 428s List of 2 428s $ m0: num NA- Infinite weight on first element 428s 428s $ m1: num NA 428s > stopifnot(all.equal(m1, m0)) 428s > 428s > message("- Infinite weight on first element") 428s > idxs <- 1L 428s > m0 <- var(x[idxs]) 428s > w <- rep(0, times = n) 428s > w[idxs] <- Inf 428s > m1 <- weightedVar(x, w = w) 428s > str(list(m0 = m0, m1 = m1)) 428s List of 2 428s $ m0: num NA 428s $ m1: num NA 428s > stopifnot(all.equal(m1, m0)) 428s - Missing-value weight on first element 428s > 428s > message("- Missing-value weight on first element") 428s > idxs <- 1L 428s > w <- rep(1, times = n) 428s > w[idxs] <- NA_real_ 428s > m1 <- weightedVar(x, w = w) 428s > str(list(m1 = m1)) 428s List of 1 428s $ m1: num NA 428s > stopifnot(identical(m1, NA_real_)) 428s > 428s > 428s > message("- Frequency weights") 428s - Frequency weights 428s > 428s > ## From https://en.wikipedia.org/wiki/Weighted_arithmetic_mean 428s > y <- c(2, 2, 4, 5, 5, 5) 428s > x <- unique(y) 428s > w <- table(y) 428s > stopifnot(names(w) == x) 428s > 428s > m0 <- weightedVar(x, w = w) 428s > m1 <- var(y) 428s > stopifnot(all.equal(m1, m0)) 428s > m2 <- weightedVar(x, w = w) 428s > str(list(m0 = m0, m1 = m1, m2 = m2)) 428s List of 3 428s $ m0: num 2.17 428s $ m1: num 2.17 428s $ m2: num 2.17 428s > stopifnot(all.equal(m2, m0)) 428s > 428s > ## From https://github.com/HenrikBengtsson/matrixStats/issues/72 428s > large <- c(21, 8, 26, 1, 15, 33, 12, 25, 0, 84) 428s > years <- c(41706, 9301, 33678, 3082, 27040, 44188, 10049, 30591, 2275, 109831) 428s > 428s > m0 <- weightedVar(large, w = years) 428s > m1 <- weightedVar(large, w = years) 428s > str(list(m0 = m0, m1 = m1)) 428s List of 2 428s $ m0: num 899 428s $ m1: num 899 428s > stopifnot(all.equal(m1, m0)) 428s > 428s > message("*** weightedVar() ... DONE") 428s > 428s *** weightedVar() ... DONE 428s 428s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 428s Copyright (C) 2024 The R Foundation for Statistical Computing 428s Platform: s390x-ibm-linux-gnu (64-bit) 428s 428s R is free software and comes with ABSOLUTELY NO WARRANTY. 428s You are welcome to redistribute it under certain conditions. 428s Type 'license()' or 'licence()' for distribution details. 428s 428s R is a collaborative project with many contributors. 428s Type 'contributors()' for more information and 428s 'citation()' on how to cite R or R packages in publications. 428s 428s Type 'demo()' for some demos, 'help()' for on-line help, or 428s 'help.start()' for an HTML browser interface to help. 428s Type 'q()' to quit R. 428s 428s > library("matrixStats") 428s > 428s > fcns <- list( 428s + weightedVar = weightedVar, 428s + weightedSd = weightedSd, 428s + weightedMad = weightedMad 428s + ) 428s > 428s > for (name in names(fcns)) { 428s + cat(sprintf("%s()...\n", name)) 428s + fcn <- fcns[[name]] 428s + 428s + for (mode in c("integer", "double")) { 428s + cat("mode: ", mode, "\n", sep = "") 428s + n <- 15L 428s + x <- runif(n, min = -5, max = 5) 428s + storage.mode(x) <- mode 428s + str(x) 428s + 428s + for (add_na in c(FALSE, TRUE)) { 428s + cat("add_na: ", add_na, "\n", sep = "") 428s + if (add_na) { 428s + x[c(5, 7)] <- NA 428s + } 428s + str(x) 428s + 428s + for (na.rm in c(FALSE, TRUE)) { 428s + cat("na.rm: ", na.rm, "\n", sep = "") 428s + 428s + cat("Weights are not specified (all are 1)\n") 428s + m1 <- fcn(x, na.rm = na.rm) 428s + str(list(m1 = m1)) 428s + 428s + cat("All weights are 1\n") 428s + w <- rep(1, times = n) 428s + m1 <- fcn(x, w, na.rm = na.rm) 428s + str(list(m1 = m1)) 428s + 428s + cat("First weight is 5\n") 428s + # Pull the mean towards zero 428s + w[1] <- 5 428s + str(w) 428s + m1 <- fcn(x, w, na.rm = na.rm) 428s + str(list(m1 = m1)) 428s + 428s + cat("All weights are 0\n") 428s + # All weights set to zero 428s + w <- rep(0, times = n) 428s + m1 <- fcn(x, w, na.rm = na.rm) 428s + str(list(m1 = m1)) 428s + 428s + cat("First weight is 8.5\n") 428s + # Put even more weight on the zero 428s + w[1] <- 8.5 428s + m1 <- fcn(x, w, na.rm = na.rm) 428s + str(list(m1 = m1)) 428s + 428s + cat("First weight is Inf\n") 428s + # All weight on the first value 428s + w[1] <- Inf 428s + m1 <- fcn(x, w, na.rm = na.rm) 428s + str(list(m1 = m1)) 428s + 428s + cat("Last weight is Inf\n") 428s + # All weight on the last value 428s + w[1] <- 1 428s + w[n] <- Inf 428s + m1 <- fcn(x, w, na.rm = na.rm) 428s + str(list(m1 = m1)) 428s + 428s + cat("Last weight is NA\n") 428s + # All weight on the last value 428s + w[1] <- 1 428s + w[n] <- NA_real_ 428s + m1 <- fcn(x, w, na.rm = na.rm) 428s + str(list(m1 = m1)) 428s + } # for (na.rm ...) 428s + } # for (add_na ...) 428s + } # for (mode ...) 428s + 428s + cat(sprintf("%s()...DONE\n", name)) 428s + } # for (name ...) 429s weightedVar()... 429s mode: integer 429s int [1:15] 2 0 0 0 -2 4 -4 -4 -1 0 ... 429s add_na: FALSE 429s int [1:15] 2 0 0 0 -2 4 -4 -4 -1 0 ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 6.97 429s All weights are 1 429s List of 1 429s $ m1: num 6.97 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 6.61 429s All weights are 0 429s List of 1 429s $ m1: int NA 429s First weight is 8.5 429s List of 1 429s $ m1: int NA 429s First weight is Inf 429s List of 1 429s $ m1: int NA 429s Last weight is Inf 429s List of 1 429s $ m1: int NA 429s Last weight is NA 429s List of 1 429s $ m1: int NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 6.97 429s All weights are 1 429s List of 1 429s $ m1: num 6.97 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 6.61 429s All weights are 0 429s List of 1 429s $ m1: int NA 429s First weight is 8.5 429s List of 1 429s $ m1: int NA 429s First weight is Inf 429s List of 1 429s $ m1: int NA 429s Last weight is Inf 429s List of 1 429s $ m1: int NA 429s Last weight is NA 429s List of 1 429s $ m1: int NA 429s add_na: TRUE 429s int [1:15] 2 0 0 0 NA 4 NA -4 -1 0 ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: int NA 429s All weights are 1 429s List of 1 429s $ m1: int NA 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: int NA 429s All weights are 0 429s List of 1 429s $ m1: int NA 429s First weight is 8.5 429s List of 1 429s $ m1: int NA 429s First weight is Inf 429s List of 1 429s $ m1: int NA 429s Last weight is Inf 429s List of 1 429s $ m1: int NA 429s Last weight is NA 429s List of 1 429s $ m1: int NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 6.86 429s All weights are 1 429s List of 1 429s $ m1: num 6.86 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 6.1 429s All weights are 0 429s List of 1 429s $ m1: int NA 429s First weight is 8.5 429s List of 1 429s $ m1: int NA 429s First weight is Inf 429s List of 1 429s $ m1: int NA 429s Last weight is Inf 429s List of 1 429s $ m1: int NA 429s Last weight is NA 429s List of 1 429s $ m1: int NA 429s mode: double 429s num [1:15] -1.1136 2.0042 2.4316 0.0518 -1.5182 ... 429s add_na: FALSE 429s num [1:15] -1.1136 2.0042 2.4316 0.0518 -1.5182 ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 3.61 429s All weights are 1 429s List of 1 429s $ m1: num 3.61 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 2.83 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 3.61 429s All weights are 1 429s List of 1 429s $ m1: num 3.61 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 2.83 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s add_na: TRUE 429s num [1:15] -1.1136 2.0042 2.4316 0.0518 NA ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num NA 429s All weights are 1 429s List of 1 429s $ m1: num NA 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num NA 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 4.18 429s All weights are 1 429s List of 1 429s $ m1: num 4.18 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 3.16 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s weightedVar()...DONE 429s weightedSd()... 429s mode: integer 429s int [1:15] 4 1 0 0 -3 -3 1 -4 1 -1 ... 429s add_na: FALSE 429s int [1:15] 4 1 0 0 -3 -3 1 -4 1 -1 ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 2.4 429s All weights are 1 429s List of 1 429s $ m1: num 2.4 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 2.72 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 2.4 429s All weights are 1 429s List of 1 429s $ m1: num 2.4 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 2.72 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s add_na: TRUE 429s int [1:15] 4 1 0 0 NA -3 NA -4 1 -1 ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num NA 429s All weights are 1 429s List of 1 429s $ m1: num NA 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num NA 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 2.43 429s All weights are 1 429s List of 1 429s $ m1: num 2.43 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 2.72 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s mode: double 429s num [1:15] -2.2 1.51 -1.01 4.36 -1.91 ... 429s add_na: FALSE 429s num [1:15] -2.2 1.51 -1.01 4.36 -1.91 ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 3.2 429s All weights are 1 429s List of 1 429s $ m1: num 3.2 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 3.02 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 3.2 429s All weights are 1 429s List of 1 429s $ m1: num 3.2 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 3.02 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s add_na: TRUE 429s num [1:15] -2.2 1.51 -1.01 4.36 NA ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num NA 429s All weights are 1 429s List of 1 429s $ m1: num NA 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num NA 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 3.33 429s All weights are 1 429s List of 1 429s $ m1: num 3.33 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 3.09 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num NA 429s First weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is Inf 429s List of 1 429s $ m1: num NA 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s weightedSd()...DONE 429s weightedMad()... 429s mode: integer 429s int [1:15] -4 -4 2 1 -2 1 0 2 1 -2 ... 429s add_na: FALSE 429s int [1:15] -4 -4 2 1 -2 1 0 2 1 -2 ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 2.97 429s All weights are 1 429s List of 1 429s $ m1: num 2.97 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 2.97 429s All weights are 0 429s List of 1 429s $ m1: int NA 429s First weight is 8.5 429s List of 1 429s $ m1: int 0 429s First weight is Inf 429s List of 1 429s $ m1: int 0 429s Last weight is Inf 429s List of 1 429s $ m1: int 0 429s Last weight is NA 429s List of 1 429s $ m1: int NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 2.97 429s All weights are 1 429s List of 1 429s $ m1: num 2.97 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 2.97 429s All weights are 0 429s List of 1 429s $ m1: int NA 429s First weight is 8.5 429s List of 1 429s $ m1: int 0 429s First weight is Inf 429s List of 1 429s $ m1: int 0 429s Last weight is Inf 429s List of 1 429s $ m1: int 0 429s Last weight is NA 429s List of 1 429s $ m1: int NA 429s add_na: TRUE 429s int [1:15] -4 -4 2 1 NA 1 NA 2 1 -2 ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num NA 429s All weights are 1 429s List of 1 429s $ m1: int NA 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: int NA 429s All weights are 0 429s List of 1 429s $ m1: int NA 429s First weight is 8.5 429s List of 1 429s $ m1: int 0 429s First weight is Inf 429s List of 1 429s $ m1: int 0 429s Last weight is Inf 429s List of 1 429s $ m1: int 0 429s Last weight is NA 429s List of 1 429s $ m1: int NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 1.48 429s All weights are 1 429s List of 1 429s $ m1: num 1.48 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 3.46 429s All weights are 0 429s List of 1 429s $ m1: int NA 429s First weight is 8.5 429s List of 1 429s $ m1: int 0 429s First weight is Inf 429s List of 1 429s $ m1: int 0 429s Last weight is Inf 429s List of 1 429s $ m1: int 0 429s Last weight is NA 429s List of 1 429s $ m1: int NA 429s mode: double 429s num [1:15] -0.203 -0.47 -4.57 1.418 3.247 ... 429s add_na: FALSE 429s num [1:15] -0.203 -0.47 -4.57 1.418 3.247 ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 3.57 429s All weights are 1 429s List of 1 429s $ m1: num 3.57 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 2.99 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num 0 429s First weight is Inf 429s List of 1 429s $ m1: num 0 429s Last weight is Inf 429s List of 1 429s $ m1: num 0 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 3.57 429s All weights are 1 429s List of 1 429s $ m1: num 3.57 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 2.99 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num 0 429s First weight is Inf 429s List of 1 429s $ m1: num 0 429s Last weight is Inf 429s List of 1 429s $ m1: num 0 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s add_na: TRUE 429s num [1:15] -0.203 -0.47 -4.57 1.418 NA ... 429s na.rm: FALSE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num NA 429s All weights are 1 429s List of 1 429s $ m1: num NA 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num NA 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num 0 429s First weight is Inf 429s List of 1 429s $ m1: num 0 429s Last weight is Inf 429s List of 1 429s $ m1: num 0 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s na.rm: TRUE 429s Weights are not specified (all are 1) 429s List of 1 429s $ m1: num 3.57 429s All weights are 1 429s List of 1 429s $ m1: num 3.57 429s First weight is 5 429s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 429s List of 1 429s $ m1: num 2.99 429s All weights are 0 429s List of 1 429s $ m1: num NA 429s First weight is 8.5 429s List of 1 429s $ m1: num 0 429s First weight is Inf 429s List of 1 429s $ m1: num 0 429s Last weight is Inf 429s List of 1 429s $ m1: num 0 429s Last weight is NA 429s List of 1 429s $ m1: num NA 429s weightedMad()...DONE 429s > 429s 429s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 429s Copyright (C) 2024 The R Foundation for Statistical Computing 429s Platform: s390x-ibm-linux-gnu (64-bit) 429s 429s R is free software and comes with ABSOLUTELY NO WARRANTY. 429s You are welcome to redistribute it under certain conditions. 429s Type 'license()' or 'licence()' for distribution details. 429s 429s R is a collaborative project with many contributors. 429s Type 'contributors()' for more information and 429s 'citation()' on how to cite R or R packages in publications. 429s 429s Type 'demo()' for some demos, 'help()' for on-line help, or 429s 'help.start()' for an HTML browser interface to help. 429s Type 'q()' to quit R. 429s 429s > library("matrixStats") 429s > 429s > fcns <- list( 429s + weightedVar = weightedVar, 429s + weightedSd = weightedSd, 429s + weightedMad = weightedMad 429s + ) 429s > 429s > 429s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429s > # Subsetted tests 429s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429s > source("utils/validateIndicesFramework.R") 429s > for (name in names(fcns)) { 429s + cat(sprintf("subsetted tests on %s()...\n", name)) 429s + fcn <- fcns[[name]] 429s + 429s + for (mode in c("numeric", "integer")) { 429s + x <- runif(6, min = -6, max = 6) 429s + w <- runif(6, min = 0, max = 6) 429s + storage.mode(x) <- mode 429s + storage.mode(w) <- mode 429s + if (mode == "numeric") w[1] <- Inf 429s + 429s + for (idxs in index_cases) { 429s + validateIndicesTestVector_w(x, w, idxs, 429s + ftest = fcn, fsure = fcn, 429s + na.rm = TRUE) 429s + validateIndicesTestVector_w(x, w, idxs, 429s + ftest = fcn, fsure = fcn, 429s + na.rm = FALSE) 429s + } 429s + } 429s + cat(sprintf("%s()...DONE\n", name)) 429s + } 429s subsetted tests on weightedVar()... 429s weightedVar()...DONE 429s subsetted tests on weightedSd()... 429s weightedSd()...DONE 429s subsetted tests on weightedMad()... 429s weightedMad()...DONE 429s > 429s 429s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 429s Copyright (C) 2024 The R Foundation for Statistical Computing 429s Platform: s390x-ibm-linux-gnu (64-bit) 429s 429s R is free software and comes with ABSOLUTELY NO WARRANTY. 429s You are welcome to redistribute it under certain conditions. 429s Type 'license()' or 'licence()' for distribution details. 429s 429s R is a collaborative project with many contributors. 429s Type 'contributors()' for more information and 429s 'citation()' on how to cite R or R packages in publications. 429s 429s Type 'demo()' for some demos, 'help()' for on-line help, or 429s 'help.start()' for an HTML browser interface to help. 429s Type 'q()' to quit R. 429s 429s > library("matrixStats") 429s > 429s > x_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 429s + if (na.rm) { 429s + xnok <- is.na(x) 429s + ynok <- is.na(y) 429s + anok <- xnok & ynok 429s + unit <- switch(OP, 429s + "+" = 0, 429s + "-" = NA_real_, 429s + "*" = 1, 429s + "/" = NA_real_, 429s + stop("Unknown 'OP' operator: ", OP) 429s + ) 429s + x[xnok] <- unit 429s + y[ynok] <- unit 429s + } 429s + 429s + ans <- switch(OP, 429s + "+" = x + y, 429s + "-" = x - y, 429s + "*" = x * y, 429s + "/" = x / y, 429s + stop("Unknown 'OP' operator: ", OP) 429s + ) 429s + 429s + if (na.rm) { 429s + ans[anok] <- NA_real_ 429s + } 429s + 429s + ans 429s + } # x_OP_y_R() 429s > 429s > 429s > 429s > t_tx_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 429s + t(x_OP_y_R(x = t(x), y = y, OP = OP, na.rm = na.rm)) 429s + } 429s > 429s > 429s > 429s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429s > # No missing values 429s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429s > x <- matrix(1:16, nrow = 4, ncol = 4) 429s > y <- 1:nrow(x) 429s > storage.mode(y) <- storage.mode(x) 429s > 429s > for (OP in c("+", "-", "*", "/")) { 429s + for (na.rm in c(FALSE, TRUE)) { 429s + cat(sprintf("OP = '%s', na.rm = %s\n", OP, na.rm)) 429s + 429s + a0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 429s + a1 <- x_OP_y(x, y, OP, na.rm = na.rm) 429s + str(a1) 429s + stopifnot(all.equal(a1, a0)) 429s + 429s + b0 <- t_tx_OP_y_R(x, y, OP, na.rm = na.rm) 429s + b1 <- t_tx_OP_y(x, y, OP, na.rm = na.rm) 429s + str(b1) 429s + stopifnot(all.equal(b1, b0)) 429s + } 429s + } 429s OP = '+', na.rm = FALSE 429s int [1:4, 1:4] 2 4 6 8 6 8 10 12 10 12 ... 429s int [1:4, 1:4] 2 3 4 5 7 8 9 10 12 13 ... 429s OP = '+', na.rm = TRUE 429s int [1:4, 1:4] 2 4 6 8 6 8 10 12 10 12 ... 429s int [1:4, 1:4] 2 3 4 5 7 8 9 10 12 13 ... 429s OP = '-', na.rm = FALSE 429s int [1:4, 1:4] 0 0 0 0 4 4 4 4 8 8 ... 429s int [1:4, 1:4] 0 1 2 3 3 4 5 6 6 7 ... 429s OP = '-', na.rm = TRUE 429s int [1:4, 1:4] 0 0 0 0 4 4 4 4 8 8 ... 429s int [1:4, 1:4] 0 1 2 3 3 4 5 6 6 7 ... 429s OP = '*', na.rm = FALSE 429s int [1:4, 1:4] 1 4 9 16 5 12 21 32 9 20 ... 429s int [1:4, 1:4] 1 2 3 4 10 12 14 16 27 30 ... 429s OP = '*', na.rm = TRUE 429s int [1:4, 1:4] 1 4 9 16 5 12 21 32 9 20 ... 429s int [1:4, 1:4] 1 2 3 4 10 12 14 16 27 30 ... 429s OP = '/', na.rm = FALSE 429s num [1:4, 1:4] 1 1 1 1 5 ... 429s num [1:4, 1:4] 1 2 3 4 2.5 ... 429s OP = '/', na.rm = TRUE 429s num [1:4, 1:4] 1 1 1 1 5 ... 429s num [1:4, 1:4] 1 2 3 4 2.5 ... 429s > 429s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429s > # Missing values in x, y, or both. 429s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429s > for (which in c("x", "y", "both")) { 429s + x <- matrix(1:16, nrow = 4, ncol = 4) 429s + y <- 1:nrow(x) 429s + storage.mode(y) <- storage.mode(x) 429s + 429s + if (which == "x") { 429s + x[3:6] <- NA_real_ 429s + } else if (which == "y") { 429s + y[c(1, 3)] <- NA_real_ 429s + } else if (which == "both") { 429s + x[3:6] <- NA_real_ 429s + y[c(1, 3)] <- NA_real_ 429s + } 429s + 429s + for (OP in c("+", "-", "*", "/")) { 429s + for (na.rm in c(FALSE, TRUE)) { 429s + cat(sprintf("OP = '%s', na.rm = %s\n", OP, na.rm)) 429s + a0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 429s + a1 <- x_OP_y(x, y, OP, na.rm = na.rm) 429s + str(a1) 429s + stopifnot(all.equal(a1, a0)) 429s + 429s + b0 <- t_tx_OP_y_R(x, y, OP, na.rm = na.rm) 429s + b1 <- t_tx_OP_y(x, y, OP, na.rm = na.rm) 429s + str(b1) 429s + stopifnot(all.equal(b1, b0)) 429s + } 429s + } 429s + } 429s OP = '+', na.rm = FALSE 429s num [1:4, 1:4] 2 4 NA NA NA NA 10 12 10 12 ... 429s num [1:4, 1:4] 2 3 NA NA NA NA 9 10 12 13 ... 429s OP = '+', na.rm = TRUE 429s num [1:4, 1:4] 2 4 3 4 1 2 10 12 10 12 ... 429s num [1:4, 1:4] 2 3 1 1 2 2 9 10 12 13 ... 429s OP = '-', na.rm = FALSE 429s num [1:4, 1:4] 0 0 NA NA NA NA 4 4 8 8 ... 429s num [1:4, 1:4] 0 1 NA NA NA NA 5 6 6 7 ... 429s OP = '-', na.rm = TRUE 429s num [1:4, 1:4] 0 0 NA NA NA NA 4 4 8 8 ... 429s num [1:4, 1:4] 0 1 NA NA NA NA 5 6 6 7 ... 429s OP = '*', na.rm = FALSE 429s num [1:4, 1:4] 1 4 NA NA NA NA 21 32 9 20 ... 429s num [1:4, 1:4] 1 2 NA NA NA NA 14 16 27 30 ... 429s OP = '*', na.rm = TRUE 429s num [1:4, 1:4] 1 4 3 4 1 2 21 32 9 20 ... 429s num [1:4, 1:4] 1 2 1 1 2 2 14 16 27 30 ... 429s OP = '/', na.rm = FALSE 429s num [1:4, 1:4] 1 1 NA NA NA ... 429s num [1:4, 1:4] 1 2 NA NA NA ... 429s OP = '/', na.rm = TRUE 429s num [1:4, 1:4] 1 1 NA NA NA ... 429s num [1:4, 1:4] 1 2 NA NA NA ... 429s OP = '+', na.rm = FALSE 429s num [1:4, 1:4] NA 4 NA 8 NA 8 NA 12 NA 12 ... 429s num [1:4, 1:4] NA NA NA NA 7 8 9 10 NA NA ... 429s OP = '+', na.rm = TRUE 429s num [1:4, 1:4] 1 4 3 8 5 8 7 12 9 12 ... 429s num [1:4, 1:4] 1 2 3 4 7 8 9 10 9 10 ... 429s OP = '-', na.rm = FALSE 429s num [1:4, 1:4] NA 0 NA 0 NA 4 NA 4 NA 8 ... 429s num [1:4, 1:4] NA NA NA NA 3 4 5 6 NA NA ... 429s OP = '-', na.rm = TRUE 429s num [1:4, 1:4] NA 0 NA 0 NA 4 NA 4 NA 8 ... 429s num [1:4, 1:4] NA NA NA NA 3 4 5 6 NA NA ... 429s OP = '*', na.rm = FALSE 429s num [1:4, 1:4] NA 4 NA 16 NA 12 NA 32 NA 20 ... 429s num [1:4, 1:4] NA NA NA NA 10 12 14 16 NA NA ... 429s OP = '*', na.rm = TRUE 429s num [1:4, 1:4] 1 4 3 16 5 12 7 32 9 20 ... 429s num [1:4, 1:4] 1 2 3 4 10 12 14 16 9 10 ... 429s OP = '/', na.rm = FALSE 429s num [1:4, 1:4] NA 1 NA 1 NA 3 NA 2 NA 5 ... 429s num [1:4, 1:4] NA NA NA NA 2.5 3 3.5 4 NA NA ... 429s OP = '/', na.rm = TRUE 429s num [1:4, 1:4] NA 1 NA 1 NA 3 NA 2 NA 5 ... 429s num [1:4, 1:4] NA NA NA NA 2.5 3 3.5 4 NA NA ... 429s OP = '+', na.rm = FALSE 429s num [1:4, 1:4] NA 4 NA NA NA NA NA 12 NA 12 ... 429s num [1:4, 1:4] NA NA NA NA NA NA 9 10 NA NA ... 429s OP = '+', na.rm = TRUE 429s num [1:4, 1:4] 1 4 NA 4 NA 2 7 12 9 12 ... 429s num [1:4, 1:4] 1 2 NA NA 2 2 9 10 9 10 ... 429s OP = '-', na.rm = FALSE 429s num [1:4, 1:4] NA 0 NA NA NA NA NA 4 NA 8 ... 429s num [1:4, 1:4] NA NA NA NA NA NA 5 6 NA NA ... 429s OP = '-', na.rm = TRUE 429s num [1:4, 1:4] NA 0 NA NA NA NA NA 4 NA 8 ... 429s num [1:4, 1:4] NA NA NA NA NA NA 5 6 NA NA ... 429s OP = '*', na.rm = FALSE 429s num [1:4, 1:4] NA 4 NA NA NA NA NA 32 NA 20 ... 429s num [1:4, 1:4] NA NA NA NA NA NA 14 16 NA NA ... 429s OP = '*', na.rm = TRUE 429s num [1:4, 1:4] 1 4 NA 4 NA 2 7 32 9 20 ... 429s num [1:4, 1:4] 1 2 NA NA 2 2 14 16 9 10 ... 429s OP = '/', na.rm = FALSE 429s num [1:4, 1:4] NA 1 NA NA NA NA NA 2 NA 5 ... 429s num [1:4, 1:4] NA NA NA NA NA NA 3.5 4 NA NA ... 429s OP = '/', na.rm = TRUE 429s num [1:4, 1:4] NA 1 NA NA NA NA NA 2 NA 5 ... 429s num [1:4, 1:4] NA NA NA NA NA NA 3.5 4 NA NA ... 429s > 429s > 429s > 429s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429s > # Length differences 429s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429s > x <- matrix(1:8, nrow = 2, ncol = 4) 429s > y <- 1:ncol(x) 429s > storage.mode(y) <- storage.mode(x) 429s > 429s > for (OP in c("+", "-", "*", "/")) { 429s + for (na.rm in c(FALSE, TRUE)) { 429s + cat(sprintf("OP = '%s', na.rm = %s\n", OP, na.rm)) 429s + 429s + a0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 429s + a1 <- x_OP_y(x, y, OP, na.rm = na.rm) 429s + str(a1) 429s + stopifnot(all.equal(a1, a0)) 429s + 429s + b0 <- t_tx_OP_y_R(x, y, OP, na.rm = na.rm) 429s + b1 <- t_tx_OP_y(x, y, OP, na.rm = na.rm) 429s + str(b1) 429s + stopifnot(all.equal(b1, b0)) 429s + } 429s + } 429s OP = '+', na.rm = FALSE 429s int [1:2, 1:4] 2 4 6 8 6 8 10 12 429s int [1:2, 1:4] 2 3 5 6 8 9 11 12 429s OP = '+', na.rm = TRUE 429s int [1:2, 1:4] 2 4 6 8 6 8 10 12 429s int [1:2, 1:4] 2 3 5 6 8 9 11 12 429s OP = '-', na.rm = FALSE 429s int [1:2, 1:4] 0 0 0 0 4 4 4 4 429s int [1:2, 1:4] 0 1 1 2 2 3 3 4 429s OP = '-', na.rm = TRUE 429s int [1:2, 1:4] 0 0 0 0 4 4 4 4 429s int [1:2, 1:4] 0 1 1 2 2 3 3 4 429s OP = '*', na.rm = FALSE 429s int [1:2, 1:4] 1 4 9 16 5 12 21 32 429s int [1:2, 1:4] 1 2 6 8 15 18 28 32 429s OP = '*', na.rm = TRUE 429s int [1:2, 1:4] 1 4 9 16 5 12 21 32 429s int [1:2, 1:4] 1 2 6 8 15 18 28 32 429s OP = '/', na.rm = FALSE 429s num [1:2, 1:4] 1 1 1 1 5 ... 429s num [1:2, 1:4] 1 2 1.5 2 1.67 ... 429s OP = '/', na.rm = TRUE 429s num [1:2, 1:4] 1 1 1 1 5 ... 429s num [1:2, 1:4] 1 2 1.5 2 1.67 ... 429s > 429s > 429s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429s > # All missing values 429s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 429s > xs <- list( 429s + A = matrix(1:2, nrow = 2, ncol = 2), 429s + B = matrix(NA_integer_, nrow = 2, ncol = 2) 429s + ) 429s > ys <- list( 429s + A = 1L, 429s + B = NA_integer_ 429s + ) 429s > 429s > for (x in xs) { 429s + for (y in ys) { 429s + for (mode in c("logical", "integer", "double")) { 429s + storage.mode(x) <- mode 429s + storage.mode(y) <- mode 429s + str(list(x = x, y = y)) 429s + 429s + for (OP in c("+", "-", "*", "/")) { 429s + for (na.rm in c(FALSE, TRUE)) { 429s + cat(sprintf("mode = '%s', OP = '%s', na.rm = %s\n", mode, OP, na.rm)) 429s + suppressWarnings({ 429s + z0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 429s + z <- x_OP_y(x, y, OP, na.rm = na.rm) 429s + }) 429s + str(z) 429s + stopifnot(all.equal(z, z0)) 429s + } 429s + } 429s + } # for (mode ...) 429s + } # for (y ...) 429s + } # for (x ...) 429s List of 2 429s $ x: logi [1:2, 1:2] TRUE TRUE TRUE TRUE 429s $ y: logi TRUE 429s mode = 'logical', OP = '+', na.rm = FALSE 429s int [1:2, 1:2] 2 2 2 2 429s mode = 'logical', OP = '+', na.rm = TRUE 429s int [1:2, 1:2] 2 2 2 2 429s mode = 'logical', OP = '-', na.rm = FALSE 429s int [1:2, 1:2] 0 0 0 0 429s mode = 'logical', OP = '-', na.rm = TRUE 429s int [1:2, 1:2] 0 0 0 0 429s mode = 'logical', OP = '*', na.rm = FALSE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'logical', OP = '*', na.rm = TRUE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'logical', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] 1 1 1 1 429s mode = 'logical', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] 1 1 1 1 429s List of 2 429s $ x: int [1:2, 1:2] 1 1 1 1 429s $ y: int 1 429s mode = 'integer', OP = '+', na.rm = FALSE 429s int [1:2, 1:2] 2 2 2 2 429s mode = 'integer', OP = '+', na.rm = TRUE 429s int [1:2, 1:2] 2 2 2 2 429s mode = 'integer', OP = '-', na.rm = FALSE 429s int [1:2, 1:2] 0 0 0 0 429s mode = 'integer', OP = '-', na.rm = TRUE 429s int [1:2, 1:2] 0 0 0 0 429s mode = 'integer', OP = '*', na.rm = FALSE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'integer', OP = '*', na.rm = TRUE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'integer', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] 1 1 1 1 429s mode = 'integer', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] 1 1 1 1 429s List of 2 429s $ x: num [1:2, 1:2] 1 1 1 1 429s $ y: num 1 429s mode = 'double', OP = '+', na.rm = FALSE 429s num [1:2, 1:2] 2 2 2 2 429s mode = 'double', OP = '+', na.rm = TRUE 429s num [1:2, 1:2] 2 2 2 2 429s mode = 'double', OP = '-', na.rm = FALSE 429s num [1:2, 1:2] 0 0 0 0 429s mode = 'double', OP = '-', na.rm = TRUE 429s num [1:2, 1:2] 0 0 0 0 429s mode = 'double', OP = '*', na.rm = FALSE 429s num [1:2, 1:2] 1 1 1 1 429s mode = 'double', OP = '*', na.rm = TRUE 429s num [1:2, 1:2] 1 1 1 1 429s mode = 'double', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] 1 1 1 1 429s mode = 'double', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] 1 1 1 1 429s List of 2 429s $ x: logi [1:2, 1:2] TRUE TRUE TRUE TRUE 429s $ y: logi NA 429s mode = 'logical', OP = '+', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '+', na.rm = TRUE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'logical', OP = '-', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '-', na.rm = TRUE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '*', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '*', na.rm = TRUE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'logical', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s List of 2 429s $ x: int [1:2, 1:2] 1 1 1 1 429s $ y: int NA 429s mode = 'integer', OP = '+', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '+', na.rm = TRUE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'integer', OP = '-', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '-', na.rm = TRUE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '*', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '*', na.rm = TRUE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'integer', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s List of 2 429s $ x: num [1:2, 1:2] 1 1 1 1 429s $ y: num NA 429s mode = 'double', OP = '+', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '+', na.rm = TRUE 429s num [1:2, 1:2] 1 1 1 1 429s mode = 'double', OP = '-', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '-', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '*', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '*', na.rm = TRUE 429s num [1:2, 1:2] 1 1 1 1 429s mode = 'double', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s List of 2 429s $ x: logi [1:2, 1:2] NA NA NA NA 429s $ y: logi TRUE 429s mode = 'logical', OP = '+', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '+', na.rm = TRUE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'logical', OP = '-', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '-', na.rm = TRUE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '*', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '*', na.rm = TRUE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'logical', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s List of 2 429s $ x: int [1:2, 1:2] NA NA NA NA 429s $ y: int 1 429s mode = 'integer', OP = '+', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '+', na.rm = TRUE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'integer', OP = '-', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '-', na.rm = TRUE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '*', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '*', na.rm = TRUE 429s int [1:2, 1:2] 1 1 1 1 429s mode = 'integer', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s List of 2 429s $ x: num [1:2, 1:2] NA NA NA NA 429s $ y: num 1 429s mode = 'double', OP = '+', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '+', na.rm = TRUE 429s num [1:2, 1:2] 1 1 1 1 429s mode = 'double', OP = '-', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '-', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '*', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '*', na.rm = TRUE 429s num [1:2, 1:2] 1 1 1 1 429s mode = 'double', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s List of 2 429s $ x: logi [1:2, 1:2] NA NA NA NA 429s $ y: logi NA 429s mode = 'logical', OP = '+', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '+', na.rm = TRUE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '-', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '-', na.rm = TRUE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '*', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '*', na.rm = TRUE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'logical', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s List of 2 429s $ x: int [1:2, 1:2] NA NA NA NA 429s $ y: int NA 429s mode = 'integer', OP = '+', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '+', na.rm = TRUE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '-', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '-', na.rm = TRUE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '*', na.rm = FALSE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '*', na.rm = TRUE 429s int [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'integer', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s List of 2 429s $ x: num [1:2, 1:2] NA NA NA NA 429s $ y: num NA 429s mode = 'double', OP = '+', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '+', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '-', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '-', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '*', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '*', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '/', na.rm = FALSE 429s num [1:2, 1:2] NA NA NA NA 429s mode = 'double', OP = '/', na.rm = TRUE 429s num [1:2, 1:2] NA NA NA NA 429s > 429s 429s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 429s Copyright (C) 2024 The R Foundation for Statistical Computing 429s Platform: s390x-ibm-linux-gnu (64-bit) 429s 429s R is free software and comes with ABSOLUTELY NO WARRANTY. 429s You are welcome to redistribute it under certain conditions. 429s Type 'license()' or 'licence()' for distribution details. 429s 429s R is a collaborative project with many contributors. 429s Type 'contributors()' for more information and 429s 'citation()' on how to cite R or R packages in publications. 429s 429s Type 'demo()' for some demos, 'help()' for on-line help, or 429s 'help.start()' for an HTML browser interface to help. 429s Type 'q()' to quit R. 429s 430s > library("matrixStats") 430s > 430s > x_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 430s + if (na.rm) { 430s + xnok <- is.na(x) 430s + ynok <- is.na(y) 430s + anok <- xnok & ynok 430s + unit <- switch(OP, 430s + "+" = 0, 430s + "-" = NA_real_, 430s + "*" = 1, 430s + "/" = NA_real_, 430s + stop("Unknown 'OP' operator: ", OP) 430s + ) 430s + x[xnok] <- unit 430s + y[ynok] <- unit 430s + } 430s + 430s + ans <- switch(OP, 430s + "+" = x + y, 430s + "-" = x - y, 430s + "*" = x * y, 430s + "/" = x / y, 430s + stop("Unknown 'OP' operator: ", OP) 430s + ) 430s + 430s + if (na.rm) { 430s + ans[anok] <- NA_real_ 430s + } 430s + 430s + ans 430s + } # x_OP_y_R() 430s > 430s > 430s > t_tx_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 430s + t(x_OP_y_R(x = t(x), y = y, OP = OP, na.rm = na.rm)) 430s + } 430s > 430s > 430s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 430s > # Subsetted tests 430s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 430s > source("utils/validateIndicesFramework.R") 430s > for (OP in c("+", "-", "*", "/")) { 430s + for (mode in c("numeric", "integer", "logical")) { 430s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 430s + y <- runif(6, min = 0, max = 6) 430s + storage.mode(x) <- mode 430s + storage.mode(y) <- mode 430s + if (mode == "numeric") y[1] <- Inf 430s + 430s + for (xrows in index_cases) { 430s + for (xcols in index_cases) { 430s + if (is.null(xrows)) xrows <- seq_len(nrow(x)) 430s + if (is.null(xcols)) xcols <- seq_len(ncol(x)) 430s + 430s + for (yidxs in list(xrows, xcols)) { 430s + for (na.rm in c(TRUE, FALSE)) { 430s + 430s + suppressWarnings({ 430s + actual <- tryCatch( 430s + x_OP_y(x, y, OP, xrows = xrows, xcols = xcols, yidxs = yidxs, 430s + na.rm = na.rm), 430s + error = function(c) "error" 430s + ) 430s + 430s + expect <- tryCatch( 430s + x_OP_y_R(x[xrows, xcols, drop = FALSE], y[yidxs], OP, 430s + na.rm = na.rm), 430s + error = function(c) "error" 430s + ) 430s + }) 430s + stopifnot(all.equal(as.vector(actual), as.vector(expect))) 430s + 430s + suppressWarnings({ 430s + actual <- tryCatch( 430s + t_tx_OP_y(x, y, OP, xrows = xrows, xcols = xcols, yidxs = yidxs, 430s + na.rm = na.rm), 430s + error = function(c) "error" 430s + ) 430s + 430s + expect <- tryCatch( 430s + t_tx_OP_y_R(x[xrows, xcols, drop = FALSE], y[yidxs], OP, 430s + na.rm = na.rm), 430s + error = function(c) "error" 430s + ) 430s + }) 430s + stopifnot(all.equal(as.vector(actual), as.vector(expect))) 430s + } 430s + } 430s + } 430s + } 430s + } 430s + } 434s > 434s 434s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 434s Copyright (C) 2024 The R Foundation for Statistical Computing 434s Platform: s390x-ibm-linux-gnu (64-bit) 434s 434s R is free software and comes with ABSOLUTELY NO WARRANTY. 434s You are welcome to redistribute it under certain conditions. 434s Type 'license()' or 'licence()' for distribution details. 434s 434s R is a collaborative project with many contributors. 434s Type 'contributors()' for more information and 434s 'citation()' on how to cite R or R packages in publications. 434s 434s Type 'demo()' for some demos, 'help()' for on-line help, or 434s 'help.start()' for an HTML browser interface to help. 434s Type 'q()' to quit R. 434s 434s > ## These tests need to be last of all tests, otherwise 434s > ## covr::package_coverage() gives an error. 434s > cat("1. Loading package\n") 434s 1. Loading package 434s > loadNamespace("matrixStats") 434s 434s > stopifnot("matrixStats" %in% loadedNamespaces()) 434s > 434s > cat("2. Unloading package\n") 434s 2. Unloading package 434s > unloadNamespace("matrixStats") 434s > stopifnot(!"matrixStats" %in% loadedNamespaces()) 434s > 434s > if (FALSE) { 434s + ## 'covr' gives "Error in library("matrixStats") : 434s + ## there is no package called 'matrixStats'" here, cf. 434s + ## https://travis-ci.org/HenrikBengtsson/matrixStats/builds/48015577 434s + 434s + cat("3. Attaching package\n") 434s + library("matrixStats") 434s + stopifnot("package:matrixStats" %in% search()) 434s + 434s + cat("4. Detaching package\n") 434s + detach("package:matrixStats") 434s + stopifnot(!"package:matrixStats" %in% search()) 434s + stopifnot("matrixStats" %in% loadedNamespaces()) 434s + 434s + cat("5. Unloading package\n") 434s + unloadNamespace("matrixStats") 434s + stopifnot(!"matrixStats" %in% loadedNamespaces()) 434s + 434s + cat("6. Attaching package (again)\n") 434s + library("matrixStats") 434s + stopifnot("package:matrixStats" %in% search()) 434s + 434s + cat("7. Detaching package (again)\n") 434s + detach("package:matrixStats") 434s + stopifnot(!"package:matrixStats" %in% search()) 434s + stopifnot("matrixStats" %in% loadedNamespaces()) 434s + } 434s > 434s > cat("7. DONE\n") 434s 7. DONE 434s > 434s autopkgtest [00:55:20]: test run-unit-test: -----------------------] 435s run-unit-test PASS 435s autopkgtest [00:55:21]: test run-unit-test: - - - - - - - - - - results - - - - - - - - - - 435s autopkgtest [00:55:21]: test pkg-r-autopkgtest: preparing testbed 573s autopkgtest [00:57:39]: testbed dpkg architecture: s390x 573s autopkgtest [00:57:39]: testbed apt version: 2.7.12 573s autopkgtest [00:57:39]: @@@@@@@@@@@@@@@@@@@@ test bed setup 574s Get:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease [117 kB] 575s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/restricted Sources [8504 B] 575s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main Sources [475 kB] 575s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/multiverse Sources [55.9 kB] 575s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/universe Sources [3961 kB] 577s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main s390x Packages [652 kB] 577s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main s390x c-n-f Metadata [3032 B] 577s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/restricted s390x Packages [1372 B] 577s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/restricted s390x c-n-f Metadata [116 B] 577s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x Packages [4015 kB] 578s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x c-n-f Metadata [7292 B] 578s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/multiverse s390x Packages [46.2 kB] 578s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/multiverse s390x c-n-f Metadata [116 B] 579s Fetched 9343 kB in 4s (2139 kB/s) 579s Reading package lists... 581s Reading package lists... 581s Building dependency tree... 581s Reading state information... 581s Calculating upgrade... 581s The following packages will be upgraded: 581s binutils binutils-common binutils-s390x-linux-gnu dmsetup gcc-13-base 581s gcc-14-base initramfs-tools initramfs-tools-bin initramfs-tools-core jq 581s libbinutils libctf-nobfd0 libctf0 libdevmapper1.02.1 libexpat1 libftdi1-2 581s libgcc-s1 libjq1 libseccomp2 libsframe1 libstdc++6 libusb-1.0-0 582s 22 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 582s Need to get 4987 kB of archives. 582s After this operation, 1024 B of additional disk space will be used. 582s Get:1 http://ftpmaster.internal/ubuntu noble/main s390x gcc-14-base s390x 14-20240315-1ubuntu1 [47.0 kB] 583s Get:2 http://ftpmaster.internal/ubuntu noble/main s390x libstdc++6 s390x 14-20240315-1ubuntu1 [908 kB] 583s Get:3 http://ftpmaster.internal/ubuntu noble/main s390x libgcc-s1 s390x 14-20240315-1ubuntu1 [35.9 kB] 583s Get:4 http://ftpmaster.internal/ubuntu noble/main s390x libseccomp2 s390x 2.5.5-1ubuntu2 [53.4 kB] 583s Get:5 http://ftpmaster.internal/ubuntu noble/main s390x libdevmapper1.02.1 s390x 2:1.02.185-3ubuntu2 [142 kB] 583s Get:6 http://ftpmaster.internal/ubuntu noble/main s390x dmsetup s390x 2:1.02.185-3ubuntu2 [80.4 kB] 583s Get:7 http://ftpmaster.internal/ubuntu noble/main s390x libexpat1 s390x 2.6.1-2 [94.8 kB] 583s Get:8 http://ftpmaster.internal/ubuntu noble/main s390x libusb-1.0-0 s390x 2:1.0.27-1 [54.8 kB] 583s Get:9 http://ftpmaster.internal/ubuntu noble/main s390x libctf0 s390x 2.42-4ubuntu1 [98.4 kB] 583s Get:10 http://ftpmaster.internal/ubuntu noble/main s390x libctf-nobfd0 s390x 2.42-4ubuntu1 [100 kB] 583s Get:11 http://ftpmaster.internal/ubuntu noble/main s390x binutils-s390x-linux-gnu s390x 2.42-4ubuntu1 [2270 kB] 583s Get:12 http://ftpmaster.internal/ubuntu noble/main s390x libbinutils s390x 2.42-4ubuntu1 [477 kB] 583s Get:13 http://ftpmaster.internal/ubuntu noble/main s390x binutils s390x 2.42-4ubuntu1 [3056 B] 583s Get:14 http://ftpmaster.internal/ubuntu noble/main s390x binutils-common s390x 2.42-4ubuntu1 [217 kB] 583s Get:15 http://ftpmaster.internal/ubuntu noble/main s390x libsframe1 s390x 2.42-4ubuntu1 [14.2 kB] 583s Get:16 http://ftpmaster.internal/ubuntu noble/main s390x gcc-13-base s390x 13.2.0-21ubuntu1 [48.3 kB] 583s Get:17 http://ftpmaster.internal/ubuntu noble/main s390x initramfs-tools all 0.142ubuntu23 [9058 B] 583s Get:18 http://ftpmaster.internal/ubuntu noble/main s390x initramfs-tools-core all 0.142ubuntu23 [50.1 kB] 583s Get:19 http://ftpmaster.internal/ubuntu noble/main s390x initramfs-tools-bin s390x 0.142ubuntu23 [20.5 kB] 583s Get:20 http://ftpmaster.internal/ubuntu noble/main s390x jq s390x 1.7.1-3 [66.5 kB] 583s Get:21 http://ftpmaster.internal/ubuntu noble/main s390x libjq1 s390x 1.7.1-3 [168 kB] 583s Get:22 http://ftpmaster.internal/ubuntu noble/main s390x libftdi1-2 s390x 1.5-6build4 [29.3 kB] 583s Fetched 4987 kB in 1s (4323 kB/s) 583s (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 ... 52167 files and directories currently installed.) 583s Preparing to unpack .../gcc-14-base_14-20240315-1ubuntu1_s390x.deb ... 583s Unpacking gcc-14-base:s390x (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 583s Setting up gcc-14-base:s390x (14-20240315-1ubuntu1) ... 583s (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 ... 52167 files and directories currently installed.) 583s Preparing to unpack .../libstdc++6_14-20240315-1ubuntu1_s390x.deb ... 583s Unpacking libstdc++6:s390x (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 583s Setting up libstdc++6:s390x (14-20240315-1ubuntu1) ... 583s (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 ... 52167 files and directories currently installed.) 583s Preparing to unpack .../libgcc-s1_14-20240315-1ubuntu1_s390x.deb ... 583s Unpacking libgcc-s1:s390x (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 583s Setting up libgcc-s1:s390x (14-20240315-1ubuntu1) ... 583s (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 ... 52167 files and directories currently installed.) 583s Preparing to unpack .../libseccomp2_2.5.5-1ubuntu2_s390x.deb ... 583s Unpacking libseccomp2:s390x (2.5.5-1ubuntu2) over (2.5.5-1ubuntu1) ... 583s Setting up libseccomp2:s390x (2.5.5-1ubuntu2) ... 583s (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 ... 52167 files and directories currently installed.) 583s Preparing to unpack .../00-libdevmapper1.02.1_2%3a1.02.185-3ubuntu2_s390x.deb ... 583s Unpacking libdevmapper1.02.1:s390x (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 583s Preparing to unpack .../01-dmsetup_2%3a1.02.185-3ubuntu2_s390x.deb ... 583s Unpacking dmsetup (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 583s Preparing to unpack .../02-libexpat1_2.6.1-2_s390x.deb ... 583s Unpacking libexpat1:s390x (2.6.1-2) over (2.6.0-1) ... 583s Preparing to unpack .../03-libusb-1.0-0_2%3a1.0.27-1_s390x.deb ... 583s Unpacking libusb-1.0-0:s390x (2:1.0.27-1) over (2:1.0.26-1) ... 583s Preparing to unpack .../04-libctf0_2.42-4ubuntu1_s390x.deb ... 583s Unpacking libctf0:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 583s Preparing to unpack .../05-libctf-nobfd0_2.42-4ubuntu1_s390x.deb ... 583s Unpacking libctf-nobfd0:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 583s Preparing to unpack .../06-binutils-s390x-linux-gnu_2.42-4ubuntu1_s390x.deb ... 583s Unpacking binutils-s390x-linux-gnu (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 584s Preparing to unpack .../07-libbinutils_2.42-4ubuntu1_s390x.deb ... 584s Unpacking libbinutils:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 584s Preparing to unpack .../08-binutils_2.42-4ubuntu1_s390x.deb ... 584s Unpacking binutils (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 584s Preparing to unpack .../09-binutils-common_2.42-4ubuntu1_s390x.deb ... 584s Unpacking binutils-common:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 584s Preparing to unpack .../10-libsframe1_2.42-4ubuntu1_s390x.deb ... 584s Unpacking libsframe1:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 584s Preparing to unpack .../11-gcc-13-base_13.2.0-21ubuntu1_s390x.deb ... 584s Unpacking gcc-13-base:s390x (13.2.0-21ubuntu1) over (13.2.0-17ubuntu2) ... 584s Preparing to unpack .../12-initramfs-tools_0.142ubuntu23_all.deb ... 584s Unpacking initramfs-tools (0.142ubuntu23) over (0.142ubuntu20) ... 584s Preparing to unpack .../13-initramfs-tools-core_0.142ubuntu23_all.deb ... 584s Unpacking initramfs-tools-core (0.142ubuntu23) over (0.142ubuntu20) ... 584s Preparing to unpack .../14-initramfs-tools-bin_0.142ubuntu23_s390x.deb ... 584s Unpacking initramfs-tools-bin (0.142ubuntu23) over (0.142ubuntu20) ... 584s Preparing to unpack .../15-jq_1.7.1-3_s390x.deb ... 584s Unpacking jq (1.7.1-3) over (1.7.1-2) ... 584s Preparing to unpack .../16-libjq1_1.7.1-3_s390x.deb ... 584s Unpacking libjq1:s390x (1.7.1-3) over (1.7.1-2) ... 584s Preparing to unpack .../17-libftdi1-2_1.5-6build4_s390x.deb ... 584s Unpacking libftdi1-2:s390x (1.5-6build4) over (1.5-6build3) ... 584s Setting up libexpat1:s390x (2.6.1-2) ... 584s Setting up libjq1:s390x (1.7.1-3) ... 584s Setting up binutils-common:s390x (2.42-4ubuntu1) ... 584s Setting up libctf-nobfd0:s390x (2.42-4ubuntu1) ... 584s Setting up libsframe1:s390x (2.42-4ubuntu1) ... 584s Setting up gcc-13-base:s390x (13.2.0-21ubuntu1) ... 584s Setting up libdevmapper1.02.1:s390x (2:1.02.185-3ubuntu2) ... 584s Setting up dmsetup (2:1.02.185-3ubuntu2) ... 584s Setting up jq (1.7.1-3) ... 584s Setting up libusb-1.0-0:s390x (2:1.0.27-1) ... 584s Setting up libbinutils:s390x (2.42-4ubuntu1) ... 584s Setting up initramfs-tools-bin (0.142ubuntu23) ... 584s Setting up libctf0:s390x (2.42-4ubuntu1) ... 584s Setting up binutils-s390x-linux-gnu (2.42-4ubuntu1) ... 584s Setting up binutils (2.42-4ubuntu1) ... 584s Setting up libftdi1-2:s390x (1.5-6build4) ... 584s Setting up initramfs-tools-core (0.142ubuntu23) ... 584s Setting up initramfs-tools (0.142ubuntu23) ... 584s update-initramfs: deferring update (trigger activated) 584s Processing triggers for man-db (2.12.0-3) ... 584s Processing triggers for libc-bin (2.39-0ubuntu6) ... 584s Processing triggers for initramfs-tools (0.142ubuntu23) ... 585s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 585s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 588s Using config file '/etc/zipl.conf' 588s Building bootmap in '/boot' 588s Adding IPL section 'ubuntu' (default) 588s Preparing boot device for LD-IPL: vda (0000). 588s Done. 588s Reading package lists... 589s Building dependency tree... 589s Reading state information... 589s 0 upgraded, 0 newly installed, 0 to remove and 222 not upgraded. 589s Hit:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease 589s Hit:2 http://ftpmaster.internal/ubuntu noble InRelease 589s Hit:3 http://ftpmaster.internal/ubuntu noble-updates InRelease 590s Hit:4 http://ftpmaster.internal/ubuntu noble-security InRelease 591s Reading package lists... 591s Reading package lists... 591s Building dependency tree... 591s Reading state information... 591s Calculating upgrade... 591s The following packages were automatically installed and are no longer required: 591s libaio1 libnetplan0 python3-distutils python3-lib2to3 591s Use 'sudo apt autoremove' to remove them. 591s The following packages will be REMOVED: 591s libapt-pkg6.0 libarchive13 libatm1 libcurl3-gnutls libcurl4 libdb5.3 libelf1 591s libext2fs2 libgdbm-compat4 libgdbm6 libglib2.0-0 libgnutls30 libgpgme11 591s libhogweed6 libmagic1 libnettle8 libnpth0 libnvme1 libparted2 libperl5.38 591s libpng16-16 libpsl5 libreadline8 libreiserfscore0 libssl3 libtirpc3 liburcu8 591s libuv1 591s The following NEW packages will be installed: 591s bpfcc-tools bpftrace fontconfig-config fonts-dejavu-core fonts-dejavu-mono 591s hwdata ieee-data libaio1t64 libapt-pkg6.0t64 libarchive13t64 libatm1t64 591s libbpfcc libc-dev-bin libc-devtools libc6-dev libclang-cpp18 libclang1-18 591s libcrypt-dev libcurl3t64-gnutls libcurl4t64 libdb5.3t64 libdeflate0 591s libdw1t64 libelf1t64 libext2fs2t64 libfontconfig1 libfreetype6 libgd3 591s libgdbm-compat4t64 libgdbm6t64 libglib2.0-0t64 libgnutls30t64 libgpgme11t64 591s libhogweed6t64 libjbig0 libjpeg-turbo8 libjpeg8 libllvm18 libmagic1t64 591s libnetplan1 libnettle8t64 libnpth0t64 libnvme1t64 libparted2t64 591s libperl5.38t64 libpng16-16t64 libpsl5t64 libreadline8t64 libreiserfscore0t64 591s libsharpyuv0 libssl3t64 libtiff6 libtirpc3t64 liburcu8t64 libuv1t64 libwebp7 591s libxpm4 linux-headers-6.8.0-20 linux-headers-6.8.0-20-generic 591s linux-image-6.8.0-20-generic linux-libc-dev linux-modules-6.8.0-20-generic 591s linux-modules-extra-6.8.0-20-generic linux-tools-6.8.0-20 591s linux-tools-6.8.0-20-generic linux-tools-common manpages manpages-dev 591s python3-bpfcc python3-netaddr rpcsvc-proto ubuntu-kernel-accessories 591s xdg-user-dirs 591s The following packages have been kept back: 591s s390-tools 591s The following packages will be upgraded: 591s apparmor apt apt-utils base-files bash bind9-dnsutils bind9-host bind9-libs 591s bolt bsdextrautils bsdutils btrfs-progs coreutils cryptsetup-bin curl dbus 591s dbus-bin dbus-daemon dbus-session-bus-common dbus-system-bus-common 591s dbus-user-session dhcpcd-base dirmngr dpkg dpkg-dev e2fsprogs e2fsprogs-l10n 591s eject fdisk file ftp fwupd gawk gir1.2-girepository-2.0 gir1.2-glib-2.0 591s gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpgconf gpgsm gpgv 591s groff-base ibverbs-providers inetutils-telnet info install-info iproute2 591s keyboxd kmod kpartx krb5-locales libapparmor1 libaudit-common libaudit1 591s libblkid1 libblockdev-crypto3 libblockdev-fs3 libblockdev-loop3 591s libblockdev-mdraid3 libblockdev-nvme3 libblockdev-part3 libblockdev-swap3 591s libblockdev-utils3 libblockdev3 libbpf1 libbrotli1 libcap-ng0 libcom-err2 591s libcryptsetup12 libdbus-1-3 libdebconfclient0 libdpkg-perl 591s libevent-core-2.1-7 libfdisk1 libfido2-1 libfwupd2 libgirepository-1.0-1 591s libglib2.0-data libgssapi-krb5-2 libgudev-1.0-0 libgusb2 libibverbs1 591s libjcat1 libjson-glib-1.0-0 libjson-glib-1.0-common libk5crypto3 libkmod2 591s libkrb5-3 libkrb5support0 libldap-common libldap2 liblocale-gettext-perl 591s liblzma5 libmagic-mgc libmbim-glib4 libmbim-proxy libmm-glib0 libmount1 591s libnghttp2-14 libnsl2 libnss-systemd libpam-modules libpam-modules-bin 591s libpam-runtime libpam-systemd libpam0g libplymouth5 libpolkit-agent-1-0 591s libpolkit-gobject-1-0 libproc2-0 libprotobuf-c1 libpython3-stdlib 591s libpython3.11-minimal libpython3.11-stdlib libpython3.12-minimal 591s libpython3.12-stdlib libqmi-glib5 libqmi-proxy libqrtr-glib0 librtmp1 591s libsasl2-2 libsasl2-modules libsasl2-modules-db libselinux1 591s libsemanage-common libsemanage2 libslang2 libsmartcols1 libsqlite3-0 libss2 591s libssh-4 libsystemd-shared libsystemd0 libtext-charwidth-perl 591s libtext-iconv-perl libtirpc-common libudev1 libudisks2-0 libuuid1 591s libvolume-key1 libxml2 libxmlb2 libxmuu1 linux-generic linux-headers-generic 591s linux-headers-virtual linux-image-generic linux-image-virtual linux-virtual 591s logsave lshw lsof man-db motd-news-config mount mtr-tiny multipath-tools 591s netplan-generator netplan.io openssh-client openssh-server 591s openssh-sftp-server openssl parted perl perl-base perl-modules-5.38 591s pinentry-curses plymouth plymouth-theme-ubuntu-text procps python-apt-common 591s python3 python3-apt python3-cryptography python3-dbus python3-distutils 591s python3-gdbm python3-gi python3-lib2to3 python3-minimal python3-netplan 591s python3-pkg-resources python3-pyrsistent python3-setuptools 591s python3-typing-extensions python3-yaml python3.11 python3.11-minimal 591s python3.12 python3.12-minimal readline-common rsync rsyslog s390-tools-data 591s shared-mime-info sudo systemd systemd-dev systemd-resolved systemd-sysv 591s systemd-timesyncd tcpdump telnet tnftp ubuntu-pro-client 591s ubuntu-pro-client-l10n udev udisks2 usb.ids util-linux uuid-runtime 591s vim-common vim-tiny wget xxd xz-utils zlib1g 592s 221 upgraded, 73 newly installed, 28 to remove and 1 not upgraded. 592s Need to get 223 MB of archives. 592s After this operation, 524 MB of additional disk space will be used. 592s Get:1 http://ftpmaster.internal/ubuntu noble-proposed/main s390x motd-news-config all 13ubuntu8 [5098 B] 592s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main s390x base-files s390x 13ubuntu8 [74.2 kB] 592s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bash s390x 5.2.21-2ubuntu3 [845 kB] 592s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bsdutils s390x 1:2.39.3-9ubuntu2 [96.1 kB] 592s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libbrotli1 s390x 1.1.0-2build1 [375 kB] 592s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgssapi-krb5-2 s390x 1.20.1-6ubuntu1 [149 kB] 592s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libkrb5-3 s390x 1.20.1-6ubuntu1 [360 kB] 592s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libkrb5support0 s390x 1.20.1-6ubuntu1 [34.6 kB] 592s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libk5crypto3 s390x 1.20.1-6ubuntu1 [90.3 kB] 592s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcom-err2 s390x 1.47.0-2.4~exp1ubuntu2 [22.9 kB] 592s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/main s390x zlib1g s390x 1:1.3.dfsg-3.1ubuntu1 [75.7 kB] 593s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/main s390x librtmp1 s390x 2.4+20151223.gitfa8646d.1-2build6 [58.4 kB] 593s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main s390x udisks2 s390x 2.10.1-6 [298 kB] 593s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libudisks2-0 s390x 2.10.1-6 [179 kB] 593s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblkid1 s390x 2.39.3-9ubuntu2 [128 kB] 593s Get:16 http://ftpmaster.internal/ubuntu noble-proposed/main s390x liblzma5 s390x 5.6.0-0.2 [137 kB] 593s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main s390x kmod s390x 31+20240202-2ubuntu4 [107 kB] 593s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libkmod2 s390x 31+20240202-2ubuntu4 [56.3 kB] 593s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-dev all 255.4-1ubuntu5 [103 kB] 593s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-timesyncd s390x 255.4-1ubuntu5 [35.3 kB] 593s Get:21 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-session-bus-common all 1.14.10-4ubuntu2 [80.3 kB] 593s Get:22 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libaudit-common all 1:3.1.2-2.1 [5674 B] 593s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcap-ng0 s390x 0.8.4-2build1 [15.7 kB] 593s Get:24 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libaudit1 s390x 1:3.1.2-2.1 [48.9 kB] 593s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam0g s390x 1.5.3-5ubuntu3 [69.8 kB] 593s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libselinux1 s390x 3.5-2ubuntu1 [84.7 kB] 593s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcurl4t64 s390x 8.5.0-2ubuntu8 [363 kB] 593s Get:28 http://ftpmaster.internal/ubuntu noble-proposed/main s390x curl s390x 8.5.0-2ubuntu8 [227 kB] 593s Get:29 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpsl5t64 s390x 0.21.2-1.1 [57.6 kB] 593s Get:30 http://ftpmaster.internal/ubuntu noble-proposed/main s390x wget s390x 1.21.4-1ubuntu2 [351 kB] 593s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main s390x tnftp s390x 20230507-2build1 [107 kB] 593s Get:32 http://ftpmaster.internal/ubuntu noble-proposed/main s390x tcpdump s390x 4.99.4-3ubuntu2 [490 kB] 593s Get:33 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsystemd-shared s390x 255.4-1ubuntu5 [2131 kB] 594s Get:34 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-resolved s390x 255.4-1ubuntu5 [304 kB] 594s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main s390x sudo s390x 1.9.15p5-3ubuntu3 [968 kB] 594s Get:36 http://ftpmaster.internal/ubuntu noble-proposed/main s390x rsync s390x 3.2.7-1build1 [446 kB] 594s Get:37 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-cryptography s390x 41.0.7-4build2 [918 kB] 594s Get:38 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssl s390x 3.0.13-0ubuntu2 [1010 kB] 594s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssh-sftp-server s390x 1:9.6p1-3ubuntu11 [39.0 kB] 594s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssh-client s390x 1:9.6p1-3ubuntu11 [935 kB] 594s Get:41 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssh-server s390x 1:9.6p1-3ubuntu11 [529 kB] 594s Get:42 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libssh-4 s390x 0.10.6-2build1 [189 kB] 594s Get:43 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsasl2-modules s390x 2.1.28+dfsg1-5ubuntu1 [76.6 kB] 594s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.12 s390x 3.12.2-4build3 [645 kB] 594s Get:45 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.12-minimal s390x 3.12.2-4build3 [2419 kB] 595s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.12-minimal s390x 3.12.2-4build3 [829 kB] 595s Get:47 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libparted2t64 s390x 3.6-3.1build2 [172 kB] 595s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main s390x parted s390x 3.6-3.1build2 [44.6 kB] 595s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.11 s390x 3.11.8-1build4 [589 kB] 595s Get:50 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.11-minimal s390x 3.11.8-1build4 [2280 kB] 595s Get:51 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.11-minimal s390x 3.11.8-1build4 [838 kB] 595s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.11-stdlib s390x 3.11.8-1build4 [1944 kB] 596s Get:53 http://ftpmaster.internal/ubuntu noble-proposed/main s390x shared-mime-info s390x 2.4-1build1 [474 kB] 596s Get:54 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gir1.2-girepository-2.0 s390x 1.79.1-1ubuntu6 [24.5 kB] 596s Get:55 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gir1.2-glib-2.0 s390x 2.79.3-3ubuntu5 [180 kB] 596s Get:56 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgirepository-1.0-1 s390x 1.79.1-1ubuntu6 [84.0 kB] 596s Get:57 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-gi s390x 3.47.0-3build1 [236 kB] 596s Get:58 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-dbus s390x 1.3.2-5build2 [100 kB] 596s Get:59 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnetplan1 s390x 1.0-1 [123 kB] 596s Get:60 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-netplan s390x 1.0-1 [23.0 kB] 596s Get:61 http://ftpmaster.internal/ubuntu noble-proposed/main s390x netplan-generator s390x 1.0-1 [59.1 kB] 596s Get:62 http://ftpmaster.internal/ubuntu noble-proposed/main s390x netplan.io s390x 1.0-1 [65.4 kB] 596s Get:63 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxmlb2 s390x 0.3.15-1build1 [70.6 kB] 596s Get:64 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgpgme11t64 s390x 1.18.0-4.1ubuntu3 [150 kB] 596s Get:65 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libvolume-key1 s390x 0.3.12-7build1 [40.8 kB] 596s Get:66 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libqrtr-glib0 s390x 1.2.2-1ubuntu3 [17.5 kB] 596s Get:67 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libqmi-glib5 s390x 1.35.2-0ubuntu1 [918 kB] 596s Get:68 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libqmi-proxy s390x 1.35.2-0ubuntu1 [6122 B] 596s Get:69 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpolkit-agent-1-0 s390x 124-1ubuntu1 [17.8 kB] 596s Get:70 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpolkit-gobject-1-0 s390x 124-1ubuntu1 [48.3 kB] 596s Get:71 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmm-glib0 s390x 1.23.4-0ubuntu1 [251 kB] 596s Get:72 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmbim-glib4 s390x 1.31.2-0ubuntu2 [238 kB] 596s Get:73 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmbim-proxy s390x 1.31.2-0ubuntu2 [6154 B] 596s Get:74 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libjson-glib-1.0-common all 1.8.0-2build1 [4210 B] 596s Get:75 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libjson-glib-1.0-0 s390x 1.8.0-2build1 [68.4 kB] 596s Get:76 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgusb2 s390x 0.4.8-1build1 [39.0 kB] 596s Get:77 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgudev-1.0-0 s390x 1:238-3ubuntu2 [15.7 kB] 596s Get:78 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libarchive13t64 s390x 3.7.2-1.1ubuntu2 [419 kB] 596s Get:79 http://ftpmaster.internal/ubuntu noble-proposed/main s390x fwupd s390x 1.9.15-2 [4435 kB] 597s Get:80 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcurl3t64-gnutls s390x 8.5.0-2ubuntu8 [356 kB] 597s Get:81 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfwupd2 s390x 1.9.15-2 [136 kB] 597s Get:82 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev3 s390x 3.1.0-1build1 [52.3 kB] 597s Get:83 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-utils3 s390x 3.1.0-1build1 [19.2 kB] 597s Get:84 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-swap3 s390x 3.1.0-1build1 [7778 B] 597s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-part3 s390x 3.1.0-1build1 [15.4 kB] 597s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnvme1t64 s390x 1.8-3 [78.7 kB] 597s Get:87 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-nvme3 s390x 3.1.0-1build1 [18.3 kB] 597s Get:88 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-mdraid3 s390x 3.1.0-1build1 [13.2 kB] 597s Get:89 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-loop3 s390x 3.1.0-1build1 [7138 B] 597s Get:90 http://ftpmaster.internal/ubuntu noble-proposed/main s390x logsave s390x 1.47.0-2.4~exp1ubuntu2 [22.5 kB] 597s Get:91 http://ftpmaster.internal/ubuntu noble-proposed/main s390x e2fsprogs-l10n all 1.47.0-2.4~exp1ubuntu2 [5996 B] 597s Get:92 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libext2fs2t64 s390x 1.47.0-2.4~exp1ubuntu2 [235 kB] 597s Get:93 http://ftpmaster.internal/ubuntu noble-proposed/main s390x e2fsprogs s390x 1.47.0-2.4~exp1ubuntu2 [615 kB] 597s Get:94 http://ftpmaster.internal/ubuntu noble/main s390x libreiserfscore0t64 s390x 1:3.6.27-7.1 [85.5 kB] 597s Get:95 http://ftpmaster.internal/ubuntu noble-proposed/main s390x btrfs-progs s390x 6.6.3-1.1build1 [959 kB] 598s Get:96 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-fs3 s390x 3.1.0-1build1 [36.5 kB] 598s Get:97 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-crypto3 s390x 3.1.0-1build1 [21.6 kB] 598s Get:98 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bolt s390x 0.9.6-2build1 [142 kB] 598s Get:99 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libglib2.0-0t64 s390x 2.79.3-3ubuntu5 [1566 kB] 598s Get:100 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libjcat1 s390x 0.2.0-2build2 [34.4 kB] 598s Get:101 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libldap2 s390x 2.6.7+dfsg-1~exp1ubuntu6 [202 kB] 598s Get:102 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ubuntu-pro-client-l10n s390x 31.2.2 [19.4 kB] 598s Get:103 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ubuntu-pro-client s390x 31.2.2 [214 kB] 599s Get:104 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gnupg-utils s390x 2.4.4-2ubuntu15 [116 kB] 599s Get:105 http://ftpmaster.internal/ubuntu noble-proposed/main s390x keyboxd s390x 2.4.4-2ubuntu15 [83.1 kB] 599s Get:106 http://ftpmaster.internal/ubuntu noble/main s390x libnpth0t64 s390x 1.6-3.1 [8148 B] 599s Get:107 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpgv s390x 2.4.4-2ubuntu15 [165 kB] 599s Get:108 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpg-wks-client s390x 2.4.4-2ubuntu15 [76.8 kB] 599s Get:109 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpg-agent s390x 2.4.4-2ubuntu15 [240 kB] 599s Get:110 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpg s390x 2.4.4-2ubuntu15 [589 kB] 599s Get:111 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dirmngr s390x 2.4.4-2ubuntu15 [340 kB] 599s Get:112 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gnupg all 2.4.4-2ubuntu15 [359 kB] 600s Get:113 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-apt s390x 2.7.7 [171 kB] 600s Get:114 http://ftpmaster.internal/ubuntu noble-proposed/main s390x apt-utils s390x 2.7.14 [214 kB] 600s Get:115 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libapt-pkg6.0t64 s390x 2.7.14 [1014 kB] 600s Get:116 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnettle8t64 s390x 3.9.1-2.2 [210 kB] 600s Get:117 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libhogweed6t64 s390x 3.9.1-2.2 [204 kB] 600s Get:118 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgnutls30t64 s390x 3.8.3-1.1ubuntu2 [1044 kB] 601s Get:119 http://ftpmaster.internal/ubuntu noble-proposed/main s390x apt s390x 2.7.14 [1390 kB] 601s Get:120 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpgconf s390x 2.4.4-2ubuntu15 [111 kB] 601s Get:121 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpgsm s390x 2.4.4-2ubuntu15 [244 kB] 601s Get:122 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libreadline8t64 s390x 8.2-4 [170 kB] 601s Get:123 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gawk s390x 1:5.2.1-2build2 [496 kB] 602s Get:124 http://ftpmaster.internal/ubuntu noble-proposed/main s390x fdisk s390x 2.39.3-9ubuntu2 [124 kB] 602s Get:125 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.12-stdlib s390x 3.12.2-4build3 [2046 kB] 602s Get:126 http://ftpmaster.internal/ubuntu noble-proposed/main s390x perl-base s390x 5.38.2-3.2 [1961 kB] 603s Get:127 http://ftpmaster.internal/ubuntu noble-proposed/main s390x perl-modules-5.38 all 5.38.2-3.2 [3110 kB] 604s Get:128 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-gdbm s390x 3.12.2-3ubuntu1.1 [19.0 kB] 604s Get:129 http://ftpmaster.internal/ubuntu noble-proposed/main s390x man-db s390x 2.12.0-3build4 [1246 kB] 604s Get:130 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgdbm6t64 s390x 1.23-5.1 [36.4 kB] 604s Get:131 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgdbm-compat4t64 s390x 1.23-5.1 [6880 B] 604s Get:132 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libperl5.38t64 s390x 5.38.2-3.2 [5007 kB] 606s Get:133 http://ftpmaster.internal/ubuntu noble-proposed/main s390x perl s390x 5.38.2-3.2 [231 kB] 606s Get:134 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdb5.3t64 s390x 5.3.28+dfsg2-6 [763 kB] 606s Get:135 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsasl2-modules-db s390x 2.1.28+dfsg1-5ubuntu1 [21.1 kB] 606s Get:136 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsasl2-2 s390x 2.1.28+dfsg1-5ubuntu1 [57.8 kB] 606s Get:137 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfido2-1 s390x 1.14.0-1build1 [81.0 kB] 606s Get:138 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcryptsetup12 s390x 2:2.7.0-1ubuntu2 [264 kB] 606s Get:139 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dhcpcd-base s390x 1:10.0.6-1ubuntu2 [217 kB] 606s Get:140 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libuv1t64 s390x 1.48.0-1.1 [101 kB] 606s Get:141 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bind9-host s390x 1:9.18.24-0ubuntu3 [50.5 kB] 606s Get:142 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bind9-dnsutils s390x 1:9.18.24-0ubuntu3 [162 kB] 607s Get:143 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bind9-libs s390x 1:9.18.24-0ubuntu3 [1243 kB] 607s Get:144 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libssl3t64 s390x 3.0.13-0ubuntu2 [1675 kB] 608s Get:145 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnss-systemd s390x 255.4-1ubuntu5 [166 kB] 608s Get:146 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libudev1 s390x 255.4-1ubuntu5 [178 kB] 608s Get:147 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd s390x 255.4-1ubuntu5 [3533 kB] 609s Get:148 http://ftpmaster.internal/ubuntu noble-proposed/main s390x udev s390x 255.4-1ubuntu5 [1887 kB] 610s Get:149 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-sysv s390x 255.4-1ubuntu5 [11.9 kB] 610s Get:150 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-systemd s390x 255.4-1ubuntu5 [242 kB] 610s Get:151 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsystemd0 s390x 255.4-1ubuntu5 [443 kB] 610s Get:152 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-modules-bin s390x 1.5.3-5ubuntu3 [57.4 kB] 610s Get:153 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-modules s390x 1.5.3-5ubuntu3 [289 kB] 610s Get:154 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-runtime all 1.5.3-5ubuntu3 [40.8 kB] 610s Get:155 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-user-session s390x 1.14.10-4ubuntu2 [9960 B] 610s Get:156 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libapparmor1 s390x 4.0.0-beta3-0ubuntu2 [50.8 kB] 610s Get:157 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-system-bus-common all 1.14.10-4ubuntu2 [81.5 kB] 610s Get:158 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-bin s390x 1.14.10-4ubuntu2 [41.4 kB] 610s Get:159 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus s390x 1.14.10-4ubuntu2 [24.3 kB] 610s Get:160 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-daemon s390x 1.14.10-4ubuntu2 [118 kB] 610s Get:161 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdbus-1-3 s390x 1.14.10-4ubuntu2 [213 kB] 610s Get:162 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmount1 s390x 2.39.3-9ubuntu2 [138 kB] 610s Get:163 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libuuid1 s390x 2.39.3-9ubuntu2 [35.6 kB] 610s Get:164 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfdisk1 s390x 2.39.3-9ubuntu2 [151 kB] 610s Get:165 http://ftpmaster.internal/ubuntu noble-proposed/main s390x mount s390x 2.39.3-9ubuntu2 [119 kB] 611s Get:166 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsqlite3-0 s390x 3.45.1-1ubuntu1 [747 kB] 611s Get:167 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dpkg s390x 1.22.6ubuntu5 [1278 kB] 611s Get:168 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-minimal s390x 3.12.2-0ubuntu1 [27.1 kB] 611s Get:169 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3 s390x 3.12.2-0ubuntu1 [24.1 kB] 611s Get:170 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3-stdlib s390x 3.12.2-0ubuntu1 [9804 B] 611s Get:171 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsmartcols1 s390x 2.39.3-9ubuntu2 [67.9 kB] 611s Get:172 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bsdextrautils s390x 2.39.3-9ubuntu2 [76.3 kB] 611s Get:173 http://ftpmaster.internal/ubuntu noble-proposed/main s390x groff-base s390x 1.23.0-3build1 [1049 kB] 612s Get:174 http://ftpmaster.internal/ubuntu noble-proposed/main s390x pinentry-curses s390x 1.2.1-3ubuntu4 [37.6 kB] 612s Get:175 http://ftpmaster.internal/ubuntu noble-proposed/main s390x readline-common all 8.2-4 [56.4 kB] 612s Get:176 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxml2 s390x 2.9.14+dfsg-1.3ubuntu2 [818 kB] 612s Get:177 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libbpf1 s390x 1:1.3.0-2build1 [176 kB] 612s Get:178 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libelf1t64 s390x 0.190-1.1build2 [69.7 kB] 612s Get:179 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtirpc-common all 1.3.4+ds-1.1 [8018 B] 612s Get:180 http://ftpmaster.internal/ubuntu noble-proposed/main s390x lsof s390x 4.95.0-1build2 [248 kB] 612s Get:181 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnsl2 s390x 1.3.0-3build2 [44.1 kB] 612s Get:182 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtirpc3t64 s390x 1.3.4+ds-1.1 [85.8 kB] 612s Get:183 http://ftpmaster.internal/ubuntu noble-proposed/main s390x iproute2 s390x 6.1.0-1ubuntu5 [1156 kB] 612s Get:184 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-yaml s390x 6.0.1-2build1 [121 kB] 612s Get:185 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libprotobuf-c1 s390x 1.4.1-1ubuntu3 [23.4 kB] 612s Get:186 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnghttp2-14 s390x 1.59.0-1build1 [77.8 kB] 612s Get:187 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libproc2-0 s390x 2:4.0.4-4ubuntu2 [60.1 kB] 612s Get:188 http://ftpmaster.internal/ubuntu noble-proposed/main s390x procps s390x 2:4.0.4-4ubuntu2 [724 kB] 613s Get:189 http://ftpmaster.internal/ubuntu noble-proposed/main s390x coreutils s390x 9.4-3ubuntu3 [1482 kB] 613s Get:190 http://ftpmaster.internal/ubuntu noble-proposed/main s390x util-linux s390x 2.39.3-9ubuntu2 [1143 kB] 614s Get:191 http://ftpmaster.internal/ubuntu noble-proposed/main s390x file s390x 1:5.45-3 [22.2 kB] 614s Get:192 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmagic-mgc s390x 1:5.45-3 [305 kB] 614s Get:193 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmagic1t64 s390x 1:5.45-3 [93.1 kB] 614s Get:194 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libplymouth5 s390x 24.004.60-1ubuntu6 [151 kB] 614s Get:195 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpng16-16t64 s390x 1.6.43-3 [200 kB] 614s Get:196 http://ftpmaster.internal/ubuntu noble-proposed/main s390x multipath-tools s390x 0.9.4-5ubuntu6 [318 kB] 614s Get:197 http://ftpmaster.internal/ubuntu noble/main s390x liburcu8t64 s390x 0.14.0-3.1 [67.3 kB] 614s Get:198 http://ftpmaster.internal/ubuntu noble-proposed/main s390x liblocale-gettext-perl s390x 1.07-6ubuntu4 [15.8 kB] 614s Get:199 http://ftpmaster.internal/ubuntu noble-proposed/main s390x uuid-runtime s390x 2.39.3-9ubuntu2 [33.4 kB] 614s Get:200 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdebconfclient0 s390x 0.271ubuntu2 [11.4 kB] 614s Get:201 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsemanage-common all 3.5-1build4 [10.1 kB] 614s Get:202 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsemanage2 s390x 3.5-1build4 [96.7 kB] 614s Get:203 http://ftpmaster.internal/ubuntu noble-proposed/main s390x install-info s390x 7.1-3build1 [64.5 kB] 614s Get:204 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libss2 s390x 1.47.0-2.4~exp1ubuntu2 [17.2 kB] 614s Get:205 http://ftpmaster.internal/ubuntu noble-proposed/main s390x eject s390x 2.39.3-9ubuntu2 [26.2 kB] 614s Get:206 http://ftpmaster.internal/ubuntu noble-proposed/main s390x krb5-locales all 1.20.1-6ubuntu1 [13.8 kB] 614s Get:207 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libglib2.0-data all 2.79.3-3ubuntu5 [46.6 kB] 614s Get:208 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libslang2 s390x 2.3.3-3build1 [501 kB] 615s Get:209 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtext-charwidth-perl s390x 0.04-11build2 [9484 B] 615s Get:210 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtext-iconv-perl s390x 1.7-8build2 [13.8 kB] 615s Get:211 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python-apt-common all 2.7.7 [19.8 kB] 615s Get:212 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-setuptools all 68.1.2-2ubuntu1 [396 kB] 615s Get:213 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-pkg-resources all 68.1.2-2ubuntu1 [168 kB] 615s Get:214 http://ftpmaster.internal/ubuntu noble-proposed/main s390x rsyslog s390x 8.2312.0-3ubuntu7 [536 kB] 615s Get:215 http://ftpmaster.internal/ubuntu noble-proposed/main s390x vim-tiny s390x 2:9.1.0016-1ubuntu6 [879 kB] 615s Get:216 http://ftpmaster.internal/ubuntu noble-proposed/main s390x vim-common all 2:9.1.0016-1ubuntu6 [385 kB] 615s Get:217 http://ftpmaster.internal/ubuntu noble/main s390x xdg-user-dirs s390x 0.18-1 [18.5 kB] 615s Get:218 http://ftpmaster.internal/ubuntu noble-proposed/main s390x xxd s390x 2:9.1.0016-1ubuntu6 [63.5 kB] 615s Get:219 http://ftpmaster.internal/ubuntu noble-proposed/main s390x apparmor s390x 4.0.0-beta3-0ubuntu2 [710 kB] 616s Get:220 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ftp all 20230507-2build1 [4724 B] 616s Get:221 http://ftpmaster.internal/ubuntu noble-proposed/main s390x inetutils-telnet s390x 2:2.5-3ubuntu3 [105 kB] 616s Get:222 http://ftpmaster.internal/ubuntu noble-proposed/main s390x info s390x 7.1-3build1 [152 kB] 616s Get:223 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxmuu1 s390x 2:1.1.3-3build1 [8860 B] 616s Get:224 http://ftpmaster.internal/ubuntu noble-proposed/main s390x lshw s390x 02.19.git.2021.06.19.996aaad9c7-2build2 [346 kB] 616s Get:225 http://ftpmaster.internal/ubuntu noble/main s390x manpages all 6.05.01-1 [1340 kB] 616s Get:226 http://ftpmaster.internal/ubuntu noble-proposed/main s390x mtr-tiny s390x 0.95-1.1build1 [57.0 kB] 616s Get:227 http://ftpmaster.internal/ubuntu noble-proposed/main s390x plymouth-theme-ubuntu-text s390x 24.004.60-1ubuntu6 [10.2 kB] 616s Get:228 http://ftpmaster.internal/ubuntu noble-proposed/main s390x plymouth s390x 24.004.60-1ubuntu6 [147 kB] 616s Get:229 http://ftpmaster.internal/ubuntu noble-proposed/main s390x telnet all 0.17+2.5-3ubuntu3 [3682 B] 616s Get:230 http://ftpmaster.internal/ubuntu noble-proposed/main s390x usb.ids all 2024.03.18-1 [223 kB] 616s Get:231 http://ftpmaster.internal/ubuntu noble-proposed/main s390x xz-utils s390x 5.6.0-0.2 [274 kB] 616s Get:232 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libllvm18 s390x 1:18.1.2-1ubuntu2 [33.4 MB] 619s Get:233 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libclang-cpp18 s390x 1:18.1.2-1ubuntu2 [16.1 MB] 621s Get:234 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x libbpfcc s390x 0.29.1+ds-1ubuntu4 [697 kB] 621s Get:235 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x python3-bpfcc all 0.29.1+ds-1ubuntu4 [40.2 kB] 621s Get:236 http://ftpmaster.internal/ubuntu noble/main s390x ieee-data all 20220827.1 [2113 kB] 621s Get:237 http://ftpmaster.internal/ubuntu noble/main s390x python3-netaddr all 0.8.0-2ubuntu1 [319 kB] 621s Get:238 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x bpfcc-tools all 0.29.1+ds-1ubuntu4 [687 kB] 621s Get:239 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libclang1-18 s390x 1:18.1.2-1ubuntu2 [9349 kB] 622s Get:240 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdw1t64 s390x 0.190-1.1build2 [286 kB] 622s Get:241 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x bpftrace s390x 0.20.2-1ubuntu1 [1139 kB] 622s Get:242 http://ftpmaster.internal/ubuntu noble-proposed/main s390x cryptsetup-bin s390x 2:2.7.0-1ubuntu2 [211 kB] 622s Get:243 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dpkg-dev all 1.22.6ubuntu5 [1074 kB] 622s Get:244 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdpkg-perl all 1.22.6ubuntu5 [269 kB] 622s Get:245 http://ftpmaster.internal/ubuntu noble/main s390x fonts-dejavu-mono all 2.37-8 [502 kB] 623s Get:246 http://ftpmaster.internal/ubuntu noble/main s390x fonts-dejavu-core all 2.37-8 [835 kB] 623s Get:247 http://ftpmaster.internal/ubuntu noble/main s390x fontconfig-config s390x 2.15.0-1.1ubuntu1 [37.4 kB] 623s Get:248 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gnupg-l10n all 2.4.4-2ubuntu15 [65.8 kB] 623s Get:249 http://ftpmaster.internal/ubuntu noble/main s390x hwdata all 0.379-1 [29.1 kB] 623s Get:250 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libibverbs1 s390x 50.0-2build1 [70.0 kB] 623s Get:251 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ibverbs-providers s390x 50.0-2build1 [408 kB] 623s Get:252 http://ftpmaster.internal/ubuntu noble/main s390x libaio1t64 s390x 0.3.113-6 [7290 B] 623s Get:253 http://ftpmaster.internal/ubuntu noble/main s390x libatm1t64 s390x 1:2.5.1-5.1 [24.5 kB] 623s Get:254 http://ftpmaster.internal/ubuntu noble/main s390x libc-dev-bin s390x 2.39-0ubuntu6 [20.2 kB] 623s Get:255 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfreetype6 s390x 2.13.2+dfsg-1build2 [437 kB] 623s Get:256 http://ftpmaster.internal/ubuntu noble/main s390x libfontconfig1 s390x 2.15.0-1.1ubuntu1 [150 kB] 623s Get:257 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg-turbo8 s390x 2.1.5-2ubuntu1 [128 kB] 623s Get:258 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg8 s390x 8c-2ubuntu11 [2146 B] 623s Get:259 http://ftpmaster.internal/ubuntu noble/main s390x libdeflate0 s390x 1.19-1 [46.0 kB] 623s Get:260 http://ftpmaster.internal/ubuntu noble/main s390x libjbig0 s390x 2.1-6.1ubuntu1 [29.8 kB] 623s Get:261 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsharpyuv0 s390x 1.3.2-0.4build2 [14.9 kB] 623s Get:262 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libwebp7 s390x 1.3.2-0.4build2 [207 kB] 623s Get:263 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtiff6 s390x 4.5.1+git230720-4ubuntu1 [218 kB] 623s Get:264 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxpm4 s390x 1:3.5.17-1build1 [41.4 kB] 623s Get:265 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgd3 s390x 2.3.3-9ubuntu3 [141 kB] 623s Get:266 http://ftpmaster.internal/ubuntu noble/main s390x libc-devtools s390x 2.39-0ubuntu6 [30.6 kB] 623s Get:267 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-libc-dev s390x 6.8.0-20.20 [1592 kB] 623s Get:268 http://ftpmaster.internal/ubuntu noble/main s390x libcrypt-dev s390x 1:4.4.36-4 [135 kB] 623s Get:269 http://ftpmaster.internal/ubuntu noble/main s390x rpcsvc-proto s390x 1.4.2-0ubuntu6 [64.7 kB] 623s Get:270 http://ftpmaster.internal/ubuntu noble/main s390x libc6-dev s390x 2.39-0ubuntu6 [1629 kB] 624s Get:271 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libevent-core-2.1-7 s390x 2.1.12-stable-9build1 [94.3 kB] 624s Get:272 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libldap-common all 2.6.7+dfsg-1~exp1ubuntu6 [31.3 kB] 624s Get:273 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-modules-6.8.0-20-generic s390x 6.8.0-20.20 [21.0 MB] 626s Get:274 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-image-6.8.0-20-generic s390x 6.8.0-20.20 [9872 kB] 628s Get:275 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-modules-extra-6.8.0-20-generic s390x 6.8.0-20.20 [11.7 MB] 629s Get:276 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-generic s390x 6.8.0-20.20+1 [1734 B] 629s Get:277 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-image-generic s390x 6.8.0-20.20+1 [9688 B] 629s Get:278 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-virtual s390x 6.8.0-20.20+1 [1682 B] 629s Get:279 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-image-virtual s390x 6.8.0-20.20+1 [9700 B] 629s Get:280 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-virtual s390x 6.8.0-20.20+1 [1642 B] 629s Get:281 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-6.8.0-20 all 6.8.0-20.20 [13.6 MB] 631s Get:282 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-6.8.0-20-generic s390x 6.8.0-20.20 [2579 kB] 631s Get:283 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-generic s390x 6.8.0-20.20+1 [9608 B] 631s Get:284 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-tools-common all 6.8.0-20.20 [437 kB] 631s Get:285 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-tools-6.8.0-20 s390x 6.8.0-20.20 [2674 kB] 631s Get:286 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-tools-6.8.0-20-generic s390x 6.8.0-20.20 [1724 B] 631s Get:287 http://ftpmaster.internal/ubuntu noble/main s390x manpages-dev all 6.05.01-1 [2018 kB] 632s Get:288 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-distutils all 3.12.2-3ubuntu1.1 [133 kB] 632s Get:289 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-lib2to3 all 3.12.2-3ubuntu1.1 [79.1 kB] 632s Get:290 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-pyrsistent s390x 0.20.0-1build1 [55.8 kB] 632s Get:291 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-typing-extensions all 4.10.0-1 [60.7 kB] 632s Get:292 http://ftpmaster.internal/ubuntu noble-proposed/main s390x s390-tools-data all 2.31.0-0ubuntu3 [17.8 kB] 632s Get:293 http://ftpmaster.internal/ubuntu noble/main s390x ubuntu-kernel-accessories s390x 1.536build1 [10.5 kB] 632s Get:294 http://ftpmaster.internal/ubuntu noble-proposed/main s390x kpartx s390x 0.9.4-5ubuntu6 [32.8 kB] 632s Preconfiguring packages ... 633s Fetched 223 MB in 40s (5533 kB/s) 633s (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 ... 52168 files and directories currently installed.) 633s Preparing to unpack .../motd-news-config_13ubuntu8_all.deb ... 633s Unpacking motd-news-config (13ubuntu8) over (13ubuntu7) ... 633s Preparing to unpack .../base-files_13ubuntu8_s390x.deb ... 633s Unpacking base-files (13ubuntu8) over (13ubuntu7) ... 633s Setting up base-files (13ubuntu8) ... 633s motd-news.service is a disabled or a static unit not running, not starting it. 634s (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 ... 52168 files and directories currently installed.) 634s Preparing to unpack .../bash_5.2.21-2ubuntu3_s390x.deb ... 634s Unpacking bash (5.2.21-2ubuntu3) over (5.2.21-2ubuntu2) ... 634s Setting up bash (5.2.21-2ubuntu3) ... 634s update-alternatives: using /usr/share/man/man7/bash-builtins.7.gz to provide /usr/share/man/man7/builtins.7.gz (builtins.7.gz) in auto mode 634s (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 ... 52168 files and directories currently installed.) 634s Preparing to unpack .../bsdutils_1%3a2.39.3-9ubuntu2_s390x.deb ... 634s Unpacking bsdutils (1:2.39.3-9ubuntu2) over (1:2.39.3-6ubuntu2) ... 634s Setting up bsdutils (1:2.39.3-9ubuntu2) ... 634s (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 ... 52168 files and directories currently installed.) 634s Preparing to unpack .../0-libbrotli1_1.1.0-2build1_s390x.deb ... 634s Unpacking libbrotli1:s390x (1.1.0-2build1) over (1.1.0-2) ... 634s Preparing to unpack .../1-libgssapi-krb5-2_1.20.1-6ubuntu1_s390x.deb ... 634s Unpacking libgssapi-krb5-2:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 634s Preparing to unpack .../2-libkrb5-3_1.20.1-6ubuntu1_s390x.deb ... 634s Unpacking libkrb5-3:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 634s Preparing to unpack .../3-libkrb5support0_1.20.1-6ubuntu1_s390x.deb ... 634s Unpacking libkrb5support0:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 634s Preparing to unpack .../4-libk5crypto3_1.20.1-6ubuntu1_s390x.deb ... 634s Unpacking libk5crypto3:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 634s Preparing to unpack .../5-libcom-err2_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 634s Unpacking libcom-err2:s390x (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 634s Preparing to unpack .../6-zlib1g_1%3a1.3.dfsg-3.1ubuntu1_s390x.deb ... 634s Unpacking zlib1g:s390x (1:1.3.dfsg-3.1ubuntu1) over (1:1.3.dfsg-3ubuntu1) ... 634s Setting up zlib1g:s390x (1:1.3.dfsg-3.1ubuntu1) ... 634s (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 ... 52168 files and directories currently installed.) 634s Preparing to unpack .../librtmp1_2.4+20151223.gitfa8646d.1-2build6_s390x.deb ... 634s Unpacking librtmp1:s390x (2.4+20151223.gitfa8646d.1-2build6) over (2.4+20151223.gitfa8646d.1-2build4) ... 634s Preparing to unpack .../udisks2_2.10.1-6_s390x.deb ... 634s Unpacking udisks2 (2.10.1-6) over (2.10.1-1ubuntu2) ... 634s Preparing to unpack .../libudisks2-0_2.10.1-6_s390x.deb ... 634s Unpacking libudisks2-0:s390x (2.10.1-6) over (2.10.1-1ubuntu2) ... 634s Preparing to unpack .../libblkid1_2.39.3-9ubuntu2_s390x.deb ... 634s Unpacking libblkid1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 634s Setting up libblkid1:s390x (2.39.3-9ubuntu2) ... 634s (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 ... 52168 files and directories currently installed.) 634s Preparing to unpack .../liblzma5_5.6.0-0.2_s390x.deb ... 634s Unpacking liblzma5:s390x (5.6.0-0.2) over (5.4.5-0.3) ... 634s Setting up liblzma5:s390x (5.6.0-0.2) ... 634s (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 ... 52168 files and directories currently installed.) 634s Preparing to unpack .../0-kmod_31+20240202-2ubuntu4_s390x.deb ... 634s Unpacking kmod (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 634s Preparing to unpack .../1-libkmod2_31+20240202-2ubuntu4_s390x.deb ... 634s Unpacking libkmod2:s390x (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 634s Preparing to unpack .../2-systemd-dev_255.4-1ubuntu5_all.deb ... 634s Unpacking systemd-dev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 634s Preparing to unpack .../3-systemd-timesyncd_255.4-1ubuntu5_s390x.deb ... 634s Unpacking systemd-timesyncd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 634s Preparing to unpack .../4-dbus-session-bus-common_1.14.10-4ubuntu2_all.deb ... 634s Unpacking dbus-session-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 634s Preparing to unpack .../5-libaudit-common_1%3a3.1.2-2.1_all.deb ... 634s Unpacking libaudit-common (1:3.1.2-2.1) over (1:3.1.2-2) ... 634s Setting up libaudit-common (1:3.1.2-2.1) ... 634s (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 ... 52168 files and directories currently installed.) 634s Preparing to unpack .../libcap-ng0_0.8.4-2build1_s390x.deb ... 634s Unpacking libcap-ng0:s390x (0.8.4-2build1) over (0.8.4-2) ... 634s Setting up libcap-ng0:s390x (0.8.4-2build1) ... 634s (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 ... 52168 files and directories currently installed.) 634s Preparing to unpack .../libaudit1_1%3a3.1.2-2.1_s390x.deb ... 634s Unpacking libaudit1:s390x (1:3.1.2-2.1) over (1:3.1.2-2) ... 634s Setting up libaudit1:s390x (1:3.1.2-2.1) ... 634s (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 ... 52168 files and directories currently installed.) 634s Preparing to unpack .../libpam0g_1.5.3-5ubuntu3_s390x.deb ... 634s Unpacking libpam0g:s390x (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 634s Setting up libpam0g:s390x (1.5.3-5ubuntu3) ... 634s (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 ... 52168 files and directories currently installed.) 634s Preparing to unpack .../libselinux1_3.5-2ubuntu1_s390x.deb ... 634s Unpacking libselinux1:s390x (3.5-2ubuntu1) over (3.5-2build1) ... 634s Setting up libselinux1:s390x (3.5-2ubuntu1) ... 635s dpkg: libcurl4:s390x: dependency problems, but removing anyway as you requested: 635s s390-tools depends on libcurl4 (>= 7.16.2). 635s curl depends on libcurl4 (= 8.5.0-2ubuntu2). 635s 635s (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 ... 52168 files and directories currently installed.) 635s Removing libcurl4:s390x (8.5.0-2ubuntu2) ... 635s Selecting previously unselected package libcurl4t64:s390x. 635s (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 ... 52163 files and directories currently installed.) 635s Preparing to unpack .../libcurl4t64_8.5.0-2ubuntu8_s390x.deb ... 635s Unpacking libcurl4t64:s390x (8.5.0-2ubuntu8) ... 635s Preparing to unpack .../curl_8.5.0-2ubuntu8_s390x.deb ... 635s Unpacking curl (8.5.0-2ubuntu8) over (8.5.0-2ubuntu2) ... 635s dpkg: libpsl5:s390x: dependency problems, but removing anyway as you requested: 635s wget depends on libpsl5 (>= 0.16.0). 635s libcurl3-gnutls:s390x depends on libpsl5 (>= 0.16.0). 635s 635s (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 ... 52169 files and directories currently installed.) 635s Removing libpsl5:s390x (0.21.2-1build1) ... 635s Selecting previously unselected package libpsl5t64:s390x. 635s (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 ... 52164 files and directories currently installed.) 635s Preparing to unpack .../00-libpsl5t64_0.21.2-1.1_s390x.deb ... 635s Unpacking libpsl5t64:s390x (0.21.2-1.1) ... 635s Preparing to unpack .../01-wget_1.21.4-1ubuntu2_s390x.deb ... 635s Unpacking wget (1.21.4-1ubuntu2) over (1.21.4-1ubuntu1) ... 635s Preparing to unpack .../02-tnftp_20230507-2build1_s390x.deb ... 635s Unpacking tnftp (20230507-2build1) over (20230507-2) ... 635s Preparing to unpack .../03-tcpdump_4.99.4-3ubuntu2_s390x.deb ... 635s Unpacking tcpdump (4.99.4-3ubuntu2) over (4.99.4-3ubuntu1) ... 635s Preparing to unpack .../04-libsystemd-shared_255.4-1ubuntu5_s390x.deb ... 635s Unpacking libsystemd-shared:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 635s Preparing to unpack .../05-systemd-resolved_255.4-1ubuntu5_s390x.deb ... 635s Unpacking systemd-resolved (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 635s Preparing to unpack .../06-sudo_1.9.15p5-3ubuntu3_s390x.deb ... 635s Unpacking sudo (1.9.15p5-3ubuntu3) over (1.9.15p5-3ubuntu1) ... 635s Preparing to unpack .../07-rsync_3.2.7-1build1_s390x.deb ... 635s Unpacking rsync (3.2.7-1build1) over (3.2.7-1) ... 635s Preparing to unpack .../08-python3-cryptography_41.0.7-4build2_s390x.deb ... 635s Unpacking python3-cryptography (41.0.7-4build2) over (41.0.7-3) ... 635s Preparing to unpack .../09-openssl_3.0.13-0ubuntu2_s390x.deb ... 635s Unpacking openssl (3.0.13-0ubuntu2) over (3.0.10-1ubuntu4) ... 635s Preparing to unpack .../10-openssh-sftp-server_1%3a9.6p1-3ubuntu11_s390x.deb ... 635s Unpacking openssh-sftp-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 635s Preparing to unpack .../11-openssh-client_1%3a9.6p1-3ubuntu11_s390x.deb ... 635s Unpacking openssh-client (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 635s Preparing to unpack .../12-openssh-server_1%3a9.6p1-3ubuntu11_s390x.deb ... 635s Unpacking openssh-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 635s Preparing to unpack .../13-libssh-4_0.10.6-2build1_s390x.deb ... 635s Unpacking libssh-4:s390x (0.10.6-2build1) over (0.10.6-2) ... 635s Preparing to unpack .../14-libsasl2-modules_2.1.28+dfsg1-5ubuntu1_s390x.deb ... 635s Unpacking libsasl2-modules:s390x (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 635s Preparing to unpack .../15-python3.12_3.12.2-4build3_s390x.deb ... 635s Unpacking python3.12 (3.12.2-4build3) over (3.12.2-1) ... 635s Preparing to unpack .../16-python3.12-minimal_3.12.2-4build3_s390x.deb ... 635s Unpacking python3.12-minimal (3.12.2-4build3) over (3.12.2-1) ... 636s Preparing to unpack .../17-libpython3.12-minimal_3.12.2-4build3_s390x.deb ... 636s Unpacking libpython3.12-minimal:s390x (3.12.2-4build3) over (3.12.2-1) ... 636s dpkg: libparted2:s390x: dependency problems, but removing anyway as you requested: 636s parted depends on libparted2 (= 3.6-3). 636s 636s (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 ... 52170 files and directories currently installed.) 636s Removing libparted2:s390x (3.6-3) ... 636s Selecting previously unselected package libparted2t64:s390x. 636s (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 ... 52164 files and directories currently installed.) 636s Preparing to unpack .../00-libparted2t64_3.6-3.1build2_s390x.deb ... 636s Unpacking libparted2t64:s390x (3.6-3.1build2) ... 636s Preparing to unpack .../01-parted_3.6-3.1build2_s390x.deb ... 636s Unpacking parted (3.6-3.1build2) over (3.6-3) ... 636s Preparing to unpack .../02-python3.11_3.11.8-1build4_s390x.deb ... 636s Unpacking python3.11 (3.11.8-1build4) over (3.11.8-1) ... 636s Preparing to unpack .../03-python3.11-minimal_3.11.8-1build4_s390x.deb ... 636s Unpacking python3.11-minimal (3.11.8-1build4) over (3.11.8-1) ... 636s Preparing to unpack .../04-libpython3.11-minimal_3.11.8-1build4_s390x.deb ... 636s Unpacking libpython3.11-minimal:s390x (3.11.8-1build4) over (3.11.8-1) ... 636s Preparing to unpack .../05-libpython3.11-stdlib_3.11.8-1build4_s390x.deb ... 636s Unpacking libpython3.11-stdlib:s390x (3.11.8-1build4) over (3.11.8-1) ... 636s Preparing to unpack .../06-shared-mime-info_2.4-1build1_s390x.deb ... 636s Unpacking shared-mime-info (2.4-1build1) over (2.4-1) ... 636s Preparing to unpack .../07-gir1.2-girepository-2.0_1.79.1-1ubuntu6_s390x.deb ... 636s Unpacking gir1.2-girepository-2.0:s390x (1.79.1-1ubuntu6) over (1.79.1-1) ... 636s Preparing to unpack .../08-gir1.2-glib-2.0_2.79.3-3ubuntu5_s390x.deb ... 636s Unpacking gir1.2-glib-2.0:s390x (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 636s Preparing to unpack .../09-libgirepository-1.0-1_1.79.1-1ubuntu6_s390x.deb ... 636s Unpacking libgirepository-1.0-1:s390x (1.79.1-1ubuntu6) over (1.79.1-1) ... 636s Preparing to unpack .../10-python3-gi_3.47.0-3build1_s390x.deb ... 637s Unpacking python3-gi (3.47.0-3build1) over (3.47.0-3) ... 637s Preparing to unpack .../11-python3-dbus_1.3.2-5build2_s390x.deb ... 637s Unpacking python3-dbus (1.3.2-5build2) over (1.3.2-5build1) ... 637s Selecting previously unselected package libnetplan1:s390x. 637s Preparing to unpack .../12-libnetplan1_1.0-1_s390x.deb ... 637s Unpacking libnetplan1:s390x (1.0-1) ... 637s Preparing to unpack .../13-python3-netplan_1.0-1_s390x.deb ... 637s Unpacking python3-netplan (1.0-1) over (0.107.1-3) ... 637s Preparing to unpack .../14-netplan-generator_1.0-1_s390x.deb ... 637s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 637s Unpacking netplan-generator (1.0-1) over (0.107.1-3) ... 637s Preparing to unpack .../15-netplan.io_1.0-1_s390x.deb ... 637s Unpacking netplan.io (1.0-1) over (0.107.1-3) ... 637s Preparing to unpack .../16-libxmlb2_0.3.15-1build1_s390x.deb ... 637s Unpacking libxmlb2:s390x (0.3.15-1build1) over (0.3.15-1) ... 637s dpkg: libgpgme11:s390x: dependency problems, but removing anyway as you requested: 637s libvolume-key1:s390x depends on libgpgme11 (>= 1.4.1). 637s libjcat1:s390x depends on libgpgme11 (>= 1.2.0). 637s 637s (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 ... 52172 files and directories currently installed.) 637s Removing libgpgme11:s390x (1.18.0-4ubuntu1) ... 637s Selecting previously unselected package libgpgme11t64:s390x. 637s (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 ... 52166 files and directories currently installed.) 637s Preparing to unpack .../00-libgpgme11t64_1.18.0-4.1ubuntu3_s390x.deb ... 637s Unpacking libgpgme11t64:s390x (1.18.0-4.1ubuntu3) ... 637s Preparing to unpack .../01-libvolume-key1_0.3.12-7build1_s390x.deb ... 637s Unpacking libvolume-key1:s390x (0.3.12-7build1) over (0.3.12-5build2) ... 637s Preparing to unpack .../02-libqrtr-glib0_1.2.2-1ubuntu3_s390x.deb ... 637s Unpacking libqrtr-glib0:s390x (1.2.2-1ubuntu3) over (1.2.2-1ubuntu2) ... 637s Preparing to unpack .../03-libqmi-glib5_1.35.2-0ubuntu1_s390x.deb ... 637s Unpacking libqmi-glib5:s390x (1.35.2-0ubuntu1) over (1.34.0-2) ... 637s Preparing to unpack .../04-libqmi-proxy_1.35.2-0ubuntu1_s390x.deb ... 637s Unpacking libqmi-proxy (1.35.2-0ubuntu1) over (1.34.0-2) ... 637s Preparing to unpack .../05-libpolkit-agent-1-0_124-1ubuntu1_s390x.deb ... 637s Unpacking libpolkit-agent-1-0:s390x (124-1ubuntu1) over (124-1) ... 637s Preparing to unpack .../06-libpolkit-gobject-1-0_124-1ubuntu1_s390x.deb ... 637s Unpacking libpolkit-gobject-1-0:s390x (124-1ubuntu1) over (124-1) ... 637s Preparing to unpack .../07-libmm-glib0_1.23.4-0ubuntu1_s390x.deb ... 637s Unpacking libmm-glib0:s390x (1.23.4-0ubuntu1) over (1.22.0-3) ... 637s Preparing to unpack .../08-libmbim-glib4_1.31.2-0ubuntu2_s390x.deb ... 637s Unpacking libmbim-glib4:s390x (1.31.2-0ubuntu2) over (1.30.0-1) ... 637s Preparing to unpack .../09-libmbim-proxy_1.31.2-0ubuntu2_s390x.deb ... 637s Unpacking libmbim-proxy (1.31.2-0ubuntu2) over (1.30.0-1) ... 637s Preparing to unpack .../10-libjson-glib-1.0-common_1.8.0-2build1_all.deb ... 637s Unpacking libjson-glib-1.0-common (1.8.0-2build1) over (1.8.0-2) ... 637s Preparing to unpack .../11-libjson-glib-1.0-0_1.8.0-2build1_s390x.deb ... 637s Unpacking libjson-glib-1.0-0:s390x (1.8.0-2build1) over (1.8.0-2) ... 637s Preparing to unpack .../12-libgusb2_0.4.8-1build1_s390x.deb ... 637s Unpacking libgusb2:s390x (0.4.8-1build1) over (0.4.8-1) ... 637s Preparing to unpack .../13-libgudev-1.0-0_1%3a238-3ubuntu2_s390x.deb ... 637s Unpacking libgudev-1.0-0:s390x (1:238-3ubuntu2) over (1:238-3) ... 637s dpkg: libarchive13:s390x: dependency problems, but removing anyway as you requested: 637s fwupd depends on libarchive13 (>= 3.2.1). 637s 637s (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 ... 52173 files and directories currently installed.) 637s Removing libarchive13:s390x (3.7.2-1ubuntu2) ... 637s Selecting previously unselected package libarchive13t64:s390x. 637s (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 ... 52167 files and directories currently installed.) 637s Preparing to unpack .../libarchive13t64_3.7.2-1.1ubuntu2_s390x.deb ... 637s Unpacking libarchive13t64:s390x (3.7.2-1.1ubuntu2) ... 637s Preparing to unpack .../fwupd_1.9.15-2_s390x.deb ... 637s Unpacking fwupd (1.9.15-2) over (1.9.14-1) ... 637s dpkg: libcurl3-gnutls:s390x: dependency problems, but removing anyway as you requested: 637s libfwupd2:s390x depends on libcurl3-gnutls (>= 7.63.0). 637s 637s (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 ... 52174 files and directories currently installed.) 637s Removing libcurl3-gnutls:s390x (8.5.0-2ubuntu2) ... 638s Selecting previously unselected package libcurl3t64-gnutls:s390x. 638s (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 ... 52167 files and directories currently installed.) 638s Preparing to unpack .../0-libcurl3t64-gnutls_8.5.0-2ubuntu8_s390x.deb ... 638s Unpacking libcurl3t64-gnutls:s390x (8.5.0-2ubuntu8) ... 638s Preparing to unpack .../1-libfwupd2_1.9.15-2_s390x.deb ... 638s Unpacking libfwupd2:s390x (1.9.15-2) over (1.9.14-1) ... 638s Preparing to unpack .../2-libblockdev3_3.1.0-1build1_s390x.deb ... 638s Unpacking libblockdev3:s390x (3.1.0-1build1) over (3.1.0-1) ... 638s Preparing to unpack .../3-libblockdev-utils3_3.1.0-1build1_s390x.deb ... 638s Unpacking libblockdev-utils3:s390x (3.1.0-1build1) over (3.1.0-1) ... 638s Preparing to unpack .../4-libblockdev-swap3_3.1.0-1build1_s390x.deb ... 638s Unpacking libblockdev-swap3:s390x (3.1.0-1build1) over (3.1.0-1) ... 638s Preparing to unpack .../5-libblockdev-part3_3.1.0-1build1_s390x.deb ... 638s Unpacking libblockdev-part3:s390x (3.1.0-1build1) over (3.1.0-1) ... 638s dpkg: libnvme1: dependency problems, but removing anyway as you requested: 638s libblockdev-nvme3:s390x depends on libnvme1 (>= 1.7.1). 638s 638s (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 ... 52174 files and directories currently installed.) 638s Removing libnvme1 (1.8-2) ... 638s Selecting previously unselected package libnvme1t64. 638s (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 ... 52167 files and directories currently installed.) 638s Preparing to unpack .../0-libnvme1t64_1.8-3_s390x.deb ... 638s Unpacking libnvme1t64 (1.8-3) ... 638s Preparing to unpack .../1-libblockdev-nvme3_3.1.0-1build1_s390x.deb ... 638s Unpacking libblockdev-nvme3:s390x (3.1.0-1build1) over (3.1.0-1) ... 638s Preparing to unpack .../2-libblockdev-mdraid3_3.1.0-1build1_s390x.deb ... 638s Unpacking libblockdev-mdraid3:s390x (3.1.0-1build1) over (3.1.0-1) ... 638s Preparing to unpack .../3-libblockdev-loop3_3.1.0-1build1_s390x.deb ... 638s Unpacking libblockdev-loop3:s390x (3.1.0-1build1) over (3.1.0-1) ... 638s Preparing to unpack .../4-logsave_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 638s Unpacking logsave (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 638s Preparing to unpack .../5-e2fsprogs-l10n_1.47.0-2.4~exp1ubuntu2_all.deb ... 638s Unpacking e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 638s dpkg: libext2fs2:s390x: dependency problems, but removing anyway as you requested: 638s libblockdev-fs3:s390x depends on libext2fs2 (>= 1.42.11). 638s e2fsprogs depends on libext2fs2 (= 1.47.0-2ubuntu1). 638s btrfs-progs depends on libext2fs2 (>= 1.42). 638s 638s (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 ... 52175 files and directories currently installed.) 638s Removing libext2fs2:s390x (1.47.0-2ubuntu1) ... 638s Selecting previously unselected package libext2fs2t64:s390x. 638s (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 ... 52168 files and directories currently installed.) 638s Preparing to unpack .../libext2fs2t64_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 638s Adding 'diversion of /lib/s390x-linux-gnu/libe2p.so.2 to /lib/s390x-linux-gnu/libe2p.so.2.usr-is-merged by libext2fs2t64' 638s Adding 'diversion of /lib/s390x-linux-gnu/libe2p.so.2.3 to /lib/s390x-linux-gnu/libe2p.so.2.3.usr-is-merged by libext2fs2t64' 638s Adding 'diversion of /lib/s390x-linux-gnu/libext2fs.so.2 to /lib/s390x-linux-gnu/libext2fs.so.2.usr-is-merged by libext2fs2t64' 638s Adding 'diversion of /lib/s390x-linux-gnu/libext2fs.so.2.4 to /lib/s390x-linux-gnu/libext2fs.so.2.4.usr-is-merged by libext2fs2t64' 638s Unpacking libext2fs2t64:s390x (1.47.0-2.4~exp1ubuntu2) ... 638s Setting up libcom-err2:s390x (1.47.0-2.4~exp1ubuntu2) ... 638s Setting up libext2fs2t64:s390x (1.47.0-2.4~exp1ubuntu2) ... 638s (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 ... 52184 files and directories currently installed.) 638s Preparing to unpack .../e2fsprogs_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 638s Unpacking e2fsprogs (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 638s dpkg: libreiserfscore0: dependency problems, but removing anyway as you requested: 638s btrfs-progs depends on libreiserfscore0 (>= 1:3.6.27). 638s 638s (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 ... 52184 files and directories currently installed.) 638s Removing libreiserfscore0 (1:3.6.27-7) ... 638s Selecting previously unselected package libreiserfscore0t64. 638s (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 ... 52179 files and directories currently installed.) 638s Preparing to unpack .../libreiserfscore0t64_1%3a3.6.27-7.1_s390x.deb ... 638s Unpacking libreiserfscore0t64 (1:3.6.27-7.1) ... 638s Preparing to unpack .../btrfs-progs_6.6.3-1.1build1_s390x.deb ... 638s Unpacking btrfs-progs (6.6.3-1.1build1) over (6.6.3-1.1) ... 638s Preparing to unpack .../libblockdev-fs3_3.1.0-1build1_s390x.deb ... 638s Unpacking libblockdev-fs3:s390x (3.1.0-1build1) over (3.1.0-1) ... 638s Preparing to unpack .../libblockdev-crypto3_3.1.0-1build1_s390x.deb ... 638s Unpacking libblockdev-crypto3:s390x (3.1.0-1build1) over (3.1.0-1) ... 638s Preparing to unpack .../bolt_0.9.6-2build1_s390x.deb ... 638s Unpacking bolt (0.9.6-2build1) over (0.9.6-2) ... 638s dpkg: libglib2.0-0:s390x: dependency problems, but removing anyway as you requested: 638s s390-tools depends on libglib2.0-0 (>= 2.77.0). 638s libnetplan0:s390x depends on libglib2.0-0 (>= 2.75.3). 638s libjcat1:s390x depends on libglib2.0-0 (>= 2.75.3). 638s 638s (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 ... 52185 files and directories currently installed.) 638s Removing libglib2.0-0:s390x (2.79.2-1~ubuntu1) ... 638s Selecting previously unselected package libglib2.0-0t64:s390x. 638s (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 ... 52160 files and directories currently installed.) 638s Preparing to unpack .../0-libglib2.0-0t64_2.79.3-3ubuntu5_s390x.deb ... 638s libglib2.0-0t64.preinst: Removing /var/lib/dpkg/info/libglib2.0-0:s390x.postrm to avoid loss of /usr/share/glib-2.0/schemas/gschemas.compiled... 638s removed '/var/lib/dpkg/info/libglib2.0-0:s390x.postrm' 638s Unpacking libglib2.0-0t64:s390x (2.79.3-3ubuntu5) ... 638s Preparing to unpack .../1-libjcat1_0.2.0-2build2_s390x.deb ... 638s Unpacking libjcat1:s390x (0.2.0-2build2) over (0.2.0-2) ... 638s Preparing to unpack .../2-libldap2_2.6.7+dfsg-1~exp1ubuntu6_s390x.deb ... 638s Unpacking libldap2:s390x (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 638s Preparing to unpack .../3-ubuntu-pro-client-l10n_31.2.2_s390x.deb ... 638s Unpacking ubuntu-pro-client-l10n (31.2.2) over (31.1) ... 638s Preparing to unpack .../4-ubuntu-pro-client_31.2.2_s390x.deb ... 639s Unpacking ubuntu-pro-client (31.2.2) over (31.1) ... 639s Preparing to unpack .../5-gnupg-utils_2.4.4-2ubuntu15_s390x.deb ... 639s Unpacking gnupg-utils (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 639s Preparing to unpack .../6-keyboxd_2.4.4-2ubuntu15_s390x.deb ... 639s Unpacking keyboxd (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 639s dpkg: libnpth0:s390x: dependency problems, but removing anyway as you requested: 639s gpgv depends on libnpth0 (>= 0.90). 639s gpgsm depends on libnpth0 (>= 0.90). 639s gpg-agent depends on libnpth0 (>= 0.90). 639s gpg depends on libnpth0 (>= 0.90). 639s dirmngr depends on libnpth0 (>= 0.90). 639s 639s (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 ... 52185 files and directories currently installed.) 639s Removing libnpth0:s390x (1.6-3build2) ... 639s Selecting previously unselected package libnpth0t64:s390x. 639s (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 ... 52180 files and directories currently installed.) 639s Preparing to unpack .../libnpth0t64_1.6-3.1_s390x.deb ... 639s Unpacking libnpth0t64:s390x (1.6-3.1) ... 639s Setting up libnpth0t64:s390x (1.6-3.1) ... 639s (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 ... 52186 files and directories currently installed.) 639s Preparing to unpack .../gpgv_2.4.4-2ubuntu15_s390x.deb ... 639s Unpacking gpgv (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 639s Setting up gpgv (2.4.4-2ubuntu15) ... 639s (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 ... 52186 files and directories currently installed.) 639s Preparing to unpack .../0-gpg-wks-client_2.4.4-2ubuntu15_s390x.deb ... 639s Unpacking gpg-wks-client (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 639s Preparing to unpack .../1-gpg-agent_2.4.4-2ubuntu15_s390x.deb ... 639s Unpacking gpg-agent (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 639s Preparing to unpack .../2-gpg_2.4.4-2ubuntu15_s390x.deb ... 639s Unpacking gpg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 639s Preparing to unpack .../3-dirmngr_2.4.4-2ubuntu15_s390x.deb ... 639s Unpacking dirmngr (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 639s Preparing to unpack .../4-gnupg_2.4.4-2ubuntu15_all.deb ... 639s Unpacking gnupg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 639s Preparing to unpack .../5-python3-apt_2.7.7_s390x.deb ... 639s Unpacking python3-apt (2.7.7) over (2.7.6) ... 639s Preparing to unpack .../6-apt-utils_2.7.14_s390x.deb ... 639s Unpacking apt-utils (2.7.14) over (2.7.12) ... 639s dpkg: libapt-pkg6.0:s390x: dependency problems, but removing anyway as you requested: 639s apt depends on libapt-pkg6.0 (>= 2.7.12). 639s 639s (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 ... 52184 files and directories currently installed.) 639s Removing libapt-pkg6.0:s390x (2.7.12) ... 639s dpkg: libnettle8:s390x: dependency problems, but removing anyway as you requested: 639s libhogweed6:s390x depends on libnettle8. 639s libgnutls30:s390x depends on libnettle8 (>= 3.9~). 639s 639s Removing libnettle8:s390x (3.9.1-2) ... 639s Selecting previously unselected package libapt-pkg6.0t64:s390x. 639s (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 ... 52128 files and directories currently installed.) 639s Preparing to unpack .../libapt-pkg6.0t64_2.7.14_s390x.deb ... 639s Unpacking libapt-pkg6.0t64:s390x (2.7.14) ... 639s Setting up libapt-pkg6.0t64:s390x (2.7.14) ... 639s Selecting previously unselected package libnettle8t64:s390x. 639s (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 ... 52178 files and directories currently installed.) 639s Preparing to unpack .../libnettle8t64_3.9.1-2.2_s390x.deb ... 639s Unpacking libnettle8t64:s390x (3.9.1-2.2) ... 639s Setting up libnettle8t64:s390x (3.9.1-2.2) ... 639s dpkg: libhogweed6:s390x: dependency problems, but removing anyway as you requested: 639s libgnutls30:s390x depends on libhogweed6 (>= 3.6). 639s 639s (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 ... 52186 files and directories currently installed.) 639s Removing libhogweed6:s390x (3.9.1-2) ... 639s Selecting previously unselected package libhogweed6t64:s390x. 639s (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 ... 52181 files and directories currently installed.) 639s Preparing to unpack .../libhogweed6t64_3.9.1-2.2_s390x.deb ... 639s Unpacking libhogweed6t64:s390x (3.9.1-2.2) ... 639s Setting up libhogweed6t64:s390x (3.9.1-2.2) ... 639s dpkg: libgnutls30:s390x: dependency problems, but removing anyway as you requested: 639s apt depends on libgnutls30 (>= 3.8.1). 639s 639s (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 ... 52187 files and directories currently installed.) 639s Removing libgnutls30:s390x (3.8.3-1ubuntu1) ... 639s Selecting previously unselected package libgnutls30t64:s390x. 639s (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 ... 52178 files and directories currently installed.) 639s Preparing to unpack .../libgnutls30t64_3.8.3-1.1ubuntu2_s390x.deb ... 639s Unpacking libgnutls30t64:s390x (3.8.3-1.1ubuntu2) ... 639s Setting up libgnutls30t64:s390x (3.8.3-1.1ubuntu2) ... 639s (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 ... 52206 files and directories currently installed.) 639s Preparing to unpack .../archives/apt_2.7.14_s390x.deb ... 639s Unpacking apt (2.7.14) over (2.7.12) ... 640s Setting up apt (2.7.14) ... 640s (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 ... 52206 files and directories currently installed.) 640s Preparing to unpack .../gpgconf_2.4.4-2ubuntu15_s390x.deb ... 640s Unpacking gpgconf (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 640s Preparing to unpack .../gpgsm_2.4.4-2ubuntu15_s390x.deb ... 640s Unpacking gpgsm (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 640s dpkg: libreadline8:s390x: dependency problems, but removing anyway as you requested: 640s libpython3.12-stdlib:s390x depends on libreadline8 (>= 7.0~beta). 640s gawk depends on libreadline8 (>= 6.0). 640s fdisk depends on libreadline8 (>= 6.0). 640s 640s (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 ... 52206 files and directories currently installed.) 640s Removing libreadline8:s390x (8.2-3) ... 640s Selecting previously unselected package libreadline8t64:s390x. 640s (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 ... 52194 files and directories currently installed.) 640s Preparing to unpack .../libreadline8t64_8.2-4_s390x.deb ... 640s Adding 'diversion of /lib/s390x-linux-gnu/libhistory.so.8 to /lib/s390x-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' 640s Adding 'diversion of /lib/s390x-linux-gnu/libhistory.so.8.2 to /lib/s390x-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' 640s Adding 'diversion of /lib/s390x-linux-gnu/libreadline.so.8 to /lib/s390x-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' 640s Adding 'diversion of /lib/s390x-linux-gnu/libreadline.so.8.2 to /lib/s390x-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' 640s Unpacking libreadline8t64:s390x (8.2-4) ... 640s Setting up libreadline8t64:s390x (8.2-4) ... 640s (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 ... 52214 files and directories currently installed.) 640s Preparing to unpack .../gawk_1%3a5.2.1-2build2_s390x.deb ... 640s Unpacking gawk (1:5.2.1-2build2) over (1:5.2.1-2) ... 640s Preparing to unpack .../fdisk_2.39.3-9ubuntu2_s390x.deb ... 640s Unpacking fdisk (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 640s Preparing to unpack .../libpython3.12-stdlib_3.12.2-4build3_s390x.deb ... 640s Unpacking libpython3.12-stdlib:s390x (3.12.2-4build3) over (3.12.2-1) ... 641s Preparing to unpack .../perl-base_5.38.2-3.2_s390x.deb ... 641s Unpacking perl-base (5.38.2-3.2) over (5.38.2-3) ... 641s Setting up perl-base (5.38.2-3.2) ... 641s (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 ... 52212 files and directories currently installed.) 641s Preparing to unpack .../perl-modules-5.38_5.38.2-3.2_all.deb ... 641s Unpacking perl-modules-5.38 (5.38.2-3.2) over (5.38.2-3) ... 641s Preparing to unpack .../python3-gdbm_3.12.2-3ubuntu1.1_s390x.deb ... 641s Unpacking python3-gdbm:s390x (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 641s Preparing to unpack .../man-db_2.12.0-3build4_s390x.deb ... 641s Unpacking man-db (2.12.0-3build4) over (2.12.0-3) ... 641s dpkg: libgdbm-compat4:s390x: dependency problems, but removing anyway as you requested: 641s libperl5.38:s390x depends on libgdbm-compat4 (>= 1.18-3). 641s 641s (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 ... 52212 files and directories currently installed.) 641s Removing libgdbm-compat4:s390x (1.23-5) ... 641s dpkg: libgdbm6:s390x: dependency problems, but removing anyway as you requested: 641s libperl5.38:s390x depends on libgdbm6 (>= 1.21). 641s 641s Removing libgdbm6:s390x (1.23-5) ... 641s Selecting previously unselected package libgdbm6t64:s390x. 641s (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 ... 52202 files and directories currently installed.) 641s Preparing to unpack .../libgdbm6t64_1.23-5.1_s390x.deb ... 641s Unpacking libgdbm6t64:s390x (1.23-5.1) ... 641s Selecting previously unselected package libgdbm-compat4t64:s390x. 641s Preparing to unpack .../libgdbm-compat4t64_1.23-5.1_s390x.deb ... 641s Unpacking libgdbm-compat4t64:s390x (1.23-5.1) ... 641s dpkg: libperl5.38:s390x: dependency problems, but removing anyway as you requested: 641s perl depends on libperl5.38 (= 5.38.2-3). 641s 641s (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 ... 52214 files and directories currently installed.) 641s Removing libperl5.38:s390x (5.38.2-3) ... 641s Selecting previously unselected package libperl5.38t64:s390x. 641s (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 ... 51692 files and directories currently installed.) 641s Preparing to unpack .../libperl5.38t64_5.38.2-3.2_s390x.deb ... 641s Unpacking libperl5.38t64:s390x (5.38.2-3.2) ... 642s Preparing to unpack .../perl_5.38.2-3.2_s390x.deb ... 642s Unpacking perl (5.38.2-3.2) over (5.38.2-3) ... 642s dpkg: libdb5.3:s390x: dependency problems, but removing anyway as you requested: 642s libsasl2-modules-db:s390x depends on libdb5.3. 642s libpam-modules:s390x depends on libdb5.3. 642s iproute2 depends on libdb5.3. 642s 642s (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 ... 52214 files and directories currently installed.) 642s Removing libdb5.3:s390x (5.3.28+dfsg2-4) ... 642s Selecting previously unselected package libdb5.3t64:s390x. 642s (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 ... 52208 files and directories currently installed.) 642s Preparing to unpack .../0-libdb5.3t64_5.3.28+dfsg2-6_s390x.deb ... 642s Unpacking libdb5.3t64:s390x (5.3.28+dfsg2-6) ... 642s Preparing to unpack .../1-libsasl2-modules-db_2.1.28+dfsg1-5ubuntu1_s390x.deb ... 642s Unpacking libsasl2-modules-db:s390x (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 642s Preparing to unpack .../2-libsasl2-2_2.1.28+dfsg1-5ubuntu1_s390x.deb ... 642s Unpacking libsasl2-2:s390x (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 642s Preparing to unpack .../3-libfido2-1_1.14.0-1build1_s390x.deb ... 642s Unpacking libfido2-1:s390x (1.14.0-1build1) over (1.14.0-1) ... 642s Preparing to unpack .../4-libcryptsetup12_2%3a2.7.0-1ubuntu2_s390x.deb ... 642s Unpacking libcryptsetup12:s390x (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 642s Preparing to unpack .../5-dhcpcd-base_1%3a10.0.6-1ubuntu2_s390x.deb ... 642s Unpacking dhcpcd-base (1:10.0.6-1ubuntu2) over (1:10.0.6-1ubuntu1) ... 642s dpkg: libuv1:s390x: dependency problems, but removing anyway as you requested: 642s bind9-libs:s390x depends on libuv1 (>= 1.40.0). 642s 642s (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 ... 52214 files and directories currently installed.) 642s Removing libuv1:s390x (1.48.0-1) ... 642s Selecting previously unselected package libuv1t64:s390x. 642s (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 ... 52209 files and directories currently installed.) 642s Preparing to unpack .../libuv1t64_1.48.0-1.1_s390x.deb ... 642s Unpacking libuv1t64:s390x (1.48.0-1.1) ... 642s Preparing to unpack .../bind9-host_1%3a9.18.24-0ubuntu3_s390x.deb ... 642s Unpacking bind9-host (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 642s Preparing to unpack .../bind9-dnsutils_1%3a9.18.24-0ubuntu3_s390x.deb ... 642s Unpacking bind9-dnsutils (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 642s Preparing to unpack .../bind9-libs_1%3a9.18.24-0ubuntu3_s390x.deb ... 642s Unpacking bind9-libs:s390x (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 642s dpkg: libssl3:s390x: dependency problems, but removing anyway as you requested: 642s systemd depends on libssl3 (>= 3.0.0). 642s s390-tools depends on libssl3 (>= 3.0.0). 642s linux-headers-6.8.0-11-generic depends on libssl3 (>= 3.0.0). 642s 642s (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 ... 52215 files and directories currently installed.) 642s Removing libssl3:s390x (3.0.10-1ubuntu4) ... 642s Selecting previously unselected package libssl3t64:s390x. 642s (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 ... 52204 files and directories currently installed.) 642s Preparing to unpack .../libssl3t64_3.0.13-0ubuntu2_s390x.deb ... 642s Unpacking libssl3t64:s390x (3.0.13-0ubuntu2) ... 642s Setting up libssl3t64:s390x (3.0.13-0ubuntu2) ... 642s (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 ... 52217 files and directories currently installed.) 642s Preparing to unpack .../libnss-systemd_255.4-1ubuntu5_s390x.deb ... 642s Unpacking libnss-systemd:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 642s Preparing to unpack .../libudev1_255.4-1ubuntu5_s390x.deb ... 642s Unpacking libudev1:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 642s Setting up libudev1:s390x (255.4-1ubuntu5) ... 642s (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 ... 52217 files and directories currently installed.) 642s Preparing to unpack .../systemd_255.4-1ubuntu5_s390x.deb ... 642s Unpacking systemd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 642s Preparing to unpack .../udev_255.4-1ubuntu5_s390x.deb ... 642s Unpacking udev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 643s Preparing to unpack .../libsystemd0_255.4-1ubuntu5_s390x.deb ... 643s Unpacking libsystemd0:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 643s Setting up libsystemd0:s390x (255.4-1ubuntu5) ... 643s Setting up libcryptsetup12:s390x (2:2.7.0-1ubuntu2) ... 643s Setting up libkmod2:s390x (31+20240202-2ubuntu4) ... 643s Setting up libsystemd-shared:s390x (255.4-1ubuntu5) ... 643s Setting up systemd-dev (255.4-1ubuntu5) ... 643s Setting up systemd (255.4-1ubuntu5) ... 643s (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 ... 52217 files and directories currently installed.) 643s Preparing to unpack .../systemd-sysv_255.4-1ubuntu5_s390x.deb ... 643s Unpacking systemd-sysv (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 643s Preparing to unpack .../libpam-systemd_255.4-1ubuntu5_s390x.deb ... 643s Unpacking libpam-systemd:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 643s Preparing to unpack .../libpam-modules-bin_1.5.3-5ubuntu3_s390x.deb ... 643s Unpacking libpam-modules-bin (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 643s Setting up libpam-modules-bin (1.5.3-5ubuntu3) ... 644s pam_namespace.service is a disabled or a static unit not running, not starting it. 644s (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 ... 52217 files and directories currently installed.) 644s Preparing to unpack .../libpam-modules_1.5.3-5ubuntu3_s390x.deb ... 644s Unpacking libpam-modules:s390x (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 644s Setting up libpam-modules:s390x (1.5.3-5ubuntu3) ... 644s Installing new version of config file /etc/security/namespace.init ... 644s (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 ... 52215 files and directories currently installed.) 644s Preparing to unpack .../libpam-runtime_1.5.3-5ubuntu3_all.deb ... 644s Unpacking libpam-runtime (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 644s Setting up libpam-runtime (1.5.3-5ubuntu3) ... 644s (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 ... 52215 files and directories currently installed.) 644s Preparing to unpack .../0-dbus-user-session_1.14.10-4ubuntu2_s390x.deb ... 644s Unpacking dbus-user-session (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 644s Preparing to unpack .../1-libapparmor1_4.0.0-beta3-0ubuntu2_s390x.deb ... 644s Unpacking libapparmor1:s390x (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 644s Preparing to unpack .../2-dbus-system-bus-common_1.14.10-4ubuntu2_all.deb ... 644s Unpacking dbus-system-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 644s Preparing to unpack .../3-dbus-bin_1.14.10-4ubuntu2_s390x.deb ... 644s Unpacking dbus-bin (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 644s Preparing to unpack .../4-dbus_1.14.10-4ubuntu2_s390x.deb ... 644s Unpacking dbus (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 644s Preparing to unpack .../5-dbus-daemon_1.14.10-4ubuntu2_s390x.deb ... 644s Unpacking dbus-daemon (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 644s Preparing to unpack .../6-libdbus-1-3_1.14.10-4ubuntu2_s390x.deb ... 644s Unpacking libdbus-1-3:s390x (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 644s Preparing to unpack .../7-libmount1_2.39.3-9ubuntu2_s390x.deb ... 644s Unpacking libmount1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 644s Setting up libmount1:s390x (2.39.3-9ubuntu2) ... 644s (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 ... 52215 files and directories currently installed.) 644s Preparing to unpack .../libuuid1_2.39.3-9ubuntu2_s390x.deb ... 644s Unpacking libuuid1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 644s Setting up libuuid1:s390x (2.39.3-9ubuntu2) ... 644s (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 ... 52215 files and directories currently installed.) 644s Preparing to unpack .../libfdisk1_2.39.3-9ubuntu2_s390x.deb ... 644s Unpacking libfdisk1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 644s Preparing to unpack .../mount_2.39.3-9ubuntu2_s390x.deb ... 644s Unpacking mount (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 644s Preparing to unpack .../libsqlite3-0_3.45.1-1ubuntu1_s390x.deb ... 644s Unpacking libsqlite3-0:s390x (3.45.1-1ubuntu1) over (3.45.1-1) ... 644s Preparing to unpack .../dpkg_1.22.6ubuntu5_s390x.deb ... 644s Unpacking dpkg (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 645s Setting up dpkg (1.22.6ubuntu5) ... 645s Setting up libpython3.12-minimal:s390x (3.12.2-4build3) ... 645s Setting up python3.12-minimal (3.12.2-4build3) ... 646s (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 ... 52215 files and directories currently installed.) 646s Preparing to unpack .../python3-minimal_3.12.2-0ubuntu1_s390x.deb ... 646s Unpacking python3-minimal (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 646s Setting up python3-minimal (3.12.2-0ubuntu1) ... 647s (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 ... 52215 files and directories currently installed.) 647s Preparing to unpack .../python3_3.12.2-0ubuntu1_s390x.deb ... 647s Unpacking python3 (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 647s Preparing to unpack .../libpython3-stdlib_3.12.2-0ubuntu1_s390x.deb ... 647s Unpacking libpython3-stdlib:s390x (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 647s Preparing to unpack .../libsmartcols1_2.39.3-9ubuntu2_s390x.deb ... 647s Unpacking libsmartcols1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 647s Setting up libsmartcols1:s390x (2.39.3-9ubuntu2) ... 647s (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 ... 52215 files and directories currently installed.) 647s Preparing to unpack .../0-bsdextrautils_2.39.3-9ubuntu2_s390x.deb ... 647s Unpacking bsdextrautils (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 647s Preparing to unpack .../1-groff-base_1.23.0-3build1_s390x.deb ... 647s Unpacking groff-base (1.23.0-3build1) over (1.23.0-3) ... 647s Preparing to unpack .../2-pinentry-curses_1.2.1-3ubuntu4_s390x.deb ... 647s Unpacking pinentry-curses (1.2.1-3ubuntu4) over (1.2.1-3ubuntu1) ... 647s Preparing to unpack .../3-readline-common_8.2-4_all.deb ... 647s Unpacking readline-common (8.2-4) over (8.2-3) ... 647s Preparing to unpack .../4-libxml2_2.9.14+dfsg-1.3ubuntu2_s390x.deb ... 647s Unpacking libxml2:s390x (2.9.14+dfsg-1.3ubuntu2) over (2.9.14+dfsg-1.3ubuntu1) ... 647s Preparing to unpack .../5-libbpf1_1%3a1.3.0-2build1_s390x.deb ... 647s Unpacking libbpf1:s390x (1:1.3.0-2build1) over (1:1.3.0-2) ... 647s dpkg: libelf1:s390x: dependency problems, but removing anyway as you requested: 647s linux-headers-6.8.0-11-generic depends on libelf1 (>= 0.144). 647s iproute2 depends on libelf1 (>= 0.131). 647s 647s (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 ... 52215 files and directories currently installed.) 647s Removing libelf1:s390x (0.190-1) ... 647s Selecting previously unselected package libelf1t64:s390x. 647s (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 ... 52210 files and directories currently installed.) 647s Preparing to unpack .../libelf1t64_0.190-1.1build2_s390x.deb ... 647s Unpacking libelf1t64:s390x (0.190-1.1build2) ... 647s Preparing to unpack .../libtirpc-common_1.3.4+ds-1.1_all.deb ... 647s Unpacking libtirpc-common (1.3.4+ds-1.1) over (1.3.4+ds-1build1) ... 647s Preparing to unpack .../lsof_4.95.0-1build2_s390x.deb ... 647s Unpacking lsof (4.95.0-1build2) over (4.95.0-1build1) ... 647s Preparing to unpack .../libnsl2_1.3.0-3build2_s390x.deb ... 647s Unpacking libnsl2:s390x (1.3.0-3build2) over (1.3.0-3) ... 647s dpkg: libtirpc3:s390x: dependency problems, but removing anyway as you requested: 647s iproute2 depends on libtirpc3 (>= 1.0.2). 647s 647s (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 ... 52215 files and directories currently installed.) 647s Removing libtirpc3:s390x (1.3.4+ds-1build1) ... 647s Selecting previously unselected package libtirpc3t64:s390x. 647s (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 ... 52209 files and directories currently installed.) 647s Preparing to unpack .../0-libtirpc3t64_1.3.4+ds-1.1_s390x.deb ... 647s Adding 'diversion of /lib/s390x-linux-gnu/libtirpc.so.3 to /lib/s390x-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' 647s Adding 'diversion of /lib/s390x-linux-gnu/libtirpc.so.3.0.0 to /lib/s390x-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' 647s Unpacking libtirpc3t64:s390x (1.3.4+ds-1.1) ... 647s Preparing to unpack .../1-iproute2_6.1.0-1ubuntu5_s390x.deb ... 647s Unpacking iproute2 (6.1.0-1ubuntu5) over (6.1.0-1ubuntu2) ... 647s Preparing to unpack .../2-python3-yaml_6.0.1-2build1_s390x.deb ... 647s Unpacking python3-yaml (6.0.1-2build1) over (6.0.1-2) ... 647s Preparing to unpack .../3-libprotobuf-c1_1.4.1-1ubuntu3_s390x.deb ... 647s Unpacking libprotobuf-c1:s390x (1.4.1-1ubuntu3) over (1.4.1-1ubuntu2) ... 647s Preparing to unpack .../4-libnghttp2-14_1.59.0-1build1_s390x.deb ... 647s Unpacking libnghttp2-14:s390x (1.59.0-1build1) over (1.59.0-1) ... 647s Preparing to unpack .../5-libproc2-0_2%3a4.0.4-4ubuntu2_s390x.deb ... 647s Unpacking libproc2-0:s390x (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 647s Preparing to unpack .../6-procps_2%3a4.0.4-4ubuntu2_s390x.deb ... 647s Unpacking procps (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 647s Preparing to unpack .../7-coreutils_9.4-3ubuntu3_s390x.deb ... 647s Unpacking coreutils (9.4-3ubuntu3) over (9.4-2ubuntu4) ... 648s Setting up coreutils (9.4-3ubuntu3) ... 648s (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 ... 52220 files and directories currently installed.) 648s Preparing to unpack .../util-linux_2.39.3-9ubuntu2_s390x.deb ... 648s Unpacking util-linux (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 648s Setting up util-linux (2.39.3-9ubuntu2) ... 648s fstrim.service is a disabled or a static unit not running, not starting it. 648s (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 ... 52220 files and directories currently installed.) 648s Removing libatm1:s390x (1:2.5.1-5) ... 648s (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 ... 52215 files and directories currently installed.) 648s Preparing to unpack .../file_1%3a5.45-3_s390x.deb ... 648s Unpacking file (1:5.45-3) over (1:5.45-2) ... 648s (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 ... 52215 files and directories currently installed.) 648s Removing libmagic1:s390x (1:5.45-2) ... 649s (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 ... 52205 files and directories currently installed.) 649s Preparing to unpack .../libmagic-mgc_1%3a5.45-3_s390x.deb ... 649s Unpacking libmagic-mgc (1:5.45-3) over (1:5.45-2) ... 649s Selecting previously unselected package libmagic1t64:s390x. 649s Preparing to unpack .../libmagic1t64_1%3a5.45-3_s390x.deb ... 649s Unpacking libmagic1t64:s390x (1:5.45-3) ... 649s Preparing to unpack .../libplymouth5_24.004.60-1ubuntu6_s390x.deb ... 649s Unpacking libplymouth5:s390x (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 649s (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 ... 52216 files and directories currently installed.) 649s Removing libpng16-16:s390x (1.6.43-1) ... 649s Selecting previously unselected package libpng16-16t64:s390x. 649s (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 ... 52206 files and directories currently installed.) 649s Preparing to unpack .../libpng16-16t64_1.6.43-3_s390x.deb ... 649s Unpacking libpng16-16t64:s390x (1.6.43-3) ... 649s Preparing to unpack .../multipath-tools_0.9.4-5ubuntu6_s390x.deb ... 649s Unpacking multipath-tools (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 649s dpkg: liburcu8:s390x: dependency problems, but removing anyway as you requested: 649s xfsprogs depends on liburcu8 (>= 0.13.0). 649s 649s (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 ... 52216 files and directories currently installed.) 649s Removing liburcu8:s390x (0.14.0-3) ... 649s Selecting previously unselected package liburcu8t64:s390x. 649s (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 ... 52197 files and directories currently installed.) 649s Preparing to unpack .../liburcu8t64_0.14.0-3.1_s390x.deb ... 649s Unpacking liburcu8t64:s390x (0.14.0-3.1) ... 649s Preparing to unpack .../liblocale-gettext-perl_1.07-6ubuntu4_s390x.deb ... 649s Unpacking liblocale-gettext-perl (1.07-6ubuntu4) over (1.07-6build1) ... 649s Preparing to unpack .../uuid-runtime_2.39.3-9ubuntu2_s390x.deb ... 649s Unpacking uuid-runtime (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 649s Preparing to unpack .../libdebconfclient0_0.271ubuntu2_s390x.deb ... 649s Unpacking libdebconfclient0:s390x (0.271ubuntu2) over (0.271ubuntu1) ... 649s Setting up libdebconfclient0:s390x (0.271ubuntu2) ... 649s (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 ... 52217 files and directories currently installed.) 649s Preparing to unpack .../libsemanage-common_3.5-1build4_all.deb ... 649s Unpacking libsemanage-common (3.5-1build4) over (3.5-1build2) ... 649s Setting up libsemanage-common (3.5-1build4) ... 649s (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 ... 52217 files and directories currently installed.) 649s Preparing to unpack .../libsemanage2_3.5-1build4_s390x.deb ... 649s Unpacking libsemanage2:s390x (3.5-1build4) over (3.5-1build2) ... 649s Setting up libsemanage2:s390x (3.5-1build4) ... 649s (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 ... 52217 files and directories currently installed.) 649s Preparing to unpack .../install-info_7.1-3build1_s390x.deb ... 649s Unpacking install-info (7.1-3build1) over (7.1-3) ... 649s Setting up install-info (7.1-3build1) ... 649s (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 ... 52217 files and directories currently installed.) 649s Preparing to unpack .../00-libss2_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 649s Unpacking libss2:s390x (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 649s Preparing to unpack .../01-eject_2.39.3-9ubuntu2_s390x.deb ... 649s Unpacking eject (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 649s Preparing to unpack .../02-krb5-locales_1.20.1-6ubuntu1_all.deb ... 649s Unpacking krb5-locales (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 649s Preparing to unpack .../03-libglib2.0-data_2.79.3-3ubuntu5_all.deb ... 649s Unpacking libglib2.0-data (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 649s Preparing to unpack .../04-libslang2_2.3.3-3build1_s390x.deb ... 649s Unpacking libslang2:s390x (2.3.3-3build1) over (2.3.3-3) ... 649s Preparing to unpack .../05-libtext-charwidth-perl_0.04-11build2_s390x.deb ... 649s Unpacking libtext-charwidth-perl:s390x (0.04-11build2) over (0.04-11build1) ... 649s Preparing to unpack .../06-libtext-iconv-perl_1.7-8build2_s390x.deb ... 649s Unpacking libtext-iconv-perl:s390x (1.7-8build2) over (1.7-8build1) ... 649s Preparing to unpack .../07-python-apt-common_2.7.7_all.deb ... 649s Unpacking python-apt-common (2.7.7) over (2.7.6) ... 649s Preparing to unpack .../08-python3-setuptools_68.1.2-2ubuntu1_all.deb ... 649s Unpacking python3-setuptools (68.1.2-2ubuntu1) over (68.1.2-2) ... 649s Preparing to unpack .../09-python3-pkg-resources_68.1.2-2ubuntu1_all.deb ... 650s Unpacking python3-pkg-resources (68.1.2-2ubuntu1) over (68.1.2-2) ... 650s Preparing to unpack .../10-rsyslog_8.2312.0-3ubuntu7_s390x.deb ... 650s Unpacking rsyslog (8.2312.0-3ubuntu7) over (8.2312.0-3ubuntu3) ... 650s Preparing to unpack .../11-vim-tiny_2%3a9.1.0016-1ubuntu6_s390x.deb ... 650s Unpacking vim-tiny (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 650s Preparing to unpack .../12-vim-common_2%3a9.1.0016-1ubuntu6_all.deb ... 650s Unpacking vim-common (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 650s Selecting previously unselected package xdg-user-dirs. 650s Preparing to unpack .../13-xdg-user-dirs_0.18-1_s390x.deb ... 650s Unpacking xdg-user-dirs (0.18-1) ... 650s Preparing to unpack .../14-xxd_2%3a9.1.0016-1ubuntu6_s390x.deb ... 650s Unpacking xxd (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 650s Preparing to unpack .../15-apparmor_4.0.0-beta3-0ubuntu2_s390x.deb ... 650s Unpacking apparmor (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 650s Preparing to unpack .../16-ftp_20230507-2build1_all.deb ... 650s Unpacking ftp (20230507-2build1) over (20230507-2) ... 650s Preparing to unpack .../17-inetutils-telnet_2%3a2.5-3ubuntu3_s390x.deb ... 650s Unpacking inetutils-telnet (2:2.5-3ubuntu3) over (2:2.5-3ubuntu1) ... 650s Preparing to unpack .../18-info_7.1-3build1_s390x.deb ... 650s Unpacking info (7.1-3build1) over (7.1-3) ... 650s Preparing to unpack .../19-libxmuu1_2%3a1.1.3-3build1_s390x.deb ... 650s Unpacking libxmuu1:s390x (2:1.1.3-3build1) over (2:1.1.3-3) ... 650s Preparing to unpack .../20-lshw_02.19.git.2021.06.19.996aaad9c7-2build2_s390x.deb ... 650s Unpacking lshw (02.19.git.2021.06.19.996aaad9c7-2build2) over (02.19.git.2021.06.19.996aaad9c7-2build1) ... 650s Selecting previously unselected package manpages. 650s Preparing to unpack .../21-manpages_6.05.01-1_all.deb ... 650s Unpacking manpages (6.05.01-1) ... 650s Preparing to unpack .../22-mtr-tiny_0.95-1.1build1_s390x.deb ... 650s Unpacking mtr-tiny (0.95-1.1build1) over (0.95-1.1) ... 650s Preparing to unpack .../23-plymouth-theme-ubuntu-text_24.004.60-1ubuntu6_s390x.deb ... 650s Unpacking plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 650s Preparing to unpack .../24-plymouth_24.004.60-1ubuntu6_s390x.deb ... 651s Unpacking plymouth (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 651s Preparing to unpack .../25-telnet_0.17+2.5-3ubuntu3_all.deb ... 651s Unpacking telnet (0.17+2.5-3ubuntu3) over (0.17+2.5-3ubuntu1) ... 651s Preparing to unpack .../26-usb.ids_2024.03.18-1_all.deb ... 651s Unpacking usb.ids (2024.03.18-1) over (2024.01.30-1) ... 651s Preparing to unpack .../27-xz-utils_5.6.0-0.2_s390x.deb ... 651s Unpacking xz-utils (5.6.0-0.2) over (5.4.5-0.3) ... 651s Selecting previously unselected package libllvm18:s390x. 651s Preparing to unpack .../28-libllvm18_1%3a18.1.2-1ubuntu2_s390x.deb ... 651s Unpacking libllvm18:s390x (1:18.1.2-1ubuntu2) ... 652s Selecting previously unselected package libclang-cpp18. 652s Preparing to unpack .../29-libclang-cpp18_1%3a18.1.2-1ubuntu2_s390x.deb ... 652s Unpacking libclang-cpp18 (1:18.1.2-1ubuntu2) ... 652s Selecting previously unselected package libbpfcc:s390x. 652s Preparing to unpack .../30-libbpfcc_0.29.1+ds-1ubuntu4_s390x.deb ... 652s Unpacking libbpfcc:s390x (0.29.1+ds-1ubuntu4) ... 652s Selecting previously unselected package python3-bpfcc. 652s Preparing to unpack .../31-python3-bpfcc_0.29.1+ds-1ubuntu4_all.deb ... 652s Unpacking python3-bpfcc (0.29.1+ds-1ubuntu4) ... 652s Selecting previously unselected package ieee-data. 652s Preparing to unpack .../32-ieee-data_20220827.1_all.deb ... 652s Unpacking ieee-data (20220827.1) ... 652s Selecting previously unselected package python3-netaddr. 652s Preparing to unpack .../33-python3-netaddr_0.8.0-2ubuntu1_all.deb ... 652s Unpacking python3-netaddr (0.8.0-2ubuntu1) ... 652s Selecting previously unselected package bpfcc-tools. 652s Preparing to unpack .../34-bpfcc-tools_0.29.1+ds-1ubuntu4_all.deb ... 652s Unpacking bpfcc-tools (0.29.1+ds-1ubuntu4) ... 652s Selecting previously unselected package libclang1-18. 652s Preparing to unpack .../35-libclang1-18_1%3a18.1.2-1ubuntu2_s390x.deb ... 652s Unpacking libclang1-18 (1:18.1.2-1ubuntu2) ... 653s Selecting previously unselected package libdw1t64:s390x. 653s Preparing to unpack .../36-libdw1t64_0.190-1.1build2_s390x.deb ... 653s Unpacking libdw1t64:s390x (0.190-1.1build2) ... 653s Selecting previously unselected package bpftrace. 653s Preparing to unpack .../37-bpftrace_0.20.2-1ubuntu1_s390x.deb ... 653s Unpacking bpftrace (0.20.2-1ubuntu1) ... 653s Preparing to unpack .../38-cryptsetup-bin_2%3a2.7.0-1ubuntu2_s390x.deb ... 653s Unpacking cryptsetup-bin (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 653s Preparing to unpack .../39-dpkg-dev_1.22.6ubuntu5_all.deb ... 653s Unpacking dpkg-dev (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 653s Preparing to unpack .../40-libdpkg-perl_1.22.6ubuntu5_all.deb ... 653s Unpacking libdpkg-perl (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 653s Selecting previously unselected package fonts-dejavu-mono. 653s Preparing to unpack .../41-fonts-dejavu-mono_2.37-8_all.deb ... 653s Unpacking fonts-dejavu-mono (2.37-8) ... 653s Selecting previously unselected package fonts-dejavu-core. 653s Preparing to unpack .../42-fonts-dejavu-core_2.37-8_all.deb ... 653s Unpacking fonts-dejavu-core (2.37-8) ... 653s Selecting previously unselected package fontconfig-config. 653s Preparing to unpack .../43-fontconfig-config_2.15.0-1.1ubuntu1_s390x.deb ... 653s Unpacking fontconfig-config (2.15.0-1.1ubuntu1) ... 653s Preparing to unpack .../44-gnupg-l10n_2.4.4-2ubuntu15_all.deb ... 653s Unpacking gnupg-l10n (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 653s Selecting previously unselected package hwdata. 653s Preparing to unpack .../45-hwdata_0.379-1_all.deb ... 653s Unpacking hwdata (0.379-1) ... 653s Preparing to unpack .../46-libibverbs1_50.0-2build1_s390x.deb ... 653s Unpacking libibverbs1:s390x (50.0-2build1) over (50.0-2) ... 653s Preparing to unpack .../47-ibverbs-providers_50.0-2build1_s390x.deb ... 653s Unpacking ibverbs-providers:s390x (50.0-2build1) over (50.0-2) ... 653s Selecting previously unselected package libaio1t64:s390x. 653s Preparing to unpack .../48-libaio1t64_0.3.113-6_s390x.deb ... 653s Unpacking libaio1t64:s390x (0.3.113-6) ... 653s Selecting previously unselected package libatm1t64:s390x. 653s Preparing to unpack .../49-libatm1t64_1%3a2.5.1-5.1_s390x.deb ... 653s Unpacking libatm1t64:s390x (1:2.5.1-5.1) ... 653s Selecting previously unselected package libc-dev-bin. 653s Preparing to unpack .../50-libc-dev-bin_2.39-0ubuntu6_s390x.deb ... 653s Unpacking libc-dev-bin (2.39-0ubuntu6) ... 653s Selecting previously unselected package libfreetype6:s390x. 653s Preparing to unpack .../51-libfreetype6_2.13.2+dfsg-1build2_s390x.deb ... 653s Unpacking libfreetype6:s390x (2.13.2+dfsg-1build2) ... 653s Selecting previously unselected package libfontconfig1:s390x. 653s Preparing to unpack .../52-libfontconfig1_2.15.0-1.1ubuntu1_s390x.deb ... 653s Unpacking libfontconfig1:s390x (2.15.0-1.1ubuntu1) ... 653s Selecting previously unselected package libjpeg-turbo8:s390x. 653s Preparing to unpack .../53-libjpeg-turbo8_2.1.5-2ubuntu1_s390x.deb ... 653s Unpacking libjpeg-turbo8:s390x (2.1.5-2ubuntu1) ... 653s Selecting previously unselected package libjpeg8:s390x. 653s Preparing to unpack .../54-libjpeg8_8c-2ubuntu11_s390x.deb ... 653s Unpacking libjpeg8:s390x (8c-2ubuntu11) ... 653s Selecting previously unselected package libdeflate0:s390x. 653s Preparing to unpack .../55-libdeflate0_1.19-1_s390x.deb ... 653s Unpacking libdeflate0:s390x (1.19-1) ... 653s Selecting previously unselected package libjbig0:s390x. 653s Preparing to unpack .../56-libjbig0_2.1-6.1ubuntu1_s390x.deb ... 653s Unpacking libjbig0:s390x (2.1-6.1ubuntu1) ... 653s Selecting previously unselected package libsharpyuv0:s390x. 653s Preparing to unpack .../57-libsharpyuv0_1.3.2-0.4build2_s390x.deb ... 653s Unpacking libsharpyuv0:s390x (1.3.2-0.4build2) ... 653s Selecting previously unselected package libwebp7:s390x. 654s Preparing to unpack .../58-libwebp7_1.3.2-0.4build2_s390x.deb ... 654s Unpacking libwebp7:s390x (1.3.2-0.4build2) ... 654s Selecting previously unselected package libtiff6:s390x. 654s Preparing to unpack .../59-libtiff6_4.5.1+git230720-4ubuntu1_s390x.deb ... 654s Unpacking libtiff6:s390x (4.5.1+git230720-4ubuntu1) ... 654s Selecting previously unselected package libxpm4:s390x. 654s Preparing to unpack .../60-libxpm4_1%3a3.5.17-1build1_s390x.deb ... 654s Unpacking libxpm4:s390x (1:3.5.17-1build1) ... 654s Selecting previously unselected package libgd3:s390x. 654s Preparing to unpack .../61-libgd3_2.3.3-9ubuntu3_s390x.deb ... 654s Unpacking libgd3:s390x (2.3.3-9ubuntu3) ... 654s Selecting previously unselected package libc-devtools. 654s Preparing to unpack .../62-libc-devtools_2.39-0ubuntu6_s390x.deb ... 654s Unpacking libc-devtools (2.39-0ubuntu6) ... 654s Selecting previously unselected package linux-libc-dev:s390x. 654s Preparing to unpack .../63-linux-libc-dev_6.8.0-20.20_s390x.deb ... 654s Unpacking linux-libc-dev:s390x (6.8.0-20.20) ... 654s Selecting previously unselected package libcrypt-dev:s390x. 654s Preparing to unpack .../64-libcrypt-dev_1%3a4.4.36-4_s390x.deb ... 654s Unpacking libcrypt-dev:s390x (1:4.4.36-4) ... 654s Selecting previously unselected package rpcsvc-proto. 654s Preparing to unpack .../65-rpcsvc-proto_1.4.2-0ubuntu6_s390x.deb ... 654s Unpacking rpcsvc-proto (1.4.2-0ubuntu6) ... 654s Selecting previously unselected package libc6-dev:s390x. 654s Preparing to unpack .../66-libc6-dev_2.39-0ubuntu6_s390x.deb ... 654s Unpacking libc6-dev:s390x (2.39-0ubuntu6) ... 654s Preparing to unpack .../67-libevent-core-2.1-7_2.1.12-stable-9build1_s390x.deb ... 654s Unpacking libevent-core-2.1-7:s390x (2.1.12-stable-9build1) over (2.1.12-stable-9) ... 654s Preparing to unpack .../68-libldap-common_2.6.7+dfsg-1~exp1ubuntu6_all.deb ... 654s Unpacking libldap-common (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 654s Selecting previously unselected package linux-modules-6.8.0-20-generic. 654s Preparing to unpack .../69-linux-modules-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 654s Unpacking linux-modules-6.8.0-20-generic (6.8.0-20.20) ... 654s Selecting previously unselected package linux-image-6.8.0-20-generic. 654s Preparing to unpack .../70-linux-image-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 654s Unpacking linux-image-6.8.0-20-generic (6.8.0-20.20) ... 654s Selecting previously unselected package linux-modules-extra-6.8.0-20-generic. 654s Preparing to unpack .../71-linux-modules-extra-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 654s Unpacking linux-modules-extra-6.8.0-20-generic (6.8.0-20.20) ... 654s Preparing to unpack .../72-linux-generic_6.8.0-20.20+1_s390x.deb ... 654s Unpacking linux-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 654s Preparing to unpack .../73-linux-image-generic_6.8.0-20.20+1_s390x.deb ... 654s Unpacking linux-image-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 654s Preparing to unpack .../74-linux-virtual_6.8.0-20.20+1_s390x.deb ... 654s Unpacking linux-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 654s Preparing to unpack .../75-linux-image-virtual_6.8.0-20.20+1_s390x.deb ... 654s Unpacking linux-image-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 654s Preparing to unpack .../76-linux-headers-virtual_6.8.0-20.20+1_s390x.deb ... 654s Unpacking linux-headers-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 654s Selecting previously unselected package linux-headers-6.8.0-20. 654s Preparing to unpack .../77-linux-headers-6.8.0-20_6.8.0-20.20_all.deb ... 654s Unpacking linux-headers-6.8.0-20 (6.8.0-20.20) ... 657s Selecting previously unselected package linux-headers-6.8.0-20-generic. 657s Preparing to unpack .../78-linux-headers-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 657s Unpacking linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 657s Preparing to unpack .../79-linux-headers-generic_6.8.0-20.20+1_s390x.deb ... 657s Unpacking linux-headers-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 657s Selecting previously unselected package linux-tools-common. 657s Preparing to unpack .../80-linux-tools-common_6.8.0-20.20_all.deb ... 657s Unpacking linux-tools-common (6.8.0-20.20) ... 657s Selecting previously unselected package linux-tools-6.8.0-20. 657s Preparing to unpack .../81-linux-tools-6.8.0-20_6.8.0-20.20_s390x.deb ... 657s Unpacking linux-tools-6.8.0-20 (6.8.0-20.20) ... 657s Selecting previously unselected package linux-tools-6.8.0-20-generic. 657s Preparing to unpack .../82-linux-tools-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 657s Unpacking linux-tools-6.8.0-20-generic (6.8.0-20.20) ... 657s Selecting previously unselected package manpages-dev. 657s Preparing to unpack .../83-manpages-dev_6.05.01-1_all.deb ... 657s Unpacking manpages-dev (6.05.01-1) ... 657s Preparing to unpack .../84-python3-distutils_3.12.2-3ubuntu1.1_all.deb ... 658s Unpacking python3-distutils (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 658s Preparing to unpack .../85-python3-lib2to3_3.12.2-3ubuntu1.1_all.deb ... 658s Unpacking python3-lib2to3 (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 658s Preparing to unpack .../86-python3-pyrsistent_0.20.0-1build1_s390x.deb ... 658s Unpacking python3-pyrsistent:s390x (0.20.0-1build1) over (0.20.0-1) ... 658s Preparing to unpack .../87-python3-typing-extensions_4.10.0-1_all.deb ... 658s Unpacking python3-typing-extensions (4.10.0-1) over (4.9.0-1) ... 658s Preparing to unpack .../88-s390-tools-data_2.31.0-0ubuntu3_all.deb ... 658s Unpacking s390-tools-data (2.31.0-0ubuntu3) over (2.31.0-0ubuntu1) ... 658s Selecting previously unselected package ubuntu-kernel-accessories. 658s Preparing to unpack .../89-ubuntu-kernel-accessories_1.536build1_s390x.deb ... 658s Unpacking ubuntu-kernel-accessories (1.536build1) ... 658s Preparing to unpack .../90-kpartx_0.9.4-5ubuntu6_s390x.deb ... 658s Unpacking kpartx (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 658s Setting up cryptsetup-bin (2:2.7.0-1ubuntu2) ... 658s Setting up pinentry-curses (1.2.1-3ubuntu4) ... 658s Setting up motd-news-config (13ubuntu8) ... 658s Setting up libtext-iconv-perl:s390x (1.7-8build2) ... 658s Setting up libtext-charwidth-perl:s390x (0.04-11build2) ... 658s Setting up libsharpyuv0:s390x (1.3.2-0.4build2) ... 658s Setting up liburcu8t64:s390x (0.14.0-3.1) ... 658s Setting up tcpdump (4.99.4-3ubuntu2) ... 658s Setting up libibverbs1:s390x (50.0-2build1) ... 658s Setting up systemd-sysv (255.4-1ubuntu5) ... 658s Setting up ubuntu-kernel-accessories (1.536build1) ... 658s Setting up libapparmor1:s390x (4.0.0-beta3-0ubuntu2) ... 658s Setting up libatm1t64:s390x (1:2.5.1-5.1) ... 658s Setting up libgdbm6t64:s390x (1.23-5.1) ... 658s Setting up bsdextrautils (2.39.3-9ubuntu2) ... 658s Setting up libxpm4:s390x (1:3.5.17-1build1) ... 658s Setting up libgdbm-compat4t64:s390x (1.23-5.1) ... 658s Setting up xdg-user-dirs (0.18-1) ... 658s Setting up ibverbs-providers:s390x (50.0-2build1) ... 658s Setting up linux-headers-6.8.0-20 (6.8.0-20.20) ... 658s Setting up libmagic-mgc (1:5.45-3) ... 658s Setting up gawk (1:5.2.1-2build2) ... 658s Setting up manpages (6.05.01-1) ... 658s Setting up libtirpc-common (1.3.4+ds-1.1) ... 658s Setting up libbrotli1:s390x (1.1.0-2build1) ... 658s Setting up libsqlite3-0:s390x (3.45.1-1ubuntu1) ... 658s Setting up libsasl2-modules:s390x (2.1.28+dfsg1-5ubuntu1) ... 658s Setting up libuv1t64:s390x (1.48.0-1.1) ... 658s Setting up libmagic1t64:s390x (1:5.45-3) ... 658s Setting up rsyslog (8.2312.0-3ubuntu7) ... 658s info: The user `syslog' is already a member of `adm'. 659s Setting up libpsl5t64:s390x (0.21.2-1.1) ... 659s Setting up libnghttp2-14:s390x (1.59.0-1build1) ... 659s Setting up libdeflate0:s390x (1.19-1) ... 659s Setting up linux-libc-dev:s390x (6.8.0-20.20) ... 659s Setting up libreiserfscore0t64 (1:3.6.27-7.1) ... 659s Setting up libnss-systemd:s390x (255.4-1ubuntu5) ... 659s Setting up libparted2t64:s390x (3.6-3.1build2) ... 659s Setting up krb5-locales (1.20.1-6ubuntu1) ... 659s Setting up file (1:5.45-3) ... 659s Setting up kmod (31+20240202-2ubuntu4) ... 659s Setting up lshw (02.19.git.2021.06.19.996aaad9c7-2build2) ... 659s Setting up libldap-common (2.6.7+dfsg-1~exp1ubuntu6) ... 659s Setting up libprotobuf-c1:s390x (1.4.1-1ubuntu3) ... 659s Setting up libjbig0:s390x (2.1-6.1ubuntu1) ... 659s Setting up xxd (2:9.1.0016-1ubuntu6) ... 659s Setting up libelf1t64:s390x (0.190-1.1build2) ... 659s Setting up libkrb5support0:s390x (1.20.1-6ubuntu1) ... 659s Setting up libdw1t64:s390x (0.190-1.1build2) ... 659s Setting up linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 659s Setting up eject (2.39.3-9ubuntu2) ... 659s Setting up apparmor (4.0.0-beta3-0ubuntu2) ... 659s Installing new version of config file /etc/apparmor.d/abstractions/authentication ... 659s Installing new version of config file /etc/apparmor.d/abstractions/crypto ... 659s Installing new version of config file /etc/apparmor.d/abstractions/kde-open5 ... 659s Installing new version of config file /etc/apparmor.d/abstractions/openssl ... 659s Installing new version of config file /etc/apparmor.d/code ... 659s Installing new version of config file /etc/apparmor.d/firefox ... 660s Reloading AppArmor profiles 661s Setting up libglib2.0-0t64:s390x (2.79.3-3ubuntu5) ... 661s No schema files found: doing nothing. 661s Setting up libglib2.0-data (2.79.3-3ubuntu5) ... 661s Setting up rpcsvc-proto (1.4.2-0ubuntu6) ... 661s Setting up vim-common (2:9.1.0016-1ubuntu6) ... 661s Setting up libqrtr-glib0:s390x (1.2.2-1ubuntu3) ... 661s Setting up libslang2:s390x (2.3.3-3build1) ... 661s Setting up libnvme1t64 (1.8-3) ... 661s Setting up mtr-tiny (0.95-1.1build1) ... 661s Setting up gnupg-l10n (2.4.4-2ubuntu15) ... 661s Setting up librtmp1:s390x (2.4+20151223.gitfa8646d.1-2build6) ... 661s Setting up libdbus-1-3:s390x (1.14.10-4ubuntu2) ... 661s Setting up xz-utils (5.6.0-0.2) ... 661s Setting up perl-modules-5.38 (5.38.2-3.2) ... 661s Setting up libproc2-0:s390x (2:4.0.4-4ubuntu2) ... 661s Setting up libblockdev-utils3:s390x (3.1.0-1build1) ... 661s Setting up fonts-dejavu-mono (2.37-8) ... 661s Setting up libpng16-16t64:s390x (1.6.43-3) ... 661s Setting up systemd-timesyncd (255.4-1ubuntu5) ... 661s Setting up libevent-core-2.1-7:s390x (2.1.12-stable-9build1) ... 661s Setting up udev (255.4-1ubuntu5) ... 662s Setting up libss2:s390x (1.47.0-2.4~exp1ubuntu2) ... 662s Setting up usb.ids (2024.03.18-1) ... 662s Setting up sudo (1.9.15p5-3ubuntu3) ... 662s Setting up fonts-dejavu-core (2.37-8) ... 662s Setting up dhcpcd-base (1:10.0.6-1ubuntu2) ... 662s Setting up gir1.2-glib-2.0:s390x (2.79.3-3ubuntu5) ... 662s Setting up libk5crypto3:s390x (1.20.1-6ubuntu1) ... 662s Setting up libjpeg-turbo8:s390x (2.1.5-2ubuntu1) ... 662s Setting up logsave (1.47.0-2.4~exp1ubuntu2) ... 662s Setting up libwebp7:s390x (1.3.2-0.4build2) ... 662s Setting up libfdisk1:s390x (2.39.3-9ubuntu2) ... 662s Setting up libdb5.3t64:s390x (5.3.28+dfsg2-6) ... 662s Setting up libblockdev-nvme3:s390x (3.1.0-1build1) ... 662s Setting up libblockdev-fs3:s390x (3.1.0-1build1) ... 662s Setting up libaio1t64:s390x (0.3.113-6) ... 662s Setting up python-apt-common (2.7.7) ... 662s Setting up mount (2.39.3-9ubuntu2) ... 662s Setting up uuid-runtime (2.39.3-9ubuntu2) ... 663s uuidd.service is a disabled or a static unit not running, not starting it. 663s Setting up libmm-glib0:s390x (1.23.4-0ubuntu1) ... 663s Setting up groff-base (1.23.0-3build1) ... 663s Setting up libcrypt-dev:s390x (1:4.4.36-4) ... 663s Setting up libplymouth5:s390x (24.004.60-1ubuntu6) ... 663s Setting up dbus-session-bus-common (1.14.10-4ubuntu2) ... 663s Setting up kpartx (0.9.4-5ubuntu6) ... 663s Setting up procps (2:4.0.4-4ubuntu2) ... 663s Setting up gpgconf (2.4.4-2ubuntu15) ... 663s Setting up libgirepository-1.0-1:s390x (1.79.1-1ubuntu6) ... 663s Setting up libjson-glib-1.0-common (1.8.0-2build1) ... 663s Setting up libkrb5-3:s390x (1.20.1-6ubuntu1) ... 663s Setting up libpython3.11-minimal:s390x (3.11.8-1build4) ... 663s Setting up libperl5.38t64:s390x (5.38.2-3.2) ... 663s Setting up tnftp (20230507-2build1) ... 663s Setting up dbus-system-bus-common (1.14.10-4ubuntu2) ... 663s Setting up libfido2-1:s390x (1.14.0-1build1) ... 663s Setting up libc-dev-bin (2.39-0ubuntu6) ... 663s Setting up openssl (3.0.13-0ubuntu2) ... 663s Setting up linux-modules-6.8.0-20-generic (6.8.0-20.20) ... 664s Setting up readline-common (8.2-4) ... 664s Setting up libxml2:s390x (2.9.14+dfsg-1.3ubuntu2) ... 664s Setting up libxmuu1:s390x (2:1.1.3-3build1) ... 664s Setting up dbus-bin (1.14.10-4ubuntu2) ... 664s Setting up info (7.1-3build1) ... 664s Setting up liblocale-gettext-perl (1.07-6ubuntu4) ... 664s Setting up gpg (2.4.4-2ubuntu15) ... 664s Setting up libgudev-1.0-0:s390x (1:238-3ubuntu2) ... 664s Setting up libpolkit-gobject-1-0:s390x (124-1ubuntu1) ... 664s Setting up libbpf1:s390x (1:1.3.0-2build1) ... 664s Setting up libmbim-glib4:s390x (1.31.2-0ubuntu2) ... 664s Setting up rsync (3.2.7-1build1) ... 665s rsync.service is a disabled or a static unit not running, not starting it. 665s Setting up libudisks2-0:s390x (2.10.1-6) ... 665s Setting up bolt (0.9.6-2build1) ... 665s bolt.service is a disabled or a static unit not running, not starting it. 665s Setting up s390-tools-data (2.31.0-0ubuntu3) ... 665s Setting up libllvm18:s390x (1:18.1.2-1ubuntu2) ... 665s Setting up gnupg-utils (2.4.4-2ubuntu15) ... 665s Setting up libjpeg8:s390x (8c-2ubuntu11) ... 665s Setting up python3.11-minimal (3.11.8-1build4) ... 666s Setting up libclang1-18 (1:18.1.2-1ubuntu2) ... 666s Setting up manpages-dev (6.05.01-1) ... 666s Setting up linux-modules-extra-6.8.0-20-generic (6.8.0-20.20) ... 666s Setting up apt-utils (2.7.14) ... 666s Setting up gpg-agent (2.4.4-2ubuntu15) ... 667s Setting up libpython3.12-stdlib:s390x (3.12.2-4build3) ... 667s Setting up libblockdev-mdraid3:s390x (3.1.0-1build1) ... 667s Setting up wget (1.21.4-1ubuntu2) ... 667s Setting up linux-image-6.8.0-20-generic (6.8.0-20.20) ... 667s I: /boot/vmlinuz is now a symlink to vmlinuz-6.8.0-20-generic 667s I: /boot/initrd.img is now a symlink to initrd.img-6.8.0-20-generic 667s Setting up libblockdev-swap3:s390x (3.1.0-1build1) ... 667s Setting up plymouth (24.004.60-1ubuntu6) ... 667s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 667s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 671s Not invoking zipl: initrd doesn't exist yet 671s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 671s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 671s Setting up fontconfig-config (2.15.0-1.1ubuntu1) ... 671s Setting up libxmlb2:s390x (0.3.15-1build1) ... 671s Setting up btrfs-progs (6.6.3-1.1build1) ... 671s Setting up libpython3.11-stdlib:s390x (3.11.8-1build4) ... 671s Setting up python3.12 (3.12.2-4build3) ... 672s Setting up libblockdev-loop3:s390x (3.1.0-1build1) ... 672s Setting up gpgsm (2.4.4-2ubuntu15) ... 672s Setting up inetutils-telnet (2:2.5-3ubuntu3) ... 672s Setting up parted (3.6-3.1build2) ... 672s Setting up e2fsprogs (1.47.0-2.4~exp1ubuntu2) ... 672s update-initramfs: deferring update (trigger activated) 673s e2scrub_all.service is a disabled or a static unit not running, not starting it. 673s Setting up linux-headers-generic (6.8.0-20.20+1) ... 673s Setting up dbus-daemon (1.14.10-4ubuntu2) ... 673s Setting up libmbim-proxy (1.31.2-0ubuntu2) ... 673s Setting up vim-tiny (2:9.1.0016-1ubuntu6) ... 673s Setting up libnetplan1:s390x (1.0-1) ... 673s Setting up man-db (2.12.0-3build4) ... 673s Updating database of manual pages ... 675s man-db.service is a disabled or a static unit not running, not starting it. 675s Setting up libblockdev3:s390x (3.1.0-1build1) ... 675s Setting up fdisk (2.39.3-9ubuntu2) ... 675s Setting up multipath-tools (0.9.4-5ubuntu6) ... 676s Setting up libjson-glib-1.0-0:s390x (1.8.0-2build1) ... 676s Setting up libblockdev-part3:s390x (3.1.0-1build1) ... 676s Setting up libsasl2-modules-db:s390x (2.1.28+dfsg1-5ubuntu1) ... 676s Setting up hwdata (0.379-1) ... 676s Setting up perl (5.38.2-3.2) ... 676s Setting up plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) ... 676s update-initramfs: deferring update (trigger activated) 676s Setting up libfreetype6:s390x (2.13.2+dfsg-1build2) ... 676s Setting up gir1.2-girepository-2.0:s390x (1.79.1-1ubuntu6) ... 676s Setting up dbus (1.14.10-4ubuntu2) ... 676s A reboot is required to replace the running dbus-daemon. 676s Please reboot the system when convenient. 676s Setting up shared-mime-info (2.4-1build1) ... 676s Setting up libgssapi-krb5-2:s390x (1.20.1-6ubuntu1) ... 676s Setting up ftp (20230507-2build1) ... 676s Setting up keyboxd (2.4.4-2ubuntu15) ... 676s Setting up libdpkg-perl (1.22.6ubuntu5) ... 676s Setting up libsasl2-2:s390x (2.1.28+dfsg1-5ubuntu1) ... 676s Setting up libssh-4:s390x (0.10.6-2build1) ... 676s Setting up ieee-data (20220827.1) ... 676s Setting up libtiff6:s390x (4.5.1+git230720-4ubuntu1) ... 676s Setting up libpam-systemd:s390x (255.4-1ubuntu5) ... 677s Setting up libpolkit-agent-1-0:s390x (124-1ubuntu1) ... 677s Setting up libc6-dev:s390x (2.39-0ubuntu6) ... 677s Setting up libgpgme11t64:s390x (1.18.0-4.1ubuntu3) ... 677s Setting up libfontconfig1:s390x (2.15.0-1.1ubuntu1) ... 677s Setting up linux-image-virtual (6.8.0-20.20+1) ... 677s Setting up netplan-generator (1.0-1) ... 677s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 677s Setting up libclang-cpp18 (1:18.1.2-1ubuntu2) ... 677s Setting up libbpfcc:s390x (0.29.1+ds-1ubuntu4) ... 677s Setting up linux-tools-common (6.8.0-20.20) ... 677s Setting up libarchive13t64:s390x (3.7.2-1.1ubuntu2) ... 677s Setting up libldap2:s390x (2.6.7+dfsg-1~exp1ubuntu6) ... 677s Setting up libpython3-stdlib:s390x (3.12.2-0ubuntu1) ... 677s Setting up systemd-resolved (255.4-1ubuntu5) ... 677s Setting up python3.11 (3.11.8-1build4) ... 678s Setting up linux-image-generic (6.8.0-20.20+1) ... 678s Setting up telnet (0.17+2.5-3ubuntu3) ... 678s Setting up linux-headers-virtual (6.8.0-20.20+1) ... 678s Setting up linux-generic (6.8.0-20.20+1) ... 678s Setting up libcurl4t64:s390x (8.5.0-2ubuntu8) ... 678s Setting up bpftrace (0.20.2-1ubuntu1) ... 678s Setting up bind9-libs:s390x (1:9.18.24-0ubuntu3) ... 678s Setting up libtirpc3t64:s390x (1.3.4+ds-1.1) ... 678s Setting up e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) ... 678s Setting up iproute2 (6.1.0-1ubuntu5) ... 678s Setting up openssh-client (1:9.6p1-3ubuntu11) ... 678s Setting up libgusb2:s390x (0.4.8-1build1) ... 678s Setting up libcurl3t64-gnutls:s390x (8.5.0-2ubuntu8) ... 678s Setting up libqmi-glib5:s390x (1.35.2-0ubuntu1) ... 678s Setting up linux-tools-6.8.0-20 (6.8.0-20.20) ... 678s Setting up python3 (3.12.2-0ubuntu1) ... 679s Setting up libjcat1:s390x (0.2.0-2build2) ... 679s Setting up dpkg-dev (1.22.6ubuntu5) ... 679s Setting up linux-virtual (6.8.0-20.20+1) ... 679s Setting up dirmngr (2.4.4-2ubuntu15) ... 679s Setting up dbus-user-session (1.14.10-4ubuntu2) ... 679s Setting up linux-tools-6.8.0-20-generic (6.8.0-20.20) ... 679s Setting up python3-cryptography (41.0.7-4build2) ... 679s Setting up python3-gi (3.47.0-3build1) ... 679s Setting up libgd3:s390x (2.3.3-9ubuntu3) ... 679s Setting up python3-typing-extensions (4.10.0-1) ... 679s Setting up lsof (4.95.0-1build2) ... 679s Setting up python3-pyrsistent:s390x (0.20.0-1build1) ... 679s Setting up python3-netaddr (0.8.0-2ubuntu1) ... 680s Setting up libnsl2:s390x (1.3.0-3build2) ... 680s Setting up gnupg (2.4.4-2ubuntu15) ... 680s Setting up python3-netplan (1.0-1) ... 680s Setting up curl (8.5.0-2ubuntu8) ... 680s Setting up libvolume-key1:s390x (0.3.12-7build1) ... 680s Setting up bind9-host (1:9.18.24-0ubuntu3) ... 680s Setting up python3-lib2to3 (3.12.2-3ubuntu1.1) ... 680s Setting up python3-bpfcc (0.29.1+ds-1ubuntu4) ... 680s Setting up libc-devtools (2.39-0ubuntu6) ... 680s Setting up python3-pkg-resources (68.1.2-2ubuntu1) ... 680s Setting up python3-distutils (3.12.2-3ubuntu1.1) ... 681s python3.12: can't get files for byte-compilation 681s Setting up openssh-sftp-server (1:9.6p1-3ubuntu11) ... 681s Setting up python3-dbus (1.3.2-5build2) ... 681s Setting up python3-setuptools (68.1.2-2ubuntu1) ... 681s Setting up gpg-wks-client (2.4.4-2ubuntu15) ... 681s Setting up openssh-server (1:9.6p1-3ubuntu11) ... 681s Replacing config file /etc/ssh/sshd_config with new version 683s Created symlink /etc/systemd/system/ssh.service.requires/ssh.socket → /usr/lib/systemd/system/ssh.socket. 684s Setting up libblockdev-crypto3:s390x (3.1.0-1build1) ... 684s Setting up python3-gdbm:s390x (3.12.2-3ubuntu1.1) ... 684s Setting up python3-apt (2.7.7) ... 684s Setting up libfwupd2:s390x (1.9.15-2) ... 684s Setting up python3-yaml (6.0.1-2build1) ... 684s Setting up libqmi-proxy (1.35.2-0ubuntu1) ... 684s Setting up netplan.io (1.0-1) ... 684s Setting up bpfcc-tools (0.29.1+ds-1ubuntu4) ... 684s Setting up bind9-dnsutils (1:9.18.24-0ubuntu3) ... 684s Setting up ubuntu-pro-client (31.2.2) ... 686s Setting up fwupd (1.9.15-2) ... 686s fwupd-offline-update.service is a disabled or a static unit not running, not starting it. 686s fwupd-refresh.service is a disabled or a static unit not running, not starting it. 686s Setting up ubuntu-pro-client-l10n (31.2.2) ... 686s Setting up udisks2 (2.10.1-6) ... 687s Processing triggers for libc-bin (2.39-0ubuntu6) ... 687s Processing triggers for ufw (0.36.2-5) ... 687s Processing triggers for debianutils (5.17) ... 687s Processing triggers for install-info (7.1-3build1) ... 687s Processing triggers for initramfs-tools (0.142ubuntu23) ... 687s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 687s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 690s Not invoking zipl: initrd doesn't exist yet 690s Processing triggers for linux-image-6.8.0-20-generic (6.8.0-20.20) ... 690s /etc/kernel/postinst.d/initramfs-tools: 690s update-initramfs: Generating /boot/initrd.img-6.8.0-20-generic 690s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 694s Using config file '/etc/zipl.conf' 694s Building bootmap in '/boot' 694s Adding IPL section 'ubuntu' (default) 694s Preparing boot device for LD-IPL: vda (0000). 694s Done. 694s /etc/kernel/postinst.d/zz-zipl: 694s Using config file '/etc/zipl.conf' 694s Building bootmap in '/boot' 694s Adding IPL section 'ubuntu' (default) 694s Preparing boot device for LD-IPL: vda (0000). 694s Done. 695s Reading package lists... 696s Building dependency tree... 696s Reading state information... 696s The following packages will be REMOVED: 696s libaio1* libnetplan0* python3-distutils* python3-lib2to3* 696s 0 upgraded, 0 newly installed, 4 to remove and 1 not upgraded. 696s After this operation, 1445 kB disk space will be freed. 696s (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 ... 81786 files and directories currently installed.) 696s Removing libaio1:s390x (0.3.113-5) ... 696s Removing libnetplan0:s390x (0.107.1-3) ... 696s Removing python3-distutils (3.12.2-3ubuntu1.1) ... 696s Removing python3-lib2to3 (3.12.2-3ubuntu1.1) ... 696s Processing triggers for libc-bin (2.39-0ubuntu6) ... 697s autopkgtest [00:59:43]: rebooting testbed after setup commands that affected boot 737s Reading package lists... 738s Building dependency tree... 738s Reading state information... 738s Starting pkgProblemResolver with broken count: 0 738s Starting 2 pkgProblemResolver with broken count: 0 738s Done 738s The following additional packages will be installed: 738s build-essential cpp cpp-13 cpp-13-s390x-linux-gnu cpp-s390x-linux-gnu 738s dctrl-tools fontconfig fonts-glyphicons-halflings fonts-mathjax g++ g++-13 738s g++-13-s390x-linux-gnu g++-s390x-linux-gnu gcc gcc-13 gcc-13-s390x-linux-gnu 738s gcc-s390x-linux-gnu gfortran gfortran-13 gfortran-13-s390x-linux-gnu 738s gfortran-s390x-linux-gnu icu-devtools libasan8 libatomic1 libblas-dev 738s libblas3 libbz2-dev libcairo2 libcc1-0 libdatrie1 libgcc-13-dev 738s libgfortran-13-dev libgfortran5 libgomp1 libgraphite2-3 libharfbuzz0b 738s libice6 libicu-dev libisl23 libitm1 libjpeg-dev libjpeg-turbo8-dev 738s libjpeg8-dev libjs-bootstrap libjs-highlight.js libjs-jquery 738s libjs-jquery-datatables libjs-mathjax liblapack-dev liblapack3 liblzma-dev 738s libmpc3 libncurses-dev libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 738s libpaper-utils libpaper1 libpcre2-16-0 libpcre2-32-0 libpcre2-dev 738s libpcre2-posix3 libpixman-1-0 libpkgconf3 libpng-dev libreadline-dev libsm6 738s libstdc++-13-dev libtcl8.6 libthai-data libthai0 libtk8.6 libubsan1 738s libxcb-render0 libxcb-shm0 libxft2 libxrender1 libxss1 libxt6t64 738s node-normalize.css pkg-config pkg-r-autopkgtest pkgconf pkgconf-bin 738s r-base-core r-base-dev r-cran-base64enc r-cran-cli r-cran-colorspace 738s r-cran-commonmark r-cran-evaluate r-cran-fansi r-cran-farver r-cran-ggplot2 738s r-cran-glue r-cran-gtable r-cran-highr r-cran-isoband r-cran-knitr 738s r-cran-labeling r-cran-lattice r-cran-lifecycle r-cran-magrittr 738s r-cran-markdown r-cran-mass r-cran-matrix r-cran-matrixstats r-cran-mgcv 738s r-cran-munsell r-cran-nlme r-cran-pillar r-cran-pkgconfig r-cran-r6 738s r-cran-rcolorbrewer r-cran-rlang r-cran-scales r-cran-tibble r-cran-utf8 738s r-cran-vctrs r-cran-viridislite r-cran-withr r-cran-xfun r-cran-yaml unzip 738s x11-common xdg-utils zip zlib1g-dev 738s Suggested packages: 738s cpp-doc gcc-13-locales cpp-13-doc debtags g++-multilib g++-13-multilib 738s gcc-13-doc gcc-multilib autoconf automake libtool flex bison gdb gcc-doc 738s gcc-13-multilib gdb-s390x-linux-gnu gfortran-multilib gfortran-doc 738s gfortran-13-multilib gfortran-13-doc libcoarrays-dev liblapack-doc icu-doc 738s fonts-mathjax-extras fonts-stix libjs-mathjax-doc liblzma-doc ncurses-doc 738s readline-doc libstdc++-13-doc tcl8.6 tk8.6 libjs-html5shiv elpa-ess 738s r-doc-info | r-doc-pdf r-mathlib r-base-html texlive-base texlive-latex-base 738s texlive-plain-generic texlive-fonts-recommended texlive-fonts-extra 738s texlive-extra-utils texlive-latex-recommended texlive-latex-extra texinfo 738s r-cran-kernsmooth r-cran-kernlab r-cran-mvtnorm r-cran-vcd r-cran-shiny 738s r-cran-shinyjs r-cran-dplyr r-cran-png r-cran-jpeg r-cran-rmarkdown 738s r-cran-viridis r-cran-covr r-cran-magick r-cran-sf r-cran-bit64 r-cran-dbi 738s r-cran-formattable r-cran-nanotime r-cran-palmerpenguins r-cran-stringi 738s r-cran-survival r-cran-units r-cran-vdiffr r-cran-testthat r-cran-bench 738s r-cran-blob r-cran-brio r-cran-callr r-cran-crayon r-cran-here r-cran-hms 738s r-cran-htmltools r-cran-pkgbuild r-cran-pkgload r-cran-purrr r-cran-tidyr 738s Recommended packages: 738s bzip2-doc javascript-common libpng-tools r-recommended r-doc-html 738s r-cran-callr r-cran-covr r-cran-crayon r-cran-digest r-cran-htmltools 738s r-cran-htmlwidgets r-cran-mockery r-cran-processx r-cran-ps r-cran-rmarkdown 738s r-cran-rprojroot r-cran-rstudioapi r-cran-testthat r-cran-whoami r-cran-curl 738s r-cran-xml2 r-cran-unitizer r-cran-dplyr r-cran-hexbin r-cran-hmisc 738s r-cran-mapproj r-cran-maps r-cran-multcomp r-cran-profvis r-cran-quantreg 738s r-cran-ragg r-cran-rpart r-cran-sf r-cran-svglite r-cran-vdiffr r-cran-dbi 738s r-cran-rsqlite r-cran-waldo r-cran-testit r-cran-bslib r-cran-codetools 738s r-cran-formatr r-cran-gridsvg r-cran-jpeg r-cran-magick r-cran-png 738s r-cran-reticulate r-cran-rgl r-cran-sass r-cran-tikzdevice r-cran-tinytex 738s r-cran-webshot node-highlight.js r-cran-lintr r-cran-tidyverse r-cran-rcurl 738s r-cran-r.devices r-cran-r.rsp r-cran-lubridate r-cran-fs r-cran-usethis 738s r-cran-bit64 r-cran-dichromat r-cran-hms r-cran-stringi r-cran-data.table 738s r-cran-mockr r-cran-formattable r-cran-generics r-cran-pkgdown 738s r-cran-zeallot r-cran-mime r-cran-remotes r-cran-renv r-cran-jsonlite 738s r-cran-runit libfile-mimeinfo-perl libnet-dbus-perl libx11-protocol-perl 738s x11-utils x11-xserver-utils 738s The following NEW packages will be installed: 738s autopkgtest-satdep build-essential cpp cpp-13 cpp-13-s390x-linux-gnu 738s cpp-s390x-linux-gnu dctrl-tools fontconfig fonts-glyphicons-halflings 738s fonts-mathjax g++ g++-13 g++-13-s390x-linux-gnu g++-s390x-linux-gnu gcc 738s gcc-13 gcc-13-s390x-linux-gnu gcc-s390x-linux-gnu gfortran gfortran-13 738s gfortran-13-s390x-linux-gnu gfortran-s390x-linux-gnu icu-devtools libasan8 738s libatomic1 libblas-dev libblas3 libbz2-dev libcairo2 libcc1-0 libdatrie1 738s libgcc-13-dev libgfortran-13-dev libgfortran5 libgomp1 libgraphite2-3 738s libharfbuzz0b libice6 libicu-dev libisl23 libitm1 libjpeg-dev 738s libjpeg-turbo8-dev libjpeg8-dev libjs-bootstrap libjs-highlight.js 738s libjs-jquery libjs-jquery-datatables libjs-mathjax liblapack-dev liblapack3 738s liblzma-dev libmpc3 libncurses-dev libpango-1.0-0 libpangocairo-1.0-0 738s libpangoft2-1.0-0 libpaper-utils libpaper1 libpcre2-16-0 libpcre2-32-0 738s libpcre2-dev libpcre2-posix3 libpixman-1-0 libpkgconf3 libpng-dev 738s libreadline-dev libsm6 libstdc++-13-dev libtcl8.6 libthai-data libthai0 738s libtk8.6 libubsan1 libxcb-render0 libxcb-shm0 libxft2 libxrender1 libxss1 738s libxt6t64 node-normalize.css pkg-config pkg-r-autopkgtest pkgconf 738s pkgconf-bin r-base-core r-base-dev r-cran-base64enc r-cran-cli 738s r-cran-colorspace r-cran-commonmark r-cran-evaluate r-cran-fansi 738s r-cran-farver r-cran-ggplot2 r-cran-glue r-cran-gtable r-cran-highr 738s r-cran-isoband r-cran-knitr r-cran-labeling r-cran-lattice r-cran-lifecycle 738s r-cran-magrittr r-cran-markdown r-cran-mass r-cran-matrix r-cran-matrixstats 738s r-cran-mgcv r-cran-munsell r-cran-nlme r-cran-pillar r-cran-pkgconfig 738s r-cran-r6 r-cran-rcolorbrewer r-cran-rlang r-cran-scales r-cran-tibble 738s r-cran-utf8 r-cran-vctrs r-cran-viridislite r-cran-withr r-cran-xfun 738s r-cran-yaml unzip x11-common xdg-utils zip zlib1g-dev 738s 0 upgraded, 129 newly installed, 0 to remove and 1 not upgraded. 738s Need to get 159 MB/159 MB of archives. 738s After this operation, 455 MB of additional disk space will be used. 738s Get:1 /tmp/autopkgtest.FOBwGM/2-autopkgtest-satdep.deb autopkgtest-satdep s390x 0 [756 B] 738s Get:2 http://ftpmaster.internal/ubuntu noble/main s390x libisl23 s390x 0.26-3 [722 kB] 739s Get:3 http://ftpmaster.internal/ubuntu noble/main s390x libmpc3 s390x 1.3.1-1 [54.9 kB] 739s Get:4 http://ftpmaster.internal/ubuntu noble/main s390x cpp-13-s390x-linux-gnu s390x 13.2.0-21ubuntu1 [9935 kB] 744s Get:5 http://ftpmaster.internal/ubuntu noble/main s390x cpp-13 s390x 13.2.0-21ubuntu1 [1026 B] 744s Get:6 http://ftpmaster.internal/ubuntu noble/main s390x cpp-s390x-linux-gnu s390x 4:13.2.0-7ubuntu1 [5308 B] 744s Get:7 http://ftpmaster.internal/ubuntu noble/main s390x cpp s390x 4:13.2.0-7ubuntu1 [22.4 kB] 744s Get:8 http://ftpmaster.internal/ubuntu noble/main s390x libcc1-0 s390x 14-20240315-1ubuntu1 [50.0 kB] 744s Get:9 http://ftpmaster.internal/ubuntu noble/main s390x libgomp1 s390x 14-20240315-1ubuntu1 [151 kB] 744s Get:10 http://ftpmaster.internal/ubuntu noble/main s390x libitm1 s390x 14-20240315-1ubuntu1 [31.1 kB] 744s Get:11 http://ftpmaster.internal/ubuntu noble/main s390x libatomic1 s390x 14-20240315-1ubuntu1 [9396 B] 744s Get:12 http://ftpmaster.internal/ubuntu noble/main s390x libasan8 s390x 14-20240315-1ubuntu1 [2997 kB] 745s Get:13 http://ftpmaster.internal/ubuntu noble/main s390x libubsan1 s390x 14-20240315-1ubuntu1 [1186 kB] 746s Get:14 http://ftpmaster.internal/ubuntu noble/main s390x libgcc-13-dev s390x 13.2.0-21ubuntu1 [1003 kB] 746s Get:15 http://ftpmaster.internal/ubuntu noble/main s390x gcc-13-s390x-linux-gnu s390x 13.2.0-21ubuntu1 [19.1 MB] 753s Get:16 http://ftpmaster.internal/ubuntu noble/main s390x gcc-13 s390x 13.2.0-21ubuntu1 [469 kB] 753s Get:17 http://ftpmaster.internal/ubuntu noble/main s390x gcc-s390x-linux-gnu s390x 4:13.2.0-7ubuntu1 [1208 B] 753s Get:18 http://ftpmaster.internal/ubuntu noble/main s390x gcc s390x 4:13.2.0-7ubuntu1 [5014 B] 754s Get:19 http://ftpmaster.internal/ubuntu noble/main s390x libstdc++-13-dev s390x 13.2.0-21ubuntu1 [2494 kB] 755s Get:20 http://ftpmaster.internal/ubuntu noble/main s390x g++-13-s390x-linux-gnu s390x 13.2.0-21ubuntu1 [11.3 MB] 760s Get:21 http://ftpmaster.internal/ubuntu noble/main s390x g++-13 s390x 13.2.0-21ubuntu1 [14.4 kB] 760s Get:22 http://ftpmaster.internal/ubuntu noble/main s390x g++-s390x-linux-gnu s390x 4:13.2.0-7ubuntu1 [956 B] 760s Get:23 http://ftpmaster.internal/ubuntu noble/main s390x g++ s390x 4:13.2.0-7ubuntu1 [1096 B] 760s Get:24 http://ftpmaster.internal/ubuntu noble/main s390x build-essential s390x 12.10ubuntu1 [4930 B] 760s Get:25 http://ftpmaster.internal/ubuntu noble/main s390x dctrl-tools s390x 2.24-3build2 [65.4 kB] 760s Get:26 http://ftpmaster.internal/ubuntu noble/main s390x fontconfig s390x 2.15.0-1.1ubuntu1 [191 kB] 760s Get:27 http://ftpmaster.internal/ubuntu noble/universe s390x fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 760s Get:28 http://ftpmaster.internal/ubuntu noble/main s390x fonts-mathjax all 2.7.9+dfsg-1 [2208 kB] 761s Get:29 http://ftpmaster.internal/ubuntu noble/main s390x libgfortran5 s390x 14-20240315-1ubuntu1 [600 kB] 761s Get:30 http://ftpmaster.internal/ubuntu noble/main s390x libgfortran-13-dev s390x 13.2.0-21ubuntu1 [623 kB] 761s Get:31 http://ftpmaster.internal/ubuntu noble/main s390x gfortran-13-s390x-linux-gnu s390x 13.2.0-21ubuntu1 [10.4 MB] 765s Get:32 http://ftpmaster.internal/ubuntu noble/main s390x gfortran-13 s390x 13.2.0-21ubuntu1 [10.9 kB] 765s Get:33 http://ftpmaster.internal/ubuntu noble/main s390x gfortran-s390x-linux-gnu s390x 4:13.2.0-7ubuntu1 [1016 B] 765s Get:34 http://ftpmaster.internal/ubuntu noble/main s390x gfortran s390x 4:13.2.0-7ubuntu1 [1174 B] 765s Get:35 http://ftpmaster.internal/ubuntu noble/main s390x icu-devtools s390x 74.2-1ubuntu1 [224 kB] 765s Get:36 http://ftpmaster.internal/ubuntu noble/main s390x libblas3 s390x 3.12.0-3 [245 kB] 765s Get:37 http://ftpmaster.internal/ubuntu noble/main s390x libblas-dev s390x 3.12.0-3 [239 kB] 765s Get:38 http://ftpmaster.internal/ubuntu noble/main s390x libbz2-dev s390x 1.0.8-5ubuntu1 [39.4 kB] 765s Get:39 http://ftpmaster.internal/ubuntu noble/main s390x libpixman-1-0 s390x 0.42.2-1 [173 kB] 765s Get:40 http://ftpmaster.internal/ubuntu noble/main s390x libxcb-render0 s390x 1.15-1 [17.0 kB] 765s Get:41 http://ftpmaster.internal/ubuntu noble/main s390x libxcb-shm0 s390x 1.15-1 [5782 B] 765s Get:42 http://ftpmaster.internal/ubuntu noble/main s390x libxrender1 s390x 1:0.9.10-1.1 [19.4 kB] 765s Get:43 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcairo2 s390x 1.18.0-1ubuntu1 [589 kB] 765s Get:44 http://ftpmaster.internal/ubuntu noble/main s390x libdatrie1 s390x 0.2.13-3 [22.6 kB] 765s Get:45 http://ftpmaster.internal/ubuntu noble/main s390x libgraphite2-3 s390x 1.3.14-2 [90.4 kB] 765s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libharfbuzz0b s390x 8.3.0-2build1 [515 kB] 766s Get:47 http://ftpmaster.internal/ubuntu noble/main s390x x11-common all 1:7.7+23ubuntu2 [23.4 kB] 766s Get:48 http://ftpmaster.internal/ubuntu noble/main s390x libice6 s390x 2:1.0.10-1build2 [40.8 kB] 766s Get:49 http://ftpmaster.internal/ubuntu noble/main s390x libicu-dev s390x 74.2-1ubuntu1 [11.9 MB] 769s Get:50 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg-turbo8-dev s390x 2.1.5-2ubuntu1 [264 kB] 769s Get:51 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg8-dev s390x 8c-2ubuntu11 [1484 B] 769s Get:52 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg-dev s390x 8c-2ubuntu11 [1484 B] 769s Get:53 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 769s Get:54 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-highlight.js all 9.18.5+dfsg1-2 [385 kB] 769s Get:55 http://ftpmaster.internal/ubuntu noble/main s390x libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 769s Get:56 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-jquery-datatables all 1.11.5+dfsg-2 [146 kB] 769s Get:57 http://ftpmaster.internal/ubuntu noble/main s390x liblapack3 s390x 3.12.0-3 [2979 kB] 769s Get:58 http://ftpmaster.internal/ubuntu noble/main s390x liblapack-dev s390x 3.12.0-3 [5983 kB] 770s Get:59 http://ftpmaster.internal/ubuntu noble/main s390x libncurses-dev s390x 6.4+20240113-1ubuntu1 [412 kB] 770s Get:60 http://ftpmaster.internal/ubuntu noble/main s390x libthai-data all 0.1.29-2 [158 kB] 770s Get:61 http://ftpmaster.internal/ubuntu noble/main s390x libthai0 s390x 0.1.29-2 [20.6 kB] 770s Get:62 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpango-1.0-0 s390x 1.52.1+ds-1 [242 kB] 770s Get:63 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpangoft2-1.0-0 s390x 1.52.1+ds-1 [44.2 kB] 770s Get:64 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpangocairo-1.0-0 s390x 1.52.1+ds-1 [28.7 kB] 770s Get:65 http://ftpmaster.internal/ubuntu noble/main s390x libpaper1 s390x 1.1.29 [13.3 kB] 770s Get:66 http://ftpmaster.internal/ubuntu noble/main s390x libpaper-utils s390x 1.1.29 [8452 B] 770s Get:67 http://ftpmaster.internal/ubuntu noble/main s390x libpcre2-16-0 s390x 10.42-4ubuntu1 [229 kB] 770s Get:68 http://ftpmaster.internal/ubuntu noble/main s390x libpcre2-32-0 s390x 10.42-4ubuntu1 [217 kB] 770s Get:69 http://ftpmaster.internal/ubuntu noble/main s390x libpcre2-posix3 s390x 10.42-4ubuntu1 [6704 B] 770s Get:70 http://ftpmaster.internal/ubuntu noble/main s390x libpcre2-dev s390x 10.42-4ubuntu1 [805 kB] 771s Get:71 http://ftpmaster.internal/ubuntu noble/main s390x libpkgconf3 s390x 1.8.1-2 [30.4 kB] 771s Get:72 http://ftpmaster.internal/ubuntu noble-proposed/main s390x zlib1g-dev s390x 1:1.3.dfsg-3.1ubuntu1 [904 kB] 771s Get:73 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpng-dev s390x 1.6.43-3 [277 kB] 771s Get:74 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libreadline-dev s390x 8.2-4 [189 kB] 771s Get:75 http://ftpmaster.internal/ubuntu noble/main s390x libsm6 s390x 2:1.2.3-1build2 [16.9 kB] 771s Get:76 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtcl8.6 s390x 8.6.14+dfsg-1 [1037 kB] 771s Get:77 http://ftpmaster.internal/ubuntu noble/main s390x libxft2 s390x 2.3.6-1 [44.3 kB] 771s Get:78 http://ftpmaster.internal/ubuntu noble/main s390x libxss1 s390x 1:1.2.3-1build2 [8192 B] 771s Get:79 http://ftpmaster.internal/ubuntu noble/main s390x libtk8.6 s390x 8.6.14-1 [833 kB] 771s Get:80 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxt6t64 s390x 1:1.2.1-1.2 [184 kB] 771s Get:81 http://ftpmaster.internal/ubuntu noble/universe s390x node-normalize.css all 8.0.1-5 [10.8 kB] 771s Get:82 http://ftpmaster.internal/ubuntu noble/main s390x pkgconf-bin s390x 1.8.1-2 [20.8 kB] 771s Get:83 http://ftpmaster.internal/ubuntu noble/main s390x pkgconf s390x 1.8.1-2 [16.7 kB] 771s Get:84 http://ftpmaster.internal/ubuntu noble/main s390x pkg-config s390x 1.8.1-2 [7170 B] 771s Get:85 http://ftpmaster.internal/ubuntu noble/main s390x zip s390x 3.0-13 [175 kB] 771s Get:86 http://ftpmaster.internal/ubuntu noble/main s390x unzip s390x 6.0-28ubuntu3 [180 kB] 771s Get:87 http://ftpmaster.internal/ubuntu noble/main s390x xdg-utils all 1.1.3-4.1ubuntu3 [62.0 kB] 771s Get:88 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x r-base-core s390x 4.3.3-2build1 [27.1 MB] 776s Get:89 http://ftpmaster.internal/ubuntu noble-proposed/main s390x liblzma-dev s390x 5.6.0-0.2 [185 kB] 776s Get:90 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x r-base-dev all 4.3.3-2build1 [4334 B] 776s Get:91 http://ftpmaster.internal/ubuntu noble/universe s390x pkg-r-autopkgtest all 20231212ubuntu1 [6448 B] 776s Get:92 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-base64enc s390x 0.1-3-3 [28.0 kB] 776s Get:93 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-cli s390x 3.6.2-1 [1382 kB] 776s Get:94 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-colorspace s390x 2.1-0+dfsg-1 [1540 kB] 777s Get:95 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-commonmark s390x 1.9.1-1 [142 kB] 777s Get:96 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-evaluate all 0.23-1 [90.2 kB] 777s Get:97 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-fansi s390x 1.0.5-1 [615 kB] 777s Get:98 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-farver s390x 2.1.1-1 [1347 kB] 777s Get:99 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-glue s390x 1.7.0-1 [154 kB] 777s Get:100 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-rlang s390x 1.1.3-1 [1672 kB] 778s Get:101 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-lifecycle all 1.0.4+dfsg-1 [110 kB] 778s Get:102 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-gtable all 0.3.4+dfsg-1 [191 kB] 778s Get:103 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-isoband s390x 0.2.7-1 [1481 kB] 779s Get:104 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-mass s390x 7.3-60.0.1-1 [1122 kB] 779s Get:105 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-lattice s390x 0.22-5-1 [1341 kB] 779s Get:106 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-nlme s390x 3.1.164-1 [2268 kB] 780s Get:107 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-matrix s390x 1.6-5-1 [3983 kB] 780s Get:108 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-mgcv s390x 1.9-1-1 [3348 kB] 781s Get:109 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-labeling all 0.4.3-1 [62.1 kB] 781s Get:110 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-munsell all 0.5.0-2build1 [208 kB] 781s Get:111 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-r6 all 2.5.1-1 [99.0 kB] 781s Get:112 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-rcolorbrewer all 1.1-3-1build1 [55.4 kB] 781s Get:113 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-viridislite all 0.4.2-2 [1088 kB] 781s Get:114 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-scales all 1.3.0-1 [603 kB] 781s Get:115 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-magrittr s390x 2.0.3-1 [154 kB] 781s Get:116 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-utf8 s390x 1.2.4-1 [143 kB] 781s Get:117 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-vctrs s390x 0.6.5-1 [1448 kB] 781s Get:118 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-pillar all 1.9.0+dfsg-1 [464 kB] 781s Get:119 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-pkgconfig all 2.0.3-2build1 [19.7 kB] 781s Get:120 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-tibble s390x 3.2.1+dfsg-2 [415 kB] 781s Get:121 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x r-cran-withr all 3.0.0+dfsg-1 [228 kB] 781s Get:122 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-ggplot2 all 3.4.4+dfsg-1 [3411 kB] 782s Get:123 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-xfun s390x 0.41+dfsg-1 [415 kB] 782s Get:124 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-highr all 0.10+dfsg-1 [38.3 kB] 782s Get:125 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-yaml s390x 2.3.8-1 [127 kB] 782s Get:126 http://ftpmaster.internal/ubuntu noble/main s390x libjs-mathjax all 2.7.9+dfsg-1 [5665 kB] 783s Get:127 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-knitr all 1.45+dfsg-1 [917 kB] 783s Get:128 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-markdown all 1.12+dfsg-1 [179 kB] 783s Get:129 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-matrixstats s390x 1.2.0-1 [513 kB] 783s Preconfiguring packages ... 783s Fetched 159 MB in 44s (3611 kB/s) 783s Selecting previously unselected package libisl23:s390x. 783s (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 ... 81562 files and directories currently installed.) 783s Preparing to unpack .../000-libisl23_0.26-3_s390x.deb ... 783s Unpacking libisl23:s390x (0.26-3) ... 783s Selecting previously unselected package libmpc3:s390x. 783s Preparing to unpack .../001-libmpc3_1.3.1-1_s390x.deb ... 783s Unpacking libmpc3:s390x (1.3.1-1) ... 783s Selecting previously unselected package cpp-13-s390x-linux-gnu. 783s Preparing to unpack .../002-cpp-13-s390x-linux-gnu_13.2.0-21ubuntu1_s390x.deb ... 783s Unpacking cpp-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 783s Selecting previously unselected package cpp-13. 783s Preparing to unpack .../003-cpp-13_13.2.0-21ubuntu1_s390x.deb ... 783s Unpacking cpp-13 (13.2.0-21ubuntu1) ... 783s Selecting previously unselected package cpp-s390x-linux-gnu. 783s Preparing to unpack .../004-cpp-s390x-linux-gnu_4%3a13.2.0-7ubuntu1_s390x.deb ... 783s Unpacking cpp-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 783s Selecting previously unselected package cpp. 783s Preparing to unpack .../005-cpp_4%3a13.2.0-7ubuntu1_s390x.deb ... 783s Unpacking cpp (4:13.2.0-7ubuntu1) ... 783s Selecting previously unselected package libcc1-0:s390x. 783s Preparing to unpack .../006-libcc1-0_14-20240315-1ubuntu1_s390x.deb ... 783s Unpacking libcc1-0:s390x (14-20240315-1ubuntu1) ... 783s Selecting previously unselected package libgomp1:s390x. 783s Preparing to unpack .../007-libgomp1_14-20240315-1ubuntu1_s390x.deb ... 783s Unpacking libgomp1:s390x (14-20240315-1ubuntu1) ... 783s Selecting previously unselected package libitm1:s390x. 783s Preparing to unpack .../008-libitm1_14-20240315-1ubuntu1_s390x.deb ... 783s Unpacking libitm1:s390x (14-20240315-1ubuntu1) ... 783s Selecting previously unselected package libatomic1:s390x. 783s Preparing to unpack .../009-libatomic1_14-20240315-1ubuntu1_s390x.deb ... 783s Unpacking libatomic1:s390x (14-20240315-1ubuntu1) ... 783s Selecting previously unselected package libasan8:s390x. 783s Preparing to unpack .../010-libasan8_14-20240315-1ubuntu1_s390x.deb ... 783s Unpacking libasan8:s390x (14-20240315-1ubuntu1) ... 783s Selecting previously unselected package libubsan1:s390x. 783s Preparing to unpack .../011-libubsan1_14-20240315-1ubuntu1_s390x.deb ... 783s Unpacking libubsan1:s390x (14-20240315-1ubuntu1) ... 783s Selecting previously unselected package libgcc-13-dev:s390x. 783s Preparing to unpack .../012-libgcc-13-dev_13.2.0-21ubuntu1_s390x.deb ... 783s Unpacking libgcc-13-dev:s390x (13.2.0-21ubuntu1) ... 783s Selecting previously unselected package gcc-13-s390x-linux-gnu. 783s Preparing to unpack .../013-gcc-13-s390x-linux-gnu_13.2.0-21ubuntu1_s390x.deb ... 783s Unpacking gcc-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 784s Selecting previously unselected package gcc-13. 784s Preparing to unpack .../014-gcc-13_13.2.0-21ubuntu1_s390x.deb ... 784s Unpacking gcc-13 (13.2.0-21ubuntu1) ... 784s Selecting previously unselected package gcc-s390x-linux-gnu. 784s Preparing to unpack .../015-gcc-s390x-linux-gnu_4%3a13.2.0-7ubuntu1_s390x.deb ... 784s Unpacking gcc-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 784s Selecting previously unselected package gcc. 784s Preparing to unpack .../016-gcc_4%3a13.2.0-7ubuntu1_s390x.deb ... 784s Unpacking gcc (4:13.2.0-7ubuntu1) ... 784s Selecting previously unselected package libstdc++-13-dev:s390x. 784s Preparing to unpack .../017-libstdc++-13-dev_13.2.0-21ubuntu1_s390x.deb ... 784s Unpacking libstdc++-13-dev:s390x (13.2.0-21ubuntu1) ... 784s Selecting previously unselected package g++-13-s390x-linux-gnu. 784s Preparing to unpack .../018-g++-13-s390x-linux-gnu_13.2.0-21ubuntu1_s390x.deb ... 784s Unpacking g++-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 784s Selecting previously unselected package g++-13. 784s Preparing to unpack .../019-g++-13_13.2.0-21ubuntu1_s390x.deb ... 784s Unpacking g++-13 (13.2.0-21ubuntu1) ... 784s Selecting previously unselected package g++-s390x-linux-gnu. 784s Preparing to unpack .../020-g++-s390x-linux-gnu_4%3a13.2.0-7ubuntu1_s390x.deb ... 784s Unpacking g++-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 784s Selecting previously unselected package g++. 784s Preparing to unpack .../021-g++_4%3a13.2.0-7ubuntu1_s390x.deb ... 784s Unpacking g++ (4:13.2.0-7ubuntu1) ... 784s Selecting previously unselected package build-essential. 784s Preparing to unpack .../022-build-essential_12.10ubuntu1_s390x.deb ... 784s Unpacking build-essential (12.10ubuntu1) ... 784s Selecting previously unselected package dctrl-tools. 784s Preparing to unpack .../023-dctrl-tools_2.24-3build2_s390x.deb ... 784s Unpacking dctrl-tools (2.24-3build2) ... 784s Selecting previously unselected package fontconfig. 784s Preparing to unpack .../024-fontconfig_2.15.0-1.1ubuntu1_s390x.deb ... 784s Unpacking fontconfig (2.15.0-1.1ubuntu1) ... 784s Selecting previously unselected package fonts-glyphicons-halflings. 784s Preparing to unpack .../025-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 784s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 785s Selecting previously unselected package fonts-mathjax. 785s Preparing to unpack .../026-fonts-mathjax_2.7.9+dfsg-1_all.deb ... 785s Unpacking fonts-mathjax (2.7.9+dfsg-1) ... 785s Selecting previously unselected package libgfortran5:s390x. 785s Preparing to unpack .../027-libgfortran5_14-20240315-1ubuntu1_s390x.deb ... 785s Unpacking libgfortran5:s390x (14-20240315-1ubuntu1) ... 785s Selecting previously unselected package libgfortran-13-dev:s390x. 785s Preparing to unpack .../028-libgfortran-13-dev_13.2.0-21ubuntu1_s390x.deb ... 785s Unpacking libgfortran-13-dev:s390x (13.2.0-21ubuntu1) ... 785s Selecting previously unselected package gfortran-13-s390x-linux-gnu. 785s Preparing to unpack .../029-gfortran-13-s390x-linux-gnu_13.2.0-21ubuntu1_s390x.deb ... 785s Unpacking gfortran-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 785s Selecting previously unselected package gfortran-13. 785s Preparing to unpack .../030-gfortran-13_13.2.0-21ubuntu1_s390x.deb ... 785s Unpacking gfortran-13 (13.2.0-21ubuntu1) ... 785s Selecting previously unselected package gfortran-s390x-linux-gnu. 785s Preparing to unpack .../031-gfortran-s390x-linux-gnu_4%3a13.2.0-7ubuntu1_s390x.deb ... 785s Unpacking gfortran-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 785s Selecting previously unselected package gfortran. 785s Preparing to unpack .../032-gfortran_4%3a13.2.0-7ubuntu1_s390x.deb ... 785s Unpacking gfortran (4:13.2.0-7ubuntu1) ... 785s Selecting previously unselected package icu-devtools. 785s Preparing to unpack .../033-icu-devtools_74.2-1ubuntu1_s390x.deb ... 785s Unpacking icu-devtools (74.2-1ubuntu1) ... 785s Selecting previously unselected package libblas3:s390x. 785s Preparing to unpack .../034-libblas3_3.12.0-3_s390x.deb ... 785s Unpacking libblas3:s390x (3.12.0-3) ... 785s Selecting previously unselected package libblas-dev:s390x. 785s Preparing to unpack .../035-libblas-dev_3.12.0-3_s390x.deb ... 785s Unpacking libblas-dev:s390x (3.12.0-3) ... 785s Selecting previously unselected package libbz2-dev:s390x. 785s Preparing to unpack .../036-libbz2-dev_1.0.8-5ubuntu1_s390x.deb ... 785s Unpacking libbz2-dev:s390x (1.0.8-5ubuntu1) ... 785s Selecting previously unselected package libpixman-1-0:s390x. 785s Preparing to unpack .../037-libpixman-1-0_0.42.2-1_s390x.deb ... 785s Unpacking libpixman-1-0:s390x (0.42.2-1) ... 785s Selecting previously unselected package libxcb-render0:s390x. 785s Preparing to unpack .../038-libxcb-render0_1.15-1_s390x.deb ... 785s Unpacking libxcb-render0:s390x (1.15-1) ... 785s Selecting previously unselected package libxcb-shm0:s390x. 785s Preparing to unpack .../039-libxcb-shm0_1.15-1_s390x.deb ... 785s Unpacking libxcb-shm0:s390x (1.15-1) ... 785s Selecting previously unselected package libxrender1:s390x. 785s Preparing to unpack .../040-libxrender1_1%3a0.9.10-1.1_s390x.deb ... 785s Unpacking libxrender1:s390x (1:0.9.10-1.1) ... 785s Selecting previously unselected package libcairo2:s390x. 785s Preparing to unpack .../041-libcairo2_1.18.0-1ubuntu1_s390x.deb ... 785s Unpacking libcairo2:s390x (1.18.0-1ubuntu1) ... 785s Selecting previously unselected package libdatrie1:s390x. 785s Preparing to unpack .../042-libdatrie1_0.2.13-3_s390x.deb ... 785s Unpacking libdatrie1:s390x (0.2.13-3) ... 785s Selecting previously unselected package libgraphite2-3:s390x. 785s Preparing to unpack .../043-libgraphite2-3_1.3.14-2_s390x.deb ... 785s Unpacking libgraphite2-3:s390x (1.3.14-2) ... 785s Selecting previously unselected package libharfbuzz0b:s390x. 785s Preparing to unpack .../044-libharfbuzz0b_8.3.0-2build1_s390x.deb ... 785s Unpacking libharfbuzz0b:s390x (8.3.0-2build1) ... 785s Selecting previously unselected package x11-common. 785s Preparing to unpack .../045-x11-common_1%3a7.7+23ubuntu2_all.deb ... 785s Unpacking x11-common (1:7.7+23ubuntu2) ... 785s Selecting previously unselected package libice6:s390x. 785s Preparing to unpack .../046-libice6_2%3a1.0.10-1build2_s390x.deb ... 785s Unpacking libice6:s390x (2:1.0.10-1build2) ... 785s Selecting previously unselected package libicu-dev:s390x. 785s Preparing to unpack .../047-libicu-dev_74.2-1ubuntu1_s390x.deb ... 785s Unpacking libicu-dev:s390x (74.2-1ubuntu1) ... 786s Selecting previously unselected package libjpeg-turbo8-dev:s390x. 786s Preparing to unpack .../048-libjpeg-turbo8-dev_2.1.5-2ubuntu1_s390x.deb ... 786s Unpacking libjpeg-turbo8-dev:s390x (2.1.5-2ubuntu1) ... 786s Selecting previously unselected package libjpeg8-dev:s390x. 786s Preparing to unpack .../049-libjpeg8-dev_8c-2ubuntu11_s390x.deb ... 786s Unpacking libjpeg8-dev:s390x (8c-2ubuntu11) ... 786s Selecting previously unselected package libjpeg-dev:s390x. 786s Preparing to unpack .../050-libjpeg-dev_8c-2ubuntu11_s390x.deb ... 786s Unpacking libjpeg-dev:s390x (8c-2ubuntu11) ... 786s Selecting previously unselected package libjs-bootstrap. 786s Preparing to unpack .../051-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 786s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 786s Selecting previously unselected package libjs-highlight.js. 786s Preparing to unpack .../052-libjs-highlight.js_9.18.5+dfsg1-2_all.deb ... 786s Unpacking libjs-highlight.js (9.18.5+dfsg1-2) ... 786s Selecting previously unselected package libjs-jquery. 786s Preparing to unpack .../053-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 786s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 786s Selecting previously unselected package libjs-jquery-datatables. 786s Preparing to unpack .../054-libjs-jquery-datatables_1.11.5+dfsg-2_all.deb ... 786s Unpacking libjs-jquery-datatables (1.11.5+dfsg-2) ... 786s Selecting previously unselected package liblapack3:s390x. 786s Preparing to unpack .../055-liblapack3_3.12.0-3_s390x.deb ... 786s Unpacking liblapack3:s390x (3.12.0-3) ... 786s Selecting previously unselected package liblapack-dev:s390x. 786s Preparing to unpack .../056-liblapack-dev_3.12.0-3_s390x.deb ... 786s Unpacking liblapack-dev:s390x (3.12.0-3) ... 786s Selecting previously unselected package libncurses-dev:s390x. 786s Preparing to unpack .../057-libncurses-dev_6.4+20240113-1ubuntu1_s390x.deb ... 786s Unpacking libncurses-dev:s390x (6.4+20240113-1ubuntu1) ... 786s Selecting previously unselected package libthai-data. 786s Preparing to unpack .../058-libthai-data_0.1.29-2_all.deb ... 786s Unpacking libthai-data (0.1.29-2) ... 786s Selecting previously unselected package libthai0:s390x. 786s Preparing to unpack .../059-libthai0_0.1.29-2_s390x.deb ... 786s Unpacking libthai0:s390x (0.1.29-2) ... 786s Selecting previously unselected package libpango-1.0-0:s390x. 786s Preparing to unpack .../060-libpango-1.0-0_1.52.1+ds-1_s390x.deb ... 786s Unpacking libpango-1.0-0:s390x (1.52.1+ds-1) ... 786s Selecting previously unselected package libpangoft2-1.0-0:s390x. 786s Preparing to unpack .../061-libpangoft2-1.0-0_1.52.1+ds-1_s390x.deb ... 786s Unpacking libpangoft2-1.0-0:s390x (1.52.1+ds-1) ... 786s Selecting previously unselected package libpangocairo-1.0-0:s390x. 786s Preparing to unpack .../062-libpangocairo-1.0-0_1.52.1+ds-1_s390x.deb ... 786s Unpacking libpangocairo-1.0-0:s390x (1.52.1+ds-1) ... 786s Selecting previously unselected package libpaper1:s390x. 786s Preparing to unpack .../063-libpaper1_1.1.29_s390x.deb ... 786s Unpacking libpaper1:s390x (1.1.29) ... 786s Selecting previously unselected package libpaper-utils. 786s Preparing to unpack .../064-libpaper-utils_1.1.29_s390x.deb ... 786s Unpacking libpaper-utils (1.1.29) ... 786s Selecting previously unselected package libpcre2-16-0:s390x. 786s Preparing to unpack .../065-libpcre2-16-0_10.42-4ubuntu1_s390x.deb ... 786s Unpacking libpcre2-16-0:s390x (10.42-4ubuntu1) ... 786s Selecting previously unselected package libpcre2-32-0:s390x. 786s Preparing to unpack .../066-libpcre2-32-0_10.42-4ubuntu1_s390x.deb ... 786s Unpacking libpcre2-32-0:s390x (10.42-4ubuntu1) ... 786s Selecting previously unselected package libpcre2-posix3:s390x. 786s Preparing to unpack .../067-libpcre2-posix3_10.42-4ubuntu1_s390x.deb ... 786s Unpacking libpcre2-posix3:s390x (10.42-4ubuntu1) ... 786s Selecting previously unselected package libpcre2-dev:s390x. 786s Preparing to unpack .../068-libpcre2-dev_10.42-4ubuntu1_s390x.deb ... 786s Unpacking libpcre2-dev:s390x (10.42-4ubuntu1) ... 786s Selecting previously unselected package libpkgconf3:s390x. 786s Preparing to unpack .../069-libpkgconf3_1.8.1-2_s390x.deb ... 786s Unpacking libpkgconf3:s390x (1.8.1-2) ... 786s Selecting previously unselected package zlib1g-dev:s390x. 786s Preparing to unpack .../070-zlib1g-dev_1%3a1.3.dfsg-3.1ubuntu1_s390x.deb ... 786s Unpacking zlib1g-dev:s390x (1:1.3.dfsg-3.1ubuntu1) ... 786s Selecting previously unselected package libpng-dev:s390x. 786s Preparing to unpack .../071-libpng-dev_1.6.43-3_s390x.deb ... 787s Unpacking libpng-dev:s390x (1.6.43-3) ... 787s Selecting previously unselected package libreadline-dev:s390x. 787s Preparing to unpack .../072-libreadline-dev_8.2-4_s390x.deb ... 787s Unpacking libreadline-dev:s390x (8.2-4) ... 787s Selecting previously unselected package libsm6:s390x. 787s Preparing to unpack .../073-libsm6_2%3a1.2.3-1build2_s390x.deb ... 787s Unpacking libsm6:s390x (2:1.2.3-1build2) ... 787s Selecting previously unselected package libtcl8.6:s390x. 787s Preparing to unpack .../074-libtcl8.6_8.6.14+dfsg-1_s390x.deb ... 787s Unpacking libtcl8.6:s390x (8.6.14+dfsg-1) ... 787s Selecting previously unselected package libxft2:s390x. 787s Preparing to unpack .../075-libxft2_2.3.6-1_s390x.deb ... 787s Unpacking libxft2:s390x (2.3.6-1) ... 787s Selecting previously unselected package libxss1:s390x. 787s Preparing to unpack .../076-libxss1_1%3a1.2.3-1build2_s390x.deb ... 787s Unpacking libxss1:s390x (1:1.2.3-1build2) ... 787s Selecting previously unselected package libtk8.6:s390x. 787s Preparing to unpack .../077-libtk8.6_8.6.14-1_s390x.deb ... 787s Unpacking libtk8.6:s390x (8.6.14-1) ... 787s Selecting previously unselected package libxt6t64:s390x. 787s Preparing to unpack .../078-libxt6t64_1%3a1.2.1-1.2_s390x.deb ... 787s Unpacking libxt6t64:s390x (1:1.2.1-1.2) ... 787s Selecting previously unselected package node-normalize.css. 787s Preparing to unpack .../079-node-normalize.css_8.0.1-5_all.deb ... 787s Unpacking node-normalize.css (8.0.1-5) ... 787s Selecting previously unselected package pkgconf-bin. 787s Preparing to unpack .../080-pkgconf-bin_1.8.1-2_s390x.deb ... 787s Unpacking pkgconf-bin (1.8.1-2) ... 787s Selecting previously unselected package pkgconf:s390x. 787s Preparing to unpack .../081-pkgconf_1.8.1-2_s390x.deb ... 787s Unpacking pkgconf:s390x (1.8.1-2) ... 787s Selecting previously unselected package pkg-config:s390x. 787s Preparing to unpack .../082-pkg-config_1.8.1-2_s390x.deb ... 787s Unpacking pkg-config:s390x (1.8.1-2) ... 787s Selecting previously unselected package zip. 787s Preparing to unpack .../083-zip_3.0-13_s390x.deb ... 787s Unpacking zip (3.0-13) ... 787s Selecting previously unselected package unzip. 787s Preparing to unpack .../084-unzip_6.0-28ubuntu3_s390x.deb ... 787s Unpacking unzip (6.0-28ubuntu3) ... 787s Selecting previously unselected package xdg-utils. 787s Preparing to unpack .../085-xdg-utils_1.1.3-4.1ubuntu3_all.deb ... 787s Unpacking xdg-utils (1.1.3-4.1ubuntu3) ... 787s Selecting previously unselected package r-base-core. 787s Preparing to unpack .../086-r-base-core_4.3.3-2build1_s390x.deb ... 787s Unpacking r-base-core (4.3.3-2build1) ... 787s Selecting previously unselected package liblzma-dev:s390x. 787s Preparing to unpack .../087-liblzma-dev_5.6.0-0.2_s390x.deb ... 787s Unpacking liblzma-dev:s390x (5.6.0-0.2) ... 787s Selecting previously unselected package r-base-dev. 787s Preparing to unpack .../088-r-base-dev_4.3.3-2build1_all.deb ... 787s Unpacking r-base-dev (4.3.3-2build1) ... 787s Selecting previously unselected package pkg-r-autopkgtest. 787s Preparing to unpack .../089-pkg-r-autopkgtest_20231212ubuntu1_all.deb ... 787s Unpacking pkg-r-autopkgtest (20231212ubuntu1) ... 787s Selecting previously unselected package r-cran-base64enc. 787s Preparing to unpack .../090-r-cran-base64enc_0.1-3-3_s390x.deb ... 787s Unpacking r-cran-base64enc (0.1-3-3) ... 787s Selecting previously unselected package r-cran-cli. 787s Preparing to unpack .../091-r-cran-cli_3.6.2-1_s390x.deb ... 787s Unpacking r-cran-cli (3.6.2-1) ... 787s Selecting previously unselected package r-cran-colorspace. 787s Preparing to unpack .../092-r-cran-colorspace_2.1-0+dfsg-1_s390x.deb ... 787s Unpacking r-cran-colorspace (2.1-0+dfsg-1) ... 787s Selecting previously unselected package r-cran-commonmark. 787s Preparing to unpack .../093-r-cran-commonmark_1.9.1-1_s390x.deb ... 787s Unpacking r-cran-commonmark (1.9.1-1) ... 787s Selecting previously unselected package r-cran-evaluate. 787s Preparing to unpack .../094-r-cran-evaluate_0.23-1_all.deb ... 787s Unpacking r-cran-evaluate (0.23-1) ... 788s Selecting previously unselected package r-cran-fansi. 788s Preparing to unpack .../095-r-cran-fansi_1.0.5-1_s390x.deb ... 788s Unpacking r-cran-fansi (1.0.5-1) ... 788s Selecting previously unselected package r-cran-farver. 788s Preparing to unpack .../096-r-cran-farver_2.1.1-1_s390x.deb ... 788s Unpacking r-cran-farver (2.1.1-1) ... 788s Selecting previously unselected package r-cran-glue. 788s Preparing to unpack .../097-r-cran-glue_1.7.0-1_s390x.deb ... 788s Unpacking r-cran-glue (1.7.0-1) ... 788s Selecting previously unselected package r-cran-rlang. 788s Preparing to unpack .../098-r-cran-rlang_1.1.3-1_s390x.deb ... 788s Unpacking r-cran-rlang (1.1.3-1) ... 788s Selecting previously unselected package r-cran-lifecycle. 788s Preparing to unpack .../099-r-cran-lifecycle_1.0.4+dfsg-1_all.deb ... 788s Unpacking r-cran-lifecycle (1.0.4+dfsg-1) ... 788s Selecting previously unselected package r-cran-gtable. 788s Preparing to unpack .../100-r-cran-gtable_0.3.4+dfsg-1_all.deb ... 788s Unpacking r-cran-gtable (0.3.4+dfsg-1) ... 788s Selecting previously unselected package r-cran-isoband. 788s Preparing to unpack .../101-r-cran-isoband_0.2.7-1_s390x.deb ... 788s Unpacking r-cran-isoband (0.2.7-1) ... 788s Selecting previously unselected package r-cran-mass. 788s Preparing to unpack .../102-r-cran-mass_7.3-60.0.1-1_s390x.deb ... 788s Unpacking r-cran-mass (7.3-60.0.1-1) ... 788s Selecting previously unselected package r-cran-lattice. 788s Preparing to unpack .../103-r-cran-lattice_0.22-5-1_s390x.deb ... 788s Unpacking r-cran-lattice (0.22-5-1) ... 788s Selecting previously unselected package r-cran-nlme. 788s Preparing to unpack .../104-r-cran-nlme_3.1.164-1_s390x.deb ... 788s Unpacking r-cran-nlme (3.1.164-1) ... 788s Selecting previously unselected package r-cran-matrix. 788s Preparing to unpack .../105-r-cran-matrix_1.6-5-1_s390x.deb ... 788s Unpacking r-cran-matrix (1.6-5-1) ... 788s Selecting previously unselected package r-cran-mgcv. 788s Preparing to unpack .../106-r-cran-mgcv_1.9-1-1_s390x.deb ... 788s Unpacking r-cran-mgcv (1.9-1-1) ... 788s Selecting previously unselected package r-cran-labeling. 788s Preparing to unpack .../107-r-cran-labeling_0.4.3-1_all.deb ... 788s Unpacking r-cran-labeling (0.4.3-1) ... 788s Selecting previously unselected package r-cran-munsell. 788s Preparing to unpack .../108-r-cran-munsell_0.5.0-2build1_all.deb ... 788s Unpacking r-cran-munsell (0.5.0-2build1) ... 788s Selecting previously unselected package r-cran-r6. 788s Preparing to unpack .../109-r-cran-r6_2.5.1-1_all.deb ... 788s Unpacking r-cran-r6 (2.5.1-1) ... 788s Selecting previously unselected package r-cran-rcolorbrewer. 788s Preparing to unpack .../110-r-cran-rcolorbrewer_1.1-3-1build1_all.deb ... 788s Unpacking r-cran-rcolorbrewer (1.1-3-1build1) ... 788s Selecting previously unselected package r-cran-viridislite. 788s Preparing to unpack .../111-r-cran-viridislite_0.4.2-2_all.deb ... 788s Unpacking r-cran-viridislite (0.4.2-2) ... 788s Selecting previously unselected package r-cran-scales. 788s Preparing to unpack .../112-r-cran-scales_1.3.0-1_all.deb ... 788s Unpacking r-cran-scales (1.3.0-1) ... 788s Selecting previously unselected package r-cran-magrittr. 788s Preparing to unpack .../113-r-cran-magrittr_2.0.3-1_s390x.deb ... 788s Unpacking r-cran-magrittr (2.0.3-1) ... 788s Selecting previously unselected package r-cran-utf8. 788s Preparing to unpack .../114-r-cran-utf8_1.2.4-1_s390x.deb ... 788s Unpacking r-cran-utf8 (1.2.4-1) ... 788s Selecting previously unselected package r-cran-vctrs. 788s Preparing to unpack .../115-r-cran-vctrs_0.6.5-1_s390x.deb ... 788s Unpacking r-cran-vctrs (0.6.5-1) ... 788s Selecting previously unselected package r-cran-pillar. 788s Preparing to unpack .../116-r-cran-pillar_1.9.0+dfsg-1_all.deb ... 788s Unpacking r-cran-pillar (1.9.0+dfsg-1) ... 788s Selecting previously unselected package r-cran-pkgconfig. 788s Preparing to unpack .../117-r-cran-pkgconfig_2.0.3-2build1_all.deb ... 788s Unpacking r-cran-pkgconfig (2.0.3-2build1) ... 788s Selecting previously unselected package r-cran-tibble. 788s Preparing to unpack .../118-r-cran-tibble_3.2.1+dfsg-2_s390x.deb ... 788s Unpacking r-cran-tibble (3.2.1+dfsg-2) ... 788s Selecting previously unselected package r-cran-withr. 788s Preparing to unpack .../119-r-cran-withr_3.0.0+dfsg-1_all.deb ... 788s Unpacking r-cran-withr (3.0.0+dfsg-1) ... 788s Selecting previously unselected package r-cran-ggplot2. 788s Preparing to unpack .../120-r-cran-ggplot2_3.4.4+dfsg-1_all.deb ... 788s Unpacking r-cran-ggplot2 (3.4.4+dfsg-1) ... 788s Selecting previously unselected package r-cran-xfun. 788s Preparing to unpack .../121-r-cran-xfun_0.41+dfsg-1_s390x.deb ... 788s Unpacking r-cran-xfun (0.41+dfsg-1) ... 788s Selecting previously unselected package r-cran-highr. 788s Preparing to unpack .../122-r-cran-highr_0.10+dfsg-1_all.deb ... 788s Unpacking r-cran-highr (0.10+dfsg-1) ... 788s Selecting previously unselected package r-cran-yaml. 788s Preparing to unpack .../123-r-cran-yaml_2.3.8-1_s390x.deb ... 788s Unpacking r-cran-yaml (2.3.8-1) ... 788s Selecting previously unselected package libjs-mathjax. 788s Preparing to unpack .../124-libjs-mathjax_2.7.9+dfsg-1_all.deb ... 788s Unpacking libjs-mathjax (2.7.9+dfsg-1) ... 789s Selecting previously unselected package r-cran-knitr. 789s Preparing to unpack .../125-r-cran-knitr_1.45+dfsg-1_all.deb ... 789s Unpacking r-cran-knitr (1.45+dfsg-1) ... 790s Selecting previously unselected package r-cran-markdown. 790s Preparing to unpack .../126-r-cran-markdown_1.12+dfsg-1_all.deb ... 790s Unpacking r-cran-markdown (1.12+dfsg-1) ... 790s Selecting previously unselected package r-cran-matrixstats. 790s Preparing to unpack .../127-r-cran-matrixstats_1.2.0-1_s390x.deb ... 790s Unpacking r-cran-matrixstats (1.2.0-1) ... 790s Selecting previously unselected package autopkgtest-satdep. 790s Preparing to unpack .../128-2-autopkgtest-satdep.deb ... 790s Unpacking autopkgtest-satdep (0) ... 790s Setting up libgraphite2-3:s390x (1.3.14-2) ... 790s Setting up libpixman-1-0:s390x (0.42.2-1) ... 790s Setting up libpaper1:s390x (1.1.29) ... 790s 790s Creating config file /etc/papersize with new version 790s Setting up fontconfig (2.15.0-1.1ubuntu1) ... 792s Regenerating fonts cache... done. 792s Setting up libjpeg-turbo8-dev:s390x (2.1.5-2ubuntu1) ... 792s Setting up libncurses-dev:s390x (6.4+20240113-1ubuntu1) ... 792s Setting up fonts-mathjax (2.7.9+dfsg-1) ... 792s Setting up libjs-mathjax (2.7.9+dfsg-1) ... 792s Setting up libxrender1:s390x (1:0.9.10-1.1) ... 792s Setting up libdatrie1:s390x (0.2.13-3) ... 792s Setting up libxcb-render0:s390x (1.15-1) ... 792s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 792s Setting up unzip (6.0-28ubuntu3) ... 792s Setting up x11-common (1:7.7+23ubuntu2) ... 792s Setting up libxcb-shm0:s390x (1.15-1) ... 792s Setting up libpaper-utils (1.1.29) ... 792s Setting up libreadline-dev:s390x (8.2-4) ... 792s Setting up libgomp1:s390x (14-20240315-1ubuntu1) ... 792s Setting up libcairo2:s390x (1.18.0-1ubuntu1) ... 792s Setting up libpcre2-16-0:s390x (10.42-4ubuntu1) ... 792s Setting up zip (3.0-13) ... 792s Setting up libpcre2-32-0:s390x (10.42-4ubuntu1) ... 792s Setting up libblas3:s390x (3.12.0-3) ... 792s update-alternatives: using /usr/lib/s390x-linux-gnu/blas/libblas.so.3 to provide /usr/lib/s390x-linux-gnu/libblas.so.3 (libblas.so.3-s390x-linux-gnu) in auto mode 792s Setting up libpkgconf3:s390x (1.8.1-2) ... 792s Setting up libmpc3:s390x (1.3.1-1) ... 792s Setting up libatomic1:s390x (14-20240315-1ubuntu1) ... 792s Setting up libtcl8.6:s390x (8.6.14+dfsg-1) ... 792s Setting up icu-devtools (74.2-1ubuntu1) ... 792s Setting up pkgconf-bin (1.8.1-2) ... 792s Setting up libgfortran5:s390x (14-20240315-1ubuntu1) ... 792s Setting up liblzma-dev:s390x (5.6.0-0.2) ... 792s Setting up libubsan1:s390x (14-20240315-1ubuntu1) ... 792s Setting up zlib1g-dev:s390x (1:1.3.dfsg-3.1ubuntu1) ... 792s Setting up libpcre2-posix3:s390x (10.42-4ubuntu1) ... 792s Setting up libjs-highlight.js (9.18.5+dfsg1-2) ... 792s Setting up libasan8:s390x (14-20240315-1ubuntu1) ... 792s Setting up libharfbuzz0b:s390x (8.3.0-2build1) ... 792s Setting up libthai-data (0.1.29-2) ... 792s Setting up libxss1:s390x (1:1.2.3-1build2) ... 792s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 792s Setting up libjpeg8-dev:s390x (8c-2ubuntu11) ... 792s Setting up libisl23:s390x (0.26-3) ... 792s Setting up node-normalize.css (8.0.1-5) ... 792s Setting up libicu-dev:s390x (74.2-1ubuntu1) ... 792s Setting up xdg-utils (1.1.3-4.1ubuntu3) ... 792s update-alternatives: using /usr/bin/xdg-open to provide /usr/bin/open (open) in auto mode 792s Setting up libcc1-0:s390x (14-20240315-1ubuntu1) ... 792s Setting up libblas-dev:s390x (3.12.0-3) ... 792s update-alternatives: using /usr/lib/s390x-linux-gnu/blas/libblas.so to provide /usr/lib/s390x-linux-gnu/libblas.so (libblas.so-s390x-linux-gnu) in auto mode 792s Setting up dctrl-tools (2.24-3build2) ... 792s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 792s Setting up libitm1:s390x (14-20240315-1ubuntu1) ... 792s Setting up libbz2-dev:s390x (1.0.8-5ubuntu1) ... 792s Setting up libice6:s390x (2:1.0.10-1build2) ... 792s Setting up liblapack3:s390x (3.12.0-3) ... 792s update-alternatives: using /usr/lib/s390x-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/s390x-linux-gnu/liblapack.so.3 (liblapack.so.3-s390x-linux-gnu) in auto mode 792s Setting up libxft2:s390x (2.3.6-1) ... 792s Setting up libpcre2-dev:s390x (10.42-4ubuntu1) ... 792s Setting up libtk8.6:s390x (8.6.14-1) ... 792s Setting up libpng-dev:s390x (1.6.43-3) ... 792s Setting up libjpeg-dev:s390x (8c-2ubuntu11) ... 792s Setting up libjs-jquery-datatables (1.11.5+dfsg-2) ... 792s Setting up pkgconf:s390x (1.8.1-2) ... 792s Setting up libthai0:s390x (0.1.29-2) ... 792s Setting up cpp-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 792s Setting up liblapack-dev:s390x (3.12.0-3) ... 792s update-alternatives: using /usr/lib/s390x-linux-gnu/lapack/liblapack.so to provide /usr/lib/s390x-linux-gnu/liblapack.so (liblapack.so-s390x-linux-gnu) in auto mode 792s Setting up pkg-config:s390x (1.8.1-2) ... 792s Setting up libgcc-13-dev:s390x (13.2.0-21ubuntu1) ... 792s Setting up libgfortran-13-dev:s390x (13.2.0-21ubuntu1) ... 792s Setting up libsm6:s390x (2:1.2.3-1build2) ... 792s Setting up libstdc++-13-dev:s390x (13.2.0-21ubuntu1) ... 792s Setting up cpp-13 (13.2.0-21ubuntu1) ... 792s Setting up cpp-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 792s Setting up libpango-1.0-0:s390x (1.52.1+ds-1) ... 792s Setting up gcc-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 792s Setting up gcc-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 792s Setting up g++-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 792s Setting up libxt6t64:s390x (1:1.2.1-1.2) ... 792s Setting up gcc-13 (13.2.0-21ubuntu1) ... 792s Setting up cpp (4:13.2.0-7ubuntu1) ... 792s Setting up gfortran-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 792s Setting up libpangoft2-1.0-0:s390x (1.52.1+ds-1) ... 792s Setting up libpangocairo-1.0-0:s390x (1.52.1+ds-1) ... 792s Setting up g++-13 (13.2.0-21ubuntu1) ... 792s Setting up gfortran-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 792s Setting up g++-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 792s Setting up gcc (4:13.2.0-7ubuntu1) ... 792s Setting up gfortran-13 (13.2.0-21ubuntu1) ... 792s Setting up r-base-core (4.3.3-2build1) ... 792s 792s Creating config file /etc/R/Renviron with new version 792s Setting up r-cran-labeling (0.4.3-1) ... 792s Setting up r-cran-lattice (0.22-5-1) ... 792s Setting up r-cran-nlme (3.1.164-1) ... 792s Setting up r-cran-farver (2.1.1-1) ... 792s Setting up g++ (4:13.2.0-7ubuntu1) ... 792s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 792s Setting up r-cran-viridislite (0.4.2-2) ... 792s Setting up build-essential (12.10ubuntu1) ... 792s Setting up r-cran-commonmark (1.9.1-1) ... 792s Setting up r-cran-r6 (2.5.1-1) ... 792s Setting up r-cran-magrittr (2.0.3-1) ... 792s Setting up r-cran-rlang (1.1.3-1) ... 792s Setting up r-cran-matrixstats (1.2.0-1) ... 793s Setting up r-cran-xfun (0.41+dfsg-1) ... 793s Setting up r-cran-withr (3.0.0+dfsg-1) ... 793s Setting up r-cran-base64enc (0.1-3-3) ... 793s Setting up r-cran-yaml (2.3.8-1) ... 793s Setting up r-cran-evaluate (0.23-1) ... 793s Setting up r-cran-highr (0.10+dfsg-1) ... 793s Setting up r-cran-fansi (1.0.5-1) ... 793s Setting up r-cran-mass (7.3-60.0.1-1) ... 793s Setting up r-cran-glue (1.7.0-1) ... 793s Setting up r-cran-cli (3.6.2-1) ... 793s Setting up gfortran (4:13.2.0-7ubuntu1) ... 793s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode 793s update-alternatives: warning: skip creation of /usr/share/man/man1/f95.1.gz because associated file /usr/share/man/man1/gfortran.1.gz (of link group f95) doesn't exist 793s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode 793s update-alternatives: warning: skip creation of /usr/share/man/man1/f77.1.gz because associated file /usr/share/man/man1/gfortran.1.gz (of link group f77) doesn't exist 793s Setting up r-cran-lifecycle (1.0.4+dfsg-1) ... 793s Setting up r-cran-pkgconfig (2.0.3-2build1) ... 793s Setting up r-cran-utf8 (1.2.4-1) ... 793s Setting up r-cran-colorspace (2.1-0+dfsg-1) ... 793s Setting up r-cran-markdown (1.12+dfsg-1) ... 793s Setting up r-cran-rcolorbrewer (1.1-3-1build1) ... 793s Setting up r-cran-isoband (0.2.7-1) ... 793s Setting up r-cran-gtable (0.3.4+dfsg-1) ... 793s Setting up r-cran-matrix (1.6-5-1) ... 793s Setting up r-cran-knitr (1.45+dfsg-1) ... 793s Setting up r-cran-mgcv (1.9-1-1) ... 793s Setting up r-cran-vctrs (0.6.5-1) ... 793s Setting up r-cran-pillar (1.9.0+dfsg-1) ... 793s Setting up r-base-dev (4.3.3-2build1) ... 793s Setting up r-cran-munsell (0.5.0-2build1) ... 793s Setting up r-cran-tibble (3.2.1+dfsg-2) ... 793s Setting up r-cran-scales (1.3.0-1) ... 793s Setting up pkg-r-autopkgtest (20231212ubuntu1) ... 793s Setting up r-cran-ggplot2 (3.4.4+dfsg-1) ... 793s Setting up autopkgtest-satdep (0) ... 793s Processing triggers for man-db (2.12.0-3build4) ... 794s Processing triggers for install-info (7.1-3build1) ... 794s Processing triggers for libc-bin (2.39-0ubuntu6) ... 799s (Reading database ... 93599 files and directories currently installed.) 799s Removing autopkgtest-satdep (0) ... 801s autopkgtest [01:01:27]: test pkg-r-autopkgtest: /usr/share/dh-r/pkg-r-autopkgtest 801s autopkgtest [01:01:27]: test pkg-r-autopkgtest: [----------------------- 802s Test: Try to load the R library matrixStats 802s 802s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 802s Copyright (C) 2024 The R Foundation for Statistical Computing 802s Platform: s390x-ibm-linux-gnu (64-bit) 802s 802s R is free software and comes with ABSOLUTELY NO WARRANTY. 802s You are welcome to redistribute it under certain conditions. 802s Type 'license()' or 'licence()' for distribution details. 802s 802s R is a collaborative project with many contributors. 802s Type 'contributors()' for more information and 802s 'citation()' on how to cite R or R packages in publications. 802s 802s Type 'demo()' for some demos, 'help()' for on-line help, or 802s 'help.start()' for an HTML browser interface to help. 802s Type 'q()' to quit R. 802s 802s > library('matrixStats') 802s > 802s > 802s Other tests are currently unsupported! 802s They will be progressively added. 802s autopkgtest [01:01:28]: test pkg-r-autopkgtest: -----------------------] 803s autopkgtest [01:01:29]: test pkg-r-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 803s pkg-r-autopkgtest PASS 803s autopkgtest [01:01:29]: @@@@@@@@@@@@@@@@@@@@ summary 803s run-unit-test PASS 803s pkg-r-autopkgtest PASS 816s Creating nova instance adt-noble-s390x-r-cran-matrixstats-20240328-004806-juju-7f2275-prod-proposed-migration-environment-2-c148e8b4-81f2-411b-a613-1643d7aff890 from image adt/ubuntu-noble-s390x-server-20240327.img (UUID 4dc0c4c2-a3ae-40cd-8411-e7fc228c10ae)... 816s Creating nova instance adt-noble-s390x-r-cran-matrixstats-20240328-004806-juju-7f2275-prod-proposed-migration-environment-2-c148e8b4-81f2-411b-a613-1643d7aff890 from image adt/ubuntu-noble-s390x-server-20240327.img (UUID 4dc0c4c2-a3ae-40cd-8411-e7fc228c10ae)...