0s autopkgtest [04:28:27]: starting date and time: 2024-03-28 04:28:27+0000 0s autopkgtest [04:28:27]: git checkout: 4a1cd702 l/adt_testbed: don't blame the testbed for unsolvable build deps 0s autopkgtest [04:28:27]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.f3wdl4fx/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@bos01-ppc64el-14.secgroup --name adt-noble-ppc64el-r-cran-matrixstats-20240328-042827-juju-7f2275-prod-proposed-migration-environment-2-b3d56563-a19e-40be-93ef-fd3216d524d3 --image adt/ubuntu-noble-ppc64el-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://us.ports.ubuntu.com/ubuntu-ports/ 259s autopkgtest [04:32:46]: testbed dpkg architecture: ppc64el 259s autopkgtest [04:32:46]: testbed apt version: 2.7.12 259s autopkgtest [04:32:46]: @@@@@@@@@@@@@@@@@@@@ test bed setup 260s Get:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease [117 kB] 260s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/multiverse Sources [55.9 kB] 260s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/universe Sources [3949 kB] 261s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/restricted Sources [8504 B] 261s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main Sources [471 kB] 261s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el Packages [659 kB] 261s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el c-n-f Metadata [3116 B] 261s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/restricted ppc64el Packages [1372 B] 261s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/restricted ppc64el c-n-f Metadata [116 B] 261s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el Packages [4099 kB] 261s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el c-n-f Metadata [8652 B] 261s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/multiverse ppc64el Packages [60.2 kB] 261s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/multiverse ppc64el c-n-f Metadata [116 B] 264s Fetched 9432 kB in 2s (3944 kB/s) 265s Reading package lists... 266s Reading package lists... 267s Building dependency tree... 267s Reading state information... 267s Calculating upgrade... 267s The following packages will be upgraded: 267s binutils binutils-common binutils-powerpc64le-linux-gnu dmsetup gcc-13-base 267s gcc-14-base initramfs-tools initramfs-tools-bin initramfs-tools-core jq 267s libbinutils libctf-nobfd0 libctf0 libdevmapper1.02.1 libexpat1 libftdi1-2 267s libgcc-s1 libjq1 libpam-modules libpam-modules-bin libpam-runtime libpam0g 267s libseccomp2 libsframe1 libstdc++6 libusb-1.0-0 python3-yaml 267s 27 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 267s Need to get 6134 kB of archives. 267s After this operation, 470 kB disk space will be freed. 267s Get:1 http://ftpmaster.internal/ubuntu noble/main ppc64el libpam0g ppc64el 1.5.3-5ubuntu3 [75.7 kB] 267s Get:2 http://ftpmaster.internal/ubuntu noble/main ppc64el libpam-modules-bin ppc64el 1.5.3-5ubuntu3 [57.9 kB] 267s Get:3 http://ftpmaster.internal/ubuntu noble/main ppc64el libpam-modules ppc64el 1.5.3-5ubuntu3 [320 kB] 267s Get:4 http://ftpmaster.internal/ubuntu noble/main ppc64el gcc-14-base ppc64el 14-20240315-1ubuntu1 [47.0 kB] 267s Get:5 http://ftpmaster.internal/ubuntu noble/main ppc64el libstdc++6 ppc64el 14-20240315-1ubuntu1 [897 kB] 268s Get:6 http://ftpmaster.internal/ubuntu noble/main ppc64el libgcc-s1 ppc64el 14-20240315-1ubuntu1 [39.2 kB] 268s Get:7 http://ftpmaster.internal/ubuntu noble/main ppc64el libpam-runtime all 1.5.3-5ubuntu3 [40.8 kB] 268s Get:8 http://ftpmaster.internal/ubuntu noble/main ppc64el libseccomp2 ppc64el 2.5.5-1ubuntu2 [62.5 kB] 268s Get:9 http://ftpmaster.internal/ubuntu noble/main ppc64el libdevmapper1.02.1 ppc64el 2:1.02.185-3ubuntu2 [182 kB] 268s Get:10 http://ftpmaster.internal/ubuntu noble/main ppc64el dmsetup ppc64el 2:1.02.185-3ubuntu2 [91.8 kB] 268s Get:11 http://ftpmaster.internal/ubuntu noble/main ppc64el libexpat1 ppc64el 2.6.1-2 [101 kB] 268s Get:12 http://ftpmaster.internal/ubuntu noble/main ppc64el python3-yaml ppc64el 6.0.1-2build1 [123 kB] 268s Get:13 http://ftpmaster.internal/ubuntu noble/main ppc64el libusb-1.0-0 ppc64el 2:1.0.27-1 [64.0 kB] 268s Get:14 http://ftpmaster.internal/ubuntu noble/main ppc64el libctf0 ppc64el 2.42-4ubuntu1 [112 kB] 268s Get:15 http://ftpmaster.internal/ubuntu noble/main ppc64el libctf-nobfd0 ppc64el 2.42-4ubuntu1 [112 kB] 268s Get:16 http://ftpmaster.internal/ubuntu noble/main ppc64el binutils-powerpc64le-linux-gnu ppc64el 2.42-4ubuntu1 [2473 kB] 268s Get:17 http://ftpmaster.internal/ubuntu noble/main ppc64el libbinutils ppc64el 2.42-4ubuntu1 [699 kB] 269s Get:18 http://ftpmaster.internal/ubuntu noble/main ppc64el binutils ppc64el 2.42-4ubuntu1 [3078 B] 269s Get:19 http://ftpmaster.internal/ubuntu noble/main ppc64el binutils-common ppc64el 2.42-4ubuntu1 [217 kB] 269s Get:20 http://ftpmaster.internal/ubuntu noble/main ppc64el libsframe1 ppc64el 2.42-4ubuntu1 [16.0 kB] 269s Get:21 http://ftpmaster.internal/ubuntu noble/main ppc64el gcc-13-base ppc64el 13.2.0-21ubuntu1 [48.3 kB] 269s Get:22 http://ftpmaster.internal/ubuntu noble/main ppc64el initramfs-tools all 0.142ubuntu23 [9058 B] 269s Get:23 http://ftpmaster.internal/ubuntu noble/main ppc64el initramfs-tools-core all 0.142ubuntu23 [50.1 kB] 269s Get:24 http://ftpmaster.internal/ubuntu noble/main ppc64el initramfs-tools-bin ppc64el 0.142ubuntu23 [21.0 kB] 269s Get:25 http://ftpmaster.internal/ubuntu noble/main ppc64el jq ppc64el 1.7.1-3 [66.1 kB] 269s Get:26 http://ftpmaster.internal/ubuntu noble/main ppc64el libjq1 ppc64el 1.7.1-3 [173 kB] 269s Get:27 http://ftpmaster.internal/ubuntu noble/main ppc64el libftdi1-2 ppc64el 1.5-6build4 [32.5 kB] 269s Preconfiguring packages ... 269s Fetched 6134 kB in 2s (3468 kB/s) 269s (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 ... 70153 files and directories currently installed.) 269s Preparing to unpack .../libpam0g_1.5.3-5ubuntu3_ppc64el.deb ... 269s Unpacking libpam0g:ppc64el (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 269s Setting up libpam0g:ppc64el (1.5.3-5ubuntu3) ... 269s (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 ... 70153 files and directories currently installed.) 269s Preparing to unpack .../libpam-modules-bin_1.5.3-5ubuntu3_ppc64el.deb ... 269s Unpacking libpam-modules-bin (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 269s Setting up libpam-modules-bin (1.5.3-5ubuntu3) ... 270s pam_namespace.service is a disabled or a static unit not running, not starting it. 270s (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 ... 70153 files and directories currently installed.) 270s Preparing to unpack .../libpam-modules_1.5.3-5ubuntu3_ppc64el.deb ... 270s Unpacking libpam-modules:ppc64el (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 270s Setting up libpam-modules:ppc64el (1.5.3-5ubuntu3) ... 270s Installing new version of config file /etc/security/namespace.init ... 270s (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 ... 70151 files and directories currently installed.) 270s Preparing to unpack .../gcc-14-base_14-20240315-1ubuntu1_ppc64el.deb ... 270s Unpacking gcc-14-base:ppc64el (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 270s Setting up gcc-14-base:ppc64el (14-20240315-1ubuntu1) ... 270s (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 ... 70151 files and directories currently installed.) 270s Preparing to unpack .../libstdc++6_14-20240315-1ubuntu1_ppc64el.deb ... 270s Unpacking libstdc++6:ppc64el (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 270s Setting up libstdc++6:ppc64el (14-20240315-1ubuntu1) ... 270s (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 ... 70151 files and directories currently installed.) 270s Preparing to unpack .../libgcc-s1_14-20240315-1ubuntu1_ppc64el.deb ... 270s Unpacking libgcc-s1:ppc64el (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 270s Setting up libgcc-s1:ppc64el (14-20240315-1ubuntu1) ... 270s (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 ... 70151 files and directories currently installed.) 270s Preparing to unpack .../libpam-runtime_1.5.3-5ubuntu3_all.deb ... 270s Unpacking libpam-runtime (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 270s Setting up libpam-runtime (1.5.3-5ubuntu3) ... 270s (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 ... 70151 files and directories currently installed.) 270s Preparing to unpack .../libseccomp2_2.5.5-1ubuntu2_ppc64el.deb ... 270s Unpacking libseccomp2:ppc64el (2.5.5-1ubuntu2) over (2.5.5-1ubuntu1) ... 270s Setting up libseccomp2:ppc64el (2.5.5-1ubuntu2) ... 270s (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 ... 70151 files and directories currently installed.) 270s Preparing to unpack .../00-libdevmapper1.02.1_2%3a1.02.185-3ubuntu2_ppc64el.deb ... 270s Unpacking libdevmapper1.02.1:ppc64el (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 270s Preparing to unpack .../01-dmsetup_2%3a1.02.185-3ubuntu2_ppc64el.deb ... 270s Unpacking dmsetup (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 270s Preparing to unpack .../02-libexpat1_2.6.1-2_ppc64el.deb ... 270s Unpacking libexpat1:ppc64el (2.6.1-2) over (2.6.0-1) ... 271s Preparing to unpack .../03-python3-yaml_6.0.1-2build1_ppc64el.deb ... 271s Unpacking python3-yaml (6.0.1-2build1) over (6.0.1-2) ... 271s Preparing to unpack .../04-libusb-1.0-0_2%3a1.0.27-1_ppc64el.deb ... 271s Unpacking libusb-1.0-0:ppc64el (2:1.0.27-1) over (2:1.0.26-1) ... 271s Preparing to unpack .../05-libctf0_2.42-4ubuntu1_ppc64el.deb ... 271s Unpacking libctf0:ppc64el (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 271s Preparing to unpack .../06-libctf-nobfd0_2.42-4ubuntu1_ppc64el.deb ... 271s Unpacking libctf-nobfd0:ppc64el (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 271s Preparing to unpack .../07-binutils-powerpc64le-linux-gnu_2.42-4ubuntu1_ppc64el.deb ... 271s Unpacking binutils-powerpc64le-linux-gnu (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 271s Preparing to unpack .../08-libbinutils_2.42-4ubuntu1_ppc64el.deb ... 271s Unpacking libbinutils:ppc64el (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 271s Preparing to unpack .../09-binutils_2.42-4ubuntu1_ppc64el.deb ... 271s Unpacking binutils (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 271s Preparing to unpack .../10-binutils-common_2.42-4ubuntu1_ppc64el.deb ... 271s Unpacking binutils-common:ppc64el (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 271s Preparing to unpack .../11-libsframe1_2.42-4ubuntu1_ppc64el.deb ... 271s Unpacking libsframe1:ppc64el (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 271s Preparing to unpack .../12-gcc-13-base_13.2.0-21ubuntu1_ppc64el.deb ... 271s Unpacking gcc-13-base:ppc64el (13.2.0-21ubuntu1) over (13.2.0-17ubuntu2) ... 271s Preparing to unpack .../13-initramfs-tools_0.142ubuntu23_all.deb ... 271s Unpacking initramfs-tools (0.142ubuntu23) over (0.142ubuntu20) ... 271s Preparing to unpack .../14-initramfs-tools-core_0.142ubuntu23_all.deb ... 271s Unpacking initramfs-tools-core (0.142ubuntu23) over (0.142ubuntu20) ... 271s Preparing to unpack .../15-initramfs-tools-bin_0.142ubuntu23_ppc64el.deb ... 271s Unpacking initramfs-tools-bin (0.142ubuntu23) over (0.142ubuntu20) ... 271s Preparing to unpack .../16-jq_1.7.1-3_ppc64el.deb ... 271s Unpacking jq (1.7.1-3) over (1.7.1-2) ... 271s Preparing to unpack .../17-libjq1_1.7.1-3_ppc64el.deb ... 271s Unpacking libjq1:ppc64el (1.7.1-3) over (1.7.1-2) ... 271s Preparing to unpack .../18-libftdi1-2_1.5-6build4_ppc64el.deb ... 271s Unpacking libftdi1-2:ppc64el (1.5-6build4) over (1.5-6build3) ... 271s Setting up libexpat1:ppc64el (2.6.1-2) ... 271s Setting up libjq1:ppc64el (1.7.1-3) ... 271s Setting up binutils-common:ppc64el (2.42-4ubuntu1) ... 271s Setting up libctf-nobfd0:ppc64el (2.42-4ubuntu1) ... 271s Setting up python3-yaml (6.0.1-2build1) ... 271s Setting up libsframe1:ppc64el (2.42-4ubuntu1) ... 271s Setting up gcc-13-base:ppc64el (13.2.0-21ubuntu1) ... 271s Setting up libdevmapper1.02.1:ppc64el (2:1.02.185-3ubuntu2) ... 271s Setting up dmsetup (2:1.02.185-3ubuntu2) ... 271s Setting up jq (1.7.1-3) ... 271s Setting up libusb-1.0-0:ppc64el (2:1.0.27-1) ... 271s Setting up libbinutils:ppc64el (2.42-4ubuntu1) ... 271s Setting up initramfs-tools-bin (0.142ubuntu23) ... 271s Setting up libctf0:ppc64el (2.42-4ubuntu1) ... 271s Setting up libftdi1-2:ppc64el (1.5-6build4) ... 271s Setting up binutils-powerpc64le-linux-gnu (2.42-4ubuntu1) ... 271s Setting up initramfs-tools-core (0.142ubuntu23) ... 271s Setting up initramfs-tools (0.142ubuntu23) ... 271s update-initramfs: deferring update (trigger activated) 271s Setting up binutils (2.42-4ubuntu1) ... 271s Processing triggers for libc-bin (2.39-0ubuntu6) ... 271s Processing triggers for man-db (2.12.0-3) ... 272s Processing triggers for initramfs-tools (0.142ubuntu23) ... 272s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 272s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 278s Reading package lists... 278s Building dependency tree... 278s Reading state information... 278s 0 upgraded, 0 newly installed, 0 to remove and 221 not upgraded. 279s Hit:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease 279s Hit:2 http://ftpmaster.internal/ubuntu noble InRelease 279s Hit:3 http://ftpmaster.internal/ubuntu noble-updates InRelease 279s Hit:4 http://ftpmaster.internal/ubuntu noble-security InRelease 280s Reading package lists... 280s Reading package lists... 280s Building dependency tree... 280s Reading state information... 281s Calculating upgrade... 281s The following packages were automatically installed and are no longer required: 281s libaio1 libnetplan0 python3-distutils python3-lib2to3 281s Use 'sudo apt autoremove' to remove them. 281s The following packages will be REMOVED: 281s libapt-pkg6.0 libarchive13 libatm1 libcurl3-gnutls libcurl4 libdb5.3 libelf1 281s libext2fs2 libgdbm-compat4 libgdbm6 libglib2.0-0 libgnutls30 libgpgme11 281s libhogweed6 libmagic1 libnettle8 libnpth0 libnvme1 libparted2 libperl5.38 281s libpng16-16 libpsl5 libreadline8 libreiserfscore0 libssl3 libtirpc3 liburcu8 281s libuv1 281s The following NEW packages will be installed: 281s bpfcc-tools bpftrace fontconfig-config fonts-dejavu-core fonts-dejavu-mono 281s ieee-data libaio1t64 libapt-pkg6.0t64 libarchive13t64 libatm1t64 libbpfcc 281s libc-dev-bin libc-devtools libc6-dev libclang-cpp18 libclang1-18 281s libcrypt-dev libcurl3t64-gnutls libcurl4t64 libdb5.3t64 libdeflate0 281s libdw1t64 libelf1t64 libext2fs2t64 libfontconfig1 libgd3 libgdbm-compat4t64 281s libgdbm6t64 libglib2.0-0t64 libgnutls30t64 libgpgme11t64 libhogweed6t64 281s libjbig0 libjpeg-turbo8 libjpeg8 liblerc4 libllvm18 libmagic1t64 libnetplan1 281s libnettle8t64 libnpth0t64 libnvme1t64 libparted2t64 libperl5.38t64 281s libpng16-16t64 libpsl5t64 libreadline8t64 libreiserfscore0t64 libsharpyuv0 281s libssl3t64 libtiff6 libtirpc3t64 libunwind8 liburcu8t64 libuv1t64 libwebp7 281s libxpm4 linux-headers-6.8.0-20 linux-headers-6.8.0-20-generic 281s linux-image-6.8.0-20-generic linux-libc-dev linux-modules-6.8.0-20-generic 281s linux-modules-extra-6.8.0-20-generic linux-tools-6.8.0-20 281s linux-tools-6.8.0-20-generic linux-tools-common manpages manpages-dev 281s python3-bpfcc python3-netaddr rpcsvc-proto ubuntu-kernel-accessories 281s xdg-user-dirs 281s The following packages will be upgraded: 281s apparmor apt apt-utils base-files bash bc bind9-dnsutils bind9-host 281s bind9-libs bolt bsdextrautils bsdutils btrfs-progs coreutils cryptsetup-bin 281s curl dbus dbus-bin dbus-daemon dbus-session-bus-common 281s dbus-system-bus-common dbus-user-session dhcpcd-base dirmngr dpkg dpkg-dev 281s e2fsprogs e2fsprogs-l10n eject fdisk file ftp fwupd gawk 281s gir1.2-girepository-2.0 gir1.2-glib-2.0 gnupg gnupg-l10n gnupg-utils gpg 281s gpg-agent gpg-wks-client gpgconf gpgsm gpgv groff-base grub-common 281s grub-ieee1275 grub-ieee1275-bin grub2-common ibverbs-providers 281s inetutils-telnet info install-info iproute2 keyboxd kmod kpartx krb5-locales 281s libapparmor1 libaudit-common libaudit1 libblkid1 libblockdev-crypto3 281s libblockdev-fs3 libblockdev-loop3 libblockdev-mdraid3 libblockdev-nvme3 281s libblockdev-part3 libblockdev-swap3 libblockdev-utils3 libblockdev3 libbpf1 281s libbrotli1 libcap-ng0 libcom-err2 libcryptsetup12 libdbus-1-3 281s libdebconfclient0 libdpkg-perl libevent-core-2.1-7 libfdisk1 libfido2-1 281s libfreetype6 libfwupd2 libgirepository-1.0-1 libglib2.0-data 281s libgssapi-krb5-2 libgudev-1.0-0 libgusb2 libibverbs1 libjcat1 281s libjson-glib-1.0-0 libjson-glib-1.0-common libk5crypto3 libkmod2 libkrb5-3 281s libkrb5support0 libldap-common libldap2 liblocale-gettext-perl liblzma5 281s libmagic-mgc libmbim-glib4 libmbim-proxy libmm-glib0 libmount1 libnghttp2-14 281s libnsl2 libnss-systemd libpam-systemd libplymouth5 libpolkit-agent-1-0 281s libpolkit-gobject-1-0 libproc2-0 libprotobuf-c1 libpython3-stdlib 281s libpython3.11-minimal libpython3.11-stdlib libpython3.12-minimal 281s libpython3.12-stdlib libqmi-glib5 libqmi-proxy libqrtr-glib0 librtmp1 281s libsasl2-2 libsasl2-modules libsasl2-modules-db libselinux1 281s libsemanage-common libsemanage2 libslang2 libsmartcols1 libsqlite3-0 libss2 281s libssh-4 libsystemd-shared libsystemd0 libtext-charwidth-perl 281s libtext-iconv-perl libtirpc-common libudev1 libudisks2-0 libuuid1 281s libvolume-key1 libxml2 libxmlb2 libxmuu1 linux-generic linux-headers-generic 281s linux-headers-virtual linux-image-generic linux-image-virtual linux-virtual 281s logsave lshw lsof man-db motd-news-config mount mtr-tiny multipath-tools 281s netplan-generator netplan.io openssh-client openssh-server 281s openssh-sftp-server openssl parted perl perl-base perl-modules-5.38 281s pinentry-curses plymouth plymouth-theme-ubuntu-text procps python-apt-common 281s python3 python3-apt python3-cryptography python3-dbus python3-distutils 281s python3-gdbm python3-gi python3-lib2to3 python3-minimal python3-netplan 281s python3-pkg-resources python3-pyrsistent python3-setuptools 281s python3-typing-extensions python3.11 python3.11-minimal python3.12 281s python3.12-minimal readline-common rsync rsyslog shared-mime-info sudo 281s systemd systemd-dev systemd-resolved systemd-sysv systemd-timesyncd tcpdump 281s telnet tnftp ubuntu-pro-client ubuntu-pro-client-l10n udev udisks2 usb.ids 281s util-linux uuid-runtime vim-common vim-tiny wget xxd xz-utils zlib1g 281s 221 upgraded, 73 newly installed, 28 to remove and 0 not upgraded. 281s Need to get 384 MB of archives. 281s After this operation, 640 MB of additional disk space will be used. 281s Get:1 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el motd-news-config all 13ubuntu8 [5098 B] 281s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el base-files ppc64el 13ubuntu8 [74.5 kB] 281s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bash ppc64el 5.2.21-2ubuntu3 [977 kB] 282s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bsdutils ppc64el 1:2.39.3-9ubuntu2 [98.3 kB] 282s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el coreutils ppc64el 9.4-3ubuntu3 [1523 kB] 282s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libudisks2-0 ppc64el 2.10.1-6 [182 kB] 282s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el udisks2 ppc64el 2.10.1-6 [344 kB] 282s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el shared-mime-info ppc64el 2.4-1build1 [481 kB] 282s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gir1.2-girepository-2.0 ppc64el 1.79.1-1ubuntu6 [24.8 kB] 282s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gir1.2-glib-2.0 ppc64el 2.79.3-3ubuntu5 [182 kB] 283s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgirepository-1.0-1 ppc64el 1.79.1-1ubuntu6 [93.8 kB] 283s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-gi ppc64el 3.47.0-3build1 [261 kB] 283s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-dbus ppc64el 1.3.2-5build2 [107 kB] 283s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnetplan1 ppc64el 1.0-1 [136 kB] 283s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-netplan ppc64el 1.0-1 [21.8 kB] 283s Get:16 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el netplan-generator ppc64el 1.0-1 [59.2 kB] 283s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el netplan.io ppc64el 1.0-1 [66.2 kB] 283s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libxmlb2 ppc64el 0.3.15-1build1 [82.6 kB] 283s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgpgme11t64 ppc64el 1.18.0-4.1ubuntu3 [173 kB] 283s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libvolume-key1 ppc64el 0.3.12-7build1 [47.9 kB] 283s Get:21 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libqrtr-glib0 ppc64el 1.2.2-1ubuntu3 [18.3 kB] 283s Get:22 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libqmi-glib5 ppc64el 1.35.2-0ubuntu1 [966 kB] 283s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libqmi-proxy ppc64el 1.35.2-0ubuntu1 [6208 B] 283s Get:24 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpolkit-agent-1-0 ppc64el 124-1ubuntu1 [18.8 kB] 283s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpolkit-gobject-1-0 ppc64el 124-1ubuntu1 [52.7 kB] 283s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmm-glib0 ppc64el 1.23.4-0ubuntu1 [282 kB] 283s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmbim-glib4 ppc64el 1.31.2-0ubuntu2 [253 kB] 283s Get:28 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmbim-proxy ppc64el 1.31.2-0ubuntu2 [6274 B] 283s Get:29 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libjson-glib-1.0-common all 1.8.0-2build1 [4210 B] 283s Get:30 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libjson-glib-1.0-0 ppc64el 1.8.0-2build1 [73.6 kB] 283s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgusb2 ppc64el 0.4.8-1build1 [43.0 kB] 283s Get:32 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgudev-1.0-0 ppc64el 1:238-3ubuntu2 [15.8 kB] 283s Get:33 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el tnftp ppc64el 20230507-2build1 [116 kB] 283s Get:34 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el tcpdump ppc64el 4.99.4-3ubuntu2 [543 kB] 284s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsystemd0 ppc64el 255.4-1ubuntu5 [526 kB] 284s Get:36 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el systemd-dev all 255.4-1ubuntu5 [103 kB] 284s Get:37 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnss-systemd ppc64el 255.4-1ubuntu5 [208 kB] 284s Get:38 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libudev1 ppc64el 255.4-1ubuntu5 [200 kB] 284s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libssl3t64 ppc64el 3.0.13-0ubuntu2 [2125 kB] 285s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el systemd ppc64el 255.4-1ubuntu5 [3771 kB] 286s Get:41 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el udev ppc64el 255.4-1ubuntu5 [2038 kB] 287s Get:42 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el systemd-sysv ppc64el 255.4-1ubuntu5 [11.9 kB] 287s Get:43 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpam-systemd ppc64el 255.4-1ubuntu5 [304 kB] 287s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el systemd-timesyncd ppc64el 255.4-1ubuntu5 [37.9 kB] 287s Get:45 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsystemd-shared ppc64el 255.4-1ubuntu5 [2351 kB] 287s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el systemd-resolved ppc64el 255.4-1ubuntu5 [346 kB] 288s Get:47 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el sudo ppc64el 1.9.15p5-3ubuntu3 [1005 kB] 288s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el rsync ppc64el 3.2.7-1build1 [487 kB] 288s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-cryptography ppc64el 41.0.7-4build2 [860 kB] 288s Get:50 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el openssl ppc64el 3.0.13-0ubuntu2 [1026 kB] 289s Get:51 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el openssh-sftp-server ppc64el 1:9.6p1-3ubuntu11 [43.7 kB] 289s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el openssh-client ppc64el 1:9.6p1-3ubuntu11 [1112 kB] 289s Get:53 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el openssh-server ppc64el 1:9.6p1-3ubuntu11 [627 kB] 289s Get:54 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libssh-4 ppc64el 0.10.6-2build1 [234 kB] 289s Get:55 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsasl2-modules ppc64el 2.1.28+dfsg1-5ubuntu1 [83.1 kB] 289s Get:56 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3.12 ppc64el 3.12.2-4build3 [645 kB] 289s Get:57 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3.12-minimal ppc64el 3.12.2-4build3 [2447 kB] 290s Get:58 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpython3.12-minimal ppc64el 3.12.2-4build3 [836 kB] 290s Get:59 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el grub-ieee1275 ppc64el 2.12-1ubuntu5 [63.1 kB] 290s Get:60 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el grub2-common ppc64el 2.12-1ubuntu5 [752 kB] 290s Get:61 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el grub-common ppc64el 2.12-1ubuntu5 [2356 kB] 291s Get:62 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el grub-ieee1275-bin ppc64el 2.12-1ubuntu5 [687 kB] 291s Get:63 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libparted2t64 ppc64el 3.6-3.1build2 [184 kB] 291s Get:64 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el parted ppc64el 3.6-3.1build2 [58.9 kB] 291s Get:65 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3.11 ppc64el 3.11.8-1build4 [589 kB] 291s Get:66 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3.11-minimal ppc64el 3.11.8-1build4 [2292 kB] 292s Get:67 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpython3.11-minimal ppc64el 3.11.8-1build4 [846 kB] 292s Get:68 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpython3.11-stdlib ppc64el 3.11.8-1build4 [1977 kB] 293s Get:69 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gnupg-utils ppc64el 2.4.4-2ubuntu15 [123 kB] 293s Get:70 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpg-agent ppc64el 2.4.4-2ubuntu15 [275 kB] 293s Get:71 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpg-wks-client ppc64el 2.4.4-2ubuntu15 [85.0 kB] 293s Get:72 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpg ppc64el 2.4.4-2ubuntu15 [706 kB] 293s Get:73 http://ftpmaster.internal/ubuntu noble/main ppc64el libnpth0t64 ppc64el 1.6-3.1 [8864 B] 293s Get:74 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpgv ppc64el 2.4.4-2ubuntu15 [198 kB] 293s Get:75 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dirmngr ppc64el 2.4.4-2ubuntu15 [391 kB] 293s Get:76 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gnupg all 2.4.4-2ubuntu15 [359 kB] 294s Get:77 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el keyboxd ppc64el 2.4.4-2ubuntu15 [94.3 kB] 294s Get:78 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpgconf ppc64el 2.4.4-2ubuntu15 [115 kB] 294s Get:79 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpgsm ppc64el 2.4.4-2ubuntu15 [292 kB] 294s Get:80 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libreadline8t64 ppc64el 8.2-4 [182 kB] 294s Get:81 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gawk ppc64el 1:5.2.1-2build2 [528 kB] 294s Get:82 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el fdisk ppc64el 2.39.3-9ubuntu2 [132 kB] 294s Get:83 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bc ppc64el 1.07.1-3ubuntu2 [93.2 kB] 294s Get:84 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpython3.12-stdlib ppc64el 3.12.2-4build3 [2082 kB] 294s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el perl-base ppc64el 5.38.2-3.2 [1916 kB] 294s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el perl-modules-5.38 all 5.38.2-3.2 [3110 kB] 295s Get:87 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-gdbm ppc64el 3.12.2-3ubuntu1.1 [19.8 kB] 295s Get:88 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el man-db ppc64el 2.12.0-3build4 [1274 kB] 295s Get:89 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgdbm6t64 ppc64el 1.23-5.1 [41.9 kB] 295s Get:90 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgdbm-compat4t64 ppc64el 1.23-5.1 [6972 B] 295s Get:91 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libperl5.38t64 ppc64el 5.38.2-3.2 [4957 kB] 296s Get:92 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el perl ppc64el 5.38.2-3.2 [231 kB] 296s Get:93 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libdb5.3t64 ppc64el 5.3.28+dfsg2-6 [875 kB] 296s Get:94 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsasl2-modules-db ppc64el 2.1.28+dfsg1-5ubuntu1 [23.4 kB] 296s Get:95 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsasl2-2 ppc64el 2.1.28+dfsg1-5ubuntu1 [68.0 kB] 296s Get:96 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnvme1t64 ppc64el 1.8-3 [98.2 kB] 296s Get:97 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el wget ppc64el 1.21.4-1ubuntu2 [382 kB] 296s Get:98 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcurl4t64 ppc64el 8.5.0-2ubuntu8 [428 kB] 296s Get:99 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el curl ppc64el 8.5.0-2ubuntu8 [234 kB] 296s Get:100 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpsl5t64 ppc64el 0.21.2-1.1 [59.0 kB] 296s Get:101 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libarchive13t64 ppc64el 3.7.2-1.1ubuntu2 [518 kB] 296s Get:102 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el fwupd ppc64el 1.9.15-2 [4634 kB] 297s Get:103 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcurl3t64-gnutls ppc64el 8.5.0-2ubuntu8 [419 kB] 297s Get:104 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libfwupd2 ppc64el 1.9.15-2 [136 kB] 297s Get:105 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev3 ppc64el 3.1.0-1build1 [55.2 kB] 297s Get:106 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-utils3 ppc64el 3.1.0-1build1 [20.3 kB] 297s Get:107 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-swap3 ppc64el 3.1.0-1build1 [8616 B] 297s Get:108 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-part3 ppc64el 3.1.0-1build1 [17.5 kB] 297s Get:109 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-nvme3 ppc64el 3.1.0-1build1 [20.1 kB] 297s Get:110 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-mdraid3 ppc64el 3.1.0-1build1 [14.3 kB] 297s Get:111 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-loop3 ppc64el 3.1.0-1build1 [7742 B] 297s Get:112 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el logsave ppc64el 1.47.0-2.4~exp1ubuntu2 [22.9 kB] 298s Get:113 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el e2fsprogs-l10n all 1.47.0-2.4~exp1ubuntu2 [5996 B] 298s Get:114 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libext2fs2t64 ppc64el 1.47.0-2.4~exp1ubuntu2 [270 kB] 298s Get:115 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el e2fsprogs ppc64el 1.47.0-2.4~exp1ubuntu2 [663 kB] 298s Get:116 http://ftpmaster.internal/ubuntu noble/main ppc64el libreiserfscore0t64 ppc64el 1:3.6.27-7.1 [92.7 kB] 298s Get:117 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el btrfs-progs ppc64el 6.6.3-1.1build1 [1352 kB] 298s Get:118 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-fs3 ppc64el 3.1.0-1build1 [41.2 kB] 298s Get:119 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-crypto3 ppc64el 3.1.0-1build1 [22.5 kB] 298s Get:120 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bolt ppc64el 0.9.6-2build1 [171 kB] 298s Get:121 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libglib2.0-0t64 ppc64el 2.79.3-3ubuntu5 [1773 kB] 298s Get:122 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libjcat1 ppc64el 0.2.0-2build2 [40.0 kB] 298s Get:123 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libldap2 ppc64el 2.6.7+dfsg-1~exp1ubuntu6 [233 kB] 298s Get:124 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el ubuntu-pro-client-l10n ppc64el 31.2.2 [19.4 kB] 298s Get:125 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el ubuntu-pro-client ppc64el 31.2.2 [215 kB] 298s Get:126 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-apt ppc64el 2.7.7 [181 kB] 298s Get:127 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el apt-utils ppc64el 2.7.14 [226 kB] 298s Get:128 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libapt-pkg6.0t64 ppc64el 2.7.14 [1063 kB] 298s Get:129 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnettle8t64 ppc64el 3.9.1-2.2 [226 kB] 298s Get:130 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libhogweed6t64 ppc64el 3.9.1-2.2 [208 kB] 298s Get:131 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgnutls30t64 ppc64el 3.8.3-1.1ubuntu2 [1154 kB] 298s Get:132 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el apt ppc64el 2.7.14 [1401 kB] 299s Get:133 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el librtmp1 ppc64el 2.4+20151223.gitfa8646d.1-2build6 [64.4 kB] 299s Get:134 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el liblzma5 ppc64el 5.6.0-0.2 [156 kB] 299s Get:135 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblkid1 ppc64el 2.39.3-9ubuntu2 [155 kB] 299s Get:136 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el kmod ppc64el 31+20240202-2ubuntu4 [122 kB] 299s Get:137 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libkmod2 ppc64el 31+20240202-2ubuntu4 [64.4 kB] 299s Get:138 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libselinux1 ppc64el 3.5-2ubuntu1 [101 kB] 299s Get:139 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus-session-bus-common all 1.14.10-4ubuntu2 [80.3 kB] 299s Get:140 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus-user-session ppc64el 1.14.10-4ubuntu2 [9960 B] 299s Get:141 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libapparmor1 ppc64el 4.0.0-beta3-0ubuntu2 [55.0 kB] 299s Get:142 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libaudit-common all 1:3.1.2-2.1 [5674 B] 299s Get:143 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcap-ng0 ppc64el 0.8.4-2build1 [16.2 kB] 299s Get:144 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libaudit1 ppc64el 1:3.1.2-2.1 [52.8 kB] 299s Get:145 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus-system-bus-common all 1.14.10-4ubuntu2 [81.5 kB] 299s Get:146 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus-bin ppc64el 1.14.10-4ubuntu2 [48.1 kB] 299s Get:147 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus ppc64el 1.14.10-4ubuntu2 [26.9 kB] 299s Get:148 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus-daemon ppc64el 1.14.10-4ubuntu2 [136 kB] 299s Get:149 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libdbus-1-3 ppc64el 1.14.10-4ubuntu2 [244 kB] 299s Get:150 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libuuid1 ppc64el 2.39.3-9ubuntu2 [39.3 kB] 299s Get:151 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcryptsetup12 ppc64el 2:2.7.0-1ubuntu2 [376 kB] 299s Get:152 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libfdisk1 ppc64el 2.39.3-9ubuntu2 [171 kB] 299s Get:153 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el mount ppc64el 2.39.3-9ubuntu2 [125 kB] 299s Get:154 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmount1 ppc64el 2.39.3-9ubuntu2 [169 kB] 299s Get:155 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el zlib1g ppc64el 1:1.3.dfsg-3.1ubuntu1 [72.8 kB] 299s Get:156 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-minimal ppc64el 3.12.2-0ubuntu1 [27.1 kB] 299s Get:157 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3 ppc64el 3.12.2-0ubuntu1 [24.1 kB] 299s Get:158 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libplymouth5 ppc64el 24.004.60-1ubuntu6 [166 kB] 299s Get:159 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpng16-16t64 ppc64el 1.6.43-3 [242 kB] 299s Get:160 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libbrotli1 ppc64el 1.1.0-2build1 [410 kB] 299s Get:161 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libfreetype6 ppc64el 2.13.2+dfsg-1build2 [545 kB] 299s Get:162 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsqlite3-0 ppc64el 3.45.1-1ubuntu1 [804 kB] 299s Get:163 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el pinentry-curses ppc64el 1.2.1-3ubuntu4 [38.7 kB] 299s Get:164 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python-apt-common all 2.7.7 [19.8 kB] 299s Get:165 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsmartcols1 ppc64el 2.39.3-9ubuntu2 [79.0 kB] 299s Get:166 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el readline-common all 8.2-4 [56.4 kB] 299s Get:167 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bsdextrautils ppc64el 2.39.3-9ubuntu2 [78.6 kB] 299s Get:168 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el groff-base ppc64el 1.23.0-3build1 [1112 kB] 299s Get:169 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpython3-stdlib ppc64el 3.12.2-0ubuntu1 [9798 B] 299s Get:170 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libfido2-1 ppc64el 1.14.0-1build1 [111 kB] 299s Get:171 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgssapi-krb5-2 ppc64el 1.20.1-6ubuntu1 [185 kB] 299s Get:172 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libkrb5-3 ppc64el 1.20.1-6ubuntu1 [432 kB] 299s Get:173 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libkrb5support0 ppc64el 1.20.1-6ubuntu1 [38.5 kB] 299s Get:174 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libk5crypto3 ppc64el 1.20.1-6ubuntu1 [108 kB] 299s Get:175 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcom-err2 ppc64el 1.47.0-2.4~exp1ubuntu2 [22.9 kB] 299s Get:176 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libproc2-0 ppc64el 2:4.0.4-4ubuntu2 [68.8 kB] 299s Get:177 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el procps ppc64el 2:4.0.4-4ubuntu2 [736 kB] 299s Get:178 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnghttp2-14 ppc64el 1.59.0-1build1 [89.0 kB] 299s Get:179 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dpkg ppc64el 1.22.6ubuntu5 [1343 kB] 299s Get:180 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el util-linux ppc64el 2.39.3-9ubuntu2 [1195 kB] 299s Get:181 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libxml2 ppc64el 2.9.14+dfsg-1.3ubuntu2 [840 kB] 299s Get:182 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libbpf1 ppc64el 1:1.3.0-2build1 [216 kB] 299s Get:183 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el iproute2 ppc64el 6.1.0-1ubuntu5 [1384 kB] 299s Get:184 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libelf1t64 ppc64el 0.190-1.1build2 [69.3 kB] 299s Get:185 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el file ppc64el 1:5.45-3 [22.7 kB] 299s Get:186 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmagic-mgc ppc64el 1:5.45-3 [307 kB] 299s Get:187 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmagic1t64 ppc64el 1:5.45-3 [106 kB] 299s Get:188 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtirpc-common all 1.3.4+ds-1.1 [8018 B] 299s Get:189 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el lsof ppc64el 4.95.0-1build2 [256 kB] 299s Get:190 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnsl2 ppc64el 1.3.0-3build2 [48.9 kB] 299s Get:191 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtirpc3t64 ppc64el 1.3.4+ds-1.1 [102 kB] 299s Get:192 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el multipath-tools ppc64el 0.9.4-5ubuntu6 [341 kB] 300s Get:193 http://ftpmaster.internal/ubuntu noble/main ppc64el liburcu8t64 ppc64el 0.14.0-3.1 [73.6 kB] 300s Get:194 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bind9-host ppc64el 1:9.18.24-0ubuntu3 [54.5 kB] 300s Get:195 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bind9-dnsutils ppc64el 1:9.18.24-0ubuntu3 [167 kB] 300s Get:196 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bind9-libs ppc64el 1:9.18.24-0ubuntu3 [1436 kB] 300s Get:197 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libuv1t64 ppc64el 1.48.0-1.1 [117 kB] 300s Get:198 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el liblocale-gettext-perl ppc64el 1.07-6ubuntu4 [16.1 kB] 300s Get:199 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el uuid-runtime ppc64el 2.39.3-9ubuntu2 [33.8 kB] 300s Get:200 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libdebconfclient0 ppc64el 0.271ubuntu2 [11.2 kB] 300s Get:201 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsemanage-common all 3.5-1build4 [10.1 kB] 300s Get:202 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsemanage2 ppc64el 3.5-1build4 [115 kB] 300s Get:203 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el install-info ppc64el 7.1-3build1 [64.5 kB] 300s Get:204 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libss2 ppc64el 1.47.0-2.4~exp1ubuntu2 [18.0 kB] 300s Get:205 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dhcpcd-base ppc64el 1:10.0.6-1ubuntu2 [276 kB] 300s Get:206 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el eject ppc64el 2.39.3-9ubuntu2 [28.2 kB] 300s Get:207 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el krb5-locales all 1.20.1-6ubuntu1 [13.8 kB] 300s Get:208 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libglib2.0-data all 2.79.3-3ubuntu5 [46.6 kB] 300s Get:209 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libslang2 ppc64el 2.3.3-3build1 [501 kB] 300s Get:210 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtext-charwidth-perl ppc64el 0.04-11build2 [9506 B] 300s Get:211 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtext-iconv-perl ppc64el 1.7-8build2 [13.7 kB] 300s Get:212 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-setuptools all 68.1.2-2ubuntu1 [396 kB] 300s Get:213 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-pkg-resources all 68.1.2-2ubuntu1 [168 kB] 300s Get:214 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el rsyslog ppc64el 8.2312.0-3ubuntu7 [629 kB] 300s Get:215 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el vim-tiny ppc64el 2:9.1.0016-1ubuntu6 [1042 kB] 300s Get:216 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el vim-common all 2:9.1.0016-1ubuntu6 [385 kB] 300s Get:217 http://ftpmaster.internal/ubuntu noble/main ppc64el xdg-user-dirs ppc64el 0.18-1 [20.0 kB] 300s Get:218 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el xxd ppc64el 2:9.1.0016-1ubuntu6 [63.7 kB] 300s Get:219 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el apparmor ppc64el 4.0.0-beta3-0ubuntu2 [747 kB] 300s Get:220 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el ftp all 20230507-2build1 [4724 B] 300s Get:221 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el inetutils-telnet ppc64el 2:2.5-3ubuntu3 [115 kB] 301s Get:222 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el info ppc64el 7.1-3build1 [188 kB] 301s Get:223 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libxmuu1 ppc64el 2:1.1.3-3build1 [9488 B] 301s Get:224 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el lshw ppc64el 02.19.git.2021.06.19.996aaad9c7-2build2 [334 kB] 301s Get:225 http://ftpmaster.internal/ubuntu noble/main ppc64el manpages all 6.05.01-1 [1340 kB] 301s Get:226 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el mtr-tiny ppc64el 0.95-1.1build1 [62.8 kB] 301s Get:227 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el plymouth-theme-ubuntu-text ppc64el 24.004.60-1ubuntu6 [11.1 kB] 301s Get:228 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el plymouth ppc64el 24.004.60-1ubuntu6 [155 kB] 301s Get:229 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el telnet all 0.17+2.5-3ubuntu3 [3682 B] 301s Get:230 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el usb.ids all 2024.03.18-1 [223 kB] 301s Get:231 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el xz-utils ppc64el 5.6.0-0.2 [281 kB] 301s Get:232 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libllvm18 ppc64el 1:18.1.2-1ubuntu2 [28.9 MB] 302s Get:233 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libclang-cpp18 ppc64el 1:18.1.2-1ubuntu2 [14.6 MB] 303s Get:234 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el libbpfcc ppc64el 0.29.1+ds-1ubuntu4 [707 kB] 303s Get:235 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el python3-bpfcc all 0.29.1+ds-1ubuntu4 [40.2 kB] 303s Get:236 http://ftpmaster.internal/ubuntu noble/main ppc64el ieee-data all 20220827.1 [2113 kB] 303s Get:237 http://ftpmaster.internal/ubuntu noble/main ppc64el python3-netaddr all 0.8.0-2ubuntu1 [319 kB] 303s Get:238 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el bpfcc-tools all 0.29.1+ds-1ubuntu4 [687 kB] 303s Get:239 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libclang1-18 ppc64el 1:18.1.2-1ubuntu2 [8725 kB] 304s Get:240 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libdw1t64 ppc64el 0.190-1.1build2 [301 kB] 304s Get:241 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el bpftrace ppc64el 0.20.2-1ubuntu1 [1058 kB] 304s Get:242 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el cryptsetup-bin ppc64el 2:2.7.0-1ubuntu2 [227 kB] 304s Get:243 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dpkg-dev all 1.22.6ubuntu5 [1074 kB] 304s Get:244 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libdpkg-perl all 1.22.6ubuntu5 [269 kB] 304s Get:245 http://ftpmaster.internal/ubuntu noble/main ppc64el fonts-dejavu-mono all 2.37-8 [502 kB] 304s Get:246 http://ftpmaster.internal/ubuntu noble/main ppc64el fonts-dejavu-core all 2.37-8 [835 kB] 304s Get:247 http://ftpmaster.internal/ubuntu noble/main ppc64el fontconfig-config ppc64el 2.15.0-1.1ubuntu1 [37.4 kB] 304s Get:248 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libprotobuf-c1 ppc64el 1.4.1-1ubuntu3 [25.9 kB] 304s Get:249 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gnupg-l10n all 2.4.4-2ubuntu15 [65.8 kB] 304s Get:250 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libibverbs1 ppc64el 50.0-2build1 [74.4 kB] 304s Get:251 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el ibverbs-providers ppc64el 50.0-2build1 [420 kB] 304s Get:252 http://ftpmaster.internal/ubuntu noble/main ppc64el libaio1t64 ppc64el 0.3.113-6 [8188 B] 304s Get:253 http://ftpmaster.internal/ubuntu noble/main ppc64el libatm1t64 ppc64el 1:2.5.1-5.1 [26.9 kB] 304s Get:254 http://ftpmaster.internal/ubuntu noble/main ppc64el libc-dev-bin ppc64el 2.39-0ubuntu6 [21.3 kB] 304s Get:255 http://ftpmaster.internal/ubuntu noble/main ppc64el libfontconfig1 ppc64el 2.15.0-1.1ubuntu1 [190 kB] 304s Get:256 http://ftpmaster.internal/ubuntu noble/main ppc64el libjpeg-turbo8 ppc64el 2.1.5-2ubuntu1 [212 kB] 304s Get:257 http://ftpmaster.internal/ubuntu noble/main ppc64el libjpeg8 ppc64el 8c-2ubuntu11 [2148 B] 304s Get:258 http://ftpmaster.internal/ubuntu noble/main ppc64el libdeflate0 ppc64el 1.19-1 [61.9 kB] 304s Get:259 http://ftpmaster.internal/ubuntu noble/main ppc64el libjbig0 ppc64el 2.1-6.1ubuntu1 [34.7 kB] 304s Get:260 http://ftpmaster.internal/ubuntu noble/main ppc64el liblerc4 ppc64el 4.0.0+ds-4ubuntu1 [266 kB] 304s Get:261 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsharpyuv0 ppc64el 1.3.2-0.4build2 [28.8 kB] 304s Get:262 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libwebp7 ppc64el 1.3.2-0.4build2 [312 kB] 304s Get:263 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtiff6 ppc64el 4.5.1+git230720-4ubuntu1 [274 kB] 304s Get:264 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libxpm4 ppc64el 1:3.5.17-1build1 [50.2 kB] 304s Get:265 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgd3 ppc64el 2.3.3-9ubuntu3 [162 kB] 304s Get:266 http://ftpmaster.internal/ubuntu noble/main ppc64el libc-devtools ppc64el 2.39-0ubuntu6 [29.6 kB] 304s Get:267 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-libc-dev ppc64el 6.8.0-20.20 [1586 kB] 304s Get:268 http://ftpmaster.internal/ubuntu noble/main ppc64el libcrypt-dev ppc64el 1:4.4.36-4 [167 kB] 304s Get:269 http://ftpmaster.internal/ubuntu noble/main ppc64el rpcsvc-proto ppc64el 1.4.2-0ubuntu6 [82.3 kB] 304s Get:270 http://ftpmaster.internal/ubuntu noble/main ppc64el libc6-dev ppc64el 2.39-0ubuntu6 [2102 kB] 304s Get:271 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libevent-core-2.1-7 ppc64el 2.1.12-stable-9build1 [110 kB] 304s Get:272 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libldap-common all 2.6.7+dfsg-1~exp1ubuntu6 [31.3 kB] 304s Get:273 http://ftpmaster.internal/ubuntu noble/main ppc64el libunwind8 ppc64el 1.6.2-3 [59.9 kB] 304s Get:274 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-modules-6.8.0-20-generic ppc64el 6.8.0-20.20 [31.3 MB] 306s Get:275 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-image-6.8.0-20-generic ppc64el 6.8.0-20.20 [63.9 MB] 308s Get:276 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-modules-extra-6.8.0-20-generic ppc64el 6.8.0-20.20 [103 MB] 313s Get:277 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-generic ppc64el 6.8.0-20.20+1 [1734 B] 313s Get:278 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-image-generic ppc64el 6.8.0-20.20+1 [9698 B] 313s Get:279 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-virtual ppc64el 6.8.0-20.20+1 [1686 B] 313s Get:280 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-image-virtual ppc64el 6.8.0-20.20+1 [9702 B] 313s Get:281 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-headers-virtual ppc64el 6.8.0-20.20+1 [1648 B] 313s Get:282 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-headers-6.8.0-20 all 6.8.0-20.20 [13.6 MB] 314s Get:283 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-headers-6.8.0-20-generic ppc64el 6.8.0-20.20 [3728 kB] 314s Get:284 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-headers-generic ppc64el 6.8.0-20.20+1 [9612 B] 314s Get:285 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-tools-common all 6.8.0-20.20 [437 kB] 314s Get:286 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-tools-6.8.0-20 ppc64el 6.8.0-20.20 [2924 kB] 315s Get:287 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-tools-6.8.0-20-generic ppc64el 6.8.0-20.20 [1730 B] 315s Get:288 http://ftpmaster.internal/ubuntu noble/main ppc64el manpages-dev all 6.05.01-1 [2018 kB] 315s Get:289 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-distutils all 3.12.2-3ubuntu1.1 [133 kB] 315s Get:290 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-lib2to3 all 3.12.2-3ubuntu1.1 [79.1 kB] 315s Get:291 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-pyrsistent ppc64el 0.20.0-1build1 [60.4 kB] 315s Get:292 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-typing-extensions all 4.10.0-1 [60.7 kB] 315s Get:293 http://ftpmaster.internal/ubuntu noble/main ppc64el ubuntu-kernel-accessories ppc64el 1.536build1 [10.5 kB] 315s Get:294 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el kpartx ppc64el 0.9.4-5ubuntu6 [34.4 kB] 316s Preconfiguring packages ... 316s Fetched 384 MB in 34s (11.3 MB/s) 316s (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 ... 70151 files and directories currently installed.) 316s Preparing to unpack .../motd-news-config_13ubuntu8_all.deb ... 316s Unpacking motd-news-config (13ubuntu8) over (13ubuntu7) ... 316s Preparing to unpack .../base-files_13ubuntu8_ppc64el.deb ... 316s Unpacking base-files (13ubuntu8) over (13ubuntu7) ... 316s Setting up base-files (13ubuntu8) ... 317s motd-news.service is a disabled or a static unit not running, not starting it. 317s (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 ... 70151 files and directories currently installed.) 317s Preparing to unpack .../bash_5.2.21-2ubuntu3_ppc64el.deb ... 317s Unpacking bash (5.2.21-2ubuntu3) over (5.2.21-2ubuntu2) ... 317s Setting up bash (5.2.21-2ubuntu3) ... 317s 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 317s (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 ... 70151 files and directories currently installed.) 317s Preparing to unpack .../bsdutils_1%3a2.39.3-9ubuntu2_ppc64el.deb ... 317s Unpacking bsdutils (1:2.39.3-9ubuntu2) over (1:2.39.3-6ubuntu2) ... 317s Setting up bsdutils (1:2.39.3-9ubuntu2) ... 317s (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 ... 70151 files and directories currently installed.) 317s Preparing to unpack .../coreutils_9.4-3ubuntu3_ppc64el.deb ... 317s Unpacking coreutils (9.4-3ubuntu3) over (9.4-2ubuntu4) ... 317s Setting up coreutils (9.4-3ubuntu3) ... 317s (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 ... 70151 files and directories currently installed.) 317s Preparing to unpack .../00-libudisks2-0_2.10.1-6_ppc64el.deb ... 317s Unpacking libudisks2-0:ppc64el (2.10.1-6) over (2.10.1-1ubuntu2) ... 317s Preparing to unpack .../01-udisks2_2.10.1-6_ppc64el.deb ... 317s Unpacking udisks2 (2.10.1-6) over (2.10.1-1ubuntu2) ... 317s Preparing to unpack .../02-shared-mime-info_2.4-1build1_ppc64el.deb ... 317s Unpacking shared-mime-info (2.4-1build1) over (2.4-1) ... 317s Preparing to unpack .../03-gir1.2-girepository-2.0_1.79.1-1ubuntu6_ppc64el.deb ... 317s Unpacking gir1.2-girepository-2.0:ppc64el (1.79.1-1ubuntu6) over (1.79.1-1) ... 317s Preparing to unpack .../04-gir1.2-glib-2.0_2.79.3-3ubuntu5_ppc64el.deb ... 317s Unpacking gir1.2-glib-2.0:ppc64el (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 317s Preparing to unpack .../05-libgirepository-1.0-1_1.79.1-1ubuntu6_ppc64el.deb ... 317s Unpacking libgirepository-1.0-1:ppc64el (1.79.1-1ubuntu6) over (1.79.1-1) ... 317s Preparing to unpack .../06-python3-gi_3.47.0-3build1_ppc64el.deb ... 317s Unpacking python3-gi (3.47.0-3build1) over (3.47.0-3) ... 317s Preparing to unpack .../07-python3-dbus_1.3.2-5build2_ppc64el.deb ... 317s Unpacking python3-dbus (1.3.2-5build2) over (1.3.2-5build1) ... 317s Selecting previously unselected package libnetplan1:ppc64el. 317s Preparing to unpack .../08-libnetplan1_1.0-1_ppc64el.deb ... 317s Unpacking libnetplan1:ppc64el (1.0-1) ... 317s Preparing to unpack .../09-python3-netplan_1.0-1_ppc64el.deb ... 317s Unpacking python3-netplan (1.0-1) over (0.107.1-3) ... 317s Preparing to unpack .../10-netplan-generator_1.0-1_ppc64el.deb ... 317s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 317s Unpacking netplan-generator (1.0-1) over (0.107.1-3) ... 317s Preparing to unpack .../11-netplan.io_1.0-1_ppc64el.deb ... 317s Unpacking netplan.io (1.0-1) over (0.107.1-3) ... 318s Preparing to unpack .../12-libxmlb2_0.3.15-1build1_ppc64el.deb ... 318s Unpacking libxmlb2:ppc64el (0.3.15-1build1) over (0.3.15-1) ... 318s dpkg: libgpgme11:ppc64el: dependency problems, but removing anyway as you requested: 318s libvolume-key1:ppc64el depends on libgpgme11 (>= 1.4.1). 318s libjcat1:ppc64el depends on libgpgme11 (>= 1.2.0). 318s 318s (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 ... 70154 files and directories currently installed.) 318s Removing libgpgme11:ppc64el (1.18.0-4ubuntu1) ... 318s Selecting previously unselected package libgpgme11t64:ppc64el. 318s (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 ... 70148 files and directories currently installed.) 318s Preparing to unpack .../00-libgpgme11t64_1.18.0-4.1ubuntu3_ppc64el.deb ... 318s Unpacking libgpgme11t64:ppc64el (1.18.0-4.1ubuntu3) ... 318s Preparing to unpack .../01-libvolume-key1_0.3.12-7build1_ppc64el.deb ... 318s Unpacking libvolume-key1:ppc64el (0.3.12-7build1) over (0.3.12-5build2) ... 318s Preparing to unpack .../02-libqrtr-glib0_1.2.2-1ubuntu3_ppc64el.deb ... 318s Unpacking libqrtr-glib0:ppc64el (1.2.2-1ubuntu3) over (1.2.2-1ubuntu2) ... 318s Preparing to unpack .../03-libqmi-glib5_1.35.2-0ubuntu1_ppc64el.deb ... 318s Unpacking libqmi-glib5:ppc64el (1.35.2-0ubuntu1) over (1.34.0-2) ... 318s Preparing to unpack .../04-libqmi-proxy_1.35.2-0ubuntu1_ppc64el.deb ... 318s Unpacking libqmi-proxy (1.35.2-0ubuntu1) over (1.34.0-2) ... 318s Preparing to unpack .../05-libpolkit-agent-1-0_124-1ubuntu1_ppc64el.deb ... 318s Unpacking libpolkit-agent-1-0:ppc64el (124-1ubuntu1) over (124-1) ... 318s Preparing to unpack .../06-libpolkit-gobject-1-0_124-1ubuntu1_ppc64el.deb ... 318s Unpacking libpolkit-gobject-1-0:ppc64el (124-1ubuntu1) over (124-1) ... 318s Preparing to unpack .../07-libmm-glib0_1.23.4-0ubuntu1_ppc64el.deb ... 318s Unpacking libmm-glib0:ppc64el (1.23.4-0ubuntu1) over (1.22.0-3) ... 318s Preparing to unpack .../08-libmbim-glib4_1.31.2-0ubuntu2_ppc64el.deb ... 318s Unpacking libmbim-glib4:ppc64el (1.31.2-0ubuntu2) over (1.30.0-1) ... 318s Preparing to unpack .../09-libmbim-proxy_1.31.2-0ubuntu2_ppc64el.deb ... 318s Unpacking libmbim-proxy (1.31.2-0ubuntu2) over (1.30.0-1) ... 318s Preparing to unpack .../10-libjson-glib-1.0-common_1.8.0-2build1_all.deb ... 318s Unpacking libjson-glib-1.0-common (1.8.0-2build1) over (1.8.0-2) ... 318s Preparing to unpack .../11-libjson-glib-1.0-0_1.8.0-2build1_ppc64el.deb ... 318s Unpacking libjson-glib-1.0-0:ppc64el (1.8.0-2build1) over (1.8.0-2) ... 318s Preparing to unpack .../12-libgusb2_0.4.8-1build1_ppc64el.deb ... 318s Unpacking libgusb2:ppc64el (0.4.8-1build1) over (0.4.8-1) ... 318s Preparing to unpack .../13-libgudev-1.0-0_1%3a238-3ubuntu2_ppc64el.deb ... 318s Unpacking libgudev-1.0-0:ppc64el (1:238-3ubuntu2) over (1:238-3) ... 318s Preparing to unpack .../14-tnftp_20230507-2build1_ppc64el.deb ... 318s Unpacking tnftp (20230507-2build1) over (20230507-2) ... 318s Preparing to unpack .../15-tcpdump_4.99.4-3ubuntu2_ppc64el.deb ... 318s Unpacking tcpdump (4.99.4-3ubuntu2) over (4.99.4-3ubuntu1) ... 318s Preparing to unpack .../16-libsystemd0_255.4-1ubuntu5_ppc64el.deb ... 318s Unpacking libsystemd0:ppc64el (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 318s Setting up libsystemd0:ppc64el (255.4-1ubuntu5) ... 318s (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 ... 70155 files and directories currently installed.) 318s Preparing to unpack .../systemd-dev_255.4-1ubuntu5_all.deb ... 318s Unpacking systemd-dev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 318s Preparing to unpack .../libnss-systemd_255.4-1ubuntu5_ppc64el.deb ... 318s Unpacking libnss-systemd:ppc64el (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 318s Preparing to unpack .../libudev1_255.4-1ubuntu5_ppc64el.deb ... 318s Unpacking libudev1:ppc64el (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 318s Setting up libudev1:ppc64el (255.4-1ubuntu5) ... 318s dpkg: libssl3:ppc64el: dependency problems, but removing anyway as you requested: 318s wget depends on libssl3 (>= 3.0.0). 318s systemd-resolved depends on libssl3 (>= 3.0.0). 318s systemd depends on libssl3 (>= 3.0.0). 318s sudo depends on libssl3 (>= 3.0.0). 318s rsync depends on libssl3 (>= 3.0.0). 318s python3-cryptography depends on libssl3 (>= 3.0.0). 318s openssl depends on libssl3 (>= 3.0.9). 318s openssh-server depends on libssl3 (>= 3.0.10). 318s openssh-client depends on libssl3 (>= 3.0.10). 318s linux-headers-6.8.0-11-generic depends on libssl3 (>= 3.0.0). 318s libsystemd-shared:ppc64el depends on libssl3 (>= 3.0.0). 318s libssh-4:ppc64el depends on libssl3 (>= 3.0.0). 318s libsasl2-modules:ppc64el depends on libssl3 (>= 3.0.0). 318s libsasl2-2:ppc64el depends on libssl3 (>= 3.0.0). 318s libpython3.12-minimal:ppc64el depends on libssl3 (>= 3.0.0). 318s libpython3.11-minimal:ppc64el depends on libssl3 (>= 3.0.0). 318s libnvme1 depends on libssl3 (>= 3.0.0). 318s libkrb5-3:ppc64el depends on libssl3 (>= 3.0.0). 318s libkmod2:ppc64el depends on libssl3 (>= 3.0.0). 318s libfido2-1:ppc64el depends on libssl3 (>= 3.0.0). 318s libcurl4:ppc64el depends on libssl3 (>= 3.0.0). 318s libcryptsetup12:ppc64el depends on libssl3 (>= 3.0.0). 318s kmod depends on libssl3 (>= 3.0.0). 318s dhcpcd-base depends on libssl3 (>= 3.0.0). 318s coreutils depends on libssl3 (>= 3.0.0). 318s bind9-libs:ppc64el depends on libssl3 (>= 3.0.0). 318s 318s (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 ... 70155 files and directories currently installed.) 318s Removing libssl3:ppc64el (3.0.10-1ubuntu4) ... 318s Selecting previously unselected package libssl3t64:ppc64el. 318s (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 ... 70144 files and directories currently installed.) 318s Preparing to unpack .../libssl3t64_3.0.13-0ubuntu2_ppc64el.deb ... 318s Unpacking libssl3t64:ppc64el (3.0.13-0ubuntu2) ... 318s Setting up libssl3t64:ppc64el (3.0.13-0ubuntu2) ... 318s (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 ... 70157 files and directories currently installed.) 318s Preparing to unpack .../systemd_255.4-1ubuntu5_ppc64el.deb ... 318s Unpacking systemd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 319s Preparing to unpack .../udev_255.4-1ubuntu5_ppc64el.deb ... 319s Unpacking udev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 319s Preparing to unpack .../libsystemd-shared_255.4-1ubuntu5_ppc64el.deb ... 319s Unpacking libsystemd-shared:ppc64el (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 319s Setting up libsystemd-shared:ppc64el (255.4-1ubuntu5) ... 319s Setting up systemd-dev (255.4-1ubuntu5) ... 319s Setting up systemd (255.4-1ubuntu5) ... 320s (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 ... 70157 files and directories currently installed.) 320s Preparing to unpack .../00-systemd-sysv_255.4-1ubuntu5_ppc64el.deb ... 320s Unpacking systemd-sysv (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 320s Preparing to unpack .../01-libpam-systemd_255.4-1ubuntu5_ppc64el.deb ... 320s Unpacking libpam-systemd:ppc64el (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 320s Preparing to unpack .../02-systemd-timesyncd_255.4-1ubuntu5_ppc64el.deb ... 320s Unpacking systemd-timesyncd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 320s Preparing to unpack .../03-systemd-resolved_255.4-1ubuntu5_ppc64el.deb ... 320s Unpacking systemd-resolved (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 320s Preparing to unpack .../04-sudo_1.9.15p5-3ubuntu3_ppc64el.deb ... 320s Unpacking sudo (1.9.15p5-3ubuntu3) over (1.9.15p5-3ubuntu1) ... 320s Preparing to unpack .../05-rsync_3.2.7-1build1_ppc64el.deb ... 320s Unpacking rsync (3.2.7-1build1) over (3.2.7-1) ... 320s Preparing to unpack .../06-python3-cryptography_41.0.7-4build2_ppc64el.deb ... 320s Unpacking python3-cryptography (41.0.7-4build2) over (41.0.7-3) ... 320s Preparing to unpack .../07-openssl_3.0.13-0ubuntu2_ppc64el.deb ... 320s Unpacking openssl (3.0.13-0ubuntu2) over (3.0.10-1ubuntu4) ... 320s Preparing to unpack .../08-openssh-sftp-server_1%3a9.6p1-3ubuntu11_ppc64el.deb ... 320s Unpacking openssh-sftp-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 320s Preparing to unpack .../09-openssh-client_1%3a9.6p1-3ubuntu11_ppc64el.deb ... 320s Unpacking openssh-client (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 320s Preparing to unpack .../10-openssh-server_1%3a9.6p1-3ubuntu11_ppc64el.deb ... 320s Unpacking openssh-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 320s Preparing to unpack .../11-libssh-4_0.10.6-2build1_ppc64el.deb ... 320s Unpacking libssh-4:ppc64el (0.10.6-2build1) over (0.10.6-2) ... 320s Preparing to unpack .../12-libsasl2-modules_2.1.28+dfsg1-5ubuntu1_ppc64el.deb ... 320s Unpacking libsasl2-modules:ppc64el (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 320s Preparing to unpack .../13-python3.12_3.12.2-4build3_ppc64el.deb ... 320s Unpacking python3.12 (3.12.2-4build3) over (3.12.2-1) ... 320s Preparing to unpack .../14-python3.12-minimal_3.12.2-4build3_ppc64el.deb ... 320s Unpacking python3.12-minimal (3.12.2-4build3) over (3.12.2-1) ... 320s Preparing to unpack .../15-libpython3.12-minimal_3.12.2-4build3_ppc64el.deb ... 321s Unpacking libpython3.12-minimal:ppc64el (3.12.2-4build3) over (3.12.2-1) ... 321s Preparing to unpack .../16-grub-ieee1275_2.12-1ubuntu5_ppc64el.deb ... 321s Unpacking grub-ieee1275 (2.12-1ubuntu5) over (2.12-1ubuntu4) ... 321s Preparing to unpack .../17-grub2-common_2.12-1ubuntu5_ppc64el.deb ... 321s Unpacking grub2-common (2.12-1ubuntu5) over (2.12-1ubuntu4) ... 321s Preparing to unpack .../18-grub-common_2.12-1ubuntu5_ppc64el.deb ... 321s Unpacking grub-common (2.12-1ubuntu5) over (2.12-1ubuntu4) ... 321s Preparing to unpack .../19-grub-ieee1275-bin_2.12-1ubuntu5_ppc64el.deb ... 321s Unpacking grub-ieee1275-bin (2.12-1ubuntu5) over (2.12-1ubuntu4) ... 321s dpkg: libparted2:ppc64el: dependency problems, but removing anyway as you requested: 321s parted depends on libparted2 (= 3.6-3). 321s 321s (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 ... 70157 files and directories currently installed.) 321s Removing libparted2:ppc64el (3.6-3) ... 321s Selecting previously unselected package libparted2t64:ppc64el. 321s (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 ... 70151 files and directories currently installed.) 321s Preparing to unpack .../0-libparted2t64_3.6-3.1build2_ppc64el.deb ... 321s Unpacking libparted2t64:ppc64el (3.6-3.1build2) ... 321s Preparing to unpack .../1-parted_3.6-3.1build2_ppc64el.deb ... 321s Unpacking parted (3.6-3.1build2) over (3.6-3) ... 321s Preparing to unpack .../2-python3.11_3.11.8-1build4_ppc64el.deb ... 321s Unpacking python3.11 (3.11.8-1build4) over (3.11.8-1) ... 321s Preparing to unpack .../3-python3.11-minimal_3.11.8-1build4_ppc64el.deb ... 321s Unpacking python3.11-minimal (3.11.8-1build4) over (3.11.8-1) ... 321s Preparing to unpack .../4-libpython3.11-minimal_3.11.8-1build4_ppc64el.deb ... 321s Unpacking libpython3.11-minimal:ppc64el (3.11.8-1build4) over (3.11.8-1) ... 321s Preparing to unpack .../5-libpython3.11-stdlib_3.11.8-1build4_ppc64el.deb ... 321s Unpacking libpython3.11-stdlib:ppc64el (3.11.8-1build4) over (3.11.8-1) ... 322s Preparing to unpack .../6-gnupg-utils_2.4.4-2ubuntu15_ppc64el.deb ... 322s Unpacking gnupg-utils (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 322s Preparing to unpack .../7-gpg-agent_2.4.4-2ubuntu15_ppc64el.deb ... 322s Unpacking gpg-agent (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 322s Preparing to unpack .../8-gpg-wks-client_2.4.4-2ubuntu15_ppc64el.deb ... 322s Unpacking gpg-wks-client (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 322s Preparing to unpack .../9-gpg_2.4.4-2ubuntu15_ppc64el.deb ... 322s Unpacking gpg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 322s dpkg: libnpth0:ppc64el: dependency problems, but removing anyway as you requested: 322s keyboxd depends on libnpth0 (>= 0.90). 322s gpgv depends on libnpth0 (>= 0.90). 322s gpgsm depends on libnpth0 (>= 0.90). 322s dirmngr depends on libnpth0 (>= 0.90). 322s 322s (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 ... 70156 files and directories currently installed.) 322s Removing libnpth0:ppc64el (1.6-3build2) ... 322s Selecting previously unselected package libnpth0t64:ppc64el. 322s (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 ... 70151 files and directories currently installed.) 322s Preparing to unpack .../libnpth0t64_1.6-3.1_ppc64el.deb ... 322s Unpacking libnpth0t64:ppc64el (1.6-3.1) ... 322s Setting up libnpth0t64:ppc64el (1.6-3.1) ... 322s (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 ... 70157 files and directories currently installed.) 322s Preparing to unpack .../gpgv_2.4.4-2ubuntu15_ppc64el.deb ... 322s Unpacking gpgv (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 322s Setting up gpgv (2.4.4-2ubuntu15) ... 322s (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 ... 70157 files and directories currently installed.) 322s Preparing to unpack .../dirmngr_2.4.4-2ubuntu15_ppc64el.deb ... 322s Unpacking dirmngr (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 322s Preparing to unpack .../gnupg_2.4.4-2ubuntu15_all.deb ... 322s Unpacking gnupg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 322s Preparing to unpack .../keyboxd_2.4.4-2ubuntu15_ppc64el.deb ... 322s Unpacking keyboxd (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 322s Preparing to unpack .../gpgconf_2.4.4-2ubuntu15_ppc64el.deb ... 322s Unpacking gpgconf (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 322s Preparing to unpack .../gpgsm_2.4.4-2ubuntu15_ppc64el.deb ... 322s Unpacking gpgsm (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 322s dpkg: libreadline8:ppc64el: dependency problems, but removing anyway as you requested: 322s libpython3.12-stdlib:ppc64el depends on libreadline8 (>= 7.0~beta). 322s gawk depends on libreadline8 (>= 6.0). 322s fdisk depends on libreadline8 (>= 6.0). 322s bc depends on libreadline8 (>= 6.0). 322s 322s (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 ... 70157 files and directories currently installed.) 322s Removing libreadline8:ppc64el (8.2-3) ... 322s Selecting previously unselected package libreadline8t64:ppc64el. 322s (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 ... 70145 files and directories currently installed.) 322s Preparing to unpack .../libreadline8t64_8.2-4_ppc64el.deb ... 322s Adding 'diversion of /lib/powerpc64le-linux-gnu/libhistory.so.8 to /lib/powerpc64le-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' 322s Adding 'diversion of /lib/powerpc64le-linux-gnu/libhistory.so.8.2 to /lib/powerpc64le-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' 322s Adding 'diversion of /lib/powerpc64le-linux-gnu/libreadline.so.8 to /lib/powerpc64le-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' 322s Adding 'diversion of /lib/powerpc64le-linux-gnu/libreadline.so.8.2 to /lib/powerpc64le-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' 322s Unpacking libreadline8t64:ppc64el (8.2-4) ... 322s Setting up libreadline8t64:ppc64el (8.2-4) ... 322s (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 ... 70165 files and directories currently installed.) 322s Preparing to unpack .../gawk_1%3a5.2.1-2build2_ppc64el.deb ... 322s Unpacking gawk (1:5.2.1-2build2) over (1:5.2.1-2) ... 322s Preparing to unpack .../fdisk_2.39.3-9ubuntu2_ppc64el.deb ... 322s Unpacking fdisk (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 322s Preparing to unpack .../bc_1.07.1-3ubuntu2_ppc64el.deb ... 322s Unpacking bc (1.07.1-3ubuntu2) over (1.07.1-3build1) ... 322s Preparing to unpack .../libpython3.12-stdlib_3.12.2-4build3_ppc64el.deb ... 322s Unpacking libpython3.12-stdlib:ppc64el (3.12.2-4build3) over (3.12.2-1) ... 322s Preparing to unpack .../perl-base_5.38.2-3.2_ppc64el.deb ... 322s Unpacking perl-base (5.38.2-3.2) over (5.38.2-3) ... 323s Setting up perl-base (5.38.2-3.2) ... 323s (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 ... 70163 files and directories currently installed.) 323s Preparing to unpack .../perl-modules-5.38_5.38.2-3.2_all.deb ... 323s Unpacking perl-modules-5.38 (5.38.2-3.2) over (5.38.2-3) ... 323s Preparing to unpack .../python3-gdbm_3.12.2-3ubuntu1.1_ppc64el.deb ... 323s Unpacking python3-gdbm:ppc64el (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 323s Preparing to unpack .../man-db_2.12.0-3build4_ppc64el.deb ... 323s Unpacking man-db (2.12.0-3build4) over (2.12.0-3) ... 323s dpkg: libgdbm-compat4:ppc64el: dependency problems, but removing anyway as you requested: 323s libperl5.38:ppc64el depends on libgdbm-compat4 (>= 1.18-3). 323s 323s (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 ... 70163 files and directories currently installed.) 323s Removing libgdbm-compat4:ppc64el (1.23-5) ... 323s dpkg: libgdbm6:ppc64el: dependency problems, but removing anyway as you requested: 323s libperl5.38:ppc64el depends on libgdbm6 (>= 1.21). 323s 323s Removing libgdbm6:ppc64el (1.23-5) ... 323s Selecting previously unselected package libgdbm6t64:ppc64el. 323s (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 ... 70153 files and directories currently installed.) 323s Preparing to unpack .../libgdbm6t64_1.23-5.1_ppc64el.deb ... 323s Unpacking libgdbm6t64:ppc64el (1.23-5.1) ... 323s Selecting previously unselected package libgdbm-compat4t64:ppc64el. 323s Preparing to unpack .../libgdbm-compat4t64_1.23-5.1_ppc64el.deb ... 323s Unpacking libgdbm-compat4t64:ppc64el (1.23-5.1) ... 323s dpkg: libperl5.38:ppc64el: dependency problems, but removing anyway as you requested: 323s perl depends on libperl5.38 (= 5.38.2-3). 323s 324s (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 ... 70165 files and directories currently installed.) 324s Removing libperl5.38:ppc64el (5.38.2-3) ... 324s Selecting previously unselected package libperl5.38t64:ppc64el. 324s (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 ... 69642 files and directories currently installed.) 324s Preparing to unpack .../libperl5.38t64_5.38.2-3.2_ppc64el.deb ... 324s Unpacking libperl5.38t64:ppc64el (5.38.2-3.2) ... 324s Preparing to unpack .../perl_5.38.2-3.2_ppc64el.deb ... 324s Unpacking perl (5.38.2-3.2) over (5.38.2-3) ... 324s dpkg: libdb5.3:ppc64el: dependency problems, but removing anyway as you requested: 324s libsasl2-modules-db:ppc64el depends on libdb5.3. 324s iproute2 depends on libdb5.3. 324s apt-utils depends on libdb5.3. 324s 324s (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 ... 70165 files and directories currently installed.) 324s Removing libdb5.3:ppc64el (5.3.28+dfsg2-4) ... 324s Selecting previously unselected package libdb5.3t64:ppc64el. 324s (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 ... 70159 files and directories currently installed.) 324s Preparing to unpack .../libdb5.3t64_5.3.28+dfsg2-6_ppc64el.deb ... 324s Unpacking libdb5.3t64:ppc64el (5.3.28+dfsg2-6) ... 324s Preparing to unpack .../libsasl2-modules-db_2.1.28+dfsg1-5ubuntu1_ppc64el.deb ... 324s Unpacking libsasl2-modules-db:ppc64el (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 324s Preparing to unpack .../libsasl2-2_2.1.28+dfsg1-5ubuntu1_ppc64el.deb ... 324s Unpacking libsasl2-2:ppc64el (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 324s dpkg: libnvme1: dependency problems, but removing anyway as you requested: 324s libblockdev-nvme3:ppc64el depends on libnvme1 (>= 1.7.1). 324s 324s (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 ... 70165 files and directories currently installed.) 324s Removing libnvme1 (1.8-2) ... 324s Selecting previously unselected package libnvme1t64. 324s (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 ... 70158 files and directories currently installed.) 324s Preparing to unpack .../libnvme1t64_1.8-3_ppc64el.deb ... 324s Unpacking libnvme1t64 (1.8-3) ... 324s Preparing to unpack .../wget_1.21.4-1ubuntu2_ppc64el.deb ... 324s Unpacking wget (1.21.4-1ubuntu2) over (1.21.4-1ubuntu1) ... 324s dpkg: libcurl4:ppc64el: dependency problems, but removing anyway as you requested: 324s curl depends on libcurl4 (= 8.5.0-2ubuntu2). 324s 324s (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 ... 70166 files and directories currently installed.) 324s Removing libcurl4:ppc64el (8.5.0-2ubuntu2) ... 324s Selecting previously unselected package libcurl4t64:ppc64el. 324s (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 ... 70161 files and directories currently installed.) 324s Preparing to unpack .../libcurl4t64_8.5.0-2ubuntu8_ppc64el.deb ... 324s Unpacking libcurl4t64:ppc64el (8.5.0-2ubuntu8) ... 324s Preparing to unpack .../curl_8.5.0-2ubuntu8_ppc64el.deb ... 324s Unpacking curl (8.5.0-2ubuntu8) over (8.5.0-2ubuntu2) ... 324s dpkg: libpsl5:ppc64el: dependency problems, but removing anyway as you requested: 324s libcurl3-gnutls:ppc64el depends on libpsl5 (>= 0.16.0). 324s 324s (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 ... 70167 files and directories currently installed.) 324s Removing libpsl5:ppc64el (0.21.2-1build1) ... 324s Selecting previously unselected package libpsl5t64:ppc64el. 324s (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 ... 70162 files and directories currently installed.) 324s Preparing to unpack .../libpsl5t64_0.21.2-1.1_ppc64el.deb ... 324s Unpacking libpsl5t64:ppc64el (0.21.2-1.1) ... 324s dpkg: libarchive13:ppc64el: dependency problems, but removing anyway as you requested: 324s fwupd depends on libarchive13 (>= 3.2.1). 324s 324s (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 ... 70168 files and directories currently installed.) 324s Removing libarchive13:ppc64el (3.7.2-1ubuntu2) ... 324s Selecting previously unselected package libarchive13t64:ppc64el. 324s (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 ... 70162 files and directories currently installed.) 324s Preparing to unpack .../libarchive13t64_3.7.2-1.1ubuntu2_ppc64el.deb ... 324s Unpacking libarchive13t64:ppc64el (3.7.2-1.1ubuntu2) ... 325s Preparing to unpack .../fwupd_1.9.15-2_ppc64el.deb ... 325s Unpacking fwupd (1.9.15-2) over (1.9.14-1) ... 325s dpkg: libcurl3-gnutls:ppc64el: dependency problems, but removing anyway as you requested: 325s libfwupd2:ppc64el depends on libcurl3-gnutls (>= 7.63.0). 325s 325s (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 ... 70169 files and directories currently installed.) 325s Removing libcurl3-gnutls:ppc64el (8.5.0-2ubuntu2) ... 325s Selecting previously unselected package libcurl3t64-gnutls:ppc64el. 325s (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 ... 70162 files and directories currently installed.) 325s Preparing to unpack .../00-libcurl3t64-gnutls_8.5.0-2ubuntu8_ppc64el.deb ... 325s Unpacking libcurl3t64-gnutls:ppc64el (8.5.0-2ubuntu8) ... 325s Preparing to unpack .../01-libfwupd2_1.9.15-2_ppc64el.deb ... 325s Unpacking libfwupd2:ppc64el (1.9.15-2) over (1.9.14-1) ... 325s Preparing to unpack .../02-libblockdev3_3.1.0-1build1_ppc64el.deb ... 325s Unpacking libblockdev3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 325s Preparing to unpack .../03-libblockdev-utils3_3.1.0-1build1_ppc64el.deb ... 325s Unpacking libblockdev-utils3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 325s Preparing to unpack .../04-libblockdev-swap3_3.1.0-1build1_ppc64el.deb ... 325s Unpacking libblockdev-swap3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 325s Preparing to unpack .../05-libblockdev-part3_3.1.0-1build1_ppc64el.deb ... 325s Unpacking libblockdev-part3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 325s Preparing to unpack .../06-libblockdev-nvme3_3.1.0-1build1_ppc64el.deb ... 325s Unpacking libblockdev-nvme3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 325s Preparing to unpack .../07-libblockdev-mdraid3_3.1.0-1build1_ppc64el.deb ... 325s Unpacking libblockdev-mdraid3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 325s Preparing to unpack .../08-libblockdev-loop3_3.1.0-1build1_ppc64el.deb ... 325s Unpacking libblockdev-loop3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 325s Preparing to unpack .../09-logsave_1.47.0-2.4~exp1ubuntu2_ppc64el.deb ... 325s Unpacking logsave (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 325s Preparing to unpack .../10-e2fsprogs-l10n_1.47.0-2.4~exp1ubuntu2_all.deb ... 325s Unpacking e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 325s dpkg: libext2fs2:ppc64el: dependency problems, but removing anyway as you requested: 325s libblockdev-fs3:ppc64el depends on libext2fs2 (>= 1.42.11). 325s e2fsprogs depends on libext2fs2 (= 1.47.0-2ubuntu1). 325s btrfs-progs depends on libext2fs2 (>= 1.42). 325s 325s (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 ... 70169 files and directories currently installed.) 325s Removing libext2fs2:ppc64el (1.47.0-2ubuntu1) ... 325s Selecting previously unselected package libext2fs2t64:ppc64el. 325s (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 ... 70162 files and directories currently installed.) 325s Preparing to unpack .../libext2fs2t64_1.47.0-2.4~exp1ubuntu2_ppc64el.deb ... 325s Adding 'diversion of /lib/powerpc64le-linux-gnu/libe2p.so.2 to /lib/powerpc64le-linux-gnu/libe2p.so.2.usr-is-merged by libext2fs2t64' 325s Adding 'diversion of /lib/powerpc64le-linux-gnu/libe2p.so.2.3 to /lib/powerpc64le-linux-gnu/libe2p.so.2.3.usr-is-merged by libext2fs2t64' 325s Adding 'diversion of /lib/powerpc64le-linux-gnu/libext2fs.so.2 to /lib/powerpc64le-linux-gnu/libext2fs.so.2.usr-is-merged by libext2fs2t64' 325s Adding 'diversion of /lib/powerpc64le-linux-gnu/libext2fs.so.2.4 to /lib/powerpc64le-linux-gnu/libext2fs.so.2.4.usr-is-merged by libext2fs2t64' 325s Unpacking libext2fs2t64:ppc64el (1.47.0-2.4~exp1ubuntu2) ... 325s Setting up libext2fs2t64:ppc64el (1.47.0-2.4~exp1ubuntu2) ... 325s (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 ... 70178 files and directories currently installed.) 325s Preparing to unpack .../e2fsprogs_1.47.0-2.4~exp1ubuntu2_ppc64el.deb ... 325s Unpacking e2fsprogs (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 325s dpkg: libreiserfscore0: dependency problems, but removing anyway as you requested: 325s btrfs-progs depends on libreiserfscore0 (>= 1:3.6.27). 325s 325s (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 ... 70178 files and directories currently installed.) 325s Removing libreiserfscore0 (1:3.6.27-7) ... 325s Selecting previously unselected package libreiserfscore0t64. 325s (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 ... 70173 files and directories currently installed.) 325s Preparing to unpack .../libreiserfscore0t64_1%3a3.6.27-7.1_ppc64el.deb ... 325s Unpacking libreiserfscore0t64 (1:3.6.27-7.1) ... 325s Preparing to unpack .../btrfs-progs_6.6.3-1.1build1_ppc64el.deb ... 325s Unpacking btrfs-progs (6.6.3-1.1build1) over (6.6.3-1.1) ... 325s Preparing to unpack .../libblockdev-fs3_3.1.0-1build1_ppc64el.deb ... 325s Unpacking libblockdev-fs3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 325s Preparing to unpack .../libblockdev-crypto3_3.1.0-1build1_ppc64el.deb ... 325s Unpacking libblockdev-crypto3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 325s Preparing to unpack .../bolt_0.9.6-2build1_ppc64el.deb ... 325s Unpacking bolt (0.9.6-2build1) over (0.9.6-2) ... 325s dpkg: libglib2.0-0:ppc64el: dependency problems, but removing anyway as you requested: 325s libnetplan0:ppc64el depends on libglib2.0-0 (>= 2.75.3). 325s libjcat1:ppc64el depends on libglib2.0-0 (>= 2.75.3). 325s 326s (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 ... 70179 files and directories currently installed.) 326s Removing libglib2.0-0:ppc64el (2.79.2-1~ubuntu1) ... 326s Selecting previously unselected package libglib2.0-0t64:ppc64el. 326s (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 ... 70154 files and directories currently installed.) 326s Preparing to unpack .../0-libglib2.0-0t64_2.79.3-3ubuntu5_ppc64el.deb ... 326s libglib2.0-0t64.preinst: Removing /var/lib/dpkg/info/libglib2.0-0:ppc64el.postrm to avoid loss of /usr/share/glib-2.0/schemas/gschemas.compiled... 326s removed '/var/lib/dpkg/info/libglib2.0-0:ppc64el.postrm' 326s Unpacking libglib2.0-0t64:ppc64el (2.79.3-3ubuntu5) ... 326s Preparing to unpack .../1-libjcat1_0.2.0-2build2_ppc64el.deb ... 326s Unpacking libjcat1:ppc64el (0.2.0-2build2) over (0.2.0-2) ... 326s Preparing to unpack .../2-libldap2_2.6.7+dfsg-1~exp1ubuntu6_ppc64el.deb ... 326s Unpacking libldap2:ppc64el (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 326s Preparing to unpack .../3-ubuntu-pro-client-l10n_31.2.2_ppc64el.deb ... 326s Unpacking ubuntu-pro-client-l10n (31.2.2) over (31.1) ... 326s Preparing to unpack .../4-ubuntu-pro-client_31.2.2_ppc64el.deb ... 326s Unpacking ubuntu-pro-client (31.2.2) over (31.1) ... 326s Preparing to unpack .../5-python3-apt_2.7.7_ppc64el.deb ... 326s Unpacking python3-apt (2.7.7) over (2.7.6) ... 326s Preparing to unpack .../6-apt-utils_2.7.14_ppc64el.deb ... 326s Unpacking apt-utils (2.7.14) over (2.7.12) ... 326s dpkg: libapt-pkg6.0:ppc64el: dependency problems, but removing anyway as you requested: 326s apt depends on libapt-pkg6.0 (>= 2.7.12). 326s 326s (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 ... 70177 files and directories currently installed.) 326s Removing libapt-pkg6.0:ppc64el (2.7.12) ... 326s dpkg: libnettle8:ppc64el: dependency problems, but removing anyway as you requested: 326s librtmp1:ppc64el depends on libnettle8. 326s libhogweed6:ppc64el depends on libnettle8. 326s libgnutls30:ppc64el depends on libnettle8 (>= 3.9~). 326s 326s Removing libnettle8:ppc64el (3.9.1-2) ... 326s Selecting previously unselected package libapt-pkg6.0t64:ppc64el. 326s (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 ... 70121 files and directories currently installed.) 326s Preparing to unpack .../libapt-pkg6.0t64_2.7.14_ppc64el.deb ... 326s Unpacking libapt-pkg6.0t64:ppc64el (2.7.14) ... 326s Setting up libapt-pkg6.0t64:ppc64el (2.7.14) ... 326s Selecting previously unselected package libnettle8t64:ppc64el. 326s (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 ... 70171 files and directories currently installed.) 326s Preparing to unpack .../libnettle8t64_3.9.1-2.2_ppc64el.deb ... 326s Unpacking libnettle8t64:ppc64el (3.9.1-2.2) ... 326s Setting up libnettle8t64:ppc64el (3.9.1-2.2) ... 326s dpkg: libhogweed6:ppc64el: dependency problems, but removing anyway as you requested: 326s librtmp1:ppc64el depends on libhogweed6. 326s libgnutls30:ppc64el depends on libhogweed6 (>= 3.6). 326s 327s (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 ... 70179 files and directories currently installed.) 327s Removing libhogweed6:ppc64el (3.9.1-2) ... 327s Selecting previously unselected package libhogweed6t64:ppc64el. 327s (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 ... 70174 files and directories currently installed.) 327s Preparing to unpack .../libhogweed6t64_3.9.1-2.2_ppc64el.deb ... 327s Unpacking libhogweed6t64:ppc64el (3.9.1-2.2) ... 327s Setting up libhogweed6t64:ppc64el (3.9.1-2.2) ... 327s dpkg: libgnutls30:ppc64el: dependency problems, but removing anyway as you requested: 327s librtmp1:ppc64el depends on libgnutls30 (>= 3.7.2). 327s apt depends on libgnutls30 (>= 3.8.1). 327s 327s (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 ... 70180 files and directories currently installed.) 327s Removing libgnutls30:ppc64el (3.8.3-1ubuntu1) ... 327s Selecting previously unselected package libgnutls30t64:ppc64el. 327s (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 ... 70171 files and directories currently installed.) 327s Preparing to unpack .../libgnutls30t64_3.8.3-1.1ubuntu2_ppc64el.deb ... 327s Unpacking libgnutls30t64:ppc64el (3.8.3-1.1ubuntu2) ... 327s Setting up libgnutls30t64:ppc64el (3.8.3-1.1ubuntu2) ... 327s (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 ... 70199 files and directories currently installed.) 327s Preparing to unpack .../apt_2.7.14_ppc64el.deb ... 327s Unpacking apt (2.7.14) over (2.7.12) ... 327s Setting up apt (2.7.14) ... 328s (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 ... 70199 files and directories currently installed.) 328s Preparing to unpack .../librtmp1_2.4+20151223.gitfa8646d.1-2build6_ppc64el.deb ... 328s Unpacking librtmp1:ppc64el (2.4+20151223.gitfa8646d.1-2build6) over (2.4+20151223.gitfa8646d.1-2build4) ... 328s Preparing to unpack .../liblzma5_5.6.0-0.2_ppc64el.deb ... 328s Unpacking liblzma5:ppc64el (5.6.0-0.2) over (5.4.5-0.3) ... 328s Setting up liblzma5:ppc64el (5.6.0-0.2) ... 328s (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 ... 70199 files and directories currently installed.) 328s Preparing to unpack .../libblkid1_2.39.3-9ubuntu2_ppc64el.deb ... 328s Unpacking libblkid1:ppc64el (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 328s Setting up libblkid1:ppc64el (2.39.3-9ubuntu2) ... 328s (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 ... 70199 files and directories currently installed.) 328s Preparing to unpack .../kmod_31+20240202-2ubuntu4_ppc64el.deb ... 328s Unpacking kmod (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 328s Preparing to unpack .../libkmod2_31+20240202-2ubuntu4_ppc64el.deb ... 328s Unpacking libkmod2:ppc64el (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 328s Preparing to unpack .../libselinux1_3.5-2ubuntu1_ppc64el.deb ... 328s Unpacking libselinux1:ppc64el (3.5-2ubuntu1) over (3.5-2build1) ... 328s Setting up libselinux1:ppc64el (3.5-2ubuntu1) ... 328s (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 ... 70199 files and directories currently installed.) 328s Preparing to unpack .../dbus-session-bus-common_1.14.10-4ubuntu2_all.deb ... 328s Unpacking dbus-session-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 328s Preparing to unpack .../dbus-user-session_1.14.10-4ubuntu2_ppc64el.deb ... 328s Unpacking dbus-user-session (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 328s Preparing to unpack .../libapparmor1_4.0.0-beta3-0ubuntu2_ppc64el.deb ... 328s Unpacking libapparmor1:ppc64el (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 328s Preparing to unpack .../libaudit-common_1%3a3.1.2-2.1_all.deb ... 328s Unpacking libaudit-common (1:3.1.2-2.1) over (1:3.1.2-2) ... 328s Setting up libaudit-common (1:3.1.2-2.1) ... 328s (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 ... 70199 files and directories currently installed.) 328s Preparing to unpack .../libcap-ng0_0.8.4-2build1_ppc64el.deb ... 328s Unpacking libcap-ng0:ppc64el (0.8.4-2build1) over (0.8.4-2) ... 328s Setting up libcap-ng0:ppc64el (0.8.4-2build1) ... 328s (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 ... 70199 files and directories currently installed.) 328s Preparing to unpack .../libaudit1_1%3a3.1.2-2.1_ppc64el.deb ... 328s Unpacking libaudit1:ppc64el (1:3.1.2-2.1) over (1:3.1.2-2) ... 328s Setting up libaudit1:ppc64el (1:3.1.2-2.1) ... 328s (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 ... 70199 files and directories currently installed.) 328s Preparing to unpack .../0-dbus-system-bus-common_1.14.10-4ubuntu2_all.deb ... 328s Unpacking dbus-system-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 328s Preparing to unpack .../1-dbus-bin_1.14.10-4ubuntu2_ppc64el.deb ... 328s Unpacking dbus-bin (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 328s Preparing to unpack .../2-dbus_1.14.10-4ubuntu2_ppc64el.deb ... 328s Unpacking dbus (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 328s Preparing to unpack .../3-dbus-daemon_1.14.10-4ubuntu2_ppc64el.deb ... 328s Unpacking dbus-daemon (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 328s Preparing to unpack .../4-libdbus-1-3_1.14.10-4ubuntu2_ppc64el.deb ... 328s Unpacking libdbus-1-3:ppc64el (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 328s Preparing to unpack .../5-libuuid1_2.39.3-9ubuntu2_ppc64el.deb ... 328s Unpacking libuuid1:ppc64el (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 328s Setting up libuuid1:ppc64el (2.39.3-9ubuntu2) ... 328s (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 ... 70199 files and directories currently installed.) 328s Preparing to unpack .../libcryptsetup12_2%3a2.7.0-1ubuntu2_ppc64el.deb ... 328s Unpacking libcryptsetup12:ppc64el (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 328s Preparing to unpack .../libfdisk1_2.39.3-9ubuntu2_ppc64el.deb ... 328s Unpacking libfdisk1:ppc64el (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 328s Preparing to unpack .../mount_2.39.3-9ubuntu2_ppc64el.deb ... 328s Unpacking mount (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 328s Preparing to unpack .../libmount1_2.39.3-9ubuntu2_ppc64el.deb ... 328s Unpacking libmount1:ppc64el (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 328s Setting up libmount1:ppc64el (2.39.3-9ubuntu2) ... 328s (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 ... 70199 files and directories currently installed.) 328s Preparing to unpack .../zlib1g_1%3a1.3.dfsg-3.1ubuntu1_ppc64el.deb ... 328s Unpacking zlib1g:ppc64el (1:1.3.dfsg-3.1ubuntu1) over (1:1.3.dfsg-3ubuntu1) ... 328s Setting up zlib1g:ppc64el (1:1.3.dfsg-3.1ubuntu1) ... 328s Setting up libpython3.12-minimal:ppc64el (3.12.2-4build3) ... 328s Setting up python3.12-minimal (3.12.2-4build3) ... 330s (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 ... 70199 files and directories currently installed.) 330s Preparing to unpack .../python3-minimal_3.12.2-0ubuntu1_ppc64el.deb ... 330s Unpacking python3-minimal (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 330s Setting up python3-minimal (3.12.2-0ubuntu1) ... 330s (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 ... 70199 files and directories currently installed.) 330s Preparing to unpack .../python3_3.12.2-0ubuntu1_ppc64el.deb ... 330s Unpacking python3 (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 330s Preparing to unpack .../libplymouth5_24.004.60-1ubuntu6_ppc64el.deb ... 330s Unpacking libplymouth5:ppc64el (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 330s dpkg: libpng16-16:ppc64el: dependency problems, but removing anyway as you requested: 330s libfreetype6:ppc64el depends on libpng16-16 (>= 1.6.2-1). 330s 330s (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 ... 70199 files and directories currently installed.) 330s Removing libpng16-16:ppc64el (1.6.43-1) ... 330s Selecting previously unselected package libpng16-16t64:ppc64el. 330s (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 ... 70189 files and directories currently installed.) 330s Preparing to unpack .../0-libpng16-16t64_1.6.43-3_ppc64el.deb ... 330s Unpacking libpng16-16t64:ppc64el (1.6.43-3) ... 330s Preparing to unpack .../1-libbrotli1_1.1.0-2build1_ppc64el.deb ... 330s Unpacking libbrotli1:ppc64el (1.1.0-2build1) over (1.1.0-2) ... 330s Preparing to unpack .../2-libfreetype6_2.13.2+dfsg-1build2_ppc64el.deb ... 330s Unpacking libfreetype6:ppc64el (2.13.2+dfsg-1build2) over (2.13.2+dfsg-1) ... 330s Preparing to unpack .../3-libsqlite3-0_3.45.1-1ubuntu1_ppc64el.deb ... 330s Unpacking libsqlite3-0:ppc64el (3.45.1-1ubuntu1) over (3.45.1-1) ... 330s Preparing to unpack .../4-pinentry-curses_1.2.1-3ubuntu4_ppc64el.deb ... 330s Unpacking pinentry-curses (1.2.1-3ubuntu4) over (1.2.1-3ubuntu1) ... 330s Preparing to unpack .../5-python-apt-common_2.7.7_all.deb ... 330s Unpacking python-apt-common (2.7.7) over (2.7.6) ... 330s Preparing to unpack .../6-libsmartcols1_2.39.3-9ubuntu2_ppc64el.deb ... 330s Unpacking libsmartcols1:ppc64el (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 330s Setting up libsmartcols1:ppc64el (2.39.3-9ubuntu2) ... 330s (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 ... 70200 files and directories currently installed.) 330s Preparing to unpack .../00-readline-common_8.2-4_all.deb ... 330s Unpacking readline-common (8.2-4) over (8.2-3) ... 330s Preparing to unpack .../01-bsdextrautils_2.39.3-9ubuntu2_ppc64el.deb ... 330s Unpacking bsdextrautils (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 330s Preparing to unpack .../02-groff-base_1.23.0-3build1_ppc64el.deb ... 330s Unpacking groff-base (1.23.0-3build1) over (1.23.0-3) ... 330s Preparing to unpack .../03-libpython3-stdlib_3.12.2-0ubuntu1_ppc64el.deb ... 330s Unpacking libpython3-stdlib:ppc64el (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 330s Preparing to unpack .../04-libfido2-1_1.14.0-1build1_ppc64el.deb ... 330s Unpacking libfido2-1:ppc64el (1.14.0-1build1) over (1.14.0-1) ... 330s Preparing to unpack .../05-libgssapi-krb5-2_1.20.1-6ubuntu1_ppc64el.deb ... 330s Unpacking libgssapi-krb5-2:ppc64el (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 330s Preparing to unpack .../06-libkrb5-3_1.20.1-6ubuntu1_ppc64el.deb ... 330s Unpacking libkrb5-3:ppc64el (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 330s Preparing to unpack .../07-libkrb5support0_1.20.1-6ubuntu1_ppc64el.deb ... 330s Unpacking libkrb5support0:ppc64el (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 330s Preparing to unpack .../08-libk5crypto3_1.20.1-6ubuntu1_ppc64el.deb ... 330s Unpacking libk5crypto3:ppc64el (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 330s Preparing to unpack .../09-libcom-err2_1.47.0-2.4~exp1ubuntu2_ppc64el.deb ... 330s Unpacking libcom-err2:ppc64el (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 330s Preparing to unpack .../10-libproc2-0_2%3a4.0.4-4ubuntu2_ppc64el.deb ... 330s Unpacking libproc2-0:ppc64el (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 330s Preparing to unpack .../11-procps_2%3a4.0.4-4ubuntu2_ppc64el.deb ... 331s Unpacking procps (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 331s Preparing to unpack .../12-libnghttp2-14_1.59.0-1build1_ppc64el.deb ... 331s Unpacking libnghttp2-14:ppc64el (1.59.0-1build1) over (1.59.0-1) ... 331s Preparing to unpack .../13-dpkg_1.22.6ubuntu5_ppc64el.deb ... 331s Unpacking dpkg (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 331s Setting up dpkg (1.22.6ubuntu5) ... 331s (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 ... 70201 files and directories currently installed.) 331s Preparing to unpack .../util-linux_2.39.3-9ubuntu2_ppc64el.deb ... 331s Unpacking util-linux (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 331s Setting up util-linux (2.39.3-9ubuntu2) ... 332s fstrim.service is a disabled or a static unit not running, not starting it. 332s (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 ... 70201 files and directories currently installed.) 332s Preparing to unpack .../libxml2_2.9.14+dfsg-1.3ubuntu2_ppc64el.deb ... 332s Unpacking libxml2:ppc64el (2.9.14+dfsg-1.3ubuntu2) over (2.9.14+dfsg-1.3ubuntu1) ... 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 ... 70201 files and directories currently installed.) 333s Removing libatm1:ppc64el (1:2.5.1-5) ... 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 ... 70196 files and directories currently installed.) 333s Preparing to unpack .../libbpf1_1%3a1.3.0-2build1_ppc64el.deb ... 333s Unpacking libbpf1:ppc64el (1:1.3.0-2build1) over (1:1.3.0-2) ... 333s Preparing to unpack .../iproute2_6.1.0-1ubuntu5_ppc64el.deb ... 333s Unpacking iproute2 (6.1.0-1ubuntu5) over (6.1.0-1ubuntu2) ... 333s dpkg: libelf1:ppc64el: dependency problems, but removing anyway as you requested: 333s linux-headers-6.8.0-11-generic depends on libelf1 (>= 0.144). 333s 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 ... 70196 files and directories currently installed.) 333s Removing libelf1:ppc64el (0.190-1) ... 333s Selecting previously unselected package libelf1t64:ppc64el. 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 ... 70191 files and directories currently installed.) 333s Preparing to unpack .../libelf1t64_0.190-1.1build2_ppc64el.deb ... 333s Unpacking libelf1t64:ppc64el (0.190-1.1build2) ... 333s Preparing to unpack .../file_1%3a5.45-3_ppc64el.deb ... 333s Unpacking file (1:5.45-3) over (1:5.45-2) ... 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 ... 70196 files and directories currently installed.) 333s Removing libmagic1:ppc64el (1:5.45-2) ... 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 ... 70186 files and directories currently installed.) 333s Preparing to unpack .../libmagic-mgc_1%3a5.45-3_ppc64el.deb ... 333s Unpacking libmagic-mgc (1:5.45-3) over (1:5.45-2) ... 333s Selecting previously unselected package libmagic1t64:ppc64el. 333s Preparing to unpack .../libmagic1t64_1%3a5.45-3_ppc64el.deb ... 333s Unpacking libmagic1t64:ppc64el (1:5.45-3) ... 333s Preparing to unpack .../libtirpc-common_1.3.4+ds-1.1_all.deb ... 333s Unpacking libtirpc-common (1.3.4+ds-1.1) over (1.3.4+ds-1build1) ... 333s Preparing to unpack .../lsof_4.95.0-1build2_ppc64el.deb ... 333s Unpacking lsof (4.95.0-1build2) over (4.95.0-1build1) ... 333s Preparing to unpack .../libnsl2_1.3.0-3build2_ppc64el.deb ... 333s Unpacking libnsl2:ppc64el (1.3.0-3build2) over (1.3.0-3) ... 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 ... 70197 files and directories currently installed.) 333s Removing libtirpc3:ppc64el (1.3.4+ds-1build1) ... 333s Selecting previously unselected package libtirpc3t64:ppc64el. 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 ... 70191 files and directories currently installed.) 333s Preparing to unpack .../libtirpc3t64_1.3.4+ds-1.1_ppc64el.deb ... 333s Adding 'diversion of /lib/powerpc64le-linux-gnu/libtirpc.so.3 to /lib/powerpc64le-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' 333s Adding 'diversion of /lib/powerpc64le-linux-gnu/libtirpc.so.3.0.0 to /lib/powerpc64le-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' 333s Unpacking libtirpc3t64:ppc64el (1.3.4+ds-1.1) ... 333s Preparing to unpack .../multipath-tools_0.9.4-5ubuntu6_ppc64el.deb ... 333s Unpacking multipath-tools (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 333s dpkg: liburcu8:ppc64el: dependency problems, but removing anyway as you requested: 333s xfsprogs depends on liburcu8 (>= 0.13.0). 333s 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 ... 70201 files and directories currently installed.) 333s Removing liburcu8:ppc64el (0.14.0-3) ... 333s Selecting previously unselected package liburcu8t64:ppc64el. 334s (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 ... 70182 files and directories currently installed.) 334s Preparing to unpack .../liburcu8t64_0.14.0-3.1_ppc64el.deb ... 334s Unpacking liburcu8t64:ppc64el (0.14.0-3.1) ... 334s Preparing to unpack .../bind9-host_1%3a9.18.24-0ubuntu3_ppc64el.deb ... 334s Unpacking bind9-host (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 334s Preparing to unpack .../bind9-dnsutils_1%3a9.18.24-0ubuntu3_ppc64el.deb ... 334s Unpacking bind9-dnsutils (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 334s Preparing to unpack .../bind9-libs_1%3a9.18.24-0ubuntu3_ppc64el.deb ... 334s Unpacking bind9-libs:ppc64el (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 334s (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 ... 70202 files and directories currently installed.) 334s Removing libuv1:ppc64el (1.48.0-1) ... 334s Selecting previously unselected package libuv1t64:ppc64el. 334s (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 ... 70197 files and directories currently installed.) 334s Preparing to unpack .../libuv1t64_1.48.0-1.1_ppc64el.deb ... 334s Unpacking libuv1t64:ppc64el (1.48.0-1.1) ... 334s Preparing to unpack .../liblocale-gettext-perl_1.07-6ubuntu4_ppc64el.deb ... 334s Unpacking liblocale-gettext-perl (1.07-6ubuntu4) over (1.07-6build1) ... 334s Preparing to unpack .../uuid-runtime_2.39.3-9ubuntu2_ppc64el.deb ... 334s Unpacking uuid-runtime (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 334s Preparing to unpack .../libdebconfclient0_0.271ubuntu2_ppc64el.deb ... 334s Unpacking libdebconfclient0:ppc64el (0.271ubuntu2) over (0.271ubuntu1) ... 334s Setting up libdebconfclient0:ppc64el (0.271ubuntu2) ... 334s (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 ... 70203 files and directories currently installed.) 334s Preparing to unpack .../libsemanage-common_3.5-1build4_all.deb ... 334s Unpacking libsemanage-common (3.5-1build4) over (3.5-1build2) ... 334s Setting up libsemanage-common (3.5-1build4) ... 334s (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 ... 70203 files and directories currently installed.) 334s Preparing to unpack .../libsemanage2_3.5-1build4_ppc64el.deb ... 334s Unpacking libsemanage2:ppc64el (3.5-1build4) over (3.5-1build2) ... 334s Setting up libsemanage2:ppc64el (3.5-1build4) ... 334s (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 ... 70203 files and directories currently installed.) 334s Preparing to unpack .../install-info_7.1-3build1_ppc64el.deb ... 334s Unpacking install-info (7.1-3build1) over (7.1-3) ... 334s Setting up install-info (7.1-3build1) ... 334s (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 ... 70203 files and directories currently installed.) 334s Preparing to unpack .../00-libss2_1.47.0-2.4~exp1ubuntu2_ppc64el.deb ... 334s Unpacking libss2:ppc64el (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 334s Preparing to unpack .../01-dhcpcd-base_1%3a10.0.6-1ubuntu2_ppc64el.deb ... 334s Unpacking dhcpcd-base (1:10.0.6-1ubuntu2) over (1:10.0.6-1ubuntu1) ... 334s Preparing to unpack .../02-eject_2.39.3-9ubuntu2_ppc64el.deb ... 334s Unpacking eject (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 334s Preparing to unpack .../03-krb5-locales_1.20.1-6ubuntu1_all.deb ... 334s Unpacking krb5-locales (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 334s Preparing to unpack .../04-libglib2.0-data_2.79.3-3ubuntu5_all.deb ... 334s Unpacking libglib2.0-data (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 334s Preparing to unpack .../05-libslang2_2.3.3-3build1_ppc64el.deb ... 334s Unpacking libslang2:ppc64el (2.3.3-3build1) over (2.3.3-3) ... 334s Preparing to unpack .../06-libtext-charwidth-perl_0.04-11build2_ppc64el.deb ... 334s Unpacking libtext-charwidth-perl:ppc64el (0.04-11build2) over (0.04-11build1) ... 334s Preparing to unpack .../07-libtext-iconv-perl_1.7-8build2_ppc64el.deb ... 334s Unpacking libtext-iconv-perl:ppc64el (1.7-8build2) over (1.7-8build1) ... 334s Preparing to unpack .../08-python3-setuptools_68.1.2-2ubuntu1_all.deb ... 334s Unpacking python3-setuptools (68.1.2-2ubuntu1) over (68.1.2-2) ... 334s Preparing to unpack .../09-python3-pkg-resources_68.1.2-2ubuntu1_all.deb ... 335s Unpacking python3-pkg-resources (68.1.2-2ubuntu1) over (68.1.2-2) ... 335s Preparing to unpack .../10-rsyslog_8.2312.0-3ubuntu7_ppc64el.deb ... 335s Unpacking rsyslog (8.2312.0-3ubuntu7) over (8.2312.0-3ubuntu3) ... 335s Preparing to unpack .../11-vim-tiny_2%3a9.1.0016-1ubuntu6_ppc64el.deb ... 335s Unpacking vim-tiny (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 335s Preparing to unpack .../12-vim-common_2%3a9.1.0016-1ubuntu6_all.deb ... 335s Unpacking vim-common (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 335s Selecting previously unselected package xdg-user-dirs. 335s Preparing to unpack .../13-xdg-user-dirs_0.18-1_ppc64el.deb ... 335s Unpacking xdg-user-dirs (0.18-1) ... 335s Preparing to unpack .../14-xxd_2%3a9.1.0016-1ubuntu6_ppc64el.deb ... 335s Unpacking xxd (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 335s Preparing to unpack .../15-apparmor_4.0.0-beta3-0ubuntu2_ppc64el.deb ... 335s Unpacking apparmor (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 335s Preparing to unpack .../16-ftp_20230507-2build1_all.deb ... 335s Unpacking ftp (20230507-2build1) over (20230507-2) ... 335s Preparing to unpack .../17-inetutils-telnet_2%3a2.5-3ubuntu3_ppc64el.deb ... 335s Unpacking inetutils-telnet (2:2.5-3ubuntu3) over (2:2.5-3ubuntu1) ... 335s Preparing to unpack .../18-info_7.1-3build1_ppc64el.deb ... 335s Unpacking info (7.1-3build1) over (7.1-3) ... 335s Preparing to unpack .../19-libxmuu1_2%3a1.1.3-3build1_ppc64el.deb ... 335s Unpacking libxmuu1:ppc64el (2:1.1.3-3build1) over (2:1.1.3-3) ... 335s Preparing to unpack .../20-lshw_02.19.git.2021.06.19.996aaad9c7-2build2_ppc64el.deb ... 335s Unpacking lshw (02.19.git.2021.06.19.996aaad9c7-2build2) over (02.19.git.2021.06.19.996aaad9c7-2build1) ... 335s Selecting previously unselected package manpages. 335s Preparing to unpack .../21-manpages_6.05.01-1_all.deb ... 335s Unpacking manpages (6.05.01-1) ... 336s Preparing to unpack .../22-mtr-tiny_0.95-1.1build1_ppc64el.deb ... 336s Unpacking mtr-tiny (0.95-1.1build1) over (0.95-1.1) ... 336s Preparing to unpack .../23-plymouth-theme-ubuntu-text_24.004.60-1ubuntu6_ppc64el.deb ... 336s Unpacking plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 336s Preparing to unpack .../24-plymouth_24.004.60-1ubuntu6_ppc64el.deb ... 336s Unpacking plymouth (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 336s Preparing to unpack .../25-telnet_0.17+2.5-3ubuntu3_all.deb ... 336s Unpacking telnet (0.17+2.5-3ubuntu3) over (0.17+2.5-3ubuntu1) ... 336s Preparing to unpack .../26-usb.ids_2024.03.18-1_all.deb ... 336s Unpacking usb.ids (2024.03.18-1) over (2024.01.30-1) ... 336s Preparing to unpack .../27-xz-utils_5.6.0-0.2_ppc64el.deb ... 336s Unpacking xz-utils (5.6.0-0.2) over (5.4.5-0.3) ... 336s Selecting previously unselected package libllvm18:ppc64el. 336s Preparing to unpack .../28-libllvm18_1%3a18.1.2-1ubuntu2_ppc64el.deb ... 336s Unpacking libllvm18:ppc64el (1:18.1.2-1ubuntu2) ... 337s Selecting previously unselected package libclang-cpp18. 337s Preparing to unpack .../29-libclang-cpp18_1%3a18.1.2-1ubuntu2_ppc64el.deb ... 337s Unpacking libclang-cpp18 (1:18.1.2-1ubuntu2) ... 337s Selecting previously unselected package libbpfcc:ppc64el. 337s Preparing to unpack .../30-libbpfcc_0.29.1+ds-1ubuntu4_ppc64el.deb ... 337s Unpacking libbpfcc:ppc64el (0.29.1+ds-1ubuntu4) ... 337s Selecting previously unselected package python3-bpfcc. 337s Preparing to unpack .../31-python3-bpfcc_0.29.1+ds-1ubuntu4_all.deb ... 337s Unpacking python3-bpfcc (0.29.1+ds-1ubuntu4) ... 337s Selecting previously unselected package ieee-data. 337s Preparing to unpack .../32-ieee-data_20220827.1_all.deb ... 337s Unpacking ieee-data (20220827.1) ... 337s Selecting previously unselected package python3-netaddr. 337s Preparing to unpack .../33-python3-netaddr_0.8.0-2ubuntu1_all.deb ... 337s Unpacking python3-netaddr (0.8.0-2ubuntu1) ... 337s Selecting previously unselected package bpfcc-tools. 337s Preparing to unpack .../34-bpfcc-tools_0.29.1+ds-1ubuntu4_all.deb ... 337s Unpacking bpfcc-tools (0.29.1+ds-1ubuntu4) ... 337s Selecting previously unselected package libclang1-18. 337s Preparing to unpack .../35-libclang1-18_1%3a18.1.2-1ubuntu2_ppc64el.deb ... 337s Unpacking libclang1-18 (1:18.1.2-1ubuntu2) ... 338s Selecting previously unselected package libdw1t64:ppc64el. 338s Preparing to unpack .../36-libdw1t64_0.190-1.1build2_ppc64el.deb ... 338s Unpacking libdw1t64:ppc64el (0.190-1.1build2) ... 338s Selecting previously unselected package bpftrace. 338s Preparing to unpack .../37-bpftrace_0.20.2-1ubuntu1_ppc64el.deb ... 338s Unpacking bpftrace (0.20.2-1ubuntu1) ... 338s Preparing to unpack .../38-cryptsetup-bin_2%3a2.7.0-1ubuntu2_ppc64el.deb ... 338s Unpacking cryptsetup-bin (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 338s Preparing to unpack .../39-dpkg-dev_1.22.6ubuntu5_all.deb ... 338s Unpacking dpkg-dev (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 338s Preparing to unpack .../40-libdpkg-perl_1.22.6ubuntu5_all.deb ... 338s Unpacking libdpkg-perl (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 338s Selecting previously unselected package fonts-dejavu-mono. 338s Preparing to unpack .../41-fonts-dejavu-mono_2.37-8_all.deb ... 338s Unpacking fonts-dejavu-mono (2.37-8) ... 338s Selecting previously unselected package fonts-dejavu-core. 338s Preparing to unpack .../42-fonts-dejavu-core_2.37-8_all.deb ... 338s Unpacking fonts-dejavu-core (2.37-8) ... 338s Selecting previously unselected package fontconfig-config. 338s Preparing to unpack .../43-fontconfig-config_2.15.0-1.1ubuntu1_ppc64el.deb ... 338s Unpacking fontconfig-config (2.15.0-1.1ubuntu1) ... 338s Preparing to unpack .../44-libprotobuf-c1_1.4.1-1ubuntu3_ppc64el.deb ... 338s Unpacking libprotobuf-c1:ppc64el (1.4.1-1ubuntu3) over (1.4.1-1ubuntu2) ... 338s Preparing to unpack .../45-gnupg-l10n_2.4.4-2ubuntu15_all.deb ... 338s Unpacking gnupg-l10n (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 338s Preparing to unpack .../46-libibverbs1_50.0-2build1_ppc64el.deb ... 338s Unpacking libibverbs1:ppc64el (50.0-2build1) over (50.0-2) ... 338s Preparing to unpack .../47-ibverbs-providers_50.0-2build1_ppc64el.deb ... 338s Unpacking ibverbs-providers:ppc64el (50.0-2build1) over (50.0-2) ... 338s Selecting previously unselected package libaio1t64:ppc64el. 338s Preparing to unpack .../48-libaio1t64_0.3.113-6_ppc64el.deb ... 338s Unpacking libaio1t64:ppc64el (0.3.113-6) ... 338s Selecting previously unselected package libatm1t64:ppc64el. 338s Preparing to unpack .../49-libatm1t64_1%3a2.5.1-5.1_ppc64el.deb ... 338s Unpacking libatm1t64:ppc64el (1:2.5.1-5.1) ... 338s Selecting previously unselected package libc-dev-bin. 338s Preparing to unpack .../50-libc-dev-bin_2.39-0ubuntu6_ppc64el.deb ... 338s Unpacking libc-dev-bin (2.39-0ubuntu6) ... 338s Selecting previously unselected package libfontconfig1:ppc64el. 338s Preparing to unpack .../51-libfontconfig1_2.15.0-1.1ubuntu1_ppc64el.deb ... 338s Unpacking libfontconfig1:ppc64el (2.15.0-1.1ubuntu1) ... 338s Selecting previously unselected package libjpeg-turbo8:ppc64el. 338s Preparing to unpack .../52-libjpeg-turbo8_2.1.5-2ubuntu1_ppc64el.deb ... 338s Unpacking libjpeg-turbo8:ppc64el (2.1.5-2ubuntu1) ... 338s Selecting previously unselected package libjpeg8:ppc64el. 338s Preparing to unpack .../53-libjpeg8_8c-2ubuntu11_ppc64el.deb ... 338s Unpacking libjpeg8:ppc64el (8c-2ubuntu11) ... 338s Selecting previously unselected package libdeflate0:ppc64el. 338s Preparing to unpack .../54-libdeflate0_1.19-1_ppc64el.deb ... 338s Unpacking libdeflate0:ppc64el (1.19-1) ... 338s Selecting previously unselected package libjbig0:ppc64el. 338s Preparing to unpack .../55-libjbig0_2.1-6.1ubuntu1_ppc64el.deb ... 338s Unpacking libjbig0:ppc64el (2.1-6.1ubuntu1) ... 338s Selecting previously unselected package liblerc4:ppc64el. 338s Preparing to unpack .../56-liblerc4_4.0.0+ds-4ubuntu1_ppc64el.deb ... 338s Unpacking liblerc4:ppc64el (4.0.0+ds-4ubuntu1) ... 338s Selecting previously unselected package libsharpyuv0:ppc64el. 338s Preparing to unpack .../57-libsharpyuv0_1.3.2-0.4build2_ppc64el.deb ... 338s Unpacking libsharpyuv0:ppc64el (1.3.2-0.4build2) ... 338s Selecting previously unselected package libwebp7:ppc64el. 338s Preparing to unpack .../58-libwebp7_1.3.2-0.4build2_ppc64el.deb ... 338s Unpacking libwebp7:ppc64el (1.3.2-0.4build2) ... 339s Selecting previously unselected package libtiff6:ppc64el. 339s Preparing to unpack .../59-libtiff6_4.5.1+git230720-4ubuntu1_ppc64el.deb ... 339s Unpacking libtiff6:ppc64el (4.5.1+git230720-4ubuntu1) ... 339s Selecting previously unselected package libxpm4:ppc64el. 339s Preparing to unpack .../60-libxpm4_1%3a3.5.17-1build1_ppc64el.deb ... 339s Unpacking libxpm4:ppc64el (1:3.5.17-1build1) ... 339s Selecting previously unselected package libgd3:ppc64el. 339s Preparing to unpack .../61-libgd3_2.3.3-9ubuntu3_ppc64el.deb ... 339s Unpacking libgd3:ppc64el (2.3.3-9ubuntu3) ... 339s Selecting previously unselected package libc-devtools. 339s Preparing to unpack .../62-libc-devtools_2.39-0ubuntu6_ppc64el.deb ... 339s Unpacking libc-devtools (2.39-0ubuntu6) ... 339s Selecting previously unselected package linux-libc-dev:ppc64el. 339s Preparing to unpack .../63-linux-libc-dev_6.8.0-20.20_ppc64el.deb ... 339s Unpacking linux-libc-dev:ppc64el (6.8.0-20.20) ... 339s Selecting previously unselected package libcrypt-dev:ppc64el. 339s Preparing to unpack .../64-libcrypt-dev_1%3a4.4.36-4_ppc64el.deb ... 339s Unpacking libcrypt-dev:ppc64el (1:4.4.36-4) ... 339s Selecting previously unselected package rpcsvc-proto. 339s Preparing to unpack .../65-rpcsvc-proto_1.4.2-0ubuntu6_ppc64el.deb ... 339s Unpacking rpcsvc-proto (1.4.2-0ubuntu6) ... 339s Selecting previously unselected package libc6-dev:ppc64el. 339s Preparing to unpack .../66-libc6-dev_2.39-0ubuntu6_ppc64el.deb ... 339s Unpacking libc6-dev:ppc64el (2.39-0ubuntu6) ... 339s Preparing to unpack .../67-libevent-core-2.1-7_2.1.12-stable-9build1_ppc64el.deb ... 339s Unpacking libevent-core-2.1-7:ppc64el (2.1.12-stable-9build1) over (2.1.12-stable-9) ... 339s Preparing to unpack .../68-libldap-common_2.6.7+dfsg-1~exp1ubuntu6_all.deb ... 339s Unpacking libldap-common (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 339s Selecting previously unselected package libunwind8:ppc64el. 339s Preparing to unpack .../69-libunwind8_1.6.2-3_ppc64el.deb ... 339s Unpacking libunwind8:ppc64el (1.6.2-3) ... 339s Selecting previously unselected package linux-modules-6.8.0-20-generic. 339s Preparing to unpack .../70-linux-modules-6.8.0-20-generic_6.8.0-20.20_ppc64el.deb ... 339s Unpacking linux-modules-6.8.0-20-generic (6.8.0-20.20) ... 339s Selecting previously unselected package linux-image-6.8.0-20-generic. 339s Preparing to unpack .../71-linux-image-6.8.0-20-generic_6.8.0-20.20_ppc64el.deb ... 339s Unpacking linux-image-6.8.0-20-generic (6.8.0-20.20) ... 340s Selecting previously unselected package linux-modules-extra-6.8.0-20-generic. 340s Preparing to unpack .../72-linux-modules-extra-6.8.0-20-generic_6.8.0-20.20_ppc64el.deb ... 340s Unpacking linux-modules-extra-6.8.0-20-generic (6.8.0-20.20) ... 341s Preparing to unpack .../73-linux-generic_6.8.0-20.20+1_ppc64el.deb ... 341s Unpacking linux-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 341s Preparing to unpack .../74-linux-image-generic_6.8.0-20.20+1_ppc64el.deb ... 341s Unpacking linux-image-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 341s Preparing to unpack .../75-linux-virtual_6.8.0-20.20+1_ppc64el.deb ... 341s Unpacking linux-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 341s Preparing to unpack .../76-linux-image-virtual_6.8.0-20.20+1_ppc64el.deb ... 341s Unpacking linux-image-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 341s Preparing to unpack .../77-linux-headers-virtual_6.8.0-20.20+1_ppc64el.deb ... 341s Unpacking linux-headers-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 341s Selecting previously unselected package linux-headers-6.8.0-20. 341s Preparing to unpack .../78-linux-headers-6.8.0-20_6.8.0-20.20_all.deb ... 341s Unpacking linux-headers-6.8.0-20 (6.8.0-20.20) ... 344s Selecting previously unselected package linux-headers-6.8.0-20-generic. 344s Preparing to unpack .../79-linux-headers-6.8.0-20-generic_6.8.0-20.20_ppc64el.deb ... 344s Unpacking linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 346s Preparing to unpack .../80-linux-headers-generic_6.8.0-20.20+1_ppc64el.deb ... 346s Unpacking linux-headers-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 346s Selecting previously unselected package linux-tools-common. 346s Preparing to unpack .../81-linux-tools-common_6.8.0-20.20_all.deb ... 346s Unpacking linux-tools-common (6.8.0-20.20) ... 346s Selecting previously unselected package linux-tools-6.8.0-20. 346s Preparing to unpack .../82-linux-tools-6.8.0-20_6.8.0-20.20_ppc64el.deb ... 346s Unpacking linux-tools-6.8.0-20 (6.8.0-20.20) ... 346s Selecting previously unselected package linux-tools-6.8.0-20-generic. 346s Preparing to unpack .../83-linux-tools-6.8.0-20-generic_6.8.0-20.20_ppc64el.deb ... 346s Unpacking linux-tools-6.8.0-20-generic (6.8.0-20.20) ... 346s Selecting previously unselected package manpages-dev. 346s Preparing to unpack .../84-manpages-dev_6.05.01-1_all.deb ... 346s Unpacking manpages-dev (6.05.01-1) ... 346s Preparing to unpack .../85-python3-distutils_3.12.2-3ubuntu1.1_all.deb ... 346s Unpacking python3-distutils (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 346s Preparing to unpack .../86-python3-lib2to3_3.12.2-3ubuntu1.1_all.deb ... 346s Unpacking python3-lib2to3 (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 346s Preparing to unpack .../87-python3-pyrsistent_0.20.0-1build1_ppc64el.deb ... 346s Unpacking python3-pyrsistent:ppc64el (0.20.0-1build1) over (0.20.0-1) ... 346s Preparing to unpack .../88-python3-typing-extensions_4.10.0-1_all.deb ... 346s Unpacking python3-typing-extensions (4.10.0-1) over (4.9.0-1) ... 346s Selecting previously unselected package ubuntu-kernel-accessories. 346s Preparing to unpack .../89-ubuntu-kernel-accessories_1.536build1_ppc64el.deb ... 346s Unpacking ubuntu-kernel-accessories (1.536build1) ... 346s Preparing to unpack .../90-kpartx_0.9.4-5ubuntu6_ppc64el.deb ... 346s Unpacking kpartx (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 346s Setting up pinentry-curses (1.2.1-3ubuntu4) ... 346s Setting up motd-news-config (13ubuntu8) ... 346s Setting up libtext-iconv-perl:ppc64el (1.7-8build2) ... 346s Setting up libtext-charwidth-perl:ppc64el (0.04-11build2) ... 346s Setting up libsharpyuv0:ppc64el (1.3.2-0.4build2) ... 346s Setting up liburcu8t64:ppc64el (0.14.0-3.1) ... 346s Setting up tcpdump (4.99.4-3ubuntu2) ... 347s Setting up libibverbs1:ppc64el (50.0-2build1) ... 347s Setting up systemd-sysv (255.4-1ubuntu5) ... 347s Setting up ubuntu-kernel-accessories (1.536build1) ... 347s Setting up libapparmor1:ppc64el (4.0.0-beta3-0ubuntu2) ... 347s Setting up libatm1t64:ppc64el (1:2.5.1-5.1) ... 347s Setting up liblerc4:ppc64el (4.0.0+ds-4ubuntu1) ... 347s Setting up libgdbm6t64:ppc64el (1.23-5.1) ... 347s Setting up bsdextrautils (2.39.3-9ubuntu2) ... 347s Setting up libxpm4:ppc64el (1:3.5.17-1build1) ... 347s Setting up libgdbm-compat4t64:ppc64el (1.23-5.1) ... 347s Setting up xdg-user-dirs (0.18-1) ... 347s Setting up ibverbs-providers:ppc64el (50.0-2build1) ... 347s Setting up linux-headers-6.8.0-20 (6.8.0-20.20) ... 347s Setting up libmagic-mgc (1:5.45-3) ... 347s Setting up gawk (1:5.2.1-2build2) ... 347s Setting up manpages (6.05.01-1) ... 347s Setting up libtirpc-common (1.3.4+ds-1.1) ... 347s Setting up libbrotli1:ppc64el (1.1.0-2build1) ... 347s Setting up libsqlite3-0:ppc64el (3.45.1-1ubuntu1) ... 347s Setting up libsasl2-modules:ppc64el (2.1.28+dfsg1-5ubuntu1) ... 347s Setting up libuv1t64:ppc64el (1.48.0-1.1) ... 347s Setting up libmagic1t64:ppc64el (1:5.45-3) ... 347s Setting up rsyslog (8.2312.0-3ubuntu7) ... 347s info: The user `syslog' is already a member of `adm'. 348s Setting up libpsl5t64:ppc64el (0.21.2-1.1) ... 348s Setting up libnghttp2-14:ppc64el (1.59.0-1build1) ... 348s Setting up libdeflate0:ppc64el (1.19-1) ... 348s Setting up linux-libc-dev:ppc64el (6.8.0-20.20) ... 348s Setting up bc (1.07.1-3ubuntu2) ... 348s Setting up libnss-systemd:ppc64el (255.4-1ubuntu5) ... 348s Setting up libparted2t64:ppc64el (3.6-3.1build2) ... 348s Setting up krb5-locales (1.20.1-6ubuntu1) ... 348s Setting up libcom-err2:ppc64el (1.47.0-2.4~exp1ubuntu2) ... 348s Setting up file (1:5.45-3) ... 348s Setting up lshw (02.19.git.2021.06.19.996aaad9c7-2build2) ... 348s Setting up libldap-common (2.6.7+dfsg-1~exp1ubuntu6) ... 348s Setting up libunwind8:ppc64el (1.6.2-3) ... 348s Setting up libprotobuf-c1:ppc64el (1.4.1-1ubuntu3) ... 348s Setting up libjbig0:ppc64el (2.1-6.1ubuntu1) ... 348s Setting up xxd (2:9.1.0016-1ubuntu6) ... 348s Setting up libelf1t64:ppc64el (0.190-1.1build2) ... 348s Setting up libkrb5support0:ppc64el (1.20.1-6ubuntu1) ... 348s Setting up libdw1t64:ppc64el (0.190-1.1build2) ... 348s Setting up linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 348s Setting up eject (2.39.3-9ubuntu2) ... 348s Setting up apparmor (4.0.0-beta3-0ubuntu2) ... 348s Installing new version of config file /etc/apparmor.d/abstractions/authentication ... 348s Installing new version of config file /etc/apparmor.d/abstractions/crypto ... 348s Installing new version of config file /etc/apparmor.d/abstractions/kde-open5 ... 348s Installing new version of config file /etc/apparmor.d/abstractions/openssl ... 348s Installing new version of config file /etc/apparmor.d/code ... 348s Installing new version of config file /etc/apparmor.d/firefox ... 349s Reloading AppArmor profiles 349s Setting up libglib2.0-0t64:ppc64el (2.79.3-3ubuntu5) ... 349s No schema files found: doing nothing. 349s Setting up libglib2.0-data (2.79.3-3ubuntu5) ... 349s Setting up rpcsvc-proto (1.4.2-0ubuntu6) ... 349s Setting up vim-common (2:9.1.0016-1ubuntu6) ... 349s Setting up libqrtr-glib0:ppc64el (1.2.2-1ubuntu3) ... 349s Setting up libslang2:ppc64el (2.3.3-3build1) ... 349s Setting up libnvme1t64 (1.8-3) ... 349s Setting up mtr-tiny (0.95-1.1build1) ... 349s Setting up gnupg-l10n (2.4.4-2ubuntu15) ... 349s Setting up librtmp1:ppc64el (2.4+20151223.gitfa8646d.1-2build6) ... 349s Setting up libdbus-1-3:ppc64el (1.14.10-4ubuntu2) ... 349s Setting up xz-utils (5.6.0-0.2) ... 349s Setting up perl-modules-5.38 (5.38.2-3.2) ... 349s Setting up libproc2-0:ppc64el (2:4.0.4-4ubuntu2) ... 349s Setting up fonts-dejavu-mono (2.37-8) ... 349s Setting up libpng16-16t64:ppc64el (1.6.43-3) ... 349s Setting up systemd-timesyncd (255.4-1ubuntu5) ... 350s Setting up libevent-core-2.1-7:ppc64el (2.1.12-stable-9build1) ... 350s Setting up libss2:ppc64el (1.47.0-2.4~exp1ubuntu2) ... 350s Setting up usb.ids (2024.03.18-1) ... 350s Setting up sudo (1.9.15p5-3ubuntu3) ... 350s Setting up fonts-dejavu-core (2.37-8) ... 350s Setting up dhcpcd-base (1:10.0.6-1ubuntu2) ... 350s Setting up gir1.2-glib-2.0:ppc64el (2.79.3-3ubuntu5) ... 350s Setting up libk5crypto3:ppc64el (1.20.1-6ubuntu1) ... 350s Setting up libjpeg-turbo8:ppc64el (2.1.5-2ubuntu1) ... 350s Setting up logsave (1.47.0-2.4~exp1ubuntu2) ... 350s Setting up libwebp7:ppc64el (1.3.2-0.4build2) ... 350s Setting up libfdisk1:ppc64el (2.39.3-9ubuntu2) ... 350s Setting up libdb5.3t64:ppc64el (5.3.28+dfsg2-6) ... 350s Setting up libaio1t64:ppc64el (0.3.113-6) ... 350s Setting up python-apt-common (2.7.7) ... 350s Setting up mount (2.39.3-9ubuntu2) ... 350s Setting up uuid-runtime (2.39.3-9ubuntu2) ... 351s uuidd.service is a disabled or a static unit not running, not starting it. 351s Setting up libmm-glib0:ppc64el (1.23.4-0ubuntu1) ... 351s Setting up groff-base (1.23.0-3build1) ... 351s Setting up libcrypt-dev:ppc64el (1:4.4.36-4) ... 351s Setting up libplymouth5:ppc64el (24.004.60-1ubuntu6) ... 351s Setting up dbus-session-bus-common (1.14.10-4ubuntu2) ... 351s Setting up procps (2:4.0.4-4ubuntu2) ... 351s Setting up gpgconf (2.4.4-2ubuntu15) ... 351s Setting up libcryptsetup12:ppc64el (2:2.7.0-1ubuntu2) ... 351s Setting up libgirepository-1.0-1:ppc64el (1.79.1-1ubuntu6) ... 351s Setting up libjson-glib-1.0-common (1.8.0-2build1) ... 351s Setting up libkrb5-3:ppc64el (1.20.1-6ubuntu1) ... 351s Setting up libpython3.11-minimal:ppc64el (3.11.8-1build4) ... 351s Setting up libperl5.38t64:ppc64el (5.38.2-3.2) ... 351s Setting up tnftp (20230507-2build1) ... 351s Setting up dbus-system-bus-common (1.14.10-4ubuntu2) ... 351s Setting up libfido2-1:ppc64el (1.14.0-1build1) ... 351s Setting up libc-dev-bin (2.39-0ubuntu6) ... 351s Setting up openssl (3.0.13-0ubuntu2) ... 351s Setting up linux-modules-6.8.0-20-generic (6.8.0-20.20) ... 354s Setting up linux-tools-common (6.8.0-20.20) ... 354s Setting up readline-common (8.2-4) ... 354s Setting up libxml2:ppc64el (2.9.14+dfsg-1.3ubuntu2) ... 354s Setting up libxmuu1:ppc64el (2:1.1.3-3build1) ... 354s Setting up dbus-bin (1.14.10-4ubuntu2) ... 354s Setting up info (7.1-3build1) ... 354s Setting up liblocale-gettext-perl (1.07-6ubuntu4) ... 354s Setting up gpg (2.4.4-2ubuntu15) ... 354s Setting up libgudev-1.0-0:ppc64el (1:238-3ubuntu2) ... 354s Setting up libpolkit-gobject-1-0:ppc64el (124-1ubuntu1) ... 354s Setting up libbpf1:ppc64el (1:1.3.0-2build1) ... 354s Setting up libmbim-glib4:ppc64el (1.31.2-0ubuntu2) ... 354s Setting up rsync (3.2.7-1build1) ... 355s rsync.service is a disabled or a static unit not running, not starting it. 355s Setting up libudisks2-0:ppc64el (2.10.1-6) ... 355s Setting up libkmod2:ppc64el (31+20240202-2ubuntu4) ... 355s Setting up bolt (0.9.6-2build1) ... 356s bolt.service is a disabled or a static unit not running, not starting it. 356s Setting up libllvm18:ppc64el (1:18.1.2-1ubuntu2) ... 356s Setting up gnupg-utils (2.4.4-2ubuntu15) ... 356s Setting up libjpeg8:ppc64el (8c-2ubuntu11) ... 356s Setting up cryptsetup-bin (2:2.7.0-1ubuntu2) ... 356s Setting up python3.11-minimal (3.11.8-1build4) ... 357s Setting up libclang1-18 (1:18.1.2-1ubuntu2) ... 357s Setting up manpages-dev (6.05.01-1) ... 357s Setting up linux-modules-extra-6.8.0-20-generic (6.8.0-20.20) ... 359s Setting up apt-utils (2.7.14) ... 359s Setting up gpg-agent (2.4.4-2ubuntu15) ... 359s Setting up libpython3.12-stdlib:ppc64el (3.12.2-4build3) ... 359s Setting up wget (1.21.4-1ubuntu2) ... 359s Setting up fontconfig-config (2.15.0-1.1ubuntu1) ... 359s Setting up libxmlb2:ppc64el (0.3.15-1build1) ... 359s Setting up libpython3.11-stdlib:ppc64el (3.11.8-1build4) ... 359s Setting up python3.12 (3.12.2-4build3) ... 361s Setting up gpgsm (2.4.4-2ubuntu15) ... 361s Setting up inetutils-telnet (2:2.5-3ubuntu3) ... 361s Setting up libreiserfscore0t64 (1:3.6.27-7.1) ... 361s Setting up parted (3.6-3.1build2) ... 361s Setting up e2fsprogs (1.47.0-2.4~exp1ubuntu2) ... 361s update-initramfs: deferring update (trigger activated) 361s e2scrub_all.service is a disabled or a static unit not running, not starting it. 362s Setting up linux-tools-6.8.0-20 (6.8.0-20.20) ... 362s Setting up linux-headers-generic (6.8.0-20.20+1) ... 362s Setting up dbus-daemon (1.14.10-4ubuntu2) ... 362s Setting up libmbim-proxy (1.31.2-0ubuntu2) ... 362s Setting up vim-tiny (2:9.1.0016-1ubuntu6) ... 362s Setting up kmod (31+20240202-2ubuntu4) ... 362s Setting up libnetplan1:ppc64el (1.0-1) ... 362s Setting up man-db (2.12.0-3build4) ... 362s Updating database of manual pages ... 365s man-db.service is a disabled or a static unit not running, not starting it. 365s Setting up fdisk (2.39.3-9ubuntu2) ... 365s Setting up libjson-glib-1.0-0:ppc64el (1.8.0-2build1) ... 365s Setting up libsasl2-modules-db:ppc64el (2.1.28+dfsg1-5ubuntu1) ... 365s Setting up perl (5.38.2-3.2) ... 365s Setting up libfreetype6:ppc64el (2.13.2+dfsg-1build2) ... 365s Setting up linux-tools-6.8.0-20-generic (6.8.0-20.20) ... 365s Setting up gir1.2-girepository-2.0:ppc64el (1.79.1-1ubuntu6) ... 365s Setting up dbus (1.14.10-4ubuntu2) ... 365s A reboot is required to replace the running dbus-daemon. 365s Please reboot the system when convenient. 365s Setting up shared-mime-info (2.4-1build1) ... 366s Setting up libblockdev-utils3:ppc64el (3.1.0-1build1) ... 366s Setting up libgssapi-krb5-2:ppc64el (1.20.1-6ubuntu1) ... 366s Setting up udev (255.4-1ubuntu5) ... 366s Setting up ftp (20230507-2build1) ... 366s Setting up keyboxd (2.4.4-2ubuntu15) ... 367s Setting up libdpkg-perl (1.22.6ubuntu5) ... 367s Setting up libsasl2-2:ppc64el (2.1.28+dfsg1-5ubuntu1) ... 367s Setting up libssh-4:ppc64el (0.10.6-2build1) ... 367s Setting up libblockdev-nvme3:ppc64el (3.1.0-1build1) ... 367s Setting up libblockdev-fs3:ppc64el (3.1.0-1build1) ... 367s Setting up ieee-data (20220827.1) ... 367s Setting up libtiff6:ppc64el (4.5.1+git230720-4ubuntu1) ... 367s Setting up kpartx (0.9.4-5ubuntu6) ... 367s Setting up libpam-systemd:ppc64el (255.4-1ubuntu5) ... 367s Setting up libpolkit-agent-1-0:ppc64el (124-1ubuntu1) ... 367s Setting up libc6-dev:ppc64el (2.39-0ubuntu6) ... 367s Setting up libgpgme11t64:ppc64el (1.18.0-4.1ubuntu3) ... 367s Setting up libfontconfig1:ppc64el (2.15.0-1.1ubuntu1) ... 367s Setting up netplan-generator (1.0-1) ... 367s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 367s Setting up libclang-cpp18 (1:18.1.2-1ubuntu2) ... 367s Setting up libbpfcc:ppc64el (0.29.1+ds-1ubuntu4) ... 367s Setting up libarchive13t64:ppc64el (3.7.2-1.1ubuntu2) ... 367s Setting up libldap2:ppc64el (2.6.7+dfsg-1~exp1ubuntu6) ... 367s Setting up libpython3-stdlib:ppc64el (3.12.2-0ubuntu1) ... 367s Setting up systemd-resolved (255.4-1ubuntu5) ... 367s Setting up python3.11 (3.11.8-1build4) ... 369s Setting up telnet (0.17+2.5-3ubuntu3) ... 369s Setting up libblockdev-mdraid3:ppc64el (3.1.0-1build1) ... 369s Setting up linux-headers-virtual (6.8.0-20.20+1) ... 369s Setting up libcurl4t64:ppc64el (8.5.0-2ubuntu8) ... 369s Setting up bpftrace (0.20.2-1ubuntu1) ... 369s Setting up bind9-libs:ppc64el (1:9.18.24-0ubuntu3) ... 369s Setting up linux-image-6.8.0-20-generic (6.8.0-20.20) ... 372s I: /boot/vmlinux is now a symlink to vmlinux-6.8.0-20-generic 372s I: /boot/initrd.img is now a symlink to initrd.img-6.8.0-20-generic 372s Setting up libtirpc3t64:ppc64el (1.3.4+ds-1.1) ... 372s Setting up e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) ... 372s Setting up libblockdev-swap3:ppc64el (3.1.0-1build1) ... 372s Setting up plymouth (24.004.60-1ubuntu6) ... 372s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 372s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 378s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 378s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 379s Setting up iproute2 (6.1.0-1ubuntu5) ... 379s Setting up openssh-client (1:9.6p1-3ubuntu11) ... 379s Setting up libgusb2:ppc64el (0.4.8-1build1) ... 379s Setting up btrfs-progs (6.6.3-1.1build1) ... 379s Setting up libblockdev-loop3:ppc64el (3.1.0-1build1) ... 379s Setting up libcurl3t64-gnutls:ppc64el (8.5.0-2ubuntu8) ... 379s Setting up libqmi-glib5:ppc64el (1.35.2-0ubuntu1) ... 379s Setting up python3 (3.12.2-0ubuntu1) ... 379s Setting up libblockdev3:ppc64el (3.1.0-1build1) ... 379s Setting up libjcat1:ppc64el (0.2.0-2build2) ... 379s Setting up multipath-tools (0.9.4-5ubuntu6) ... 380s Setting up dpkg-dev (1.22.6ubuntu5) ... 380s Setting up libblockdev-part3:ppc64el (3.1.0-1build1) ... 380s Setting up dirmngr (2.4.4-2ubuntu15) ... 380s Setting up dbus-user-session (1.14.10-4ubuntu2) ... 380s Setting up plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) ... 380s update-initramfs: deferring update (trigger activated) 380s Setting up python3-cryptography (41.0.7-4build2) ... 380s Setting up python3-gi (3.47.0-3build1) ... 381s Setting up libgd3:ppc64el (2.3.3-9ubuntu3) ... 381s Setting up python3-typing-extensions (4.10.0-1) ... 381s Setting up lsof (4.95.0-1build2) ... 381s Setting up python3-pyrsistent:ppc64el (0.20.0-1build1) ... 381s Setting up python3-netaddr (0.8.0-2ubuntu1) ... 381s Setting up libnsl2:ppc64el (1.3.0-3build2) ... 381s Setting up gnupg (2.4.4-2ubuntu15) ... 381s Setting up python3-netplan (1.0-1) ... 381s Setting up curl (8.5.0-2ubuntu8) ... 381s Setting up libvolume-key1:ppc64el (0.3.12-7build1) ... 381s Setting up linux-image-virtual (6.8.0-20.20+1) ... 381s Setting up bind9-host (1:9.18.24-0ubuntu3) ... 381s Setting up python3-lib2to3 (3.12.2-3ubuntu1.1) ... 382s Setting up python3-bpfcc (0.29.1+ds-1ubuntu4) ... 382s Setting up libc-devtools (2.39-0ubuntu6) ... 382s Setting up python3-pkg-resources (68.1.2-2ubuntu1) ... 382s Setting up python3-distutils (3.12.2-3ubuntu1.1) ... 382s python3.12: can't get files for byte-compilation 382s Setting up openssh-sftp-server (1:9.6p1-3ubuntu11) ... 382s Setting up linux-image-generic (6.8.0-20.20+1) ... 382s Setting up python3-dbus (1.3.2-5build2) ... 382s Setting up python3-setuptools (68.1.2-2ubuntu1) ... 383s Setting up gpg-wks-client (2.4.4-2ubuntu15) ... 383s Setting up openssh-server (1:9.6p1-3ubuntu11) ... 383s Replacing config file /etc/ssh/sshd_config with new version 385s Created symlink /etc/systemd/system/ssh.service.requires/ssh.socket → /usr/lib/systemd/system/ssh.socket. 387s Setting up linux-generic (6.8.0-20.20+1) ... 387s Setting up libblockdev-crypto3:ppc64el (3.1.0-1build1) ... 387s Setting up python3-gdbm:ppc64el (3.12.2-3ubuntu1.1) ... 387s Setting up python3-apt (2.7.7) ... 387s Setting up libfwupd2:ppc64el (1.9.15-2) ... 387s Setting up libqmi-proxy (1.35.2-0ubuntu1) ... 387s Setting up netplan.io (1.0-1) ... 387s Setting up linux-virtual (6.8.0-20.20+1) ... 387s Setting up grub-common (2.12-1ubuntu5) ... 387s Setting up bpfcc-tools (0.29.1+ds-1ubuntu4) ... 387s Setting up bind9-dnsutils (1:9.18.24-0ubuntu3) ... 387s Setting up ubuntu-pro-client (31.2.2) ... 389s Setting up fwupd (1.9.15-2) ... 390s fwupd-offline-update.service is a disabled or a static unit not running, not starting it. 390s fwupd-refresh.service is a disabled or a static unit not running, not starting it. 390s Setting up ubuntu-pro-client-l10n (31.2.2) ... 390s Setting up udisks2 (2.10.1-6) ... 391s Setting up grub2-common (2.12-1ubuntu5) ... 391s Setting up grub-ieee1275-bin (2.12-1ubuntu5) ... 391s Setting up grub-ieee1275 (2.12-1ubuntu5) ... 391s Installing for powerpc-ieee1275 platform. 391s Installation finished. No error reported. 391s Sourcing file `/etc/default/grub' 391s Sourcing file `/etc/default/grub.d/50-cloudimg-settings.cfg' 391s Generating grub configuration file ... 391s Found linux image: /boot/vmlinux-6.8.0-20-generic 392s Found linux image: /boot/vmlinux-6.8.0-11-generic 392s Found initrd image: /boot/initrd.img-6.8.0-11-generic 392s Warning: os-prober will not be executed to detect other bootable partitions. 392s Systems on them will not be added to the GRUB boot configuration. 392s Check GRUB_DISABLE_OS_PROBER documentation entry. 392s Adding boot menu entry for UEFI Firmware Settings ... 392s done 392s Processing triggers for libc-bin (2.39-0ubuntu6) ... 392s Processing triggers for ufw (0.36.2-5) ... 392s Processing triggers for systemd (255.4-1ubuntu5) ... 392s Processing triggers for debianutils (5.17) ... 392s Processing triggers for install-info (7.1-3build1) ... 392s Processing triggers for initramfs-tools (0.142ubuntu23) ... 392s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 392s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 398s Processing triggers for linux-image-6.8.0-20-generic (6.8.0-20.20) ... 398s /etc/kernel/postinst.d/initramfs-tools: 398s update-initramfs: Generating /boot/initrd.img-6.8.0-20-generic 398s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 404s /etc/kernel/postinst.d/zz-update-grub: 404s Sourcing file `/etc/default/grub' 404s Sourcing file `/etc/default/grub.d/50-cloudimg-settings.cfg' 404s Generating grub configuration file ... 404s Found linux image: /boot/vmlinux-6.8.0-20-generic 404s Found initrd image: /boot/initrd.img-6.8.0-20-generic 404s Found linux image: /boot/vmlinux-6.8.0-11-generic 404s Found initrd image: /boot/initrd.img-6.8.0-11-generic 404s Warning: os-prober will not be executed to detect other bootable partitions. 404s Systems on them will not be added to the GRUB boot configuration. 404s Check GRUB_DISABLE_OS_PROBER documentation entry. 404s Adding boot menu entry for UEFI Firmware Settings ... 404s done 406s Reading package lists... 406s Building dependency tree... 406s Reading state information... 406s The following packages will be REMOVED: 406s libaio1* libnetplan0* python3-distutils* python3-lib2to3* 406s 0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded. 406s After this operation, 1613 kB disk space will be freed. 406s (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 ... 112169 files and directories currently installed.) 406s Removing libaio1:ppc64el (0.3.113-5) ... 406s Removing libnetplan0:ppc64el (0.107.1-3) ... 406s Removing python3-distutils (3.12.2-3ubuntu1.1) ... 406s Removing python3-lib2to3 (3.12.2-3ubuntu1.1) ... 407s Processing triggers for libc-bin (2.39-0ubuntu6) ... 407s autopkgtest [04:35:14]: rebooting testbed after setup commands that affected boot 576s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 588s autopkgtest [04:38:15]: testbed running kernel: Linux 6.8.0-20-generic #20-Ubuntu SMP Mon Mar 18 11:46:05 UTC 2024 591s autopkgtest [04:38:18]: @@@@@@@@@@@@@@@@@@@@ apt-source r-cran-matrixstats 593s Get:1 http://ftpmaster.internal/ubuntu noble/universe r-cran-matrixstats 1.2.0-1 (dsc) [2230 B] 593s Get:2 http://ftpmaster.internal/ubuntu noble/universe r-cran-matrixstats 1.2.0-1 (tar) [211 kB] 593s Get:3 http://ftpmaster.internal/ubuntu noble/universe r-cran-matrixstats 1.2.0-1 (diff) [4752 B] 593s gpgv: Signature made Mon Jan 8 21:38:59 2024 UTC 593s gpgv: using RSA key F1F007320A035541F0A663CA578A0494D1C646D1 593s gpgv: issuer "tille@debian.org" 593s gpgv: Can't check signature: No public key 593s dpkg-source: warning: cannot verify inline signature for ./r-cran-matrixstats_1.2.0-1.dsc: no acceptable signature found 593s autopkgtest [04:38:20]: testing package r-cran-matrixstats version 1.2.0-1 594s autopkgtest [04:38:21]: build not needed 595s autopkgtest [04:38:22]: test run-unit-test: preparing testbed 597s Reading package lists... 598s Building dependency tree... 598s Reading state information... 598s Starting pkgProblemResolver with broken count: 0 598s Starting 2 pkgProblemResolver with broken count: 0 598s Done 598s The following additional packages will be installed: 598s fontconfig fonts-glyphicons-halflings fonts-mathjax libblas3 libcairo2 598s libdatrie1 libgfortran5 libgomp1 libgraphite2-3 libharfbuzz0b libice6 598s libjs-bootstrap libjs-highlight.js libjs-jquery libjs-jquery-datatables 598s libjs-mathjax liblapack3 libpango-1.0-0 libpangocairo-1.0-0 598s libpangoft2-1.0-0 libpaper-utils libpaper1 libpixman-1-0 libsm6 libtcl8.6 598s libthai-data libthai0 libtk8.6 libxcb-render0 libxcb-shm0 libxft2 598s libxrender1 libxss1 libxt6t64 node-normalize.css r-base-core 598s r-cran-base64enc r-cran-cli r-cran-colorspace r-cran-commonmark 598s r-cran-digest r-cran-evaluate r-cran-fansi r-cran-farver r-cran-ggplot2 598s r-cran-glue r-cran-gtable r-cran-highr r-cran-isoband r-cran-knitr 598s r-cran-labeling r-cran-lattice r-cran-lifecycle r-cran-magrittr 598s r-cran-markdown r-cran-mass r-cran-matrix r-cran-matrixstats r-cran-mgcv 598s r-cran-munsell r-cran-nlme r-cran-pillar r-cran-pkgconfig r-cran-r.cache 598s r-cran-r.devices r-cran-r.methodss3 r-cran-r.oo r-cran-r.rsp r-cran-r.utils 598s r-cran-r6 r-cran-rcolorbrewer r-cran-rlang r-cran-scales r-cran-tibble 598s r-cran-utf8 r-cran-vctrs r-cran-viridislite r-cran-withr r-cran-xfun 598s r-cran-yaml tcl tcl8.6 unzip x11-common xdg-utils zip 598s Suggested packages: 598s fonts-mathjax-extras fonts-stix libjs-mathjax-doc tk8.6 libjs-html5shiv 598s elpa-ess r-doc-info | r-doc-pdf r-mathlib r-base-html r-cran-kernsmooth 598s r-cran-kernlab r-cran-mvtnorm r-cran-vcd r-cran-shiny r-cran-shinyjs 598s r-cran-dplyr r-cran-png r-cran-jpeg r-cran-rmarkdown r-cran-viridis 598s r-cran-covr r-cran-magick r-cran-sf r-cran-bit64 r-cran-dbi 598s r-cran-formattable r-cran-nanotime r-cran-palmerpenguins r-cran-stringi 598s r-cran-survival r-cran-units r-cran-vdiffr r-cran-testthat r-cran-cairo 598s r-cran-codetools r-cran-bench r-cran-blob r-cran-brio r-cran-callr 598s r-cran-crayon r-cran-here r-cran-hms r-cran-htmltools r-cran-pkgbuild 598s r-cran-pkgload r-cran-purrr r-cran-tidyr tcl-tclreadline 598s Recommended packages: 598s javascript-common r-recommended r-base-dev r-doc-html r-cran-callr 598s r-cran-covr r-cran-crayon r-cran-htmltools r-cran-htmlwidgets r-cran-mockery 598s r-cran-processx r-cran-ps r-cran-rmarkdown r-cran-rprojroot 598s r-cran-rstudioapi r-cran-testthat r-cran-whoami r-cran-curl r-cran-xml2 598s r-cran-unitizer r-cran-dplyr r-cran-hexbin r-cran-hmisc r-cran-mapproj 598s r-cran-maps r-cran-multcomp r-cran-profvis r-cran-quantreg r-cran-ragg 598s r-cran-rpart r-cran-sf r-cran-svglite r-cran-vdiffr r-cran-dbi 598s r-cran-rsqlite r-cran-waldo r-cran-testit r-cran-bslib r-cran-codetools 598s r-cran-formatr r-cran-gridsvg r-cran-jpeg r-cran-magick r-cran-png 598s r-cran-reticulate r-cran-rgl r-cran-sass r-cran-tikzdevice r-cran-tinytex 598s r-cran-webshot node-highlight.js r-cran-lintr r-cran-tidyverse r-cran-rcurl 598s r-cran-lubridate libjs-remark-slide r-cran-fs r-cran-usethis r-cran-bit64 598s r-cran-dichromat r-cran-hms r-cran-stringi r-cran-data.table r-cran-mockr 598s r-cran-formattable r-cran-generics r-cran-pkgdown r-cran-zeallot r-cran-mime 598s r-cran-remotes r-cran-renv r-cran-jsonlite r-cran-runit 598s libfile-mimeinfo-perl libnet-dbus-perl libx11-protocol-perl x11-utils 598s x11-xserver-utils 598s The following NEW packages will be installed: 598s autopkgtest-satdep fontconfig fonts-glyphicons-halflings fonts-mathjax 598s libblas3 libcairo2 libdatrie1 libgfortran5 libgomp1 libgraphite2-3 598s libharfbuzz0b libice6 libjs-bootstrap libjs-highlight.js libjs-jquery 598s libjs-jquery-datatables libjs-mathjax liblapack3 libpango-1.0-0 598s libpangocairo-1.0-0 libpangoft2-1.0-0 libpaper-utils libpaper1 libpixman-1-0 598s libsm6 libtcl8.6 libthai-data libthai0 libtk8.6 libxcb-render0 libxcb-shm0 598s libxft2 libxrender1 libxss1 libxt6t64 node-normalize.css r-base-core 598s r-cran-base64enc r-cran-cli r-cran-colorspace r-cran-commonmark 598s r-cran-digest r-cran-evaluate r-cran-fansi r-cran-farver r-cran-ggplot2 598s r-cran-glue r-cran-gtable r-cran-highr r-cran-isoband r-cran-knitr 598s r-cran-labeling r-cran-lattice r-cran-lifecycle r-cran-magrittr 598s r-cran-markdown r-cran-mass r-cran-matrix r-cran-matrixstats r-cran-mgcv 598s r-cran-munsell r-cran-nlme r-cran-pillar r-cran-pkgconfig r-cran-r.cache 598s r-cran-r.devices r-cran-r.methodss3 r-cran-r.oo r-cran-r.rsp r-cran-r.utils 598s r-cran-r6 r-cran-rcolorbrewer r-cran-rlang r-cran-scales r-cran-tibble 598s r-cran-utf8 r-cran-vctrs r-cran-viridislite r-cran-withr r-cran-xfun 598s r-cran-yaml tcl tcl8.6 unzip x11-common xdg-utils zip 598s 0 upgraded, 87 newly installed, 0 to remove and 0 not upgraded. 598s Need to get 81.9 MB/81.9 MB of archives. 598s After this operation, 189 MB of additional disk space will be used. 598s Get:1 /tmp/autopkgtest.5aLxeV/1-autopkgtest-satdep.deb autopkgtest-satdep ppc64el 0 [756 B] 598s Get:2 http://ftpmaster.internal/ubuntu noble/main ppc64el fontconfig ppc64el 2.15.0-1.1ubuntu1 [192 kB] 598s Get:3 http://ftpmaster.internal/ubuntu noble/universe ppc64el fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 598s Get:4 http://ftpmaster.internal/ubuntu noble/main ppc64el fonts-mathjax all 2.7.9+dfsg-1 [2208 kB] 598s Get:5 http://ftpmaster.internal/ubuntu noble/main ppc64el libblas3 ppc64el 3.12.0-3 [227 kB] 598s Get:6 http://ftpmaster.internal/ubuntu noble/main ppc64el libpixman-1-0 ppc64el 0.42.2-1 [300 kB] 598s Get:7 http://ftpmaster.internal/ubuntu noble/main ppc64el libxcb-render0 ppc64el 1.15-1 [17.2 kB] 598s Get:8 http://ftpmaster.internal/ubuntu noble/main ppc64el libxcb-shm0 ppc64el 1.15-1 [5896 B] 598s Get:9 http://ftpmaster.internal/ubuntu noble/main ppc64el libxrender1 ppc64el 1:0.9.10-1.1 [23.3 kB] 598s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcairo2 ppc64el 1.18.0-1ubuntu1 [751 kB] 599s Get:11 http://ftpmaster.internal/ubuntu noble/main ppc64el libdatrie1 ppc64el 0.2.13-3 [25.1 kB] 599s Get:12 http://ftpmaster.internal/ubuntu noble/main ppc64el libgfortran5 ppc64el 14-20240315-1ubuntu1 [574 kB] 599s Get:13 http://ftpmaster.internal/ubuntu noble/main ppc64el libgomp1 ppc64el 14-20240315-1ubuntu1 [161 kB] 599s Get:14 http://ftpmaster.internal/ubuntu noble/main ppc64el libgraphite2-3 ppc64el 1.3.14-2 [105 kB] 599s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libharfbuzz0b ppc64el 8.3.0-2build1 [580 kB] 599s Get:16 http://ftpmaster.internal/ubuntu noble/main ppc64el x11-common all 1:7.7+23ubuntu2 [23.4 kB] 599s Get:17 http://ftpmaster.internal/ubuntu noble/main ppc64el libice6 ppc64el 2:1.0.10-1build2 [49.3 kB] 599s Get:18 http://ftpmaster.internal/ubuntu noble/universe ppc64el libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 599s Get:19 http://ftpmaster.internal/ubuntu noble/universe ppc64el libjs-highlight.js all 9.18.5+dfsg1-2 [385 kB] 599s Get:20 http://ftpmaster.internal/ubuntu noble/main ppc64el libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 599s Get:21 http://ftpmaster.internal/ubuntu noble/universe ppc64el libjs-jquery-datatables all 1.11.5+dfsg-2 [146 kB] 599s Get:22 http://ftpmaster.internal/ubuntu noble/main ppc64el liblapack3 ppc64el 3.12.0-3 [2804 kB] 599s Get:23 http://ftpmaster.internal/ubuntu noble/main ppc64el libthai-data all 0.1.29-2 [158 kB] 599s Get:24 http://ftpmaster.internal/ubuntu noble/main ppc64el libthai0 ppc64el 0.1.29-2 [21.4 kB] 599s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpango-1.0-0 ppc64el 1.52.1+ds-1 [271 kB] 599s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpangoft2-1.0-0 ppc64el 1.52.1+ds-1 [50.5 kB] 599s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpangocairo-1.0-0 ppc64el 1.52.1+ds-1 [31.1 kB] 599s Get:28 http://ftpmaster.internal/ubuntu noble/main ppc64el libpaper1 ppc64el 1.1.29 [13.5 kB] 599s Get:29 http://ftpmaster.internal/ubuntu noble/main ppc64el libpaper-utils ppc64el 1.1.29 [8710 B] 599s Get:30 http://ftpmaster.internal/ubuntu noble/main ppc64el libsm6 ppc64el 2:1.2.3-1build2 [18.5 kB] 599s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtcl8.6 ppc64el 8.6.14+dfsg-1 [1204 kB] 599s Get:32 http://ftpmaster.internal/ubuntu noble/main ppc64el libxft2 ppc64el 2.3.6-1 [59.8 kB] 599s Get:33 http://ftpmaster.internal/ubuntu noble/main ppc64el libxss1 ppc64el 1:1.2.3-1build2 [8982 B] 599s Get:34 http://ftpmaster.internal/ubuntu noble/main ppc64el libtk8.6 ppc64el 8.6.14-1 [944 kB] 599s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libxt6t64 ppc64el 1:1.2.1-1.2 [204 kB] 599s Get:36 http://ftpmaster.internal/ubuntu noble/universe ppc64el node-normalize.css all 8.0.1-5 [10.8 kB] 599s Get:37 http://ftpmaster.internal/ubuntu noble/main ppc64el zip ppc64el 3.0-13 [192 kB] 599s Get:38 http://ftpmaster.internal/ubuntu noble/main ppc64el unzip ppc64el 6.0-28ubuntu3 [192 kB] 599s Get:39 http://ftpmaster.internal/ubuntu noble/main ppc64el xdg-utils all 1.1.3-4.1ubuntu3 [62.0 kB] 599s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el r-base-core ppc64el 4.3.3-2build1 [27.4 MB] 600s Get:41 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-base64enc ppc64el 0.1-3-3 [28.1 kB] 600s Get:42 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-cli ppc64el 3.6.2-1 [1405 kB] 600s Get:43 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-colorspace ppc64el 2.1-0+dfsg-1 [1542 kB] 600s Get:44 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-commonmark ppc64el 1.9.1-1 [142 kB] 600s Get:45 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-digest ppc64el 0.6.34-1 [198 kB] 600s Get:46 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-evaluate all 0.23-1 [90.2 kB] 600s Get:47 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-fansi ppc64el 1.0.5-1 [627 kB] 600s Get:48 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-farver ppc64el 2.1.1-1 [1365 kB] 600s Get:49 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-glue ppc64el 1.7.0-1 [155 kB] 600s Get:50 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-rlang ppc64el 1.1.3-1 [1696 kB] 600s Get:51 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-lifecycle all 1.0.4+dfsg-1 [110 kB] 600s Get:52 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-gtable all 0.3.4+dfsg-1 [191 kB] 600s Get:53 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-isoband ppc64el 0.2.7-1 [1486 kB] 600s Get:54 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-mass ppc64el 7.3-60.0.1-1 [1126 kB] 600s Get:55 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-lattice ppc64el 0.22-5-1 [1343 kB] 600s Get:56 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-nlme ppc64el 3.1.164-1 [2281 kB] 600s Get:57 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-matrix ppc64el 1.6-5-1 [4057 kB] 600s Get:58 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-mgcv ppc64el 1.9-1-1 [3393 kB] 600s Get:59 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-labeling all 0.4.3-1 [62.1 kB] 600s Get:60 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-munsell all 0.5.0-2build1 [208 kB] 600s Get:61 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-r6 all 2.5.1-1 [99.0 kB] 600s Get:62 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-rcolorbrewer all 1.1-3-1build1 [55.4 kB] 601s Get:63 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-viridislite all 0.4.2-2 [1088 kB] 601s Get:64 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-scales all 1.3.0-1 [603 kB] 601s Get:65 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-magrittr ppc64el 2.0.3-1 [154 kB] 601s Get:66 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-utf8 ppc64el 1.2.4-1 [148 kB] 601s Get:67 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-vctrs ppc64el 0.6.5-1 [1399 kB] 601s Get:68 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-pillar all 1.9.0+dfsg-1 [464 kB] 601s Get:69 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-pkgconfig all 2.0.3-2build1 [19.7 kB] 601s Get:70 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-tibble ppc64el 3.2.1+dfsg-2 [415 kB] 601s Get:71 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el r-cran-withr all 3.0.0+dfsg-1 [228 kB] 601s Get:72 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-ggplot2 all 3.4.4+dfsg-1 [3411 kB] 601s Get:73 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-xfun ppc64el 0.41+dfsg-1 [415 kB] 601s Get:74 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-highr all 0.10+dfsg-1 [38.3 kB] 601s Get:75 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-yaml ppc64el 2.3.8-1 [139 kB] 601s Get:76 http://ftpmaster.internal/ubuntu noble/main ppc64el libjs-mathjax all 2.7.9+dfsg-1 [5665 kB] 601s Get:77 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-knitr all 1.45+dfsg-1 [917 kB] 601s Get:78 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-markdown all 1.12+dfsg-1 [179 kB] 601s Get:79 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-matrixstats ppc64el 1.2.0-1 [530 kB] 601s Get:80 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-r.methodss3 all 1.8.2-1 [84.0 kB] 601s Get:81 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-r.oo all 1.26.0-1 [955 kB] 601s Get:82 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-r.utils all 2.12.3-1 [1386 kB] 601s Get:83 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-r.cache all 0.16.0-1 [113 kB] 601s Get:84 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-r.devices all 2.17.2+ds-1 [398 kB] 601s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el tcl8.6 ppc64el 8.6.14+dfsg-1 [14.8 kB] 601s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el tcl ppc64el 8.6.14 [4016 B] 601s Get:87 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-r.rsp all 0.46.0+ds-1 [1412 kB] 601s Preconfiguring packages ... 602s Fetched 81.9 MB in 3s (24.1 MB/s) 602s Selecting previously unselected package fontconfig. 602s (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 ... 111945 files and directories currently installed.) 602s Preparing to unpack .../00-fontconfig_2.15.0-1.1ubuntu1_ppc64el.deb ... 602s Unpacking fontconfig (2.15.0-1.1ubuntu1) ... 602s Selecting previously unselected package fonts-glyphicons-halflings. 602s Preparing to unpack .../01-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 602s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 602s Selecting previously unselected package fonts-mathjax. 602s Preparing to unpack .../02-fonts-mathjax_2.7.9+dfsg-1_all.deb ... 602s Unpacking fonts-mathjax (2.7.9+dfsg-1) ... 602s Selecting previously unselected package libblas3:ppc64el. 602s Preparing to unpack .../03-libblas3_3.12.0-3_ppc64el.deb ... 602s Unpacking libblas3:ppc64el (3.12.0-3) ... 602s Selecting previously unselected package libpixman-1-0:ppc64el. 602s Preparing to unpack .../04-libpixman-1-0_0.42.2-1_ppc64el.deb ... 602s Unpacking libpixman-1-0:ppc64el (0.42.2-1) ... 602s Selecting previously unselected package libxcb-render0:ppc64el. 602s Preparing to unpack .../05-libxcb-render0_1.15-1_ppc64el.deb ... 602s Unpacking libxcb-render0:ppc64el (1.15-1) ... 602s Selecting previously unselected package libxcb-shm0:ppc64el. 602s Preparing to unpack .../06-libxcb-shm0_1.15-1_ppc64el.deb ... 602s Unpacking libxcb-shm0:ppc64el (1.15-1) ... 602s Selecting previously unselected package libxrender1:ppc64el. 602s Preparing to unpack .../07-libxrender1_1%3a0.9.10-1.1_ppc64el.deb ... 602s Unpacking libxrender1:ppc64el (1:0.9.10-1.1) ... 602s Selecting previously unselected package libcairo2:ppc64el. 602s Preparing to unpack .../08-libcairo2_1.18.0-1ubuntu1_ppc64el.deb ... 602s Unpacking libcairo2:ppc64el (1.18.0-1ubuntu1) ... 602s Selecting previously unselected package libdatrie1:ppc64el. 602s Preparing to unpack .../09-libdatrie1_0.2.13-3_ppc64el.deb ... 602s Unpacking libdatrie1:ppc64el (0.2.13-3) ... 602s Selecting previously unselected package libgfortran5:ppc64el. 602s Preparing to unpack .../10-libgfortran5_14-20240315-1ubuntu1_ppc64el.deb ... 602s Unpacking libgfortran5:ppc64el (14-20240315-1ubuntu1) ... 602s Selecting previously unselected package libgomp1:ppc64el. 602s Preparing to unpack .../11-libgomp1_14-20240315-1ubuntu1_ppc64el.deb ... 602s Unpacking libgomp1:ppc64el (14-20240315-1ubuntu1) ... 602s Selecting previously unselected package libgraphite2-3:ppc64el. 602s Preparing to unpack .../12-libgraphite2-3_1.3.14-2_ppc64el.deb ... 602s Unpacking libgraphite2-3:ppc64el (1.3.14-2) ... 602s Selecting previously unselected package libharfbuzz0b:ppc64el. 602s Preparing to unpack .../13-libharfbuzz0b_8.3.0-2build1_ppc64el.deb ... 602s Unpacking libharfbuzz0b:ppc64el (8.3.0-2build1) ... 602s Selecting previously unselected package x11-common. 602s Preparing to unpack .../14-x11-common_1%3a7.7+23ubuntu2_all.deb ... 602s Unpacking x11-common (1:7.7+23ubuntu2) ... 602s Selecting previously unselected package libice6:ppc64el. 602s Preparing to unpack .../15-libice6_2%3a1.0.10-1build2_ppc64el.deb ... 602s Unpacking libice6:ppc64el (2:1.0.10-1build2) ... 602s Selecting previously unselected package libjs-bootstrap. 602s Preparing to unpack .../16-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 602s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 602s Selecting previously unselected package libjs-highlight.js. 602s Preparing to unpack .../17-libjs-highlight.js_9.18.5+dfsg1-2_all.deb ... 602s Unpacking libjs-highlight.js (9.18.5+dfsg1-2) ... 602s Selecting previously unselected package libjs-jquery. 602s Preparing to unpack .../18-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 602s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 602s Selecting previously unselected package libjs-jquery-datatables. 602s Preparing to unpack .../19-libjs-jquery-datatables_1.11.5+dfsg-2_all.deb ... 602s Unpacking libjs-jquery-datatables (1.11.5+dfsg-2) ... 602s Selecting previously unselected package liblapack3:ppc64el. 602s Preparing to unpack .../20-liblapack3_3.12.0-3_ppc64el.deb ... 602s Unpacking liblapack3:ppc64el (3.12.0-3) ... 602s Selecting previously unselected package libthai-data. 602s Preparing to unpack .../21-libthai-data_0.1.29-2_all.deb ... 602s Unpacking libthai-data (0.1.29-2) ... 602s Selecting previously unselected package libthai0:ppc64el. 602s Preparing to unpack .../22-libthai0_0.1.29-2_ppc64el.deb ... 602s Unpacking libthai0:ppc64el (0.1.29-2) ... 602s Selecting previously unselected package libpango-1.0-0:ppc64el. 602s Preparing to unpack .../23-libpango-1.0-0_1.52.1+ds-1_ppc64el.deb ... 602s Unpacking libpango-1.0-0:ppc64el (1.52.1+ds-1) ... 602s Selecting previously unselected package libpangoft2-1.0-0:ppc64el. 602s Preparing to unpack .../24-libpangoft2-1.0-0_1.52.1+ds-1_ppc64el.deb ... 602s Unpacking libpangoft2-1.0-0:ppc64el (1.52.1+ds-1) ... 602s Selecting previously unselected package libpangocairo-1.0-0:ppc64el. 602s Preparing to unpack .../25-libpangocairo-1.0-0_1.52.1+ds-1_ppc64el.deb ... 602s Unpacking libpangocairo-1.0-0:ppc64el (1.52.1+ds-1) ... 602s Selecting previously unselected package libpaper1:ppc64el. 602s Preparing to unpack .../26-libpaper1_1.1.29_ppc64el.deb ... 602s Unpacking libpaper1:ppc64el (1.1.29) ... 602s Selecting previously unselected package libpaper-utils. 602s Preparing to unpack .../27-libpaper-utils_1.1.29_ppc64el.deb ... 602s Unpacking libpaper-utils (1.1.29) ... 603s Selecting previously unselected package libsm6:ppc64el. 603s Preparing to unpack .../28-libsm6_2%3a1.2.3-1build2_ppc64el.deb ... 603s Unpacking libsm6:ppc64el (2:1.2.3-1build2) ... 603s Selecting previously unselected package libtcl8.6:ppc64el. 603s Preparing to unpack .../29-libtcl8.6_8.6.14+dfsg-1_ppc64el.deb ... 603s Unpacking libtcl8.6:ppc64el (8.6.14+dfsg-1) ... 603s Selecting previously unselected package libxft2:ppc64el. 603s Preparing to unpack .../30-libxft2_2.3.6-1_ppc64el.deb ... 603s Unpacking libxft2:ppc64el (2.3.6-1) ... 603s Selecting previously unselected package libxss1:ppc64el. 603s Preparing to unpack .../31-libxss1_1%3a1.2.3-1build2_ppc64el.deb ... 603s Unpacking libxss1:ppc64el (1:1.2.3-1build2) ... 603s Selecting previously unselected package libtk8.6:ppc64el. 603s Preparing to unpack .../32-libtk8.6_8.6.14-1_ppc64el.deb ... 603s Unpacking libtk8.6:ppc64el (8.6.14-1) ... 603s Selecting previously unselected package libxt6t64:ppc64el. 603s Preparing to unpack .../33-libxt6t64_1%3a1.2.1-1.2_ppc64el.deb ... 603s Unpacking libxt6t64:ppc64el (1:1.2.1-1.2) ... 603s Selecting previously unselected package node-normalize.css. 603s Preparing to unpack .../34-node-normalize.css_8.0.1-5_all.deb ... 603s Unpacking node-normalize.css (8.0.1-5) ... 603s Selecting previously unselected package zip. 603s Preparing to unpack .../35-zip_3.0-13_ppc64el.deb ... 603s Unpacking zip (3.0-13) ... 603s Selecting previously unselected package unzip. 603s Preparing to unpack .../36-unzip_6.0-28ubuntu3_ppc64el.deb ... 603s Unpacking unzip (6.0-28ubuntu3) ... 603s Selecting previously unselected package xdg-utils. 603s Preparing to unpack .../37-xdg-utils_1.1.3-4.1ubuntu3_all.deb ... 603s Unpacking xdg-utils (1.1.3-4.1ubuntu3) ... 603s Selecting previously unselected package r-base-core. 603s Preparing to unpack .../38-r-base-core_4.3.3-2build1_ppc64el.deb ... 603s Unpacking r-base-core (4.3.3-2build1) ... 603s Selecting previously unselected package r-cran-base64enc. 603s Preparing to unpack .../39-r-cran-base64enc_0.1-3-3_ppc64el.deb ... 603s Unpacking r-cran-base64enc (0.1-3-3) ... 603s Selecting previously unselected package r-cran-cli. 603s Preparing to unpack .../40-r-cran-cli_3.6.2-1_ppc64el.deb ... 603s Unpacking r-cran-cli (3.6.2-1) ... 603s Selecting previously unselected package r-cran-colorspace. 603s Preparing to unpack .../41-r-cran-colorspace_2.1-0+dfsg-1_ppc64el.deb ... 603s Unpacking r-cran-colorspace (2.1-0+dfsg-1) ... 603s Selecting previously unselected package r-cran-commonmark. 603s Preparing to unpack .../42-r-cran-commonmark_1.9.1-1_ppc64el.deb ... 603s Unpacking r-cran-commonmark (1.9.1-1) ... 603s Selecting previously unselected package r-cran-digest. 603s Preparing to unpack .../43-r-cran-digest_0.6.34-1_ppc64el.deb ... 603s Unpacking r-cran-digest (0.6.34-1) ... 603s Selecting previously unselected package r-cran-evaluate. 603s Preparing to unpack .../44-r-cran-evaluate_0.23-1_all.deb ... 603s Unpacking r-cran-evaluate (0.23-1) ... 603s Selecting previously unselected package r-cran-fansi. 603s Preparing to unpack .../45-r-cran-fansi_1.0.5-1_ppc64el.deb ... 603s Unpacking r-cran-fansi (1.0.5-1) ... 603s Selecting previously unselected package r-cran-farver. 603s Preparing to unpack .../46-r-cran-farver_2.1.1-1_ppc64el.deb ... 603s Unpacking r-cran-farver (2.1.1-1) ... 603s Selecting previously unselected package r-cran-glue. 603s Preparing to unpack .../47-r-cran-glue_1.7.0-1_ppc64el.deb ... 603s Unpacking r-cran-glue (1.7.0-1) ... 604s Selecting previously unselected package r-cran-rlang. 604s Preparing to unpack .../48-r-cran-rlang_1.1.3-1_ppc64el.deb ... 604s Unpacking r-cran-rlang (1.1.3-1) ... 604s Selecting previously unselected package r-cran-lifecycle. 604s Preparing to unpack .../49-r-cran-lifecycle_1.0.4+dfsg-1_all.deb ... 604s Unpacking r-cran-lifecycle (1.0.4+dfsg-1) ... 604s Selecting previously unselected package r-cran-gtable. 604s Preparing to unpack .../50-r-cran-gtable_0.3.4+dfsg-1_all.deb ... 604s Unpacking r-cran-gtable (0.3.4+dfsg-1) ... 604s Selecting previously unselected package r-cran-isoband. 604s Preparing to unpack .../51-r-cran-isoband_0.2.7-1_ppc64el.deb ... 604s Unpacking r-cran-isoband (0.2.7-1) ... 604s Selecting previously unselected package r-cran-mass. 604s Preparing to unpack .../52-r-cran-mass_7.3-60.0.1-1_ppc64el.deb ... 604s Unpacking r-cran-mass (7.3-60.0.1-1) ... 604s Selecting previously unselected package r-cran-lattice. 604s Preparing to unpack .../53-r-cran-lattice_0.22-5-1_ppc64el.deb ... 604s Unpacking r-cran-lattice (0.22-5-1) ... 604s Selecting previously unselected package r-cran-nlme. 604s Preparing to unpack .../54-r-cran-nlme_3.1.164-1_ppc64el.deb ... 604s Unpacking r-cran-nlme (3.1.164-1) ... 604s Selecting previously unselected package r-cran-matrix. 604s Preparing to unpack .../55-r-cran-matrix_1.6-5-1_ppc64el.deb ... 604s Unpacking r-cran-matrix (1.6-5-1) ... 604s Selecting previously unselected package r-cran-mgcv. 604s Preparing to unpack .../56-r-cran-mgcv_1.9-1-1_ppc64el.deb ... 604s Unpacking r-cran-mgcv (1.9-1-1) ... 604s Selecting previously unselected package r-cran-labeling. 604s Preparing to unpack .../57-r-cran-labeling_0.4.3-1_all.deb ... 604s Unpacking r-cran-labeling (0.4.3-1) ... 604s Selecting previously unselected package r-cran-munsell. 604s Preparing to unpack .../58-r-cran-munsell_0.5.0-2build1_all.deb ... 604s Unpacking r-cran-munsell (0.5.0-2build1) ... 604s Selecting previously unselected package r-cran-r6. 604s Preparing to unpack .../59-r-cran-r6_2.5.1-1_all.deb ... 604s Unpacking r-cran-r6 (2.5.1-1) ... 604s Selecting previously unselected package r-cran-rcolorbrewer. 604s Preparing to unpack .../60-r-cran-rcolorbrewer_1.1-3-1build1_all.deb ... 604s Unpacking r-cran-rcolorbrewer (1.1-3-1build1) ... 604s Selecting previously unselected package r-cran-viridislite. 604s Preparing to unpack .../61-r-cran-viridislite_0.4.2-2_all.deb ... 604s Unpacking r-cran-viridislite (0.4.2-2) ... 604s Selecting previously unselected package r-cran-scales. 604s Preparing to unpack .../62-r-cran-scales_1.3.0-1_all.deb ... 604s Unpacking r-cran-scales (1.3.0-1) ... 604s Selecting previously unselected package r-cran-magrittr. 604s Preparing to unpack .../63-r-cran-magrittr_2.0.3-1_ppc64el.deb ... 604s Unpacking r-cran-magrittr (2.0.3-1) ... 604s Selecting previously unselected package r-cran-utf8. 604s Preparing to unpack .../64-r-cran-utf8_1.2.4-1_ppc64el.deb ... 604s Unpacking r-cran-utf8 (1.2.4-1) ... 604s Selecting previously unselected package r-cran-vctrs. 604s Preparing to unpack .../65-r-cran-vctrs_0.6.5-1_ppc64el.deb ... 604s Unpacking r-cran-vctrs (0.6.5-1) ... 604s Selecting previously unselected package r-cran-pillar. 604s Preparing to unpack .../66-r-cran-pillar_1.9.0+dfsg-1_all.deb ... 604s Unpacking r-cran-pillar (1.9.0+dfsg-1) ... 604s Selecting previously unselected package r-cran-pkgconfig. 604s Preparing to unpack .../67-r-cran-pkgconfig_2.0.3-2build1_all.deb ... 604s Unpacking r-cran-pkgconfig (2.0.3-2build1) ... 604s Selecting previously unselected package r-cran-tibble. 604s Preparing to unpack .../68-r-cran-tibble_3.2.1+dfsg-2_ppc64el.deb ... 604s Unpacking r-cran-tibble (3.2.1+dfsg-2) ... 604s Selecting previously unselected package r-cran-withr. 604s Preparing to unpack .../69-r-cran-withr_3.0.0+dfsg-1_all.deb ... 604s Unpacking r-cran-withr (3.0.0+dfsg-1) ... 604s Selecting previously unselected package r-cran-ggplot2. 604s Preparing to unpack .../70-r-cran-ggplot2_3.4.4+dfsg-1_all.deb ... 604s Unpacking r-cran-ggplot2 (3.4.4+dfsg-1) ... 604s Selecting previously unselected package r-cran-xfun. 604s Preparing to unpack .../71-r-cran-xfun_0.41+dfsg-1_ppc64el.deb ... 604s Unpacking r-cran-xfun (0.41+dfsg-1) ... 604s Selecting previously unselected package r-cran-highr. 604s Preparing to unpack .../72-r-cran-highr_0.10+dfsg-1_all.deb ... 604s Unpacking r-cran-highr (0.10+dfsg-1) ... 604s Selecting previously unselected package r-cran-yaml. 604s Preparing to unpack .../73-r-cran-yaml_2.3.8-1_ppc64el.deb ... 604s Unpacking r-cran-yaml (2.3.8-1) ... 604s Selecting previously unselected package libjs-mathjax. 604s Preparing to unpack .../74-libjs-mathjax_2.7.9+dfsg-1_all.deb ... 604s Unpacking libjs-mathjax (2.7.9+dfsg-1) ... 606s Selecting previously unselected package r-cran-knitr. 606s Preparing to unpack .../75-r-cran-knitr_1.45+dfsg-1_all.deb ... 606s Unpacking r-cran-knitr (1.45+dfsg-1) ... 606s Selecting previously unselected package r-cran-markdown. 606s Preparing to unpack .../76-r-cran-markdown_1.12+dfsg-1_all.deb ... 606s Unpacking r-cran-markdown (1.12+dfsg-1) ... 606s Selecting previously unselected package r-cran-matrixstats. 606s Preparing to unpack .../77-r-cran-matrixstats_1.2.0-1_ppc64el.deb ... 606s Unpacking r-cran-matrixstats (1.2.0-1) ... 606s Selecting previously unselected package r-cran-r.methodss3. 606s Preparing to unpack .../78-r-cran-r.methodss3_1.8.2-1_all.deb ... 606s Unpacking r-cran-r.methodss3 (1.8.2-1) ... 606s Selecting previously unselected package r-cran-r.oo. 606s Preparing to unpack .../79-r-cran-r.oo_1.26.0-1_all.deb ... 606s Unpacking r-cran-r.oo (1.26.0-1) ... 606s Selecting previously unselected package r-cran-r.utils. 606s Preparing to unpack .../80-r-cran-r.utils_2.12.3-1_all.deb ... 606s Unpacking r-cran-r.utils (2.12.3-1) ... 606s Selecting previously unselected package r-cran-r.cache. 606s Preparing to unpack .../81-r-cran-r.cache_0.16.0-1_all.deb ... 606s Unpacking r-cran-r.cache (0.16.0-1) ... 606s Selecting previously unselected package r-cran-r.devices. 606s Preparing to unpack .../82-r-cran-r.devices_2.17.2+ds-1_all.deb ... 606s Unpacking r-cran-r.devices (2.17.2+ds-1) ... 606s Selecting previously unselected package tcl8.6. 606s Preparing to unpack .../83-tcl8.6_8.6.14+dfsg-1_ppc64el.deb ... 606s Unpacking tcl8.6 (8.6.14+dfsg-1) ... 606s Selecting previously unselected package tcl. 606s Preparing to unpack .../84-tcl_8.6.14_ppc64el.deb ... 606s Unpacking tcl (8.6.14) ... 606s Selecting previously unselected package r-cran-r.rsp. 606s Preparing to unpack .../85-r-cran-r.rsp_0.46.0+ds-1_all.deb ... 606s Unpacking r-cran-r.rsp (0.46.0+ds-1) ... 606s Selecting previously unselected package autopkgtest-satdep. 606s Preparing to unpack .../86-1-autopkgtest-satdep.deb ... 606s Unpacking autopkgtest-satdep (0) ... 606s Setting up libgraphite2-3:ppc64el (1.3.14-2) ... 606s Setting up libpixman-1-0:ppc64el (0.42.2-1) ... 606s Setting up libpaper1:ppc64el (1.1.29) ... 606s 606s Creating config file /etc/papersize with new version 606s Setting up fontconfig (2.15.0-1.1ubuntu1) ... 609s Regenerating fonts cache... done. 609s Setting up fonts-mathjax (2.7.9+dfsg-1) ... 609s Setting up libjs-mathjax (2.7.9+dfsg-1) ... 609s Setting up libxrender1:ppc64el (1:0.9.10-1.1) ... 609s Setting up libdatrie1:ppc64el (0.2.13-3) ... 609s Setting up libxcb-render0:ppc64el (1.15-1) ... 609s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 609s Setting up unzip (6.0-28ubuntu3) ... 609s Setting up x11-common (1:7.7+23ubuntu2) ... 609s Setting up libxcb-shm0:ppc64el (1.15-1) ... 609s Setting up libpaper-utils (1.1.29) ... 609s Setting up libgomp1:ppc64el (14-20240315-1ubuntu1) ... 609s Setting up libcairo2:ppc64el (1.18.0-1ubuntu1) ... 609s Setting up zip (3.0-13) ... 609s Setting up libblas3:ppc64el (3.12.0-3) ... 609s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/blas/libblas.so.3 to provide /usr/lib/powerpc64le-linux-gnu/libblas.so.3 (libblas.so.3-powerpc64le-linux-gnu) in auto mode 609s Setting up libtcl8.6:ppc64el (8.6.14+dfsg-1) ... 609s Setting up libgfortran5:ppc64el (14-20240315-1ubuntu1) ... 609s Setting up libjs-highlight.js (9.18.5+dfsg1-2) ... 609s Setting up libharfbuzz0b:ppc64el (8.3.0-2build1) ... 609s Setting up libthai-data (0.1.29-2) ... 609s Setting up libxss1:ppc64el (1:1.2.3-1build2) ... 609s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 609s Setting up node-normalize.css (8.0.1-5) ... 609s Setting up xdg-utils (1.1.3-4.1ubuntu3) ... 609s update-alternatives: using /usr/bin/xdg-open to provide /usr/bin/open (open) in auto mode 609s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 609s Setting up libice6:ppc64el (2:1.0.10-1build2) ... 609s Setting up tcl8.6 (8.6.14+dfsg-1) ... 609s Setting up liblapack3:ppc64el (3.12.0-3) ... 609s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/powerpc64le-linux-gnu/liblapack.so.3 (liblapack.so.3-powerpc64le-linux-gnu) in auto mode 609s Setting up libxft2:ppc64el (2.3.6-1) ... 609s Setting up libtk8.6:ppc64el (8.6.14-1) ... 609s Setting up libjs-jquery-datatables (1.11.5+dfsg-2) ... 609s Setting up libthai0:ppc64el (0.1.29-2) ... 609s Setting up tcl (8.6.14) ... 609s Setting up libsm6:ppc64el (2:1.2.3-1build2) ... 609s Setting up libpango-1.0-0:ppc64el (1.52.1+ds-1) ... 609s Setting up libxt6t64:ppc64el (1:1.2.1-1.2) ... 609s Setting up libpangoft2-1.0-0:ppc64el (1.52.1+ds-1) ... 609s Setting up libpangocairo-1.0-0:ppc64el (1.52.1+ds-1) ... 609s Setting up r-base-core (4.3.3-2build1) ... 609s 609s Creating config file /etc/R/Renviron with new version 609s Setting up r-cran-labeling (0.4.3-1) ... 609s Setting up r-cran-lattice (0.22-5-1) ... 609s Setting up r-cran-nlme (3.1.164-1) ... 609s Setting up r-cran-farver (2.1.1-1) ... 609s Setting up r-cran-viridislite (0.4.2-2) ... 609s Setting up r-cran-commonmark (1.9.1-1) ... 609s Setting up r-cran-r6 (2.5.1-1) ... 609s Setting up r-cran-magrittr (2.0.3-1) ... 609s Setting up r-cran-rlang (1.1.3-1) ... 609s Setting up r-cran-matrixstats (1.2.0-1) ... 609s Setting up r-cran-xfun (0.41+dfsg-1) ... 609s Setting up r-cran-withr (3.0.0+dfsg-1) ... 609s Setting up r-cran-base64enc (0.1-3-3) ... 609s Setting up r-cran-digest (0.6.34-1) ... 609s Setting up r-cran-yaml (2.3.8-1) ... 609s Setting up r-cran-evaluate (0.23-1) ... 609s Setting up r-cran-highr (0.10+dfsg-1) ... 609s Setting up r-cran-fansi (1.0.5-1) ... 609s Setting up r-cran-mass (7.3-60.0.1-1) ... 609s Setting up r-cran-glue (1.7.0-1) ... 609s Setting up r-cran-cli (3.6.2-1) ... 609s Setting up r-cran-lifecycle (1.0.4+dfsg-1) ... 609s Setting up r-cran-r.methodss3 (1.8.2-1) ... 609s Setting up r-cran-pkgconfig (2.0.3-2build1) ... 609s Setting up r-cran-utf8 (1.2.4-1) ... 609s Setting up r-cran-colorspace (2.1-0+dfsg-1) ... 609s Setting up r-cran-markdown (1.12+dfsg-1) ... 609s Setting up r-cran-rcolorbrewer (1.1-3-1build1) ... 609s Setting up r-cran-isoband (0.2.7-1) ... 609s Setting up r-cran-gtable (0.3.4+dfsg-1) ... 609s Setting up r-cran-matrix (1.6-5-1) ... 609s Setting up r-cran-knitr (1.45+dfsg-1) ... 609s Setting up r-cran-mgcv (1.9-1-1) ... 609s Setting up r-cran-vctrs (0.6.5-1) ... 609s Setting up r-cran-pillar (1.9.0+dfsg-1) ... 609s Setting up r-cran-munsell (0.5.0-2build1) ... 609s Setting up r-cran-tibble (3.2.1+dfsg-2) ... 609s Setting up r-cran-r.oo (1.26.0-1) ... 609s Setting up r-cran-scales (1.3.0-1) ... 609s Setting up r-cran-r.utils (2.12.3-1) ... 609s Setting up r-cran-ggplot2 (3.4.4+dfsg-1) ... 609s Setting up r-cran-r.devices (2.17.2+ds-1) ... 609s Setting up r-cran-r.cache (0.16.0-1) ... 609s Setting up r-cran-r.rsp (0.46.0+ds-1) ... 609s Setting up autopkgtest-satdep (0) ... 609s Processing triggers for man-db (2.12.0-3build4) ... 610s Processing triggers for install-info (7.1-3build1) ... 610s Processing triggers for libc-bin (2.39-0ubuntu6) ... 614s (Reading database ... 122790 files and directories currently installed.) 614s Removing autopkgtest-satdep (0) ... 615s autopkgtest [04:38:42]: test run-unit-test: [----------------------- 615s 615s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 615s Copyright (C) 2024 The R Foundation for Statistical Computing 615s Platform: powerpc64le-unknown-linux-gnu (64-bit) 615s 615s R is free software and comes with ABSOLUTELY NO WARRANTY. 615s You are welcome to redistribute it under certain conditions. 615s Type 'license()' or 'licence()' for distribution details. 615s 615s R is a collaborative project with many contributors. 615s Type 'contributors()' for more information and 615s 'citation()' on how to cite R or R packages in publications. 615s 615s Type 'demo()' for some demos, 'help()' for on-line help, or 615s 'help.start()' for an HTML browser interface to help. 615s Type 'q()' to quit R. 615s 615s > library("matrixStats") 615s > 615s > allocArray_R <- function(nrow, ncol, value = NA) { 615s + array(data = value, dim = dim) 615s + } 615s > 615s > values <- list( 615s + -1L, 0L, +1L, NA_integer_, .Machine$integer.max, 615s + -1, 0, +1, NA_real_, NaN, -Inf, +Inf, 615s + .Machine$double.xmin, .Machine$double.xmax, 615s + .Machine$double.eps, .Machine$double.neg.eps, 615s + FALSE, TRUE, NA 615s + ) 615s > 615s > dim <- c(2L, 4L, 3L) 615s > for (value in values) { 615s + x0 <- allocArray_R(dim, value = value) 615s + x <- allocArray(dim, value = value) 615s + if (!identical(x, x0)) { 615s + str(list(dim = dim, value = value, x = x, x0 = x0)) 615s + stopifnot(identical(x, x0)) 615s + } 615s + } 615s > 615s 615s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 615s Copyright (C) 2024 The R Foundation for Statistical Computing 615s Platform: powerpc64le-unknown-linux-gnu (64-bit) 615s 615s R is free software and comes with ABSOLUTELY NO WARRANTY. 615s You are welcome to redistribute it under certain conditions. 615s Type 'license()' or 'licence()' for distribution details. 615s 615s R is a collaborative project with many contributors. 615s Type 'contributors()' for more information and 615s 'citation()' on how to cite R or R packages in publications. 615s 615s Type 'demo()' for some demos, 'help()' for on-line help, or 615s 'help.start()' for an HTML browser interface to help. 615s Type 'q()' to quit R. 615s 615s > library("matrixStats") 615s > 615s > allocMatrix_R <- function(nrow, ncol, value = NA) { 615s + matrix(data = value, nrow = nrow, ncol = ncol) 615s + } 615s > 615s > values <- list( 615s + -1L, 0L, +1L, NA_integer_, .Machine$integer.max, 615s + -1, 0, +1, NA_real_, NaN, -Inf, +Inf, 615s + .Machine$double.xmin, .Machine$double.xmax, 615s + .Machine$double.eps, .Machine$double.neg.eps, 615s + FALSE, TRUE, NA 615s + ) 615s > 615s > nrow <- 2L 615s > ncol <- 3L 615s > for (value in values) { 615s + x0 <- allocMatrix_R(nrow, ncol, value = value) 615s + x <- allocMatrix(nrow, ncol, value = value) 615s + if (!identical(x, x0)) { 615s + str(list(nrow = nrow, ncol = ncol, value = value, x = x, x0 = x0)) 615s + stopifnot(identical(x, x0)) 615s + } 615s + } 615s > 616s 616s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 616s Copyright (C) 2024 The R Foundation for Statistical Computing 616s Platform: powerpc64le-unknown-linux-gnu (64-bit) 616s 616s R is free software and comes with ABSOLUTELY NO WARRANTY. 616s You are welcome to redistribute it under certain conditions. 616s Type 'license()' or 'licence()' for distribution details. 616s 616s R is a collaborative project with many contributors. 616s Type 'contributors()' for more information and 616s 'citation()' on how to cite R or R packages in publications. 616s 616s Type 'demo()' for some demos, 'help()' for on-line help, or 616s 'help.start()' for an HTML browser interface to help. 616s Type 'q()' to quit R. 616s 616s > library("matrixStats") 616s > 616s > allocVector_R <- function(length, value = NA) { 616s + x <- vector(mode = typeof(value), length = length) 616s + if (!is.finite(value) || value != 0) x[] <- value 616s + x 616s + } 616s > 616s > values <- list( 616s + -1L, 0L, +1L, NA_integer_, .Machine$integer.max, 616s + -1, 0, +1, NA_real_, NaN, -Inf, +Inf, 616s + .Machine$double.xmin, .Machine$double.xmax, 616s + .Machine$double.eps, .Machine$double.neg.eps, 616s + FALSE, TRUE, NA 616s + ) 616s > 616s > n <- 10L 616s > for (value in values) { 616s + x0 <- allocVector_R(n, value = value) 616s + x <- allocVector(n, value = value) 616s + if (!identical(x, x0)) { 616s + str(list(n = n, value = value, x = x, x0 = x0)) 616s + stopifnot(identical(x, x0)) 616s + } 616s + } 616s > 616s 616s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 616s Copyright (C) 2024 The R Foundation for Statistical Computing 616s Platform: powerpc64le-unknown-linux-gnu (64-bit) 616s 616s R is free software and comes with ABSOLUTELY NO WARRANTY. 616s You are welcome to redistribute it under certain conditions. 616s Type 'license()' or 'licence()' for distribution details. 616s 616s R is a collaborative project with many contributors. 616s Type 'contributors()' for more information and 616s 'citation()' on how to cite R or R packages in publications. 616s 616s Type 'demo()' for some demos, 'help()' for on-line help, or 616s 'help.start()' for an HTML browser interface to help. 616s Type 'q()' to quit R. 616s 616s > library("matrixStats") 616s > 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > # Setup 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > data <- data.frame( 616s + logical = c(TRUE, FALSE, TRUE), 616s + integer = 1:3, 616s + double = seq(from = 1.0, to = 3.0, by = 1.0), 616s + complex = seq(from = 1.0, to = 3.0, by = 1.0) + 1.0i, 616s + character = letters[1:3], 616s + stringsAsFactors = FALSE 616s + ) 616s > 616s > modes <- names(data) 616s > 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > # Special cases 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > cat("NULL...\n") 616s NULL... 616s > stopifnot(identical(anyMissing(NULL), FALSE)) 616s > cat("NULL...done\n") 616s NULL...done 616s > 616s > cat("raw...\n") 616s raw... 616s > stopifnot(identical(anyMissing(as.raw(0:2)), FALSE)) 616s > cat("raw...done\n") 616s raw...done 616s > 616s > cat("list(NULL)...\n") 616s list(NULL)... 616s > stopifnot(identical(anyMissing(list(NULL)), FALSE)) 616s > cat("list(NULL)...done\n") 616s list(NULL)...done 616s > 616s > 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > # Scalars, vectors, and matrices of various modes 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > for (mode in modes) { 616s + cat(sprintf("Mode: %s...\n", mode)) 616s + values <- data[[mode]] 616s + 616s + # Scalars 616s + cat(" scalar\n") 616s + x <- values[1L] 616s + print(x) 616s + stopifnot(identical(anyMissing(x), FALSE)) 616s + is.na(x) <- TRUE 616s + print(x) 616s + stopifnot(identical(anyMissing(x), TRUE)) 616s + 616s + # Vectors 616s + cat(" vector\n") 616s + x <- values 616s + print(x) 616s + stopifnot(identical(anyMissing(x), FALSE)) 616s + is.na(x)[2L] <- TRUE 616s + print(x) 616s + stopifnot(identical(anyMissing(x), TRUE)) 616s + 616s + # Matrices 616s + cat(" matrix\n") 616s + x <- matrix(c(values, values), ncol = 2L) 616s + print(x) 616s + stopifnot(identical(anyMissing(x), FALSE)) 616s + is.na(x)[2L] <- TRUE 616s + print(x) 616s + stopifnot(identical(anyMissing(x), TRUE)) 616s + 616s + cat(sprintf("Mode: %s...done\n", mode)) 616s + } # for (mode ...) 616s Mode: logical... 616s scalar 616s [1] TRUE 616s [1] NA 616s vector 616s [1] TRUE FALSE TRUE 616s [1] TRUE NA TRUE 616s matrix 616s [,1] [,2] 616s [1,] TRUE TRUE 616s [2,] FALSE FALSE 616s [3,] TRUE TRUE 616s [,1] [,2] 616s [1,] TRUE TRUE 616s [2,] NA FALSE 616s [3,] TRUE TRUE 616s Mode: logical...done 616s Mode: integer... 616s scalar 616s [1] 1 616s [1] NA 616s vector 616s [1] 1 2 3 616s [1] 1 NA 3 616s matrix 616s [,1] [,2] 616s [1,] 1 1 616s [2,] 2 2 616s [3,] 3 3 616s [,1] [,2] 616s [1,] 1 1 616s [2,] NA 2 616s [3,] 3 3 616s Mode: integer...done 616s Mode: double... 616s scalar 616s [1] 1 616s [1] NA 616s vector 616s [1] 1 2 3 616s [1] 1 NA 3 616s matrix 616s [,1] [,2] 616s [1,] 1 1 616s [2,] 2 2 616s [3,] 3 3 616s [,1] [,2] 616s [1,] 1 1 616s [2,] NA 2 616s [3,] 3 3 616s Mode: double...done 616s Mode: complex... 616s scalar 616s [1] 1+1i 616s [1] NA 616s vector 616s [1] 1+1i 2+1i 3+1i 616s [1] 1+1i NA 3+1i 616s matrix 616s [,1] [,2] 616s [1,] 1+1i 1+1i 616s [2,] 2+1i 2+1i 616s [3,] 3+1i 3+1i 616s [,1] [,2] 616s [1,] 1+1i 1+1i 616s [2,] NA 2+1i 616s [3,] 3+1i 3+1i 616s Mode: complex...done 616s Mode: character... 616s scalar 616s [1] "a" 616s [1] NA 616s vector 616s [1] "a" "b" "c" 616s [1] "a" NA "c" 616s matrix 616s [,1] [,2] 616s [1,] "a" "a" 616s [2,] "b" "b" 616s [3,] "c" "c" 616s [,1] [,2] 616s [1,] "a" "a" 616s [2,] NA "b" 616s [3,] "c" "c" 616s Mode: character...done 616s > 616s > 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > # Data frames 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > cat("data.frame...\n") 616s data.frame... 616s > x <- data 616s > stopifnot(identical(anyMissing(x), FALSE)) 616s > for (mode in modes) { 616s + x <- data 616s + is.na(x[[mode]])[2L] <- TRUE 616s + print(x) 616s + stopifnot(identical(anyMissing(x), TRUE)) 616s + } # for (mode ...) 616s logical integer double complex character 616s 1 TRUE 1 1 1+1i a 616s 2 NA 2 2 2+1i b 616s 3 TRUE 3 3 3+1i c 616s logical integer double complex character 616s 1 TRUE 1 1 1+1i a 616s 2 FALSE NA 2 2+1i b 616s 3 TRUE 3 3 3+1i c 616s logical integer double complex character 616s 1 TRUE 1 1 1+1i a 616s 2 FALSE 2 NA 2+1i b 616s 3 TRUE 3 3 3+1i c 616s logical integer double complex character 616s 1 TRUE 1 1 1+1i a 616s 2 FALSE 2 2 NA b 616s 3 TRUE 3 3 3+1i c 616s logical integer double complex character 616s 1 TRUE 1 1 1+1i a 616s 2 FALSE 2 2 2+1i 616s 3 TRUE 3 3 3+1i c 616s > cat("data.frame...done\n") 616s data.frame...done 616s > 616s > 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > # Lists 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > cat("list...\n") 616s list... 616s > x <- as.list(data) 616s > stopifnot(identical(anyMissing(x), FALSE)) 616s > for (mode in modes) { 616s + x <- as.list(data) 616s + is.na(x[[mode]])[2L] <- TRUE 616s + print(x) 616s + stopifnot(identical(anyMissing(x), TRUE)) 616s + } # for (mode ...) 616s $logical 616s [1] TRUE NA TRUE 616s 616s $integer 616s [1] 1 2 3 616s 616s $double 616s [1] 1 2 3 616s 616s $complex 616s [1] 1+1i 2+1i 3+1i 616s 616s $character 616s [1] "a" "b" "c" 616s 616s $logical 616s [1] TRUE FALSE TRUE 616s 616s $integer 616s [1] 1 NA 3 616s 616s $double 616s [1] 1 2 3 616s 616s $complex 616s [1] 1+1i 2+1i 3+1i 616s 616s $character 616s [1] "a" "b" "c" 616s 616s $logical 616s [1] TRUE FALSE TRUE 616s 616s $integer 616s [1] 1 2 3 616s 616s $double 616s [1] 1 NA 3 616s 616s $complex 616s [1] 1+1i 2+1i 3+1i 616s 616s $character 616s [1] "a" "b" "c" 616s 616s $logical 616s [1] TRUE FALSE TRUE 616s 616s $integer 616s [1] 1 2 3 616s 616s $double 616s [1] 1 2 3 616s 616s $complex 616s [1] 1+1i NA 3+1i 616s 616s $character 616s [1] "a" "b" "c" 616s 616s $logical 616s [1] TRUE FALSE TRUE 616s 616s $integer 616s [1] 1 2 3 616s 616s $double 616s [1] 1 2 3 616s 616s $complex 616s [1] 1+1i 2+1i 3+1i 616s 616s $character 616s [1] "a" NA "c" 616s 616s > cat("list...done\n") 616s list...done 616s > 616s 616s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 616s Copyright (C) 2024 The R Foundation for Statistical Computing 616s Platform: powerpc64le-unknown-linux-gnu (64-bit) 616s 616s R is free software and comes with ABSOLUTELY NO WARRANTY. 616s You are welcome to redistribute it under certain conditions. 616s Type 'license()' or 'licence()' for distribution details. 616s 616s R is a collaborative project with many contributors. 616s Type 'contributors()' for more information and 616s 'citation()' on how to cite R or R packages in publications. 616s 616s Type 'demo()' for some demos, 'help()' for on-line help, or 616s 'help.start()' for an HTML browser interface to help. 616s Type 'q()' to quit R. 616s 616s > library("matrixStats") 616s > 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > # Subsetted tests 616s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 616s > source("utils/validateIndicesFramework.R") 616s > x <- runif(4, min = -3, max = 3) 616s > x[2] <- NA 616s > for (mode in c("integer", "numeric")) { 616s + storage.mode(x) <- mode 616s + for (idxs in index_cases) { 616s + validateIndicesTestVector(x, idxs, 616s + ftest = anyMissing, fsure = function(x, ...) { 616s + anyValue(x, value = NA) 616s + }) 616s + } 616s + } 616s > 616s 616s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 616s Copyright (C) 2024 The R Foundation for Statistical Computing 616s Platform: powerpc64le-unknown-linux-gnu (64-bit) 616s 616s R is free software and comes with ABSOLUTELY NO WARRANTY. 616s You are welcome to redistribute it under certain conditions. 616s Type 'license()' or 'licence()' for distribution details. 616s 616s R is a collaborative project with many contributors. 616s Type 'contributors()' for more information and 616s 'citation()' on how to cite R or R packages in publications. 616s 616s Type 'demo()' for some demos, 'help()' for on-line help, or 616s 'help.start()' for an HTML browser interface to help. 616s Type 'q()' to quit R. 616s 616s > ## 1. Don't test with valgrind 616s > ## 2. Test only R (>= 3.0.2) because of that's what knitr requires 616s > if (getRversion() >= "3.0.2" && Sys.getenv("_R_CHECK_USE_VALGRIND_") == "") { 616s + 616s + ## 3. Make sure all suggested packages are installed / can be loaded 616s + pkgs <- c("base64enc", "ggplot2", "knitr", "markdown", "microbenchmark", 616s + "R.devices", "R.rsp") 616s + if (all(unlist(lapply(pkgs, FUN = requireNamespace)))) { 616s + html <- matrixStats:::benchmark("binCounts") 616s + print(html) 616s + } 616s + 616s + rm(list = "pkgs") 616s + 616s + } 616s Loading required namespace: base64enc 616s Loading required namespace: ggplot2 617s Loading required namespace: knitr 617s Loading required namespace: markdown 617s Loading required namespace: microbenchmark 617s Failed with error: ‘there is no package called ‘microbenchmark’’ 617s Loading required namespace: R.devices 617s Loading required namespace: R.rsp 617s > 617s 617s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 617s Copyright (C) 2024 The R Foundation for Statistical Computing 617s Platform: powerpc64le-unknown-linux-gnu (64-bit) 617s 617s R is free software and comes with ABSOLUTELY NO WARRANTY. 617s You are welcome to redistribute it under certain conditions. 617s Type 'license()' or 'licence()' for distribution details. 617s 617s R is a collaborative project with many contributors. 617s Type 'contributors()' for more information and 617s 'citation()' on how to cite R or R packages in publications. 617s 617s Type 'demo()' for some demos, 'help()' for on-line help, or 617s 'help.start()' for an HTML browser interface to help. 617s Type 'q()' to quit R. 617s 617s > library("matrixStats") 617s > library("stats") 617s > 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > # Local functions 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > binCounts_hist <- function(x, bx, right = FALSE, ...) { 617s + n0 <- graphics::hist(x, breaks = bx, right = right, 617s + include.lowest = TRUE, plot = FALSE)$counts 617s + } 617s > 617s > 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > # Non-sorted and sorted positions 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > nx <- 1000L # Number of data points 617s > nb <- 200L # Number of bins 617s > 617s > # Uniformely distributed bins 617s > bx <- seq(from = 0, to = 1, length.out = nb + 1L) 617s > bx <- c(-1, bx, 2) 617s > 617s > # Sample data points 617s > set.seed(0xBEEF) 617s > x <- runif(nx, min = 0, max = 1) 617s > 617s > for (kk in 1:2) { 617s + n0 <- binCounts_hist(x, bx = bx) 617s + n1 <- binCounts(x, bx = bx) 617s + # Sanity check 617s + stopifnot(identical(n1, n0)) 617s + 617s + # Check reversed 617s + n1r <- rev(binCounts(-x, bx = rev(-bx), right = TRUE)) 617s + stopifnot(identical(n1r, n1)) 617s + 617s + # Retry with a sorted vector 617s + x <- sort(x) 617s + } # for (kk in 1:2) 617s > 617s > 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > # Missing values 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > x <- 1:40 617s > x[20] <- NA_integer_ 617s > nx <- length(x) 617s > 617s > # Bins 617s > bx <- c(0.5, 50.5, 100.5, 150.5, 200.5) 617s > 617s > y_smooth0 <- binCounts_hist(x, bx = bx) 617s > y_smooth <- binCounts(x, bx = bx) 617s > # Sanity check 617s > stopifnot(all.equal(y_smooth, y_smooth0)) 617s > 617s > 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > # Border cases 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > x <- 1:10 617s > bx <- min(x) - c(10, 1) 617s > y_smooth <- binCounts(x, bx = bx) 617s > stopifnot(all.equal(y_smooth, 0L)) 617s > bx <- range(x) 617s > y_smooth <- binCounts(x, bx = bx) 617s > stopifnot(all.equal(y_smooth, length(x) - 1L)) 617s > bx <- max(x) + c(1, 10) 617s > y_smooth <- binCounts(x, bx = bx) 617s > stopifnot(all.equal(y_smooth, 0L)) 617s > 617s > # Every second empty 617s > x <- 1:10 617s > bx <- rep(x, each = 2L) 617s > y_smooth <- binCounts(x, bx = bx) 617s > stopifnot(all.equal(y_smooth, rep(c(0L, 1L), length.out = length(bx) - 1L))) 617s > ## NOTE: binCounts_hist() does not give the same last bin count 617s > 617s > 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > # Exception handling 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > # Zero bin bounderies (invalid bin definition) 617s > bx <- double(0L) 617s > res <- try(y_smooth <- binCounts(1:10, bx = bx), silent = TRUE) 617s > stopifnot(inherits(res, "try-error")) 617s > 617s > # One bin boundery (invalid bin definition) 617s > bx <- double(1L) 617s > res <- try(y_smooth <- binCounts(1:10, bx = bx), silent = TRUE) 617s > stopifnot(inherits(res, "try-error")) 617s > 617s 617s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 617s Copyright (C) 2024 The R Foundation for Statistical Computing 617s Platform: powerpc64le-unknown-linux-gnu (64-bit) 617s 617s R is free software and comes with ABSOLUTELY NO WARRANTY. 617s You are welcome to redistribute it under certain conditions. 617s Type 'license()' or 'licence()' for distribution details. 617s 617s R is a collaborative project with many contributors. 617s Type 'contributors()' for more information and 617s 'citation()' on how to cite R or R packages in publications. 617s 617s Type 'demo()' for some demos, 'help()' for on-line help, or 617s 'help.start()' for an HTML browser interface to help. 617s Type 'q()' to quit R. 617s 617s > library("matrixStats") 617s > 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > # Local functions 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > binCounts_hist <- function(x, bx, right = FALSE, ...) { 617s + n0 <- graphics::hist(x, breaks = bx, right = right, 617s + include.lowest = TRUE, plot = FALSE)$counts 617s + } 617s > 617s > 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > # Subsetted tests 617s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 617s > source("utils/validateIndicesFramework.R") 617s > x <- runif(6, min = -6, max = 6) 617s > storage.mode(x) <- "integer" 617s > bx <- c(-6, 0, 3, 4, 10) 617s > for (idxs in index_cases) { 617s + validateIndicesTestVector(x, idxs, 617s + ftest = binCounts, fsure = binCounts_hist, 617s + bx = bx, right = FALSE) 617s + validateIndicesTestVector(x, idxs, 617s + ftest = binCounts, fsure = binCounts_hist, 617s + bx = bx, right = TRUE) 617s + } 617s > 618s 618s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 618s Copyright (C) 2024 The R Foundation for Statistical Computing 618s Platform: powerpc64le-unknown-linux-gnu (64-bit) 618s 618s R is free software and comes with ABSOLUTELY NO WARRANTY. 618s You are welcome to redistribute it under certain conditions. 618s Type 'license()' or 'licence()' for distribution details. 618s 618s R is a collaborative project with many contributors. 618s Type 'contributors()' for more information and 618s 'citation()' on how to cite R or R packages in publications. 618s 618s Type 'demo()' for some demos, 'help()' for on-line help, or 618s 'help.start()' for an HTML browser interface to help. 618s Type 'q()' to quit R. 618s 618s > library("matrixStats") 618s > library("stats") 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Naive R implementation of binMeans() 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > binMeans0 <- function(y, x, bx, na.rm = TRUE, count = TRUE, right = FALSE) { 618s + n_smooth <- length(bx) - 1L 618s + res <- double(n_smooth) 618s + counts <- rep(NaN, times = n_smooth) 618s + 618s + if (na.rm) { 618s + keep <- !is.na(x) & !is.na(y) 618s + x <- x[keep] 618s + y <- y[keep] 618s + } 618s + 618s + # For each bin... 618s + for (kk in seq_len(n_smooth)) { 618s + if (right) { 618s + idxs <- which(bx[kk] < x & x <= bx[kk + 1L]) 618s + } else { 618s + idxs <- which(bx[kk] <= x & x < bx[kk + 1L]) 618s + } 618s + y_kk <- y[idxs] 618s + res[kk] <- mean(y_kk) 618s + counts[kk] <- length(idxs) 618s + } # for (kk ...) 618s + 618s + if (count) attr(res, "count") <- counts 618s + res 618s + } 618s > 618s > 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Case #1 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > x <- 1:100 618s > nx <- length(x) 618s > y <- double(nx) 618s > y[1:25] <- 5 618s > y[51:75] <- -5 618s > y <- y + rnorm(nx) 618s > 618s > # Bins 618s > bx <- c(0.5, 25.5, 50.5, 75.5, 100.5) 618s > 618s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 618s > y_smooth <- binMeans(y, x = x, bx = bx) 618s > n_smooth <- binCounts(x, bx = bx) 618s > # Sanity check 618s > stopifnot(all.equal(y_smooth, y_smooth0)) 618s > stopifnot(all.equal(attr(y_smooth, "count"), n_smooth)) 618s > 618s > y_smooth0r <- rev(binMeans0(y, x = -x, bx = rev(-bx), 618s + count = FALSE, right = TRUE)) 618s > y_smoothr <- rev(binMeans(y, x = -x, bx = rev(-bx), 618s + count = FALSE, right = TRUE)) 618s > # Sanity check 618s > stopifnot(all.equal(y_smooth0r, y_smooth0, check.attributes = FALSE)) 618s > stopifnot(all.equal(y_smoothr, y_smooth0r)) 618s > 618s > 618s > # Integer input 618s > y <- as.integer(y) 618s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 618s > y_smooth <- binMeans(y, x = x, bx = bx) 618s > n_smooth <- binCounts(x, bx = bx) 618s > # Sanity check 618s > stopifnot(is.integer(y), 618s + all.equal(y_smooth, y_smooth0), 618s + all.equal(attr(y_smooth, "count"), n_smooth)) 618s > 618s > # Logical input 618s > y <- as.logical(y) 618s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 618s > y_smooth <- binMeans(y, x = x, bx = bx) 618s > n_smooth <- binCounts(x, bx = bx) 618s > # Sanity check 618s > stopifnot(is.logical(y), 618s + all.equal(y_smooth, y_smooth0), 618s + all.equal(attr(y_smooth, "count"), n_smooth)) 618s > 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Case #2 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > nx <- 1e3 618s > x <- runif(nx) 618s > y <- runif(nx) 618s > 618s > nb <- 10 618s > bx <- do.call(seq, c(as.list(range(x)), length.out = nb)) 618s > bx1 <- c(bx[-1], bx[nb] + 1) 618s > 618s > y_smooth0 <- binMeans0(y, x = x, bx = bx1) 618s > y_smooth <- binMeans(y, x = x, bx = bx1) 618s > n_smooth <- binCounts(x, bx = bx1) 618s > y_smoothr <- rev(binMeans(y, x = -x, bx = rev(-bx1), right = TRUE)) 618s > 618s > # Sanity check 618s > stopifnot(all.equal(y_smooth, y_smooth0)) 618s > stopifnot(all.equal(attr(y_smooth, "count"), n_smooth)) 618s > stopifnot(all.equal(y_smoothr, y_smooth, check.attributes = FALSE)) 618s > 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Empty bins 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > x <- c(6:8, 16:19) 618s > nx <- length(x) 618s > y <- runif(nx) 618s > bx <- c(0, 5, 10, 15, 20, 25) 618s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 618s > y_smooth <- binMeans(y, x = x, bx = bx) 618s > n_smooth <- binCounts(x, bx = bx) 618s > stopifnot(all.equal(attr(y_smooth, "count"), n_smooth)) 618s > stopifnot(all.equal(y_smooth, y_smooth0)) 618s > 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Missing values 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > x <- 1:100 618s > x[50] <- NA_integer_ 618s > nx <- length(x) 618s > y <- double(nx) 618s > y[1:25] <- 5 618s > y[51:75] <- -5 618s > y[82:92] <- NA_real_ 618s > y <- y + rnorm(nx) 618s > 618s > # Bins 618s > bx <- c(0.5, 25.5, 75.5, 82.5, 100.5) 618s > 618s > y_smooth0 <- binMeans0(y, x = x, bx = bx) 618s > y_smooth <- binMeans(y, x = x, bx = bx) 618s > # Sanity check 618s > stopifnot(all.equal(y_smooth, y_smooth0)) 618s > 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Exception handling 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Zero bin bounderies (invalid bin definition) 618s > bx <- double(0L) 618s > res <- try(y_smooth <- binMeans(x = 1:5, y = 1:5, bx = bx), silent = TRUE) 618s > stopifnot(inherits(res, "try-error")) 618s > 618s > # One bin boundery (invalid bin definition) 618s > bx <- double(1L) 618s > res <- try(y_smooth <- binMeans(x = 1:5, y = 1:5, bx = bx), silent = TRUE) 618s > stopifnot(inherits(res, "try-error")) 618s > 618s 618s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 618s Copyright (C) 2024 The R Foundation for Statistical Computing 618s Platform: powerpc64le-unknown-linux-gnu (64-bit) 618s 618s R is free software and comes with ABSOLUTELY NO WARRANTY. 618s You are welcome to redistribute it under certain conditions. 618s Type 'license()' or 'licence()' for distribution details. 618s 618s R is a collaborative project with many contributors. 618s Type 'contributors()' for more information and 618s 'citation()' on how to cite R or R packages in publications. 618s 618s Type 'demo()' for some demos, 'help()' for on-line help, or 618s 'help.start()' for an HTML browser interface to help. 618s Type 'q()' to quit R. 618s 618s > library("matrixStats") 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Naive R implementation of binMeans() 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > binMeans0 <- function(y, x, bx, na.rm = TRUE, count = TRUE, right = FALSE) { 618s + n_smooth <- length(bx) - 1L 618s + res <- double(n_smooth) 618s + counts <- rep(NaN, times = n_smooth) 618s + 618s + if (na.rm) { 618s + keep <- !is.na(x) & !is.na(y) 618s + x <- x[keep] 618s + y <- y[keep] 618s + } 618s + 618s + # For each bin... 618s + for (kk in seq_len(n_smooth)) { 618s + if (right) { 618s + idxs <- which(bx[kk] < x & x <= bx[kk + 1L]) 618s + } else { 618s + idxs <- which(bx[kk] <= x & x < bx[kk + 1L]) 618s + } 618s + y_kk <- y[idxs] 618s + res[kk] <- mean(y_kk) 618s + counts[kk] <- length(idxs) 618s + } # for (kk ...) 618s + 618s + if (count) attr(res, "count") <- counts 618s + res 618s + } 618s > 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Subsetted tests 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > source("utils/validateIndicesFramework.R") 618s > y <- runif(6, min = -6, max = 6) 618s > x <- runif(6, min = -6, max = 6) 618s > storage.mode(x) <- "integer" 618s > bx <- c(-6, 0, 3, 4, 10) 618s > for (idxs in index_cases) { 618s + for (na.rm in c(TRUE, FALSE)) { 618s + validateIndicesTestVector_w(y, x, idxs, 618s + ftest = binMeans, fsure = binMeans0, 618s + bx = bx, na.rm = na.rm, 618s + count = TRUE, right = FALSE) 618s + validateIndicesTestVector_w(y, x, idxs, 618s + ftest = binMeans, fsure = binMeans0, 618s + bx = bx, na.rm = na.rm, 618s + count = TRUE, right = TRUE) 618s + } 618s + } 618s > 618s 618s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 618s Copyright (C) 2024 The R Foundation for Statistical Computing 618s Platform: powerpc64le-unknown-linux-gnu (64-bit) 618s 618s R is free software and comes with ABSOLUTELY NO WARRANTY. 618s You are welcome to redistribute it under certain conditions. 618s Type 'license()' or 'licence()' for distribution details. 618s 618s R is a collaborative project with many contributors. 618s Type 'contributors()' for more information and 618s 'citation()' on how to cite R or R packages in publications. 618s 618s Type 'demo()' for some demos, 'help()' for on-line help, or 618s 'help.start()' for an HTML browser interface to help. 618s Type 'q()' to quit R. 618s 618s > library("matrixStats") 618s > 618s > count_R <- function(x, value = TRUE, na.rm = FALSE, ...) { 618s + if (is.na(value)) { 618s + counts <- sum(is.na(x)) 618s + } else { 618s + counts <- sum(x == value, na.rm = na.rm) 618s + } 618s + as.integer(counts) 618s + } 618s > 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Data type: integer and numeric 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > for (mode in c("integer", "double")) { 618s + x <- runif(20 * 5, min = -3, max = 3) 618s + x[sample.int(length(x), size = 7)] <- 0 618s + storage.mode(x) <- mode 618s + 618s + for (na.rm in c(FALSE, TRUE)) { 618s + # Count zeros 618s + n0 <- count_R(x, value = 0, na.rm = na.rm) 618s + n1 <- count(x, value = 0, na.rm = na.rm) 618s + stopifnot(identical(n1, n0)) 618s + all <- allValue(x, value = 0, na.rm = na.rm) 618s + any <- anyValue(x, value = 0, na.rm = na.rm) 618s + 618s + # Count NAs 618s + n0 <- count_R(x, value = NA, na.rm = na.rm) 618s + n1 <- count(x, value = NA, na.rm = na.rm) 618s + stopifnot(identical(n1, n0)) 618s + all <- allValue(x, value = NA, na.rm = na.rm) 618s + any <- anyValue(x, value = NA, na.rm = na.rm) 618s + 618s + if (mode == "integer") { 618s + ux <- unique(as.vector(x)) 618s + n0 <- n1 <- integer(length(x)) 618s + for (value in ux) { 618s + n0 <- n0 + count_R(x, value = value, na.rm = na.rm) 618s + n1 <- n1 + count(x, value = value, na.rm = na.rm) 618s + stopifnot(identical(n1, n0)) 618s + } 618s + stopifnot(all(n0 == ncol(x))) 618s + } # if (mode == "integer") 618s + 618s + } # for (na.rm ...) 618s + } # for (mode ...) 618s > 618s > # All NAs 618s > na_list <- list(NA_integer_, NA_real_, NaN) 618s > for (na_value in na_list) { 618s + x <- rep(na_value, times = 10L) 618s + for (na.rm in c(FALSE, TRUE)) { 618s + n0 <- count_R(x, na.rm = na.rm) 618s + n1 <- count(x, na.rm = na.rm) 618s + stopifnot(identical(n1, n0)) 618s + 618s + # Count NAs 618s + n0 <- count_R(x, value = NA, na.rm = na.rm) 618s + n1 <- count(x, value = NA, na.rm = na.rm) 618s + stopifnot(identical(n1, n0)) 618s + any <- anyValue(x, value = NA, na.rm = na.rm) 618s + all <- allValue(x, value = NA, na.rm = na.rm) 618s + stopifnot(any) 618s + stopifnot(all) 618s + } 618s + } # for (na_value ...) 618s > 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Data type: logical 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > x <- logical(length = 10L) 618s > x[3:7] <- TRUE 618s > 618s > # Row/column counts 618s > for (na.rm in c(FALSE, TRUE)) { 618s + n0 <- count_R(x, na.rm = na.rm) 618s + n1 <- count(x, na.rm = na.rm) 618s + stopifnot(identical(n1, n0)) 618s + 618s + n_true <- count(x, value = TRUE, na.rm = na.rm) 618s + n_false <- count(x, value = FALSE, na.rm = na.rm) 618s + stopifnot(n_true + n_false == ncol(x)) 618s + 618s + # Count NAs 618s + n0 <- count_R(x, value = NA, na.rm = na.rm) 618s + n1 <- count(x, value = NA, na.rm = na.rm) 618s + stopifnot(identical(n1, n0)) 618s + } 618s > 618s 618s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 618s Copyright (C) 2024 The R Foundation for Statistical Computing 618s Platform: powerpc64le-unknown-linux-gnu (64-bit) 618s 618s R is free software and comes with ABSOLUTELY NO WARRANTY. 618s You are welcome to redistribute it under certain conditions. 618s Type 'license()' or 'licence()' for distribution details. 618s 618s R is a collaborative project with many contributors. 618s Type 'contributors()' for more information and 618s 'citation()' on how to cite R or R packages in publications. 618s 618s Type 'demo()' for some demos, 'help()' for on-line help, or 618s 'help.start()' for an HTML browser interface to help. 618s Type 'q()' to quit R. 618s 618s > library("matrixStats") 618s > 618s > count_R <- function(x, value = TRUE, na.rm = FALSE, ...) { 618s + if (is.na(value)) { 618s + counts <- sum(is.na(x)) 618s + } else { 618s + counts <- sum(x == value, na.rm = na.rm) 618s + } 618s + as.integer(counts) 618s + } 618s > 618s > 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > # Subsetted tests 618s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 618s > source("utils/validateIndicesFramework.R") 618s > x <- runif(6, min = -3, max = 3) 618s > storage.mode(x) <- "integer" 618s > for (idxs in index_cases) { 618s + validateIndicesTestVector(x, idxs, 618s + ftest = count, fsure = count_R, 618s + value = 0, na.rm = TRUE) 618s + validateIndicesTestVector(x, idxs, 618s + ftest = count, fsure = count_R, 618s + value = 0, na.rm = FALSE) 618s + validateIndicesTestVector(x, idxs, 618s + ftest = count, fsure = count_R, 618s + value = NA_integer_) 618s + } 618s > 618s 619s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 619s Copyright (C) 2024 The R Foundation for Statistical Computing 619s Platform: powerpc64le-unknown-linux-gnu (64-bit) 619s 619s R is free software and comes with ABSOLUTELY NO WARRANTY. 619s You are welcome to redistribute it under certain conditions. 619s Type 'license()' or 'licence()' for distribution details. 619s 619s R is a collaborative project with many contributors. 619s Type 'contributors()' for more information and 619s 'citation()' on how to cite R or R packages in publications. 619s 619s Type 'demo()' for some demos, 'help()' for on-line help, or 619s 'help.start()' for an HTML browser interface to help. 619s Type 'q()' to quit R. 619s 619s > library("matrixStats") 619s > 619s > diff2_R <- function(..., useNames = NA){ 619s + res <- diff(...) 619s + if (is.na(useNames) || !useNames) names(res) <- NULL 619s + res 619s + } 619s > 619s > set.seed(0x42) 619s > 619s > for (mode in c("integer", "double")) { 619s + x <- rnorm(10, sd = 5) 619s + storage.mode(x) <- mode 619s + str(x) 619s + 619s + for (has_na in c(FALSE, TRUE)) { 619s + for (setNames in c(TRUE, FALSE)) { 619s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 619s + if (has_na) { 619s + x[sample(1:10, size = 3)] <- NA 619s + } 619s + if (setNames) { 619s + names(x) <- LETTERS[1:10] 619s + } 619s + for (l in 1:3) { 619s + for (d in 1:4) { 619s + cat(sprintf("%s: NAs = %s, lag = %d, differences = %d, setNames = %d, useNames = %d\n", 619s + mode, has_na, l, d, setNames, useNames)) 619s + y0 <- diff2_R(x, lag = l, differences = d, useNames = useNames) 619s + str(y0) 619s + y1 <- diff2(x, lag = l, differences = d, useNames = useNames) 619s + str(y1) 619s + stopifnot(identical(y1, y0)) 619s + } 619s + } 619s + } 619s + } 619s + } # for (has_na ...) 619s + } 619s int [1:10] 11 1 2 0 -1 -3 -3 6 0 0 619s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 1 619s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 1 619s Named int [1:8] 11 -3 1 -1 2 9 -15 6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named int [1:8] 11 -3 1 -1 2 9 -15 6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 1 619s Named int [1:7] -14 4 -2 3 7 -24 21 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named int [1:7] -14 4 -2 3 7 -24 21 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 1 619s Named int [1:6] 18 -6 5 4 -31 45 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named int [1:6] 18 -6 5 4 -31 45 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 1 619s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 1 619s Named int [1:6] 6 -2 1 12 5 -15 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named int [1:6] 6 -2 1 12 5 -15 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 1 619s Named int [1:4] -5 14 4 -27 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named int [1:4] -5 14 4 -27 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 1 619s Named int [1:2] 9 -41 619s - attr(*, "names")= chr [1:2] "I" "J" 619s Named int [1:2] 9 -41 619s - attr(*, "names")= chr [1:2] "I" "J" 619s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 1 619s Named int [1:7] -11 -2 -5 -3 7 3 3 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named int [1:7] -11 -2 -5 -3 7 3 3 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 1 619s Named int [1:4] 8 9 8 6 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named int [1:4] 8 9 8 6 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 1 619s Named int -2 619s - attr(*, "names")= chr "J" 619s Named int -2 619s - attr(*, "names")= chr "J" 619s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 1 619s Named int(0) 619s - attr(*, "names")= chr(0) 619s Named int(0) 619s - attr(*, "names")= chr(0) 619s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 0 619s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 619s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 619s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 0 619s int [1:8] 11 -3 1 -1 2 9 -15 6 619s int [1:8] 11 -3 1 -1 2 9 -15 6 619s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 0 619s int [1:7] -14 4 -2 3 7 -24 21 619s int [1:7] -14 4 -2 3 7 -24 21 619s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 0 619s int [1:6] 18 -6 5 4 -31 45 619s int [1:6] 18 -6 5 4 -31 45 619s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 0 619s int [1:8] -9 -1 -3 -3 -2 9 3 -6 619s int [1:8] -9 -1 -3 -3 -2 9 3 -6 619s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 0 619s int [1:6] 6 -2 1 12 5 -15 619s int [1:6] 6 -2 1 12 5 -15 619s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 0 619s int [1:4] -5 14 4 -27 619s int [1:4] -5 14 4 -27 619s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 0 619s int [1:2] 9 -41 619s int [1:2] 9 -41 619s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 0 619s int [1:7] -11 -2 -5 -3 7 3 3 619s int [1:7] -11 -2 -5 -3 7 3 3 619s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 0 619s int [1:4] 8 9 8 6 619s int [1:4] 8 9 8 6 619s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 0 619s int -2 619s int -2 619s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 0 619s int(0) 619s int(0) 619s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 1 619s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s Named int [1:9] -10 1 -2 -1 -2 0 9 -6 0 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 1 619s Named int [1:8] 11 -3 1 -1 2 9 -15 6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named int [1:8] 11 -3 1 -1 2 9 -15 6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 1 619s Named int [1:7] -14 4 -2 3 7 -24 21 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named int [1:7] -14 4 -2 3 7 -24 21 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 1 619s Named int [1:6] 18 -6 5 4 -31 45 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named int [1:6] 18 -6 5 4 -31 45 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 1 619s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named int [1:8] -9 -1 -3 -3 -2 9 3 -6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 1 619s Named int [1:6] 6 -2 1 12 5 -15 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named int [1:6] 6 -2 1 12 5 -15 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 1 619s Named int [1:4] -5 14 4 -27 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named int [1:4] -5 14 4 -27 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 1 619s Named int [1:2] 9 -41 619s - attr(*, "names")= chr [1:2] "I" "J" 619s Named int [1:2] 9 -41 619s - attr(*, "names")= chr [1:2] "I" "J" 619s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 1 619s Named int [1:7] -11 -2 -5 -3 7 3 3 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named int [1:7] -11 -2 -5 -3 7 3 3 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 1 619s Named int [1:4] 8 9 8 6 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named int [1:4] 8 9 8 6 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 1 619s Named int -2 619s - attr(*, "names")= chr "J" 619s Named int -2 619s - attr(*, "names")= chr "J" 619s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 1 619s Named int(0) 619s - attr(*, "names")= chr(0) 619s Named int(0) 619s - attr(*, "names")= chr(0) 619s integer: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 0 619s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 619s int [1:9] -10 1 -2 -1 -2 0 9 -6 0 619s integer: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 0 619s int [1:8] 11 -3 1 -1 2 9 -15 6 619s int [1:8] 11 -3 1 -1 2 9 -15 6 619s integer: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 0 619s int [1:7] -14 4 -2 3 7 -24 21 619s int [1:7] -14 4 -2 3 7 -24 21 619s integer: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 0 619s int [1:6] 18 -6 5 4 -31 45 619s int [1:6] 18 -6 5 4 -31 45 619s integer: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 0 619s int [1:8] -9 -1 -3 -3 -2 9 3 -6 619s int [1:8] -9 -1 -3 -3 -2 9 3 -6 619s integer: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 0 619s int [1:6] 6 -2 1 12 5 -15 619s int [1:6] 6 -2 1 12 5 -15 619s integer: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 0 619s int [1:4] -5 14 4 -27 619s int [1:4] -5 14 4 -27 619s integer: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 0 619s int [1:2] 9 -41 619s int [1:2] 9 -41 619s integer: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 0 619s int [1:7] -11 -2 -5 -3 7 3 3 619s int [1:7] -11 -2 -5 -3 7 3 3 619s integer: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 0 619s int [1:4] 8 9 8 6 619s int [1:4] 8 9 8 6 619s integer: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 0 619s int -2 619s int -2 619s integer: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 0 619s int(0) 619s int(0) 619s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 1 619s Named int [1:9] NA NA NA NA NA 0 9 -6 0 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s Named int [1:9] NA NA NA NA NA 0 9 -6 0 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 1 619s Named int [1:8] NA NA NA NA NA 9 -15 6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named int [1:8] NA NA NA NA NA 9 -15 6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 1 619s Named int [1:7] NA NA NA NA NA -24 21 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named int [1:7] NA NA NA NA NA -24 21 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 1 619s Named int [1:6] NA NA NA NA NA 45 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named int [1:6] NA NA NA NA NA 45 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 1 619s Named int [1:8] -9 NA NA NA NA 9 3 -6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named int [1:8] -9 NA NA NA NA 9 3 -6 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 1 619s Named int [1:6] NA NA NA NA NA -15 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named int [1:6] NA NA NA NA NA -15 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 1 619s Named int [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named int [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 1 619s Named int [1:2] NA NA 619s - attr(*, "names")= chr [1:2] "I" "J" 619s Named int [1:2] NA NA 619s - attr(*, "names")= chr [1:2] "I" "J" 619s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 1 619s Named int [1:7] NA NA -5 NA NA 3 3 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named int [1:7] NA NA -5 NA NA 3 3 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 1 619s Named int [1:4] NA NA 8 NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named int [1:4] NA NA 8 NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 1 619s Named int NA 619s - attr(*, "names")= chr "J" 619s Named int NA 619s - attr(*, "names")= chr "J" 619s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 1 619s Named int(0) 619s - attr(*, "names")= chr(0) 619s Named int(0) 619s - attr(*, "names")= chr(0) 619s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 0 619s int [1:9] NA NA NA NA NA 0 9 NA NA 619s int [1:9] NA NA NA NA NA 0 9 NA NA 619s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 0 619s int [1:8] NA NA NA NA NA 9 NA NA 619s int [1:8] NA NA NA NA NA 9 NA NA 619s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 0 619s int [1:7] NA NA NA NA NA NA NA 619s int [1:7] NA NA NA NA NA NA NA 619s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 0 619s int [1:6] NA NA NA NA NA NA 619s int [1:6] NA NA NA NA NA NA 619s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 0 619s int [1:8] NA NA NA NA NA 9 NA -6 619s int [1:8] NA NA NA NA NA 9 NA -6 619s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 0 619s int [1:6] NA NA NA NA NA -15 619s int [1:6] NA NA NA NA NA -15 619s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 0 619s int [1:4] NA NA NA NA 619s int [1:4] NA NA NA NA 619s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 0 619s int [1:2] NA NA 619s int [1:2] NA NA 619s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 0 619s int [1:7] NA NA NA NA NA NA 3 619s int [1:7] NA NA NA NA NA NA 3 619s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 0 619s int [1:4] NA NA NA NA 619s int [1:4] NA NA NA NA 619s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 0 619s int NA 619s int NA 619s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 0 619s int(0) 619s int(0) 619s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 1 619s Named int [1:9] NA NA NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s Named int [1:9] NA NA NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 1 619s Named int [1:8] NA NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named int [1:8] NA NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 1 619s Named int [1:7] NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named int [1:7] NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 1 619s Named int [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named int [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 1 619s Named int [1:8] NA NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named int [1:8] NA NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 1 619s Named int [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named int [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 1 619s Named int [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named int [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 1 619s Named int [1:2] NA NA 619s - attr(*, "names")= chr [1:2] "I" "J" 619s Named int [1:2] NA NA 619s - attr(*, "names")= chr [1:2] "I" "J" 619s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 1 619s Named int [1:7] NA NA NA NA NA NA 3 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named int [1:7] NA NA NA NA NA NA 3 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 1 619s Named int [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named int [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 1 619s Named int NA 619s - attr(*, "names")= chr "J" 619s Named int NA 619s - attr(*, "names")= chr "J" 619s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 1 619s Named int(0) 619s - attr(*, "names")= chr(0) 619s Named int(0) 619s - attr(*, "names")= chr(0) 619s integer: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 0 619s int [1:9] NA NA NA NA NA NA NA NA NA 619s int [1:9] NA NA NA NA NA NA NA NA NA 619s integer: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 0 619s int [1:8] NA NA NA NA NA NA NA NA 619s int [1:8] NA NA NA NA NA NA NA NA 619s integer: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 0 619s int [1:7] NA NA NA NA NA NA NA 619s int [1:7] NA NA NA NA NA NA NA 619s integer: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 0 619s int [1:6] NA NA NA NA NA NA 619s int [1:6] NA NA NA NA NA NA 619s integer: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 0 619s int [1:8] NA NA NA NA NA NA NA NA 619s int [1:8] NA NA NA NA NA NA NA NA 619s integer: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 0 619s int [1:6] NA NA NA NA NA NA 619s int [1:6] NA NA NA NA NA NA 619s integer: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 0 619s int [1:4] NA NA NA NA 619s int [1:4] NA NA NA NA 619s integer: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 0 619s int [1:2] NA NA 619s int [1:2] NA NA 619s integer: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 0 619s int [1:7] NA NA NA NA NA NA 3 619s int [1:7] NA NA NA NA NA NA 3 619s integer: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 0 619s int [1:4] NA NA NA NA 619s int [1:4] NA NA NA NA 619s integer: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 0 619s int NA 619s int NA 619s integer: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 0 619s int(0) 619s int(0) 619s num [1:10] 2.586 -0.344 0.33 9.155 -3.254 ... 619s double: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 1 619s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s double: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 1 619s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s double: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 1 619s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s double: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 1 619s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s double: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 1 619s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s double: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 1 619s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s double: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 1 619s Named num [1:4] 0.368 42.988 15.396 -29.313 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named num [1:4] 0.368 42.988 15.396 -29.313 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s double: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 1 619s Named num [1:2] 15 -72.3 619s - attr(*, "names")= chr [1:2] "I" "J" 619s Named num [1:2] 15 -72.3 619s - attr(*, "names")= chr [1:2] "I" "J" 619s double: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 1 619s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s double: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 1 619s Named num [1:4] -23.52 7.92 11.38 23.27 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named num [1:4] -23.52 7.92 11.38 23.27 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s double: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 1 619s Named num 46.8 619s - attr(*, "names")= chr "J" 619s Named num 46.8 619s - attr(*, "names")= chr "J" 619s double: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 1 619s Named num(0) 619s - attr(*, "names")= chr(0) 619s Named num(0) 619s - attr(*, "names")= chr(0) 619s double: NAs = FALSE, lag = 1, differences = 1, setNames = 1, useNames = 0 619s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 619s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 619s double: NAs = FALSE, lag = 1, differences = 2, setNames = 1, useNames = 0 619s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 619s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 619s double: NAs = FALSE, lag = 1, differences = 3, setNames = 1, useNames = 0 619s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 619s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 619s double: NAs = FALSE, lag = 1, differences = 4, setNames = 1, useNames = 0 619s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 619s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 619s double: NAs = FALSE, lag = 2, differences = 1, setNames = 1, useNames = 0 619s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 619s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 619s double: NAs = FALSE, lag = 2, differences = 2, setNames = 1, useNames = 0 619s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 619s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 619s double: NAs = FALSE, lag = 2, differences = 3, setNames = 1, useNames = 0 619s num [1:4] 0.368 42.988 15.396 -29.313 619s num [1:4] 0.368 42.988 15.396 -29.313 619s double: NAs = FALSE, lag = 2, differences = 4, setNames = 1, useNames = 0 619s num [1:2] 15 -72.3 619s num [1:2] 15 -72.3 619s double: NAs = FALSE, lag = 3, differences = 1, setNames = 1, useNames = 0 619s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 619s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 619s double: NAs = FALSE, lag = 3, differences = 2, setNames = 1, useNames = 0 619s num [1:4] -23.52 7.92 11.38 23.27 619s num [1:4] -23.52 7.92 11.38 23.27 619s double: NAs = FALSE, lag = 3, differences = 3, setNames = 1, useNames = 0 619s num 46.8 619s num 46.8 619s double: NAs = FALSE, lag = 3, differences = 4, setNames = 1, useNames = 0 619s num(0) 619s num(0) 619s double: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 1 619s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s Named num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s double: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 1 619s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s double: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 1 619s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s double: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 1 619s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s double: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 1 619s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s double: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 1 619s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s double: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 1 619s Named num [1:4] 0.368 42.988 15.396 -29.313 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named num [1:4] 0.368 42.988 15.396 -29.313 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s double: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 1 619s Named num [1:2] 15 -72.3 619s - attr(*, "names")= chr [1:2] "I" "J" 619s Named num [1:2] 15 -72.3 619s - attr(*, "names")= chr [1:2] "I" "J" 619s double: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 1 619s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s double: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 1 619s Named num [1:4] -23.52 7.92 11.38 23.27 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named num [1:4] -23.52 7.92 11.38 23.27 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s double: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 1 619s Named num 46.8 619s - attr(*, "names")= chr "J" 619s Named num 46.8 619s - attr(*, "names")= chr "J" 619s double: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 1 619s Named num(0) 619s - attr(*, "names")= chr(0) 619s Named num(0) 619s - attr(*, "names")= chr(0) 619s double: NAs = FALSE, lag = 1, differences = 1, setNames = 0, useNames = 0 619s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 619s num [1:9] -2.929 0.673 8.826 -12.409 -1.221 ... 619s double: NAs = FALSE, lag = 1, differences = 2, setNames = 0, useNames = 0 619s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 619s num [1:8] 3.6 8.15 -21.23 11.19 -2.1 ... 619s double: NAs = FALSE, lag = 1, differences = 3, setNames = 0, useNames = 0 619s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 619s num [1:7] 4.55 -29.39 32.42 -13.29 14.97 ... 619s double: NAs = FALSE, lag = 1, differences = 4, setNames = 0, useNames = 0 619s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 619s num [1:6] -33.9 61.8 -45.7 28.3 -37 ... 619s double: NAs = FALSE, lag = 2, differences = 1, setNames = 0, useNames = 0 619s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 619s num [1:8] -2.26 9.5 -3.58 -13.63 -4.54 ... 619s double: NAs = FALSE, lag = 2, differences = 2, setNames = 0, useNames = 0 619s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 619s num [1:6] -1.33 -23.13 -0.96 19.86 14.44 ... 619s double: NAs = FALSE, lag = 2, differences = 3, setNames = 0, useNames = 0 619s num [1:4] 0.368 42.988 15.396 -29.313 619s num [1:4] 0.368 42.988 15.396 -29.313 619s double: NAs = FALSE, lag = 2, differences = 4, setNames = 0, useNames = 0 619s num [1:2] 15 -72.3 619s num [1:2] 15 -72.3 619s double: NAs = FALSE, lag = 3, differences = 1, setNames = 0, useNames = 0 619s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 619s num [1:7] 6.57 -2.91 -4.81 -16.95 5.01 ... 619s double: NAs = FALSE, lag = 3, differences = 2, setNames = 0, useNames = 0 619s num [1:4] -23.52 7.92 11.38 23.27 619s num [1:4] -23.52 7.92 11.38 23.27 619s double: NAs = FALSE, lag = 3, differences = 3, setNames = 0, useNames = 0 619s num 46.8 619s num 46.8 619s double: NAs = FALSE, lag = 3, differences = 4, setNames = 0, useNames = 0 619s num(0) 619s num(0) 619s double: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 1 619s Named num [1:9] -2.929 0.673 8.826 NA NA ... 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s Named num [1:9] -2.929 0.673 8.826 NA NA ... 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s double: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 1 619s Named num [1:8] 3.6 8.15 NA NA NA ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named num [1:8] 3.6 8.15 NA NA NA ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s double: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 1 619s Named num [1:7] 4.55 NA NA NA NA ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named num [1:7] 4.55 NA NA NA NA ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s double: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 1 619s Named num [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named num [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s double: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 1 619s Named num [1:8] -2.26 9.5 NA NA NA ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named num [1:8] -2.26 9.5 NA NA NA ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s double: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 1 619s Named num [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named num [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s double: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 1 619s Named num [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named num [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s double: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 1 619s Named num [1:2] NA NA 619s - attr(*, "names")= chr [1:2] "I" "J" 619s Named num [1:2] NA NA 619s - attr(*, "names")= chr [1:2] "I" "J" 619s double: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 1 619s Named num [1:7] 6.57 NA NA -16.95 NA ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named num [1:7] 6.57 NA NA -16.95 NA ... 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s double: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 1 619s Named num [1:4] -23.5 NA NA 23.3 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named num [1:4] -23.5 NA NA 23.3 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s double: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 1 619s Named num 46.8 619s - attr(*, "names")= chr "J" 619s Named num 46.8 619s - attr(*, "names")= chr "J" 619s double: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 1 619s Named num(0) 619s - attr(*, "names")= chr(0) 619s Named num(0) 619s - attr(*, "names")= chr(0) 619s double: NAs = TRUE, lag = 1, differences = 1, setNames = 1, useNames = 0 619s num [1:9] NA 0.673 8.826 NA NA ... 619s num [1:9] NA 0.673 8.826 NA NA ... 619s double: NAs = TRUE, lag = 1, differences = 2, setNames = 1, useNames = 0 619s num [1:8] NA 8.15 NA NA NA ... 619s num [1:8] NA 8.15 NA NA NA ... 619s double: NAs = TRUE, lag = 1, differences = 3, setNames = 1, useNames = 0 619s num [1:7] NA NA NA NA NA NA NA 619s num [1:7] NA NA NA NA NA NA NA 619s double: NAs = TRUE, lag = 1, differences = 4, setNames = 1, useNames = 0 619s num [1:6] NA NA NA NA NA NA 619s num [1:6] NA NA NA NA NA NA 619s double: NAs = TRUE, lag = 2, differences = 1, setNames = 1, useNames = 0 619s num [1:8] NA 9.5 NA NA NA ... 619s num [1:8] NA 9.5 NA NA NA ... 619s double: NAs = TRUE, lag = 2, differences = 2, setNames = 1, useNames = 0 619s num [1:6] NA NA NA NA NA NA 619s num [1:6] NA NA NA NA NA NA 619s double: NAs = TRUE, lag = 2, differences = 3, setNames = 1, useNames = 0 619s num [1:4] NA NA NA NA 619s num [1:4] NA NA NA NA 619s double: NAs = TRUE, lag = 2, differences = 4, setNames = 1, useNames = 0 619s num [1:2] NA NA 619s num [1:2] NA NA 619s double: NAs = TRUE, lag = 3, differences = 1, setNames = 1, useNames = 0 619s num [1:7] NA NA NA NA NA NA NA 619s num [1:7] NA NA NA NA NA NA NA 619s double: NAs = TRUE, lag = 3, differences = 2, setNames = 1, useNames = 0 619s num [1:4] NA NA NA NA 619s num [1:4] NA NA NA NA 619s double: NAs = TRUE, lag = 3, differences = 3, setNames = 1, useNames = 0 619s num NA 619s num NA 619s double: NAs = TRUE, lag = 3, differences = 4, setNames = 1, useNames = 0 619s num(0) 619s num(0) 619s double: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 1 619s Named num [1:9] NA 0.673 8.826 NA NA ... 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s Named num [1:9] NA 0.673 8.826 NA NA ... 619s - attr(*, "names")= chr [1:9] "B" "C" "D" "E" ... 619s double: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 1 619s Named num [1:8] NA 8.15 NA NA NA ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named num [1:8] NA 8.15 NA NA NA ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s double: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 1 619s Named num [1:7] NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named num [1:7] NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s double: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 1 619s Named num [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named num [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s double: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 1 619s Named num [1:8] NA 9.5 NA NA NA ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s Named num [1:8] NA 9.5 NA NA NA ... 619s - attr(*, "names")= chr [1:8] "C" "D" "E" "F" ... 619s double: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 1 619s Named num [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s Named num [1:6] NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:6] "E" "F" "G" "H" ... 619s double: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 1 619s Named num [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named num [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s double: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 1 619s Named num [1:2] NA NA 619s - attr(*, "names")= chr [1:2] "I" "J" 619s Named num [1:2] NA NA 619s - attr(*, "names")= chr [1:2] "I" "J" 619s double: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 1 619s Named num [1:7] NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s Named num [1:7] NA NA NA NA NA NA NA 619s - attr(*, "names")= chr [1:7] "D" "E" "F" "G" ... 619s double: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 1 619s Named num [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s Named num [1:4] NA NA NA NA 619s - attr(*, "names")= chr [1:4] "G" "H" "I" "J" 619s double: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 1 619s Named num NA 619s - attr(*, "names")= chr "J" 619s Named num NA 619s - attr(*, "names")= chr "J" 619s double: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 1 619s Named num(0) 619s - attr(*, "names")= chr(0) 619s Named num(0) 619s - attr(*, "names")= chr(0) 619s double: NAs = TRUE, lag = 1, differences = 1, setNames = 0, useNames = 0 619s num [1:9] NA 0.673 8.826 NA NA ... 619s num [1:9] NA 0.673 8.826 NA NA ... 619s double: NAs = TRUE, lag = 1, differences = 2, setNames = 0, useNames = 0 619s num [1:8] NA 8.15 NA NA NA ... 619s num [1:8] NA 8.15 NA NA NA ... 619s double: NAs = TRUE, lag = 1, differences = 3, setNames = 0, useNames = 0 619s num [1:7] NA NA NA NA NA NA NA 619s num [1:7] NA NA NA NA NA NA NA 619s double: NAs = TRUE, lag = 1, differences = 4, setNames = 0, useNames = 0 619s num [1:6] NA NA NA NA NA NA 619s num [1:6] NA NA NA NA NA NA 619s double: NAs = TRUE, lag = 2, differences = 1, setNames = 0, useNames = 0 619s num [1:8] NA 9.5 NA NA NA ... 619s num [1:8] NA 9.5 NA NA NA ... 619s double: NAs = TRUE, lag = 2, differences = 2, setNames = 0, useNames = 0 619s num [1:6] NA NA NA NA NA NA 619s num [1:6] NA NA NA NA NA NA 619s double: NAs = TRUE, lag = 2, differences = 3, setNames = 0, useNames = 0 619s num [1:4] NA NA NA NA 619s num [1:4] NA NA NA NA 619s double: NAs = TRUE, lag = 2, differences = 4, setNames = 0, useNames = 0 619s num [1:2] NA NA 619s num [1:2] NA NA 619s double: NAs = TRUE, lag = 3, differences = 1, setNames = 0, useNames = 0 619s num [1:7] NA NA NA NA NA NA NA 619s num [1:7] NA NA NA NA NA NA NA 619s double: NAs = TRUE, lag = 3, differences = 2, setNames = 0, useNames = 0 619s num [1:4] NA NA NA NA 619s num [1:4] NA NA NA NA 619s double: NAs = TRUE, lag = 3, differences = 3, setNames = 0, useNames = 0 619s num NA 619s num NA 619s double: NAs = TRUE, lag = 3, differences = 4, setNames = 0, useNames = 0 619s num(0) 619s num(0) 619s > 619s 619s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 619s Copyright (C) 2024 The R Foundation for Statistical Computing 619s Platform: powerpc64le-unknown-linux-gnu (64-bit) 619s 619s R is free software and comes with ABSOLUTELY NO WARRANTY. 619s You are welcome to redistribute it under certain conditions. 619s Type 'license()' or 'licence()' for distribution details. 619s 619s R is a collaborative project with many contributors. 619s Type 'contributors()' for more information and 619s 'citation()' on how to cite R or R packages in publications. 619s 619s Type 'demo()' for some demos, 'help()' for on-line help, or 619s 'help.start()' for an HTML browser interface to help. 619s Type 'q()' to quit R. 619s 619s > library("matrixStats") 619s > 619s > diff2_R <- function(..., useNames=NA){ 619s + res <- diff(...) 619s + if (is.na(useNames) || !useNames) names(res) <- NULL 619s + res 619s + } 619s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 619s > # Subsetted tests 619s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 619s > source("utils/validateIndicesFramework.R") 619s > x <- runif(6, min = -6, max = 6) 619s > for (setNames in c(TRUE, FALSE)) { 619s + if (setNames) names(x) <- LETTERS[1:6] 619s + else names(x) <- NULL 619s + for (l in 1:2) { 619s + for (d in 1:2) { 619s + for (idxs in index_cases) { 619s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 619s + validateIndicesTestVector(x, idxs, 619s + ftest = diff2, fsure = diff2_R, 619s + lag = l, differences = d, useNames = useNames) 619s + } 619s + } 619s + } 619s + } 619s + } 619s > 619s 619s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 619s Copyright (C) 2024 The R Foundation for Statistical Computing 619s Platform: powerpc64le-unknown-linux-gnu (64-bit) 619s 619s R is free software and comes with ABSOLUTELY NO WARRANTY. 619s You are welcome to redistribute it under certain conditions. 619s Type 'license()' or 'licence()' for distribution details. 619s 619s R is a collaborative project with many contributors. 619s Type 'contributors()' for more information and 619s 'citation()' on how to cite R or R packages in publications. 619s 619s Type 'demo()' for some demos, 'help()' for on-line help, or 619s 'help.start()' for an HTML browser interface to help. 619s Type 'q()' to quit R. 619s 619s > library("matrixStats") 619s > 619s > indexByRow_R1 <- function(dim, idxs = NULL, ...) { 619s + n <- prod(dim) 619s + x <- matrix(seq_len(n), nrow = dim[2L], ncol = dim[1L], byrow = TRUE) 619s + if (!is.null(idxs)) 619s + x <- x[idxs] 619s + as.vector(x) 619s + } 619s > 619s > 619s > indexByRow_R2 <- function(dim, idxs = NULL, ...) { 619s + n <- prod(dim) 619s + if (is.null(idxs)) { 619s + x <- matrix(seq_len(n), nrow = dim[2L], ncol = dim[1L], byrow = TRUE) 619s + as.vector(x) 619s + } else { 619s + idxs <- idxs - 1L 619s + cols <- idxs %/% dim[2L] 619s + rows <- idxs %% dim[2L] 619s + cols + dim[1L] * rows + 1L 619s + } 619s + } 619s > 619s > 619s > dim <- c(5L, 4L) 619s > x <- matrix(NA_integer_, nrow = dim[1L], ncol = dim[2L]) 619s > y <- t(x) 619s > idxs_by_cols <- seq_along(x) 619s > 619s > # Assign by columns 619s > x[idxs_by_cols] <- idxs_by_cols 619s > print(x) 619s [,1] [,2] [,3] [,4] 619s [1,] 1 6 11 16 619s [2,] 2 7 12 17 619s [3,] 3 8 13 18 619s [4,] 4 9 14 19 619s [5,] 5 10 15 20 619s > 619s > # Truth 619s > y0 <- t(x) 619s > idxs_by_rows <- as.vector(y0) 619s > 619s > # Assert 619s > idxs <- indexByRow(dim) 619s > stopifnot(all.equal(idxs, idxs_by_rows)) 619s > y <- x 619s > y[idxs_by_rows] <- idxs 619s > print(y) 619s [,1] [,2] [,3] [,4] 619s [1,] 1 6 11 16 619s [2,] 2 7 12 17 619s [3,] 3 8 13 18 619s [4,] 4 9 14 19 619s [5,] 5 10 15 20 619s > stopifnot(all(as.vector(y) == as.vector(x))) 619s > 619s > idxs_R1 <- indexByRow_R1(dim) 619s > stopifnot(all.equal(idxs_R1, idxs_by_rows)) 619s > 619s > idxs_R2 <- indexByRow_R2(dim) 619s > stopifnot(all.equal(idxs_R2, idxs_by_rows)) 619s > 619s > # Assert 619s > idxs_by_cols <- seq(from = 1, to = length(x), by = 3L) 619s > idxs_by_rows <- as.vector(t(x)[idxs_by_cols]) 619s > 619s > idxs <- indexByRow(dim, idxs = idxs_by_cols) 619s > stopifnot(all(idxs == idxs_by_rows)) 619s > 619s > idxs_R1 <- indexByRow_R1(dim, idxs = idxs_by_cols) 619s > stopifnot(all(idxs_R1 == idxs_by_rows)) 619s > 619s > idxs_R2 <- indexByRow_R2(dim, idxs = idxs_by_cols) 619s > stopifnot(all(idxs_R2 == idxs_by_rows)) 619s > 619s > 619s > ## DEFUNCT: Backward compatibility 619s > res <- tryCatch({ 619s + idxs1 <- indexByRow(x) 619s + }, error = identity) 619s > stopifnot(inherits(res, "error")) 619s > 619s > 619s > ## Exceptions: 619s > ## Too large matrices are not supported, which happens 619s > ## when prod(dim) > .Machine$integer.max 619s > dim_too_large <- c(.Machine$integer.max, 2L) 619s > res <- tryCatch({ 619s + idxs <- indexByRow(dim_too_large, idxs = 1L) 619s + }, error = identity) 619s > stopifnot(inherits(res, "error")) 619s > 619s > ## Non-positive indices are not supported 619s > res <- tryCatch({ 619s + idxs <- indexByRow(c(1,1), idxs = 0L) 619s + }, error = identity) 619s > stopifnot(inherits(res, "error")) 619s > 619s > res <- tryCatch({ 619s + idxs <- indexByRow(c(1,1), idxs = -1L) 619s + }, error = identity) 619s > stopifnot(inherits(res, "error")) 619s > 619s 619s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 619s Copyright (C) 2024 The R Foundation for Statistical Computing 619s Platform: powerpc64le-unknown-linux-gnu (64-bit) 619s 619s R is free software and comes with ABSOLUTELY NO WARRANTY. 619s You are welcome to redistribute it under certain conditions. 619s Type 'license()' or 'licence()' for distribution details. 619s 619s R is a collaborative project with many contributors. 619s Type 'contributors()' for more information and 619s 'citation()' on how to cite R or R packages in publications. 619s 619s Type 'demo()' for some demos, 'help()' for on-line help, or 619s 'help.start()' for an HTML browser interface to help. 619s Type 'q()' to quit R. 619s 620s > library("matrixStats") 620s > library("stats") 620s > 620s > logSumExp_R <- function(lx, na.rm = FALSE) { 620s + log(sum(exp(lx), na.rm = na.rm)) 620s + } 620s > 620s > ## R-help thread \emph{'[R] Beyond double-precision?'} on May 9, 2009. 620s > 620s > for (mode in c("integer", "double")) { 620s + cat("mode: ", mode, "\n", sep = "") 620s + 620s + set.seed(1) 620s + x <- runif(20, min = 1.0, max = 3.0) 620s + storage.mode(x) <- mode 620s + str(x) 620s + 620s + ## The logarithm of the harmonic mean 620s + y0 <- log(1 / mean(1 / x)) 620s + print(y0) ## -1.600885 620s + 620s + lx <- log(x) 620s + y1 <- log(length(x)) - logSumExp(-lx) 620s + print(y1) ## [1] -1.600885 620s + 620s + # Sanity check 620s + stopifnot(all.equal(y1, y0)) 620s + 620s + y2 <- log(length(x)) - logSumExp_R(-lx) 620s + # Sanity check 620s + stopifnot(all.equal(y2, y0)) 620s + } # for (mode ...) 620s mode: integer 620s int [1:20] 1 1 2 2 1 2 2 2 2 1 ... 620s [1] 0.3215836 620s [1] 0.3215836 620s mode: double 620s num [1:20] 1.53 1.74 2.15 2.82 1.4 ... 620s [1] 0.6673156 620s [1] 0.6673156 620s > 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Missing values 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > ## NA values 620s > lx <- c(1, 2, 3) 620s > lx[2] <- NA_real_ 620s > y0 <- logSumExp_R(lx, na.rm = FALSE) 620s > y <- logSumExp(lx, na.rm = FALSE) 620s > print(y) 620s [1] NA 620s > stopifnot(identical(y, NA_real_)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > y0 <- logSumExp_R(lx, na.rm = TRUE) 620s > y <- logSumExp(lx, na.rm = TRUE) 620s > print(y) 620s [1] 3.126928 620s > stopifnot(all.equal(y, y0)) 620s > 620s > ## NaN values 620s > lx <- c(1, 2, 3) 620s > lx[2] <- NaN 620s > y0 <- logSumExp_R(lx, na.rm = FALSE) 620s > y <- logSumExp(lx, na.rm = FALSE) 620s > print(y) 620s [1] NA 620s > stopifnot(identical(y, NA_real_)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > y0 <- logSumExp_R(lx, na.rm = TRUE) 620s > y <- logSumExp(lx, na.rm = TRUE) 620s > print(y) 620s [1] 3.126928 620s > stopifnot(all.equal(y, y0)) 620s > 620s > 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Corner cases 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > ## Zero-length vectors 620s > lx <- numeric(0L) 620s > y0 <- logSumExp_R(lx) 620s > y <- logSumExp(lx) 620s > print(y) 620s [1] -Inf 620s > stopifnot(identical(y, -Inf)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > ## Vectors of length one 620s > lx <- 1.0 620s > y0 <- logSumExp_R(lx) 620s > y <- logSumExp(lx) 620s > print(y) 620s [1] 1 620s > stopifnot(identical(y, lx)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > lx <- NA_real_ 620s > y0 <- logSumExp_R(lx, na.rm = TRUE) 620s > y <- logSumExp(lx, na.rm = TRUE) 620s > print(y) 620s [1] -Inf 620s > stopifnot(identical(y, -Inf)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > ## All missing values 620s > lx <- c(NA_real_, NA_real_) 620s > y0 <- logSumExp_R(lx, na.rm = TRUE) 620s > y <- logSumExp(lx, na.rm = TRUE) 620s > print(y) 620s [1] -Inf 620s > stopifnot(identical(y, -Inf)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > lx <- c(NA_real_, NA_real_) 620s > y0 <- logSumExp_R(lx, na.rm = FALSE) 620s > y <- logSumExp(lx, na.rm = FALSE) 620s > print(y) 620s [1] NA 620s > stopifnot(identical(y, NA_real_)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > 620s > ## +Inf values 620s > lx <- c(1, 2, +Inf) 620s > y0 <- logSumExp_R(lx) 620s > y <- logSumExp(lx) 620s > print(y) 620s [1] Inf 620s > stopifnot(identical(y, +Inf)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > ## First element is a missing value, cf. PR #33 620s > lx <- c(NA_real_, 1) 620s > y0 <- logSumExp_R(lx) 620s > print(y0) 620s [1] NA 620s > y <- logSumExp(lx, na.rm = FALSE) 620s > print(y) 620s [1] NA 620s > stopifnot(identical(y, NA_real_)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > y0 <- logSumExp_R(lx, na.rm = TRUE) 620s > print(y0) 620s [1] 1 620s > y <- logSumExp(lx, na.rm = TRUE) 620s > print(y) 620s [1] 1 620s > stopifnot(identical(y, 1)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > ## Multiple -Inf values, cf. issue #84 620s > lx <- c(-Inf, -Inf) 620s > y0 <- logSumExp_R(lx) 620s > y <- logSumExp(lx) 620s > print(y) 620s [1] -Inf 620s > stopifnot(identical(y, -Inf)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s > lx <- c(-Inf, 5, -Inf) 620s > y0 <- logSumExp_R(lx) 620s > y <- logSumExp(lx) 620s > print(y) 620s [1] 5 620s > stopifnot(identical(y, 5)) 620s > stopifnot(all.equal(y, y0)) 620s > 620s 620s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 620s Copyright (C) 2024 The R Foundation for Statistical Computing 620s Platform: powerpc64le-unknown-linux-gnu (64-bit) 620s 620s R is free software and comes with ABSOLUTELY NO WARRANTY. 620s You are welcome to redistribute it under certain conditions. 620s Type 'license()' or 'licence()' for distribution details. 620s 620s R is a collaborative project with many contributors. 620s Type 'contributors()' for more information and 620s 'citation()' on how to cite R or R packages in publications. 620s 620s Type 'demo()' for some demos, 'help()' for on-line help, or 620s 'help.start()' for an HTML browser interface to help. 620s Type 'q()' to quit R. 620s 620s > library("matrixStats") 620s > 620s > logSumExp_R <- function(lx, na.rm = FALSE) { 620s + log(sum(exp(lx), na.rm = na.rm)) 620s + } 620s > 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Subsetted tests 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > source("utils/validateIndicesFramework.R") 620s > x <- runif(6, min = -6, max = 6) 620s > for (idxs in index_cases) { 620s + validateIndicesTestVector(x, idxs, 620s + ftest = logSumExp, fsure = logSumExp_R, 620s + na.rm = FALSE) 620s + validateIndicesTestVector(x, idxs, 620s + ftest = logSumExp, fsure = logSumExp_R, 620s + na.rm = TRUE) 620s + } 620s > 620s 620s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 620s Copyright (C) 2024 The R Foundation for Statistical Computing 620s Platform: powerpc64le-unknown-linux-gnu (64-bit) 620s 620s R is free software and comes with ABSOLUTELY NO WARRANTY. 620s You are welcome to redistribute it under certain conditions. 620s Type 'license()' or 'licence()' for distribution details. 620s 620s R is a collaborative project with many contributors. 620s Type 'contributors()' for more information and 620s 'citation()' on how to cite R or R packages in publications. 620s 620s Type 'demo()' for some demos, 'help()' for on-line help, or 620s 'help.start()' for an HTML browser interface to help. 620s Type 'q()' to quit R. 620s 620s > library("matrixStats") 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Consistency checks 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > set.seed(1) 620s > 620s > mean2_R <- function(x, na.rm = FALSE, idxs = NULL) { 620s + if (is.null(idxs)) { 620s + mean(x, na.rm = na.rm) 620s + } else { 620s + mean(x[idxs], na.rm = na.rm) 620s + } 620s + } # mean2_R() 620s > 620s > 620s > cat("Consistency checks:\n") 620s Consistency checks: 620s > for (kk in 1:20) { 620s + cat("Random test #", kk, "\n", sep = "") 620s + 620s + # Simulate data in a matrix of any shape 620s + n <- sample(100L, size = 1L) 620s + x <- rnorm(n, sd = 100) 620s + 620s + # Add NAs? 620s + if ((kk %% 4) %in% c(3, 0)) { 620s + cat("Adding NAs\n") 620s + nna <- sample(n, size = 1L) 620s + na_values <- c(NA_real_, NaN) 620s + t <- sample(na_values, size = nna, replace = TRUE) 620s + x[sample(length(x), size = nna)] <- t 620s + } 620s + 620s + # Integer or double? 620s + if ((kk %% 4) %in% c(2, 0)) { 620s + cat("Coercing to integers\n") 620s + storage.mode(x) <- "integer" 620s + } 620s + 620s + na.rm <- sample(c(TRUE, FALSE), size = 1L) 620s + 620s + # Sum over all 620s + y0 <- mean2_R(x, na.rm = na.rm) 620s + y1 <- mean2(x, na.rm = na.rm) 620s + stopifnot(all.equal(y1, y0)) 620s + 620s + # Sum over subset 620s + nidxs <- sample(n, size = 1L) 620s + idxs <- sample(n, size = nidxs) 620s + y0 <- mean2_R(x, na.rm = na.rm, idxs = idxs) 620s + y1 <- mean2(x, na.rm = na.rm, idxs = idxs) 620s + stopifnot(all.equal(y1, y0)) 620s + 620s + if (storage.mode(x) == "integer") { 620s + storage.mode(x) <- "logical" 620s + 620s + y0 <- mean2_R(x, na.rm = na.rm) 620s + y1 <- mean2(x, na.rm = na.rm) 620s + stopifnot(all.equal(y1, y0)) 620s + 620s + y0 <- mean2_R(x, na.rm = na.rm, idxs = idxs) 620s + y1 <- mean2(x, na.rm = na.rm, idxs = idxs) 620s + stopifnot(all.equal(y1, y0)) 620s + } 620s + } # for (kk ...) 620s Random test #1 620s Random test #2 620s Coercing to integers 620s Random test #3 620s Adding NAs 620s Random test #4 620s Adding NAs 620s Coercing to integers 620s Random test #5 620s Random test #6 620s Coercing to integers 620s Random test #7 620s Adding NAs 620s Random test #8 620s Adding NAs 620s Coercing to integers 620s Random test #9 620s Random test #10 620s Coercing to integers 620s Random test #11 620s Adding NAs 620s Random test #12 620s Adding NAs 620s Coercing to integers 620s Random test #13 620s Random test #14 620s Coercing to integers 620s Random test #15 620s Adding NAs 620s Random test #16 620s Adding NAs 620s Coercing to integers 620s Random test #17 620s Random test #18 620s Coercing to integers 620s Random test #19 620s Adding NAs 620s Random test #20 620s Adding NAs 620s Coercing to integers 620s > 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Special cases 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > for (na.rm in c(FALSE, TRUE)) { 620s + # Averaging over zero elements (integers) 620s + x <- integer(0) 620s + s1 <- mean(x, na.rm = na.rm) 620s + s2 <- mean2(x, na.rm = na.rm) 620s + stopifnot(identical(s1, s2)) 620s + 620s + x <- 1:5 620s + idxs <- integer(0) 620s + s1 <- mean(x[idxs], na.rm = na.rm) 620s + s2 <- mean2(x, idxs = idxs, na.rm = na.rm) 620s + stopifnot(identical(s1, s2)) 620s + 620s + # Averaging over NA_integer_:s 620s + x <- rep(NA_integer_, times = 5L) 620s + s1 <- mean(x, na.rm = na.rm) 620s + s2 <- mean2(x, na.rm = na.rm) 620s + stopifnot(identical(s1, s2)) 620s + 620s + x <- rep(NA_integer_, times = 5L) 620s + idxs <- 1:3 620s + s1 <- mean(x[idxs], na.rm = na.rm) 620s + s2 <- mean2(x, idxs = idxs, na.rm = na.rm) 620s + stopifnot(identical(s1, s2)) 620s + 620s + 620s + # Averaging over zero elements (doubles) 620s + x <- double(0) 620s + s1 <- mean(x) 620s + s2 <- mean2(x) 620s + stopifnot(identical(s1, s2)) 620s + 620s + x <- as.double(1:10) 620s + idxs <- integer(0) 620s + s1 <- mean(x[idxs]) 620s + s2 <- mean2(x, idxs = idxs) 620s + stopifnot(identical(s1, s2)) 620s + 620s + # Averaging over NA_real_:s 620s + x <- rep(NA_real_, times = 5L) 620s + s1 <- mean(x, na.rm = na.rm) 620s + s2 <- mean2(x, na.rm = na.rm) 620s + stopifnot(identical(s1, s2)) 620s + 620s + x <- rep(NA_real_, times = 5L) 620s + idxs <- 1:3 620s + s1 <- mean(x[idxs], na.rm = na.rm) 620s + s2 <- mean2(x, idxs = idxs, na.rm = na.rm) 620s + stopifnot(identical(s1, s2)) 620s + 620s + # Averaging over -Inf:s 620s + x <- rep(-Inf, times = 3L) 620s + s1 <- mean(x, na.rm = na.rm) 620s + s2 <- mean2(x, na.rm = na.rm) 620s + stopifnot(identical(s1, s2)) 620s + 620s + # Averaging over +Inf:s 620s + x <- rep(+Inf, times = 3L) 620s + s1 <- mean(x, na.rm = na.rm) 620s + s2 <- mean2(x, na.rm = na.rm) 620s + stopifnot(identical(s1, s2)) 620s + 620s + # Averaging over mix of -Inf:s and +Inf:s 620s + x <- rep(c(-Inf, +Inf), times = 3L) 620s + s1 <- mean(x, na.rm = na.rm) 620s + s2 <- mean2(x, na.rm = na.rm) 620s + stopifnot(identical(s1, s2)) 620s + 620s + # Averaging over mix of -Inf:s and +Inf:s and numerics 620s + x <- rep(c(-Inf, +Inf, 3.14), times = 2L) 620s + s1 <- mean(x, na.rm = na.rm) 620s + s2 <- mean2(x, na.rm = na.rm) 620s + stopifnot(identical(s1, s2)) 620s + 620s + # Averaging over mix of NaN, NA, +Inf, and numerics 620s + x <- c(NaN, NA, +Inf, 3.14) 620s + s1 <- mean(x, na.rm = na.rm) 620s + s2 <- mean2(x, na.rm = na.rm) 620s + if (na.rm) { 620s + stopifnot(identical(s2, s1)) 620s + } else { 620s + stopifnot(is.na(s1), is.na(s2)) 620s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 620s + ## returned here (as one would expect). NaN might very well be returned, 620s + ## when both NA and NaN are involved. This is an accepted feature in R, 620s + ## which is documented in help("is.nan"). See also 620s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 620s + ## Thus, we cannot guarantee that s1 is identical to s0. 620s + } 620s + 620s + # Averaging over mix of NaN, NA_real_, +Inf, and numerics 620s + x <- c(NA_real_, NaN, +Inf, 3.14) 620s + s1 <- mean(x, na.rm = na.rm) 620s + s2 <- mean2(x, na.rm = na.rm) 620s + if (na.rm) { 620s + stopifnot(identical(s2, s1)) 620s + } else { 620s + stopifnot(is.na(s1), is.na(s2)) 620s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 620s + ## returned here (as one would expect). NaN might very well be returned, 620s + ## when both NA and NaN are involved. This is an accepted feature in R, 620s + ## which is documented in help("is.nan"). See also 620s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 620s + ## Thus, we cannot guarantee that s1 is identical to s0. 620s + } 620s + } 620s > 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Argument 'idxs' 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > x <- 1:5 620s > idxs_list <- list( 620s + integer = 1:3, 620s + double = as.double(1:3), 620s + logical = (x <= 3) 620s + ) 620s > 620s > for (idxs in idxs_list) { 620s + cat("idxs:\n") 620s + str(idxs) 620s + s1 <- mean(x[idxs], na.rm = TRUE) 620s + s2 <- mean2(x, idxs = idxs, na.rm = TRUE) 620s + stopifnot(identical(s1, s2)) 620s + } 620s idxs: 620s int [1:3] 1 2 3 620s idxs: 620s num [1:3] 1 2 3 620s idxs: 620s logi [1:5] TRUE TRUE TRUE FALSE FALSE 620s > 620s 620s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 620s Copyright (C) 2024 The R Foundation for Statistical Computing 620s Platform: powerpc64le-unknown-linux-gnu (64-bit) 620s 620s R is free software and comes with ABSOLUTELY NO WARRANTY. 620s You are welcome to redistribute it under certain conditions. 620s Type 'license()' or 'licence()' for distribution details. 620s 620s R is a collaborative project with many contributors. 620s Type 'contributors()' for more information and 620s 'citation()' on how to cite R or R packages in publications. 620s 620s Type 'demo()' for some demos, 'help()' for on-line help, or 620s 'help.start()' for an HTML browser interface to help. 620s Type 'q()' to quit R. 620s 620s > library("matrixStats") 620s > 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > # Subsetted tests 620s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 620s > source("utils/validateIndicesFramework.R") 620s > x <- runif(6, min = -6, max = 6) 620s > storage.mode(x) <- "integer" 620s > for (idxs in index_cases) { 620s + validateIndicesTestVector(x, idxs, 620s + ftest = mean2, fsure = mean, 620s + na.rm = FALSE) 620s + validateIndicesTestVector(x, idxs, 620s + ftest = mean2, fsure = mean, 620s + na.rm = TRUE) 620s + } 620s > 620s 620s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 620s Copyright (C) 2024 The R Foundation for Statistical Computing 620s Platform: powerpc64le-unknown-linux-gnu (64-bit) 620s 620s R is free software and comes with ABSOLUTELY NO WARRANTY. 620s You are welcome to redistribute it under certain conditions. 620s Type 'license()' or 'licence()' for distribution details. 620s 620s R is a collaborative project with many contributors. 620s Type 'contributors()' for more information and 620s 'citation()' on how to cite R or R packages in publications. 620s 620s Type 'demo()' for some demos, 'help()' for on-line help, or 620s 'help.start()' for an HTML browser interface to help. 620s Type 'q()' to quit R. 620s 621s > library("matrixStats") 621s > 621s > for (mode in c("integer", "double")) { 621s + cat("mode: ", mode, "\n", sep = "") 621s + 621s + # Empty vector 621s + x <- 0 621s + storage.mode(x) <- mode 621s + y <- prod(x, na.rm = TRUE) 621s + print(y) 621s + z <- product(x, na.rm = TRUE) 621s + print(z) 621s + stopifnot(all.equal(z, y)) 621s + 621s + # Test negative values 621s + x <- c(1, -4, 2) 621s + storage.mode(x) <- mode 621s + y <- prod(x, na.rm = TRUE) 621s + print(y) 621s + z <- product(x, na.rm = TRUE) 621s + print(z) 621s + stopifnot(all.equal(z, y)) 621s + 621s + # Test missing values 621s + x <- c(1, NA, NaN, 2) 621s + storage.mode(x) <- mode 621s + y <- prod(x, na.rm = TRUE) 621s + print(y) 621s + z <- product(x, na.rm = TRUE) 621s + print(z) 621s + stopifnot(all.equal(z, y)) 621s + 621s + x <- c(1, NA, NaN, 2) 621s + storage.mode(x) <- mode 621s + y <- prod(x, na.rm = FALSE) 621s + print(y) 621s + z <- product(x, na.rm = FALSE) 621s + print(z) 621s + stopifnot(all(is.na(z), is.na(y))) 621s + 621s + x <- c(1, NaN, 2) 621s + storage.mode(x) <- mode 621s + y <- prod(x, na.rm = FALSE) 621s + print(y) 621s + stopifnot(is.na(y)) 621s + z <- product(x, na.rm = FALSE) 621s + print(z) 621s + stopifnot(is.na(z)) 621s + 621s + } # for (mode ...) 621s mode: integer 621s [1] 0 621s [1] 0 621s [1] -8 621s [1] -8 621s [1] 2 621s [1] 2 621s [1] NA 621s [1] NA 621s [1] NA 621s [1] NA 621s mode: double 621s [1] 0 621s [1] 0 621s [1] -8 621s [1] -8 621s [1] 2 621s [1] 2 621s [1] NA 621s [1] NA 621s [1] NaN 621s [1] NA 621s > 621s > 621s > # NAs following 0s 621s > x <- c(0L, NA_integer_) 621s > y <- prod(x, na.rm = FALSE) 621s > print(y) 621s [1] NA 621s > z <- product(x, na.rm = FALSE) 621s > print(z) 621s [1] NA 621s > stopifnot(identical(z, y)) 621s > 621s 621s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 621s Copyright (C) 2024 The R Foundation for Statistical Computing 621s Platform: powerpc64le-unknown-linux-gnu (64-bit) 621s 621s R is free software and comes with ABSOLUTELY NO WARRANTY. 621s You are welcome to redistribute it under certain conditions. 621s Type 'license()' or 'licence()' for distribution details. 621s 621s R is a collaborative project with many contributors. 621s Type 'contributors()' for more information and 621s 'citation()' on how to cite R or R packages in publications. 621s 621s Type 'demo()' for some demos, 'help()' for on-line help, or 621s 'help.start()' for an HTML browser interface to help. 621s Type 'q()' to quit R. 621s 621s > library("matrixStats") 621s > 621s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621s > # Subsetted tests 621s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621s > source("utils/validateIndicesFramework.R") 621s > x <- runif(6, min = -6, max = 6) 621s > storage.mode(x) <- "integer" 621s > for (idxs in index_cases) { 621s + validateIndicesTestVector(x, idxs, 621s + ftest = product, fsure = prod, 621s + na.rm = TRUE) 621s + validateIndicesTestVector(x, idxs, 621s + ftest = product, fsure = prod, 621s + na.rm = FALSE) 621s + } 621s > 621s 621s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 621s Copyright (C) 2024 The R Foundation for Statistical Computing 621s Platform: powerpc64le-unknown-linux-gnu (64-bit) 621s 621s R is free software and comes with ABSOLUTELY NO WARRANTY. 621s You are welcome to redistribute it under certain conditions. 621s Type 'license()' or 'licence()' for distribution details. 621s 621s R is a collaborative project with many contributors. 621s Type 'contributors()' for more information and 621s 'citation()' on how to cite R or R packages in publications. 621s 621s Type 'demo()' for some demos, 'help()' for on-line help, or 621s 'help.start()' for an HTML browser interface to help. 621s Type 'q()' to quit R. 621s 621s > library("matrixStats") 621s > library("utils") ## utils::str 621s > 621s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621s > # Local functions 621s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621s > psortKM_R <- function(x, k, m) { 621s + x <- sort(x) 621s + x[(k - m + 1):k] 621s + } 621s > 621s > psortKM_R2 <- function(x, k, m) { 621s + partial <- (k - m + 1):k 621s + x <- sort.int(x, partial = partial) 621s + x[partial] 621s + } 621s > 621s > 621s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621s > # Consistency checks 621s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621s > set.seed(1) 621s > 621s > cat("Consistency checks:\n") 621s Consistency checks: 621s > x <- 1:30 621s > x[18:20] <- 20 621s > y <- sample(x) 621s > cat("x:\n") 621s x: 621s > str(x) 621s num [1:30] 1 2 3 4 5 6 7 8 9 10 ... 621s > cat("sample(x):\n") 621s sample(x): 621s > str(y) 621s num [1:30] 25 4 7 1 2 23 11 14 20 20 ... 621s > 621s > for (k in c(1L, 2L, 20L, 21L, length(x))) { 621s + for (m in 1:min(5L, k)) { 621s + px0 <- psortKM_R(x, k = k, m = m) 621s + px0b <- psortKM_R2(x, k = k, m = m) 621s + stopifnot(identical(px0b, px0)) 621s + px1 <- matrixStats:::.psortKM(x, k = k, m = m) 621s + cat(sprintf(".psortKM(x, k = %d, m = %d):\n", k, m)) 621s + print(px1) 621s + stopifnot(identical(px1, px0)) 621s + 621s + py0 <- psortKM_R(y, k = k, m = m) 621s + py0b <- psortKM_R2(y, k = k, m = m) 621s + stopifnot(identical(py0b, py0)) 621s + py1 <- matrixStats:::.psortKM(y, k = k, m = m) 621s + cat(sprintf(".psortKM(y, k = %d, m = %d):\n", k, m)) 621s + print(py1) 621s + stopifnot(identical(py1, py0)) 621s + stopifnot(identical(py1, px1)) 621s + } # for (m ...) 621s + } # for (k ...) 621s .psortKM(x, k = 1, m = 1): 621s [1] 1 621s .psortKM(y, k = 1, m = 1): 621s [1] 1 621s .psortKM(x, k = 2, m = 1): 621s [1] 2 621s .psortKM(y, k = 2, m = 1): 621s [1] 2 621s .psortKM(x, k = 2, m = 2): 621s [1] 1 2 621s .psortKM(y, k = 2, m = 2): 621s [1] 1 2 621s .psortKM(x, k = 20, m = 1): 621s [1] 20 621s .psortKM(y, k = 20, m = 1): 621s [1] 20 621s .psortKM(x, k = 20, m = 2): 621s [1] 20 20 621s .psortKM(y, k = 20, m = 2): 621s [1] 20 20 621s .psortKM(x, k = 20, m = 3): 621s [1] 20 20 20 621s .psortKM(y, k = 20, m = 3): 621s [1] 20 20 20 621s .psortKM(x, k = 20, m = 4): 621s [1] 17 20 20 20 621s .psortKM(y, k = 20, m = 4): 621s [1] 17 20 20 20 621s .psortKM(x, k = 20, m = 5): 621s [1] 16 17 20 20 20 621s .psortKM(y, k = 20, m = 5): 621s [1] 16 17 20 20 20 621s .psortKM(x, k = 21, m = 1): 621s [1] 21 621s .psortKM(y, k = 21, m = 1): 621s [1] 21 621s .psortKM(x, k = 21, m = 2): 621s [1] 20 21 621s .psortKM(y, k = 21, m = 2): 621s [1] 20 21 621s .psortKM(x, k = 21, m = 3): 621s [1] 20 20 21 621s .psortKM(y, k = 21, m = 3): 621s [1] 20 20 21 621s .psortKM(x, k = 21, m = 4): 621s [1] 20 20 20 21 621s .psortKM(y, k = 21, m = 4): 621s [1] 20 20 20 21 621s .psortKM(x, k = 21, m = 5): 621s [1] 17 20 20 20 21 621s .psortKM(y, k = 21, m = 5): 621s [1] 17 20 20 20 21 621s .psortKM(x, k = 30, m = 1): 621s [1] 30 621s .psortKM(y, k = 30, m = 1): 621s [1] 30 621s .psortKM(x, k = 30, m = 2): 621s [1] 29 30 621s .psortKM(y, k = 30, m = 2): 621s [1] 29 30 621s .psortKM(x, k = 30, m = 3): 621s [1] 28 29 30 621s .psortKM(y, k = 30, m = 3): 621s [1] 28 29 30 621s .psortKM(x, k = 30, m = 4): 621s [1] 27 28 29 30 621s .psortKM(y, k = 30, m = 4): 621s [1] 27 28 29 30 621s .psortKM(x, k = 30, m = 5): 621s [1] 26 27 28 29 30 621s .psortKM(y, k = 30, m = 5): 621s [1] 26 27 28 29 30 621s > 621s 621s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 621s Copyright (C) 2024 The R Foundation for Statistical Computing 621s Platform: powerpc64le-unknown-linux-gnu (64-bit) 621s 621s R is free software and comes with ABSOLUTELY NO WARRANTY. 621s You are welcome to redistribute it under certain conditions. 621s Type 'license()' or 'licence()' for distribution details. 621s 621s R is a collaborative project with many contributors. 621s Type 'contributors()' for more information and 621s 'citation()' on how to cite R or R packages in publications. 621s 621s Type 'demo()' for some demos, 'help()' for on-line help, or 621s 'help.start()' for an HTML browser interface to help. 621s Type 'q()' to quit R. 621s 621s > library("matrixStats") 621s > 621s > rowAlls_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 621s + if (is.na(value)) { 621s + res <- apply(is.na(x), MARGIN = 1L, FUN = all, na.rm = na.rm) 621s + } else { 621s + y <- x == value 621s + 621s + # Preserve dimnames attribute 621s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 621s + if (!isTRUE(all.equal(dim(y), dim))) { 621s + dim(y) <- dim 621s + dimnames(y) <- dimnames(x) 621s + } 621s + 621s + res <- apply(y, MARGIN = 1L, FUN = all, na.rm = na.rm) 621s + } 621s + if (is.na(useNames) || !useNames) names(res) <- NULL 621s + res 621s + } 621s > 621s > rowAnys_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 621s + if (is.na(value)) { 621s + res <- apply(is.na(x), MARGIN = 1L, FUN = any, na.rm = na.rm) 621s + } else { 621s + y <- x == value 621s + 621s + # Preserve dimnames attribute 621s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 621s + if (!isTRUE(all.equal(dim(y), dim))) { 621s + dim(y) <- dim 621s + dimnames(y) <- dimnames(x) 621s + } 621s + 621s + res <- apply(y, MARGIN = 1L, FUN = any, na.rm = na.rm) 621s + } 621s + if (is.na(useNames) || !useNames) names(res) <- NULL 621s + res 621s + } 621s > 621s > rowAnyMissings_R <- function(x, ..., useNames = NA) { 621s + res <- apply(x, MARGIN = 1L, FUN = anyMissing) 621s + if (is.na(useNames) || !useNames) names(res) <- NULL 621s + res 621s + } 621s > 621s > 621s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621s > # Data type: logical 621s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 621s > x <- matrix(FALSE, nrow = 10L, ncol = 4L) 621s > x[7:8, 2:3] <- TRUE 621s > x[1:3, ] <- TRUE 621s > x[, 1] <- TRUE 621s > x[4, ] <- FALSE 621s > x[, 4] <- FALSE 621s > x[2, ] <- FALSE 621s > x[3, ] <- TRUE 621s > 621s > # To check names attribute 621s > dimnames <- list(letters[1:10], LETTERS[1:4]) 621s > 621s > for (kk in 1:3) { 621s + if (kk == 2) { 621s + x[2, 2] <- NA 621s + } else if (kk == 3) { 621s + x[, 2] <- NA 621s + x[2, ] <- NA 621s + } 621s + 621s + # Test with and without dimnames on x 621s + for (setDimnames in c(TRUE, FALSE)) { 621s + dimnames(x) <- if (setDimnames) dimnames else NULL 621s + 621s + for (na.rm in c(FALSE, TRUE)) { 621s + # Check names attribute 621s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 621s + m0 <- rowAlls_R(x, na.rm = na.rm, useNames = useNames) 621s + m1 <- rowAlls(x, na.rm = na.rm, useNames = useNames) 621s + m2 <- colAlls(t(x), na.rm = na.rm, useNames = useNames) 621s + str(list("all()", m0 = m0, m1 = m1, m2 = m2)) 621s + stopifnot(identical(m1, m0)) 621s + stopifnot(identical(m2, m0)) 621s + 621s + m0 <- rowAnys_R(x, na.rm = na.rm, useNames = useNames) 621s + m1 <- rowAnys(x, na.rm = na.rm, useNames = useNames) 621s + m2 <- colAnys(t(x), na.rm = na.rm, useNames = useNames) 621s + str(list("any()", m0 = m0, m1 = m1, m2 = m2)) 621s + stopifnot(identical(m1, m0)) 621s + stopifnot(identical(m2, m0)) 621s + 621s + m0 <- rowAnyMissings_R(x, useNames = useNames) 621s + m1 <- rowAnyMissings(x, useNames = useNames) 621s + m2 <- colAnyMissings(t(x), useNames = useNames) 621s + str(list("anyMissing()", m0 = m0, m1 = m1, m2 = m2)) 621s + stopifnot(identical(m1, m0)) 621s + stopifnot(identical(m2, m0)) 621s + } 621s + } 621s + } 621s + } # for (kk ...) 621s List of 4 621s $ : chr "all()" 621s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "any()" 621s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "any()" 621s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "any()" 621s $ m0: Named logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "any()" 621s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE NA TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE FALSE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE TRUE FALSE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: Named logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "any()" 621s $ m0: Named logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 621s $ m1: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 621s $ m2: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 621s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 621s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 621s List of 4 621s $ : chr "all()" 621s $ m0: Named logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "any()" 621s $ m0: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "anyMissing()" 621s $ m0: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m1: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s $ m2: Named logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 621s ..- attr(*, "names")= chr [1:10] "a" "b" "c" "d" ... 621s List of 4 621s $ : chr "all()" 621s $ m0: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 621s $ m1: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 621s $ m2: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 621s List of 4 621s $ : chr "any()" 621s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 622s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 622s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 622s List of 4 622s $ : chr "anyMissing()" 622s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s List of 4 622s $ : chr "all()" 622s $ m0: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 622s $ m1: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 622s $ m2: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 622s List of 4 622s $ : chr "any()" 622s $ m0: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 622s $ m1: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 622s $ m2: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 622s List of 4 622s $ : chr "anyMissing()" 622s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s List of 4 622s $ : chr "all()" 622s $ m0: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 622s $ m1: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 622s $ m2: logi [1:10] FALSE NA NA FALSE FALSE FALSE ... 622s List of 4 622s $ : chr "any()" 622s $ m0: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 622s $ m1: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 622s $ m2: logi [1:10] TRUE NA TRUE NA TRUE TRUE ... 622s List of 4 622s $ : chr "anyMissing()" 622s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s List of 4 622s $ : chr "all()" 622s $ m0: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 622s $ m1: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 622s $ m2: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 622s List of 4 622s $ : chr "any()" 622s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 622s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 622s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 622s List of 4 622s $ : chr "anyMissing()" 622s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s List of 4 622s $ : chr "all()" 622s $ m0: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 622s $ m1: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 622s $ m2: logi [1:10] FALSE TRUE TRUE FALSE FALSE FALSE ... 622s List of 4 622s $ : chr "any()" 622s $ m0: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 622s $ m1: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 622s $ m2: logi [1:10] TRUE FALSE TRUE FALSE TRUE TRUE ... 622s List of 4 622s $ : chr "anyMissing()" 622s $ m0: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s $ m1: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s $ m2: logi [1:10] TRUE TRUE TRUE TRUE TRUE TRUE ... 622s > 622s > 622s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622s > # Data type: integer 622s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622s > x <- matrix(rep(1:6, length.out = 4 * 5), nrow = 4L, ncol = 5L) 622s > x[2, ] <- 7L 622s > x[3, 1] <- 7L 622s > x[2:3, 3:4] <- NA_integer_ 622s > 622s > # To check names attribute 622s > dimnames <- list(letters[1:4], LETTERS[1:5]) 622s > 622s > # Row/column counts 622s > value <- 7L 622s > 622s > # Test with and without dimnames on x 622s > for (setDimnames in c(TRUE, FALSE)) { 622s + dimnames(x) <- if (setDimnames) dimnames else NULL 622s + for (na.rm in c(FALSE, TRUE)) { 622s + # Check names attribute 622s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 622s + r0 <- rowAlls_R(x, value = value, na.rm = na.rm, useNames = useNames) 622s + r1 <- rowAlls(x, value = value, na.rm = na.rm, useNames = useNames) 622s + r2 <- colAlls(t(x), value = value, na.rm = na.rm, useNames = useNames) 622s + stopifnot(identical(r1, r0)) 622s + stopifnot(identical(r2, r1)) 622s + if (!is.na(useNames) && !useNames && !setDimnames) { 622s + for (rr in seq_len(nrow(x))) { 622s + c <- allValue(x[rr, ], value = value, na.rm = na.rm) 622s + stopifnot(identical(c, r1[rr])) 622s + c <- allValue(x[rr, ], value = value, na.rm = na.rm) 622s + stopifnot(identical(c, r1[rr])) 622s + } 622s + } 622s + 622s + r0 <- rowAnys_R(x, value = value, na.rm = na.rm, useNames = useNames) 622s + r1 <- rowAnys(x, value = value, na.rm = na.rm, useNames = useNames) 622s + r2 <- colAnys(t(x), value = value, na.rm = na.rm, useNames = useNames) 622s + stopifnot(identical(r1, r0)) 622s + stopifnot(identical(r2, r1)) 622s + if (!is.na(useNames) && !useNames && !setDimnames) { 622s + for (rr in seq_len(nrow(x))) { 622s + c <- anyValue(x[rr, ], value = value, na.rm = na.rm) 622s + stopifnot(identical(c, r1[rr])) 622s + c <- anyValue(x[rr, ], value = value, na.rm = na.rm) 622s + stopifnot(identical(c, r1[rr])) 622s + } 622s + } 622s + } 622s + } 622s + } 622s > 622s > 622s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622s > # rowAlls(x) et al. on numeric 'x' with logical 'value' 622s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622s > x <- matrix(0, nrow = 4L, ncol = 5L) 622s > x[2:4, 2] <- (1:3) / 4 622s > x[2, 2:4] <- (1:3) / 4 622s > x[3:4, 3] <- (3:4) / 4 622s > x[3, 3:4] <- (3:4) / 4 622s > x[1:4, 5] <- (1:4) / 5 622s > x[4, 4] <- NA_real_ 622s > 622s > # To check names attribute 622s > dimnames <- list(letters[1:4], LETTERS[1:5]) 622s > 622s > for (value in c(TRUE, FALSE)) { 622s + for (na.rm in c(FALSE, TRUE)) { 622s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 622s + y <- rowAnys(x, na.rm = na.rm, value = value) 622s + stopifnot(identical(y, y0)) 622s + # Check names attribute 622s + dimnames(x) <- dimnames 622s + y <- rowAnys(x, na.rm = na.rm, value = value, useNames = FALSE) 622s + stopifnot(all.equal(y, y0)) 622s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 622s + y <- rowAnys(x, na.rm = na.rm, value = value, useNames = TRUE) 622s + stopifnot(all.equal(y, y0)) 622s + dimnames(x) <- NULL 622s + 622s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 622s + y <- colAnys(x, na.rm = na.rm, value = value) 622s + stopifnot(identical(y, y0)) 622s + # Check names attribute 622s + dimnames(x) <- dimnames 622s + y <- colAnys(x, na.rm = na.rm, value = value, useNames = FALSE) 622s + stopifnot(all.equal(y, y0)) 622s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) any(as.logical(e) == value, na.rm = na.rm))) 622s + y <- colAnys(x, na.rm = na.rm, value = value, useNames = TRUE) 622s + stopifnot(all.equal(y, y0)) 622s + dimnames(x) <- NULL 622s + 622s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 622s + y <- rowAlls(x, na.rm = na.rm, value = value) 622s + stopifnot(identical(y, y0)) 622s + # Check names attribute 622s + dimnames(x) <- dimnames 622s + y <- rowAlls(x, na.rm = na.rm, value = value, useNames = FALSE) 622s + stopifnot(all.equal(y, y0)) 622s + y0 <- suppressWarnings(apply(x, MARGIN = 1L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 622s + y <- rowAlls(x, na.rm = na.rm, value = value, useNames = TRUE) 622s + stopifnot(all.equal(y, y0)) 622s + dimnames(x) <- NULL 622s + 622s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 622s + y <- colAlls(x, na.rm = na.rm, value = value) 622s + stopifnot(identical(y, y0)) 622s + print(y0) 622s + # Check names attribute 622s + dimnames(x) <- dimnames 622s + y <- colAlls(x, na.rm = na.rm, value = value, useNames = FALSE) 622s + stopifnot(all.equal(y, y0)) 622s + y0 <- suppressWarnings(apply(x, MARGIN = 2L, FUN = function(e) all(as.logical(e) == value, na.rm = na.rm))) 622s + y <- colAlls(x, na.rm = na.rm, value = value, useNames = TRUE) 622s + stopifnot(all.equal(y, y0)) 622s + dimnames(x) <- NULL 622s + } ## for (na.rm ...) 622s + } ## for(value ...) 622s [1] FALSE FALSE FALSE FALSE TRUE 622s [1] FALSE FALSE FALSE FALSE TRUE 622s [1] TRUE FALSE FALSE FALSE FALSE 622s [1] TRUE FALSE FALSE FALSE FALSE 622s > 622s > 622s > 622s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622s > # Data type: character (not sure if this should be supported) 622s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622s > all_R <- function(x, value = TRUE, ...) { 622s + if (is.na(value)) { 622s + all(is.na(x), ...) 622s + } else { 622s + all(x == value, ...) 622s + } 622s + } 622s > 622s > any_R <- function(x, value = TRUE, ...) { 622s + if (is.na(value)) { 622s + any(is.na(x), ...) 622s + } else { 622s + any(x == value, ...) 622s + } 622s + } 622s > 622s > x <- matrix(rep(letters, length.out = 10 * 5), nrow = 10L, ncol = 5L) 622s > x[2, ] <- "g" 622s > x[2:4, 3:4] <- NA_character_ 622s > 622s > # To check names attribute 622s > dimnames <- list(letters[1:10], LETTERS[1:5]) 622s > 622s > # Test with and without dimnames on x 622s > for (setDimnames in c(TRUE, FALSE)) { 622s + dimnames(x) <- if (setDimnames) dimnames else NULL 622s + 622s + # Row/column counts 622s + for (value in c("g", NA_character_)) { 622s + for (na.rm in c(FALSE, TRUE)) { 622s + # Check names attribute 622s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 622s + r0 <- rowAlls_R(x, value = value, na.rm = na.rm, useNames = useNames) 622s + r1 <- rowAlls(x, value = value, na.rm = na.rm, useNames = useNames) 622s + r2 <- colAlls(t(x), value = value, na.rm = na.rm, useNames = useNames) 622s + stopifnot(identical(r1, r0)) 622s + stopifnot(identical(r2, r1)) 622s + if (!is.na(useNames) && !useNames && !setDimnames) { 622s + for (rr in seq_len(nrow(x))) { 622s + c0 <- all_R(x[rr, ], value, na.rm = na.rm) 622s + c <- allValue(x[rr, ], value = value, na.rm = na.rm) 622s + stopifnot(identical(c, r1[rr])) 622s + stopifnot(identical(c, c0)) 622s + } 622s + } 622s + 622s + r0 <- rowAnys_R(x, value = value, na.rm = na.rm, useNames = useNames) 622s + r1 <- rowAnys(x, value = value, na.rm = na.rm, useNames = useNames) 622s + r2 <- colAnys(t(x), value = value, na.rm = na.rm, useNames = useNames) 622s + stopifnot(identical(r1, r0)) 622s + stopifnot(identical(r2, r1)) 622s + if (!is.na(useNames) && !useNames && !setDimnames) { 622s + for (rr in seq_len(nrow(x))) { 622s + c0 <- any_R(x[rr, ], value, na.rm = na.rm) 622s + c <- anyValue(x[rr, ], value = value, na.rm = na.rm) 622s + stopifnot(identical(c, c0)) 622s + stopifnot(identical(c, r1[rr])) 622s + } 622s + } 622s + } 622s + } 622s + } 622s + } 622s > 622s > 622s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622s > # NA 0 test 622s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622s > x <- matrix(0, nrow = 3L, ncol = 3L) 622s > x[1, ] <- c(NA_real_, NA_real_, 0) 622s > x[3, ] <- c(1, 0, 1) 622s > 622s > dimnames <- list(letters[1:3], LETTERS[1:3]) 622s > 622s > # Test with and without dimnames on x 622s > for (setDimnames in c(TRUE, FALSE)) { 622s + dimnames(x) <- if (setDimnames) dimnames else NULL 622s + # Check names attribute 622s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 622s + r0 <- rowAnys_R(x, value = 0, useNames = useNames) 622s + r1 <- rowAnys(x, value = 0, useNames = useNames) 622s + stopifnot(identical(r0, r1)) 622s + } 622s + } 622s > 622s 622s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 622s Copyright (C) 2024 The R Foundation for Statistical Computing 622s Platform: powerpc64le-unknown-linux-gnu (64-bit) 622s 622s R is free software and comes with ABSOLUTELY NO WARRANTY. 622s You are welcome to redistribute it under certain conditions. 622s Type 'license()' or 'licence()' for distribution details. 622s 622s R is a collaborative project with many contributors. 622s Type 'contributors()' for more information and 622s 'citation()' on how to cite R or R packages in publications. 622s 622s Type 'demo()' for some demos, 'help()' for on-line help, or 622s 'help.start()' for an HTML browser interface to help. 622s Type 'q()' to quit R. 622s 622s > library("matrixStats") 622s > 622s > rowAlls_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 622s + if (is.na(value)) { 622s + res <- apply(is.na(x), MARGIN = 1L, FUN = all, na.rm = na.rm) 622s + } else { 622s + y <- x == value 622s + 622s + # Preserve dimnames attribute 622s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 622s + if (!isTRUE(all.equal(dim(y), dim))) { 622s + dim(y) <- dim 622s + dimnames(y) <- dimnames(x) 622s + } 622s + 622s + res <- apply(y, MARGIN = 1L, FUN = all, na.rm = na.rm) 622s + } 622s + if (is.na(useNames) || !useNames) names(res) <- NULL 622s + res 622s + } 622s > 622s > rowAnys_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 622s + if (is.na(value)) { 622s + res <- apply(is.na(x), MARGIN = 1L, FUN = any, na.rm = na.rm) 622s + } else { 622s + y <- x == value 622s + 622s + # Preserve dimnames attribute 622s + dim <- dim(x) # for 0xN and Mx0 cases; needed in R (< 3.4.0) 622s + if (!isTRUE(all.equal(dim(y), dim))) { 622s + dim(y) <- dim 622s + dimnames(y) <- dimnames(x) 622s + } 622s + 622s + res <- apply(y, MARGIN = 1L, FUN = any, na.rm = na.rm) 622s + } 622s + if (is.na(useNames) || !useNames) names(res) <- NULL 622s + res 622s + } 622s > 622s > rowAnyMissings_R <- function(x, ..., useNames = NA) { 622s + res <- apply(x, MARGIN = 1L, FUN = anyMissing) 622s + if (is.na(useNames) || !useNames) names(res) <- NULL 622s + res 622s + } 622s > 622s > 622s > all_R <- function(x, value = TRUE, ...) { 622s + if (is.na(value)) { 622s + all(is.na(x), ...) 622s + } else { 622s + all(x == value, ...) 622s + } 622s + } 622s > 622s > any_R <- function(x, value = TRUE, ...) { 622s + if (is.na(value)) { 622s + any(is.na(x), ...) 622s + } else { 622s + any(x == value, ...) 622s + } 622s + } 622s > 622s > 622s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622s > # Subsetted tests 622s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 622s > source("utils/validateIndicesFramework.R") 622s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 622s > storage.mode(x) <- "integer" 622s > x[2:3, ] <- NA_integer_ 622s > x[2, 1] <- 0L 622s > x[4:5, ] <- 0L 622s > x[4, 6] <- NA_integer_ 622s > 622s > # To check names attribute 622s > dimnames <- list(letters[1:6], LETTERS[1:6]) 622s > 622s > # Test with and without dimnames on x 622s > for (setDimnames in c(TRUE, FALSE)) { 622s + if (setDimnames) dimnames(x) <- dimnames 622s + else dimnames(x) <- NULL 622s + 622s + count <- 0L 622s + for (rows in index_cases) { 622s + for (cols in index_cases) { 622s + count <- count + 1L 622s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 622s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 622s + useNames <- useNames[count %% length(useNames) + 1] 622s + 622s + validateIndicesTestMatrix(x, rows, cols, 622s + ftest = rowAlls, fsure = rowAlls_R, 622s + value = 0, na.rm = TRUE, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + ftest = rowAlls, fsure = rowAlls_R, 622s + value = 0, na.rm = FALSE, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + ftest = rowAlls, fsure = rowAlls_R, 622s + value = NA_integer_, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + fcoltest = colAlls, fsure = rowAlls_R, 622s + value = 0, na.rm = TRUE, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + fcoltest = colAlls, fsure = rowAlls_R, 622s + value = 0, na.rm = FALSE, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + fcoltest = colAlls, fsure = rowAlls_R, 622s + value = NA_integer_, useNames = useNames) 622s + 622s + validateIndicesTestMatrix(x, rows, cols, 622s + ftest = rowAnys, fsure = rowAnys_R, 622s + value = 0, na.rm = TRUE, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + ftest = rowAnys, fsure = rowAnys_R, 622s + value = 0, na.rm = FALSE, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + ftest = rowAnys, fsure = rowAnys_R, 622s + value = NA_integer_, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + fcoltest = colAnys, fsure = rowAnys_R, 622s + value = 0, na.rm = TRUE, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + fcoltest = colAnys, fsure = rowAnys_R, 622s + value = 0, na.rm = FALSE, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + fcoltest = colAnys, fsure = rowAnys_R, 622s + value = NA_integer_, useNames = useNames) 622s + 622s + validateIndicesTestMatrix(x, rows, cols, 622s + ftest = rowAnyMissings, 622s + fsure = rowAnyMissings_R, useNames = useNames) 622s + validateIndicesTestMatrix(x, rows, cols, 622s + fcoltest = colAnyMissings, 622s + fsure = rowAnyMissings_R, useNames = useNames) 622s + } 622s + } 622s + } 624s > 624s > for (rr in seq_len(nrow(x))) { 624s + for (idxs in index_cases) { 624s + validateIndicesTestVector(x[rr, ], idxs, 624s + ftest = allValue, fsure = all_R, 624s + value = 0, na.rm = TRUE) 624s + validateIndicesTestVector(x[rr, ], idxs, 624s + ftest = allValue, fsure = all_R, 624s + value = 0, na.rm = FALSE) 624s + validateIndicesTestVector(x[rr, ], idxs, 624s + ftest = allValue, fsure = all_R, 624s + value = NA_integer_) 624s + 624s + validateIndicesTestVector(x[rr, ], idxs, 624s + ftest = anyValue, fsure = any_R, 624s + value = 0, na.rm = TRUE) 624s + validateIndicesTestVector(x[rr, ], idxs, 624s + ftest = anyValue, fsure = any_R, 624s + value = 0, na.rm = FALSE) 624s + validateIndicesTestVector(x[rr, ], idxs, 624s + ftest = anyValue, fsure = any_R, 624s + value = NA_integer_) 624s + } 624s + } 624s > 624s > 624s > storage.mode(x) <- "character" 624s > # Test with and without dimnames on x 624s > for (setDimnames in c(TRUE, FALSE)) { 624s + if (setDimnames) dimnames(x) <- dimnames 624s + else dimnames(x) <- NULL 624s + for (rows in index_cases) { 624s + for (cols in index_cases) { 624s + # Check names attribute 624s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 624s + validateIndicesTestMatrix(x, rows, cols, 624s + ftest = rowAlls, fsure = rowAlls_R, 624s + value = "0", na.rm = TRUE, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + ftest = rowAlls, fsure = rowAlls_R, 624s + value = "0", na.rm = FALSE, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + ftest = rowAlls, fsure = rowAlls_R, 624s + value = NA_character_, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + fcoltest = colAlls, fsure = rowAlls_R, 624s + value = "0", na.rm = TRUE, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + fcoltest = colAlls, fsure = rowAlls_R, 624s + value = "0", na.rm = FALSE, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + fcoltest = colAlls, fsure = rowAlls_R, 624s + value = NA_character_, useNames = useNames) 624s + 624s + validateIndicesTestMatrix(x, rows, cols, 624s + ftest = rowAnys, fsure = rowAnys_R, 624s + value = "0", na.rm = TRUE, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + ftest = rowAnys, fsure = rowAnys_R, 624s + value = "0", na.rm = FALSE, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + ftest = rowAnys, fsure = rowAnys_R, 624s + value = NA_character_, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + fcoltest = colAnys, fsure = rowAnys_R, 624s + value = "0", na.rm = TRUE, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + fcoltest = colAnys, fsure = rowAnys_R, 624s + value = "0", na.rm = FALSE, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + fcoltest = colAnys, fsure = rowAnys_R, 624s + value = NA_character_, useNames = useNames) 624s + 624s + validateIndicesTestMatrix(x, rows, cols, 624s + ftest = rowAnyMissings, 624s + fsure = rowAnyMissings_R, useNames = useNames) 624s + validateIndicesTestMatrix(x, rows, cols, 624s + fcoltest = colAnyMissings, 624s + fsure = rowAnyMissings_R, useNames = useNames) 624s + } 624s + } 624s + } 624s + } 628s > 628s > for (rr in seq_len(nrow(x))) { 628s + for (idxs in index_cases) { 628s + validateIndicesTestVector(x[rr, ], idxs, 628s + ftest = allValue, fsure = all_R, 628s + value = "0", na.rm = TRUE) 628s + validateIndicesTestVector(x[rr, ], idxs, 628s + ftest = allValue, fsure = all_R, 628s + value = "0", na.rm = FALSE) 628s + validateIndicesTestVector(x[rr, ], idxs, 628s + ftest = allValue, fsure = all_R, 628s + value = NA_integer_) 628s + 628s + validateIndicesTestVector(x[rr, ], idxs, 628s + ftest = anyValue, fsure = any_R, 628s + value = "0", na.rm = TRUE) 628s + validateIndicesTestVector(x[rr, ], idxs, 628s + ftest = anyValue, fsure = any_R, 628s + value = "0", na.rm = FALSE) 628s + validateIndicesTestVector(x[rr, ], idxs, 628s + ftest = anyValue, fsure = any_R, 628s + value = NA_integer_) 628s + } 628s + } 628s > 628s 628s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 628s Copyright (C) 2024 The R Foundation for Statistical Computing 628s Platform: powerpc64le-unknown-linux-gnu (64-bit) 628s 628s R is free software and comes with ABSOLUTELY NO WARRANTY. 628s You are welcome to redistribute it under certain conditions. 628s Type 'license()' or 'licence()' for distribution details. 628s 628s R is a collaborative project with many contributors. 628s Type 'contributors()' for more information and 628s 'citation()' on how to cite R or R packages in publications. 628s 628s Type 'demo()' for some demos, 'help()' for on-line help, or 628s 'help.start()' for an HTML browser interface to help. 628s Type 'q()' to quit R. 628s 628s > library("matrixStats") 628s > 628s > X <- matrix(rnorm(20 * 6), nrow = 20, ncol = 6) 628s > rownames(X) <- LETTERS[1:nrow(X)] 628s > colnames(X) <- letters[1:ncol(X)] 628s > print(X) 628s a b c d e f 628s A -0.40024290 -1.41323702 -1.01429486 0.93768115 -0.22632109 -0.49865004 628s B 0.23564964 0.18087307 -1.64102024 0.10773027 1.22058013 0.76756209 628s C 1.26010597 0.57947009 -0.05115828 -0.22084035 1.30700028 -0.32471771 628s D -0.98361593 1.52452686 0.81423294 -0.36095929 0.25057339 -0.33801985 628s E -2.14825011 -0.52677511 -0.67748489 -0.80695817 -0.30141232 1.18281417 628s F -0.54929743 0.52955940 -0.40315027 0.99628596 -0.65577375 -0.15825411 628s G -0.15869330 -0.81816728 0.02138479 -1.78696800 1.03688412 -1.35523558 628s H 0.87174672 -0.75375631 1.14451258 -0.39448779 0.05165633 -1.25567924 628s I 1.37027156 -1.75666836 0.01801661 -0.31142799 0.96307050 -0.04331190 628s J -0.52766285 0.20146817 -0.50026533 -1.57141473 -0.40005630 -0.16702921 628s K 1.43928439 -0.24078452 0.48356245 -0.56670815 -0.11635159 -0.03099101 628s L 0.32445043 1.59565910 0.69938115 -0.02857928 1.25713403 -1.19324149 628s M -0.25542030 0.62966536 2.15940020 -3.64412284 -0.37581653 -1.37336184 628s N 0.49569967 -0.05170568 -0.29422005 -0.09500105 -0.48984804 -0.87451165 628s O 0.42933359 1.93432564 -1.03708891 -0.83109528 1.69046682 -2.37920420 628s P -0.38496195 -0.27832980 1.04706956 -0.53004469 1.31643694 0.39791103 628s Q 1.81932214 1.35260664 -0.10680334 -0.87756308 1.48259054 -0.10523533 628s R 0.48794403 -0.44458517 0.53429348 -0.74788980 0.90748272 0.93982754 628s S -0.02265565 1.36837195 -0.94252228 -0.73622023 -1.34027593 0.24468297 628s T 1.02763616 -0.17958287 -0.75755576 -1.19412037 1.49139363 -0.65745347 628s > 628s > 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > # Apply rowMeans() for 3 sets of 2 columns 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > nbr_of_sets <- 3L 628s > S <- matrix(1:ncol(X), ncol = nbr_of_sets) 628s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 628s > print(S) 628s s1 s2 s3 628s [1,] 1 3 5 628s [2,] 2 4 6 628s > 628s > Z <- rowAvgsPerColSet(X, S = S) 628s > print(Z) 628s s1 s2 s3 628s A -0.906739960 -0.03830686 -0.36248556 628s B 0.208261357 -0.76664498 0.99407111 628s C 0.919788031 -0.13599931 0.49114129 628s D 0.270455464 0.22663683 -0.04372323 628s E -1.337512611 -0.74222153 0.44070093 628s F -0.009869016 0.29656784 -0.40701393 628s G -0.488430289 -0.88279161 -0.15917573 628s H 0.058995202 0.37501240 -0.60201146 628s I -0.193198400 -0.14670569 0.45987930 628s J -0.163097339 -1.03584003 -0.28354276 628s K 0.599249936 -0.04157285 -0.07367130 628s L 0.960054765 0.33540093 0.03194627 628s M 0.187122532 -0.74236132 -0.87458919 628s N 0.221996995 -0.19461055 -0.68217985 628s O 1.181829617 -0.93409209 -0.34436869 628s P -0.331645877 0.25851244 0.85717399 628s Q 1.585964388 -0.49218321 0.68867760 628s R 0.021679428 -0.10679816 0.92365513 628s S 0.672858152 -0.83937126 -0.54779648 628s T 0.424026645 -0.97583806 0.41697008 628s > 628s > # Validation 628s > Z0 <- cbind(s1 = rowMeans(X[, 1:2]), s2 = rowMeans(X[, 3:4]), 628s + s3 = rowMeans(X[, 5:6])) 628s > stopifnot(identical(drop(Z), Z0)) 628s > 628s > 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > # Apply colMeans() for 5 sets of 4 rows 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > nbr_of_sets <- 5L 628s > S <- matrix(1:nrow(X), ncol = nbr_of_sets) 628s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 628s > print(S) 628s s1 s2 s3 s4 s5 628s [1,] 1 5 9 13 17 628s [2,] 2 6 10 14 18 628s [3,] 3 7 11 15 19 628s [4,] 4 8 12 16 20 628s > 628s > Z <- colAvgsPerRowSet(X, S = S) 628s > print(Z) 628s a b c d e f 628s s1 0.02797419 0.2179083 -0.47306011 0.1159029 0.6379582 -0.09845638 628s s2 -0.49612353 -0.3922848 0.02131556 -0.4980320 0.0328386 -0.39658869 628s s3 0.65158588 -0.0500814 0.17517372 -0.6195325 0.4259492 -0.35864340 628s s4 0.07116275 0.5584889 0.46879020 -1.2750660 0.5353098 -1.05729166 628s s5 0.82806167 0.5242026 -0.31814698 -0.8889484 0.6352977 0.10545543 628s > 628s > # Validation 628s > Z0 <- rbind(s1 = colMeans(X[1:4, ]), s2 = colMeans(X[5:8, ]), 628s + s3 = colMeans(X[9:12, ]), s4 = colMeans(X[13:16, ]), 628s + s5 = colMeans(X[17:20, ])) 628s > stopifnot(identical(drop(Z), Z0)) 628s > 628s > 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > # When there is only one "complete" set 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > nbr_of_sets <- 1L 628s > S <- matrix(1:ncol(X), ncol = nbr_of_sets) 628s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 628s > print(S) 628s s1 628s [1,] 1 628s [2,] 2 628s [3,] 3 628s [4,] 4 628s [5,] 5 628s [6,] 6 628s > 628s > Z <- rowAvgsPerColSet(X, S = S, FUN = rowMeans) 628s > print(Z) 628s s1 628s A -0.43584413 628s B 0.14522916 628s C 0.42497667 628s D 0.15112302 628s E -0.54634441 628s F -0.04010503 628s G -0.51013254 628s H -0.05600129 628s I 0.03999174 628s J -0.49416004 628s K 0.16133526 628s L 0.44246732 628s M -0.47660932 628s N -0.21826447 628s O -0.03221039 628s P 0.26134685 628s Q 0.59415293 628s R 0.27951213 628s S -0.23810320 628s T -0.04494711 628s > 628s > Z0 <- rowMeans(X) 628s > stopifnot(identical(drop(Z), Z0)) 628s > 628s > 628s > nbr_of_sets <- 1L 628s > S <- matrix(1:nrow(X), ncol = nbr_of_sets) 628s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 628s > print(S) 628s s1 628s [1,] 1 628s [2,] 2 628s [3,] 3 628s [4,] 4 628s [5,] 5 628s [6,] 6 628s [7,] 7 628s [8,] 8 628s [9,] 9 628s [10,] 10 628s [11,] 11 628s [12,] 12 628s [13,] 13 628s [14,] 14 628s [15,] 15 628s [16,] 16 628s [17,] 17 628s [18,] 18 628s [19,] 19 628s [20,] 20 628s > 628s > Z <- colAvgsPerRowSet(X, S = S, FUN = colMeans) 628s > print(Z) 628s a b c d e f 628s s1 0.2165322 0.1716467 -0.02518552 -0.6331352 0.4534707 -0.3611049 628s > 628s > Z0 <- colMeans(X) 628s > stopifnot(identical(drop(Z), Z0)) 628s > 628s > 628s > 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > # Use weights 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > nbr_of_sets <- 3L 628s > S <- matrix(1:ncol(X), ncol = nbr_of_sets) 628s > colnames(S) <- sprintf("s%d", 1:nbr_of_sets) 628s > print(S) 628s s1 s2 s3 628s [1,] 1 3 5 628s [2,] 2 4 6 628s > 628s > W <- matrix(runif(length(X)), nrow = nrow(X), ncol = ncol(X)) 628s > Z1 <- rowAvgsPerColSet(X, W = W, S = S, FUN = rowWeightedMeans) 628s > print(Z1) 628s s1 s2 s3 628s A -0.906739960 -0.03830686 -0.36248556 628s B 0.208261357 -0.76664498 0.99407111 628s C 0.919788031 -0.13599931 0.49114129 628s D 0.270455464 0.22663683 -0.04372323 628s E -1.337512611 -0.74222153 0.44070093 628s F -0.009869016 0.29656784 -0.40701393 628s G -0.488430289 -0.88279161 -0.15917573 628s H 0.058995202 0.37501240 -0.60201146 628s I -0.193198400 -0.14670569 0.45987930 628s J -0.163097339 -1.03584003 -0.28354276 628s K 0.599249936 -0.04157285 -0.07367130 628s L 0.960054765 0.33540093 0.03194627 628s M 0.187122532 -0.74236132 -0.87458919 628s N 0.221996995 -0.19461055 -0.68217985 628s O 1.181829617 -0.93409209 -0.34436869 628s P -0.331645877 0.25851244 0.85717399 628s Q 1.585964388 -0.49218321 0.68867760 628s R 0.021679428 -0.10679816 0.92365513 628s S 0.672858152 -0.83937126 -0.54779648 628s T 0.424026645 -0.97583806 0.41697008 628s > Z2 <- colAvgsPerRowSet(X, W = W, S = S, FUN = colWeightedMeans) 628s > print(Z2) 628s a b c d e f 628s s1 -0.08229663 -0.616181973 -1.3276576 0.52270571 0.4971295 0.1344560 628s s2 0.13824502 1.051998476 0.3815373 -0.29089982 0.7787868 -0.3313688 628s s3 -1.34877377 0.001392144 -0.5403176 0.09466389 -0.4785930 0.5122800 628s > 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > # Result should always be a matrix, including when nrow(X) <= 1 628s > # (https://github.com/HenrikBengtsson/matrixStats/issues/108) 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > X <- matrix(1:3, nrow = 1L, ncol = 3L) 628s > S <- matrix(1, nrow = 1L, ncol = 1L) 628s > Z1 <- rowAvgsPerColSet(X, S = S) 628s > stopifnot(is.matrix(Z1)) 628s > Z2 <- rowAvgsPerColSet(X, S = S, rows = 0) 628s > stopifnot(is.matrix(Z2)) 628s > 628s > 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > # Works with many, one or zero columns / rows 628s > # (https://github.com/HenrikBengtsson/matrixStats/issues/172) 628s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 628s > S <- cbind(1:2, 3:4, 5:6) 628s > X <- matrix(rnorm(2 * 6), nrow = 6, ncol = 2) 628s > Z2 <- colAvgsPerRowSet(X, S = S, FUN = colSums2) 628s > Z2_ref <- rbind(colSums2(X[S[,1], ,drop=FALSE]), 628s + colSums2(X[S[,2], ,drop=FALSE]), 628s + colSums2(X[S[,3], ,drop=FALSE])) 628s > stopifnot(identical(Z2, Z2_ref)) 628s > X <- matrix(rnorm(6), nrow = 6, ncol = 1) 628s > Z1 <- colAvgsPerRowSet(X, S = S, FUN = colSums2) 628s > Z1_ref <- rbind(colSums2(X[S[,1], ,drop=FALSE]), 628s + colSums2(X[S[,2], ,drop=FALSE]), 628s + colSums2(X[S[,3], ,drop=FALSE])) 628s > stopifnot(identical(Z1, Z1_ref)) 628s > X <- matrix(numeric(0), nrow = 6, ncol = 0) 628s > Z0 <- colAvgsPerRowSet(X, S = S, FUN = colSums2) 628s > Z0_ref <- matrix(numeric(0), nrow = ncol(S), ncol = 0) 628s > stopifnot(identical(Z0, unname(Z0_ref))) 628s > 628s > 628s > S <- rbind(1:4, 5:8) 628s > X <- matrix(rnorm(n = 2 * 8), nrow = 2, ncol = 8) 628s > Z2 <- rowAvgsPerColSet(X, S = S, FUN = rowMeans2) 628s > Z2_ref <- cbind(rowMeans2(X[,S[,1],drop=FALSE]), 628s + rowMeans2(X[,S[,2],drop=FALSE]), 628s + rowMeans2(X[,S[,3],drop=FALSE]), 628s + rowMeans2(X[,S[,4],drop=FALSE])) 628s > stopifnot(identical(Z2, Z2_ref)) 628s > X <- matrix(rnorm(n = 8), nrow = 1, ncol = 8) 628s > Z1 <- rowAvgsPerColSet(X, S = S, FUN = rowMeans2) 628s > Z1_ref <- cbind(rowMeans2(X[,S[,1],drop=FALSE]), 628s + rowMeans2(X[,S[,2],drop=FALSE]), 628s + rowMeans2(X[,S[,3],drop=FALSE]), 628s + rowMeans2(X[,S[,4],drop=FALSE])) 628s > stopifnot(identical(Z1, Z1_ref)) 628s > X <- matrix(numeric(0), nrow = 0, ncol = 8) 628s > Z0 <- rowAvgsPerColSet(X, S = S, FUN = rowMeans2) 628s > Z0_ref <- matrix(numeric(0), nrow = 0, ncol = ncol(S)) 628s > stopifnot(identical(Z0, Z0_ref)) 628s > 628s 628s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 628s Copyright (C) 2024 The R Foundation for Statistical Computing 628s Platform: powerpc64le-unknown-linux-gnu (64-bit) 628s 628s R is free software and comes with ABSOLUTELY NO WARRANTY. 628s You are welcome to redistribute it under certain conditions. 628s Type 'license()' or 'licence()' for distribution details. 628s 628s R is a collaborative project with many contributors. 628s Type 'contributors()' for more information and 628s 'citation()' on how to cite R or R packages in publications. 628s 628s Type 'demo()' for some demos, 'help()' for on-line help, or 628s 'help.start()' for an HTML browser interface to help. 628s Type 'q()' to quit R. 628s 629s > library("matrixStats") 629s > 629s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 629s > # Subsetted tests 629s > # - - - - - - - - - - - - - - - - - - - - - - - - - - 629s > source("utils/validateIndicesFramework.R") 629s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 629s > #W <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 629s > for (rows in index_cases) { 629s + for (cols in index_cases) { 629s + if (is.null(rows)) { 629s + rows <- seq_len(nrow(x)) 629s + rows_finite <- rows 629s + } else { 629s + rows_finite <- rows[is.finite(rows)] 629s + } 629s + 629s + if (is.null(cols)) { 629s + cols <- seq_len(ncol(x)) 629s + cols_finite <- cols 629s + } else { 629s + cols_finite <- cols[is.finite(cols)] 629s + } 629s + 629s + suppressWarnings({ 629s + actual <- tryCatch({ 629s + rowAvgsPerColSet(x, rows = rows, S = matrix(cols, ncol = 1), 629s + FUN = rowMeans) 629s + }, error = function(c) "error") 629s + expect <- tryCatch({ 629s + rowMeans(x[rows, cols_finite, drop = FALSE], na.rm = TRUE) 629s + }, error = function(c) "error") 629s + }) 629s + stopifnot(all.equal(as.vector(actual), expect)) 629s + 629s + suppressWarnings({ 629s + actual <- tryCatch({ 629s + colAvgsPerRowSet(x, cols = cols, S = matrix(rows, ncol = 1), 629s + FUN = colMeans) 629s + }, error = function(c) "error") 629s + expect <- tryCatch({ 629s + colMeans(x[rows_finite, cols, drop = FALSE], na.rm = TRUE) 629s + }, error = function(c) "error") 629s + }) 629s + stopifnot(all.equal(as.vector(actual), expect)) 629s + } 629s + } 629s > 629s 629s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 629s Copyright (C) 2024 The R Foundation for Statistical Computing 629s Platform: powerpc64le-unknown-linux-gnu (64-bit) 629s 629s R is free software and comes with ABSOLUTELY NO WARRANTY. 629s You are welcome to redistribute it under certain conditions. 629s Type 'license()' or 'licence()' for distribution details. 629s 629s R is a collaborative project with many contributors. 629s Type 'contributors()' for more information and 629s 'citation()' on how to cite R or R packages in publications. 629s 629s Type 'demo()' for some demos, 'help()' for on-line help, or 629s 'help.start()' for an HTML browser interface to help. 629s Type 'q()' to quit R. 629s 629s > library("matrixStats") 629s > 629s > x <- matrix(1:27, ncol = 3) 629s > 629s > # To check names attribute 629s > dimnames <- list(letters[1:9], LETTERS[1:3]) 629s > 629s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 629s + res <- x[, idxs] 629s + # Preserve names attribute? 629s + if (is.na(useNames) || !useNames) names(res) <- NULL 629s + res 629s + } 629s > 629s > idxs <- 1L 629s > # Test with and without dimnames on x 629s > for (setDimnames in c(TRUE, FALSE)) { 629s + if (setDimnames) dimnames(x) <- dimnames 629s + else dimnames(x) <- NULL 629s + # Check names attribute 629s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 629s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 629s + y <- rowCollapse(x, idxs, useNames = useNames) 629s + stopifnot(identical(y, y_truth)) 629s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 629s + stopifnot(identical(y2, y)) 629s + } 629s + } 629s > 629s > idxs <- 2L 629s > # Test with and without dimnames on x 629s > for (setDimnames in c(TRUE, FALSE)) { 629s + if (setDimnames) dimnames(x) <- dimnames 629s + else dimnames(x) <- NULL 629s + # Check names attribute 629s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 629s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 629s + y <- rowCollapse(x, idxs, useNames = useNames) 629s + stopifnot(identical(y, y_truth)) 629s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 629s + stopifnot(identical(y2, y)) 629s + } 629s + } 629s > 629s > 629s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 629s + res <- c(x[1:5, 1], x[6:9, 3]) 629s + # Preserve names attribute? 629s + if (is.na(useNames) || !useNames) names(res) <- NULL 629s + res 629s + } 629s > 629s > idxs <- c(1, 1, 1, 1, 1, 3, 3, 3, 3) 629s > # Test with and without dimnames on x 629s > for (setDimnames in c(TRUE, FALSE)) { 629s + if (setDimnames) dimnames(x) <- dimnames 629s + else dimnames(x) <- NULL 629s + # Check names attribute 629s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 629s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 629s + y <- rowCollapse(x, idxs, useNames = useNames) 629s + stopifnot(identical(y, y_truth)) 629s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 629s + stopifnot(identical(y2, y)) 629s + } 629s + } 629s > 629s > 629s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 629s + res <- c(x[1, 1], x[2, 2], x[3, 3], x[4, 1], x[5, 2], 629s + x[6, 3], x[7, 1], x[8, 2], x[9, 3]) 629s + # Preserve names attribute? 629s + if (isTRUE(useNames)) { 629s + names <- rownames(x) 629s + if (!is.null(names)) names(res) <- names 629s + } 629s + res 629s + } 629s > 629s > idxs <- 1:3 629s > # Test with and without dimnames on x 629s > for (setDimnames in c(TRUE, FALSE)) { 629s + if (setDimnames) dimnames(x) <- dimnames 629s + else dimnames(x) <- NULL 629s + # Check names attribute 629s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 629s + y_truth <- rowCollapse_R(x, idxs, useNames = useNames) 629s + y <- rowCollapse(x, idxs, useNames = useNames) 629s + stopifnot(identical(y, y_truth)) 629s + y2 <- colCollapse(t(x), idxs, useNames = useNames) 629s + stopifnot(identical(y2, y)) 629s + } 629s + } 629s > 629s 629s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 629s Copyright (C) 2024 The R Foundation for Statistical Computing 629s Platform: powerpc64le-unknown-linux-gnu (64-bit) 629s 629s R is free software and comes with ABSOLUTELY NO WARRANTY. 629s You are welcome to redistribute it under certain conditions. 629s Type 'license()' or 'licence()' for distribution details. 629s 629s R is a collaborative project with many contributors. 629s Type 'contributors()' for more information and 629s 'citation()' on how to cite R or R packages in publications. 629s 629s Type 'demo()' for some demos, 'help()' for on-line help, or 629s 'help.start()' for an HTML browser interface to help. 629s Type 'q()' to quit R. 629s 629s > library("matrixStats") 629s > 629s > rowCollapse_R <- function(x, idxs, ..., useNames = NA) { 629s + ans <- c() 629s + storage.mode(ans) <- storage.mode(x) 629s + for (ii in seq_len(length(idxs))) { 629s + ans[ii] <- x[ii, idxs[ii]] 629s + } 629s + 629s + # Preserve names attribute 629s + if (isTRUE(useNames)) { 629s + names <- rownames(x) 629s + if (!is.null(names)) names(ans) <- names 629s + } 629s + 629s + ans 629s + } 629s > 629s > 629s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 629s > # Subsetted tests 629s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 629s > source("utils/validateIndicesFramework.R") 629s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 629s > storage.mode(x) <- "integer" 629s > 629s > # To check names attribute 629s > dimnames <- list(letters[1:6], LETTERS[1:6]) 629s > 629s > for (rows in index_cases) { 629s + if (is.null(rows)) rows <- seq_len(nrow(x)) 629s + 629s + for (idxs in list(2L, seq_len(6L))) { 629s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 629s + suppressWarnings({ 629s + actual <- tryCatch(rowCollapse(x, idxs, rows = rows, useNames = useNames), 629s + error = function(c) "error") 629s + expect <- tryCatch({ 629s + idxs_0 <- rep(idxs, length.out = nrow(x))[rows] 629s + rowCollapse_R(x[rows, , drop = FALSE], idxs_0, useNames = useNames) 629s + }, error = function(c) "error") 629s + }) 629s + stopifnot(all.equal(actual, expect)) 629s + 629s + suppressWarnings({ 629s + actual <- tryCatch(colCollapse(t(x), idxs, cols = rows, useNames = useNames), 629s + error = function(c) "error") 629s + }) 629s + stopifnot(all.equal(actual, expect)) 629s + 629s + # Check names attribute 629s + dimnames(x) <- dimnames 629s + suppressWarnings({ 629s + actual <- tryCatch(rowCollapse(x, idxs, rows = rows, useNames = useNames), 629s + error = function(c) "error") 629s + expect <- tryCatch({ 629s + idxs_0 <- rep(idxs, length.out = nrow(x))[rows] 629s + rowCollapse_R(x[rows, , drop = FALSE], idxs_0, useNames = useNames) 629s + }, error = function(c) "error") 629s + }) 629s + stopifnot(all.equal(actual, expect)) 629s + 629s + suppressWarnings({ 629s + actual <- tryCatch(colCollapse(t(x), idxs, cols = rows, useNames = useNames), 629s + error = function(c) "error") 629s + }) 629s + stopifnot(all.equal(actual, expect)) 629s + 629s + dimnames(x) <- NULL 629s + } 629s + } 629s + } 629s > 629s 629s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 629s Copyright (C) 2024 The R Foundation for Statistical Computing 629s Platform: powerpc64le-unknown-linux-gnu (64-bit) 629s 629s R is free software and comes with ABSOLUTELY NO WARRANTY. 629s You are welcome to redistribute it under certain conditions. 629s Type 'license()' or 'licence()' for distribution details. 629s 629s R is a collaborative project with many contributors. 629s Type 'contributors()' for more information and 629s 'citation()' on how to cite R or R packages in publications. 629s 629s Type 'demo()' for some demos, 'help()' for on-line help, or 629s 'help.start()' for an HTML browser interface to help. 629s Type 'q()' to quit R. 629s 629s > library("matrixStats") 629s > 629s > rowCounts_R <- function(x, value = TRUE, na.rm = FALSE, ...) { 629s + if (is.na(value)) { 629s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 629s + sum(is.na(x)) 629s + ) 629s + } else { 629s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 629s + sum(x == value, na.rm = na.rm) 629s + ) 629s + } 629s + # Preserve names attribute 629s + names <- names(counts) 629s + counts <- as.integer(counts) 629s + if (isTRUE(useNames) && !is.null(names)) names(counts) <- names 629s + counts 629s + } 629s > 629s > 629s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 629s > # Data type: integer and numeric 629s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 629s > for (mode in c("integer", "double")) { 629s + x <- matrix(runif(10 * 5, min = -3, max = 3), nrow = 10L, ncol = 5L) 629s + x[sample.int(length(x), size = 7L)] <- 0 629s + storage.mode(x) <- mode 629s + 629s + dimnames = list(letters[1:10], LETTERS[1:5]) 629s + 629s + # Test with and without dimnames on x 629s + for (setDimnames in c(TRUE, FALSE)) { 629s + if (setDimnames) dimnames(x) <- dimnames 629s + else dimnames(x) <- NULL 629s + for (na.rm in c(FALSE, TRUE)) { 629s + # Check names attribute 629s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 629s + # Count zeros 629s + r0 <- rowCounts_R(x, value = 0, na.rm = na.rm, useNames = useNames) 629s + r1 <- rowCounts(x, value = 0, na.rm = na.rm, useNames = useNames) 629s + r2 <- colCounts(t(x), value = 0, na.rm = na.rm, useNames = useNames) 629s + stopifnot(identical(r1, r0)) 629s + stopifnot(identical(r2, r0)) 629s + 629s + # Count NAs 629s + r0 <- rowCounts_R(x, value = NA, na.rm = na.rm, useNames = useNames) 629s + r1 <- rowCounts(x, value = NA, na.rm = na.rm, useNames = useNames) 629s + r2 <- colCounts(t(x), value = NA, na.rm = na.rm, useNames = useNames) 629s + stopifnot(identical(r1, r0)) 629s + stopifnot(identical(r2, r0)) 629s + 629s + if (mode == "integer") { 629s + ux <- unique(as.vector(x)) 629s + r0 <- r1 <- r2 <- integer(nrow(x)) 629s + for (value in ux) { 629s + r0 <- r0 + rowCounts_R(x, value = value, na.rm = na.rm, useNames = useNames) 629s + r1 <- r1 + rowCounts(x, value = value, na.rm = na.rm, useNames = useNames) 629s + r2 <- r2 + colCounts(t(x), value = value, na.rm = na.rm, useNames = useNames) 629s + stopifnot(identical(r1, r0)) 629s + stopifnot(identical(r2, r0)) 629s + } 629s + stopifnot(all(r0 == ncol(x))) 629s + } # if (mode == "integer") 629s + } # for (useNames ...) 629s + } # for (na.rm ...) 629s + } # for (setDimnames ...) 629s + } # for (mode ...) 630s > 630s > 630s > # All NAs 630s > na_list <- list(NA_integer_, NA_real_, NaN) 630s > for (na_value in na_list) { 630s + x <- matrix(na_value, nrow = 10L, ncol = 5L) 630s + # Test with and without dimnames on x 630s + for (setDimnames in c(TRUE, FALSE)) { 630s + if (setDimnames) dimnames(x) <- dimnames 630s + else dimnames(x) <- NULL 630s + for (na.rm in c(FALSE, TRUE)) { 630s + # Check names attribute 630s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 630s + r0 <- rowCounts_R(x, na.rm = na.rm, useNames = useNames) 630s + r1 <- rowCounts(x, na.rm = na.rm, useNames = useNames) 630s + r2 <- colCounts(t(x), na.rm = na.rm, useNames = useNames) 630s + stopifnot(identical(r1, r0)) 630s + stopifnot(identical(r2, r0)) 630s + 630s + # Count NAs 630s + r0 <- rowCounts_R(x, value = NA, na.rm = na.rm, useNames = useNames) 630s + r1 <- rowCounts(x, value = NA, na.rm = na.rm, useNames = useNames) 630s + r2 <- colCounts(t(x), value = NA, na.rm = na.rm, useNames = useNames) 630s + stopifnot(all(r0 == ncol(x))) 630s + stopifnot(identical(r1, r0)) 630s + stopifnot(identical(r2, r0)) 630s + } 630s + } 630s + } 630s + } # for (na_value ...) 630s > 630s > 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > # Data type: logical 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > x <- matrix(FALSE, nrow = 10L, ncol = 4L) 630s > x[7:8, 2:3] <- TRUE 630s > x[1:3, ] <- TRUE 630s > x[, 1] <- TRUE 630s > x[4, ] <- FALSE 630s > x[, 4] <- FALSE 630s > x[2, ] <- FALSE 630s > x[3, ] <- TRUE 630s > 630s > # To check names attribute 630s > dimnames <- list(letters[1:10], LETTERS[1:4]) 630s > 630s > # Test with and without dimnames on x 630s > for (setDimnames in c(TRUE, FALSE)) { 630s + if (setDimnames) dimnames(x) <- dimnames 630s + else dimnames(x) <- NULL 630s + # Row/column counts 630s + for (na.rm in c(FALSE, TRUE)) { 630s + # Check names attribute 630s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 630s + r0 <- rowCounts_R(x, na.rm = na.rm, useNames = useNames) 630s + r1 <- rowCounts(x, na.rm = na.rm, useNames = useNames) 630s + r2 <- colCounts(t(x), na.rm = na.rm, useNames = useNames) 630s + stopifnot(identical(r1, r0)) 630s + stopifnot(identical(r2, r0)) 630s + 630s + r_true <- rowCounts(x, value = TRUE, na.rm = na.rm, useNames = useNames) 630s + r_false <- rowCounts(x, value = FALSE, na.rm = na.rm, useNames = useNames) 630s + stopifnot(r_true + r_false == ncol(x)) 630s + 630s + c_true <- colCounts(x, value = TRUE, na.rm = na.rm, useNames = useNames) 630s + c_false <- colCounts(x, value = FALSE, na.rm = na.rm, useNames = useNames) 630s + stopifnot(c_true + c_false == nrow(x)) 630s + 630s + # Count NAs 630s + r0 <- rowCounts_R(x, value = NA, na.rm = na.rm, useNames = useNames) 630s + r1 <- rowCounts(x, value = NA, na.rm = na.rm, useNames = useNames) 630s + r2 <- colCounts(t(x), value = NA, na.rm = na.rm, useNames = useNames) 630s + stopifnot(identical(r1, r0)) 630s + stopifnot(identical(r2, r0)) 630s + } 630s + } 630s + } 630s > 630s > 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > # Data type: character (not sure if this should be supported) 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > x <- matrix(rep(letters, length.out = 10 * 5), nrow = 10L, ncol = 5L) 630s > x[2:3, 3:4] <- NA_character_ 630s > 630s > # Row/column counts 630s > for (na.rm in c(FALSE, TRUE)) { 630s + for (value in c("g", NA_character_)) { 630s + r0 <- rowCounts_R(x, value = value, na.rm = na.rm) 630s + r1 <- rowCounts(x, value = value, na.rm = na.rm) 630s + r2 <- colCounts(t(x), value = value, na.rm = na.rm) 630s + stopifnot(identical(r1, r0)) 630s + stopifnot(identical(r2, r0)) 630s + 630s + c <- count(x[1, ], value = value, na.rm = na.rm) 630s + stopifnot(identical(c, r1[1])) 630s + 630s + c <- count(x[2, ], value = value, na.rm = na.rm) 630s + stopifnot(identical(c, r1[2])) 630s + } 630s + } 630s > 630s > # NA row 630s > x <- matrix(0, nrow = 2L, ncol = 2L) 630s > x[1, ] <- NA_integer_ 630s > 630s > dimnames <- list(letters[1:2], LETTERS[1:2]) 630s > 630s > # Test with and without dimnames on x 630s > for (setDimnames in c(TRUE, FALSE)) { 630s + if (setDimnames) dimnames(x) <- dimnames 630s + else dimnames(x) <- NULL 630s + # Check names attribute 630s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 630s + r0 <- rowCounts(x, value = 0, useNames = useNames) 630s + r1 <- rowCounts_R(x, value = 0, useNames = useNames) 630s + stopifnot(identical(r0, r1)) 630s + } 630s + } 630s > 630s 630s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 630s Copyright (C) 2024 The R Foundation for Statistical Computing 630s Platform: powerpc64le-unknown-linux-gnu (64-bit) 630s 630s R is free software and comes with ABSOLUTELY NO WARRANTY. 630s You are welcome to redistribute it under certain conditions. 630s Type 'license()' or 'licence()' for distribution details. 630s 630s R is a collaborative project with many contributors. 630s Type 'contributors()' for more information and 630s 'citation()' on how to cite R or R packages in publications. 630s 630s Type 'demo()' for some demos, 'help()' for on-line help, or 630s 'help.start()' for an HTML browser interface to help. 630s Type 'q()' to quit R. 630s 630s > library("matrixStats") 630s > 630s > rowCounts_R <- function(x, value = TRUE, na.rm = FALSE, ..., useNames = NA) { 630s + if (is.na(value)) { 630s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 630s + sum(is.na(x)) 630s + ) 630s + } else { 630s + counts <- apply(x, MARGIN = 1L, FUN = function(x) 630s + sum(x == value, na.rm = na.rm) 630s + ) 630s + } 630s + # Preserve names attribute 630s + names <- names(counts) 630s + counts <- as.integer(counts) 630s + if (isTRUE(useNames) && !is.null(names)) names(counts) <- names 630s + counts 630s + } # rowCounts_R() 630s > 630s > 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > # Subsetted tests 630s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 630s > source("utils/validateIndicesFramework.R") 630s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 630s > x[2:3, 3:4] <- NA_real_ 630s > storage.mode(x) <- "integer" 630s > 630s > # To check names attribute 630s > dimnames <- list(letters[1:6], LETTERS[1:6]) 630s > 630s > # Test with and without dimnames on x 630s > for (setDimnames in c(TRUE, FALSE)) { 630s + if (setDimnames) dimnames(x) <- dimnames 630s + else dimnames(x) <- NULL 630s + for (rows in index_cases) { 630s + for (cols in index_cases) { 630s + # Check names attribute 630s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 630s + validateIndicesTestMatrix(x, rows, cols, 630s + ftest = rowCounts, fsure = rowCounts_R, 630s + value = 0, na.rm = TRUE, useNames = useNames) 630s + validateIndicesTestMatrix(x, rows, cols, 630s + fcoltest = colCounts, fsure = rowCounts_R, 630s + value = 0, na.rm = TRUE, useNames = useNames) 630s + for (value in c(0, NA_integer_)) { 630s + validateIndicesTestMatrix(x, rows, cols, 630s + ftest = rowCounts, fsure = rowCounts_R, 630s + value = value, useNames = useNames) 630s + validateIndicesTestMatrix(x, rows, cols, 630s + fcoltest = colCounts, fsure = rowCounts_R, 630s + value = value, useNames = useNames) 630s + } 630s + } 630s + } 630s + } 630s + } 631s > 631s > x <- matrix(rep(letters, length.out = 6 * 6), nrow = 6, ncol = 6) 631s > x[2:3, 3:4] <- NA_character_ 631s > # Test with and without dimnames on x 631s > for (setDimnames in c(TRUE, FALSE)) { 632s + if (setDimnames) dimnames(x) <- dimnames 632s + else dimnames(x) <- NULL 632s + 632s + count <- 0L 632s + for (rows in index_cases) { 632s + for (cols in index_cases) { 632s + count <- count + 1L 632s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 632s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 632s + useNames <- useNames[count %% length(useNames) + 1] 632s + 632s + validateIndicesTestMatrix(x, rows, cols, 632s + ftest = rowCounts, fsure = rowCounts_R, 632s + value = "g", na.rm = TRUE, useNames = useNames) 632s + validateIndicesTestMatrix(x, rows, cols, 632s + fcoltest = colCounts, fsure = rowCounts_R, 632s + value = "g", na.rm = TRUE, useNames = useNames) 632s + for (value in c("g", NA_character_)) { 632s + validateIndicesTestMatrix(x, rows, cols, 632s + ftest = rowCounts, fsure = rowCounts_R, 632s + value = value, useNames = useNames) 632s + validateIndicesTestMatrix(x, rows, cols, 632s + fcoltest = colCounts, fsure = rowCounts_R, 632s + value = value, useNames = useNames) 632s + } 632s + } 632s + } 632s + } 633s > 633s 633s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 633s Copyright (C) 2024 The R Foundation for Statistical Computing 633s Platform: powerpc64le-unknown-linux-gnu (64-bit) 633s 633s R is free software and comes with ABSOLUTELY NO WARRANTY. 633s You are welcome to redistribute it under certain conditions. 633s Type 'license()' or 'licence()' for distribution details. 633s 633s R is a collaborative project with many contributors. 633s Type 'contributors()' for more information and 633s 'citation()' on how to cite R or R packages in publications. 633s 633s Type 'demo()' for some demos, 'help()' for on-line help, or 633s 'help.start()' for an HTML browser interface to help. 633s Type 'q()' to quit R. 633s 633s > library("matrixStats") 633s > 633s > rowCummins_R <- function(x, ..., useNames = NA) { 633s + suppressWarnings({ 633s + y <- t(apply(x, MARGIN = 1L, FUN = cummin)) 633s + }) 633s + 633s + # Preserve dimnames attribute? 633s + dim(y) <- dim(x) 633s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 633s + y 633s + } 633s > 633s > rowCummaxs_R <- function(x, ..., useNames = NA) { 633s + mode <- storage.mode(x) 633s + # Change mode because a bug is detected on cummax for integer in R-3.2.0 633s + storage.mode(x) <- "numeric" 633s + suppressWarnings({ 633s + y <- t(apply(x, MARGIN = 1L, FUN = cummax)) 633s + }) 633s + 633s + # Preserve dimnames attribute? 633s + dim(y) <- dim(x) 633s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 633s + 633s + y 633s + } 633s > 633s > 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > # With and without some NAs 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > for (mode in c("logical", "integer", "double")) { 633s + for (add_na in c(FALSE, TRUE)) { 633s + cat("add_na = ", add_na, "\n", sep = "") 633s + 633s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 633s + diag(x) <- 0 633s + if (add_na) { 633s + x[3:7, c(2, 4)] <- NA_real_ 633s + } 633s + cat("mode: ", mode, "\n", sep = "") 633s + storage.mode(x) <- mode 633s + str(x) 633s + 633s + # To check dimnames attribute 633s + dimnames <- list(letters[1:10], LETTERS[1:5]) 633s + 633s + # Test with and without dimnames on x 633s + for (setDimnames in c(TRUE, FALSE)) { 633s + if (setDimnames) dimnames(x) <- dimnames 633s + else dimnames(x) <- NULL 633s + # Check names attribute 633s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 633s + # Row/column ranges 633s + r0 <- rowCummins_R(x, useNames = useNames) 633s + r1 <- rowCummins(x, useNames = useNames) 633s + r2 <- t(colCummins(t(x), useNames = useNames)) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + 633s + r0 <- rowCummaxs_R(x, useNames = useNames) 633s + r1 <- rowCummaxs(x, useNames = useNames) 633s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + } # for (useNames ...) 633s + } # for (setDimnames ...) 633s + } # for (add_na ...) 633s + } # for (mode ...) 633s add_na = FALSE 633s mode: logical 633s logi [1:10, 1:5] FALSE TRUE TRUE TRUE TRUE TRUE ... 633s add_na = TRUE 633s mode: logical 633s logi [1:10, 1:5] FALSE TRUE TRUE TRUE TRUE TRUE ... 633s add_na = FALSE 633s mode: integer 633s int [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 633s add_na = TRUE 633s mode: integer 633s int [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 633s add_na = FALSE 633s mode: double 633s num [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 633s add_na = TRUE 633s mode: double 633s num [1:10, 1:5] 0 2 3 4 5 6 7 8 9 10 ... 633s > 633s > 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > # All NAs 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > for (mode in c("logical", "integer", "double")) { 633s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 633s + cat("mode: ", mode, "\n", sep = "") 633s + storage.mode(x) <- mode 633s + str(x) 633s + 633s + # Test with and without dimnames on x 633s + for (setDimnames in c(TRUE, FALSE)) { 633s + if (setDimnames) dimnames(x) <- dimnames 633s + else dimnames(x) <- NULL 633s + # Check names attribute 633s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 633s + r0 <- rowCummins_R(x, useNames = useNames) 633s + r1 <- rowCummins(x, useNames = useNames) 633s + r2 <- t(colCummins(t(x), useNames = useNames)) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + 633s + r0 <- rowCummaxs_R(x, useNames = useNames) 633s + r1 <- rowCummaxs(x, useNames = useNames) 633s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + } # for (useNames ...) 633s + } # for (setDimnames ...) 633s + } # for (mode ...) 633s mode: logical 633s logi [1:10, 1:5] NA NA NA NA NA NA ... 633s mode: integer 633s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 633s mode: double 633s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 633s > 633s > 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > # A 1x1 matrix 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > for (mode in c("logical", "integer", "double")) { 633s + x <- matrix(0, nrow = 1L, ncol = 1L) 633s + cat("mode: ", mode, "\n", sep = "") 633s + storage.mode(x) <- mode 633s + str(x) 633s + 633s + # To check dimnames attribute 633s + dimnames <- list("a", "A") 633s + 633s + # Test with and without dimnames on x 633s + for (setDimnames in c(TRUE, FALSE)) { 633s + if (setDimnames) dimnames(x) <- dimnames 633s + else dimnames(x) <- NULL 633s + # Check names attribute 633s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 633s + r0 <- rowCummins_R(x, useNames = useNames) 633s + r1 <- rowCummins(x, useNames = useNames) 633s + r2 <- t(colCummins(t(x), useNames = useNames)) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + 633s + r0 <- rowCummaxs_R(x, useNames = useNames) 633s + r1 <- rowCummaxs(x, useNames = useNames) 633s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + } # for (useNames ...) 633s + } # for (setDimnames ...) 633s + } # for (mode ...) 633s mode: logical 633s logi [1, 1] FALSE 633s mode: integer 633s int [1, 1] 0 633s mode: double 633s num [1, 1] 0 633s > 633s > 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > # Corner cases 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > for (mode in c("logical", "integer", "double")) { 633s + cat("mode: ", mode, "\n", sep = "") 633s + value <- 0 633s + storage.mode(value) <- mode 633s + value0 <- if (mode == "logical") 0L else value 633s + 633s + # A 0x0 matrix 633s + x <- matrix(value, nrow = 0L, ncol = 0L) 633s + str(x) 633s + r0 <- matrix(value0, nrow = nrow(x), ncol = ncol(x)) 633s + r1 <- rowCummins(x) 633s + r2 <- t(colCummins(t(x))) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + 633s + # A 0xK matrix 633s + x <- matrix(value, nrow = 0L, ncol = 5L) 633s + str(x) 633s + colnames <- LETTERS[1:5] 633s + # Test with and without dimnames on x 633s + for (setDimnames in c(TRUE, FALSE)) { 633s + if (setDimnames) colnames(x) <- colnames 633s + else dimnames(x) <- NULL 633s + # Check names attribute 633s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 633s + r0 <- rowCummins_R(x, useNames = useNames) 633s + r1 <- rowCummins(x, useNames = useNames) 633s + r2 <- t(colCummins(t(x), useNames = useNames)) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + r0 <- rowCummaxs_R(x, useNames = useNames) 633s + r1 <- rowCummaxs(x, useNames = useNames) 633s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + } # for (useNames ...) 633s + } # for (setDimnames ...) 633s + 633s + # A Nx0 matrix 633s + x <- matrix(value, nrow = 5L, ncol = 0L) 633s + str(x) 633s + rownames <- LETTERS[1:5] 633s + # Test with and without dimnames on x 633s + for (setDimnames in c(TRUE, FALSE)) { 633s + if (setDimnames) rownames(x) <- rownames 633s + else dimnames(x) <- NULL 633s + # Check names attribute 633s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 633s + r0 <- rowCummins_R(x, useNames = useNames) 633s + r1 <- rowCummins(x, useNames = useNames) 633s + r2 <- t(colCummins(t(x), useNames = useNames)) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + 633s + r0 <- rowCummaxs_R(x, useNames = useNames) 633s + r1 <- rowCummaxs(x, useNames = useNames) 633s + r2 <- t(colCummaxs(t(x), useNames = useNames)) 633s + stopifnot(all.equal(r1, r2)) 633s + stopifnot(all.equal(r1, r0)) 633s + stopifnot(all.equal(r2, r0)) 633s + } # for (useNames ...) 633s + } # for (setDimnames ...) 633s + } # for (mode ...) 633s mode: logical 633s logi[0 , 0 ] 633s logi[0 , 1:5] 633s logi[1:5, 0 ] 633s mode: integer 633s int[0 , 0 ] 633s int[0 , 1:5] 633s int[1:5, 0 ] 633s mode: double 633s num[0 , 0 ] 633s num[0 , 1:5] 633s num[1:5, 0 ] 633s > 633s 633s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 633s Copyright (C) 2024 The R Foundation for Statistical Computing 633s Platform: powerpc64le-unknown-linux-gnu (64-bit) 633s 633s R is free software and comes with ABSOLUTELY NO WARRANTY. 633s You are welcome to redistribute it under certain conditions. 633s Type 'license()' or 'licence()' for distribution details. 633s 633s R is a collaborative project with many contributors. 633s Type 'contributors()' for more information and 633s 'citation()' on how to cite R or R packages in publications. 633s 633s Type 'demo()' for some demos, 'help()' for on-line help, or 633s 'help.start()' for an HTML browser interface to help. 633s Type 'q()' to quit R. 633s 633s > library("matrixStats") 633s > 633s > rowCummins_R <- function(x, ..., useNames = NA) { 633s + suppressWarnings({ 633s + y <- t(apply(x, MARGIN = 1L, FUN = cummin)) 633s + }) 633s + 633s + # Preserve dimnames attribute? 633s + dim(y) <- dim(x) 633s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 633s + 633s + y 633s + } 633s > 633s > rowCummaxs_R <- function(x, ..., useNames = NA) { 633s + mode <- storage.mode(x) 633s + # Change mode because a bug is detected on cummax for integer in R-3.2.0 633s + storage.mode(x) <- "numeric" 633s + suppressWarnings({ 633s + y <- t(apply(x, MARGIN = 1L, FUN = cummax)) 633s + }) 633s + 633s + # Preserve dimnames attribute? 633s + dim(y) <- dim(x) 633s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 633s + 633s + storage.mode(y) <- mode 633s + y 633s + } 633s > 633s > 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > # Subsetted tests 633s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 633s > source("utils/validateIndicesFramework.R") 633s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 633s > storage.mode(x) <- "integer" 633s > 633s > # To check dimnames attribute 633s > dimnames <- list(letters[1:6], LETTERS[1:6]) 633s > 633s > # Test with and without dimnames on x 633s > for (setDimnames in c(TRUE, FALSE)) { 633s + if (setDimnames) dimnames(x) <- dimnames 633s + else dimnames(x) <- NULL 633s + for (rows in index_cases) { 633s + for (cols in index_cases) { 633s + # Check names attribute 633s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 633s + validateIndicesTestMatrix(x, rows, cols, 633s + ftest = rowCummins, fsure = rowCummins_R, useNames = useNames,verbose=TRUE) 633s + validateIndicesTestMatrix(x, rows, cols, 633s + ftest = function(x, rows, cols, ..., useNames) { 633s + t(colCummins(t(x), rows = cols, cols = rows, useNames = useNames)) 633s + }, fsure = rowCummins_R, useNames = useNames) 633s + 633s + validateIndicesTestMatrix(x, rows, cols, 633s + ftest = rowCummaxs, fsure = rowCummaxs_R, useNames = useNames) 633s + validateIndicesTestMatrix(x, rows, cols, 633s + ftest = function(x, rows, cols, ..., useNames) { 633s + t(colCummaxs(t(x), rows = cols, cols = rows, useNames = useNames)) 633s + }, fsure = rowCummaxs_R, useNames = useNames) 633s + } 633s + } 633s + } 633s + } 635s > 635s 635s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 635s Copyright (C) 2024 The R Foundation for Statistical Computing 635s Platform: powerpc64le-unknown-linux-gnu (64-bit) 635s 635s R is free software and comes with ABSOLUTELY NO WARRANTY. 635s You are welcome to redistribute it under certain conditions. 635s Type 'license()' or 'licence()' for distribution details. 635s 635s R is a collaborative project with many contributors. 635s Type 'contributors()' for more information and 635s 'citation()' on how to cite R or R packages in publications. 635s 635s Type 'demo()' for some demos, 'help()' for on-line help, or 635s 'help.start()' for an HTML browser interface to help. 635s Type 'q()' to quit R. 635s 635s > library("matrixStats") 635s > 635s > rowCumprods_R <- function(x, ..., useNames = NA) { 635s + suppressWarnings({ 635s + y <- t(apply(x, MARGIN = 1L, FUN = cumprod)) 635s + }) 635s + 636s + # Preserve dimnames attribute? 636s + dim(y) <- dim(x) 636s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 636s + 636s + y 636s + } 636s > 636s > 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > # With and without some NAs 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > for (mode in c("logical", "integer", "double")) { 636s + for (add_na in c(FALSE, TRUE)) { 636s + cat("add_na = ", add_na, "\n", sep = "") 636s + 636s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 636s + if (add_na) { 636s + x[3:7, c(2, 4)] <- NA_real_ 636s + } 636s + cat("mode: ", mode, "\n", sep = "") 636s + storage.mode(x) <- mode 636s + str(x) 636s + 636s + # To check dimnames attribute 636s + dimnames <- list(letters[1:10], LETTERS[1:5]) 636s + 636s + # Test with and without dimnames on x 636s + for (setDimnames in c(TRUE, FALSE)) { 636s + if (setDimnames) dimnames(x) <- dimnames 636s + else dimnames(x) <- NULL 636s + # Check names attribute 636s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 636s + # Row/column ranges 636s + r0 <- rowCumprods_R(x, useNames = useNames) 636s + r1 <- rowCumprods(x, useNames = useNames) 636s + r2 <- t(colCumprods(t(x), useNames = useNames)) 636s + stopifnot(all.equal(r1, r2)) 636s + stopifnot(all.equal(r1, r0)) 636s + stopifnot(all.equal(r2, r0)) 636s + } # for (useNames ...) 636s + } # for (setDimnames ...) 636s + } # for (add_na ...) 636s + } # for (mode ...) 636s add_na = FALSE 636s mode: logical 636s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 636s add_na = TRUE 636s mode: logical 636s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 636s add_na = FALSE 636s mode: integer 636s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 636s add_na = TRUE 636s mode: integer 636s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 636s add_na = FALSE 636s mode: double 636s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 636s add_na = TRUE 636s mode: double 636s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 636s > 636s > 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > # All NAs 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > for (mode in c("logical", "integer", "double")) { 636s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 636s + cat("mode: ", mode, "\n", sep = "") 636s + storage.mode(x) <- mode 636s + str(x) 636s + 636s + # Test with and without dimnames on x 636s + for (setDimnames in c(TRUE, FALSE)) { 636s + if (setDimnames) dimnames(x) <- dimnames 636s + else dimnames(x) <- NULL 636s + # Check names attribute 636s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 636s + # Row/column ranges 636s + r0 <- rowCumprods_R(x, useNames = useNames) 636s + r1 <- rowCumprods(x, useNames = useNames) 636s + r2 <- t(colCumprods(t(x), useNames = useNames)) 636s + stopifnot(all.equal(r1, r2)) 636s + stopifnot(all.equal(r1, r0)) 636s + stopifnot(all.equal(r2, r0)) 636s + } # for (useNames ...) 636s + } # for (setDimnames ...) 636s + } # for (mode ...) 636s mode: logical 636s logi [1:10, 1:5] NA NA NA NA NA NA ... 636s mode: integer 636s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 636s mode: double 636s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 636s > 636s > 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > # A 1x1 matrix 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > for (mode in c("logical", "integer", "double")) { 636s + x <- matrix(0, nrow = 1L, ncol = 1L) 636s + cat("mode: ", mode, "\n", sep = "") 636s + storage.mode(x) <- mode 636s + str(x) 636s + 636s + dimnames <- list("a", "A") 636s + # Test with and without dimnames on x 636s + for (setDimnames in c(TRUE, FALSE)) { 636s + if (setDimnames) dimnames(x) <- dimnames 636s + else dimnames(x) <- NULL 636s + # Check names attribute 636s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 636s + # Row/column ranges 636s + r0 <- rowCumprods_R(x, useNames = useNames) 636s + r1 <- rowCumprods(x, useNames = useNames) 636s + r2 <- t(colCumprods(t(x), useNames = useNames)) 636s + stopifnot(all.equal(r1, r2)) 636s + stopifnot(all.equal(r1, r0)) 636s + stopifnot(all.equal(r2, r0)) 636s + } # for (useNames ...) 636s + } # for (setDimnames ...) 636s + } 636s mode: logical 636s logi [1, 1] FALSE 636s mode: integer 636s int [1, 1] 0 636s mode: double 636s num [1, 1] 0 636s > 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > # BUG FIX TEST: Assert zeros don't trump NAs in integer matrices 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > for (mode in c("logical", "integer", "double")) { 636s + x <- matrix(NA_real_, nrow = 3L, ncol = 2L) 636s + x[1, 2] <- 0 636s + x[2, 2] <- 1 636s + x[3, 1] <- 0 636s + storage.mode(x) <- mode 636s + cat("mode: ", mode, "\n", sep = "") 636s + str(x) 636s + 636s + dimnames <- list(letters[1:3], LETTERS[1:2]) 636s + # Test with and without dimnames on x 636s + for (setDimnames in c(TRUE, FALSE)) { 636s + if (setDimnames) dimnames(x) <- dimnames 636s + else dimnames(x) <- NULL 636s + # Check names attribute 636s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 636s + # Row/column ranges 636s + r0 <- rowCumprods_R(x, useNames = useNames) 636s + r1 <- rowCumprods(x, useNames = useNames) 636s + r2 <- t(colCumprods(t(x), useNames = useNames)) 636s + stopifnot(all.equal(r1, r2)) 636s + stopifnot(all.equal(r1, r0)) 636s + stopifnot(all.equal(r2, r0)) 636s + } # for (useNames ...) 636s + } # for (setDimnames ...) 636s + } 636s mode: logical 636s logi [1:3, 1:2] NA NA FALSE FALSE TRUE NA 636s mode: integer 636s int [1:3, 1:2] NA NA 0 0 1 NA 636s mode: double 636s num [1:3, 1:2] NA NA 0 0 1 NA 636s > 636s > 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > # Corner cases 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > for (mode in c("logical", "integer", "double")) { 636s + cat("mode: ", mode, "\n", sep = "") 636s + value <- 0 636s + storage.mode(value) <- mode 636s + if (mode == "logical") value2 <- 0L 636s + 636s + # A 0x0 matrix 636s + x <- matrix(value, nrow = 0L, ncol = 0L) 636s + str(x) 636s + r0 <- matrix(value2, nrow = nrow(x), ncol = ncol(x)) 636s + r1 <- rowCumprods(x) 636s + r2 <- t(colCumprods(t(x))) 636s + stopifnot(all.equal(r1, r2)) 636s + stopifnot(all.equal(r1, r0)) 636s + stopifnot(all.equal(r2, r0)) 636s + 636s + # A 0xK matrix 636s + x <- matrix(value, nrow = 0L, ncol = 5L) 636s + str(x) 636s + colnames <- LETTERS[1:5] 636s + # Test with and without dimnames on x 636s + for (setDimnames in c(TRUE, FALSE)) { 636s + if (setDimnames) colnames(x) <- colnames 636s + else dimnames(x) <- NULL 636s + # Check names attribute 636s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 636s + r0 <- rowCumprods_R(x, useNames = useNames) 636s + r1 <- rowCumprods(x, useNames = useNames) 636s + r2 <- t(rowCumprods(t(x), useNames = useNames)) 636s + stopifnot(all.equal(r1, r2)) 636s + stopifnot(all.equal(r1, r0)) 636s + stopifnot(all.equal(r2, r0)) 636s + } # for (useNames ...) 636s + } # for (setDimnames ...) 636s + 636s + # A Nx0 matrix 636s + x <- matrix(value, nrow = 5L, ncol = 0L) 636s + str(x) 636s + rownames <- LETTERS[1:5] 636s + # Test with and without dimnames on x 636s + for (setDimnames in c(TRUE, FALSE)) { 636s + if (setDimnames) rownames(x) <- rownames 636s + else dimnames(x) <- NULL 636s + # Check names attribute 636s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 636s + r0 <- rowCumprods_R(x, useNames = useNames) 636s + r1 <- rowCumprods(x, useNames = useNames) 636s + r2 <- t(rowCumprods(t(x), useNames = useNames)) 636s + stopifnot(all.equal(r1, r2)) 636s + stopifnot(all.equal(r1, r0)) 636s + stopifnot(all.equal(r2, r0)) 636s + } # for (useNames ...) 636s + } # for (setDimnames ...) 636s + } # for (mode ...) 636s mode: logical 636s logi[0 , 0 ] 636s logi[0 , 1:5] 636s logi[1:5, 0 ] 636s mode: integer 636s int[0 , 0 ] 636s int[0 , 1:5] 636s int[1:5, 0 ] 636s mode: double 636s num[0 , 0 ] 636s num[0 , 1:5] 636s num[1:5, 0 ] 636s > 636s 636s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 636s Copyright (C) 2024 The R Foundation for Statistical Computing 636s Platform: powerpc64le-unknown-linux-gnu (64-bit) 636s 636s R is free software and comes with ABSOLUTELY NO WARRANTY. 636s You are welcome to redistribute it under certain conditions. 636s Type 'license()' or 'licence()' for distribution details. 636s 636s R is a collaborative project with many contributors. 636s Type 'contributors()' for more information and 636s 'citation()' on how to cite R or R packages in publications. 636s 636s Type 'demo()' for some demos, 'help()' for on-line help, or 636s 'help.start()' for an HTML browser interface to help. 636s Type 'q()' to quit R. 636s 636s > library("matrixStats") 636s > 636s > rowCumprods_R <- function(x, ..., useNames = NA) { 636s + suppressWarnings({ 636s + y <- t(apply(x, MARGIN = 1L, FUN = cumprod)) 636s + }) 636s + 636s + # Preserve dimnames attribute? 636s + dim(y) <- dim(x) 636s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 636s + 636s + y 636s + } 636s > 636s > 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > # Subsetted tests 636s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 636s > source("utils/validateIndicesFramework.R") 636s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 636s > storage.mode(x) <- "integer" 636s > 636s > # To check dimnames attribute 636s > dimnames <- list(letters[1:6], LETTERS[1:6]) 636s > 636s > # Test with and without dimnames on x 636s > for (setDimnames in c(TRUE, FALSE)) { 636s + if (setDimnames) dimnames(x) <- dimnames 636s + else dimnames(x) <- NULL 636s + for (rows in index_cases) { 636s + for (cols in index_cases) { 636s + # Check names attribute 636s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 636s + validateIndicesTestMatrix(x, rows, cols, 636s + ftest = rowCumprods, fsure = rowCumprods_R, useNames = useNames) 636s + validateIndicesTestMatrix(x, rows, cols, 636s + ftest = function(x, rows, cols, ..., useNames) { 636s + t(colCumprods(t(x), rows = cols, cols = rows, useNames = useNames)) 636s + }, fsure = rowCumprods_R, useNames = useNames) 636s + } 636s + } 636s + } 636s + } 637s > 637s 637s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 637s Copyright (C) 2024 The R Foundation for Statistical Computing 637s Platform: powerpc64le-unknown-linux-gnu (64-bit) 637s 637s R is free software and comes with ABSOLUTELY NO WARRANTY. 637s You are welcome to redistribute it under certain conditions. 637s Type 'license()' or 'licence()' for distribution details. 637s 637s R is a collaborative project with many contributors. 637s Type 'contributors()' for more information and 637s 'citation()' on how to cite R or R packages in publications. 637s 637s Type 'demo()' for some demos, 'help()' for on-line help, or 637s 'help.start()' for an HTML browser interface to help. 637s Type 'q()' to quit R. 637s 637s > library("matrixStats") 637s > 637s > rowCumsums_R <- function(x, ..., useNames = NA) { 637s + suppressWarnings({ 637s + y <- t(apply(x, MARGIN = 1L, FUN = cumsum)) 637s + }) 637s + 637s + # Preserve dimnames attribute? 637s + dim(y) <- dim(x) 637s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 637s + 637s + y 637s + } 637s > 637s > 637s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 637s > # With and without some NAs 637s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 637s > dimnames <- list(letters[1:10], LETTERS[1:5]) # to check dimnames attribute 637s > for (mode in c("logical", "integer", "double")) { 637s + for (add_na in c(FALSE, TRUE)) { 637s + cat("add_na = ", add_na, "\n", sep = "") 637s + 637s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 637s + if (add_na) { 637s + x[3:7, c(2, 4)] <- NA_real_ 637s + } 637s + cat("mode: ", mode, "\n", sep = "") 637s + storage.mode(x) <- mode 637s + str(x) 637s + 637s + # Test with and without dimnames on x 637s + for (setDimnames in c(TRUE, FALSE)) { 637s + if (setDimnames) dimnames(x) <- dimnames 637s + else dimnames(x) <- NULL 637s + # Check names attribute 637s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 637s + # Row/column ranges 637s + r0 <- rowCumsums_R(x, useNames = useNames) 637s + r1 <- rowCumsums(x, useNames = useNames) 637s + r2 <- t(colCumsums(t(x), useNames = useNames)) 637s + stopifnot(all.equal(r1, r2)) 637s + stopifnot(all.equal(r1, r0)) 637s + stopifnot(all.equal(r2, r0)) 637s + } # for (useNames ...) 637s + } # for (setDimnames ...) 637s + } # for (add_na ...) 637s + } 637s add_na = FALSE 637s mode: logical 637s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 637s add_na = TRUE 637s mode: logical 637s logi [1:10, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 637s add_na = FALSE 637s mode: integer 637s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 637s add_na = TRUE 637s mode: integer 637s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 637s add_na = FALSE 637s mode: double 637s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 637s add_na = TRUE 637s mode: double 637s num [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 637s > 637s > 637s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 637s > # All NAs 637s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 637s > for (mode in c("logical", "integer", "double")) { 637s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 637s + cat("mode: ", mode, "\n", sep = "") 637s + storage.mode(x) <- mode 637s + str(x) 637s + 637s + # Test with and without dimnames on x 637s + for (setDimnames in c(TRUE, FALSE)) { 637s + if (setDimnames) dimnames(x) <- dimnames 637s + else dimnames(x) <- NULL 637s + # Check names attribute 637s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 637s + # Row/column ranges 637s + r0 <- rowCumsums_R(x, useNames = useNames) 637s + r1 <- rowCumsums(x, useNames = useNames) 637s + r2 <- t(colCumsums(t(x), useNames = useNames)) 637s + stopifnot(all.equal(r1, r2)) 637s + stopifnot(all.equal(r1, r0)) 637s + stopifnot(all.equal(r2, r0)) 637s + } # for (useNames ...) 637s + } # for (setDimnames ...) 637s + } # for (mode ...) 637s mode: logical 637s logi [1:10, 1:5] NA NA NA NA NA NA ... 637s mode: integer 637s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 637s mode: double 637s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 637s > 637s > 637s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 637s > # A 1x1 matrix 637s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 637s > dimnames <- list("a", "A") # to check dimnames attribute 637s > for (mode in c("logical", "integer", "double")) { 637s + x <- matrix(0, nrow = 1L, ncol = 1L) 637s + cat("mode: ", mode, "\n", sep = "") 637s + storage.mode(x) <- mode 637s + str(x) 637s + 637s + r0 <- rowCumsums_R(x) 637s + r1 <- rowCumsums(x) 637s + r2 <- t(colCumsums(t(x))) 637s + stopifnot(all.equal(r1, r2)) 637s + stopifnot(all.equal(r1, r0)) 637s + stopifnot(all.equal(r2, r0)) 637s + 637s + # Check dimnames attribute 637s + dimnames(x) <- dimnames 637s + # r0 <- rowCumsums_R(x) 637s + # > r0 637s + # a 637s + # [1,] 0 637s + r1 <- rowCumsums(x, useNames = TRUE) 637s + r2 <- t(colCumsums(t(x), useNames = TRUE)) 637s + stopifnot(identical(dimnames(r1), dimnames)) 637s + stopifnot(identical(dimnames(r2), dimnames)) 637s + dimnames(x) <- NULL 637s + } 637s mode: logical 637s logi [1, 1] FALSE 637s mode: integer 637s int [1, 1] 0 637s mode: double 637s num [1, 1] 0 637s > 637s > 637s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 637s > # Corner cases 637s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 637s > names <- LETTERS[1:5] # to check dimnames attribute 637s > for (mode in c("logical", "integer", "double")) { 637s + cat("mode: ", mode, "\n", sep = "") 637s + value <- 0 637s + storage.mode(value) <- mode 637s + value2 <- value 637s + if (mode == "logical") value2 <- 0L 637s + 637s + # A 0x0 matrix 637s + x <- matrix(value, nrow = 0L, ncol = 0L) 637s + str(x) 637s + r0 <- matrix(value2, nrow = nrow(x), ncol = ncol(x)) 637s + r1 <- rowCumsums(x) 637s + r2 <- t(colCumsums(t(x))) 637s + stopifnot(all.equal(r1, r2)) 637s + stopifnot(all.equal(r1, r0)) 637s + stopifnot(all.equal(r2, r0)) 637s + 637s + # A 0xK matrix 637s + x <- matrix(value, nrow = 0L, ncol = 5L) 637s + str(x) 637s + colnames <- LETTERS[1:5] 637s + # Test with and without dimnames on x 637s + for (setDimnames in c(TRUE, FALSE)) { 637s + if (setDimnames) colnames(x) <- colnames 637s + else dimnames(x) <- NULL 637s + # Check names attribute 637s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 637s + r0 <- rowCumsums_R(x, useNames = useNames) 637s + r1 <- rowCumsums(x, useNames = useNames) 637s + r2 <- t(rowCumsums(t(x), useNames = useNames)) 637s + stopifnot(all.equal(r1, r2)) 637s + stopifnot(all.equal(r1, r0)) 637s + stopifnot(all.equal(r2, r0)) 637s + } # for (useNames ...) 637s + } # for (setDimnames ...) 637s + 637s + # A Nx0 matrix 637s + x <- matrix(value, nrow = 5L, ncol = 0L) 637s + str(x) 637s + rownames <- LETTERS[1:5] 637s + # Test with and without dimnames on x 637s + for (setDimnames in c(TRUE, FALSE)) { 637s + if (setDimnames) rownames(x) <- rownames 637s + else dimnames(x) <- NULL 637s + # Check names attribute 637s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 637s + r0 <- rowCumsums_R(x, useNames = useNames) 637s + r1 <- rowCumsums(x, useNames = useNames) 637s + r2 <- t(rowCumsums(t(x), useNames = useNames)) 637s + stopifnot(all.equal(r1, r2)) 637s + stopifnot(all.equal(r1, r0)) 637s + stopifnot(all.equal(r2, r0)) 637s + } # for (useNames ...) 637s + } # for (setDimnames ...) 637s + } # for (mode ...) 637s mode: logical 637s logi[0 , 0 ] 637s logi[0 , 1:5] 637s logi[1:5, 0 ] 637s mode: integer 637s int[0 , 0 ] 637s int[0 , 1:5] 637s int[1:5, 0 ] 637s mode: double 637s num[0 , 0 ] 637s num[0 , 1:5] 637s num[1:5, 0 ] 637s > 637s 637s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 637s Copyright (C) 2024 The R Foundation for Statistical Computing 637s Platform: powerpc64le-unknown-linux-gnu (64-bit) 637s 637s R is free software and comes with ABSOLUTELY NO WARRANTY. 637s You are welcome to redistribute it under certain conditions. 637s Type 'license()' or 'licence()' for distribution details. 637s 637s R is a collaborative project with many contributors. 637s Type 'contributors()' for more information and 637s 'citation()' on how to cite R or R packages in publications. 637s 637s Type 'demo()' for some demos, 'help()' for on-line help, or 637s 'help.start()' for an HTML browser interface to help. 637s Type 'q()' to quit R. 637s 638s > library("matrixStats") 638s > 638s > rowCumsums_R <- function(x, ..., useNames = NA) { 638s + suppressWarnings({ 638s + y <- t(apply(x, MARGIN = 1L, FUN = cumsum)) 638s + }) 638s + 638s + # Preserve dimnames attribute? 638s + dim(y) <- dim(x) 638s + dimnames(y) <- if (isTRUE(useNames)) dimnames(x) else NULL 638s + 638s + y 638s + } 638s > 638s > 638s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 638s > # Subsetted tests 638s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 638s > source("utils/validateIndicesFramework.R") 638s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 638s > storage.mode(x) <- "integer" 638s > 638s > # To check dimnames attribute 638s > dimnames <- list(letters[1:6], LETTERS[1:6]) 638s > 638s > # Test with and without dimnames on x 638s > for (setDimnames in c(TRUE, FALSE)) { 638s + if (setDimnames) dimnames(x) <- dimnames 638s + else dimnames(x) <- NULL 638s + for (rows in index_cases) { 638s + for (cols in index_cases) { 638s + # Check names attribute 638s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 638s + validateIndicesTestMatrix(x, rows, cols, 638s + ftest = rowCumsums, fsure = rowCumsums_R, useNames = useNames) 638s + validateIndicesTestMatrix(x, rows, cols, 638s + ftest = function(x, rows, cols, ..., useNames) { 638s + t(colCumsums(t(x), rows = cols, cols = rows, useNames = useNames)) 638s + }, fsure = rowCumsums_R, useNames = useNames) 638s + } 638s + } 638s + } 638s + } 639s > 639s 639s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 639s Copyright (C) 2024 The R Foundation for Statistical Computing 639s Platform: powerpc64le-unknown-linux-gnu (64-bit) 639s 639s R is free software and comes with ABSOLUTELY NO WARRANTY. 639s You are welcome to redistribute it under certain conditions. 639s Type 'license()' or 'licence()' for distribution details. 639s 639s R is a collaborative project with many contributors. 639s Type 'contributors()' for more information and 639s 'citation()' on how to cite R or R packages in publications. 639s 639s Type 'demo()' for some demos, 'help()' for on-line help, or 639s 'help.start()' for an HTML browser interface to help. 639s Type 'q()' to quit R. 639s 639s > library("matrixStats") 639s > 639s > rowDiffs_R <- function(x, lag = 1L, differences = 1L, ..., useNames = NA) { 639s + ncol2 <- ncol(x) - lag * differences 639s + if (ncol2 <= 0) { 639s + y <- matrix(x[integer(0L)], nrow = nrow(x), ncol = 0L) 639s + # Preserve names attribute 639s + if (isTRUE(useNames) && !is.null(rownames(x))) rownames(y) <- rownames(x) 639s + return(y) 639s + } 639s + suppressWarnings({ 639s + y <- apply(x, MARGIN = 1L, FUN = diff, lag = lag, differences = differences) 639s + }) 639s + y <- t(y) 639s + 639s + # Preserve dimnames attribute 639s + dim(y) <- c(nrow(x), ncol2) 639s + if (isTRUE(useNames) && !is.null(dimnames(x))) { 639s + colnames <- colnames(x) 639s + if (!is.null(colnames)) { 639s + len <- length(colnames) 639s + colnames <- colnames[(len - ncol2 + 1):len] 639s + } 639s + dimnames(y) <- list(rownames(x), colnames) 639s + } 639s + else dimnames(y) <- NULL 639s + 639s + y 639s + } 639s > 639s > 639s > set.seed(0x42) 639s > 639s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 639s > # With and without some NAs 639s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 639s > for (mode in c("integer", "double")) { 639s + cat("mode: ", mode, "\n", sep = "") 639s + 639s + for (add_na in c(FALSE, TRUE)) { 639s + cat("add_na = ", add_na, "\n", sep = "") 639s + 639s + x <- matrix(sample(10 * 8) + 0.1, nrow = 10L, ncol = 8L) 639s + if (add_na) { 639s + x[3:7, c(2, 4)] <- NA_real_ 639s + } 639s + storage.mode(x) <- mode 639s + str(x) 639s + 639s + dimnames <- list(letters[1:10], LETTERS[1:8]) 639s + 639s + # Test with and without dimnames on x 639s + for (setDimnames in c(TRUE, FALSE)) { 639s + if (setDimnames) dimnames(x) <- dimnames 639s + else dimnames(x) <- NULL 639s + # Check dimnames attribute 639s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 639s + for (lag in 1:4) { 639s + for (differences in 1:3) { 639s + cat(sprintf("mode: %s, lag = %d, differences = %d\n", 639s + mode, lag, differences)) 639s + # Row/column ranges 639s + r0 <- rowDiffs_R(x, lag = lag, differences = differences, useNames = useNames) 639s + r1 <- rowDiffs(x, lag = lag, differences = differences, useNames = useNames) 639s + r2 <- t(colDiffs(t(x), lag = lag, differences = differences, useNames = useNames)) 639s + stopifnot(all.equal(r1, r0)) 639s + stopifnot(all.equal(r2, r0)) 639s + stopifnot(all.equal(r1, r2)) 639s + } 639s + } 639s + } # for (useNames ...) 639s + } # for (setDimnames ...) 639s + } # for (add_na ...) 639s + } # for (mode ...) 639s mode: integer 639s add_na = FALSE 639s int [1:10, 1:8] 68 26 29 47 48 10 1 38 16 40 ... 639s mode: integer, lag = 1, differences = 1 639s mode: integer, lag = 1, differences = 2 639s mode: integer, lag = 1, differences = 3 639s mode: integer, lag = 2, differences = 1 639s mode: integer, lag = 2, differences = 2 639s mode: integer, lag = 2, differences = 3 639s mode: integer, lag = 3, differences = 1 639s mode: integer, lag = 3, differences = 2 639s mode: integer, lag = 3, differences = 3 639s mode: integer, lag = 4, differences = 1 639s mode: integer, lag = 4, differences = 2 639s mode: integer, lag = 4, differences = 3 639s mode: integer, lag = 1, differences = 1 639s mode: integer, lag = 1, differences = 2 639s mode: integer, lag = 1, differences = 3 639s mode: integer, lag = 2, differences = 1 639s mode: integer, lag = 2, differences = 2 639s mode: integer, lag = 2, differences = 3 639s mode: integer, lag = 3, differences = 1 639s mode: integer, lag = 3, differences = 2 639s mode: integer, lag = 3, differences = 3 639s mode: integer, lag = 4, differences = 1 639s mode: integer, lag = 4, differences = 2 639s mode: integer, lag = 4, differences = 3 639s mode: integer, lag = 1, differences = 1 639s mode: integer, lag = 1, differences = 2 639s mode: integer, lag = 1, differences = 3 639s mode: integer, lag = 2, differences = 1 639s mode: integer, lag = 2, differences = 2 639s mode: integer, lag = 2, differences = 3 639s mode: integer, lag = 3, differences = 1 639s mode: integer, lag = 3, differences = 2 639s mode: integer, lag = 3, differences = 3 639s mode: integer, lag = 4, differences = 1 639s mode: integer, lag = 4, differences = 2 639s mode: integer, lag = 4, differences = 3 639s mode: integer, lag = 1, differences = 1 639s mode: integer, lag = 1, differences = 2 639s mode: integer, lag = 1, differences = 3 639s mode: integer, lag = 2, differences = 1 639s mode: integer, lag = 2, differences = 2 639s mode: integer, lag = 2, differences = 3 639s mode: integer, lag = 3, differences = 1 639s mode: integer, lag = 3, differences = 2 639s mode: integer, lag = 3, differences = 3 639s mode: integer, lag = 4, differences = 1 639s mode: integer, lag = 4, differences = 2 639s mode: integer, lag = 4, differences = 3 639s add_na = TRUE 639s int [1:10, 1:8] 80 71 7 52 79 22 31 10 29 63 ... 639s mode: integer, lag = 1, differences = 1 639s mode: integer, lag = 1, differences = 2 639s mode: integer, lag = 1, differences = 3 639s mode: integer, lag = 2, differences = 1 639s mode: integer, lag = 2, differences = 2 639s mode: integer, lag = 2, differences = 3 639s mode: integer, lag = 3, differences = 1 639s mode: integer, lag = 3, differences = 2 639s mode: integer, lag = 3, differences = 3 639s mode: integer, lag = 4, differences = 1 639s mode: integer, lag = 4, differences = 2 639s mode: integer, lag = 4, differences = 3 639s mode: integer, lag = 1, differences = 1 639s mode: integer, lag = 1, differences = 2 639s mode: integer, lag = 1, differences = 3 639s mode: integer, lag = 2, differences = 1 639s mode: integer, lag = 2, differences = 2 639s mode: integer, lag = 2, differences = 3 639s mode: integer, lag = 3, differences = 1 639s mode: integer, lag = 3, differences = 2 639s mode: integer, lag = 3, differences = 3 639s mode: integer, lag = 4, differences = 1 639s mode: integer, lag = 4, differences = 2 639s mode: integer, lag = 4, differences = 3 639s mode: integer, lag = 1, differences = 1 639s mode: integer, lag = 1, differences = 2 639s mode: integer, lag = 1, differences = 3 639s mode: integer, lag = 2, differences = 1 639s mode: integer, lag = 2, differences = 2 639s mode: integer, lag = 2, differences = 3 639s mode: integer, lag = 3, differences = 1 639s mode: integer, lag = 3, differences = 2 639s mode: integer, lag = 3, differences = 3 639s mode: integer, lag = 4, differences = 1 639s mode: integer, lag = 4, differences = 2 639s mode: integer, lag = 4, differences = 3 639s mode: integer, lag = 1, differences = 1 639s mode: integer, lag = 1, differences = 2 639s mode: integer, lag = 1, differences = 3 639s mode: integer, lag = 2, differences = 1 639s mode: integer, lag = 2, differences = 2 639s mode: integer, lag = 2, differences = 3 639s mode: integer, lag = 3, differences = 1 639s mode: integer, lag = 3, differences = 2 639s mode: integer, lag = 3, differences = 3 639s mode: integer, lag = 4, differences = 1 639s mode: integer, lag = 4, differences = 2 639s mode: integer, lag = 4, differences = 3 639s mode: double 639s add_na = FALSE 639s 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 ... 639s mode: double, lag = 1, differences = 1 639s mode: double, lag = 1, differences = 2 639s mode: double, lag = 1, differences = 3 639s mode: double, lag = 2, differences = 1 639s mode: double, lag = 2, differences = 2 639s mode: double, lag = 2, differences = 3 639s mode: double, lag = 3, differences = 1 639s mode: double, lag = 3, differences = 2 639s mode: double, lag = 3, differences = 3 639s mode: double, lag = 4, differences = 1 639s mode: double, lag = 4, differences = 2 639s mode: double, lag = 4, differences = 3 639s mode: double, lag = 1, differences = 1 639s mode: double, lag = 1, differences = 2 639s mode: double, lag = 1, differences = 3 639s mode: double, lag = 2, differences = 1 639s mode: double, lag = 2, differences = 2 639s mode: double, lag = 2, differences = 3 639s mode: double, lag = 3, differences = 1 639s mode: double, lag = 3, differences = 2 639s mode: double, lag = 3, differences = 3 639s mode: double, lag = 4, differences = 1 639s mode: double, lag = 4, differences = 2 639s mode: double, lag = 4, differences = 3 639s mode: double, lag = 1, differences = 1 639s mode: double, lag = 1, differences = 2 639s mode: double, lag = 1, differences = 3 639s mode: double, lag = 2, differences = 1 639s mode: double, lag = 2, differences = 2 639s mode: double, lag = 2, differences = 3 639s mode: double, lag = 3, differences = 1 639s mode: double, lag = 3, differences = 2 639s mode: double, lag = 3, differences = 3 639s mode: double, lag = 4, differences = 1 639s mode: double, lag = 4, differences = 2 639s mode: double, lag = 4, differences = 3 639s mode: double, lag = 1, differences = 1 639s mode: double, lag = 1, differences = 2 639s mode: double, lag = 1, differences = 3 639s mode: double, lag = 2, differences = 1 639s mode: double, lag = 2, differences = 2 639s mode: double, lag = 2, differences = 3 639s mode: double, lag = 3, differences = 1 639s mode: double, lag = 3, differences = 2 639s mode: double, lag = 3, differences = 3 639s mode: double, lag = 4, differences = 1 639s mode: double, lag = 4, differences = 2 639s mode: double, lag = 4, differences = 3 639s add_na = TRUE 639s 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 ... 639s mode: double, lag = 1, differences = 1 639s mode: double, lag = 1, differences = 2 639s mode: double, lag = 1, differences = 3 639s mode: double, lag = 2, differences = 1 639s mode: double, lag = 2, differences = 2 639s mode: double, lag = 2, differences = 3 639s mode: double, lag = 3, differences = 1 639s mode: double, lag = 3, differences = 2 639s mode: double, lag = 3, differences = 3 639s mode: double, lag = 4, differences = 1 639s mode: double, lag = 4, differences = 2 639s mode: double, lag = 4, differences = 3 639s mode: double, lag = 1, differences = 1 639s mode: double, lag = 1, differences = 2 639s mode: double, lag = 1, differences = 3 639s mode: double, lag = 2, differences = 1 639s mode: double, lag = 2, differences = 2 639s mode: double, lag = 2, differences = 3 639s mode: double, lag = 3, differences = 1 639s mode: double, lag = 3, differences = 2 639s mode: double, lag = 3, differences = 3 639s mode: double, lag = 4, differences = 1 639s mode: double, lag = 4, differences = 2 639s mode: double, lag = 4, differences = 3 639s mode: double, lag = 1, differences = 1 639s mode: double, lag = 1, differences = 2 639s mode: double, lag = 1, differences = 3 639s mode: double, lag = 2, differences = 1 639s mode: double, lag = 2, differences = 2 639s mode: double, lag = 2, differences = 3 639s mode: double, lag = 3, differences = 1 639s mode: double, lag = 3, differences = 2 639s mode: double, lag = 3, differences = 3 639s mode: double, lag = 4, differences = 1 639s mode: double, lag = 4, differences = 2 639s mode: double, lag = 4, differences = 3 639s mode: double, lag = 1, differences = 1 639s mode: double, lag = 1, differences = 2 639s mode: double, lag = 1, differences = 3 639s mode: double, lag = 2, differences = 1 639s mode: double, lag = 2, differences = 2 639s mode: double, lag = 2, differences = 3 639s mode: double, lag = 3, differences = 1 639s mode: double, lag = 3, differences = 2 639s mode: double, lag = 3, differences = 3 639s mode: double, lag = 4, differences = 1 639s mode: double, lag = 4, differences = 2 639s mode: double, lag = 4, differences = 3 639s > 639s > 639s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 639s > # All NAs 639s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 639s > for (mode in c("integer", "double")) { 639s + cat("mode: ", mode, "\n", sep = "") 639s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 639s + storage.mode(x) <- mode 639s + str(x) 639s + 639s + dimnames <- list(letters[1:10], LETTERS[1:5]) 639s + 639s + # Test with and without dimnames on x 639s + for (setDimnames in c(TRUE, FALSE)) { 639s + if (setDimnames) dimnames(x) <- dimnames 639s + else dimnames(x) <- NULL 639s + # Check dimnames attribute 639s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 639s + r0 <- rowDiffs_R(x, useNames = useNames) 639s + r1 <- rowDiffs(x, useNames = useNames) 639s + r2 <- t(colDiffs(t(x), useNames = useNames)) 639s + stopifnot(all.equal(r1, r0)) 639s + stopifnot(all.equal(r2, r0)) 639s + stopifnot(all.equal(r1, r2)) 639s + } # for (useNames ...) 639s + } # for (setDimnames ...) 639s + } # for (mode ...) 639s mode: integer 639s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 639s mode: double 639s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 639s > 639s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 639s > # A 1x1 matrix 639s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 639s > x <- matrix(0, nrow = 1L, ncol = 1L) 639s > dimnames <- list("a", "A") 639s > # Test with and without dimnames on x 639s > for (setDimnames in c(TRUE, FALSE)) { 639s + if (setDimnames) dimnames(x) <- dimnames 639s + else dimnames(x) <- NULL 639s + # Check dimnames attribute 639s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 639s + r0 <- rowDiffs_R(x, useNames = useNames) 639s + r1 <- rowDiffs(x, useNames = useNames) 639s + r2 <- t(colDiffs(t(x), useNames = useNames)) 639s + stopifnot(all.equal(r1, r0)) 639s + stopifnot(all.equal(r2, r0)) 639s + stopifnot(all.equal(r1, r2)) 639s + } # for (useNames ...) 639s + } # for (setDimnames ...) 639s > 639s 639s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 639s Copyright (C) 2024 The R Foundation for Statistical Computing 639s Platform: powerpc64le-unknown-linux-gnu (64-bit) 639s 639s R is free software and comes with ABSOLUTELY NO WARRANTY. 639s You are welcome to redistribute it under certain conditions. 639s Type 'license()' or 'licence()' for distribution details. 639s 639s R is a collaborative project with many contributors. 639s Type 'contributors()' for more information and 639s 'citation()' on how to cite R or R packages in publications. 639s 639s Type 'demo()' for some demos, 'help()' for on-line help, or 639s 'help.start()' for an HTML browser interface to help. 639s Type 'q()' to quit R. 639s 639s > library("matrixStats") 639s > 639s > rowDiffs_R <- function(x, lag = 1L, differences = 1L, ..., useNames = NA) { 639s + ncol2 <- ncol(x) - lag * differences 639s + if (ncol2 <= 0) { 639s + y <- matrix(x[integer(0L)], nrow = nrow(x), ncol = 0L) 639s + # Preserve names attribute 639s + if (isTRUE(useNames) && !is.null(rownames(x))) rownames(y) <- rownames(x) 639s + return(y) 639s + } 639s + suppressWarnings({ 639s + y <- apply(x, MARGIN = 1L, FUN = diff, lag = lag, differences = differences) 639s + }) 639s + y <- t(y) 639s + 639s + # Preserve dimnames attribute 639s + dim(y) <- c(nrow(x), ncol2) 639s + if (isTRUE(useNames) && !is.null(dimnames(x))) { 639s + colnames <- colnames(x) 639s + if (!is.null(colnames)) { 639s + len <- length(colnames) 639s + colnames <- colnames[(len - ncol2 + 1):len] 639s + } 639s + dimnames(y) <- list(rownames(x), colnames) 639s + } 639s + else dimnames(y) <- NULL 639s + 639s + y 639s + } 639s > 639s > 639s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 639s > # Subsetted tests 639s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 639s > source("utils/validateIndicesFramework.R") 639s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 639s > storage.mode(x) <- "integer" 639s > 639s > # To check dimnames attribute 639s > dimnames <- list(letters[1:6], LETTERS[1:6]) 639s > 639s > # Test with and without dimnames on x 639s > for (setDimnames in c(TRUE, FALSE)) { 639s + if (setDimnames) dimnames(x) <- dimnames 639s + else dimnames(x) <- NULL 639s + 639s + count <- 0L 639s + for (rows in index_cases) { 639s + for (cols in index_cases) { 639s + count <- count + 1L 639s + for (lag in 1:2) { 639s + for (differences in 1:3) { 639s + # Check dimnames attribute 639s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 639s + useNames <- useNames[count %% length(useNames) + 1] 639s + validateIndicesTestMatrix(x, rows, cols, 639s + ftest = rowDiffs, fsure = rowDiffs_R, 639s + lag = lag, differences = differences, useNames = useNames) 639s + validateIndicesTestMatrix(x, rows, cols, 639s + ftest = function(x, rows, cols, ..., useNames) { 639s + t(colDiffs(t(x), rows = cols, cols = rows, ..., useNames = useNames)) 639s + }, fsure = rowDiffs_R, 639s + lag = lag, differences = differences, useNames = useNames) 639s + } 639s + } 639s + } 639s + } 639s + } 643s > 643s 643s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 643s Copyright (C) 2024 The R Foundation for Statistical Computing 643s Platform: powerpc64le-unknown-linux-gnu (64-bit) 643s 643s R is free software and comes with ABSOLUTELY NO WARRANTY. 643s You are welcome to redistribute it under certain conditions. 643s Type 'license()' or 'licence()' for distribution details. 643s 643s R is a collaborative project with many contributors. 643s Type 'contributors()' for more information and 643s 'citation()' on how to cite R or R packages in publications. 643s 643s Type 'demo()' for some demos, 'help()' for on-line help, or 643s 'help.start()' for an HTML browser interface to help. 643s Type 'q()' to quit R. 643s 643s > library("matrixStats") 643s > 643s > rowIQRs_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 643s + quantile_na <- function(x, ..., na.rm = FALSE) { 643s + if (!na.rm && anyMissing(x)) 643s + return(c(NA_real_, NA_real_)) 643s + quantile(x, ..., na.rm = na.rm) 643s + } 643s + q <- apply(x, MARGIN = 1L, FUN = quantile_na, 643s + probs = c(0.25, 0.75), na.rm = na.rm) 643s + rownames(q) <- NULL # Not needed anymore 643s + 643s + # Preserve names attribute 643s + dim(q) <- c(2L, nrow(x)) 643s + colnames(q) <- if (isTRUE(useNames)) rownames(x) else NULL 643s + 643s + q[2L, , drop = TRUE] - q[1L, , drop = TRUE] 643s + } 643s > 643s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 643s > # Test with multiple quantiles 643s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 643s > for (mode in c("integer", "double")) { 643s + cat("mode: ", mode, "\n", sep = "") 643s + x <- matrix(1:100 + 0.1, nrow = 10, ncol = 10) 643s + storage.mode(x) <- mode 643s + str(x) 643s + 643s + # To check names attribute 643s + dimnames <- list(letters[1:10], LETTERS[1:10]) 643s + 643s + for (add_na in c(FALSE, TRUE)) { 643s + if (add_na) { 643s + x[3:5, 6:9] <- NA 643s + } 643s + # Test with and without dimnames on x 643s + for (setDimnames in c(TRUE, FALSE)) { 643s + if (setDimnames) dimnames(x) <- dimnames 643s + else dimnames(x) <- NULL 643s + for (na.rm in c(FALSE, TRUE)) { 643s + # Check names attribute 643s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 643s + probs <- c(0, 0.5, 1) 643s + q0 <- rowIQRs_R(x, na.rm = na.rm, useNames = useNames) 643s + print(q0) 643s + q1 <- rowIQRs(x, na.rm = na.rm, useNames = useNames) 643s + print(q1) 643s + stopifnot(all.equal(q1, q0)) 643s + q2 <- colIQRs(t(x), na.rm = na.rm, useNames = useNames) 643s + stopifnot(all.equal(q2, q0)) 643s + 643s + q <- iqr(x[3, ], na.rm = na.rm) 643s + print(q) 643s + } # for (useNames ...) 643s + } # for (na.rm ...) 643s + } # for (setDimnames ...) 643s + } # for (add_na ...) 643s + } # for (mode ...) 643s mode: integer 643s int [1:10, 1:10] 1 2 3 4 5 6 7 8 9 10 ... 643s a b c d e f g h i j 643s 45 45 45 45 45 45 45 45 45 45 643s a b c d e f g h i j 643s 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s a b c d e f g h i j 643s 45 45 45 45 45 45 45 45 45 45 643s a b c d e f g h i j 643s 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s a b c d e f g h i j 643s 45 45 NA NA NA 45 45 45 45 45 643s a b c d e f g h i j 643s 45 45 NA NA NA 45 45 45 45 45 643s [1] NA 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] NA 643s a b c d e f g h i j 643s 45 45 25 25 25 45 45 45 45 45 643s a b c d e f g h i j 643s 45 45 25 25 25 45 45 45 45 45 643s [1] 25 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 25 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] NA 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] NA 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 25 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 25 643s mode: double 643s 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 ... 643s a b c d e f g h i j 643s 45 45 45 45 45 45 45 45 45 45 643s a b c d e f g h i j 643s 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s a b c d e f g h i j 643s 45 45 45 45 45 45 45 45 45 45 643s a b c d e f g h i j 643s 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 45 45 45 45 45 45 45 45 45 643s [1] 45 643s a b c d e f g h i j 643s 45 45 NA NA NA 45 45 45 45 45 643s a b c d e f g h i j 643s 45 45 NA NA NA 45 45 45 45 45 643s [1] NA 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] NA 643s a b c d e f g h i j 643s 45 45 25 25 25 45 45 45 45 45 643s a b c d e f g h i j 643s 45 45 25 25 25 45 45 45 45 45 643s [1] 25 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 25 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] NA 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] 45 45 NA NA NA 45 45 45 45 45 643s [1] NA 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 25 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 45 45 25 25 25 45 45 45 45 45 643s [1] 25 643s > 643s > 643s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 643s > # Test corner cases 643s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 643s > for (mode in c("integer", "double")) { 643s + cat("mode: ", mode, "\n", sep = "") 643s + # Empty vectors 643s + x <- integer(0L) 643s + storage.mode(x) <- mode 643s + str(x) 643s + q <- iqr(x) 643s + print(q) 643s + stopifnot(identical(q, NA_real_)) 643s + 643s + # Scalar 643s + x <- 1L 643s + storage.mode(x) <- mode 643s + str(x) 643s + q <- iqr(x) 643s + str(q) 643s + stopifnot(identical(q, 0)) 643s + } 643s mode: integer 643s int(0) 643s [1] NA 643s int 1 643s num 0 643s mode: double 643s num(0) 643s [1] NA 643s num 1 643s num 0 643s > 643s > 643s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 643s > # Single row matrices 643s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 643s > x <- matrix(1, nrow = 1L, ncol = 2L) 643s > dimnames <- list("a", LETTERS[1:2]) 643s > # Test with and without dimnames on x 643s > for (setDimnames in c(TRUE, FALSE)) { 643s + if (setDimnames) dimnames(x) <- dimnames 643s + else dimnames(x) <- NULL 643s + # Check names attribute 643s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 643s + q0 <- rowIQRs_R(x, useNames = useNames) 643s + q1 <- rowIQRs(x, useNames = useNames) 643s + q2 <- colIQRs(t(x), useNames = useNames) 643s + stopifnot(all.equal(q0, q1)) 643s + stopifnot(all.equal(q0, q2)) 643s + } 643s + } 643s > 643s > x <- matrix(1, nrow = 2L, ncol = 1L) 643s > q <- colIQRs(x) 643s > stopifnot(identical(q, 0)) 643s > 643s 643s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 643s Copyright (C) 2024 The R Foundation for Statistical Computing 643s Platform: powerpc64le-unknown-linux-gnu (64-bit) 643s 643s R is free software and comes with ABSOLUTELY NO WARRANTY. 643s You are welcome to redistribute it under certain conditions. 643s Type 'license()' or 'licence()' for distribution details. 643s 643s R is a collaborative project with many contributors. 643s Type 'contributors()' for more information and 643s 'citation()' on how to cite R or R packages in publications. 643s 643s Type 'demo()' for some demos, 'help()' for on-line help, or 643s 'help.start()' for an HTML browser interface to help. 643s Type 'q()' to quit R. 643s 643s > library("matrixStats") 643s > 643s > rowIQRs_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 643s + quantile_na <- function(x, ..., na.rm = FALSE) { 643s + if (!na.rm && anyMissing(x)) 643s + return(c(NA_real_, NA_real_)) 643s + quantile(x, ..., na.rm = na.rm) 643s + } 643s + q <- apply(x, MARGIN = 1L, FUN = quantile_na, 643s + probs = c(0.25, 0.75), na.rm = na.rm) 643s + rownames(q) <- NULL # Not needed anymore 643s + 643s + # Preserve names attribute 643s + dim(q) <- c(2L, nrow(x)) 643s + colnames(q) <- if (isTRUE(useNames)) rownames(x) else NULL 643s + 643s + q[2L, , drop = TRUE] - q[1L, , drop = TRUE] 643s + } 643s > 643s > 643s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 643s > # Subsetted tests 643s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 643s > source("utils/validateIndicesFramework.R") 643s > x <- runif(6, min = -6, max = 6) 643s > for (idxs in index_cases) { 643s + for (na.rm in c(TRUE, FALSE)) { 643s + validateIndicesTestVector(x, idxs, ftest = iqr, fsure = function(x, na.rm) { 643s + dim(x) <- c(1L, length(x)) 643s + rowIQRs_R(x, na.rm = na.rm) 643s + }, na.rm = na.rm) 643s + } 643s + } 643s > 643s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 643s > 643s > # To check names attribute 643s > dimnames <- list(letters[1:6], LETTERS[1:6]) 643s > 643s > # Test with and without dimnames on x 643s > for (setDimnames in c(TRUE, FALSE)) { 643s + if (setDimnames) dimnames(x) <- dimnames 643s + else dimnames(x) <- NULL 643s + 643s + count <- 0L 643s + for (rows in index_cases) { 643s + for (cols in index_cases) { 643s + count <- count + 1L 643s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 643s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 643s + useNames <- useNames[count %% length(useNames) + 1] 643s + 643s + validateIndicesTestMatrix(x, rows, cols, 643s + ftest = rowIQRs, fsure = rowIQRs_R, 643s + na.rm = na.rm, useNames = useNames) 643s + validateIndicesTestMatrix(x, rows, cols, 643s + fcoltest = colIQRs, fsure = rowIQRs_R, 643s + na.rm = na.rm, useNames = useNames) 643s + } 643s + } 643s + } 644s > 644s 644s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 644s Copyright (C) 2024 The R Foundation for Statistical Computing 644s Platform: powerpc64le-unknown-linux-gnu (64-bit) 644s 644s R is free software and comes with ABSOLUTELY NO WARRANTY. 644s You are welcome to redistribute it under certain conditions. 644s Type 'license()' or 'licence()' for distribution details. 644s 644s R is a collaborative project with many contributors. 644s Type 'contributors()' for more information and 644s 'citation()' on how to cite R or R packages in publications. 644s 644s Type 'demo()' for some demos, 'help()' for on-line help, or 644s 'help.start()' for an HTML browser interface to help. 644s Type 'q()' to quit R. 644s 645s > # Test inspired by the harmonic mean example in R-help 645s > # thread '[R] Beyond double-precision?' on May 9, 2009. 645s > 645s > library("matrixStats") 645s > library("stats") 645s > 645s > logSumExp0 <- function(lx) { 645s + idx_max <- which.max(lx) 645s + log1p(sum(exp(lx[-idx_max] - lx[idx_max]))) + lx[idx_max] 645s + } 645s > 645s > n <- 200L 645s > set.seed(1) 645s > 645s > for (mode in c("integer", "double")) { 645s + cat("mode: ", mode, "\n", sep = "") 645s + x <- matrix(runif(n, min = 1.0, max = 3.0), nrow = 20L) 645s + storage.mode(x) <- mode 645s + str(x) 645s + 645s + # The logarithm of the harmonic mean by rows 645s + y_h <- log(1 / rowMeans(1 / x)) 645s + str(y_h) 645s + 645s + lx_neg <- -log(x) 645s + 645s + y0 <- log(ncol(x)) - apply(lx_neg, MARGIN = 1L, FUN = logSumExp0) 645s + stopifnot(all.equal(y0, y_h)) 645s + 645s + y1 <- log(ncol(x)) - apply(lx_neg, MARGIN = 1L, FUN = logSumExp) 645s + stopifnot(all.equal(y1, y0)) 645s + 645s + y2 <- log(ncol(x)) - rowLogSumExps(lx_neg) 645s + stopifnot(all.equal(y2, y0)) 645s + 645s + y3 <- log(ncol(x)) - colLogSumExps(t(lx_neg)) 645s + stopifnot(all.equal(y3, y0)) 645s + 645s + 645s + # The logarithm of the harmonic mean by columns 645s + y_h <- log(1 / colMeans(1 / x)) 645s + str(y_h) 645s + 645s + y0 <- log(nrow(x)) - apply(lx_neg, MARGIN = 2L, FUN = logSumExp0) 645s + stopifnot(all.equal(y0, y_h)) 645s + 645s + y1 <- log(nrow(x)) - apply(lx_neg, MARGIN = 2L, FUN = logSumExp) 645s + stopifnot(all.equal(y1, y0)) 645s + 645s + y2 <- log(nrow(x)) - colLogSumExps(lx_neg) 645s + stopifnot(all.equal(y2, y0)) 645s + 645s + y3 <- log(nrow(x)) - rowLogSumExps(t(lx_neg)) 645s + stopifnot(all.equal(y3, y0)) 645s + 645s + # Testing names 645s + rownames(lx_neg) <- seq_len(nrow(x)) 645s + colnames(lx_neg) <- seq_len(ncol(x)) 645s + y2 <- rowLogSumExps(lx_neg, useNames = TRUE) 645s + stopifnot(identical(names(y2), rownames(lx_neg))) 645s + y3 <- colLogSumExps(t(lx_neg), useNames = TRUE) 645s + stopifnot(identical(names(y3), rownames(lx_neg))) 645s + } # for (mode ...) 645s mode: integer 645s int [1:20, 1:10] 1 1 2 2 1 2 2 2 2 1 ... 645s num [1:20] 0.357 0.223 0.223 0.288 0.511 ... 645s num [1:10] 0.322 0.223 0.322 0.255 0.255 ... 645s mode: double 645s num [1:20, 1:10] 1.54 1.44 2.03 1.54 1.36 ... 645s num [1:20] 0.526 0.466 0.734 0.638 0.604 ... 645s num [1:10] 0.627 0.582 0.617 0.474 0.418 ... 645s > 645s > 645s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 645s > # Corner cases 645s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 645s > ## Zero-size matrices 645s > lx <- matrix(numeric(0L), nrow = 0L, ncol = 0L) 645s > y <- rowLogSumExps(lx) 645s > print(y) 645s numeric(0) 645s > stopifnot(length(y) == nrow(lx)) 645s > 645s > y <- colLogSumExps(lx) 645s > print(y) 645s numeric(0) 645s > stopifnot(length(y) == ncol(lx)) 645s > 645s > ## Zero-height matrices 645s > lx <- matrix(numeric(0L), nrow = 0L, ncol = 5L) 645s > y <- rowLogSumExps(lx) 645s > print(y) 645s numeric(0) 645s > stopifnot(length(y) == nrow(lx)) 645s > 645s > y <- colLogSumExps(lx) 645s > print(y) 645s [1] -Inf -Inf -Inf -Inf -Inf 645s > stopifnot(length(y) == ncol(lx)) 645s > stopifnot(all(y == -Inf)) 645s > 645s > ## Zero-width matrices 645s > lx <- matrix(numeric(0L), nrow = 5L, ncol = 0L) 645s > y <- colLogSumExps(lx) 645s > print(y) 645s numeric(0) 645s > stopifnot(length(y) == ncol(lx)) 645s > 645s > y <- rowLogSumExps(lx) 645s > print(y) 645s [1] -Inf -Inf -Inf -Inf -Inf 645s > stopifnot(length(y) == nrow(lx)) 645s > stopifnot(all(y == -Inf)) 645s > 645s > 645s > ## Matrices with one element 645s > lx <- matrix(1.0, nrow = 1L, ncol = 1L) 645s > y <- rowLogSumExps(lx) 645s > print(y) 645s [1] 1 645s > stopifnot(length(y) == nrow(lx)) 645s > stopifnot(all(y == lx)) 645s > 645s > y <- colLogSumExps(lx) 645s > print(y) 645s [1] 1 645s > stopifnot(length(y) == ncol(lx)) 645s > stopifnot(all(y == lx)) 645s > 645s > ## All missing values 645s > lx <- matrix(NA_real_, nrow = 1L, ncol = 1L) 645s > y <- rowLogSumExps(lx, na.rm = TRUE) 645s > print(y) 645s [1] -Inf 645s > stopifnot(length(y) == nrow(lx)) 645s > stopifnot(identical(y, -Inf)) 645s > 645s > lx <- matrix(NA_real_, nrow = 1L, ncol = 1L) 645s > y <- colLogSumExps(lx, na.rm = TRUE) 645s > print(y) 645s [1] -Inf 645s > stopifnot(length(y) == ncol(lx)) 645s > stopifnot(identical(y, -Inf)) 645s > 645s > lx <- matrix(NA_real_, nrow = 2L, ncol = 2L) 645s > y <- rowLogSumExps(lx, na.rm = TRUE) 645s > print(y) 645s [1] -Inf -Inf 645s > stopifnot(length(y) == nrow(lx)) 645s > stopifnot(all(y == -Inf)) 645s > 645s > y <- rowLogSumExps(lx, na.rm = FALSE) 645s > print(y) 645s [1] NA NA 645s > stopifnot(length(y) == nrow(lx)) 645s > stopifnot(all(is.na(y) & !is.nan(y))) 645s > 645s > lx <- matrix(NA_real_, nrow = 2L, ncol = 2L) 645s > y <- colLogSumExps(lx, na.rm = TRUE) 645s > print(y) 645s [1] -Inf -Inf 645s > stopifnot(length(y) == ncol(lx)) 645s > stopifnot(all(y == -Inf)) 645s > 645s > y <- colLogSumExps(lx, na.rm = FALSE) 645s > print(y) 645s [1] NA NA 645s > stopifnot(length(y) == ncol(lx)) 645s > stopifnot(all(is.na(y) & !is.nan(y))) 645s > 645s > ## +Inf values 645s > lx <- matrix(c(1, 2, +Inf), nrow = 3L, ncol = 2L) 645s > y <- colLogSumExps(lx, na.rm = TRUE) 645s > print(y) 645s [1] Inf Inf 645s > stopifnot(length(y) == ncol(lx)) 645s > stopifnot(all(y == +Inf)) 645s > 645s > ## multiple -Inf values 645s > lx <- matrix(c(-Inf, -Inf), nrow = 2L, ncol = 3L) 645s > y <- rowLogSumExps(lx) 645s > print(y) 645s [1] -Inf -Inf 645s > stopifnot(length(y) == nrow(lx)) 645s > stopifnot(all(y == -Inf)) 645s > 645s > lx <- matrix(c(-Inf, 5, -Inf), nrow = 2L, ncol = 3L, byrow = TRUE) 645s > y <- rowLogSumExps(lx) 645s > print(y) 645s [1] 5 5 645s > stopifnot(length(y) == nrow(lx)) 645s > stopifnot(all(y == 5)) 645s > 645s > ## Bug report #104 (https://github.com/HenrikBengtsson/matrixStats/issues/104) 645s > ## (This would core dump on Windows) 645s > x <- matrix(0.0, nrow = 2L, ncol = 32762L) 645s > y <- colLogSumExps(x) 645s > str(y) 645s num [1:32762] 0.693 0.693 0.693 0.693 0.693 ... 645s > 645s > ## Bug report #120 (https://github.com/HenrikBengtsson/matrixStats/issues/120) 645s > ## (This would error if x had rownames/colnames and non-NULL rows/cols were 645s > ## used) 645s > x <- matrix(runif(6), nrow = 2L, ncol = 3L, 645s + dimnames = list(c("A", "B"), c("a", "b", "c"))) 645s > y <- colLogSumExps(x, cols = 3:1, useNames = TRUE) 645s > stopifnot(names(y) == c("c", "b", "a")) 645s > y <- rowLogSumExps(x, rows = 2, useNames = TRUE) 645s > stopifnot(names(y) == "B") 645s > 645s > 645s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 645s > # Check names attributes 645s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 645s > 645s > ## Create isFALSE() if running on an old version of R 645s > if (!exists("isFALSE", mode="function")) { 645s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 645s + } 645s > 645s > rowLogSumExps_R <- function(x, ..., useNames = NA) { 645s + res <- apply(x, MARGIN = 1L, FUN = function(rx, ...) { 645s + log(sum(exp(rx), ...)) 645s + }, ...) 645s + if (isFALSE(useNames)) names(res) <- NULL 645s + res 645s + } 645s > 645s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 645s > 645s > # To check names attribute 645s > dimnames <- list(letters[1:6], LETTERS[1:6]) 645s > 645s > # Test with and without dimnames on x 645s > for (setDimnames in c(TRUE, FALSE)) { 645s + if (setDimnames) dimnames(x) <- dimnames 645s + else dimnames(x) <- NULL 645s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 645s + y0 <- rowLogSumExps_R(x, useNames = useNames) 645s + y1 <- rowLogSumExps(x, useNames = useNames) 645s + y2 <- colLogSumExps(t(x), useNames = useNames) 645s + stopifnot(all.equal(y1, y0)) 645s + stopifnot(all.equal(y2, y0)) 645s + } 645s + } 645s > 645s 645s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 645s Copyright (C) 2024 The R Foundation for Statistical Computing 645s Platform: powerpc64le-unknown-linux-gnu (64-bit) 645s 645s R is free software and comes with ABSOLUTELY NO WARRANTY. 645s You are welcome to redistribute it under certain conditions. 645s Type 'license()' or 'licence()' for distribution details. 645s 645s R is a collaborative project with many contributors. 645s Type 'contributors()' for more information and 645s 'citation()' on how to cite R or R packages in publications. 645s 645s Type 'demo()' for some demos, 'help()' for on-line help, or 645s 'help.start()' for an HTML browser interface to help. 645s Type 'q()' to quit R. 645s 645s > library("matrixStats") 645s > 645s > ## Create isFALSE() if running on an old version of R 645s > if (!exists("isFALSE", mode="function")) { 645s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 645s + } 645s > 645s > rowLogSumExps_R <- function(x, ..., useNames = NA) { 645s + res <- apply(x, MARGIN = 1L, FUN = function(rx, ...) { 645s + log(sum(exp(rx), ...)) 645s + }, ...) 645s + if (isFALSE(useNames)) names(res) <- NULL 645s + res 645s + } 645s > 645s > 645s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 645s > # Subsetted tests 645s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 645s > source("utils/validateIndicesFramework.R") 645s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 645s > 645s > # To check names attribute 645s > dimnames <- list(letters[1:6], LETTERS[1:6]) 645s > 645s > # Test with and without dimnames on x 645s > for (setDimnames in c(TRUE, FALSE)) { 645s + if (setDimnames) dimnames(x) <- dimnames 645s + else dimnames(x) <- NULL 645s + for (rows in index_cases) { 645s + for (cols in index_cases) { 645s + for (na.rm in c(TRUE, FALSE)) { 645s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 645s + validateIndicesTestMatrix(x, rows, cols, 645s + ftest = rowLogSumExps, 645s + fsure = rowLogSumExps_R, 645s + na.rm = na.rm, useNames = useNames) 645s + validateIndicesTestMatrix(x, rows, cols, 645s + fcoltest = colLogSumExps, 645s + fsure = rowLogSumExps_R, 645s + na.rm = na.rm, useNames = useNames) 645s + } 645s + } 645s + } 645s + } 645s + } 646s > 646s 646s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 646s Copyright (C) 2024 The R Foundation for Statistical Computing 646s Platform: powerpc64le-unknown-linux-gnu (64-bit) 646s 646s R is free software and comes with ABSOLUTELY NO WARRANTY. 646s You are welcome to redistribute it under certain conditions. 646s Type 'license()' or 'licence()' for distribution details. 646s 646s R is a collaborative project with many contributors. 646s Type 'contributors()' for more information and 646s 'citation()' on how to cite R or R packages in publications. 646s 646s Type 'demo()' for some demos, 'help()' for on-line help, or 646s 'help.start()' for an HTML browser interface to help. 646s Type 'q()' to quit R. 646s 646s > library("matrixStats") 646s > 646s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 646s > options(matrixStats.center.onUse = "ignore") 646s > 646s > rowMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 646s + suppressWarnings({ 646s + res <- apply(x, MARGIN = 1L, FUN = mad, na.rm = na.rm) 646s + }) 646s + if (is.na(useNames) || !useNames) names(res) <- NULL 646s + res 646s + } 646s > 646s > colMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 646s + suppressWarnings({ 646s + res <- apply(x, MARGIN = 2L, FUN = mad, na.rm = na.rm) 646s + }) 646s + if (is.na(useNames) || !useNames) names(res) <- NULL 646s + res 646s + } 646s > 646s > rowMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 646s + center <- rowMedians(x, cols = cols, na.rm = na.rm, useNames = FALSE) 646s + rowMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 646s + } 646s > 646s > colMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 646s + center <- colMedians(x, rows = rows, na.rm = na.rm, useNames = FALSE) 646s + colMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 646s + } 646s > 646s > 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > # A 3x3 matrix (no ties) 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > for (mode in c("integer", "double")) { 646s + x <- matrix(c(1, 2, 3, 2, 3, 4, 3, 4, 5) + 0.1, nrow = 3, ncol = 3) 646s + cat("mode: ", mode, "\n", sep = "") 646s + storage.mode(x) <- mode 646s + str(x) 646s + 646s + # To check name attribute 646s + dimnames <- list(letters[1:3], LETTERS[1:3]) 646s + 646s + # Test with and without dimnames on x 646s + for (setDimnames in c(TRUE, FALSE)) { 646s + if (setDimnames) dimnames(x) <- dimnames 646s + else dimnames(x) <- NULL 646s + tx <- t(x) 646s + # Check names attribute 646s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 646s + cat("rowMads():\n") 646s + center <- rowMedians(x, na.rm = TRUE, useNames = useNames) 646s + r0 <- rowMads_R(x, na.rm = TRUE, useNames = useNames) 646s + r1 <- rowMads(x, na.rm = TRUE, useNames = useNames) 646s + r1b <- rowMads_center(x, na.rm = TRUE, useNames = useNames) 646s + r1c <- rowMads(x, center = center, na.rm = TRUE, useNames = useNames) 646s + r2 <- colMads(tx, na.rm = TRUE, useNames = useNames) 646s + r2b <- colMads_center(tx, na.rm = TRUE, useNames = useNames) 646s + stopifnot(all.equal(r1, r2)) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r1b, r1)) 646s + stopifnot(all.equal(r1c, r1)) 646s + stopifnot(all.equal(r2, r0)) 646s + stopifnot(all.equal(r2b, r2)) 646s + 646s + cat("colMads():\n") 646s + center <- colMedians(x, na.rm = TRUE, useNames = useNames) 646s + r0 <- colMads_R(x, na.rm = TRUE, useNames = useNames) 646s + r1 <- colMads(x, na.rm = TRUE, useNames = useNames) 646s + r1b <- colMads_center(x, na.rm = TRUE, useNames = useNames) 646s + r1c <- colMads(x, center = center, na.rm = TRUE, useNames = useNames) 646s + r2 <- rowMads(tx, na.rm = TRUE, useNames = useNames) 646s + r2b <- rowMads_center(tx, na.rm = TRUE, useNames = useNames) 646s + stopifnot(all.equal(r1, r2)) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r1b, r1)) 646s + stopifnot(all.equal(r1c, r1)) 646s + stopifnot(all.equal(r2, r0)) 646s + stopifnot(all.equal(r2b, r2)) 646s + } 646s + } 646s + } 646s mode: integer 646s int [1:3, 1:3] 1 2 3 2 3 4 3 4 5 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s mode: double 646s num [1:3, 1:3] 1.1 2.1 3.1 2.1 3.1 4.1 3.1 4.1 5.1 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s > 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > # Ties: a 4x4 matrix 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > for (mode in c("integer", "double")) { 646s + x <- matrix(c(1:4, 2:5, 3:6, 4:7) + 0.1, nrow = 4, ncol = 4) 646s + cat("mode: ", mode, "\n", sep = "") 646s + storage.mode(x) <- mode 646s + str(x) 646s + tx <- t(x) 646s + 646s + # To check name attribute 646s + dimnames <- list(letters[1:4], LETTERS[1:4]) 646s + 646s + # Test with and without dimnames on x 646s + for (setDimnames in c(TRUE, FALSE)) { 646s + if (setDimnames) dimnames(x) <- dimnames 646s + else dimnames(x) <- NULL 646s + tx <- t(x) 646s + # Check names attribute 646s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 646s + cat("rowMads():\n") 646s + r0 <- rowMads_R(x, na.rm = TRUE, useNames = useNames) 646s + r1 <- rowMads(x, na.rm = TRUE, useNames = useNames) 646s + r2 <- colMads(tx, na.rm = TRUE, useNames = useNames) 646s + stopifnot(all.equal(r1, r2)) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r2, r0)) 646s + 646s + cat("colMads():\n") 646s + r0 <- colMads_R(x, na.rm = TRUE, useNames = useNames) 646s + r1 <- colMads(x, na.rm = TRUE, useNames = useNames) 646s + r2 <- rowMads(tx, na.rm = TRUE, useNames = useNames) 646s + stopifnot(all.equal(r1, r2)) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r2, r0)) 646s + } 646s + } 646s + } 646s mode: integer 646s int [1:4, 1:4] 1 2 3 4 2 3 4 5 3 4 ... 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s mode: double 646s 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 ... 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s > tx <- NULL 646s > 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > # No ties: a 3x3 matrix with an NA value 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > for (mode in c("integer", "double")) { 646s + x <- matrix(c(1, 2, 3, 2, 3, 4, 3, 4, 5) + 0.1, nrow = 3, ncol = 3) 646s + x[2, 2] <- NA_real_ 646s + 646s + cat("mode: ", mode, "\n", sep = "") 646s + storage.mode(x) <- mode 646s + str(x) 646s + tx <- t(x) 646s + 646s + # To check name attribute 646s + dimnames <- list(letters[1:3], LETTERS[1:3]) 646s + 646s + # Test with and without dimnames on x 646s + for (setDimnames in c(TRUE, FALSE)) { 646s + if (setDimnames) dimnames(x) <- dimnames 646s + else dimnames(x) <- NULL 646s + tx <- t(x) 646s + # Check names attribute 646s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 646s + cat("rowMads():\n") 646s + r0 <- rowMads_R(x, na.rm = TRUE, useNames = useNames) 646s + r1 <- rowMads(x, na.rm = TRUE, useNames = useNames) 646s + r2 <- colMads(tx, na.rm = TRUE, useNames = useNames) 646s + stopifnot(all.equal(r1, r2)) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r2, r0)) 646s + 646s + cat("colMads():\n") 646s + r0 <- colMads_R(x, na.rm = TRUE, useNames = useNames) 646s + r1 <- colMads(x, na.rm = TRUE, useNames = useNames) 646s + r2 <- rowMads(tx, na.rm = TRUE, useNames = useNames) 646s + stopifnot(all.equal(r1, r2)) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r2, r0)) 646s + } 646s + } 646s + } 646s mode: integer 646s int [1:3, 1:3] 1 2 3 2 NA 4 3 4 5 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s mode: double 646s num [1:3, 1:3] 1.1 2.1 3.1 2.1 NA 4.1 3.1 4.1 5.1 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s rowMads(): 646s colMads(): 646s > tx <- NULL 646s > 646s > 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > # With and without some NAs 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > for (add_na in c(FALSE, TRUE)) { 646s + cat("add_na = ", add_na, "\n", sep = "") 646s + 646s + x <- matrix(1:50, nrow = 10L, ncol = 5L) 646s + if (add_na) { 646s + x[3:7, c(2, 4)] <- NA_real_ 646s + } 646s + 646s + # To check name attribute 646s + dimnames <- list(letters[1:10], LETTERS[1:5]) 646s + 646s + # Test with and without dimnames on x 646s + for (setDimnames in c(TRUE, FALSE)) { 646s + if (setDimnames) dimnames(x) <- dimnames 646s + else dimnames(x) <- NULL 646s + tx <- t(x) 646s + # Row/column ranges 646s + for (na.rm in c(FALSE, TRUE)) { 646s + # Check names attribute 646s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 646s + cat("na.rm = ", na.rm, "\n", sep = "") 646s + cat("rowMads():\n") 646s + center <- rowMedians(x, na.rm = na.rm, useNames = useNames) 646s + r0 <- rowMads_R(x, na.rm = na.rm, useNames = useNames) 646s + r1 <- rowMads(x, na.rm = na.rm, useNames = useNames) 646s + r2 <- rowMads(x, center = center, na.rm = na.rm, useNames = useNames) 646s + r3 <- colMads(tx, na.rm = na.rm, useNames = useNames) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r2, r0)) 646s + stopifnot(all.equal(r2, r1)) 646s + stopifnot(all.equal(r3, r0)) 646s + stopifnot(all.equal(r3, r1)) 646s + stopifnot(all.equal(r3, r2)) 646s + 646s + cat("colMads():\n") 646s + center <- colMedians(x, na.rm = na.rm, useNames = useNames) 646s + r0 <- colMads_R(x, na.rm = na.rm, useNames = useNames) 646s + r1 <- colMads(x, na.rm = na.rm, useNames = useNames) 646s + r2 <- colMads(x, center = center, na.rm = na.rm, useNames = useNames) 646s + r3 <- rowMads(tx, na.rm = na.rm, useNames = useNames) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r2, r0)) 646s + stopifnot(all.equal(r2, r1)) 646s + stopifnot(all.equal(r3, r0)) 646s + stopifnot(all.equal(r3, r1)) 646s + stopifnot(all.equal(r3, r2)) 646s + } 646s + } 646s + } 646s + tx <- NULL 646s + } # for (add_na ...) 646s add_na = FALSE 646s na.rm = FALSE 646s rowMads(): 646s colMads(): 646s na.rm = FALSE 646s rowMads(): 646s colMads(): 646s na.rm = TRUE 646s rowMads(): 646s colMads(): 646s na.rm = TRUE 646s rowMads(): 646s colMads(): 646s na.rm = FALSE 646s rowMads(): 646s colMads(): 646s na.rm = FALSE 646s rowMads(): 646s colMads(): 646s na.rm = TRUE 646s rowMads(): 646s colMads(): 646s na.rm = TRUE 646s rowMads(): 646s colMads(): 646s add_na = TRUE 646s na.rm = FALSE 646s rowMads(): 646s colMads(): 646s na.rm = FALSE 646s rowMads(): 646s colMads(): 646s na.rm = TRUE 646s rowMads(): 646s colMads(): 646s na.rm = TRUE 646s rowMads(): 646s colMads(): 646s na.rm = FALSE 646s rowMads(): 646s colMads(): 646s na.rm = FALSE 646s rowMads(): 646s colMads(): 646s na.rm = TRUE 646s rowMads(): 646s colMads(): 646s na.rm = TRUE 646s rowMads(): 646s colMads(): 646s > 646s > 646s > 646s > 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > # All NAs 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 646s > # Test with and without dimnames on x 646s > for (setDimnames in c(TRUE, FALSE)) { 646s + if (setDimnames) dimnames(x) <- dimnames 646s + else dimnames(x) <- NULL 646s + tx <- t(x) 646s + # Row/column ranges 646s + for (na.rm in c(FALSE, TRUE)) { 646s + # Check names attribute 646s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 646s + cat("na.rm = ", na.rm, "\n", sep = "") 646s + r0 <- rowMads_R(x, na.rm = na.rm, useNames = useNames) 646s + if (na.rm) r0[is.na(r0)] <- NaN 646s + r1 <- rowMads(x, na.rm = na.rm, useNames = useNames) 646s + r2 <- colMads(tx, na.rm = na.rm, useNames = useNames) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r2, r0)) 646s + stopifnot(all.equal(r1, r2)) 646s + } 646s + } 646s + } 646s na.rm = FALSE 646s na.rm = FALSE 646s na.rm = TRUE 646s na.rm = TRUE 646s na.rm = FALSE 646s na.rm = FALSE 646s na.rm = TRUE 646s na.rm = TRUE 646s > tx <- NULL 646s > 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > # A 1x1 matrix 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > x <- matrix(0, nrow = 1L, ncol = 1L) 646s > dimnames <- list("a", "A") 646s > # Test with and without dimnames on x 646s > for (setDimnames in c(TRUE, FALSE)) { 646s + if (setDimnames) dimnames(x) <- dimnames 646s + else dimnames(x) <- NULL 646s + tx <- t(x) 646s + # Row/column ranges 646s + for (na.rm in c(FALSE, TRUE)) { 646s + # Check names attribute 646s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 646s + cat("na.rm = ", na.rm, "\n", sep = "") 646s + r0 <- rowMads_R(x, na.rm = na.rm, useNames = useNames) 646s + r1 <- rowMads(x, na.rm = na.rm, useNames = useNames) 646s + r2 <- colMads(tx, na.rm = na.rm, useNames = useNames) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r2, r0)) 646s + stopifnot(all.equal(r1, r2)) 646s + } 646s + } 646s + } 646s na.rm = FALSE 646s na.rm = FALSE 646s na.rm = TRUE 646s na.rm = TRUE 646s na.rm = FALSE 646s na.rm = FALSE 646s na.rm = TRUE 646s na.rm = TRUE 646s > 646s > 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > # A 0x0 matrix 646s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 646s > x <- matrix(double(0), nrow = 0, ncol = 0) 646s > tx <- t(x) 646s > for (na.rm in c(FALSE, TRUE)) { 646s + cat("na.rm = ", na.rm, "\n", sep = "") 646s + r0 <- rowMads_R(x, na.rm = na.rm) 646s + r1 <- rowMads(x, na.rm = na.rm) 646s + r2 <- colMads(tx, na.rm = na.rm) 646s + stopifnot(all.equal(r1, r2)) 646s + stopifnot(all.equal(r1, r0)) 646s + stopifnot(all.equal(r2, r0)) 646s + } 646s na.rm = FALSE 646s na.rm = TRUE 646s > 647s 647s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 647s Copyright (C) 2024 The R Foundation for Statistical Computing 647s Platform: powerpc64le-unknown-linux-gnu (64-bit) 647s 647s R is free software and comes with ABSOLUTELY NO WARRANTY. 647s You are welcome to redistribute it under certain conditions. 647s Type 'license()' or 'licence()' for distribution details. 647s 647s R is a collaborative project with many contributors. 647s Type 'contributors()' for more information and 647s 'citation()' on how to cite R or R packages in publications. 647s 647s Type 'demo()' for some demos, 'help()' for on-line help, or 647s 'help.start()' for an HTML browser interface to help. 647s Type 'q()' to quit R. 647s 647s > library("matrixStats") 647s > 647s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 647s > options(matrixStats.center.onUse = "ignore") 647s > 647s > rowMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 647s + suppressWarnings({ 647s + res <- apply(x, MARGIN = 1L, FUN = mad, na.rm = na.rm) 647s + }) 647s + if (is.na(useNames) || !useNames) names(res) <- NULL 647s + res 647s + } 647s > 647s > colMads_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 647s + suppressWarnings({ 647s + res <- apply(x, MARGIN = 2L, FUN = mad, na.rm = na.rm) 647s + }) 647s + if (is.na(useNames) || !useNames) names(res) <- NULL 647s + res 647s + } 647s > 647s > rowMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 647s + center <- rowMedians(x, cols = cols, na.rm = na.rm, useNames = FALSE) 647s + rowMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 647s + } 647s > 647s > colMads_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 647s + center <- colMedians(x, rows = rows, na.rm = na.rm, useNames = FALSE) 647s + colMads(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 647s + } 647s > 647s > 647s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 647s > # Subsetted tests 647s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 647s > source("utils/validateIndicesFramework.R") 647s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 647s > storage.mode(x) <- "integer" 647s > 647s > # To check names attribute 647s > dimnames <- list(letters[1:6], LETTERS[1:6]) 647s > 647s > # Test with and without dimnames on x 647s > for (setDimnames in c(TRUE, FALSE)) { 647s + if (setDimnames) dimnames(x) <- dimnames 647s + else dimnames(x) <- NULL 647s + 647s + count <- 0L 647s + for (rows in index_cases) { 647s + for (cols in index_cases) { 647s + count <- count + 1L 647s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 647s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 647s + useNames <- useNames[count %% length(useNames) + 1] 647s + 647s + validateIndicesTestMatrix(x, rows, cols, 647s + ftest = rowMads, fsure = rowMads_R, 647s + na.rm = na.rm, useNames = useNames) 647s + validateIndicesTestMatrix(x, rows, cols, 647s + ftest = rowMads_center, fsure = rowMads_R, 647s + na.rm = na.rm, useNames = useNames) 647s + 647s + validateIndicesTestMatrix(x, rows, cols, 647s + fcoltest = colMads, fsure = rowMads_R, 647s + na.rm = na.rm, useNames = useNames) 647s + validateIndicesTestMatrix(x, rows, cols, 647s + fcoltest = colMads_center, fsure = rowMads_R, 647s + na.rm = na.rm, useNames = useNames) 647s + } 647s + } 647s + } 648s > 648s 648s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 648s Copyright (C) 2024 The R Foundation for Statistical Computing 648s Platform: powerpc64le-unknown-linux-gnu (64-bit) 648s 648s R is free software and comes with ABSOLUTELY NO WARRANTY. 648s You are welcome to redistribute it under certain conditions. 648s Type 'license()' or 'licence()' for distribution details. 648s 648s R is a collaborative project with many contributors. 648s Type 'contributors()' for more information and 648s 'citation()' on how to cite R or R packages in publications. 648s 648s Type 'demo()' for some demos, 'help()' for on-line help, or 648s 'help.start()' for an HTML browser interface to help. 648s Type 'q()' to quit R. 648s 648s > library("matrixStats") 648s > 648s > rowMeans_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 648s + res <- rowMeans(x, na.rm = na.rm) 648s + if (is.na(useNames) || !useNames) names(res) <- NULL 648s + res 648s + } 648s > 648s > colMeans_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 648s + res <- colMeans(x, na.rm = na.rm) 648s + if (is.na(useNames) || !useNames) names(res) <- NULL 648s + res 648s + } 648s > 648s > for (mode in c("integer", "logical", "double")) { 648s + x <- matrix(-4:4, nrow = 3, ncol = 3) 648s + storage.mode(x) <- mode 648s + if (mode == "double") x <- x + 0.1 648s + 648s + # To check names attribute 648s + dimnames <- list(letters[1:3], LETTERS[1:3]) 648s + 648s + # Test with and without dimnames on x 648s + for (setDimnames in c(TRUE, FALSE)) { 648s + if (setDimnames) dimnames(x) <- dimnames 648s + else dimnames(x) <- NULL 648s + # Check names attribute 648s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 648s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + 648s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + } 648s + } 648s + } 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Special case: Single-element matrix 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > cat("Special case: Single-element matrix:\n") 648s Special case: Single-element matrix: 648s > for (mode in c("integer", "logical", "double")) { 648s + x <- matrix(1, nrow = 1, ncol = 1) 648s + storage.mode(x) <- mode 648s + 648s + # To check names attribute 648s + dimnames <- list("a", "A") 648s + 648s + # Test with and without dimnames on x 648s + for (setDimnames in c(TRUE, FALSE)) { 648s + if (setDimnames) dimnames(x) <- dimnames 648s + else dimnames(x) <- NULL 648s + # Check names attribute 648s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 648s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + 648s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + } 648s + } 648s + } 648s > 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Special case: Empty matrix 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > cat("Special case: Empty matrix:\n") 648s Special case: Empty matrix: 648s > for (mode in c("integer", "logical", "double")) { 648s + x <- matrix(integer(0), nrow = 0, ncol = 0) 648s + storage.mode(x) <- mode 648s + 648s + y0 <- rowMeans(x, na.rm = FALSE) 648s + y1 <- rowMeans2(x, na.rm = FALSE) 648s + stopifnot(all.equal(y1, y0)) 648s + 648s + y0 <- colMeans(x, na.rm = FALSE) 648s + y1 <- colMeans2(x, na.rm = FALSE) 648s + stopifnot(all.equal(y1, y0)) 648s + } 648s > 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Special case: All NAs 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > cat("Special case: All NAs:\n") 648s Special case: All NAs: 648s > for (mode in c("integer", "logical", "double")) { 648s + x <- matrix(NA_integer_, nrow = 3, ncol = 3) 648s + storage.mode(x) <- mode 648s + 648s + # To check names attribute 648s + dimnames <- list(letters[1:3], LETTERS[1:3]) 648s + 648s + # Test with and without dimnames on x 648s + for (setDimnames in c(TRUE, FALSE)) { 648s + if (setDimnames) dimnames(x) <- dimnames 648s + else dimnames(x) <- NULL 648s + # Check names attribute 648s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 648s + y0 <- rowMeans_R(x, na.rm = TRUE, useNames = useNames) 648s + y1 <- rowMeans2(x, na.rm = TRUE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + 648s + y0 <- colMeans_R(x, na.rm = TRUE, useNames = useNames) 648s + y1 <- colMeans2(x, na.rm = TRUE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + } 648s + } 648s + } 648s > 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Special case: All NaNs 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > cat("Special case: All NaNs:\n") 648s Special case: All NaNs: 648s > x <- matrix(NA_real_, nrow = 3, ncol = 3) 648s > 648s > # Test with and without dimnames on x 648s > for (setDimnames in c(TRUE, FALSE)) { 648s + if (setDimnames) dimnames(x) <- dimnames 648s + else dimnames(x) <- NULL 648s + # Check names attribute 648s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 648s + y0 <- rowMeans_R(x, na.rm = TRUE, useNames = useNames) 648s + y1 <- rowMeans2(x, na.rm = TRUE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + 648s + y0 <- colMeans_R(x, na.rm = TRUE, useNames = useNames) 648s + y1 <- colMeans2(x, na.rm = TRUE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + } 648s + } 648s > 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Special case: All Infs 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > cat("Special case: All Infs:\n") 648s Special case: All Infs: 648s > x <- matrix(Inf, nrow = 3, ncol = 3) 648s > 648s > # Test with and without dimnames on x 648s > for (setDimnames in c(TRUE, FALSE)) { 648s + if (setDimnames) dimnames(x) <- dimnames 648s + else dimnames(x) <- NULL 648s + # Check names attribute 648s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 648s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + 648s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + } 648s + } 648s > 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Special case: All -Infs 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > cat("Special case: All -Infs:\n") 648s Special case: All -Infs: 648s > x <- matrix(-Inf, nrow = 3, ncol = 3) 648s > 648s > # Test with and without dimnames on x 648s > for (setDimnames in c(TRUE, FALSE)) { 648s + if (setDimnames) dimnames(x) <- dimnames 648s + else dimnames(x) <- NULL 648s + # Check names attribute 648s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 648s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + 648s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + } 648s + } 648s > 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Special case: Infs and -Infs 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > cat("Special case: Infs and -Infs:\n") 648s Special case: Infs and -Infs: 648s > x <- matrix(c(-Inf, +Inf), nrow = 4, ncol = 4) 648s > 648s > # To check names attribute 648s > dimnames <- list(letters[1:4], LETTERS[1:4]) 648s > 648s > # Test with and without dimnames on x 648s > for (setDimnames in c(TRUE, FALSE)) { 648s + if (setDimnames) dimnames(x) <- dimnames 648s + else dimnames(x) <- NULL 648s + # Check names attribute 648s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 648s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + 648s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + } 648s + } 648s > 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Special case: NaNs and NAs 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > cat("Special case: NaNs and NAs:\n") 648s Special case: NaNs and NAs: 648s > x <- matrix(c(NaN, NA_real_), nrow = 4, ncol = 4) 648s > 648s > # Test with and without dimnames on x 648s > for (setDimnames in c(TRUE, FALSE)) { 648s + if (setDimnames) dimnames(x) <- dimnames 648s + else dimnames(x) <- NULL 648s + # Check names attribute 648s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 648s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + str(y0) 648s + stopifnot(all(is.na(y0)), length(unique(y0)) >= 1L) 648s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 648s + str(y1) 648s + stopifnot(all(is.na(y1)), length(unique(y1)) >= 1L) 648s + stopifnot(all.equal(y1, y0)) 648s + 648s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all(is.na(y0)), length(unique(y0)) == 1L) 648s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all(is.na(y1)), length(unique(y1)) == 1L) 648s + stopifnot(all.equal(y1, y0)) 648s + } 648s + } 648s Named num [1:4] NaN NA NaN NA 648s - attr(*, "names")= chr [1:4] "a" "b" "c" "d" 648s Named num [1:4] NaN NA NaN NA 648s - attr(*, "names")= chr [1:4] "a" "b" "c" "d" 648s num [1:4] NaN NA NaN NA 648s num [1:4] NaN NA NaN NA 648s num [1:4] NaN NA NaN NA 648s num [1:4] NaN NA NaN NA 648s num [1:4] NaN NA NaN NA 648s num [1:4] NaN NA NaN NA 648s > ## NOTE, due to compiler optimization, it is not guaranteed that NA is 648s > ## returned here (as one would expect). NaN might very well be returned, 648s > ## when both NA and NaN are involved. This is an accepted feature in R, 648s > ## which is documented in help("is.nan"). See also 648s > ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 648s > ## Thus, we cannot guarantee that y1 is identical to y0. 648s > 648s > 648s > 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Special case: Integer overflow with ties 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > cat("Special case: Integer overflow with ties:\n") 648s Special case: Integer overflow with ties: 648s > x <- matrix(.Machine$integer.max, nrow = 4, ncol = 4) 648s > 648s > # Test with and without dimnames on x 648s > for (setDimnames in c(TRUE, FALSE)) { 648s + if (setDimnames) dimnames(x) <- dimnames 648s + else dimnames(x) <- NULL 648s + # Check names attribute 648s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 648s + y0 <- rowMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- rowMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + 648s + y0 <- colMeans_R(x, na.rm = FALSE, useNames = useNames) 648s + y1 <- colMeans2(x, na.rm = FALSE, useNames = useNames) 648s + stopifnot(all.equal(y1, y0)) 648s + } 648s + } 648s > 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Consistency checks 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > set.seed(1) 648s > 648s > cat("Consistency checks:\n") 648s Consistency checks: 648s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 4L else 20L 648s > for (kk in seq_len(n_sims)) { 648s + cat("Random test #", kk, "\n", sep = "") 648s + 648s + # Simulate data in a matrix of any shape 648s + dim <- sample(50:200, size = 2) 648s + n <- prod(dim) 648s + x <- rnorm(n, sd = 100) 648s + dim(x) <- dim 648s + 648s + # Add NAs? 648s + if ((kk %% 4) %in% c(3, 0)) { 648s + cat("Adding NAs\n") 648s + nna <- sample(n, size = 1) 648s + na_values <- c(NA_real_, NaN) 648s + t <- sample(na_values, size = nna, replace = TRUE) 648s + x[sample(length(x), size = nna)] <- t 648s + } 648s + 648s + # Mode? 648s + modes <- "double" 648s + if ((kk %% 4) %in% c(2, 0)) { 648s + modes <- c("integer", "logical") 648s + } 648s + 648s + for (mode in modes) { 648s + if (mode != "double") { 648s + cat(sprintf("Coercing from %s to %s\n", storage.mode(x), mode)) 648s + storage.mode(x) <- mode 648s + } 648s + 648s + na.rm <- sample(c(TRUE, FALSE), size = 1) 648s + 648s + # rowMeans2(): 648s + y0 <- rowMeans(x, na.rm = na.rm) 648s + y1 <- rowMeans2(x, na.rm = na.rm) 648s + stopifnot(all.equal(y1, y0)) 648s + y2 <- colMeans2(t(x), na.rm = na.rm) 648s + stopifnot(all.equal(y2, y0)) 648s + 648s + # colMeans2(): 648s + y0 <- colMeans(x, na.rm = na.rm) 648s + y1 <- colMeans2(x, na.rm = na.rm) 648s + stopifnot(all.equal(y1, y0)) 648s + y2 <- rowMeans2(t(x), na.rm = na.rm) 648s + stopifnot(all.equal(y2, y0)) 648s + } 648s + } # for (kk ...) 648s Random test #1 648s Random test #2 648s Coercing from double to integer 648s Coercing from integer to logical 648s Random test #3 648s Adding NAs 648s Random test #4 648s Adding NAs 648s Coercing from double to integer 648s Coercing from integer to logical 648s Random test #5 648s Random test #6 648s Coercing from double to integer 648s Coercing from integer to logical 648s Random test #7 648s Adding NAs 648s Random test #8 648s Adding NAs 648s Coercing from double to integer 648s Coercing from integer to logical 648s Random test #9 648s Random test #10 648s Coercing from double to integer 648s Coercing from integer to logical 648s Random test #11 648s Adding NAs 648s Random test #12 648s Adding NAs 648s Coercing from double to integer 648s Coercing from integer to logical 648s Random test #13 648s Random test #14 648s Coercing from double to integer 648s Coercing from integer to logical 648s Random test #15 648s Adding NAs 648s Random test #16 648s Adding NAs 648s Coercing from double to integer 648s Coercing from integer to logical 648s Random test #17 648s Random test #18 648s Coercing from double to integer 648s Coercing from integer to logical 648s Random test #19 648s Adding NAs 648s Random test #20 648s Adding NAs 648s Coercing from double to integer 648s Coercing from integer to logical 648s > 648s 648s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 648s Copyright (C) 2024 The R Foundation for Statistical Computing 648s Platform: powerpc64le-unknown-linux-gnu (64-bit) 648s 648s R is free software and comes with ABSOLUTELY NO WARRANTY. 648s You are welcome to redistribute it under certain conditions. 648s Type 'license()' or 'licence()' for distribution details. 648s 648s R is a collaborative project with many contributors. 648s Type 'contributors()' for more information and 648s 'citation()' on how to cite R or R packages in publications. 648s 648s Type 'demo()' for some demos, 'help()' for on-line help, or 648s 'help.start()' for an HTML browser interface to help. 648s Type 'q()' to quit R. 648s 648s > library("matrixStats") 648s > 648s > rowMeans_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 648s + res <- rowMeans(x, na.rm = na.rm) 648s + if (is.na(useNames) || !useNames) names(res) <- NULL 648s + res 648s + } 648s > 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > # Subsetted tests 648s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 648s > source("utils/validateIndicesFramework.R") 648s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 648s > storage.mode(x) <- "integer" 648s > 648s > # To check names attribute 648s > dimnames <- list(letters[1:6], LETTERS[1:6]) 648s > 648s > # Test with and without dimnames on x 648s > for (setDimnames in c(TRUE, FALSE)) { 648s + if (setDimnames) dimnames(x) <- dimnames 648s + else dimnames(x) <- NULL 648s + 648s + count <- 0L 648s + for (rows in index_cases) { 648s + for (cols in index_cases) { 648s + count <- count + 1L 648s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 648s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 648s + useNames <- useNames[count %% length(useNames) + 1] 648s + 648s + validateIndicesTestMatrix(x, rows, cols, 648s + ftest = rowMeans2, fsure = rowMeans_R, 648s + na.rm = na.rm, useNames = useNames) 648s + validateIndicesTestMatrix(x, rows, cols, 648s + fcoltest = colMeans2, fsure = rowMeans_R, 648s + na.rm = na.rm, useNames = useNames) 648s + } 648s + } 648s + } 649s > 649s 649s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 649s Copyright (C) 2024 The R Foundation for Statistical Computing 649s Platform: powerpc64le-unknown-linux-gnu (64-bit) 649s 649s R is free software and comes with ABSOLUTELY NO WARRANTY. 649s You are welcome to redistribute it under certain conditions. 649s Type 'license()' or 'licence()' for distribution details. 649s 649s R is a collaborative project with many contributors. 649s Type 'contributors()' for more information and 649s 'citation()' on how to cite R or R packages in publications. 649s 649s Type 'demo()' for some demos, 'help()' for on-line help, or 649s 'help.start()' for an HTML browser interface to help. 649s Type 'q()' to quit R. 649s 649s > library("matrixStats") 649s > 649s > rowMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 649s + res <- apply(x, MARGIN = 1L, FUN = median, na.rm = na.rm) 649s + if (is.na(useNames) || !useNames) names(res) <- NULL 649s + res 649s + } 649s > 649s > colMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 649s + res <- apply(x, MARGIN = 2L, FUN = median, na.rm = na.rm) 649s + if (is.na(useNames) || !useNames) names(res) <- NULL 649s + res 649s + } 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Special case: Non-ties 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > cat("Special case: Non-ties:\n") 649s Special case: Non-ties: 649s > for (mode in c("integer", "double")) { 649s + x <- matrix(1:9 + 0.1, nrow = 3, ncol = 3) 649s + storage.mode(x) <- mode 649s + 649s + # To check names attribute 649s + dimnames <- list(letters[1:3], LETTERS[1:3]) 649s + 649s + # Test with and without dimnames on x 649s + for (setDimnames in c(TRUE, FALSE)) { 649s + if (setDimnames) dimnames(x) <- dimnames 649s + else dimnames(x) <- NULL 649s + # Check names attribute 649s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 649s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + 649s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + } 649s + } 649s + } 649s > 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Special case: Ties 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > cat("Special case: Ties:\n") 649s Special case: Ties: 649s > for (mode in c("integer", "double")) { 649s + x <- matrix(1:16 + 0.1, nrow = 4, ncol = 4) 649s + storage.mode(x) <- mode 649s + 649s + # To check names attribute 649s + dimnames <- list(letters[1:4], LETTERS[1:4]) 649s + 649s + # Test with and without dimnames on x 649s + for (setDimnames in c(TRUE, FALSE)) { 649s + if (setDimnames) dimnames(x) <- dimnames 649s + else dimnames(x) <- NULL 649s + # Check names attribute 649s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 649s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + 649s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + } 649s + } 649s + } 649s > 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Special case: Single-element matrix 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > cat("Special case: Single-element matrix:\n") 649s Special case: Single-element matrix: 649s > for (mode in c("integer", "double")) { 649s + x <- matrix(1, nrow = 1, ncol = 1) 649s + storage.mode(x) <- mode 649s + 649s + # To check names attribute 649s + dimnames <- list("a", "A") 649s + 649s + # Test with and without dimnames on x 649s + for (setDimnames in c(TRUE, FALSE)) { 649s + if (setDimnames) dimnames(x) <- dimnames 649s + else dimnames(x) <- NULL 649s + # Check names attribute 649s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 649s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + 649s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + } 649s + } 649s + } 649s > 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Special case: Empty matrix 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > cat("Special case: Empty matrix:\n") 649s Special case: Empty matrix: 649s > for (mode in c("integer", "double")) { 649s + x <- matrix(integer(0), nrow = 0, ncol = 0) 649s + storage.mode(x) <- mode 649s + 649s + y0 <- rowMedians_R(x, na.rm = FALSE) 649s + y1 <- rowMedians(x, na.rm = FALSE) 649s + stopifnot(all.equal(y1, y0)) 649s + 649s + y0 <- colMedians_R(x, na.rm = FALSE) 649s + y1 <- colMedians(x, na.rm = FALSE) 649s + stopifnot(all.equal(y1, y0)) 649s + } 649s > 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Special case: All NAs 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > cat("Special case: All NAs:\n") 649s Special case: All NAs: 649s > for (mode in c("integer", "double")) { 649s + x <- matrix(NA_integer_, nrow = 3, ncol = 3) 649s + storage.mode(x) <- mode 649s + 649s + # To check names attribute 649s + dimnames <- list(letters[1:3], LETTERS[1:3]) 649s + 649s + # Test with and without dimnames on x 649s + for (setDimnames in c(TRUE, FALSE)) { 649s + if (setDimnames) dimnames(x) <- dimnames 649s + else dimnames(x) <- NULL 649s + # Check names attribute 649s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 649s + y0 <- rowMedians_R(x, na.rm = TRUE, useNames = useNames) 649s + y1 <- rowMedians(x, na.rm = TRUE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + 649s + y0 <- colMedians_R(x, na.rm = TRUE, useNames = useNames) 649s + y1 <- colMedians(x, na.rm = TRUE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + } 649s + } 649s + } 649s > 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Special case: All NaNs 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > cat("Special case: All NaNs:\n") 649s Special case: All NaNs: 649s > x <- matrix(NA_real_, nrow = 3, ncol = 3) 649s > 649s > # Test with and without dimnames on x 649s > for (setDimnames in c(TRUE, FALSE)) { 649s + if (setDimnames) dimnames(x) <- dimnames 649s + else dimnames(x) <- NULL 649s + # Check names attribute 649s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 649s + y0 <- rowMedians_R(x, na.rm = TRUE, useNames = useNames) 649s + y1 <- rowMedians(x, na.rm = TRUE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + 649s + y0 <- colMedians_R(x, na.rm = TRUE, useNames = useNames) 649s + y1 <- colMedians(x, na.rm = TRUE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + } 649s + } 649s > 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Special case: All Infs 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > cat("Special case: All Infs:\n") 649s Special case: All Infs: 649s > x <- matrix(Inf, nrow = 3, ncol = 3) 649s > 649s > # Test with and without dimnames on x 649s > for (setDimnames in c(TRUE, FALSE)) { 649s + if (setDimnames) dimnames(x) <- dimnames 649s + else dimnames(x) <- NULL 649s + # Check names attribute 649s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 649s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + 649s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + } 649s + } 649s > 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Special case: All -Infs 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > cat("Special case: All -Infs:\n") 649s Special case: All -Infs: 649s > x <- matrix(-Inf, nrow = 3, ncol = 3) 649s > 649s > # Test with and without dimnames on x 649s > for (setDimnames in c(TRUE, FALSE)) { 649s + if (setDimnames) dimnames(x) <- dimnames 649s + else dimnames(x) <- NULL 649s + # Check names attribute 649s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 649s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + 649s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + } 649s + } 649s > 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Special case: Infs and -Infs 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > cat("Special case: Infs and -Infs:\n") 649s Special case: Infs and -Infs: 649s > x <- matrix(c(-Inf, +Inf), nrow = 4, ncol = 4) 649s > 649s > # To check names attribute 649s > dimnames <- list(letters[1:4], LETTERS[1:4]) 649s > 649s > # Test with and without dimnames on x 649s > for (setDimnames in c(TRUE, FALSE)) { 649s + if (setDimnames) dimnames(x) <- dimnames 649s + else dimnames(x) <- NULL 649s + # Check names attribute 649s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 649s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + 649s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + } 649s + } 649s > 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Special case: Integer overflow with ties 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > cat("Special case: Integer overflow with ties:\n") 649s Special case: Integer overflow with ties: 649s > x <- matrix(.Machine$integer.max, nrow = 4, ncol = 4) 649s > 649s > # Test with and without dimnames on x 649s > for (setDimnames in c(TRUE, FALSE)) { 649s + if (setDimnames) dimnames(x) <- dimnames 649s + else dimnames(x) <- NULL 649s + # Check names attribute 649s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 649s + y0 <- rowMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- rowMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + 649s + y0 <- colMedians_R(x, na.rm = FALSE, useNames = useNames) 649s + y1 <- colMedians(x, na.rm = FALSE, useNames = useNames) 649s + stopifnot(all.equal(y1, y0)) 649s + } 649s + } 649s > 649s > 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > # Consistency checks 649s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 649s > set.seed(1) 649s > 649s > cat("Consistency checks:\n") 649s Consistency checks: 649s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 4L else 20L 649s > for (kk in seq_len(n_sims)) { 649s + cat("Random test #", kk, "\n", sep = "") 649s + 649s + # Simulate data in a matrix of any shape 649s + dim <- sample(50:200, size = 2) 649s + n <- prod(dim) 649s + x <- rnorm(n, sd = 100) 649s + dim(x) <- dim 649s + 649s + # Add NAs? 649s + if ((kk %% 4) %in% c(3, 0)) { 649s + cat("Adding NAs\n") 649s + nna <- sample(n, size = 1) 649s + na_values <- c(NA_real_, NaN) 649s + t <- sample(na_values, size = nna, replace = TRUE) 649s + x[sample(length(x), size = nna)] <- t 649s + } 649s + 649s + # Integer or double? 649s + if ((kk %% 4) %in% c(2, 0)) { 649s + cat("Coercing to integers\n") 649s + storage.mode(x) <- "integer" 649s + } 649s + 649s + na.rm <- sample(c(TRUE, FALSE), size = 1) 649s + 649s + # rowMedians(): 649s + y0 <- rowMedians_R(x, na.rm = na.rm) 649s + y1 <- rowMedians(x, na.rm = na.rm) 649s + stopifnot(all.equal(y1, y0)) 649s + y2 <- colMedians(t(x), na.rm = na.rm) 649s + stopifnot(all.equal(y2, y0)) 649s + 649s + # colMedians(): 649s + y0 <- colMedians_R(x, na.rm = na.rm) 649s + y1 <- colMedians(x, na.rm = na.rm) 649s + stopifnot(all.equal(y1, y0)) 649s + y2 <- rowMedians(t(x), na.rm = na.rm) 649s + stopifnot(all.equal(y2, y0)) 649s + } # for (kk ...) 649s Random test #1 649s Random test #2 649s Coercing to integers 649s Random test #3 649s Adding NAs 649s Random test #4 649s Adding NAs 649s Coercing to integers 649s Random test #5 649s Random test #6 649s Coercing to integers 649s Random test #7 649s Adding NAs 649s Random test #8 649s Adding NAs 649s Coercing to integers 649s Random test #9 649s Random test #10 649s Coercing to integers 649s Random test #11 649s Adding NAs 649s Random test #12 649s Adding NAs 649s Coercing to integers 649s Random test #13 649s Random test #14 649s Coercing to integers 649s Random test #15 649s Adding NAs 649s Random test #16 649s Adding NAs 649s Coercing to integers 649s Random test #17 649s Random test #18 649s Coercing to integers 649s Random test #19 649s Adding NAs 649s Random test #20 649s Adding NAs 649s Coercing to integers 649s > 649s 649s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 649s Copyright (C) 2024 The R Foundation for Statistical Computing 649s Platform: powerpc64le-unknown-linux-gnu (64-bit) 649s 649s R is free software and comes with ABSOLUTELY NO WARRANTY. 649s You are welcome to redistribute it under certain conditions. 649s Type 'license()' or 'licence()' for distribution details. 649s 649s R is a collaborative project with many contributors. 649s Type 'contributors()' for more information and 649s 'citation()' on how to cite R or R packages in publications. 649s 649s Type 'demo()' for some demos, 'help()' for on-line help, or 649s 'help.start()' for an HTML browser interface to help. 649s Type 'q()' to quit R. 649s 649s > library("matrixStats") 650s > 650s > rowMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 650s + res <- apply(x, MARGIN = 1L, FUN = median, na.rm = na.rm) 650s + if (is.na(useNames) || !useNames) names(res) <- NULL 650s + res 650s + } 650s > 650s > colMedians_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 650s + res <- apply(x, MARGIN = 2L, FUN = median, na.rm = na.rm) 650s + if (is.na(useNames) || !useNames) names(res) <- NULL 650s + res 650s + } 650s > 650s > 650s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 650s > # Subsetted tests 650s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 650s > source("utils/validateIndicesFramework.R") 650s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 650s > storage.mode(x) <- "integer" 650s > 650s > # To check names attribute 650s > dimnames <- list(letters[1:6], LETTERS[1:6]) 650s > 650s > # Test with and without dimnames on x 650s > for (setDimnames in c(TRUE, FALSE)) { 650s + if (setDimnames) dimnames(x) <- dimnames 650s + else dimnames(x) <- NULL 650s + 650s + count <- 0L 650s + for (rows in index_cases) { 650s + for (cols in index_cases) { 650s + count <- count + 1L 650s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 650s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 650s + useNames <- useNames[count %% length(useNames) + 1] 650s + 650s + validateIndicesTestMatrix(x, rows, cols, 650s + ftest = rowMedians, fsure = rowMedians_R, 650s + na.rm = na.rm, useNames = useNames) 650s + validateIndicesTestMatrix(x, rows, cols, 650s + fcoltest = colMedians, fsure = rowMedians_R, 650s + na.rm = na.rm, useNames = useNames) 650s + } 650s + } 650s + } 650s > 650s 650s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 650s Copyright (C) 2024 The R Foundation for Statistical Computing 650s Platform: powerpc64le-unknown-linux-gnu (64-bit) 650s 650s R is free software and comes with ABSOLUTELY NO WARRANTY. 650s You are welcome to redistribute it under certain conditions. 650s Type 'license()' or 'licence()' for distribution details. 650s 650s R is a collaborative project with many contributors. 650s Type 'contributors()' for more information and 650s 'citation()' on how to cite R or R packages in publications. 650s 650s Type 'demo()' for some demos, 'help()' for on-line help, or 650s 'help.start()' for an HTML browser interface to help. 650s Type 'q()' to quit R. 650s 650s > library("matrixStats") 650s > library("stats") 650s > 650s > asWhich <- function(probs, max) { 650s + idx <- as.integer(round(probs * max)) 650s + if (idx < 1L) { 650s + idx <- 1L 650s + } else if (idx > max) { 650s + idx <- max 650s + } 650s + idx 650s + } # asWhich() 650s > 650s > rowOrderStats_R <- function(x, probs, ..., useNames = NA) { 650s + ans <- apply(x, MARGIN = 1L, FUN = quantile, probs = probs, type = 3L) 650s + 650s + # Remove Attributes 650s + if (is.na(useNames) || !useNames || length(ans) == 0L) attributes(ans) <- NULL 650s + ans 650s + } # rowOrderStats_R() 650s > 650s > 650s > set.seed(1) 650s > 650s > 650s > # Simulate data in a matrix of any shape 650s > nrow <- 60L 650s > ncol <- 30L 650s > x <- rnorm(nrow * ncol) 650s > dim(x) <- c(nrow, ncol) 650s > probs <- 0.3 650s > which <- asWhich(probs, max = ncol) 650s > 650s > y0 <- rowOrderStats_R(x, probs = probs) 650s > y1 <- rowOrderStats(x, which = which) 650s > stopifnot(all.equal(y1, y0)) 650s > y2 <- colOrderStats(t(x), which = which) 650s > stopifnot(all.equal(y2, y0)) 650s > 650s > 650s > 650s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 650s > # Consistency checks 650s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 650s > for (mode in c("integer", "double")) { 650s + cat("Consistency checks without NAs:\n") 650s + for (kk in 1:3) { 650s + cat("Random test #", kk, "\n", sep = "") 650s + 650s + # Simulate data in a matrix of any shape 650s + nrow <- sample(20L, size = 1L) 650s + ncol <- sample(20L, size = 1L) 650s + x <- rnorm(nrow * ncol) 650s + dim(x) <- c(nrow, ncol) 650s + 650s + cat("mode: ", mode, "\n", sep = "") 650s + storage.mode(x) <- mode 650s + str(x) 650s + 650s + probs <- runif(1) 650s + which <- asWhich(probs, max = ncol) 650s + 650s + y0 <- rowOrderStats_R(x, probs = probs) 650s + y1 <- rowOrderStats(x, which = which) 650s + stopifnot(all.equal(y1, y0)) 650s + y2 <- colOrderStats(t(x), which = which) 650s + stopifnot(all.equal(y2, y0)) 650s + } # for (kk in ...) 650s + } # for (mode ...) 650s Consistency checks without NAs: 650s Random test #1 650s mode: integer 650s int [1:14, 1:6] 0 0 1 0 2 -1 1 0 0 0 ... 650s Random test #2 650s mode: integer 650s int [1:8, 1:13] 0 0 1 -2 0 0 0 0 1 0 ... 650s Random test #3 650s mode: integer 650s int [1:20, 1:17] 0 0 0 0 1 0 1 0 0 -1 ... 650s Consistency checks without NAs: 650s Random test #1 650s mode: double 650s num [1:9, 1:5] -1.4286 -0.00386 -0.70456 -0.29242 -0.49607 ... 650s Random test #2 650s mode: double 650s num [1:11, 1:20] -0.796 0.482 -0.952 0.5 1.242 ... 650s Random test #3 650s mode: double 650s num [1:7, 1:18] 1.553 -2.405 0.167 -0.403 -1.746 ... 650s > 650s > 650s > # Check names attribute 650s > x <- matrix(1:9 + 0.1, nrow = 3L, ncol = 3L) 650s > 650s > probs <- runif(1) 650s > which <- asWhich(probs, max = ncol(x)) 650s > 650s > dimnames <- list(letters[1:3], LETTERS[1:3]) 650s > 650s > # Test with and without dimnames on x 650s > for (setDimnames in c(TRUE, FALSE)) { 650s + if (setDimnames) dimnames(x) <- dimnames 650s + else dimnames(x) <- NULL 650s + # Check names attribute 650s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 650s + y0 <- rowOrderStats_R(x, probs = probs, useNames = useNames) 650s + y1 <- rowOrderStats(x, which = which, useNames = useNames) 650s + stopifnot(all.equal(y1, y0)) 650s + y2 <- colOrderStats(t(x), which = which, useNames = useNames) 650s + stopifnot(all.equal(y2, y0)) 650s + } 650s + } 650s > 650s 650s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 650s Copyright (C) 2024 The R Foundation for Statistical Computing 650s Platform: powerpc64le-unknown-linux-gnu (64-bit) 650s 650s R is free software and comes with ABSOLUTELY NO WARRANTY. 650s You are welcome to redistribute it under certain conditions. 650s Type 'license()' or 'licence()' for distribution details. 650s 650s R is a collaborative project with many contributors. 650s Type 'contributors()' for more information and 650s 'citation()' on how to cite R or R packages in publications. 650s 650s Type 'demo()' for some demos, 'help()' for on-line help, or 650s 'help.start()' for an HTML browser interface to help. 650s Type 'q()' to quit R. 650s 650s > library("matrixStats") 650s > 650s > rowOrderStats_R <- function(x, probs, ..., useNames = NA) { 650s + ans <- apply(x, MARGIN = 1L, FUN = quantile, probs = probs, type = 3L) 650s + 650s + # Remove Attributes 650s + if (is.na(useNames) || !useNames || length(ans) == 0L) attributes(ans) <- NULL 650s + ans 650s + } # rowOrderStats_R() 650s > 650s > 650s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 650s > # Subsetted tests 650s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 650s > source("utils/validateIndicesFramework.R") 650s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 650s > storage.mode(x) <- "integer" 650s > 650s > # To check names attribute 650s > dimnames <- list(letters[1:6], LETTERS[1:6]) 650s > 650s > probs <- 0.3 650s > # Test with and without dimnames on x 650s > for (setDimnames in c(TRUE, FALSE)) { 650s + if (setDimnames) dimnames(x) <- dimnames 650s + else dimnames(x) <- NULL 650s + for (rows in index_cases) { 650s + for (cols in index_cases) { 650s + # Check names attribute 650s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 650s + if (is.null(cols)) which <- round(probs * ncol(x)) 650s + else { 650s + xxrows <- rows 650s + suppressWarnings({ 650s + xx <- tryCatch(x[, cols, drop = FALSE], error = function(c) "error") 650s + if (identical(xx, "error")) which <- 0L 650s + else which <- round(probs * ncol(xx)) 650s + }) 650s + } 650s + if (which == 0L) next 650s + 650s + validateIndicesTestMatrix(x, rows, cols, 650s + ftest = rowOrderStats, fsure = rowOrderStats_R, 650s + which = which, probs = probs, useNames = useNames) 650s + validateIndicesTestMatrix(x, rows, cols, 650s + fcoltest = colOrderStats, fsure = rowOrderStats_R, 650s + which = which, probs = probs, useNames = useNames) 650s + } 650s + } 650s + } 650s + } 651s > 652s 652s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 652s Copyright (C) 2024 The R Foundation for Statistical Computing 652s Platform: powerpc64le-unknown-linux-gnu (64-bit) 652s 652s R is free software and comes with ABSOLUTELY NO WARRANTY. 652s You are welcome to redistribute it under certain conditions. 652s Type 'license()' or 'licence()' for distribution details. 652s 652s R is a collaborative project with many contributors. 652s Type 'contributors()' for more information and 652s 'citation()' on how to cite R or R packages in publications. 652s 652s Type 'demo()' for some demos, 'help()' for on-line help, or 652s 'help.start()' for an HTML browser interface to help. 652s Type 'q()' to quit R. 652s 652s > library("matrixStats") 652s > 652s > rowProds_R <- function(x, FUN = prod, na.rm = FALSE, ..., useNames = NA) { 652s + res <- apply(x, MARGIN = 1L, FUN = FUN, na.rm = na.rm) 652s + if (is.na(useNames) || !useNames) names(res) <- NULL 652s + res 652s + } 652s > 652s > all.equal.na <- function(target, current, ...) { 652s + # Computations involving NaN may return NaN or NA, cf. ?is.nan 652s + current[is.nan(current)] <- NA_real_ 652s + target[is.nan(target)] <- NA_real_ 652s + all.equal(target, current, ...) 652s + } 652s > 652s > for (mode in c("integer", "double")) { 652s + # Missing values 652s + x <- matrix(c(1, NA, NaN, 1, 1, 0, 1, 0), nrow = 4, ncol = 2) 652s + cat("mode: ", mode, "\n", sep = "") 652s + storage.mode(x) <- mode 652s + str(x) 652s + 652s + # To check names attribute 652s + dimnames <- list(letters[1:4], LETTERS[1:2]) 652s + 652s + # Test with and without dimnames on x 652s + for (setDimnames in c(TRUE, FALSE)) { 652s + if (setDimnames) dimnames(x) <- dimnames 652s + else dimnames(x) <- NULL 652s + # Check names attribute 652s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 652s + y0 <- rowProds_R(x, na.rm = TRUE, useNames = useNames) 652s + print(y0) 652s + y1 <- rowProds(x, na.rm = TRUE, useNames = useNames) 652s + print(y1) 652s + y2 <- colProds(t(x), na.rm = TRUE, useNames = useNames) 652s + print(y2) 652s + stopifnot(all.equal(y1, y0)) 652s + stopifnot(all.equal(y2, y1)) 652s + 652s + # Missing values 652s + y0 <- rowProds_R(x, na.rm = FALSE, useNames = useNames) 652s + print(y0) 652s + y1 <- rowProds(x, na.rm = FALSE, useNames = useNames) 652s + print(y1) 652s + y2 <- colProds(t(x), na.rm = FALSE, useNames = useNames) 652s + print(y2) 652s + stopifnot(all.equal(y1, y0)) 652s + stopifnot(all.equal(y2, y1)) 652s + 652s + # "Empty" rows 652s + y0 <- rowProds_R(x[integer(0), , drop = FALSE], na.rm = FALSE, useNames = useNames) 652s + print(y0) 652s + y1 <- rowProds(x[integer(0), , drop = FALSE], na.rm = FALSE, useNames = useNames) 652s + print(y1) 652s + y2 <- colProds(t(x[integer(0), , drop = FALSE]), na.rm = FALSE, useNames = useNames) 652s + print(y2) 652s + stopifnot(all.equal.na(y1, y0)) 652s + stopifnot(all.equal(y2, y1)) 652s + stopifnot(length(y1) == 0L) 652s + 652s + # Using product() 652s + y1 <- rowProds(x, method = "expSumLog", na.rm = FALSE, useNames = useNames) 652s + print(y1) 652s + y2 <- colProds(t(x), method = "expSumLog", na.rm = FALSE, useNames = useNames) 652s + print(y2) 652s + stopifnot(all.equal(y2, y1)) 652s + } 652s + } 652s + } # for (mode ...) 652s mode: integer 652s int [1:4, 1:2] 1 NA NA 1 1 0 1 0 652s a b c d 652s 1 0 1 0 652s a b c d 652s 1 0 1 0 652s a b c d 652s 1 0 1 0 652s a b c d 652s 1 NA NA 0 652s a b c d 652s 1 NA NA 0 652s a b c d 652s 1 NA NA 0 652s numeric(0) 652s numeric(0) 652s numeric(0) 652s a b c d 652s 1 NA NA 0 652s a b c d 652s 1 NA NA 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s numeric(0) 652s numeric(0) 652s numeric(0) 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s numeric(0) 652s numeric(0) 652s numeric(0) 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s numeric(0) 652s numeric(0) 652s numeric(0) 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s mode: double 652s num [1:4, 1:2] 1 NA NaN 1 1 0 1 0 652s a b c d 652s 1 0 1 0 652s a b c d 652s 1 0 1 0 652s a b c d 652s 1 0 1 0 652s a b c d 652s 1 NA NaN 0 652s a b c d 652s 1 NA NaN 0 652s a b c d 652s 1 NA NaN 0 652s numeric(0) 652s numeric(0) 652s numeric(0) 652s a b c d 652s 1 NA NA 0 652s a b c d 652s 1 NA NA 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 NA NaN 0 652s [1] 1 NA NaN 0 652s [1] 1 NA NaN 0 652s numeric(0) 652s numeric(0) 652s numeric(0) 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 NA NaN 0 652s [1] 1 NA NaN 0 652s [1] 1 NA NaN 0 652s numeric(0) 652s numeric(0) 652s numeric(0) 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 0 1 0 652s [1] 1 NA NaN 0 652s [1] 1 NA NaN 0 652s [1] 1 NA NaN 0 652s numeric(0) 652s numeric(0) 652s numeric(0) 652s [1] 1 NA NA 0 652s [1] 1 NA NA 0 652s > 652s > 652s > # Bug report 2012-06-25 652s > x <- matrix(c(1, 1, 1, 1, 1, 0, 1, 0), nrow = 4, ncol = 2) 652s > y0 <- rowProds_R(x) 652s > print(y0) 652s [1] 1 0 1 0 652s > y1 <- rowProds(x) 652s > print(y1) 652s [1] 1 0 1 0 652s > y2 <- colProds(t(x)) 652s > print(y2) 652s [1] 1 0 1 0 652s > stopifnot(all.equal.na(y1, y0)) 652s > stopifnot(all.equal.na(y1, x[, 1] * x[, 2])) 652s > stopifnot(all.equal.na(y2, y1)) 652s > # Check names attribute 652s > dimnames(x) <- dimnames 652s > y0 <- rowProds_R(x, useNames = TRUE) 652s > print(y0) 652s a b c d 652s 1 0 1 0 652s > y1 <- rowProds(x, useNames = TRUE) 652s > print(y1) 652s a b c d 652s 1 0 1 0 652s > y2 <- colProds(t(x), useNames = TRUE) 652s > print(y2) 652s a b c d 652s 1 0 1 0 652s > stopifnot(all.equal.na(y1, y0)) 652s > stopifnot(all.equal.na(y1, x[, 1] * x[, 2])) 652s > stopifnot(all.equal.na(y2, y1)) 652s > 652s > # Bug report 2014-03-25 ("all rows contains a zero") 652s > x <- matrix(c(0, 1, 1, 0), nrow = 2, ncol = 2) 652s > # To check names attribute 652s > dimnames <- list(letters[1:2], LETTERS[1:2]) 652s > y0 <- rowProds_R(x) 652s > print(y0) 652s [1] 0 0 652s > y1 <- rowProds(x) 652s > print(y1) 652s [1] 0 0 652s > y2 <- colProds(t(x)) 652s > print(y2) 652s [1] 0 0 652s > stopifnot(all.equal.na(y1, y0)) 652s > stopifnot(all.equal.na(y1, c(0, 0))) 652s > stopifnot(all.equal.na(y2, y1)) 652s > # Check names attribute 652s > dimnames(x) <- dimnames 652s > y0 <- rowProds_R(x, useNames = TRUE) 652s > print(y0) 652s a b 652s 0 0 652s > y1 <- rowProds(x, useNames = TRUE) 652s > print(y1) 652s a b 652s 0 0 652s > y2 <- colProds(t(x), useNames = TRUE) 652s > print(y2) 652s a b 652s 0 0 652s > stopifnot(all.equal.na(y1, y0)) 652s > stopifnot(all.equal.na(y2, y1)) 652s > 652s 652s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 652s Copyright (C) 2024 The R Foundation for Statistical Computing 652s Platform: powerpc64le-unknown-linux-gnu (64-bit) 652s 652s R is free software and comes with ABSOLUTELY NO WARRANTY. 652s You are welcome to redistribute it under certain conditions. 652s Type 'license()' or 'licence()' for distribution details. 652s 652s R is a collaborative project with many contributors. 652s Type 'contributors()' for more information and 652s 'citation()' on how to cite R or R packages in publications. 652s 652s Type 'demo()' for some demos, 'help()' for on-line help, or 652s 'help.start()' for an HTML browser interface to help. 652s Type 'q()' to quit R. 652s 652s > library("matrixStats") 652s > 652s > rowProds_R <- function(x, FUN = prod, na.rm = FALSE, ..., useNames = NA) { 652s + res <- apply(x, MARGIN = 1L, FUN = FUN, na.rm = na.rm) 652s + if (is.na(useNames) || !useNames) names(res) <- NULL 652s + res 652s + } 652s > 652s > 652s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 652s > # Subsetted tests 652s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 652s > source("utils/validateIndicesFramework.R") 652s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 652s > storage.mode(x) <- "integer" 652s > 652s > # To check names attribute 652s > dimnames <- list(letters[1:6], LETTERS[1:6]) 652s > 652s > # Test with and without dimnames on x 652s > for (setDimnames in c(TRUE, FALSE)) { 652s + if (setDimnames) dimnames(x) <- dimnames 652s + else dimnames(x) <- NULL 652s + for (rows in index_cases) { 652s + for (cols in index_cases) { 652s + for (na.rm in c(TRUE, FALSE)) { 652s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 652s + validateIndicesTestMatrix(x, rows, cols, 652s + ftest = rowProds, fsure = rowProds_R, 652s + method = "expSumLog", 652s + FUN = product, na.rm = na.rm, useNames = useNames) 652s + validateIndicesTestMatrix(x, rows, cols, 652s + fcoltest = colProds, fsure = rowProds_R, 652s + method = "expSumLog", 652s + FUN = product, na.rm = na.rm, useNames = useNames) 652s + } 652s + } 652s + } 652s + } 652s + } 653s > 653s 653s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 653s Copyright (C) 2024 The R Foundation for Statistical Computing 653s Platform: powerpc64le-unknown-linux-gnu (64-bit) 653s 653s R is free software and comes with ABSOLUTELY NO WARRANTY. 653s You are welcome to redistribute it under certain conditions. 653s Type 'license()' or 'licence()' for distribution details. 653s 653s R is a collaborative project with many contributors. 653s Type 'contributors()' for more information and 653s 'citation()' on how to cite R or R packages in publications. 653s 653s Type 'demo()' for some demos, 'help()' for on-line help, or 653s 'help.start()' for an HTML browser interface to help. 653s Type 'q()' to quit R. 653s 653s > library("matrixStats") 653s > 653s > ## Create isFALSE() if running on an old version of R 653s > if (!exists("isFALSE", mode="function")) { 653s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 653s + } 653s > 653s > rowQuantiles_R <- function(x, probs = c(0, 0.25, 0.50, 0.75, 1), na.rm = FALSE, drop = TRUE, type = 7L, ..., useNames = NA) { 653s + q <- apply(x, MARGIN = 1L, FUN = function(x, probs, na.rm) { 653s + if (!na.rm && any(is.na(x))) { 653s + na_value <- NA_real_ 653s + if (type != 7L) storage.mode(na_value) <- storage.mode(x) 653s + rep(na_value, times = length(probs)) 653s + } else { 653s + as.vector(quantile(x, probs = probs, na.rm = na.rm, type = type, names = FALSE, ...)) 653s + } 653s + }, probs = probs, na.rm = na.rm) 653s + 653s + if (!is.null(dim(q))) q <- t(q) 653s + else dim(q) <- c(nrow(x), length(probs)) 653s + 653s + colnames(q) <- matrixStats:::quantile_probs_names(probs) 653s + rownames(q) <- rownames(x) 653s + if (isFALSE(useNames)) dimnames(q) <- NULL 653s + 653s + if (drop) q <- drop(q) 653s + q 653s + } 653s > 653s > 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > # Test with multiple quantiles 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > for (mode in c("logical", "integer", "double")) { 653s + cat("mode: ", mode, "\n", sep = "") 653s + x <- matrix(1:40 + 0.1, nrow = 8, ncol = 5) 653s + storage.mode(x) <- mode 653s + dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 653s + str(x) 653s + 653s + probs <- c(0, 0.5, 1) 653s + # Test with and without dimnames on x 653s + for (setDimnames in c(TRUE, FALSE)) { 653s + if (setDimnames) dimnames(x) <- dimnames 653s + else dimnames(x) <- NULL 653s + # Check names attribute 653s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 653s + q0 <- rowQuantiles_R(x, probs = probs, useNames = useNames) 653s + print(q0) 653s + q1 <- rowQuantiles(x, probs = probs, useNames = useNames) 653s + print(q1) 653s + ## FIXME: Workaround for R (< 3.0.0) 653s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q1) <- storage.mode(q0) 653s + stopifnot(all.equal(q1, q0)) 653s + q2 <- colQuantiles(t(x), probs = probs, useNames = useNames) 653s + ## FIXME: Workaround for R (< 3.0.0) 653s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q2) <- storage.mode(q0) 653s + stopifnot(all.equal(q2, q0)) 653s + } 653s + } 653s + } # for (mode ...) 653s mode: logical 653s logi [1:8, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 653s 0% 50% 100% 653s a 1 1 1 653s b 1 1 1 653s c 1 1 1 653s d 1 1 1 653s e 1 1 1 653s f 1 1 1 653s g 1 1 1 653s h 1 1 1 653s 0% 50% 100% 653s a 1 1 1 653s b 1 1 1 653s c 1 1 1 653s d 1 1 1 653s e 1 1 1 653s f 1 1 1 653s g 1 1 1 653s h 1 1 1 653s [,1] [,2] [,3] 653s [1,] 1 1 1 653s [2,] 1 1 1 653s [3,] 1 1 1 653s [4,] 1 1 1 653s [5,] 1 1 1 653s [6,] 1 1 1 653s [7,] 1 1 1 653s [8,] 1 1 1 653s [,1] [,2] [,3] 653s [1,] 1 1 1 653s [2,] 1 1 1 653s [3,] 1 1 1 653s [4,] 1 1 1 653s [5,] 1 1 1 653s [6,] 1 1 1 653s [7,] 1 1 1 653s [8,] 1 1 1 653s 0% 50% 100% 653s [1,] 1 1 1 653s [2,] 1 1 1 653s [3,] 1 1 1 653s [4,] 1 1 1 653s [5,] 1 1 1 653s [6,] 1 1 1 653s [7,] 1 1 1 653s [8,] 1 1 1 653s 0% 50% 100% 653s [1,] 1 1 1 653s [2,] 1 1 1 653s [3,] 1 1 1 653s [4,] 1 1 1 653s [5,] 1 1 1 653s [6,] 1 1 1 653s [7,] 1 1 1 653s [8,] 1 1 1 653s [,1] [,2] [,3] 653s [1,] 1 1 1 653s [2,] 1 1 1 653s [3,] 1 1 1 653s [4,] 1 1 1 653s [5,] 1 1 1 653s [6,] 1 1 1 653s [7,] 1 1 1 653s [8,] 1 1 1 653s [,1] [,2] [,3] 653s [1,] 1 1 1 653s [2,] 1 1 1 653s [3,] 1 1 1 653s [4,] 1 1 1 653s [5,] 1 1 1 653s [6,] 1 1 1 653s [7,] 1 1 1 653s [8,] 1 1 1 653s mode: integer 653s int [1:8, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 653s 0% 50% 100% 653s a 1 17 33 653s b 2 18 34 653s c 3 19 35 653s d 4 20 36 653s e 5 21 37 653s f 6 22 38 653s g 7 23 39 653s h 8 24 40 653s 0% 50% 100% 653s a 1 17 33 653s b 2 18 34 653s c 3 19 35 653s d 4 20 36 653s e 5 21 37 653s f 6 22 38 653s g 7 23 39 653s h 8 24 40 653s [,1] [,2] [,3] 653s [1,] 1 17 33 653s [2,] 2 18 34 653s [3,] 3 19 35 653s [4,] 4 20 36 653s [5,] 5 21 37 653s [6,] 6 22 38 653s [7,] 7 23 39 653s [8,] 8 24 40 653s [,1] [,2] [,3] 653s [1,] 1 17 33 653s [2,] 2 18 34 653s [3,] 3 19 35 653s [4,] 4 20 36 653s [5,] 5 21 37 653s [6,] 6 22 38 653s [7,] 7 23 39 653s [8,] 8 24 40 653s 0% 50% 100% 653s [1,] 1 17 33 653s [2,] 2 18 34 653s [3,] 3 19 35 653s [4,] 4 20 36 653s [5,] 5 21 37 653s [6,] 6 22 38 653s [7,] 7 23 39 653s [8,] 8 24 40 653s 0% 50% 100% 653s [1,] 1 17 33 653s [2,] 2 18 34 653s [3,] 3 19 35 653s [4,] 4 20 36 653s [5,] 5 21 37 653s [6,] 6 22 38 653s [7,] 7 23 39 653s [8,] 8 24 40 653s [,1] [,2] [,3] 653s [1,] 1 17 33 653s [2,] 2 18 34 653s [3,] 3 19 35 653s [4,] 4 20 36 653s [5,] 5 21 37 653s [6,] 6 22 38 653s [7,] 7 23 39 653s [8,] 8 24 40 653s [,1] [,2] [,3] 653s [1,] 1 17 33 653s [2,] 2 18 34 653s [3,] 3 19 35 653s [4,] 4 20 36 653s [5,] 5 21 37 653s [6,] 6 22 38 653s [7,] 7 23 39 653s [8,] 8 24 40 653s mode: double 653s 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 ... 653s 0% 50% 100% 653s a 1.1 17.1 33.1 653s b 2.1 18.1 34.1 653s c 3.1 19.1 35.1 653s d 4.1 20.1 36.1 653s e 5.1 21.1 37.1 653s f 6.1 22.1 38.1 653s g 7.1 23.1 39.1 653s h 8.1 24.1 40.1 653s 0% 50% 100% 653s a 1.1 17.1 33.1 653s b 2.1 18.1 34.1 653s c 3.1 19.1 35.1 653s d 4.1 20.1 36.1 653s e 5.1 21.1 37.1 653s f 6.1 22.1 38.1 653s g 7.1 23.1 39.1 653s h 8.1 24.1 40.1 653s [,1] [,2] [,3] 653s [1,] 1.1 17.1 33.1 653s [2,] 2.1 18.1 34.1 653s [3,] 3.1 19.1 35.1 653s [4,] 4.1 20.1 36.1 653s [5,] 5.1 21.1 37.1 653s [6,] 6.1 22.1 38.1 653s [7,] 7.1 23.1 39.1 653s [8,] 8.1 24.1 40.1 653s [,1] [,2] [,3] 653s [1,] 1.1 17.1 33.1 653s [2,] 2.1 18.1 34.1 653s [3,] 3.1 19.1 35.1 653s [4,] 4.1 20.1 36.1 653s [5,] 5.1 21.1 37.1 653s [6,] 6.1 22.1 38.1 653s [7,] 7.1 23.1 39.1 653s [8,] 8.1 24.1 40.1 653s 0% 50% 100% 653s [1,] 1.1 17.1 33.1 653s [2,] 2.1 18.1 34.1 653s [3,] 3.1 19.1 35.1 653s [4,] 4.1 20.1 36.1 653s [5,] 5.1 21.1 37.1 653s [6,] 6.1 22.1 38.1 653s [7,] 7.1 23.1 39.1 653s [8,] 8.1 24.1 40.1 653s 0% 50% 100% 653s [1,] 1.1 17.1 33.1 653s [2,] 2.1 18.1 34.1 653s [3,] 3.1 19.1 35.1 653s [4,] 4.1 20.1 36.1 653s [5,] 5.1 21.1 37.1 653s [6,] 6.1 22.1 38.1 653s [7,] 7.1 23.1 39.1 653s [8,] 8.1 24.1 40.1 653s [,1] [,2] [,3] 653s [1,] 1.1 17.1 33.1 653s [2,] 2.1 18.1 34.1 653s [3,] 3.1 19.1 35.1 653s [4,] 4.1 20.1 36.1 653s [5,] 5.1 21.1 37.1 653s [6,] 6.1 22.1 38.1 653s [7,] 7.1 23.1 39.1 653s [8,] 8.1 24.1 40.1 653s [,1] [,2] [,3] 653s [1,] 1.1 17.1 33.1 653s [2,] 2.1 18.1 34.1 653s [3,] 3.1 19.1 35.1 653s [4,] 4.1 20.1 36.1 653s [5,] 5.1 21.1 37.1 653s [6,] 6.1 22.1 38.1 653s [7,] 7.1 23.1 39.1 653s [8,] 8.1 24.1 40.1 653s > 653s > 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > # Test with a single quantile 653s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 653s > for (mode in c("logical", "integer", "double")) { 653s + cat("mode: ", mode, "\n", sep = "") 653s + x <- matrix(1:40, nrow = 8, ncol = 5) 653s + storage.mode(x) <- mode 653s + dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 653s + str(x) 653s + 653s + probs <- c(0.5) 653s + # Test with and without dimnames on x 653s + for (setDimnames in c(TRUE, FALSE)) { 653s + if (setDimnames) dimnames(x) <- dimnames 653s + else dimnames(x) <- NULL 653s + # Check names attribute 653s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 653s + q0 <- rowQuantiles_R(x, probs = probs, useNames = useNames) 653s + print(q0) 653s + q1 <- rowQuantiles(x, probs = probs, useNames = useNames) 653s + ## FIXME: Workaround for R (< 3.0.0) 653s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q1) <- storage.mode(q0) 653s + print(q1) 653s + stopifnot(all.equal(q1, q0)) 653s + q2 <- colQuantiles(t(x), probs = probs, useNames = useNames) 653s + ## FIXME: Workaround for R (< 3.0.0) 653s + if (getRversion() < "3.0.0" && mode == "logical") storage.mode(q2) <- storage.mode(q0) 653s + stopifnot(all.equal(q2, q0)) 653s + } 653s + } 653s + } # for (mode ...) 653s mode: logical 653s logi [1:8, 1:5] TRUE TRUE TRUE TRUE TRUE TRUE ... 653s a b c d e f g h 653s 1 1 1 1 1 1 1 1 653s a b c d e f g h 653s 1 1 1 1 1 1 1 1 653s [1] 1 1 1 1 1 1 1 1 653s [1] 1 1 1 1 1 1 1 1 653s [1] 1 1 1 1 1 1 1 1 653s [1] 1 1 1 1 1 1 1 1 653s [1] 1 1 1 1 1 1 1 1 653s [1] 1 1 1 1 1 1 1 1 653s mode: integer 653s int [1:8, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 653s a b c d e f g h 654s 17 18 19 20 21 22 23 24 654s a b c d e f g h 654s 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s mode: double 654s num [1:8, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 654s a b c d e f g h 654s 17 18 19 20 21 22 23 24 654s a b c d e f g h 654s 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s [1] 17 18 19 20 21 22 23 24 654s > 654s > 654s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 654s > # Consistency checks 654s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 654s > set.seed(1) 654s > 654s > probs <- seq(from = 0, to = 1, by = 0.25) 654s > 654s > cat("Consistency checks:\n") 654s Consistency checks: 654s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 6L else 24L 654s > for (kk in seq_len(n_sims)) { 654s + cat("Random test #", kk, "\n", sep = "") 654s + 654s + # Simulate data in a matrix of any shape 654s + dim <- sample(20:60, size = 2L) 654s + n <- prod(dim) 654s + x <- rnorm(n, sd = 100) 654s + dim(x) <- dim 654s + dimnames <- lapply(dim(x), FUN = function(n) rep(letters, length.out = n)) 654s + 654s + # Add NAs? 654s + has_na <- ((kk %% 2) == 0L) 654s + if (has_na) { 654s + cat("Adding NAs\n") 654s + nna <- sample(n, size = 1) 654s + na_values <- c(NA_real_, NaN) 654s + t <- sample(na_values, size = nna, replace = TRUE) 654s + x[sample(length(x), size = nna)] <- t 654s + } 654s + 654s + # Logical, integer, or double? 654s + mode <- "numeric" 654s + if ((kk %% 6) %in% 1:2) { 654s + cat("Coercing to logical\n") 654s + mode <- "logical" 654s + } else if ((kk %% 6) %in% 3:4) { 654s + cat("Coercing to integers\n") 654s + mode <- "integer" 654s + } 654s + storage.mode(x) <- mode 654s + 654s + str(x) 654s + 654s + # rowQuantiles(): 654s + for (type in 1:9) { 654s + cat(sprintf("type=%d, has_na=%s:\n", type, has_na)) 654s + # Test with and without dimnames on x 654s + for (setDimnames in c(TRUE, FALSE)) { 654s + if (setDimnames) dimnames(x) <- dimnames 654s + else dimnames(x) <- NULL 654s + # Check names attribute 654s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 654s + q0 <- rowQuantiles_R(x, probs = probs, na.rm = has_na, type = type, useNames = useNames) 654s + q1 <- rowQuantiles(x, probs = probs, na.rm = has_na, type = type, useNames = useNames) 654s + ## FIXME: Workaround for R (< 3.0.0) 654s + if (getRversion() < "3.0.0" && mode == "logical" && !has_na && type == 7L) storage.mode(q1) <- storage.mode(q0) 654s + stopifnot(all.equal(q1, q0)) 654s + q2 <- colQuantiles(t(x), probs = probs, na.rm = has_na, type = type, useNames = useNames) 654s + ## FIXME: Workaround for R (< 3.0.0) 654s + if (getRversion() < "3.0.0" && mode == "logical" && !has_na && type == 7L) storage.mode(q2) <- storage.mode(q0) 654s + stopifnot(all.equal(q2, q0)) 654s + } 654s + } 654s + } 654s + } # for (kk ...) 654s Random test #1 654s Coercing to logical 654s logi [1:23, 1:58] TRUE TRUE TRUE TRUE TRUE TRUE ... 654s type=1, has_na=FALSE: 654s type=2, has_na=FALSE: 654s type=3, has_na=FALSE: 654s type=4, has_na=FALSE: 654s type=5, has_na=FALSE: 654s type=6, has_na=FALSE: 654s type=7, has_na=FALSE: 654s type=8, has_na=FALSE: 654s type=9, has_na=FALSE: 654s Random test #2 654s Adding NAs 654s Coercing to logical 654s logi [1:58, 1:33] TRUE TRUE TRUE TRUE TRUE NA ... 654s type=1, has_na=TRUE: 654s type=2, has_na=TRUE: 654s type=3, has_na=TRUE: 654s type=4, has_na=TRUE: 654s type=5, has_na=TRUE: 654s type=6, has_na=TRUE: 654s type=7, has_na=TRUE: 655s type=8, has_na=TRUE: 655s type=9, has_na=TRUE: 655s Random test #3 655s Coercing to integers 655s int [1:28, 1:60] 119 -164 115 -129 209 -175 2 -32 120 -28 ... 655s type=1, has_na=FALSE: 655s type=2, has_na=FALSE: 655s type=3, has_na=FALSE: 655s type=4, has_na=FALSE: 655s type=5, has_na=FALSE: 655s type=6, has_na=FALSE: 655s type=7, has_na=FALSE: 655s type=8, has_na=FALSE: 655s type=9, has_na=FALSE: 655s Random test #4 655s Adding NAs 655s Coercing to integers 655s int [1:54, 1:35] 147 11 116 -50 NA -69 132 NA 114 NA ... 655s type=1, has_na=TRUE: 655s type=2, has_na=TRUE: 655s type=3, has_na=TRUE: 655s type=4, has_na=TRUE: 655s type=5, has_na=TRUE: 655s type=6, has_na=TRUE: 655s type=7, has_na=TRUE: 655s type=8, has_na=TRUE: 655s type=9, has_na=TRUE: 655s Random test #5 655s num [1:39, 1:53] 5.94 -27.16 -30.78 173 126.05 ... 655s type=1, has_na=FALSE: 656s type=2, has_na=FALSE: 656s type=3, has_na=FALSE: 656s type=4, has_na=FALSE: 656s type=5, has_na=FALSE: 656s type=6, has_na=FALSE: 656s type=7, has_na=FALSE: 656s type=8, has_na=FALSE: 656s type=9, has_na=FALSE: 656s Random test #6 656s Adding NAs 656s num [1:46, 1:22] 197 -107 15 148 -110 ... 656s type=1, has_na=TRUE: 656s type=2, has_na=TRUE: 656s type=3, has_na=TRUE: 656s type=4, has_na=TRUE: 656s type=5, has_na=TRUE: 656s type=6, has_na=TRUE: 656s type=7, has_na=TRUE: 656s type=8, has_na=TRUE: 656s type=9, has_na=TRUE: 656s Random test #7 656s Coercing to logical 656s logi [1:21, 1:51] TRUE TRUE TRUE TRUE TRUE TRUE ... 656s type=1, has_na=FALSE: 657s type=2, has_na=FALSE: 657s type=3, has_na=FALSE: 657s type=4, has_na=FALSE: 657s type=5, has_na=FALSE: 657s type=6, has_na=FALSE: 657s type=7, has_na=FALSE: 657s type=8, has_na=FALSE: 657s type=9, has_na=FALSE: 657s Random test #8 657s Adding NAs 657s Coercing to logical 657s logi [1:33, 1:53] NA NA TRUE TRUE TRUE TRUE ... 657s type=1, has_na=TRUE: 657s type=2, has_na=TRUE: 657s type=3, has_na=TRUE: 657s type=4, has_na=TRUE: 658s type=5, has_na=TRUE: 658s type=6, has_na=TRUE: 658s type=7, has_na=TRUE: 658s type=8, has_na=TRUE: 658s type=9, has_na=TRUE: 658s Random test #9 658s Coercing to integers 658s int [1:53, 1:24] -73 10 -73 -5 44 -107 -100 95 58 -50 ... 658s type=1, has_na=FALSE: 658s type=2, has_na=FALSE: 658s type=3, has_na=FALSE: 658s type=4, has_na=FALSE: 658s type=5, has_na=FALSE: 658s type=6, has_na=FALSE: 658s type=7, has_na=FALSE: 658s type=8, has_na=FALSE: 658s type=9, has_na=FALSE: 658s Random test #10 658s Adding NAs 658s Coercing to integers 658s int [1:44, 1:20] NA -140 NA -57 -252 NA NA 20 NA NA ... 658s type=1, has_na=TRUE: 658s type=2, has_na=TRUE: 658s type=3, has_na=TRUE: 658s type=4, has_na=TRUE: 658s type=5, has_na=TRUE: 658s type=6, has_na=TRUE: 658s type=7, has_na=TRUE: 658s type=8, has_na=TRUE: 658s type=9, has_na=TRUE: 658s Random test #11 658s num [1:54, 1:23] -160.87 74.13 196.08 7.27 4.92 ... 658s type=1, has_na=FALSE: 658s type=2, has_na=FALSE: 658s type=3, has_na=FALSE: 658s type=4, has_na=FALSE: 659s type=5, has_na=FALSE: 659s type=6, has_na=FALSE: 659s type=7, has_na=FALSE: 659s type=8, has_na=FALSE: 659s type=9, has_na=FALSE: 659s Random test #12 659s Adding NAs 659s num [1:59, 1:27] -139.2 -86.3 NA -40.7 NA ... 659s type=1, has_na=TRUE: 659s type=2, has_na=TRUE: 659s type=3, has_na=TRUE: 659s type=4, has_na=TRUE: 659s type=5, has_na=TRUE: 659s type=6, has_na=TRUE: 659s type=7, has_na=TRUE: 659s type=8, has_na=TRUE: 660s type=9, has_na=TRUE: 660s Random test #13 660s Coercing to logical 660s logi [1:53, 1:60] TRUE TRUE TRUE TRUE TRUE TRUE ... 660s type=1, has_na=FALSE: 660s type=2, has_na=FALSE: 660s type=3, has_na=FALSE: 660s type=4, has_na=FALSE: 660s type=5, has_na=FALSE: 660s type=6, has_na=FALSE: 660s type=7, has_na=FALSE: 660s type=8, has_na=FALSE: 660s type=9, has_na=FALSE: 660s Random test #14 660s Adding NAs 660s Coercing to logical 660s logi [1:22, 1:57] TRUE TRUE TRUE TRUE TRUE TRUE ... 660s type=1, has_na=TRUE: 660s type=2, has_na=TRUE: 660s type=3, has_na=TRUE: 660s type=4, has_na=TRUE: 660s type=5, has_na=TRUE: 660s type=6, has_na=TRUE: 660s type=7, has_na=TRUE: 660s type=8, has_na=TRUE: 660s type=9, has_na=TRUE: 660s Random test #15 660s Coercing to integers 660s int [1:20, 1:34] 78 -41 183 190 -71 37 0 -4 -86 27 ... 660s type=1, has_na=FALSE: 660s type=2, has_na=FALSE: 660s type=3, has_na=FALSE: 661s type=4, has_na=FALSE: 661s type=5, has_na=FALSE: 661s type=6, has_na=FALSE: 661s type=7, has_na=FALSE: 661s type=8, has_na=FALSE: 661s type=9, has_na=FALSE: 661s Random test #16 661s Adding NAs 661s Coercing to integers 661s int [1:42, 1:37] NA 12 -15 41 -28 17 NA -74 NA NA ... 661s type=1, has_na=TRUE: 661s type=2, has_na=TRUE: 661s type=3, has_na=TRUE: 661s type=4, has_na=TRUE: 661s type=5, has_na=TRUE: 661s type=6, has_na=TRUE: 661s type=7, has_na=TRUE: 661s type=8, has_na=TRUE: 661s type=9, has_na=TRUE: 661s Random test #17 661s num [1:42, 1:29] -50.51 -6.51 -117.59 135.58 226.87 ... 661s type=1, has_na=FALSE: 661s type=2, has_na=FALSE: 661s type=3, has_na=FALSE: 661s type=4, has_na=FALSE: 661s type=5, has_na=FALSE: 661s type=6, has_na=FALSE: 662s type=7, has_na=FALSE: 662s type=8, has_na=FALSE: 662s type=9, has_na=FALSE: 662s Random test #18 662s Adding NAs 662s num [1:57, 1:39] 223 156.8 -44.6 -127.5 -147.7 ... 662s type=1, has_na=TRUE: 662s type=2, has_na=TRUE: 662s type=3, has_na=TRUE: 662s type=4, has_na=TRUE: 662s type=5, has_na=TRUE: 662s type=6, has_na=TRUE: 662s type=7, has_na=TRUE: 662s type=8, has_na=TRUE: 662s type=9, has_na=TRUE: 662s Random test #19 662s Coercing to logical 662s logi [1:52, 1:57] TRUE TRUE TRUE TRUE TRUE TRUE ... 662s type=1, has_na=FALSE: 662s type=2, has_na=FALSE: 662s type=3, has_na=FALSE: 662s type=4, has_na=FALSE: 663s type=5, has_na=FALSE: 663s type=6, has_na=FALSE: 663s type=7, has_na=FALSE: 663s type=8, has_na=FALSE: 663s type=9, has_na=FALSE: 663s Random test #20 663s Adding NAs 663s Coercing to logical 663s logi [1:25, 1:48] NA TRUE NA NA NA NA ... 663s type=1, has_na=TRUE: 663s type=2, has_na=TRUE: 663s type=3, has_na=TRUE: 663s type=4, has_na=TRUE: 663s type=5, has_na=TRUE: 663s type=6, has_na=TRUE: 663s type=7, has_na=TRUE: 663s type=8, has_na=TRUE: 663s type=9, has_na=TRUE: 663s Random test #21 663s Coercing to integers 663s int [1:53, 1:27] 3 -30 203 -49 19 -45 -138 28 46 -44 ... 663s type=1, has_na=FALSE: 663s type=2, has_na=FALSE: 663s type=3, has_na=FALSE: 663s type=4, has_na=FALSE: 663s type=5, has_na=FALSE: 663s type=6, has_na=FALSE: 664s type=7, has_na=FALSE: 664s type=8, has_na=FALSE: 664s type=9, has_na=FALSE: 664s Random test #22 664s Adding NAs 664s Coercing to integers 664s int [1:48, 1:36] -131 NA NA -201 45 -17 NA 57 NA NA ... 664s type=1, has_na=TRUE: 664s type=2, has_na=TRUE: 664s type=3, has_na=TRUE: 664s type=4, has_na=TRUE: 664s type=5, has_na=TRUE: 664s type=6, has_na=TRUE: 664s type=7, has_na=TRUE: 664s type=8, has_na=TRUE: 664s type=9, has_na=TRUE: 664s Random test #23 664s num [1:23, 1:43] -99.2 -68.8 -86.7 -104.2 48 ... 664s type=1, has_na=FALSE: 664s type=2, has_na=FALSE: 664s type=3, has_na=FALSE: 664s type=4, has_na=FALSE: 664s type=5, has_na=FALSE: 664s type=6, has_na=FALSE: 664s type=7, has_na=FALSE: 665s type=8, has_na=FALSE: 665s type=9, has_na=FALSE: 665s Random test #24 665s Adding NAs 665s num [1:53, 1:29] NaN -67.6 10.8 -88.4 130.1 ... 665s type=1, has_na=TRUE: 665s type=2, has_na=TRUE: 665s type=3, has_na=TRUE: 665s type=4, has_na=TRUE: 665s type=5, has_na=TRUE: 665s type=6, has_na=TRUE: 665s type=7, has_na=TRUE: 665s type=8, has_na=TRUE: 665s type=9, has_na=TRUE: 665s > 665s > 665s > 665s > for (mode in c("logical", "integer", "double")) { 665s + naValue <- NA_real_ 665s + storage.mode(naValue) <- mode 665s + 665s + someValue <- 1 665s + storage.mode(someValue) <- mode 665s + 665s + for (type in 1:9) { 665s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s + # All NA 665s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s + x <- matrix(naValue, nrow = 3L, ncol = 4L) 665s + dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 665s + # Test with and without dimnames on x 665s + for (setDimnames in c(TRUE, FALSE)) { 665s + if (setDimnames) dimnames(x) <- dimnames 665s + else dimnames(x) <- NULL 665s + # Check names attribute 665s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 665s + qr0 <- rowQuantiles_R(x, type = type, useNames = useNames) 665s + 665s + qr <- rowQuantiles(x, type = type, useNames = useNames) 665s + stopifnot(identical(qr, qr0)) 665s + 665s + # x <- matrix(naValue, nrow = 4L, ncol = 3L) 665s + qc <- colQuantiles(t(x), type = type, useNames = useNames) 665s + 665s + stopifnot(identical(qc, qr)) 665s + } 665s + } 665s + 665s + 665s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s + # Empty matrices 665s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s + probs <- c(0, 0.25, 0.75, 1) 665s + x <- matrix(naValue, nrow = 0L, ncol = 0L) 665s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 665s + q <- rowQuantiles(x, probs = probs, type = type, useNames = TRUE) 665s + stopifnot(identical(dim(q), c(nrow(x), length(probs)))) 665s + q <- colQuantiles(x, probs = probs, type = type, useNames = TRUE) 665s + stopifnot(identical(dim(q), c(ncol(x), length(probs)))) 665s + 665s + x <- matrix(naValue, nrow = 2L, ncol = 0L) 665s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 665s + q <- rowQuantiles(x, probs = probs, type = type, useNames = TRUE) 665s + stopifnot(identical(dim(q), c(nrow(x), length(probs)))) 665s + 665s + x <- matrix(naValue, nrow = 0L, ncol = 2L) 665s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 665s + q <- colQuantiles(x, probs = probs, type = type, useNames = TRUE) 665s + stopifnot(identical(dim(q), c(ncol(x), length(probs)))) 665s + 665s + 665s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s + # Single column matrices 665s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 665s + probs <- c(0, 0.25, 0.75, 1) 665s + x <- matrix(someValue, nrow = 2L, ncol = 1L) 665s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 665s + qr <- rowQuantiles(x, probs = probs, type = type, useNames = TRUE) 665s + print(qr) 665s + 665s + x <- matrix(someValue, nrow = 1L, ncol = 2L) 665s + dimnames(x) <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 665s + qc <- colQuantiles(x, probs = probs, type = type, useNames = TRUE) 665s + print(qc) 665s + 665s + stopifnot(identical(qc, qr)) 665s + } 665s + } 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s 0% 25% 75% 100% 665s a 1 1 1 1 665s b 1 1 1 1 665s > 665s 665s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 665s Copyright (C) 2024 The R Foundation for Statistical Computing 665s Platform: powerpc64le-unknown-linux-gnu (64-bit) 665s 665s R is free software and comes with ABSOLUTELY NO WARRANTY. 665s You are welcome to redistribute it under certain conditions. 665s Type 'license()' or 'licence()' for distribution details. 665s 665s R is a collaborative project with many contributors. 665s Type 'contributors()' for more information and 665s 'citation()' on how to cite R or R packages in publications. 665s 665s Type 'demo()' for some demos, 'help()' for on-line help, or 665s 'help.start()' for an HTML browser interface to help. 665s Type 'q()' to quit R. 665s 666s > library("matrixStats") 666s > 666s > ## Create isFALSE() if running on an old version of R 666s > if (!exists("isFALSE", mode="function")) { 666s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 666s + } 666s > 666s > rowQuantiles_R <- function(x, probs, na.rm = FALSE, drop = TRUE, ..., useNames = NA) { 666s + q <- apply(x, MARGIN = 1L, FUN = function(x, probs, na.rm) { 666s + if (!na.rm && any(is.na(x))) { 666s + na_value <- NA_real_ 666s + storage.mode(na_value) <- storage.mode(x) 666s + rep(na_value, times = length(probs)) 666s + 666s + } else { 666s + as.vector(quantile(x, probs = probs, na.rm = na.rm, names = FALSE, ...)) 666s + } 666s + }, probs = probs, na.rm = na.rm) 666s + 666s + if (!is.null(dim(q))) q <- t(q) 666s + else dim(q) <- c(nrow(x), length(probs)) 666s + 666s + colnames(q) <- matrixStats:::quantile_probs_names(probs) 666s + rownames(q) <- rownames(x) 666s + if (isFALSE(useNames)) dimnames(q) <- NULL 666s + 666s + if (drop) q <- drop(q) 666s + q 666s + } 666s > 666s > 666s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 666s > # Subsetted tests 666s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 666s > source("utils/validateIndicesFramework.R") 666s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 666s > dimnames <- lapply(dim(x), FUN = function(n) letters[seq_len(n)]) 666s > probs <- c(0, 0.25, 0.75, 1) 666s > # Test with and without dimnames on x 666s > for (setDimnames in c(TRUE, FALSE)) { 666s + if (setDimnames) dimnames(x) <- dimnames 666s + else dimnames(x) <- NULL 666s + 666s + count <- 0L 666s + for (rows in index_cases) { 666s + for (cols in index_cases) { 666s + count <- count + 1L 666s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 666s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 666s + useNames <- useNames[count %% length(useNames) + 1] 666s + 666s + validateIndicesTestMatrix(x, rows, cols, 666s + ftest = rowQuantiles, fsure = rowQuantiles_R, 666s + probs = probs, na.rm = na.rm, drop = FALSE, useNames = useNames) 666s + validateIndicesTestMatrix(x, rows, cols, 666s + fcoltest = colQuantiles, fsure = rowQuantiles_R, 666s + probs = probs, na.rm = na.rm, drop = FALSE, useNames = useNames) 666s + } 666s + } 666s + } 667s > 667s > 667s 667s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 667s Copyright (C) 2024 The R Foundation for Statistical Computing 667s Platform: powerpc64le-unknown-linux-gnu (64-bit) 667s 667s R is free software and comes with ABSOLUTELY NO WARRANTY. 667s You are welcome to redistribute it under certain conditions. 667s Type 'license()' or 'licence()' for distribution details. 667s 667s R is a collaborative project with many contributors. 667s Type 'contributors()' for more information and 667s 'citation()' on how to cite R or R packages in publications. 667s 667s Type 'demo()' for some demos, 'help()' for on-line help, or 667s 'help.start()' for an HTML browser interface to help. 667s Type 'q()' to quit R. 667s 667s > library("matrixStats") 667s > 667s > rowMins_R <- function(x, ..., useNames = NA) { 667s + suppressWarnings({ 667s + res <- apply(x, MARGIN = 1L, FUN = min, ...) 667s + }) 667s + if (is.na(useNames) || !useNames) names(res) <- NULL 667s + res 667s + } # rowMins_R() 667s > 667s > rowMaxs_R <- function(x, ..., useNames = NA) { 667s + suppressWarnings({ 667s + res <- apply(x, MARGIN = 1L, FUN = max, ...) 667s + }) 667s + if (is.na(useNames) || !useNames) names(res) <- NULL 667s + res 667s + } # rowMaxs_R() 667s > 667s > rowRanges_R <- function(x, ..., useNames = NA) { 667s + suppressWarnings({ 667s + ans <- t(apply(x, MARGIN = 1L, FUN = range, ...)) 667s + }) 667s + 667s + # Preserve rownames attribute 667s + dim <- c(dim(x)[1], 2L) 667s + if (!isTRUE(all.equal(dim(ans), dim))) { 667s + dim(ans) <- dim 667s + rownames <- rownames(x) 667s + if (!is.null(dimnames)) rownames(ans) <- rownames 667s + } 667s + if (is.na(useNames) || !useNames) dimnames(ans) <- NULL 667s + ans 667s + } # rowRanges_R() 667s > 667s > 667s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 667s > # With and without some NAs 667s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 667s > for (mode in c("integer", "double")) { 667s + cat("mode: ", mode, "\n", sep = "") 667s + 667s + for (add_na in c(FALSE, TRUE)) { 667s + cat("add_na = ", add_na, "\n", sep = "") 667s + 667s + x <- matrix(1:50 + 0.1, nrow = 10L, ncol = 5L) 667s + if (add_na) { 667s + x[3:7, c(2, 4)] <- NA_real_ 667s + } 667s + storage.mode(x) <- mode 667s + str(x) 667s + 667s + # To check names attribute 667s + dimnames <- list(letters[1:10], LETTERS[1:5]) 667s + 667s + # Test with and without dimnames on x 667s + for (setDimnames in c(TRUE, FALSE)) { 667s + if (setDimnames) dimnames(x) <- dimnames 667s + else dimnames(x) <- NULL 667s + # Row/column extremes 667s + for (na.rm in c(FALSE, TRUE)) { 667s + # Check names attribute 667s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 667s + cat("na.rm = ", na.rm, "\n", sep = "") 667s + 667s + # Ranges 667s + cat("range:\n") 667s + r0 <- rowRanges_R(x, na.rm = na.rm, useNames = useNames) 667s + r1 <- rowRanges(x, na.rm = na.rm, useNames = useNames) 667s + r2 <- colRanges(t(x), na.rm = na.rm, useNames = useNames) 667s + stopifnot(all.equal(r1, r2)) 667s + stopifnot(all.equal(r1, r0)) 667s + 667s + # Min 667s + cat("min:\n") 667s + m0 <- rowMins_R(x, na.rm = na.rm, useNames = useNames) 667s + m1 <- rowMins(x, na.rm = na.rm, useNames = useNames) 667s + m2 <- colMins(t(x), na.rm = na.rm, useNames = useNames) 667s + stopifnot(all.equal(m1, m2)) 667s + stopifnot(all.equal(m1, m0)) 667s + 667s + # Max 667s + cat("max:\n") 667s + m0 <- rowMaxs_R(x, na.rm = na.rm, useNames = useNames) 667s + m1 <- rowMaxs(x, na.rm = na.rm, useNames = useNames) 667s + m2 <- colMaxs(t(x), na.rm = na.rm, useNames = useNames) 667s + stopifnot(all.equal(m1, m2)) 667s + stopifnot(all.equal(m1, m0)) 667s + } 667s + } 667s + } 667s + } # for (add_na ...) 667s + } # for (mode ...) 667s mode: integer 667s add_na = FALSE 667s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s add_na = TRUE 667s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s mode: double 667s add_na = FALSE 667s 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 ... 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s add_na = TRUE 667s 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 ... 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = FALSE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s na.rm = TRUE 667s range: 667s min: 667s max: 667s > 667s > 667s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 667s > # All NAs 667s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 667s > for (mode in c("integer", "double")) { 667s + cat("mode: ", mode, "\n", sep = "") 667s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 667s + storage.mode(x) <- mode 667s + str(x) 667s + 667s + # Test with and without dimnames on x 667s + for (setDimnames in c(TRUE, FALSE)) { 667s + if (setDimnames) dimnames(x) <- dimnames 667s + else dimnames(x) <- NULL 667s + for (na.rm in c(FALSE, TRUE)) { 667s + # Check names attribute 667s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 667s + cat("na.rm = ", na.rm, "\n", sep = "") 667s + r0 <- rowRanges_R(x, na.rm = na.rm, useNames = useNames) 667s + r1 <- rowRanges(x, na.rm = na.rm, useNames = useNames) 667s + r2 <- colRanges(t(x), na.rm = na.rm, useNames = useNames) 667s + stopifnot(all.equal(r1, r2)) 667s + stopifnot(all.equal(r1, r0)) 667s + } 667s + } 667s + } 667s + } # for (mode ...) 667s mode: integer 667s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 667s na.rm = FALSE 667s na.rm = FALSE 667s na.rm = TRUE 667s na.rm = TRUE 667s na.rm = FALSE 667s na.rm = FALSE 667s na.rm = TRUE 667s na.rm = TRUE 667s mode: double 667s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 667s na.rm = FALSE 667s na.rm = FALSE 667s na.rm = TRUE 667s na.rm = TRUE 667s na.rm = FALSE 667s na.rm = FALSE 667s na.rm = TRUE 667s na.rm = TRUE 667s > 667s > 667s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 667s > # Special cases 667s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 667s > # Nx0 matrix 667s > x <- matrix(double(0L), nrow = 5L, ncol = 0L) 667s > r0 <- rowRanges_R(x) 667s > #r1 <- rowRanges(x) 667s > #r_truth <- matrix(c(Inf, -Inf), nrow = nrow(x), ncol = 2L, byrow = TRUE) 667s > #stopifnot(all.equal(r1, r_truth)) 667s > 667s > # 0xN matrix 667s > x <- t(x) 667s > #r1 <- colRanges(x) 667s > #stopifnot(all.equal(r1, r_truth)) 667s > 667s > # Nx1 matrix 667s > x <- matrix(1:5, nrow = 5L, ncol = 1L) 667s > # To check names attribute 667s > dimnames <- list(letters[1:5], "A") 667s > r1 <- rowRanges(x) 667s > r_truth <- matrix(1:5, nrow = nrow(x), ncol = 2L, byrow = FALSE) 667s > stopifnot(all.equal(r1, r_truth)) 667s > # Check names attribute 667s > dimnames(x) <- dimnames 667s > r0 <- rowRanges_R(x, useNames = TRUE) 667s > r1 <- rowRanges(x, useNames = TRUE) 667s > stopifnot(all.equal(r1, r0)) 667s > dimnames(x) <- NULL 667s > 667s > # 1xN matrix 667s > x <- t(x) 667s > r1 <- colRanges(x) 667s > stopifnot(all.equal(r1, r_truth)) 667s > # Check names attribute 667s > dimnames(x) <- list("a", LETTERS[1:5]) 667s > r1 <- colRanges(x, useNames = TRUE) 667s > stopifnot(identical(rownames(r1), colnames(x))) 667s > 667s > 667s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 667s > # Additional tests with NA_integer_, NA_real, NaN, -Inf, +Inf 667s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 667s > x <- matrix(1:12, nrow = 4L, ncol = 3L) 667s > 667s > na_list <- list( 667s + "integer" = matrix(1:12, nrow = 4L, ncol = 3L), 667s + "integer w/ NA" = matrix(NA_integer_, nrow = 4L, ncol = 3L), 667s + "real" = matrix(as.double(1:12), nrow = 4L, ncol = 3L), 667s + "real w/ NA" = matrix(NA_real_, nrow = 4L, ncol = 3L) 667s + ) 667s > 667s > na <- na_list[["real"]] 667s > na[2, 2] <- NA 667s > na_list[["real + NA cell"]] <- na 667s > 667s > na <- na_list[["real"]] 667s > na[2, ] <- NA 667s > na_list[["real + NA row"]] <- na 667s > 667s > na <- na_list[["real"]] 667s > na[2, ] <- NaN 667s > na_list[["real + NaN row"]] <- na 667s > 667s > na <- na_list[["real"]] 667s > na[2, 2] <- Inf 667s > na_list[["real + Inf cell"]] <- na 667s > 667s > na <- na_list[["real"]] 667s > na[2, ] <- Inf 667s > na_list[["real + Inf row"]] <- na 667s > 667s > na <- na_list[["real"]] 667s > na[2, 2] <- NaN 667s > na_list[["real + NaN cell"]] <- na 667s > 667s > na <- na_list[["real w/ NA"]] 667s > na[2, 2] <- NaN 667s > na_list[["real w/ NA + NaN cell"]] <- na 667s > 667s > na <- na_list[["real w/ NA"]] 667s > na[2, ] <- NaN 667s > na_list[["real w/ NA + NaN row"]] <- na 667s > 667s > # To check names attribute 667s > dimnames <- list(letters[1:4], LETTERS[1:3]) 667s > 667s > # Test with and without dimnames on x 667s > for (setDimnames in c(TRUE, FALSE)) { 667s + if (setDimnames) dimnames(x) <- dimnames 667s + else dimnames(x) <- NULL 667s + for (na.rm in c(FALSE, TRUE)) { 667s + for (name in names(na_list)) { 667s + # Check names attribute 667s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 667s + na <- na_list[[name]] 667s + cat(sprintf("%s (%s) w/ na.rm = %s:\n", name, typeof(na), na.rm)) 667s + print(na) 667s + 667s + cat(" min:\n") 667s + y0 <- rowMins_R(na, na.rm = na.rm, useNames = useNames) 667s + str(y0) 667s + y1 <- rowMins(na, na.rm = na.rm, useNames = useNames) 667s + str(y1) 667s + stopifnot(all.equal(y1, y0)) 667s + y1c <- colMins(t(na), na.rm = na.rm, useNames = useNames) 667s + str(y1c) 667s + stopifnot(all.equal(y1c, y1)) 667s + 667s + cat(" max:\n") 667s + y0 <- rowMaxs_R(na, na.rm = na.rm, useNames = useNames) 667s + str(y0) 667s + y1 <- rowMaxs(na, na.rm = na.rm, useNames = useNames) 667s + str(y1) 667s + stopifnot(all.equal(y1, y0)) 667s + y1c <- colMaxs(t(na), na.rm = na.rm, useNames = useNames) 667s + str(y1c) 667s + stopifnot(all.equal(y1c, y1)) 667s + 667s + cat(" range:\n") 667s + y0 <- rowRanges_R(na, na.rm = na.rm, useNames = useNames) 667s + str(y0) 667s + y1 <- rowRanges(na, na.rm = na.rm, useNames = useNames) 667s + str(y1) 667s + stopifnot(all.equal(y1, y0)) 667s + y1c <- colRanges(t(na), na.rm = na.rm, useNames = useNames) 667s + str(y1c) 667s + stopifnot(all.equal(y1c, y1)) 667s + } 667s + } # for (name ...) 667s + } # for (na.rm ...) 667s + } 667s integer (integer) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 6 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s int [1:4] 1 2 3 4 667s int [1:4] 1 2 3 4 667s int [1:4] 1 2 3 4 667s max: 667s int [1:4] 9 10 11 12 667s int [1:4] 9 10 11 12 667s int [1:4] 9 10 11 12 667s range: 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s integer (integer) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 6 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s int [1:4] 1 2 3 4 667s int [1:4] 1 2 3 4 667s int [1:4] 1 2 3 4 667s max: 667s int [1:4] 9 10 11 12 667s int [1:4] 9 10 11 12 667s int [1:4] 9 10 11 12 667s range: 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s integer w/ NA (integer) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NA NA NA 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s int [1:4] NA NA NA NA 667s int [1:4] NA NA NA NA 667s int [1:4] NA NA NA NA 667s max: 667s int [1:4] NA NA NA NA 667s int [1:4] NA NA NA NA 667s int [1:4] NA NA NA NA 667s range: 667s int [1:4, 1:2] NA NA NA NA NA NA NA NA 667s int [1:4, 1:2] NA NA NA NA NA NA NA NA 667s int [1:4, 1:2] NA NA NA NA NA NA NA NA 667s integer w/ NA (integer) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NA NA NA 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s int [1:4] NA NA NA NA 667s int [1:4] NA NA NA NA 667s int [1:4] NA NA NA NA 667s max: 667s int [1:4] NA NA NA NA 667s int [1:4] NA NA NA NA 667s int [1:4] NA NA NA NA 667s range: 667s int [1:4, 1:2] NA NA NA NA NA NA NA NA 667s int [1:4, 1:2] NA NA NA NA NA NA NA NA 667s int [1:4, 1:2] NA NA NA NA NA NA NA NA 667s real (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 6 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s max: 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s range: 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s real (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 6 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s max: 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s range: 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s real w/ NA (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NA NA NA 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s max: 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s range: 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s real w/ NA (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NA NA NA 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s max: 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s range: 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s real + NA cell (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 NA 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 NA 3 4 667s num [1:4] 1 NA 3 4 667s num [1:4] 1 NA 3 4 667s max: 667s num [1:4] 9 NA 11 12 667s num [1:4] 9 NA 11 12 667s num [1:4] 9 NA 11 12 667s range: 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s real + NA cell (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 NA 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 NA 3 4 667s num [1:4] 1 NA 3 4 667s num [1:4] 1 NA 3 4 667s max: 667s num [1:4] 9 NA 11 12 667s num [1:4] 9 NA 11 12 667s num [1:4] 9 NA 11 12 667s range: 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s real + NA row (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] NA NA NA 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 NA 3 4 667s num [1:4] 1 NA 3 4 667s num [1:4] 1 NA 3 4 667s max: 667s num [1:4] 9 NA 11 12 667s num [1:4] 9 NA 11 12 667s num [1:4] 9 NA 11 12 667s range: 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s real + NA row (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] NA NA NA 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 NA 3 4 667s num [1:4] 1 NA 3 4 667s num [1:4] 1 NA 3 4 667s max: 667s num [1:4] 9 NA 11 12 667s num [1:4] 9 NA 11 12 667s num [1:4] 9 NA 11 12 667s range: 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 667s real + NaN row (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] NaN NaN NaN 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 NaN 3 4 667s num [1:4] 1 NaN 3 4 667s num [1:4] 1 NaN 3 4 667s max: 667s num [1:4] 9 NaN 11 12 667s num [1:4] 9 NaN 11 12 667s num [1:4] 9 NaN 11 12 667s range: 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s real + NaN row (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] NaN NaN NaN 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 NaN 3 4 667s num [1:4] 1 NaN 3 4 667s num [1:4] 1 NaN 3 4 667s max: 667s num [1:4] 9 NaN 11 12 667s num [1:4] 9 NaN 11 12 667s num [1:4] 9 NaN 11 12 667s range: 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s real + Inf cell (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 Inf 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s max: 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s range: 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s real + Inf cell (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 Inf 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s max: 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s range: 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s real + Inf row (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] Inf Inf Inf 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s max: 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s range: 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s real + Inf row (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] Inf Inf Inf 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s max: 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s range: 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s real + NaN cell (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 NaN 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 NaN 3 4 667s num [1:4] 1 NaN 3 4 667s num [1:4] 1 NaN 3 4 667s max: 667s num [1:4] 9 NaN 11 12 667s num [1:4] 9 NaN 11 12 667s num [1:4] 9 NaN 11 12 667s range: 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s real + NaN cell (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 NaN 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 NaN 3 4 667s num [1:4] 1 NaN 3 4 667s num [1:4] 1 NaN 3 4 667s max: 667s num [1:4] 9 NaN 11 12 667s num [1:4] 9 NaN 11 12 667s num [1:4] 9 NaN 11 12 667s range: 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 667s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NA NaN NA 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s max: 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s range: 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NA NaN NA 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s max: 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s num [1:4] NA NA NA NA 667s range: 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s num [1:4, 1:2] NA NA NA NA NA NA NA NA 667s real w/ NA + NaN row (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NaN NaN NaN 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s num [1:4] NA NaN NA NA 667s num [1:4] NA NaN NA NA 667s num [1:4] NA NaN NA NA 667s max: 667s num [1:4] NA NaN NA NA 667s num [1:4] NA NaN NA NA 667s num [1:4] NA NaN NA NA 667s range: 667s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 667s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 667s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 667s real w/ NA + NaN row (double) w/ na.rm = FALSE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NaN NaN NaN 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s num [1:4] NA NaN NA NA 667s num [1:4] NA NaN NA NA 667s num [1:4] NA NaN NA NA 667s max: 667s num [1:4] NA NaN NA NA 667s num [1:4] NA NaN NA NA 667s num [1:4] NA NaN NA NA 667s range: 667s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 667s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 667s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 667s integer (integer) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 6 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s int [1:4] 1 2 3 4 667s int [1:4] 1 2 3 4 667s int [1:4] 1 2 3 4 667s max: 667s int [1:4] 9 10 11 12 667s int [1:4] 9 10 11 12 667s int [1:4] 9 10 11 12 667s range: 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s integer (integer) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 6 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s int [1:4] 1 2 3 4 667s int [1:4] 1 2 3 4 667s int [1:4] 1 2 3 4 667s max: 667s int [1:4] 9 10 11 12 667s int [1:4] 9 10 11 12 667s int [1:4] 9 10 11 12 667s range: 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s int [1:4, 1:2] 1 2 3 4 9 10 11 12 667s integer w/ NA (integer) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NA NA NA 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s num [1:4] Inf Inf Inf Inf 667s num [1:4] Inf Inf Inf Inf 667s num [1:4] Inf Inf Inf Inf 667s max: 667s num [1:4] -Inf -Inf -Inf -Inf 667s num [1:4] -Inf -Inf -Inf -Inf 667s num [1:4] -Inf -Inf -Inf -Inf 667s range: 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s integer w/ NA (integer) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NA NA NA 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s num [1:4] Inf Inf Inf Inf 667s num [1:4] Inf Inf Inf Inf 667s num [1:4] Inf Inf Inf Inf 667s max: 667s num [1:4] -Inf -Inf -Inf -Inf 667s num [1:4] -Inf -Inf -Inf -Inf 667s num [1:4] -Inf -Inf -Inf -Inf 667s range: 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s real (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 6 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s max: 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s range: 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s real (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 6 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s max: 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s range: 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s real w/ NA (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NA NA NA 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s num [1:4] Inf Inf Inf Inf 667s num [1:4] Inf Inf Inf Inf 667s num [1:4] Inf Inf Inf Inf 667s max: 667s num [1:4] -Inf -Inf -Inf -Inf 667s num [1:4] -Inf -Inf -Inf -Inf 667s num [1:4] -Inf -Inf -Inf -Inf 667s range: 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s real w/ NA (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] NA NA NA 667s [2,] NA NA NA 667s [3,] NA NA NA 667s [4,] NA NA NA 667s min: 667s num [1:4] Inf Inf Inf Inf 667s num [1:4] Inf Inf Inf Inf 667s num [1:4] Inf Inf Inf Inf 667s max: 667s num [1:4] -Inf -Inf -Inf -Inf 667s num [1:4] -Inf -Inf -Inf -Inf 667s num [1:4] -Inf -Inf -Inf -Inf 667s range: 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 667s real + NA cell (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 NA 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s max: 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s range: 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s real + NA cell (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 NA 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s max: 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s num [1:4] 9 10 11 12 667s range: 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s num [1:4, 1:2] 1 2 3 4 9 10 11 12 667s real + NA row (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] NA NA NA 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s max: 667s num [1:4] 9 -Inf 11 12 667s num [1:4] 9 -Inf 11 12 667s num [1:4] 9 -Inf 11 12 667s range: 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s real + NA row (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] NA NA NA 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s max: 667s num [1:4] 9 -Inf 11 12 667s num [1:4] 9 -Inf 11 12 667s num [1:4] 9 -Inf 11 12 667s range: 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s real + NaN row (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] NaN NaN NaN 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s max: 667s num [1:4] 9 -Inf 11 12 667s num [1:4] 9 -Inf 11 12 667s num [1:4] 9 -Inf 11 12 667s range: 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s real + NaN row (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] NaN NaN NaN 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s max: 667s num [1:4] 9 -Inf 11 12 667s num [1:4] 9 -Inf 11 12 667s num [1:4] 9 -Inf 11 12 667s range: 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s real + Inf cell (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 Inf 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s max: 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s range: 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s real + Inf cell (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] 2 Inf 10 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s num [1:4] 1 2 3 4 667s max: 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s range: 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s num [1:4, 1:2] 1 2 3 4 9 ... 667s real + Inf row (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] Inf Inf Inf 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s max: 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s num [1:4] 9 Inf 11 12 667s range: 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s num [1:4, 1:2] 1 Inf 3 4 9 ... 667s real + Inf row (double) w/ na.rm = TRUE: 667s [,1] [,2] [,3] 667s [1,] 1 5 9 667s [2,] Inf Inf Inf 667s [3,] 3 7 11 667s [4,] 4 8 12 667s min: 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s num [1:4] 1 Inf 3 4 667s max: 667s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s range: 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s real + NaN cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 NaN 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s real + NaN cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 NaN 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NaN NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NaN NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s real w/ NA + NaN row (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NaN NaN NaN 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s real w/ NA + NaN row (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NaN NaN NaN 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s integer (integer) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 6 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s int [1:4] 1 2 3 4 668s int [1:4] 1 2 3 4 668s int [1:4] 1 2 3 4 668s max: 668s int [1:4] 9 10 11 12 668s int [1:4] 9 10 11 12 668s int [1:4] 9 10 11 12 668s range: 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s integer (integer) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 6 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s int [1:4] 1 2 3 4 668s int [1:4] 1 2 3 4 668s int [1:4] 1 2 3 4 668s max: 668s int [1:4] 9 10 11 12 668s int [1:4] 9 10 11 12 668s int [1:4] 9 10 11 12 668s range: 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s integer w/ NA (integer) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NA NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s int [1:4] NA NA NA NA 668s int [1:4] NA NA NA NA 668s int [1:4] NA NA NA NA 668s max: 668s int [1:4] NA NA NA NA 668s int [1:4] NA NA NA NA 668s int [1:4] NA NA NA NA 668s range: 668s int [1:4, 1:2] NA NA NA NA NA NA NA NA 668s int [1:4, 1:2] NA NA NA NA NA NA NA NA 668s int [1:4, 1:2] NA NA NA NA NA NA NA NA 668s integer w/ NA (integer) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NA NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s int [1:4] NA NA NA NA 668s int [1:4] NA NA NA NA 668s int [1:4] NA NA NA NA 668s max: 668s int [1:4] NA NA NA NA 668s int [1:4] NA NA NA NA 668s int [1:4] NA NA NA NA 668s range: 668s int [1:4, 1:2] NA NA NA NA NA NA NA NA 668s int [1:4, 1:2] NA NA NA NA NA NA NA NA 668s int [1:4, 1:2] NA NA NA NA NA NA NA NA 668s real (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 6 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s real (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 6 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s real w/ NA (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NA NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s max: 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s range: 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s real w/ NA (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NA NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s max: 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s range: 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s real + NA cell (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 NA 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 NA 3 4 668s num [1:4] 1 NA 3 4 668s num [1:4] 1 NA 3 4 668s max: 668s num [1:4] 9 NA 11 12 668s num [1:4] 9 NA 11 12 668s num [1:4] 9 NA 11 12 668s range: 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s real + NA cell (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 NA 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 NA 3 4 668s num [1:4] 1 NA 3 4 668s num [1:4] 1 NA 3 4 668s max: 668s num [1:4] 9 NA 11 12 668s num [1:4] 9 NA 11 12 668s num [1:4] 9 NA 11 12 668s range: 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s real + NA row (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] NA NA NA 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 NA 3 4 668s num [1:4] 1 NA 3 4 668s num [1:4] 1 NA 3 4 668s max: 668s num [1:4] 9 NA 11 12 668s num [1:4] 9 NA 11 12 668s num [1:4] 9 NA 11 12 668s range: 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s real + NA row (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] NA NA NA 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 NA 3 4 668s num [1:4] 1 NA 3 4 668s num [1:4] 1 NA 3 4 668s max: 668s num [1:4] 9 NA 11 12 668s num [1:4] 9 NA 11 12 668s num [1:4] 9 NA 11 12 668s range: 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s num [1:4, 1:2] 1 NA 3 4 9 NA 11 12 668s real + NaN row (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] NaN NaN NaN 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 NaN 3 4 668s num [1:4] 1 NaN 3 4 668s num [1:4] 1 NaN 3 4 668s max: 668s num [1:4] 9 NaN 11 12 668s num [1:4] 9 NaN 11 12 668s num [1:4] 9 NaN 11 12 668s range: 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s real + NaN row (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] NaN NaN NaN 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 NaN 3 4 668s num [1:4] 1 NaN 3 4 668s num [1:4] 1 NaN 3 4 668s max: 668s num [1:4] 9 NaN 11 12 668s num [1:4] 9 NaN 11 12 668s num [1:4] 9 NaN 11 12 668s range: 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s real + Inf cell (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 Inf 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s real + Inf cell (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 Inf 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s real + Inf row (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] Inf Inf Inf 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s max: 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s range: 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s real + Inf row (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] Inf Inf Inf 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s max: 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s range: 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s real + NaN cell (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 NaN 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 NaN 3 4 668s num [1:4] 1 NaN 3 4 668s num [1:4] 1 NaN 3 4 668s max: 668s num [1:4] 9 NaN 11 12 668s num [1:4] 9 NaN 11 12 668s num [1:4] 9 NaN 11 12 668s range: 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s real + NaN cell (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 NaN 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 NaN 3 4 668s num [1:4] 1 NaN 3 4 668s num [1:4] 1 NaN 3 4 668s max: 668s num [1:4] 9 NaN 11 12 668s num [1:4] 9 NaN 11 12 668s num [1:4] 9 NaN 11 12 668s range: 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s num [1:4, 1:2] 1 NaN 3 4 9 NaN 11 12 668s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NaN NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s max: 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s range: 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s real w/ NA + NaN cell (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NaN NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s max: 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s num [1:4] NA NA NA NA 668s range: 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s num [1:4, 1:2] NA NA NA NA NA NA NA NA 668s real w/ NA + NaN row (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NaN NaN NaN 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] NA NaN NA NA 668s num [1:4] NA NaN NA NA 668s num [1:4] NA NaN NA NA 668s max: 668s num [1:4] NA NaN NA NA 668s num [1:4] NA NaN NA NA 668s num [1:4] NA NaN NA NA 668s range: 668s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 668s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 668s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 668s real w/ NA + NaN row (double) w/ na.rm = FALSE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NaN NaN NaN 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] NA NaN NA NA 668s num [1:4] NA NaN NA NA 668s num [1:4] NA NaN NA NA 668s max: 668s num [1:4] NA NaN NA NA 668s num [1:4] NA NaN NA NA 668s num [1:4] NA NaN NA NA 668s range: 668s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 668s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 668s num [1:4, 1:2] NA NaN NA NA NA NaN NA NA 668s integer (integer) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 6 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s int [1:4] 1 2 3 4 668s int [1:4] 1 2 3 4 668s int [1:4] 1 2 3 4 668s max: 668s int [1:4] 9 10 11 12 668s int [1:4] 9 10 11 12 668s int [1:4] 9 10 11 12 668s range: 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s integer (integer) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 6 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s int [1:4] 1 2 3 4 668s int [1:4] 1 2 3 4 668s int [1:4] 1 2 3 4 668s max: 668s int [1:4] 9 10 11 12 668s int [1:4] 9 10 11 12 668s int [1:4] 9 10 11 12 668s range: 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s int [1:4, 1:2] 1 2 3 4 9 10 11 12 668s integer w/ NA (integer) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NA NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s integer w/ NA (integer) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NA NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s real (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 6 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s real (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 6 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s real w/ NA (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NA NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s real w/ NA (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NA NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s real + NA cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 NA 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s real + NA cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 NA 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s real + NA row (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] NA NA NA 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s max: 668s num [1:4] 9 -Inf 11 12 668s num [1:4] 9 -Inf 11 12 668s num [1:4] 9 -Inf 11 12 668s range: 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s real + NA row (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] NA NA NA 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s max: 668s num [1:4] 9 -Inf 11 12 668s num [1:4] 9 -Inf 11 12 668s num [1:4] 9 -Inf 11 12 668s range: 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s real + NaN row (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] NaN NaN NaN 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s max: 668s num [1:4] 9 -Inf 11 12 668s num [1:4] 9 -Inf 11 12 668s num [1:4] 9 -Inf 11 12 668s range: 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s real + NaN row (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] NaN NaN NaN 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s max: 668s num [1:4] 9 -Inf 11 12 668s num [1:4] 9 -Inf 11 12 668s num [1:4] 9 -Inf 11 12 668s range: 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s real + Inf cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 Inf 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s real + Inf cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 Inf 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s num [1:4, 1:2] 1 2 3 4 9 ... 668s real + Inf row (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] Inf Inf Inf 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s max: 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s range: 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s real + Inf row (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] Inf Inf Inf 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s num [1:4] 1 Inf 3 4 668s max: 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s num [1:4] 9 Inf 11 12 668s range: 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s num [1:4, 1:2] 1 Inf 3 4 9 ... 668s real + NaN cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 NaN 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s real + NaN cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] 1 5 9 668s [2,] 2 NaN 10 668s [3,] 3 7 11 668s [4,] 4 8 12 668s min: 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s num [1:4] 1 2 3 4 668s max: 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s num [1:4] 9 10 11 12 668s range: 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s num [1:4, 1:2] 1 2 3 4 9 10 11 12 668s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NaN NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s real w/ NA + NaN cell (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NA NaN NA 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s real w/ NA + NaN row (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NaN NaN NaN 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s real w/ NA + NaN row (double) w/ na.rm = TRUE: 668s [,1] [,2] [,3] 668s [1,] NA NA NA 668s [2,] NaN NaN NaN 668s [3,] NA NA NA 668s [4,] NA NA NA 668s min: 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s num [1:4] Inf Inf Inf Inf 668s max: 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s num [1:4] -Inf -Inf -Inf -Inf 668s range: 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s num [1:4, 1:2] Inf Inf Inf Inf -Inf ... 668s > 668s 668s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 668s Copyright (C) 2024 The R Foundation for Statistical Computing 668s Platform: powerpc64le-unknown-linux-gnu (64-bit) 668s 668s R is free software and comes with ABSOLUTELY NO WARRANTY. 668s You are welcome to redistribute it under certain conditions. 668s Type 'license()' or 'licence()' for distribution details. 668s 668s R is a collaborative project with many contributors. 668s Type 'contributors()' for more information and 668s 'citation()' on how to cite R or R packages in publications. 668s 668s Type 'demo()' for some demos, 'help()' for on-line help, or 668s 'help.start()' for an HTML browser interface to help. 668s Type 'q()' to quit R. 668s 668s > library("matrixStats") 668s > 668s > rowMins_R <- function(x, ..., useNames = NA) { 668s + suppressWarnings({ 668s + res <- apply(x, MARGIN = 1L, FUN = min, ...) 668s + }) 668s + if (is.na(useNames) || !useNames) names(res) <- NULL 668s + res 668s + } # rowMins_R() 668s > 668s > rowMaxs_R <- function(x, ..., useNames = NA) { 668s + suppressWarnings({ 668s + res <- apply(x, MARGIN = 1L, FUN = max, ...) 668s + }) 668s + if (is.na(useNames) || !useNames) names(res) <- NULL 668s + res 668s + } # rowMaxs_R() 668s > 668s > rowRanges_R <- function(x, ..., useNames = NA) { 668s + suppressWarnings({ 668s + ans <- t(apply(x, MARGIN = 1L, FUN = range, ...)) 668s + }) 668s + 668s + # Preserve rownames attribute 668s + dim <- c(dim(x)[1], 2L) 668s + if (!isTRUE(all.equal(dim(ans), dim))) { 668s + dim(ans) <- dim 668s + rownames <- rownames(x) 668s + if (!is.null(dimnames)) rownames(ans) <- rownames 668s + } 668s + if (is.na(useNames) || !useNames) dimnames(ans) <- NULL 668s + ans 668s + } # rowRanges_R() 668s > 668s > 668s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 668s > # Subsetted tests 668s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 668s > source("utils/validateIndicesFramework.R") 668s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 668s > storage.mode(x) <- "integer" 668s > 668s > # To check rownames/names attributes 668s > dimnames <- list(letters[1:6], LETTERS[1:6]) 668s > 668s > # Test with and without dimnames on x 668s > for (setDimnames in c(TRUE, FALSE)) { 668s + if (setDimnames) dimnames(x) <- dimnames 668s + else dimnames(x) <- NULL 668s + 668s + count <- 0L 668s + for (rows in index_cases) { 668s + for (cols in index_cases) { 668s + count <- count + 1L 668s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 668s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 668s + useNames <- useNames[count %% length(useNames) + 1] 668s + 668s + validateIndicesTestMatrix(x, rows, cols, 668s + ftest = rowRanges, fsure = rowRanges_R, 668s + na.rm = na.rm, useNames = useNames) 668s + validateIndicesTestMatrix(x, rows, cols, 668s + ftest = rowMins, fsure = rowMins_R, 668s + na.rm = na.rm, useNames = useNames) 668s + validateIndicesTestMatrix(x, rows, cols, 668s + ftest = rowMaxs, fsure = rowMaxs_R, 668s + na.rm = na.rm, useNames = useNames) 668s + 668s + validateIndicesTestMatrix(x, rows, cols, 668s + fcoltest = colRanges, fsure = rowRanges_R, 668s + na.rm = na.rm, useNames = useNames) 668s + validateIndicesTestMatrix(x, rows, cols, 668s + fcoltest = colMins, fsure = rowMins_R, 668s + na.rm = na.rm, useNames = useNames) 668s + validateIndicesTestMatrix(x, rows, cols, 668s + fcoltest = colMaxs, fsure = rowMaxs_R, 668s + na.rm = na.rm, useNames = useNames) 668s + } 668s + } 668s + } 670s > 670s 670s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 670s Copyright (C) 2024 The R Foundation for Statistical Computing 670s Platform: powerpc64le-unknown-linux-gnu (64-bit) 670s 670s R is free software and comes with ABSOLUTELY NO WARRANTY. 670s You are welcome to redistribute it under certain conditions. 670s Type 'license()' or 'licence()' for distribution details. 670s 670s R is a collaborative project with many contributors. 670s Type 'contributors()' for more information and 670s 'citation()' on how to cite R or R packages in publications. 670s 670s Type 'demo()' for some demos, 'help()' for on-line help, or 670s 'help.start()' for an HTML browser interface to help. 670s Type 'q()' to quit R. 670s 670s > library("matrixStats") 670s > 670s > dense_rank <- function(x) match(x, table = sort(unique(x))) 670s > 670s > rowRanks_R <- function(x, ties.method, ..., useNames = NA) { 670s + if (ties.method == "dense") { 670s + res <- t(apply(x, MARGIN = 1L, FUN = dense_rank)) 670s + } else { 670s + res <- t(apply(x, MARGIN = 1L, FUN = rank, na.last = "keep", ties.method = ties.method)) 670s + } 670s + 670s + # Preserve dimnames attribute? 670s + dim(res) <- dim(x) 670s + dimnames(res) <- if (isTRUE(useNames)) dimnames(x) else NULL 670s + 670s + res 670s + } 670s > 670s > colRanks_R <- function(x, ties.method, preserveShape = FALSE, ..., useNames = NA) { 670s + if (ties.method == "dense") { 670s + res <- t(apply(x, MARGIN = 2L, FUN = dense_rank)) 670s + } else { 670s + res <- t(apply(x, MARGIN = 2L, FUN = rank, na.last = "keep", ties.method = ties.method)) 670s + } 670s + 670s + # Preserve dimnames attribute? 670s + tx <- t(x) 670s + dim(res) <- dim(tx) 670s + dimnames(res) <- if (isTRUE(useNames)) dimnames(tx) else NULL 670s + 670s + if (preserveShape) res <- t(res) 670s + res 670s + } 670s > 670s > set.seed(1) 670s > 670s > cat("Consistency checks:\n") 670s Consistency checks: 670s > xs <- vector("list", length = 4L) 670s > for (kk in 1:4) { 670s + 670s + # Simulate data in a matrix of any shape 670s + dim <- sample(40:80, size = 2L) 670s + n <- prod(dim) 670s + x <- rnorm(n, sd = 10) 670s + dim(x) <- dim 670s + 670s + # Add NAs? 670s + if ((kk %% 4) %in% c(3, 0)) { 670s + cat("Adding NAs\n") 670s + nna <- sample(n, size = 1L) 670s + x[sample(length(x), size = nna)] <- NA_real_ 670s + } 670s + 670s + # Integer or double? 670s + if ((kk %% 4) %in% c(2, 0)) { 670s + cat("Coercing to integers\n") 670s + storage.mode(x) <- "integer" 670s + } 670s + 670s + xs[[kk]] <- x 670s + } # for (kk ...) 670s Coercing to integers 670s Adding NAs 670s Adding NAs 670s Coercing to integers 670s > str(xs) 670s List of 4 670s $ : num [1:43, 1:78] 13.3 12.72 4.15 -15.4 -9.29 ... 670s $ : int [1:46, 1:61] 2 11 -16 -5 19 5 26 -13 1 -9 ... 670s $ : num [1:42, 1:47] NA -22.3 NA NA NA ... 670s $ : int [1:42, 1:78] NA NA NA NA NA NA NA NA NA NA ... 670s > 670s > for (kk in 1:4) { 670s + cat("Random test #", kk, "\n", sep = "") 670s + x <- xs[[kk]] 670s + tx <- t(x) 670s + 670s + for (ties in c("max", "min", "average", "first", "last", "dense")) { 670s + cat(sprintf("ties.method = %s\n", ties)) 670s + # rowRanks(): 670s + y1 <- matrixStats::rowRanks(x, ties.method = ties) 670s + if (ties != "last" || getRversion() >= "3.3.0") { 670s + y2 <- rowRanks_R(x, ties.method = ties) 670s + stopifnot(identical(y1, y2)) 670s + } 670s + 670s + y3 <- matrixStats::colRanks(tx, ties.method = ties) 670s + stopifnot(identical(y1, y3)) 670s + 670s + # colRanks(): 670s + y1 <- matrixStats::colRanks(x, ties.method = ties) 670s + if (ties != "last" || getRversion() >= "3.3.0") { 670s + y2 <- colRanks_R(x, ties.method = ties) 670s + stopifnot(identical(y1, y2)) 670s + } 670s + 670s + y3 <- matrixStats::rowRanks(tx, ties.method = ties) 670s + stopifnot(identical(y1, y3)) 670s + } 670s + } # for (kk ...) 670s Random test #1 670s ties.method = max 670s ties.method = min 670s ties.method = average 670s ties.method = first 670s ties.method = last 670s ties.method = dense 670s Random test #2 670s ties.method = max 670s ties.method = min 670s ties.method = average 670s ties.method = first 670s ties.method = last 670s ties.method = dense 670s Random test #3 670s ties.method = max 670s ties.method = min 670s ties.method = average 670s ties.method = first 670s ties.method = last 670s ties.method = dense 670s Random test #4 670s ties.method = max 670s ties.method = min 670s ties.method = average 670s ties.method = first 670s ties.method = last 670s ties.method = dense 670s > 670s > # Note, below we know ties.method %in% c("min", "max", "average") is correct 670s > 670s > cat("Consistency checks for random:\n") 670s Consistency checks for random: 670s > tolerance <- 0.1 670s > nsamples <- 10000 670s > for (kk in 1:4) { 670s + cat("Random test #", kk, "\n", sep = "") 670s + x <- xs[[kk]] 670s + tx <- t(x) 670s + 670s + for (ties in c("random")) { 670s + cat(sprintf("ties.method = %s\n", ties)) 670s + 670s + ## rowRanks(): 670s + y0 <- rowRanks_R(x, ties.method = ties) 670s + y1 <- matrixStats::rowRanks(x, ties.method = ties) 670s + 670s + ## Assert symmetric rank differences 670s + d <- y1 - y0 670s + stopifnot(all(rowSums(d) == 0, na.rm = TRUE)) 670s + 670s + ## Assert within [min, max] 670s + y2min <- matrixStats::rowRanks(x, ties.method = "min") 670s + y2max <- matrixStats::rowRanks(x, ties.method = "max") 670s + stopifnot(all(y1 >= y2min, na.rm = TRUE) && all(y1 <= y2max, na.rm = TRUE)) 670s + ## Assert near average 670s + y1list <- replicate(nsamples, matrixStats::rowRanks(x, ties.method = ties), simplify = FALSE) 670s + y1mean <- Reduce(`+`, y1list) / nsamples 670s + y2avg <- matrixStats::rowRanks(x, ties.method = "average") 670s + stopifnot(all(abs(y1mean - y2avg) < tolerance, na.rm = TRUE)) 670s + 670s + ## colRanks(): 670s + y0 <- colRanks_R(x, ties.method = ties) 670s + y1 <- matrixStats::colRanks(x, ties.method = ties) 670s + 670s + ## Assert symmetric rank differences 670s + d <- y1 - y0 670s + stopifnot(all(rowSums(d) == 0, na.rm = TRUE)) 670s + 670s + ## Assert within [min, max] 670s + y2min <- matrixStats::colRanks(x, ties.method = "min") 670s + y2max <- matrixStats::colRanks(x, ties.method = "max") 670s + stopifnot(all(y1 >= y2min, na.rm = TRUE) && all(y1 <= y2max, na.rm = TRUE)) 670s + y1list <- replicate(nsamples, matrixStats::colRanks(x, ties.method = ties), simplify = FALSE) 670s + y1mean <- Reduce(`+`, y1list) / nsamples 670s + ## Assert near average 670s + y2avg <- matrixStats::colRanks(x, ties.method = "average") 670s + stopifnot(all(abs(y1mean - y2avg) < tolerance, na.rm = TRUE)) 670s + } 670s + } # for (kk ...) 670s Random test #1 670s ties.method = random 673s Random test #2 673s ties.method = random 676s Random test #3 676s ties.method = random 677s Random test #4 677s ties.method = random 678s > 678s > 678s > ## Exception handling 678s > x <- matrix(1:12, nrow = 3L, ncol = 4L) 678s > y <- try(rowRanks(x, ties.method = "unknown"), silent = TRUE) 678s > stopifnot(inherits(y, "try-error")) 678s > 678s > y <- try(colRanks(x, ties.method = "unknown"), silent = TRUE) 678s > stopifnot(inherits(y, "try-error")) 678s > 678s > dimnames <- list(letters[1:3], LETTERS[1:4]) 678s > for (mode in c("integer", "double")){ 678s + storage.mode(x) <- mode 678s + # Test with and without dimnames on x 678s + for (setDimnames in c(TRUE, FALSE)) { 678s + if (setDimnames) dimnames(x) <- dimnames 678s + else dimnames(x) <- NULL 678s + # Check names attribute 678s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 678s + for (ties in c("max", "min", "average", "first", "last", "dense", "random")) { 678s + cat(sprintf("ties.method = %s\n", ties)) 678s + # rowRanks(): 678s + y1 <- matrixStats::rowRanks(x, ties.method = ties, useNames = useNames) 678s + if (ties != "last" || getRversion() >= "3.3.0") { 678s + y2 <- rowRanks_R(x, ties.method = ties, useNames = useNames) 678s + stopifnot(identical(y1, y2)) 678s + } 678s + 678s + y3 <- matrixStats::colRanks(t(x), ties.method = ties, useNames = useNames) 678s + stopifnot(identical(y1, y3)) 678s + 678s + # colRanks(): 678s + y1 <- matrixStats::colRanks(x, ties.method = ties, useNames = useNames) 678s + if (ties != "last" || getRversion() >= "3.3.0") { 678s + y2 <- colRanks_R(x, ties.method = ties, useNames = useNames) 678s + stopifnot(identical(y1, y2)) 678s + } 678s + 678s + y3 <- matrixStats::rowRanks(t(x), ties.method = ties, useNames = useNames) 678s + stopifnot(identical(y1, y3)) 678s + 678s + # Check preserveShape 678s + y1 <- matrixStats::colRanks(x, ties.method = ties, preserveShape = TRUE, useNames = useNames) 678s + if (ties != "last" || getRversion() >= "3.3.0") { 678s + y2 <- colRanks_R(x, ties.method = ties, preserveShape = TRUE, useNames = useNames) 678s + stopifnot(identical(y1, y2)) 678s + } 678s + } 678s + } 678s + } 678s + } 678s ties.method = max 678s ties.method = min 678s ties.method = average 678s ties.method = first 678s ties.method = last 678s ties.method = dense 678s ties.method = random 678s ties.method = max 678s ties.method = min 678s ties.method = average 678s ties.method = first 678s ties.method = last 678s ties.method = dense 678s ties.method = random 678s ties.method = max 678s ties.method = min 678s ties.method = average 678s ties.method = first 678s ties.method = last 678s ties.method = dense 678s ties.method = random 678s ties.method = max 678s ties.method = min 678s ties.method = average 678s ties.method = first 678s ties.method = last 678s ties.method = dense 678s ties.method = random 678s ties.method = max 678s ties.method = min 678s ties.method = average 678s ties.method = first 678s ties.method = last 678s ties.method = dense 678s ties.method = random 678s ties.method = max 678s ties.method = min 678s ties.method = average 678s ties.method = first 678s ties.method = last 678s ties.method = dense 678s ties.method = random 678s ties.method = max 678s ties.method = min 678s ties.method = average 678s ties.method = first 678s ties.method = last 678s ties.method = dense 678s ties.method = random 678s ties.method = max 678s ties.method = min 678s ties.method = average 678s ties.method = first 678s ties.method = last 678s ties.method = dense 678s ties.method = random 678s > 678s 678s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 678s Copyright (C) 2024 The R Foundation for Statistical Computing 678s Platform: powerpc64le-unknown-linux-gnu (64-bit) 678s 678s R is free software and comes with ABSOLUTELY NO WARRANTY. 678s You are welcome to redistribute it under certain conditions. 678s Type 'license()' or 'licence()' for distribution details. 678s 678s R is a collaborative project with many contributors. 678s Type 'contributors()' for more information and 678s 'citation()' on how to cite R or R packages in publications. 678s 678s Type 'demo()' for some demos, 'help()' for on-line help, or 678s 'help.start()' for an HTML browser interface to help. 678s Type 'q()' to quit R. 678s 679s > library("matrixStats") 679s > 679s > rowRanks_R <- function(x, ties.method = "average", ..., useNames = NA) { 679s + ans <- t(apply(x, MARGIN = 1L, FUN = rank, na.last = "keep", 679s + ties.method = ties.method)) 679s + 679s + # Preserve dimnames attribute? 679s + dim(ans) <- dim(x) 679s + dimnames(ans) <- if (isTRUE(useNames)) dimnames(x) else NULL 679s + 679s + ans 679s + } 679s > 679s > colRanks_R <- function(x, ties.method, preserveShape = FALSE, ..., useNames = NA) { 679s + ans <- t(apply(x, MARGIN = 2L, FUN = rank, na.last = "keep", ties.method = ties.method)) 679s + 679s + # Preserve dimnames attribute? 679s + tx <- t(x) 679s + dim(ans) <- dim(tx) 679s + dimnames(ans) <- if (isTRUE(useNames)) dimnames(tx) else NULL 679s + 679s + if (preserveShape) ans <- t(ans) 679s + ans 679s + } 679s > 679s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 679s > # Subsetted tests 679s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 679s > source("utils/validateIndicesFramework.R") 679s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 679s > storage.mode(x) <- "integer" 679s > 679s > # To check dimnames attribute 679s > dimnames <- list(letters[1:6], LETTERS[1:6]) 679s > 679s > colRanks_R_t <- function(x, rows, cols, ..., useNames = NA) { 679s + t(colRanks(t(x), rows = cols, cols = rows, preserveShape = TRUE, ..., useNames = useNames)) 679s + } 679s > 679s > # Test with and without dimnames on x 679s > for (setDimnames in c(TRUE, FALSE)) { 679s + if (setDimnames) dimnames(x) <- dimnames 679s + else dimnames(x) <- NULL 679s + 679s + count <- 0L 679s + for (rows in index_cases) { 679s + for (cols in index_cases) { 679s + count <- count + 1L 679s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 679s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 679s + useNames <- useNames[count %% length(useNames) + 1] 679s + 679s + validateIndicesTestMatrix(x, rows, cols, 679s + ftest = rowRanks, fsure = rowRanks_R, 679s + ties.method = "average", useNames = useNames) 679s + 679s + validateIndicesTestMatrix(x, rows, cols, 679s + ftest = colRanks_R_t, fsure = rowRanks_R, 679s + ties.method = "average", useNames = useNames) 679s + 679s + for (perserveShape in c(TRUE, FALSE)) { 679s + validateIndicesTestMatrix(x, rows, cols, 679s + ftest = colRanks, fsure = colRanks_R, 679s + ties.method = "average", perserveShape = perserveShape, 679s + useNames = useNames) 679s + } 679s + } 679s + } 679s + } 680s > 680s 680s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 680s Copyright (C) 2024 The R Foundation for Statistical Computing 680s Platform: powerpc64le-unknown-linux-gnu (64-bit) 680s 680s R is free software and comes with ABSOLUTELY NO WARRANTY. 680s You are welcome to redistribute it under certain conditions. 680s Type 'license()' or 'licence()' for distribution details. 680s 680s R is a collaborative project with many contributors. 680s Type 'contributors()' for more information and 680s 'citation()' on how to cite R or R packages in publications. 680s 680s Type 'demo()' for some demos, 'help()' for on-line help, or 680s 'help.start()' for an HTML browser interface to help. 680s Type 'q()' to quit R. 680s 680s > library("matrixStats") 680s > 680s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 680s > options(matrixStats.center.onUse = "ignore") 680s > 680s > ## Create isFALSE() if running on an old version of R 680s > if (!exists("isFALSE", mode="function")) { 680s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 680s + } 680s > 680s > rowSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 680s + suppressWarnings({ 680s + sigma <- apply(x, MARGIN = 1L, FUN = sd, na.rm = na.rm) 680s + }) 680s + stopifnot(!any(is.infinite(sigma))) 680s + 680s + # Keep naming support consistency same as rowSds() 680s + if (is.null(center) || ncol(x) <= 1L) { 680s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 680s + } 680s + else if (isFALSE(useNames)) names(sigma) <- NULL 680s + sigma 680s + } 680s > 680s > colSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 680s + suppressWarnings({ 680s + sigma <- apply(x, MARGIN = 2L, FUN = sd, na.rm = na.rm) 680s + }) 680s + stopifnot(!any(is.infinite(sigma))) 680s + 680s + # Keep naming support consistency same as colSds() 680s + if (is.null(center) || nrow(x) <= 1L) { 680s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 680s + } 680s + if (isFALSE(useNames)) names(sigma) <- NULL 680s + sigma 680s + } 680s > 680s > 680s > rowSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 680s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 680s + sigma <- rowSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 680s + stopifnot(!any(is.infinite(sigma))) 680s + sigma 680s + } 680s > 680s > colSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 680s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 680s + sigma <- colSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 680s + stopifnot(!any(is.infinite(sigma))) 680s + sigma 680s + } 680s > 680s > 680s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680s > # With and without some NAs 680s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680s > for (mode in c("integer", "double")) { 680s + for (add_na in c(FALSE, TRUE)) { 680s + cat("add_na = ", add_na, "\n", sep = "") 680s + 680s + x <- matrix(1:50 + 0.1, nrow = 10L, ncol = 5L) 680s + if (add_na) { 680s + x[3:7, c(2, 4)] <- NA_real_ 680s + } 680s + cat("mode: ", mode, "\n", sep = "") 680s + storage.mode(x) <- mode 680s + str(x) 680s + 680s + # To check names attribute 680s + dimnames <- list(letters[1:10], LETTERS[1:5]) 680s + 680s + # Test with and without dimnames on x 680s + for (setDimnames in c(TRUE, FALSE)) { 680s + if (setDimnames) dimnames(x) <- dimnames 680s + else dimnames(x) <- NULL 680s + # Row/column ranges 680s + for (na.rm in c(FALSE, TRUE)) { 680s + # Check names attribute 680s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 680s + r0 <- rowSds_R(x, na.rm = na.rm, useNames = useNames) 680s + r1 <- rowSds(x, na.rm = na.rm, useNames = useNames) 680s + r1b <- rowSds_center(x, na.rm = na.rm, useNames = useNames) 680s + r2 <- colSds(t(x), na.rm = na.rm, useNames = useNames) 680s + r2b <- colSds_center(t(x), na.rm = na.rm, useNames = useNames) 680s + stopifnot(all.equal(r1, r2)) 680s + stopifnot(all.equal(r1, r0)) 680s + stopifnot(all.equal(r2, r0)) 680s + stopifnot(all.equal(r1b, r2b)) 680s + stopifnot( 680s + !any(is.infinite(r1)), 680s + !any(is.infinite(r2)), 680s + !any(is.infinite(r1b)), 680s + !any(is.infinite(r2b)) 680s + ) 680s + } 680s + } 680s + } 680s + } # for (add_na ...) 680s + } 680s add_na = FALSE 680s mode: integer 680s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 680s add_na = TRUE 680s mode: integer 680s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 680s add_na = FALSE 680s mode: double 680s 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 ... 680s add_na = TRUE 680s mode: double 680s 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 ... 680s > 680s > 680s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680s > # All NAs 680s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680s > for (mode in c("integer", "double")) { 680s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 680s + cat("mode: ", mode, "\n", sep = "") 680s + storage.mode(x) <- mode 680s + str(x) 680s + 680s + # Test with and without dimnames on x 680s + for (setDimnames in c(TRUE, FALSE)) { 680s + if (setDimnames) dimnames(x) <- dimnames 680s + else dimnames(x) <- NULL 680s + # Row/column ranges 680s + for (na.rm in c(FALSE, TRUE)) { 680s + # Check names attribute 680s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 680s + r0 <- rowSds_R(x, na.rm = na.rm, useNames = useNames) 680s + r1 <- rowSds(x, na.rm = na.rm, useNames = useNames) 680s + r1b <- rowSds_center(x, na.rm = na.rm, useNames = useNames) 680s + r2 <- colSds(t(x), na.rm = na.rm, useNames = useNames) 680s + r2b <- colSds_center(t(x), na.rm = na.rm, useNames = useNames) 680s + stopifnot(all.equal(r1, r2)) 680s + stopifnot(all.equal(r1, r0)) 680s + stopifnot(all.equal(r2, r0)) 680s + stopifnot(all.equal(r1b, r2b)) 680s + stopifnot( 680s + !any(is.infinite(r1)), 680s + !any(is.infinite(r2)), 680s + !any(is.infinite(r1b)), 680s + !any(is.infinite(r2b)) 680s + ) 680s + } 680s + } 680s + } 680s + } 680s mode: integer 680s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 680s mode: double 680s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 680s > 680s > 680s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680s > # A 1x1 matrix 680s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680s > x <- matrix(0, nrow = 1L, ncol = 1L) 680s > dimnames <- list("a", "A") 680s > for (na.rm in c(FALSE, TRUE)) { 680s + cat("na.rm = ", na.rm, "\n", sep = "") 680s + 680s + # Test with and without dimnames on x 680s + for (setDimnames in c(TRUE, FALSE)) { 680s + if (setDimnames) dimnames(x) <- dimnames 680s + else dimnames(x) <- NULL 680s + # Row/column ranges 680s + for (na.rm in c(FALSE, TRUE)) { 680s + # Check names attribute 680s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 680s + r0 <- rowSds_R(x, na.rm = na.rm, useNames = useNames) 680s + r1 <- rowSds(x, na.rm = na.rm, useNames = useNames) 680s + r1b <- rowSds_center(x, na.rm = na.rm, useNames = useNames) 680s + r2 <- colSds(t(x), na.rm = na.rm, useNames = useNames) 680s + r2b <- colSds_center(t(x), na.rm = na.rm, useNames = useNames) 680s + stopifnot(all.equal(r1, r2)) 680s + stopifnot(all.equal(r1, r0)) 680s + stopifnot(all.equal(r2, r0)) 680s + stopifnot(all.equal(r1b, r2b)) 680s + stopifnot( 680s + !any(is.infinite(r1)), 680s + !any(is.infinite(r2)), 680s + !any(is.infinite(r1b)), 680s + !any(is.infinite(r2b)) 680s + ) 680s + } 680s + } 680s + } 680s + } 680s na.rm = FALSE 680s na.rm = TRUE 680s > 680s 680s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 680s Copyright (C) 2024 The R Foundation for Statistical Computing 680s Platform: powerpc64le-unknown-linux-gnu (64-bit) 680s 680s R is free software and comes with ABSOLUTELY NO WARRANTY. 680s You are welcome to redistribute it under certain conditions. 680s Type 'license()' or 'licence()' for distribution details. 680s 680s R is a collaborative project with many contributors. 680s Type 'contributors()' for more information and 680s 'citation()' on how to cite R or R packages in publications. 680s 680s Type 'demo()' for some demos, 'help()' for on-line help, or 680s 'help.start()' for an HTML browser interface to help. 680s Type 'q()' to quit R. 680s 680s > library("matrixStats") 680s > 680s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 680s > options(matrixStats.center.onUse = "ignore") 680s > 680s > ## Create isFALSE() if running on an old version of R 680s > if (!exists("isFALSE", mode="function")) { 680s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 680s + } 680s > 680s > rowSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 680s + suppressWarnings({ 680s + sigma <- apply(x, MARGIN = 1L, FUN = sd, na.rm = na.rm) 680s + }) 680s + stopifnot(!any(is.infinite(sigma))) 680s + 680s + # Keep naming support consistency same as rowSds() 680s + if (is.null(center) || ncol(x) <= 1L) { 680s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 680s + } 680s + else if (isFALSE(useNames)) names(sigma) <- NULL 680s + sigma 680s + } 680s > 680s > colSds_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 680s + suppressWarnings({ 680s + sigma <- apply(x, MARGIN = 2L, FUN = sd, na.rm = na.rm) 680s + }) 680s + stopifnot(!any(is.infinite(sigma))) 680s + 680s + # Keep naming support consistency same as colSds() 680s + if (is.null(center) || nrow(x) <= 1L) { 680s + if (is.na(useNames) || isFALSE(useNames)) names(sigma) <- NULL 680s + } 680s + else if (isFALSE(useNames)) names(sigma) <- NULL 680s + sigma 680s + } 680s > 680s > 680s > rowSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 680s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 680s + sigma <- rowSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 680s + stopifnot(!any(is.infinite(sigma))) 680s + sigma 680s + } 680s > 680s > colSds_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 680s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 680s + sigma <- colSds(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 680s + stopifnot(!any(is.infinite(sigma))) 680s + sigma 680s + } 680s > 680s > 680s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680s > # Subsetted tests 680s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 680s > source("utils/validateIndicesFramework.R") 680s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 680s > storage.mode(x) <- "integer" 680s > 680s > # To check names attribute 680s > dimnames <- list(letters[1:6], LETTERS[1:6]) 680s > 680s > # Test with and without dimnames on x 680s > for (setDimnames in c(TRUE, FALSE)) { 680s + if (setDimnames) dimnames(x) <- dimnames 680s + else dimnames(x) <- NULL 680s + 680s + count <- 0L 680s + for (rows in index_cases) { 680s + for (cols in index_cases) { 680s + count <- count + 1L 680s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 680s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 680s + useNames <- useNames[count %% length(useNames) + 1] 680s + 680s + validateIndicesTestMatrix(x, rows, cols, 680s + ftest = rowSds, fsure = rowSds_R, 680s + na.rm = na.rm, useNames = useNames) 680s + validateIndicesTestMatrix(x, rows, cols, 680s + ftest = rowSds_center, fsure = rowSds_R, 680s + na.rm = na.rm, center = TRUE, useNames = useNames) 680s + 680s + validateIndicesTestMatrix(x, rows, cols, 680s + fcoltest = colSds, fsure = rowSds_R, 680s + na.rm = na.rm, useNames = useNames) 680s + validateIndicesTestMatrix(x, rows, cols, 680s + fcoltest = colSds_center, fsure = rowSds_R, 680s + na.rm = na.rm, center = TRUE, useNames = useNames) 680s + } 680s + } 680s + } 681s > 681s 681s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 681s Copyright (C) 2024 The R Foundation for Statistical Computing 681s Platform: powerpc64le-unknown-linux-gnu (64-bit) 681s 681s R is free software and comes with ABSOLUTELY NO WARRANTY. 681s You are welcome to redistribute it under certain conditions. 681s Type 'license()' or 'licence()' for distribution details. 681s 681s R is a collaborative project with many contributors. 681s Type 'contributors()' for more information and 681s 'citation()' on how to cite R or R packages in publications. 681s 681s Type 'demo()' for some demos, 'help()' for on-line help, or 681s 'help.start()' for an HTML browser interface to help. 681s Type 'q()' to quit R. 681s 681s > library("matrixStats") 681s > 681s > rowSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 681s + ## FIXME: sum() may overflow for integers, whereas 681s + ## base::rowSums() doesn't. What should rowSums2() do? 681s + ## apply(x, MARGIN = 1L, FUN = sum, na.rm = na.rm) 681s + res <- rowSums(x, na.rm = na.rm) 681s + if (is.na(useNames) || !useNames) names(res) <- NULL 681s + res 681s + } 681s > 681s > colSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 681s + ## FIXME: sum() may overflow for integers, whereas 681s + ## base::colSums() doesn't. What should colSums2() do? 681s + ## apply(x, MARGIN = 2L, FUN = sum, na.rm = na.rm) 681s + res <- colSums(x, na.rm = na.rm) 681s + if (is.na(useNames) || !useNames) names(res) <- NULL 681s + res 681s + } 681s > 681s > for (mode in c("integer", "logical", "double")) { 681s + x <- matrix(-4:4, nrow = 3, ncol = 3) 681s + storage.mode(x) <- mode 681s + if (mode == "double") x <- x + 0.1 681s + 681s + # To check names attribute 681s + dimnames <- list(letters[1:3], LETTERS[1:3]) 681s + 681s + # Test with and without dimnames on x 681s + for (setDimnames in c(TRUE, FALSE)) { 681s + if (setDimnames) dimnames(x) <- dimnames 681s + else dimnames(x) <- NULL 681s + # Check names attribute 681s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 681s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 681s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 681s + stopifnot(all.equal(y1, y0)) 681s + 681s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 681s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 681s + stopifnot(all.equal(y1, y0)) 681s + } 681s + } 681s + } 681s > 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > # Special case: Single-element matrix 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > cat("Special case: Single-element matrix:\n") 681s Special case: Single-element matrix: 681s > for (mode in c("integer", "logical", "double")) { 681s + x <- matrix(1, nrow = 1, ncol = 1) 681s + storage.mode(x) <- mode 681s + 681s + # To check names attribute 681s + dimnames <- list("a", "A") 681s + 681s + # Test with and without dimnames on x 681s + for (setDimnames in c(TRUE, FALSE)) { 681s + if (setDimnames) dimnames(x) <- dimnames 681s + else dimnames(x) <- NULL 681s + # Check names attribute 681s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 681s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 681s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 681s + stopifnot(all.equal(y1, y0)) 681s + 681s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 681s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 681s + stopifnot(all.equal(y1, y0)) 681s + } 681s + } 681s + } 681s > 681s > 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > # Special case: Empty matrix 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > cat("Special case: Empty matrix:\n") 681s Special case: Empty matrix: 681s > for (mode in c("integer", "logical", "double")) { 681s + x <- matrix(integer(0), nrow = 0, ncol = 0) 681s + storage.mode(x) <- mode 681s + 681s + y0 <- rowSums2_R(x, na.rm = FALSE) 681s + y1 <- rowSums2(x, na.rm = FALSE) 681s + stopifnot(all.equal(y1, y0)) 681s + 681s + y0 <- colSums2_R(x, na.rm = FALSE) 681s + y1 <- colSums2(x, na.rm = FALSE) 681s + stopifnot(all.equal(y1, y0)) 681s + } 681s > 681s > 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > # Special case: All NAs 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > cat("Special case: All NAs:\n") 681s Special case: All NAs: 681s > for (mode in c("integer", "logical", "double")) { 681s + x <- matrix(NA_integer_, nrow = 3, ncol = 3) 681s + storage.mode(x) <- mode 681s + 681s + # To check names attribute 681s + dimnames <- list(letters[1:3], LETTERS[1:3]) 681s + 681s + # Test with and without dimnames on x 681s + for (setDimnames in c(TRUE, FALSE)) { 681s + if (setDimnames) dimnames(x) <- dimnames 681s + else dimnames(x) <- NULL 681s + # Check names attribute 681s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 681s + y0 <- rowSums2_R(x, na.rm = TRUE, useNames = useNames) 681s + y1 <- rowSums2(x, na.rm = TRUE, useNames = useNames) 681s + stopifnot(all.equal(y1, y0)) 681s + 681s + y0 <- colSums2_R(x, na.rm = TRUE, useNames = useNames) 681s + y1 <- colSums2(x, na.rm = TRUE, useNames = useNames) 681s + stopifnot(all.equal(y1, y0)) 681s + } 681s + } 681s + } 681s > 681s > 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > # Special case: All NaNs 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > cat("Special case: All NaNs:\n") 681s Special case: All NaNs: 681s > x <- matrix(NA_real_, nrow = 3, ncol = 3) 681s > 681s > # Test with and without dimnames on x 681s > for (setDimnames in c(TRUE, FALSE)) { 681s + if (setDimnames) dimnames(x) <- dimnames 681s + else dimnames(x) <- NULL 681s + # Check names attribute 681s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 681s + y0 <- rowSums2_R(x, na.rm = TRUE, useNames = useNames) 681s + y1 <- rowSums2(x, na.rm = TRUE, useNames = useNames) 681s + stopifnot(all.equal(y1, y0)) 681s + 681s + y0 <- colSums2_R(x, na.rm = TRUE, useNames = useNames) 681s + y1 <- colSums2(x, na.rm = TRUE, useNames = useNames) 681s + stopifnot(all.equal(y1, y0)) 681s + } 681s + } 681s > 681s > 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > # Special case: All Infs 681s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 681s > cat("Special case: All Infs:\n") 682s Special case: All Infs: 682s > x <- matrix(Inf, nrow = 3, ncol = 3) 682s > 682s > # Test with and without dimnames on x 682s > for (setDimnames in c(TRUE, FALSE)) { 682s + if (setDimnames) dimnames(x) <- dimnames 682s + else dimnames(x) <- NULL 682s + # Check names attribute 682s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 682s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 682s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 682s + stopifnot(all.equal(y1, y0)) 682s + 682s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 682s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 682s + stopifnot(all.equal(y1, y0)) 682s + } 682s + } 682s > 682s > 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > # Special case: All -Infs 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > cat("Special case: All -Infs:\n") 682s Special case: All -Infs: 682s > x <- matrix(-Inf, nrow = 3, ncol = 3) 682s > 682s > # Test with and without dimnames on x 682s > for (setDimnames in c(TRUE, FALSE)) { 682s + if (setDimnames) dimnames(x) <- dimnames 682s + else dimnames(x) <- NULL 682s + # Check names attribute 682s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 682s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 682s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 682s + stopifnot(all.equal(y1, y0)) 682s + 682s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 682s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 682s + stopifnot(all.equal(y1, y0)) 682s + } 682s + } 682s > 682s > 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > # Special case: Infs and -Infs 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > cat("Special case: Infs and -Infs:\n") 682s Special case: Infs and -Infs: 682s > x <- matrix(c(-Inf, +Inf), nrow = 4, ncol = 4) 682s > 682s > # To check names attribute 682s > dimnames <- list(letters[1:4], LETTERS[1:4]) 682s > 682s > # Test with and without dimnames on x 682s > for (setDimnames in c(TRUE, FALSE)) { 682s + if (setDimnames) dimnames(x) <- dimnames 682s + else dimnames(x) <- NULL 682s + # Check names attribute 682s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 682s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 682s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 682s + stopifnot(all.equal(y1, y0)) 682s + 682s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 682s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 682s + stopifnot(all.equal(y1, y0)) 682s + } 682s + } 682s > 682s > 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > # Special case: NaNs and NAs 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > cat("Special case: Infs and -Infs:\n") 682s Special case: Infs and -Infs: 682s > x <- matrix(c(NaN, NA_real_), nrow = 4, ncol = 4) 682s > 682s > y0 <- rowSums(x, na.rm = FALSE) 682s > str(y0) 682s num [1:4] NaN NA NaN NA 682s > stopifnot(all(is.na(y0)), length(unique(y0)) >= 1L) 682s > y1 <- rowSums2(x, na.rm = FALSE) 682s > str(y0) 682s num [1:4] NaN NA NaN NA 682s > stopifnot(all(is.na(y1)), length(unique(y1)) >= 1L) 682s > stopifnot(all.equal(y1, y0)) 682s > 682s > y0 <- colSums(x, na.rm = FALSE) 682s > stopifnot(all(is.na(y0)), length(unique(y0)) == 1L) 682s > y1 <- colSums2(x, na.rm = FALSE) 682s > stopifnot(all(is.na(y1)), length(unique(y1)) == 1L) 682s > ## NOTE, due to compiler optimization, it is not guaranteed that NA is 682s > ## returned here (as one would expect). NaN might very well be returned, 682s > ## when both NA and NaN are involved. This is an accepted feature in R, 682s > ## which is documented in help("is.nan"). See also 682s > ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 682s > ## Thus, we cannot guarantee that y1 is identical to y0. 682s > 682s > 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > # Special case: Integer overflow with ties 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > cat("Special case: Integer overflow with ties:\n") 682s Special case: Integer overflow with ties: 682s > x <- matrix(.Machine$integer.max, nrow = 4, ncol = 4) 682s > 682s > # Test with and without dimnames on x 682s > for (setDimnames in c(TRUE, FALSE)) { 682s + if (setDimnames) dimnames(x) <- dimnames 682s + else dimnames(x) <- NULL 682s + # Check names attribute 682s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 682s + y0 <- rowSums2_R(x, na.rm = FALSE, useNames = useNames) 682s + y1 <- rowSums2(x, na.rm = FALSE, useNames = useNames) 682s + stopifnot(all.equal(y1, y0)) 682s + 682s + y0 <- colSums2_R(x, na.rm = FALSE, useNames = useNames) 682s + y1 <- colSums2(x, na.rm = FALSE, useNames = useNames) 682s + stopifnot(all.equal(y1, y0)) 682s + } 682s + } 682s > 682s > 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > # Consistency checks 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > set.seed(1) 682s > 682s > cat("Consistency checks:\n") 682s Consistency checks: 682s > n_sims <- if (Sys.getenv("_R_CHECK_USE_VALGRIND_") != "") 4L else 20L 682s > for (kk in seq_len(n_sims)) { 682s + cat("Random test #", kk, "\n", sep = "") 682s + 682s + # Simulate data in a matrix of any shape 682s + dim <- sample(50:200, size = 2) 682s + n <- prod(dim) 682s + x <- rnorm(n, sd = 100) 682s + dim(x) <- dim 682s + 682s + # Add NAs? 682s + if ((kk %% 4) %in% c(3, 0)) { 682s + cat("Adding NAs\n") 682s + nna <- sample(n, size = 1) 682s + na_values <- c(NA_real_, NaN) 682s + t <- sample(na_values, size = nna, replace = TRUE) 682s + x[sample(length(x), size = nna)] <- t 682s + } 682s + 682s + # Mode? 682s + modes <- "double" 682s + if ((kk %% 4) %in% c(2, 0)) { 682s + modes <- c("integer", "logical") 682s + } 682s + 682s + for (mode in modes) { 682s + if (mode != "double") { 682s + cat(sprintf("Coercing from %s to %s\n", storage.mode(x), mode)) 682s + storage.mode(x) <- mode 682s + } 682s + 682s + na.rm <- sample(c(TRUE, FALSE), size = 1) 682s + 682s + # rowSums2(): 682s + y0 <- rowSums2_R(x, na.rm = na.rm) 682s + y1 <- rowSums2(x, na.rm = na.rm) 682s + stopifnot(all.equal(y1, y0)) 682s + y2 <- colSums2(t(x), na.rm = na.rm) 682s + stopifnot(all.equal(y2, y0)) 682s + 682s + # colSums2(): 682s + y0 <- colSums2_R(x, na.rm = na.rm) 682s + y1 <- colSums2(x, na.rm = na.rm) 682s + stopifnot(all.equal(y1, y0)) 682s + y2 <- rowSums2(t(x), na.rm = na.rm) 682s + stopifnot(all.equal(y2, y0)) 682s + } 682s + } # for (kk ...) 682s Random test #1 682s Random test #2 682s Coercing from double to integer 682s Coercing from integer to logical 682s Random test #3 682s Adding NAs 682s Random test #4 682s Adding NAs 682s Coercing from double to integer 682s Coercing from integer to logical 682s Random test #5 682s Random test #6 682s Coercing from double to integer 682s Coercing from integer to logical 682s Random test #7 682s Adding NAs 682s Random test #8 682s Adding NAs 682s Coercing from double to integer 682s Coercing from integer to logical 682s Random test #9 682s Random test #10 682s Coercing from double to integer 682s Coercing from integer to logical 682s Random test #11 682s Adding NAs 682s Random test #12 682s Adding NAs 682s Coercing from double to integer 682s Coercing from integer to logical 682s Random test #13 682s Random test #14 682s Coercing from double to integer 682s Coercing from integer to logical 682s Random test #15 682s Adding NAs 682s Random test #16 682s Adding NAs 682s Coercing from double to integer 682s Coercing from integer to logical 682s Random test #17 682s Random test #18 682s Coercing from double to integer 682s Coercing from integer to logical 682s Random test #19 682s Adding NAs 682s Random test #20 682s Adding NAs 682s Coercing from double to integer 682s Coercing from integer to logical 682s > 682s 682s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 682s Copyright (C) 2024 The R Foundation for Statistical Computing 682s Platform: powerpc64le-unknown-linux-gnu (64-bit) 682s 682s R is free software and comes with ABSOLUTELY NO WARRANTY. 682s You are welcome to redistribute it under certain conditions. 682s Type 'license()' or 'licence()' for distribution details. 682s 682s R is a collaborative project with many contributors. 682s Type 'contributors()' for more information and 682s 'citation()' on how to cite R or R packages in publications. 682s 682s Type 'demo()' for some demos, 'help()' for on-line help, or 682s 'help.start()' for an HTML browser interface to help. 682s Type 'q()' to quit R. 682s 682s > library("matrixStats") 682s > 682s > rowSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 682s + ## FIXME: sum() may overflow for integers, whereas 682s + ## base::rowSums() doesn't. What should rowSums2() do? 682s + ## apply(x, MARGIN = 1L, FUN = sum, na.rm = na.rm) 682s + res <- rowSums(x, na.rm = na.rm) 682s + if (is.na(useNames) || !useNames) names(res) <- NULL 682s + res 682s + } 682s > 682s > colSums2_R <- function(x, na.rm = FALSE, ..., useNames = NA) { 682s + ## FIXME: sum() may overflow for integers, whereas 682s + ## base::colSums() doesn't. What should colSums2() do? 682s + ## apply(x, MARGIN = 2L, FUN = sum, na.rm = na.rm) 682s + res <- colSums(x, na.rm = na.rm) 682s + if (is.na(useNames) || !useNames) names(res) <- NULL 682s + res 682s + } 682s > 682s > 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > # Subsetted tests 682s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 682s > source("utils/validateIndicesFramework.R") 682s > x <- matrix(runif(6 * 6, min = -3, max = 3), nrow = 6, ncol = 6) 682s > storage.mode(x) <- "integer" 682s > 682s > # To check names attribute 682s > dimnames <- list(letters[1:6], LETTERS[1:6]) 682s > 682s > # Test with and without dimnames on x 682s > for (setDimnames in c(TRUE, FALSE)) { 682s + if (setDimnames) dimnames(x) <- dimnames 682s + else dimnames(x) <- NULL 682s + for (rows in index_cases) { 682s + for (cols in index_cases) { 682s + for (na.rm in c(TRUE, FALSE)) { 682s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 682s + validateIndicesTestMatrix(x, rows, cols, 682s + ftest = rowSums2, fsure = rowSums2_R, 682s + na.rm = na.rm, useNames = useNames) 682s + validateIndicesTestMatrix(x, rows, cols, 682s + fcoltest = colSums2, fsure = rowSums2_R, 682s + na.rm = na.rm, useNames = useNames) 682s + } 682s + } 682s + } 682s + } 682s + } 683s > 683s 683s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 683s Copyright (C) 2024 The R Foundation for Statistical Computing 683s Platform: powerpc64le-unknown-linux-gnu (64-bit) 683s 683s R is free software and comes with ABSOLUTELY NO WARRANTY. 683s You are welcome to redistribute it under certain conditions. 683s Type 'license()' or 'licence()' for distribution details. 683s 683s R is a collaborative project with many contributors. 683s Type 'contributors()' for more information and 683s 'citation()' on how to cite R or R packages in publications. 683s 683s Type 'demo()' for some demos, 'help()' for on-line help, or 683s 'help.start()' for an HTML browser interface to help. 683s Type 'q()' to quit R. 683s 683s > library("matrixStats") 683s > 683s > nrow <- 6L 683s > ncol <- 5L 683s > data <- matrix(0:4, nrow = nrow, ncol = ncol) 683s > 683s > # To check names attribute 683s > dimnames <- list(letters[1:6], LETTERS[1:5]) 683s > 683s > modes <- c("integer", "logical", "raw") 683s > for (mode in modes) { 683s + cat(sprintf("Mode: %s...\n", mode)) 683s + 683s + x <- data 683s + if (mode == "logical") x <- x - 2L 683s + if (mode != "raw") x[c(2,5,7)] <- NA_integer_ 683s + storage.mode(x) <- mode 683s + print(x) 683s + 683s + unique_values <- unique(as.vector(x)) 683s + nbr_of_unique_values <- length(unique_values) 683s + 683s + y <- rowTabulates(x) 683s + print(y) 683s + stopifnot( 683s + identical(dim(y), c(nrow, nbr_of_unique_values)), 683s + all(y >= 0) 683s + ) 683s + if (mode != "raw") { 683s + y0 <- t(table(x, row(x), useNA = "always")[, seq_len(nrow(x))]) 683s + stopifnot(all(y == y0)) 683s + } 683s + # Check names attribute 683s + dimnames(x) <- dimnames 683s + y1 <- rowTabulates(x, useNames = FALSE) 683s + stopifnot(all.equal(y1, y)) 683s + if (!matrixStats:::isUseNamesNADefunct()) { 683s + y2 <- rowTabulates(x, useNames = NA) 683s + stopifnot(all.equal(y2, y)) 683s + } 683s + y <- rowTabulates(x, useNames = TRUE) 683s + stopifnot(identical(rownames(y), rownames(x))) 683s + dimnames(x) <- NULL 683s + 683s + y <- colTabulates(x) 683s + print(y) 683s + stopifnot( 683s + identical(dim(y), c(ncol, nbr_of_unique_values)), 683s + all(y >= 0) 683s + ) 683s + if (mode != "raw") { 683s + y0 <- t(table(x, col(x), useNA = "always")[, seq_len(ncol(x))]) 683s + stopifnot(all(y == y0)) 683s + } 683s + # Check names attribute 683s + dimnames(x) <- dimnames 683s + y1 <- colTabulates(x, useNames = FALSE) 683s + stopifnot(all.equal(y1, y)) 683s + if (!matrixStats:::isUseNamesNADefunct()) { 683s + y2 <- colTabulates(x, useNames = NA) 683s + stopifnot(all.equal(y2, y)) 683s + } 683s + y <- colTabulates(x, useNames = TRUE) 683s + stopifnot(identical(rownames(y), colnames(x))) 683s + dimnames(x) <- NULL 683s + 683s + # Count only certain values 683s + if (mode == "integer") { 683s + subset <- c(0:2, NA_integer_) 683s + } else if (mode == "logical") { 683s + subset <- c(TRUE, FALSE, NA) 683s + } else { 683s + subset <- c(0:2) 683s + } 683s + y <- rowTabulates(x, values = subset) 683s + print(y) 683s + stopifnot(identical(dim(y), c(nrow, length(subset)))) 683s + # Check names attribute 683s + dimnames(x) <- dimnames 683s + y1 <- rowTabulates(x, values = subset, useNames = FALSE) 683s + stopifnot(all.equal(y1, y)) 683s + if (!matrixStats:::isUseNamesNADefunct()) { 683s + y2 <- rowTabulates(x, values = subset, useNames = NA) 683s + stopifnot(all.equal(y2, y)) 683s + } 683s + y <- rowTabulates(x, values = subset, useNames = TRUE) 683s + stopifnot(identical(rownames(y), rownames(x))) 683s + dimnames(x) <- NULL 683s + 683s + y <- colTabulates(x, values = subset) 683s + print(y) 683s + stopifnot(identical(dim(y), c(ncol, length(subset)))) 683s + # Check names attribute 683s + dimnames(x) <- dimnames 683s + y1 <- colTabulates(x, values = subset, useNames = FALSE) 683s + stopifnot(all.equal(y1, y)) 683s + if (!matrixStats:::isUseNamesNADefunct()) { 683s + y2 <- colTabulates(x, values = subset, useNames = NA) 683s + stopifnot(all.equal(y2, y)) 683s + } 683s + y <- colTabulates(x, values = subset, useNames = TRUE) 683s + stopifnot(identical(rownames(y), colnames(x))) 683s + dimnames(x) <- NULL 683s + 683s + # Raw 683s + if (mode %in% c("integer", "raw")) { 683s + subset <- c(0:2) 683s + 683s + y <- rowTabulates(x, values = as.raw(subset)) 683s + print(y) 683s + stopifnot(identical(dim(y), c(nrow, length(subset)))) 683s + # Check names attribute 683s + dimnames(x) <- dimnames 683s + y1 <- rowTabulates(x, values = as.raw(subset), useNames = FALSE) 683s + stopifnot(all.equal(y1, y)) 683s + if (!matrixStats:::isUseNamesNADefunct()) { 683s + y2 <- rowTabulates(x, values = as.raw(subset), useNames = NA) 683s + stopifnot(all.equal(y2, y)) 683s + } 683s + y3 <- rowTabulates(x, values = as.raw(subset), useNames = TRUE) 683s + stopifnot(identical(rownames(y3), rownames(x))) 683s + dimnames(x) <- NULL 683s + 683s + y2 <- colTabulates(t(x), values = as.raw(subset)) 683s + print(y2) 683s + stopifnot( 683s + identical(dim(y2), c(nrow, length(subset))), 683s + identical(y2, y) 683s + ) 683s + # Check names attribute 683s + dimnames(x) <- dimnames 683s + y1 <- colTabulates(t(x), values = as.raw(subset), useNames = FALSE) 683s + stopifnot(all.equal(y1, y)) 683s + if (!matrixStats:::isUseNamesNADefunct()) { 683s + y2 <- colTabulates(t(x), values = as.raw(subset), useNames = NA) 683s + stopifnot(all.equal(y2, y)) 683s + } 683s + y <- colTabulates(t(x), values = as.raw(subset), useNames = TRUE) 683s + stopifnot(identical(rownames(y), colnames(t(x)))) 683s + dimnames(x) <- NULL 683s + } 683s + 683s + cat(sprintf("Mode: %s...done\n", mode)) 683s + } # for (mode ...) 683s Mode: integer... 683s [,1] [,2] [,3] [,4] [,5] 683s [1,] 0 NA 2 3 4 683s [2,] NA 2 3 4 0 683s [3,] 2 3 4 0 1 683s [4,] 3 4 0 1 2 683s [5,] NA 0 1 2 3 683s [6,] 0 1 2 3 4 683s 0 1 2 3 4 683s [1,] 1 0 1 1 1 1 683s [2,] 1 0 1 1 1 1 683s [3,] 1 1 1 1 1 0 683s [4,] 1 1 1 1 1 0 683s [5,] 1 1 1 1 0 1 683s [6,] 1 1 1 1 1 0 683s 0 1 2 3 4 683s [1,] 2 0 1 1 0 2 683s [2,] 1 1 1 1 1 1 683s [3,] 1 1 2 1 1 0 683s [4,] 1 1 1 2 1 0 683s [5,] 1 1 1 1 2 0 683s 0 1 2 683s [1,] 1 0 1 1 683s [2,] 1 0 1 1 683s [3,] 1 1 1 0 683s [4,] 1 1 1 0 683s [5,] 1 1 1 1 683s [6,] 1 1 1 0 683s 0 1 2 683s [1,] 2 0 1 2 683s [2,] 1 1 1 1 683s [3,] 1 1 2 0 683s [4,] 1 1 1 0 683s [5,] 1 1 1 0 683s 0x0 0x1 0x2 683s [1,] 1 0 1 683s [2,] 1 0 1 683s [3,] 1 1 1 683s [4,] 1 1 1 683s [5,] 1 1 1 683s [6,] 1 1 1 683s 0x0 0x1 0x2 683s [1,] 1 0 1 683s [2,] 1 0 1 683s [3,] 1 1 1 683s [4,] 1 1 1 683s [5,] 1 1 1 683s [6,] 1 1 1 683s Mode: integer...done 683s Mode: logical... 683s [,1] [,2] [,3] [,4] [,5] 683s [1,] TRUE NA FALSE TRUE TRUE 683s [2,] NA FALSE TRUE TRUE TRUE 683s [3,] FALSE TRUE TRUE TRUE TRUE 683s [4,] TRUE TRUE TRUE TRUE FALSE 683s [5,] NA TRUE TRUE FALSE TRUE 683s [6,] TRUE TRUE FALSE TRUE TRUE 683s FALSE TRUE 683s [1,] 1 3 1 683s [2,] 1 3 1 683s [3,] 1 4 0 683s [4,] 1 4 0 683s [5,] 1 3 1 683s [6,] 1 4 0 683s FALSE TRUE 683s [1,] 1 3 2 683s [2,] 1 4 1 683s [3,] 2 4 0 683s [4,] 1 5 0 683s [5,] 1 5 0 683s TRUE FALSE 683s [1,] 3 1 1 683s [2,] 3 1 1 683s [3,] 4 1 0 683s [4,] 4 1 0 683s [5,] 3 1 1 683s [6,] 4 1 0 683s TRUE FALSE 683s [1,] 3 1 2 683s [2,] 4 1 1 683s [3,] 4 2 0 683s [4,] 5 1 0 683s [5,] 5 1 0 683s Mode: logical...done 683s Mode: raw... 683s [,1] [,2] [,3] [,4] [,5] 683s [1,] 00 01 02 03 04 683s [2,] 01 02 03 04 00 683s [3,] 02 03 04 00 01 683s [4,] 03 04 00 01 02 683s [5,] 04 00 01 02 03 683s [6,] 00 01 02 03 04 683s 0x0 0x1 0x2 0x3 0x4 683s [1,] 1 1 1 1 1 683s [2,] 1 1 1 1 1 683s [3,] 1 1 1 1 1 683s [4,] 1 1 1 1 1 683s [5,] 1 1 1 1 1 683s [6,] 1 1 1 1 1 683s 0x0 0x1 0x2 0x3 0x4 683s [1,] 2 1 1 1 1 683s [2,] 1 2 1 1 1 683s [3,] 1 1 2 1 1 683s [4,] 1 1 1 2 1 683s [5,] 1 1 1 1 2 683s 0 1 2 683s [1,] 1 1 1 683s [2,] 1 1 1 683s [3,] 1 1 1 683s [4,] 1 1 1 683s [5,] 1 1 1 683s [6,] 1 1 1 683s 0 1 2 683s [1,] 2 1 1 683s [2,] 1 2 1 683s [3,] 1 1 2 683s [4,] 1 1 1 683s [5,] 1 1 1 683s 0x0 0x1 0x2 683s [1,] 1 1 1 683s [2,] 1 1 1 683s [3,] 1 1 1 683s [4,] 1 1 1 683s [5,] 1 1 1 683s [6,] 1 1 1 683s 0x0 0x1 0x2 683s [1,] 1 1 1 683s [2,] 1 1 1 683s [3,] 1 1 1 683s [4,] 1 1 1 683s [5,] 1 1 1 683s [6,] 1 1 1 683s Mode: raw...done 683s > 683s 683s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 683s Copyright (C) 2024 The R Foundation for Statistical Computing 683s Platform: powerpc64le-unknown-linux-gnu (64-bit) 683s 683s R is free software and comes with ABSOLUTELY NO WARRANTY. 683s You are welcome to redistribute it under certain conditions. 683s Type 'license()' or 'licence()' for distribution details. 683s 683s R is a collaborative project with many contributors. 683s Type 'contributors()' for more information and 683s 'citation()' on how to cite R or R packages in publications. 683s 683s Type 'demo()' for some demos, 'help()' for on-line help, or 683s 'help.start()' for an HTML browser interface to help. 683s Type 'q()' to quit R. 683s 683s > library("matrixStats") 683s > 683s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 683s > # Subsetted tests 683s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 683s > source("utils/validateIndicesFramework.R") 683s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 683s > storage.mode(x) <- "integer" 683s > 683s > # To check names attribute 683s > dimnames <- list(letters[1:6], LETTERS[1:6]) 683s > 683s > # Test with and without dimnames on x 683s > for (setDimnames in c(TRUE, FALSE)) { 683s + if (setDimnames) dimnames(x) <- dimnames 683s + else dimnames(x) <- NULL 683s + 683s + count <- 0L 683s + for (rows in index_cases) { 683s + for (cols in index_cases) { 683s + count <- count + 1L 683s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 683s + useNames <- useNames[count %% length(useNames) + 1] 683s + 683s + validateIndicesTestMatrix(x, rows, cols, 683s + ftest = rowTabulates, fsure = rowTabulates, useNames = useNames) 683s + validateIndicesTestMatrix(x, rows, cols, 683s + ftest = rowTabulates, fsure = rowTabulates, 683s + values = 1:3, useNames = useNames) 683s + 683s + validateIndicesTestMatrix(x, rows, cols, 683s + ftest = colTabulates, fsure = colTabulates, useNames = useNames) 683s + validateIndicesTestMatrix(x, rows, cols, 683s + ftest = colTabulates, fsure = colTabulates, 683s + values = 1:3, useNames = useNames) 683s + } 683s + } 683s + } 685s > 685s 685s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 685s Copyright (C) 2024 The R Foundation for Statistical Computing 685s Platform: powerpc64le-unknown-linux-gnu (64-bit) 685s 685s R is free software and comes with ABSOLUTELY NO WARRANTY. 685s You are welcome to redistribute it under certain conditions. 685s Type 'license()' or 'licence()' for distribution details. 685s 685s R is a collaborative project with many contributors. 685s Type 'contributors()' for more information and 685s 'citation()' on how to cite R or R packages in publications. 685s 685s Type 'demo()' for some demos, 'help()' for on-line help, or 685s 'help.start()' for an HTML browser interface to help. 685s Type 'q()' to quit R. 685s 685s > library("matrixStats") 685s > 685s > fcns <- list( 685s + rowVarDiffs = list(rowVarDiffs, colVarDiffs), 685s + rowSdDiffs = list(rowSdDiffs, colSdDiffs), 685s + rowMadDiffs = list(rowMadDiffs, colMadDiffs), 685s + rowIQRDiffs = list(rowIQRDiffs, colIQRDiffs) 685s + ) 685s > 685s > for (fcn in names(fcns)) { 685s + cat(sprintf("%s()...\n", fcn)) 685s + row_fcn <- fcns[[fcn]][[1L]] 685s + col_fcn <- fcns[[fcn]][[2L]] 685s + 685s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 685s + # With and without some NAs 685s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 685s + for (mode in c("integer", "double")) { 685s + for (add_na in c(FALSE, TRUE)) { 685s + cat("add_na = ", add_na, "\n", sep = "") 685s + 685s + x <- matrix(1:50 + 0.1, nrow = 10L, ncol = 5L) 685s + if (add_na) { 685s + x[3:7, c(2, 4)] <- NA_real_ 685s + } 685s + cat("mode: ", mode, "\n", sep = "") 685s + storage.mode(x) <- mode 685s + str(x) 685s + 685s + # To check names attribute 685s + dimnames <- list(letters[1:10], LETTERS[1:5]) 685s + 685s + # Test with and without dimnames on x 685s + for (setDimnames in c(TRUE, FALSE)) { 685s + if (setDimnames) dimnames(x) <- dimnames 685s + else dimnames(x) <- NULL 685s + # Row/column ranges 685s + for (na.rm in c(FALSE, TRUE)) { 685s + # Check names attribute 685s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 685s + cat("na.rm = ", na.rm, "\n", sep = "") 685s + r1 <- row_fcn(x, na.rm = na.rm, useNames = useNames) 685s + r2 <- col_fcn(t(x), na.rm = na.rm, useNames = useNames) 685s + stopifnot(all.equal(r1, r2)) 685s + } 685s + } 685s + } 685s + } # for (add_na ...) 685s + } 685s + 685s + 685s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 685s + # All NAs 685s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 685s + for (mode in c("integer", "double")) { 685s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 685s + cat("mode: ", mode, "\n", sep = "") 685s + storage.mode(x) <- mode 685s + str(x) 685s + 685s + # Test with and without dimnames on x 685s + for (setDimnames in c(TRUE, FALSE)) { 685s + if (setDimnames) dimnames(x) <- dimnames 685s + else dimnames(x) <- NULL 685s + # Row/column ranges 685s + for (na.rm in c(FALSE, TRUE)) { 685s + # Check names attribute 685s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 685s + cat("na.rm = ", na.rm, "\n", sep = "") 685s + r1 <- row_fcn(x, na.rm = na.rm, useNames = useNames) 685s + r2 <- col_fcn(t(x), na.rm = na.rm, useNames = useNames) 685s + stopifnot(all.equal(r1, r2)) 685s + } 685s + } 685s + } 685s + } 685s + 685s + 685s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 685s + # A 1x1 matrix 685s + # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 685s + x <- matrix(0, nrow = 1L, ncol = 1L) 685s + dimnames <- list("a", "A") 685s + # Test with and without dimnames on x 685s + for (setDimnames in c(TRUE, FALSE)) { 685s + if (setDimnames) dimnames(x) <- dimnames 685s + else dimnames(x) <- NULL 685s + # Row/column ranges 685s + for (na.rm in c(FALSE, TRUE)) { 685s + # Check names attribute 685s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 685s + cat("na.rm = ", na.rm, "\n", sep = "") 685s + r1 <- row_fcn(x, na.rm = na.rm, useNames = useNames) 685s + r2 <- col_fcn(t(x), na.rm = na.rm, useNames = useNames) 685s + stopifnot(all.equal(r1, r2)) 685s + } 685s + } 685s + } 685s + 685s + cat(sprintf("%s()...DONE\n", fcn)) 685s + } # for (fcn ...) 685s rowVarDiffs()... 685s add_na = FALSE 685s mode: integer 685s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 685s na.rm = FALSE 685s na.rm = FALSE 685s na.rm = TRUE 685s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = TRUE 686s mode: integer 686s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = FALSE 686s mode: double 686s 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 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = TRUE 686s mode: double 686s 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 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s mode: integer 686s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s mode: double 686s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s rowVarDiffs()...DONE 686s rowSdDiffs()... 686s add_na = FALSE 686s mode: integer 686s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = TRUE 686s mode: integer 686s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = FALSE 686s mode: double 686s 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 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = TRUE 686s mode: double 686s 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 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s mode: integer 686s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s mode: double 686s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s rowSdDiffs()...DONE 686s rowMadDiffs()... 686s add_na = FALSE 686s mode: integer 686s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = TRUE 686s mode: integer 686s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = FALSE 686s mode: double 686s 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 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = TRUE 686s mode: double 686s 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 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s mode: integer 686s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s mode: double 686s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s rowMadDiffs()...DONE 686s rowIQRDiffs()... 686s add_na = FALSE 686s mode: integer 686s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = TRUE 686s mode: integer 686s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = FALSE 686s mode: double 686s 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 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s add_na = TRUE 686s mode: double 686s 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 ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s mode: integer 686s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s mode: double 686s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s na.rm = FALSE 686s na.rm = FALSE 686s na.rm = TRUE 686s na.rm = TRUE 686s rowIQRDiffs()...DONE 686s > 686s 686s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 686s Copyright (C) 2024 The R Foundation for Statistical Computing 686s Platform: powerpc64le-unknown-linux-gnu (64-bit) 686s 686s R is free software and comes with ABSOLUTELY NO WARRANTY. 686s You are welcome to redistribute it under certain conditions. 686s Type 'license()' or 'licence()' for distribution details. 686s 686s R is a collaborative project with many contributors. 686s Type 'contributors()' for more information and 686s 'citation()' on how to cite R or R packages in publications. 686s 686s Type 'demo()' for some demos, 'help()' for on-line help, or 686s 'help.start()' for an HTML browser interface to help. 686s Type 'q()' to quit R. 686s 686s > library("matrixStats") 686s > 686s > fcns <- list( 686s + madDiff = c(rowMadDiffs, colMadDiffs), 686s + iqrDiff = c(rowIQRDiffs, colIQRDiffs) 686s + ) 686s > 686s > 686s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 686s > # Subsetted tests 686s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 686s > source("utils/validateIndicesFramework.R") 686s > # To check names attribute 686s > dimnames <- list(letters[1:6], LETTERS[1:6]) 686s > trim <- runif(1, min = 0, max = 0.5) 686s > for (fcn in names(fcns)) { 686s + cat(sprintf("subsetted tests on %s()...\n", fcn)) 686s + row_fcn <- fcns[[fcn]][[1L]] 686s + col_fcn <- fcns[[fcn]][[2L]] 686s + 686s + for (mode in c("numeric", "integer")) { 686s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 686s + storage.mode(x) <- mode 686s + if (mode == "numeric") x[1:2, 3:4] <- Inf 686s + 686s + # Test with and without dimnames on x 686s + for (setDimnames in c(TRUE, FALSE)) { 686s + if (setDimnames) dimnames(x) <- dimnames 686s + else dimnames(x) <- NULL 686s + 686s + count <- 0L 686s + for (diff in 1:2) { 686s + for (rows in index_cases) { 686s + for (cols in index_cases) { 686s + count <- count + 1L 686s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 686s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 686s + useNames <- useNames[count %% length(useNames) + 1] 686s + validateIndicesTestMatrix(x, rows, cols, 686s + ftest = row_fcn, fsure = row_fcn, 686s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 686s + validateIndicesTestMatrix(x, rows, cols, 686s + fcoltest = col_fcn, fsure = row_fcn, 686s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 686s + } 686s + } 686s + } 686s + } 686s + } 686s + cat(sprintf("%s()...DONE\n", fcn)) 686s + } 686s subsetted tests on madDiff()... 689s madDiff()...DONE 689s subsetted tests on iqrDiff()... 692s iqrDiff()...DONE 692s > 692s 692s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 692s Copyright (C) 2024 The R Foundation for Statistical Computing 692s Platform: powerpc64le-unknown-linux-gnu (64-bit) 692s 692s R is free software and comes with ABSOLUTELY NO WARRANTY. 692s You are welcome to redistribute it under certain conditions. 692s Type 'license()' or 'licence()' for distribution details. 692s 692s R is a collaborative project with many contributors. 692s Type 'contributors()' for more information and 692s 'citation()' on how to cite R or R packages in publications. 692s 692s Type 'demo()' for some demos, 'help()' for on-line help, or 692s 'help.start()' for an HTML browser interface to help. 692s Type 'q()' to quit R. 692s 692s > library("matrixStats") 692s > 692s > fcns <- list( 692s + varDiff = c(rowVarDiffs, colVarDiffs), 692s + sdDiff = c(rowSdDiffs, colSdDiffs) 692s + ) 692s > 692s > 692s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 692s > # Subsetted tests 692s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 692s > source("utils/validateIndicesFramework.R") 692s > # To check names attribute 692s > dimnames <- list(letters[1:6], LETTERS[1:6]) 692s > trim <- runif(1, min = 0, max = 0.5) 692s > for (fcn in names(fcns)) { 692s + cat(sprintf("subsetted tests on %s()...\n", fcn)) 692s + row_fcn <- fcns[[fcn]][[1L]] 692s + col_fcn <- fcns[[fcn]][[2L]] 692s + 692s + for (mode in c("numeric", "integer")) { 692s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 692s + storage.mode(x) <- mode 692s + if (mode == "numeric") x[1:2, 3:4] <- Inf 692s + 692s + # Test with and without dimnames on x 692s + for (setDimnames in c(TRUE, FALSE)) { 692s + if (setDimnames) dimnames(x) <- dimnames 692s + else dimnames(x) <- NULL 692s + 692s + count <- 0L 692s + for (diff in 1:2) { 692s + for (rows in index_cases) { 692s + for (cols in index_cases) { 692s + count <- count + 1L 692s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 692s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 692s + useNames <- useNames[count %% length(useNames) + 1] 692s + 692s + validateIndicesTestMatrix(x, rows, cols, 692s + ftest = row_fcn, fsure = row_fcn, 692s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 692s + validateIndicesTestMatrix(x, rows, cols, 692s + fcoltest = col_fcn, fsure = row_fcn, 692s + na.rm = na.rm, diff = diff, trim = trim, useNames = useNames) 692s + } 692s + } 692s + } 692s + } 692s + } 692s + cat(sprintf("%s()...DONE\n", fcn)) 692s + } 692s subsetted tests on varDiff()... 695s varDiff()...DONE 695s subsetted tests on sdDiff()... 697s sdDiff()...DONE 697s > 697s 697s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 697s Copyright (C) 2024 The R Foundation for Statistical Computing 697s Platform: powerpc64le-unknown-linux-gnu (64-bit) 697s 697s R is free software and comes with ABSOLUTELY NO WARRANTY. 697s You are welcome to redistribute it under certain conditions. 697s Type 'license()' or 'licence()' for distribution details. 697s 697s R is a collaborative project with many contributors. 697s Type 'contributors()' for more information and 697s 'citation()' on how to cite R or R packages in publications. 697s 697s Type 'demo()' for some demos, 'help()' for on-line help, or 697s 'help.start()' for an HTML browser interface to help. 697s Type 'q()' to quit R. 697s 697s > library("matrixStats") 697s > 697s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 697s > options(matrixStats.center.onUse = "ignore") 697s > options(matrixStats.vars.formula.freq = Inf) 697s > 697s > ## Create isFALSE() if running on an old version of R 697s > if (!exists("isFALSE", mode="function")) { 697s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 697s + } 697s > 697s > rowVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 697s + suppressWarnings({ 697s + res <- apply(x, MARGIN = 1L, FUN = var, na.rm = na.rm) 697s + }) 697s + stopifnot(!any(is.infinite(res))) 697s + 697s + # Keep naming support consistency same as rowVars() 697s + if (is.null(center) || ncol(x) <= 1L) { 697s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 697s + } 697s + else if (isFALSE(useNames)) names(res) <- NULL 697s + res 697s + } 697s > 697s > colVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 697s + suppressWarnings({ 697s + res <- apply(x, MARGIN = 2L, FUN = var, na.rm = na.rm) 697s + }) 697s + stopifnot(!any(is.infinite(res))) 697s + 697s + # Keep naming support consistency same as colVars() 697s + if (is.null(center) || ncol(x) <= 1L) { 697s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 697s + } 697s + else if (isFALSE(useNames)) names(res) <- NULL 697s + res 697s + } 697s > 697s > 697s > rowVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 697s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 697s + res <- rowVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 697s + stopifnot(!any(is.infinite(res))) 697s + res 697s + } 697s > 697s > colVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 697s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 697s + res <- colVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 697s + stopifnot(!any(is.infinite(res))) 697s + res 697s + } 697s > 697s > rowVars_center_naive <- function(x, rows = NULL, cols = NULL, center = NULL, na.rm = FALSE, ..., useNames = NA) { 697s + x <- sweep(x, MARGIN = 1, STATS = as.array(center), FUN = "-") 697s + x[is.infinite(center), ] <- NaN 697s + res <- rowVars(x, rows = rows, cols = cols, center = rep(0, times = nrow(x)), na.rm = na.rm, useNames = useNames) 697s + stopifnot(!any(is.infinite(res))) 697s + res 697s + } 697s > 697s > colVars_center_naive <- function(x, rows = NULL, cols = NULL, center = NULL, na.rm = FALSE, ..., useNames = NA) { 697s + x <- sweep(x, MARGIN = 2, STATS = as.array(center), FUN = "-") 697s + x[, is.infinite(center)] <- NaN 697s + res <- colVars(x, rows = rows, cols = cols, center = rep(0, times = ncol(x)), na.rm = na.rm, useNames = useNames) 697s + stopifnot(!any(is.infinite(res))) 697s + res 697s + } 697s > 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > # With and without some NAs or Infs 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > for (mode in c("integer", "double")) { 697s + if (mode == "integer") { 697s + specials <- c(0L, NA_integer_) 697s + delta <- 0L 697s + } else { 697s + specials <- c(0, NA_real_, Inf) 697s + delta <- 0.1 697s + } 697s + 697s + for (special in specials) { 697s + cat("special = ", special, "\n", sep = "") 697s + x <- matrix(1:50 + delta, nrow = 10L, ncol = 5L) 697s + x[3:7, c(2, 4)] <- special 697s + cat("mode: ", mode, "\n", sep = "") 697s + str(x) 697s + stopifnot(storage.mode(x) == mode) 697s + 697s + # To check names attribute 697s + dimnames <- list(letters[1:10], LETTERS[1:5]) 697s + 697s + # Test with and without dimnames on x 697s + for (setDimnames in c(TRUE, FALSE)) { 697s + if (setDimnames) dimnames(x) <- dimnames 697s + else dimnames(x) <- NULL 697s + # Row/column variance 697s + for (na.rm in c(FALSE, TRUE)) { 697s + # Check names attribute 697s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 697s + cat("na.rm = ", na.rm, "\n", sep = "") 697s + center <- rowMeans(x, na.rm = na.rm) 697s + 697s + r0 <- rowVars_R(x, na.rm = na.rm, useNames = useNames) 697s + r1 <- rowVars(x, na.rm = na.rm, useNames = useNames) 697s + r1b <- rowVars_center(x, na.rm = na.rm, useNames = useNames) 697s + r1c <- rowVars(x, center = center, na.rm = na.rm, useNames = useNames) 697s + 697s + tx <- t(x) 697s + r2 <- colVars(tx, na.rm = na.rm, useNames = useNames) 697s + r2b <- colVars_center(tx, na.rm = na.rm, useNames = useNames) 697s + r2c <- colVars(tx, center = center, na.rm = na.rm, useNames = useNames) 697s + tx <- NULL 697s + 697s + stopifnot(all.equal(r1, r2)) 697s + stopifnot(all.equal(r1, r0)) 697s + stopifnot(all.equal(r1b, r1c)) 697s + stopifnot(all.equal(r2, r0)) 697s + stopifnot(all.equal(r2b, r2c)) 697s + 697s + center <- colMeans(x, na.rm = na.rm) 697s + 697s + r3 <- colVars(x, center = center, na.rm = na.rm, useNames = useNames) 697s + r3b <- colVars_center_naive(x, center = center, na.rm = na.rm, useNames = useNames) 697s + r3c <- rowVars(t(x), center = center, na.rm = na.rm, useNames = useNames) 697s + r3d <- rowVars_center_naive(t(x), center = center, na.rm = na.rm, useNames = useNames) 697s + stopifnot(all.equal(r3b, r3)) 697s + stopifnot(all.equal(r3c, r3)) 697s + stopifnot(all.equal(r3d, r3)) 697s + 697s + stopifnot( 697s + !any(is.infinite(r0)), 697s + !any(is.infinite(r1)), 697s + !any(is.infinite(r2)), 697s + !any(is.infinite(r3)), 697s + !any(is.infinite(r1b)), 697s + !any(is.infinite(r1c)), 697s + !any(is.infinite(r2b)), 697s + !any(is.infinite(r2c)), 697s + !any(is.infinite(r3b)), 697s + !any(is.infinite(r3c)), 697s + !any(is.infinite(r3d)) 697s + ) 697s + } 697s + } 697s + } 697s + } # for (special ...) 697s + } 697s special = 0 697s mode: integer 697s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s special = NA 697s mode: integer 697s int [1:10, 1:5] 1 2 3 4 5 6 7 8 9 10 ... 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s special = 0 697s mode: double 697s 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 ... 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s special = NA 697s mode: double 697s 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 ... 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s special = Inf 697s mode: double 697s 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 ... 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s > 697s > 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > # All NAs 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > for (mode in c("integer", "double")) { 697s + x <- matrix(NA_real_, nrow = 10L, ncol = 5L) 697s + cat("mode: ", mode, "\n", sep = "") 697s + storage.mode(x) <- mode 697s + str(x) 697s + 697s + # Test with and without dimnames on x 697s + for (setDimnames in c(TRUE, FALSE)) { 697s + if (setDimnames) dimnames(x) <- dimnames 697s + else dimnames(x) <- NULL 697s + # Row/column variance 697s + for (na.rm in c(FALSE, TRUE)) { 697s + # Check names attribute 697s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 697s + cat("na.rm = ", na.rm, "\n", sep = "") 697s + 697s + r0 <- rowVars_R(x, na.rm = na.rm, useNames = useNames) 697s + r1 <- rowVars(x, na.rm = na.rm, useNames = useNames) 697s + r1b <- rowVars_center(x, na.rm = na.rm, useNames = useNames) 697s + r2 <- colVars(t(x), na.rm = na.rm, useNames = useNames) 697s + r2b <- colVars_center(t(x), na.rm = na.rm, useNames = useNames) 697s + stopifnot(all.equal(r1, r2)) 697s + stopifnot(all.equal(r1, r0)) 697s + stopifnot(all.equal(r2, r0)) 697s + stopifnot(all.equal(r1b, r2b)) 697s + stopifnot( 697s + !any(is.infinite(r0)), 697s + !any(is.infinite(r1)), 697s + !any(is.infinite(r2)), 697s + !any(is.infinite(r1b)), 697s + !any(is.infinite(r2b)) 697s + ) 697s + } 697s + } 697s + } 697s + } 697s mode: integer 697s int [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s mode: double 697s num [1:10, 1:5] NA NA NA NA NA NA NA NA NA NA ... 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s > 697s > 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > # A 1x1 matrix 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > x <- matrix(0, nrow = 1L, ncol = 1L) 697s > dimnames <- list("a", "A") 697s > # Test with and without dimnames on x 697s > for (setDimnames in c(TRUE, FALSE)) { 697s + if (setDimnames) dimnames(x) <- dimnames 697s + else dimnames(x) <- NULL 697s + # Row/column variance 697s + for (na.rm in c(FALSE, TRUE)) { 697s + # Check names attribute 697s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 697s + cat("na.rm = ", na.rm, "\n", sep = "") 697s + 697s + r0 <- rowVars_R(x, na.rm = na.rm, useNames = useNames) 697s + r1 <- rowVars(x, na.rm = na.rm, useNames = useNames) 697s + r1b <- rowVars_center(x, na.rm = na.rm, useNames = useNames) 697s + r2 <- colVars(t(x), na.rm = na.rm, useNames = useNames) 697s + r2b <- colVars_center(t(x), na.rm = na.rm, useNames = useNames) 697s + stopifnot(all.equal(r1, r2)) 697s + stopifnot(all.equal(r1, r0)) 697s + stopifnot(all.equal(r2, r0)) 697s + stopifnot(all.equal(r1b, r2b)) 697s + stopifnot( 697s + !any(is.infinite(r0)), 697s + !any(is.infinite(r1)), 697s + !any(is.infinite(r2)), 697s + !any(is.infinite(r1b)), 697s + !any(is.infinite(r2b)) 697s + ) 697s + } 697s + } 697s + } 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s na.rm = FALSE 697s na.rm = FALSE 697s na.rm = TRUE 697s na.rm = TRUE 697s > 697s > 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > # center and .dim 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > m <- matrix(1:12, nrow = 3L, ncol = 4L) 697s > a <- array(m, dim = c(3, 2, 2)) 697s > stopifnot(prod(dim(a)) == prod(dim(m))) 697s > 697s > y0 <- rowVars(m, dim. = dim(m)) 697s > print(y0) 697s [1] 15 15 15 697s > y1 <- rowVars(a, dim. = dim(m)) 697s > print(y1) 697s [1] 15 15 15 697s > stopifnot(identical(y1, y0)) 697s > stopifnot( 697s + !any(is.infinite(y0)), 697s + !any(is.infinite(y1)) 697s + ) 697s > 697s > mu <- rowMeans(m) 697s > y0 <- rowVars(m, center = mu, dim. = dim(m)) 697s > print(y0) 697s [1] 15 15 15 697s > y1 <- rowVars(a, center = mu, dim. = dim(m)) 697s > print(y1) 697s [1] 15 15 15 697s > stopifnot(identical(y1, y0)) 697s > stopifnot( 697s + !any(is.infinite(y0)), 697s + !any(is.infinite(y1)) 697s + ) 697s > 697s > 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > # Corner cases 697s > # https://github.com/HenrikBengtsson/matrixStats/issues/195 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > x <- matrix(c(1,2,3,4), nrow = 2L, ncol = 2L) 697s > x[1,1] <- NA_real_ 697s > x[1,2] <- Inf 697s > 697s > center <- colMeans2(x, na.rm = TRUE) 697s > y <- colVars(x, center = center, na.rm = TRUE) 697s > stopifnot(!any(is.infinite(y))) 697s > 697s > x <- t(x) 697s > center <- rowMeans2(x, na.rm = TRUE) 697s > y <- rowVars(x, center = center, na.rm = TRUE) 697s > stopifnot(!any(is.infinite(y))) 697s > 697s 697s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 697s Copyright (C) 2024 The R Foundation for Statistical Computing 697s Platform: powerpc64le-unknown-linux-gnu (64-bit) 697s 697s R is free software and comes with ABSOLUTELY NO WARRANTY. 697s You are welcome to redistribute it under certain conditions. 697s Type 'license()' or 'licence()' for distribution details. 697s 697s R is a collaborative project with many contributors. 697s Type 'contributors()' for more information and 697s 'citation()' on how to cite R or R packages in publications. 697s 697s Type 'demo()' for some demos, 'help()' for on-line help, or 697s 'help.start()' for an HTML browser interface to help. 697s Type 'q()' to quit R. 697s 697s > library("matrixStats") 697s > 697s > ## Always allow testing of the 'center' argument (as long as it's not defunct) 697s > options(matrixStats.center.onUse = "ignore") 697s > 697s > ## Create isFALSE() if running on an old version of R 697s > if (!exists("isFALSE", mode="function")) { 697s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 697s + } 697s > 697s > rowVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 697s + suppressWarnings({ 697s + res <- apply(x, MARGIN = 1L, FUN = var, na.rm = na.rm) 697s + }) 697s + stopifnot(!any(is.infinite(res))) 697s + 697s + # Keep naming support consistency same as rowVars() 697s + if (is.null(center) || ncol(x) <= 1L) { 697s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 697s + } 697s + else if (isFALSE(useNames)) names(res) <- NULL 697s + res 697s + } 697s > 697s > colVars_R <- function(x, na.rm = FALSE, center = NULL, ..., useNames = NA) { 697s + suppressWarnings({ 697s + res <- apply(x, MARGIN = 2L, FUN = var, na.rm = na.rm) 697s + }) 697s + stopifnot(!any(is.infinite(res))) 697s + 697s + # Keep naming support consistency same as colVars() 697s + if (is.null(center) || nrow(x) <= 1L) { 697s + if (is.na(useNames) || isFALSE(useNames)) names(res) <- NULL 697s + } 697s + else if (isFALSE(useNames)) names(res) <- NULL 697s + res 697s + } 697s > 697s > 697s > rowVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 697s + center <- rowWeightedMeans(x, cols = cols, na.rm = na.rm, useNames = FALSE) 697s + res <- rowVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 697s + stopifnot(!any(is.infinite(res))) 697s + res 697s + } 697s > 697s > colVars_center <- function(x, rows = NULL, cols = NULL, na.rm = FALSE, ..., useNames = NA) { 697s + center <- colWeightedMeans(x, rows = rows, na.rm = na.rm, useNames = FALSE) 697s + res <- colVars(x, rows = rows, cols = cols, center = center, na.rm = na.rm, useNames = useNames) 697s + stopifnot(!any(is.infinite(res))) 697s + res 697s + } 697s > 697s > 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > # Subsetted tests 697s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 697s > source("utils/validateIndicesFramework.R") 697s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 697s > storage.mode(x) <- "integer" 697s > 697s > # To check names attribute 697s > dimnames <- list(letters[1:6], LETTERS[1:6]) 697s > 697s > # Test with and without dimnames on x 697s > for (setDimnames in c(TRUE, FALSE)) { 697s + if (setDimnames) dimnames(x) <- dimnames 697s + else dimnames(x) <- NULL 697s + 697s + count <- 0L 697s + for (rows in index_cases) { 697s + for (cols in index_cases) { 697s + count <- count + 1L 697s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 697s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 697s + useNames <- useNames[count %% length(useNames) + 1] 697s + 697s + validateIndicesTestMatrix(x, rows, cols, 697s + ftest = rowVars, fsure = rowVars_R, 697s + na.rm = na.rm, useNames = useNames) 697s + validateIndicesTestMatrix(x, rows, cols, 697s + ftest = rowVars_center, fsure = rowVars_R, 697s + na.rm = na.rm, center = TRUE, useNames = useNames) 697s + 697s + validateIndicesTestMatrix(x, rows, cols, 697s + fcoltest = colVars, fsure = rowVars_R, 697s + na.rm = na.rm, useNames = useNames) 697s + validateIndicesTestMatrix(x, rows, cols, 697s + fcoltest = colVars_center, fsure = rowVars_R, 697s + na.rm = na.rm, center = TRUE, useNames = useNames) 697s + } 697s + } 697s + } 698s > 698s 698s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 698s Copyright (C) 2024 The R Foundation for Statistical Computing 698s Platform: powerpc64le-unknown-linux-gnu (64-bit) 698s 698s R is free software and comes with ABSOLUTELY NO WARRANTY. 698s You are welcome to redistribute it under certain conditions. 698s Type 'license()' or 'licence()' for distribution details. 698s 698s R is a collaborative project with many contributors. 698s Type 'contributors()' for more information and 698s 'citation()' on how to cite R or R packages in publications. 698s 698s Type 'demo()' for some demos, 'help()' for on-line help, or 698s 'help.start()' for an HTML browser interface to help. 698s Type 'q()' to quit R. 698s 698s > library("matrixStats") 698s > 698s > ## Create isFALSE() if running on an old version of R 698s > if (!exists("isFALSE", mode="function")) { 698s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 698s + } 698s > 698s > rowWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 698s + res <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 698s + 698s + # Keep naming support consistency same as rowWeightedMeans() 698s + idxs <- which(is.na(w) | w != 0) 698s + nw <- length(idxs) 698s + if (na.rm) na.rm <- anyMissing(x) 699s + if ((!is.null(w) && nw == 0L) || isFALSE(na.rm)) { 699s + if (is.na(useNames) || !useNames) names(res) <- NULL 699s + } 699s + else if (isFALSE(useNames)) names(res) <- NULL 699s + 699s + res 699s + } 699s > 699s > colWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 699s + res <- apply(x, MARGIN = 2L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 699s + 699s + # Keep naming support consistency same as colWeightedMeans() 699s + idxs <- which(is.na(w) | w != 0) 699s + nw <- length(idxs) 699s + if (!is.null(w) && nw == 0L) { 699s + if (is.na(useNames) || !useNames) names(res) <- NULL 699s + } 699s + else if (isFALSE(useNames)) names(res) <- NULL 699s + 699s + res 699s + } 699s > 699s > set.seed(1) 699s > 699s > x <- matrix(rnorm(20), nrow = 5, ncol = 4) 699s > print(x) 699s [,1] [,2] [,3] [,4] 699s [1,] -0.6264538 -0.8204684 1.5117812 -0.04493361 699s [2,] 0.1836433 0.4874291 0.3898432 -0.01619026 699s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 699s [4,] 1.5952808 0.5757814 -2.2146999 0.82122120 699s [5,] 0.3295078 -0.3053884 1.1249309 0.59390132 699s > 699s > # To check names attribute 699s > dimnames <- list(letters[1:5], LETTERS[1:4]) 699s > 699s > # Non-weighted row averages 699s > x_est0 <- rowMeans(x) 699s > x_est1 <- rowWeightedMeans(x) 699s > print(x_est1) 699s [1] 0.004981341 0.261181337 0.056322931 0.194395865 0.435737906 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > x_est2 <- colWeightedMeans(t(x)) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > # Check names attribute 699s > dimnames(x) <- dimnames 699s > x_est1 <- rowWeightedMeans(x, useNames = FALSE) 699s > x_est2 <- colWeightedMeans(t(x), useNames = FALSE) 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > x_est0 <- rowMeans(x) 699s > x_est1 <- rowWeightedMeans(x, useNames = TRUE) 699s > x_est2 <- colWeightedMeans(t(x), useNames = TRUE) 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > dimnames(x) <- NULL 699s > 699s > 699s > # Weighted row averages (uniform weights) 699s > w <- rep(2.5, times = ncol(x)) 699s > x_est0 <- rowMeans(x) 699s > x_est1 <- rowWeightedMeans(x, w = w) 699s > print(x_est1) 699s [1] 0.004981341 0.261181337 0.056322931 0.194395865 0.435737906 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > x_est2 <- colWeightedMeans(t(x), w = w) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 699s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 699s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + } 699s + } 699s > 699s > 699s > # Weighted row averages (excluding some columns) 699s > w <- c(1, 1, 0, 1) 699s > x_est0 <- rowMeans(x[, (w == 1), drop = FALSE]) 699s > x_est1 <- rowWeightedMeans(x, w = w) 699s > print(x_est1) 699s [1] -0.4972853 0.2182940 0.2821774 0.9974278 0.2060069 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > x_est2 <- colWeightedMeans(t(x), w = w) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 699s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 699s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + } 699s + } 699s > 699s > 699s > # Weighted row averages (excluding some columns) 699s > w <- c(0, 1, 0, 0) 699s > x_est0 <- rowMeans(x[, (w == 1), drop = FALSE]) 699s > x_est1 <- rowWeightedMeans(x, w = w) 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > x_est2 <- colWeightedMeans(t(x), w = w) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 699s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 699s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + } 699s + } 699s > 699s > 699s > # Weighted row averages (all zero weights) 699s > w <- c(0, 0, 0, 0) 699s > x_est0 <- rowMeans(x[, (w == 1), drop = FALSE]) 699s > x_est1 <- rowWeightedMeans(x, w = w) 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > x_est2 <- colWeightedMeans(t(x), w = w) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 699s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 699s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + } 699s + } 699s > 699s > 699s > # Weighted averages by rows and columns 699s > w <- 1:4 699s > x_est1 <- rowWeightedMeans(x, w = w) 699s > print(x_est1) 699s [1] 0.20882185 0.22632701 0.25526439 -0.06123714 0.54691290 699s > x_est2 <- colWeightedMeans(t(x), w = w) 699s > stopifnot(all.equal(x_est2, x_est1)) 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + x_est0 <- rowWeightedMeans_R(x, w = w, useNames = useNames) 699s + x_est1 <- rowWeightedMeans(x, w = w, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + x_est0 <- colWeightedMeans_R(t(x), w = w, useNames = useNames) 699s + x_est1 <- colWeightedMeans(t(x), w = w, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + } 699s + } 699s > 699s > 699s > x[sample(length(x), size = 0.3 * length(x))] <- NA 699s > print(x) 699s [,1] [,2] [,3] [,4] 699s [1,] -0.6264538 NA 1.5117812 -0.04493361 699s [2,] 0.1836433 NA NA -0.01619026 699s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 699s [4,] 1.5952808 NA -2.2146999 0.82122120 699s [5,] 0.3295078 NA NA 0.59390132 699s > 699s > # Non-weighted row averages with missing values 699s > x_est0 <- rowMeans(x, na.rm = TRUE) 699s > x_est1 <- rowWeightedMeans(x, na.rm = TRUE) 699s > print(x_est1) 699s [1] 0.28013125 0.08372653 0.05632293 0.06726737 0.46170455 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > x_est2 <- colWeightedMeans(t(x), na.rm = TRUE) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > # Check names attribute 699s > dimnames(x) <- dimnames 699s > x_est1 <- rowWeightedMeans(x, na.rm = TRUE, useNames = FALSE) 699s > x_est2 <- colWeightedMeans(t(x), na.rm = TRUE, useNames = FALSE) 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > x_est0 <- rowMeans(x, na.rm = TRUE) 699s > x_est1 <- rowWeightedMeans(x, na.rm = TRUE, useNames = TRUE) 699s > x_est2 <- colWeightedMeans(t(x), na.rm = TRUE, useNames = TRUE) 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > dimnames(x) <- NULL 699s > 699s > 699s > # Weighted row averages with missing values 699s > x_est0 <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = TRUE) 699s > print(x_est0) 699s [1] 0.46614441 0.02377645 0.25526439 -0.22049176 0.54102261 699s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE) 699s > print(x_est1) 699s [1] 0.46614441 0.02377645 0.25526439 -0.22049176 0.54102261 699s > stopifnot(all.equal(x_est1, x_est0)) 699s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = TRUE) 699s > stopifnot(all.equal(x_est2, x_est0)) 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = TRUE, useNames = useNames) 699s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 699s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = TRUE, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + } 699s + } 699s > 699s > 699s > # Weighted averages by rows and columns 699s > w <- 1:4 699s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE) 699s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = TRUE) 699s > stopifnot(all.equal(x_est2, x_est1)) 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = TRUE, useNames = useNames) 699s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 699s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = TRUE, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + } 699s + } 699s > 699s > 699s > # w contains missing value 699s > w[1] <- NA_integer_ 699s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE) 699s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = TRUE) 699s > stopifnot(all.equal(x_est2, x_est1)) 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = TRUE, useNames = useNames) 699s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = TRUE, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 699s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = TRUE, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + } 699s + } 699s > 699s > x_est1 <- rowWeightedMeans(x, w = w, na.rm = FALSE) 699s > x_est2 <- colWeightedMeans(t(x), w = w, na.rm = FALSE) 699s > stopifnot(all.equal(x_est2, x_est1)) 699s > # Test with and without dimnames on x 699s > for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + # Check names attribute 699s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 699s + x_est0 <- rowWeightedMeans_R(x, w = w, na.rm = FALSE, useNames = useNames) 699s + x_est1 <- rowWeightedMeans(x, w = w, na.rm = FALSE, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + x_est0 <- colWeightedMeans_R(t(x), w = w, na.rm = FALSE, useNames = useNames) 699s + x_est1 <- colWeightedMeans(t(x), w = w, na.rm = FALSE, useNames = useNames) 699s + stopifnot(all.equal(x_est1, x_est0)) 699s + } 699s + } 699s > 699s 699s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 699s Copyright (C) 2024 The R Foundation for Statistical Computing 699s Platform: powerpc64le-unknown-linux-gnu (64-bit) 699s 699s R is free software and comes with ABSOLUTELY NO WARRANTY. 699s You are welcome to redistribute it under certain conditions. 699s Type 'license()' or 'licence()' for distribution details. 699s 699s R is a collaborative project with many contributors. 699s Type 'contributors()' for more information and 699s 'citation()' on how to cite R or R packages in publications. 699s 699s Type 'demo()' for some demos, 'help()' for on-line help, or 699s 'help.start()' for an HTML browser interface to help. 699s Type 'q()' to quit R. 699s 699s > library("matrixStats") 699s > 699s > ## Create isFALSE() if running on an old version of R 699s > if (!exists("isFALSE", mode="function")) { 699s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 699s + } 699s > 699s > rowWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 699s + res <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 699s + 699s + # Keep naming support consistency same as rowWeightedMeans() 699s + idxs <- which(is.na(w) | w != 0) 699s + nw <- length(idxs) 699s + if (na.rm) na.rm <- anyMissing(x) 699s + if ((!is.null(w) && nw == 0L) || isFALSE(na.rm)) { 699s + if (is.na(useNames) || !useNames) names(res) <- NULL 699s + } 699s + else if (isFALSE(useNames)) names(res) <- NULL 699s + 699s + res 699s + } 699s > 699s > colWeightedMeans_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 699s + res <- apply(x, MARGIN = 1L, FUN = weighted.mean, w = w, na.rm = na.rm, ...) 699s + 699s + # Keep naming support consistency same as colWeightedMeans() 699s + idxs <- which(is.na(w) | w != 0) 699s + nw <- length(idxs) 699s + if (!is.null(w) && nw == 0L) { 699s + if (is.na(useNames) || !useNames) names(res) <- NULL 699s + } 699s + else if (isFALSE(useNames)) names(res) <- NULL 699s + 699s + res 699s + } 699s > 699s > 699s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 699s > # Subsetted tests 699s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 699s > source("utils/validateIndicesFramework.R") 699s > # To check names attribute 699s > dimnames <- list(letters[1:6], LETTERS[1:6]) 699s > for (mode in c("numeric", "integer", "logical")) { 699s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 699s + w <- runif(6, min = 0, max = 6) 699s + storage.mode(x) <- mode 699s + storage.mode(w) <- if (mode == "logical") "integer" else mode 699s + if (mode == "numeric") w[1] <- Inf 699s + 699s + # Test with and without dimnames on x 699s + for (setDimnames in c(TRUE, FALSE)) { 699s + if (setDimnames) dimnames(x) <- dimnames 699s + else dimnames(x) <- NULL 699s + 699s + count <- 0L 699s + for (rows in index_cases) { 699s + for (cols in index_cases) { 699s + count <- count + 1L 699s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 699s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 699s + useNames <- useNames[count %% length(useNames) + 1] 699s + 699s + validateIndicesTestMatrix_w(x, w, rows, cols, 699s + ftest = rowWeightedMeans, fsure = rowWeightedMeans_R, 699s + na.rm = na.rm, useNames = useNames) 699s + validateIndicesTestMatrix_w(x, w, rows, cols, 699s + fcoltest = colWeightedMeans, fsure = colWeightedMeans_R, 699s + na.rm = na.rm, useNames = useNames) 699s + } 699s + } 699s + } 699s + } 700s > 700s 700s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 700s Copyright (C) 2024 The R Foundation for Statistical Computing 700s Platform: powerpc64le-unknown-linux-gnu (64-bit) 700s 700s R is free software and comes with ABSOLUTELY NO WARRANTY. 700s You are welcome to redistribute it under certain conditions. 700s Type 'license()' or 'licence()' for distribution details. 700s 700s R is a collaborative project with many contributors. 700s Type 'contributors()' for more information and 700s 'citation()' on how to cite R or R packages in publications. 700s 700s Type 'demo()' for some demos, 'help()' for on-line help, or 700s 'help.start()' for an HTML browser interface to help. 700s Type 'q()' to quit R. 700s 700s > library("matrixStats") 700s > 700s > ## Create isFALSE() if running on an old version of R 700s > if (!exists("isFALSE", mode="function")) { 700s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 700s + } 700s > 700s > rowWeightedMedians_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 700s + res <- apply(x, MARGIN = 1L, FUN = weightedMedian, w = w, na.rm = na.rm, ...) 700s + 700s + # Keep naming support consistency same as rowWeightedMedians() 700s + if (!is.null(w)) { 700s + if (isFALSE(useNames)) names(res) <- NULL 700s + } 700s + else if (is.na(useNames) || !useNames) names(res) <- NULL 700s + 700s + res 700s + } 700s > 700s > colWeightedMedians_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 700s + res <- apply(x, MARGIN = 2L, FUN = weightedMedian, w = w, na.rm = na.rm, ...) 700s + 700s + # Keep naming support consistency same as colWeightedMedians() 700s + if (!is.null(w)) { 700s + if (isFALSE(useNames)) names(res) <- NULL 700s + } 700s + else if (is.na(useNames) || !useNames) names(res) <- NULL 700s + 700s + res 700s + } 700s > 700s > set.seed(1) 700s > 700s > x <- matrix(rnorm(20), nrow = 5, ncol = 4) 700s > print(x) 700s [,1] [,2] [,3] [,4] 700s [1,] -0.6264538 -0.8204684 1.5117812 -0.04493361 700s [2,] 0.1836433 0.4874291 0.3898432 -0.01619026 700s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 700s [4,] 1.5952808 0.5757814 -2.2146999 0.82122120 700s [5,] 0.3295078 -0.3053884 1.1249309 0.59390132 700s > 700s > # To check names attribute 700s > dimnames <- list(letters[1:5], LETTERS[1:4]) 700s > 700s > # Non-weighted row medians 700s > x_est0 <- rowMedians(x) 700s > x_est1 <- rowWeightedMedians(x) 700s > stopifnot(all.equal(x_est1, x_est0)) 700s > x_est2 <- colWeightedMedians(t(x)) 700s > stopifnot(all.equal(x_est2, x_est0)) 700s > # Test with and without dimnames on x 700s > for (setDimnames in c(TRUE, FALSE)) { 700s + if (setDimnames) dimnames(x) <- dimnames 700s + else dimnames(x) <- NULL 700s + # Check names attribute 700s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 700s + x_est0 <- rowMedians(x, useNames = useNames) 700s + x_est1 <- rowWeightedMedians(x, useNames = useNames) 700s + x_est2 <- colWeightedMedians(t(x), useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + stopifnot(all.equal(x_est2, x_est0)) 700s + } 700s + } 700s > 700s > 700s > # Weighted row medians (uniform weights) 700s > w <- rep(2.5, times = ncol(x)) 700s > x_est0 <- rowMedians(x) 700s > x_est1 <- rowWeightedMedians(x, w = w) 700s > stopifnot(all.equal(x_est1, x_est0)) 700s > x_est2 <- colWeightedMedians(t(x), w = w) 700s > stopifnot(all.equal(x_est2, x_est0)) 700s > # Test with and without dimnames on x 700s > for (setDimnames in c(TRUE, FALSE)) { 700s + if (setDimnames) dimnames(x) <- dimnames 700s + else dimnames(x) <- NULL 700s + # Check names attribute 700s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 700s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 700s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 700s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + } 700s + } 700s > 700s > 700s > # Weighted row medians (excluding some columns) 700s > w <- c(1, 1, 0, 1) 700s > x_est0 <- rowMedians(x[, (w == 1), drop = FALSE]) 700s > x_est1 <- rowWeightedMedians(x, w = w) 700s > stopifnot(all.equal(x_est1, x_est0)) 700s > x_est2 <- colWeightedMedians(t(x), w = w) 700s > stopifnot(all.equal(x_est2, x_est0)) 700s > # Test with and without dimnames on x 700s > for (setDimnames in c(TRUE, FALSE)) { 700s + if (setDimnames) dimnames(x) <- dimnames 700s + else dimnames(x) <- NULL 700s + # Check names attribute 700s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 700s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 700s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 700s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + } 700s + } 700s > 700s > # Weighted row medians (excluding some columns) 700s > w <- c(0, 1, 0, 0) 700s > x_est0 <- rowMedians(x[, (w == 1), drop = FALSE]) 700s > x_est1 <- rowWeightedMedians(x, w = w) 700s > stopifnot(all.equal(x_est1, x_est0)) 700s > x_est2 <- colWeightedMedians(t(x), w = w) 700s > stopifnot(all.equal(x_est2, x_est0)) 700s > # Test with and without dimnames on x 700s > for (setDimnames in c(TRUE, FALSE)) { 700s + if (setDimnames) dimnames(x) <- dimnames 700s + else dimnames(x) <- NULL 700s + # Check names attribute 700s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 700s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 700s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 700s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + } 700s + } 700s > 700s > # Weighted row medians (all zero weights) 700s > w <- c(0, 0, 0, 0) 700s > x_est0 <- rowMedians(x[, (w == 1), drop = FALSE]) 700s > x_est1 <- rowWeightedMedians(x, w = w) 700s > stopifnot(all.equal(x_est1, x_est0)) 700s > x_est2 <- colWeightedMedians(t(x), w = w) 700s > stopifnot(all.equal(x_est2, x_est0)) 700s > # Test with and without dimnames on x 700s > for (setDimnames in c(TRUE, FALSE)) { 700s + if (setDimnames) dimnames(x) <- dimnames 700s + else dimnames(x) <- NULL 700s + # Check names attribute 700s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 700s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 700s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 700s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + } 700s + } 700s > 700s > # Weighted medians by rows and columns 700s > w <- 1:4 700s > x_est1 <- rowWeightedMedians(x, w = w) 700s > x_est2 <- colWeightedMedians(t(x), w = w) 700s > stopifnot(all.equal(x_est2, x_est1)) 700s > # Test with and without dimnames on x 700s > for (setDimnames in c(TRUE, FALSE)) { 700s + if (setDimnames) dimnames(x) <- dimnames 700s + else dimnames(x) <- NULL 700s + # Check names attribute 700s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 700s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 700s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 700s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + } 700s + } 700s > 700s > 700s > # Weighted row medians with missing values 700s > x_est0 <- apply(x, MARGIN = 1L, FUN = weightedMedian, w = w, na.rm = TRUE) 700s > print(x_est0) 700s [1] -0.04493361 0.23519330 0.73832471 0.65759463 0.59390132 700s > x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE) 700s > print(x_est1) 700s [1] -0.04493361 0.23519330 0.73832471 0.65759463 0.59390132 700s > stopifnot(all.equal(x_est1, x_est0)) 700s > x_est2 <- colWeightedMedians(t(x), w = w) 700s > stopifnot(all.equal(x_est2, x_est0)) 700s > # Test with and without dimnames on x 700s > for (setDimnames in c(TRUE, FALSE)) { 700s + if (setDimnames) dimnames(x) <- dimnames 700s + else dimnames(x) <- NULL 700s + # Check names attribute 700s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 700s + x_est0 <- rowWeightedMedians_R(x, w = w, na.rm = TRUE, useNames = useNames) 700s + x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + x_est0 <- colWeightedMedians_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 700s + x_est1 <- colWeightedMedians(t(x), w = w, na.rm = TRUE, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + } 700s + } 700s > 700s > # Weighted medians by rows and columns 700s > w <- 1:4 700s > x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE) 700s > x_est2 <- colWeightedMedians(t(x), w = w, na.rm = TRUE) 700s > stopifnot(all.equal(x_est2, x_est1)) 700s > # Test with and without dimnames on x 700s > for (setDimnames in c(TRUE, FALSE)) { 700s + if (setDimnames) dimnames(x) <- dimnames 700s + else dimnames(x) <- NULL 700s + # Check names attribute 700s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 700s + x_est0 <- rowWeightedMedians_R(x, w = w, na.rm = TRUE, useNames = useNames) 700s + x_est1 <- rowWeightedMedians(x, w = w, na.rm = TRUE, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + x_est0 <- colWeightedMedians_R(t(x), w = w, na.rm = TRUE, useNames = useNames) 700s + x_est1 <- colWeightedMedians(t(x), w = w, na.rm = TRUE, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + } 700s + } 700s > 700s > 700s > # Inf weight 700s > x <- matrix(1:2, nrow = 1, ncol = 2) 700s > w <- c(7, Inf) 700s > x_est1 <- rowWeightedMedians(x, w = w) 700s > x_est2 <- colWeightedMedians(t(x), w = w) 700s > stopifnot(identical(2, x_est1)) 700s > stopifnot(identical(2, x_est2)) 700s > # Test with and without dimnames on x 700s > dimnames <- list("a", LETTERS[1:2]) 700s > for (setDimnames in c(TRUE, FALSE)) { 700s + if (setDimnames) dimnames(x) <- dimnames 700s + else dimnames(x) <- NULL 700s + # Check names attribute 700s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 700s + x_est0 <- rowWeightedMedians_R(x, w = w, useNames = useNames) 700s + x_est1 <- rowWeightedMedians(x, w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + x_est0 <- colWeightedMedians_R(t(x), w = w, useNames = useNames) 700s + x_est1 <- colWeightedMedians(t(x), w = w, useNames = useNames) 700s + stopifnot(all.equal(x_est1, x_est0)) 700s + } 700s + } 700s > 700s 700s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 700s Copyright (C) 2024 The R Foundation for Statistical Computing 700s Platform: powerpc64le-unknown-linux-gnu (64-bit) 700s 700s R is free software and comes with ABSOLUTELY NO WARRANTY. 700s You are welcome to redistribute it under certain conditions. 700s Type 'license()' or 'licence()' for distribution details. 700s 700s R is a collaborative project with many contributors. 700s Type 'contributors()' for more information and 700s 'citation()' on how to cite R or R packages in publications. 700s 700s Type 'demo()' for some demos, 'help()' for on-line help, or 700s 'help.start()' for an HTML browser interface to help. 700s Type 'q()' to quit R. 700s 701s > library("matrixStats") 701s > 701s > ## Create isFALSE() if running on an old version of R 701s > if (!exists("isFALSE", mode="function")) { 701s + isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x 701s + } 701s > 701s > rowWeightedMedians_R <- function(x, w, na.rm = FALSE, ..., useNames = NA) { 701s + res <- apply(x, MARGIN = 1L, FUN = weightedMedian, w = w, na.rm = na.rm, ...) 701s + 701s + # Keep naming support consistency same as rowWeightedMedians() 701s + if (!is.null(w)) { 701s + if (isFALSE(useNames)) names(res) <- NULL 701s + } 701s + else if (is.na(useNames) || !useNames) names(res) <- NULL 701s + 701s + res 701s + } 701s > 701s > 701s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 701s > # Subsetted tests 701s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 701s > source("utils/validateIndicesFramework.R") 701s > # To check names attribute 701s > dimnames <- list(letters[1:6], LETTERS[1:6]) 701s > for (mode in c("numeric", "integer", "logical")) { 701s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 701s + w <- runif(6, min = 0, max = 6) 701s + storage.mode(x) <- mode 701s + storage.mode(w) <- if (mode == "logical") "integer" else mode 701s + if (mode == "numeric") w[1] <- Inf 701s + 701s + # Test with and without dimnames on x 701s + for (setDimnames in c(TRUE, FALSE)) { 701s + if (setDimnames) dimnames(x) <- dimnames 701s + else dimnames(x) <- NULL 701s + 701s + count <- 0L 701s + for (rows in index_cases) { 701s + for (cols in index_cases) { 701s + count <- count + 1L 701s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 701s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 701s + useNames <- useNames[count %% length(useNames) + 1] 701s + 701s + validateIndicesTestMatrix_w(x, w, rows, cols, 701s + ftest = rowWeightedMedians, 701s + fsure = rowWeightedMedians_R, 701s + na.rm = na.rm, useNames = useNames) 701s + validateIndicesTestMatrix_w(x, w, rows, cols, 701s + fcoltest = colWeightedMedians, 701s + fsure = rowWeightedMedians_R, 701s + na.rm = na.rm, useNames = useNames) 701s + } 701s + } 701s + } 701s + } 702s > 702s 702s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 702s Copyright (C) 2024 The R Foundation for Statistical Computing 702s Platform: powerpc64le-unknown-linux-gnu (64-bit) 702s 702s R is free software and comes with ABSOLUTELY NO WARRANTY. 702s You are welcome to redistribute it under certain conditions. 702s Type 'license()' or 'licence()' for distribution details. 702s 702s R is a collaborative project with many contributors. 702s Type 'contributors()' for more information and 702s 'citation()' on how to cite R or R packages in publications. 702s 702s Type 'demo()' for some demos, 'help()' for on-line help, or 702s 'help.start()' for an HTML browser interface to help. 702s Type 'q()' to quit R. 702s 702s > library("matrixStats") 702s > 702s > set.seed(1) 702s > 702s > x <- matrix(rnorm(20), nrow = 5L, ncol = 4L) 702s > print(x) 702s [,1] [,2] [,3] [,4] 702s [1,] -0.6264538 -0.8204684 1.5117812 -0.04493361 702s [2,] 0.1836433 0.4874291 0.3898432 -0.01619026 702s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 702s [4,] 1.5952808 0.5757814 -2.2146999 0.82122120 702s [5,] 0.3295078 -0.3053884 1.1249309 0.59390132 702s > 702s > # To check names attribute 702s > dimnames <- list(letters[1:5], LETTERS[1:4]) 702s > 702s > # Weighted row variances (uniform weights - all w = 1) 702s > # Non-weighted row variances 702s > x_est0 <- rowVars(x) 702s > w <- rep(1, times = ncol(x)) 702s > x_est1 <- rowWeightedVars(x, w = w) 702s > print(x_est1) 702s [1] 1.11767161 0.05022969 0.83582537 2.76819528 0.35351857 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > x_est2 <- colWeightedVars(t(x), w = w) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > # Check names attribute 702s > dimnames(x) <- dimnames 702s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 702s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > x_est0 <- rowVars(x, useNames = TRUE) 702s > if (!matrixStats:::isUseNamesNADefunct()) { 702s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 702s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 702s + stopifnot(all.equal(x_est1, x_est0)) 702s + stopifnot(all.equal(x_est2, x_est0)) 702s + } 702s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 702s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > dimnames(x) <- NULL 702s > 702s > 702s > # Weighted row variances (uniform weights - all w = 3) 702s > x3 <- cbind(x, x, x) 702s > x_est0 <- rowVars(x3) 702s > w <- rep(3, times = ncol(x)) 702s > x_est1 <- rowWeightedVars(x, w = w) 702s > print(x_est1) 702s [1] 0.91445859 0.04109702 0.68385712 2.26488705 0.28924246 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > x_est2 <- colWeightedVars(t(x), w = w) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > # Check names attribute 702s > dimnames(x) <- dimnames 702s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 702s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > x3 <- cbind(x, x, x) 702s > x_est0 <- rowVars(x3, useNames = TRUE) 702s > if (!matrixStats:::isUseNamesNADefunct()) { 702s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 702s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 702s + stopifnot(all.equal(x_est1, x_est0)) 702s + stopifnot(all.equal(x_est2, x_est0)) 702s + } 702s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 702s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > dimnames(x) <- NULL 702s > 702s > 702s > # Weighted row variances (excluding some columns) 702s > w <- c(1, 1, 0, 1) 702s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE]) 702s > x_est1 <- rowWeightedVars(x, w = w) 702s > print(x_est1) 702s [1] 0.16287693 0.06430861 0.94767651 0.28313135 0.21361984 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > x_est2 <- colWeightedVars(t(x), w = w) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > # Check names attribute 702s > dimnames(x) <- dimnames 702s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 702s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE], useNames = TRUE) 702s > if (!matrixStats:::isUseNamesNADefunct()) { 702s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 702s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 702s + stopifnot(all.equal(x_est1, x_est0)) 702s + stopifnot(all.equal(x_est2, x_est0)) 702s + } 702s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 702s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > dimnames(x) <- NULL 702s > 702s > 702s > # Weighted row variances (excluding some columns) 702s > w <- c(0, 1, 0, 0) 702s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE]) 702s > x_est1 <- rowWeightedVars(x, w = w) 702s > #stopifnot(all.equal(x_est1, x_est0)) 702s > x_est2 <- colWeightedVars(t(x), w = w) 702s > stopifnot(all.equal(x_est2, x_est1)) 702s > # Check names attribute 702s > dimnames(x) <- dimnames 702s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 702s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE], useNames = TRUE) 702s > if (!matrixStats:::isUseNamesNADefunct()) { 702s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 702s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 702s + stopifnot(all.equal(x_est1, x_est0)) 702s + stopifnot(all.equal(x_est2, x_est0)) 702s + } 702s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 702s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > dimnames(x) <- NULL 702s > 702s > 702s > # Weighted row variances (all zero weights) 702s > w <- c(0, 0, 0, 0) 702s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE]) 702s > x_est1 <- rowWeightedVars(x, w = w) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > x_est2 <- colWeightedVars(t(x), w = w) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > # Check names attribute 702s > dimnames(x) <- dimnames 702s > x_est1 <- rowWeightedVars(x, w = w, useNames = FALSE) 702s > x_est2 <- colWeightedVars(t(x), w = w, useNames = FALSE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > x_est0 <- rowVars(x[, (w == 1), drop = FALSE], useNames = TRUE) 702s > if (!matrixStats:::isUseNamesNADefunct()) { 702s + x_est1 <- rowWeightedVars(x, w = w, useNames = NA) 702s + x_est2 <- colWeightedVars(t(x), w = w, useNames = NA) 702s + stopifnot(all.equal(x_est1, x_est0)) 702s + stopifnot(all.equal(x_est2, x_est0)) 702s + } 702s > x_est1 <- rowWeightedVars(x, w = w, useNames = TRUE) 702s > x_est2 <- colWeightedVars(t(x), w = w, useNames = TRUE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > dimnames(x) <- NULL 702s > 702s > # Weighted variances by rows and columns 702s > w <- 1:4 702s > # Test with and without dimnames on x 702s > for (setDimnames in c(TRUE, FALSE)) { 702s + if (setDimnames) dimnames(x) <- dimnames 702s + else dimnames(x) <- NULL 702s + # Check names attribute 702s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 702s + x_est1 <- rowWeightedVars(x, w = w, useNames = useNames) 702s + print(x_est1) 702s + x_est2 <- colWeightedVars(t(x), w = w, useNames = useNames) 702s + stopifnot(all.equal(x_est2, x_est1)) 702s + } 702s + } 702s a b c d e 702s 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 702s [1] 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 702s [1] 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 702s [1] 0.90747094 0.05040463 0.65089440 2.28697479 0.27902734 702s > 702s > 702s > x[sample(length(x), size = 0.3 * length(x))] <- NA 702s > print(x) 702s [,1] [,2] [,3] [,4] 702s [1,] -0.6264538 NA 1.5117812 -0.04493361 702s [2,] 0.1836433 NA NA -0.01619026 702s [3,] -0.8356286 0.7383247 -0.6212406 0.94383621 702s [4,] 1.5952808 NA -2.2146999 0.82122120 702s [5,] 0.3295078 NA NA 0.59390132 702s > 702s > # Non-weighted row variances with missing values 702s > x_est0 <- rowVars(x, na.rm = TRUE) 702s > x_est1 <- rowWeightedVars(x, w = rep(1, times = ncol(x)), na.rm = TRUE) 702s > print(x_est1) 702s [1] 1.22226258 0.01996673 0.83582537 4.05532299 0.03495197 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > x_est2 <- colWeightedVars(t(x), w = rep(1, times = ncol(x)), na.rm = TRUE) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > # Check names attribute 702s > dimnames(x) <- dimnames 702s > x_est1 <- rowWeightedVars(x, w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = FALSE) 702s > x_est2 <- colWeightedVars(t(x), w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = FALSE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > x_est0 <- rowVars(x, na.rm = TRUE, useNames = TRUE) 702s > x_est1 <- rowWeightedVars(x, w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = TRUE) 702s > x_est2 <- colWeightedVars(t(x), w = rep(1, times = ncol(x)), na.rm = TRUE, useNames = TRUE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > dimnames(x) <- NULL 702s > 702s > 702s > # Weighted row variances with missing values 702s > # Test with and without dimnames on x 702s > for (setDimnames in c(TRUE, FALSE)) { 702s + if (setDimnames) dimnames(x) <- dimnames 702s + else dimnames(x) <- NULL 702s + # Check names attribute 702s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 702s + x_est1 <- rowWeightedVars(x, w = w, na.rm = TRUE, useNames = useNames) 702s + print(x_est1) 702s + x_est2 <- colWeightedVars(t(x), w = w, na.rm = TRUE, useNames = useNames) 702s + stopifnot(all.equal(x_est2, x_est1)) 702s + } 702s + } 702s a b c d e 702s 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 702s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 702s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 702s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 702s > 702s > 702s > # Weighted variances by rows and columns 702s > w <- 1:4 702s > # Test with and without dimnames on x 702s > for (setDimnames in c(TRUE, FALSE)) { 702s + if (setDimnames) dimnames(x) <- dimnames 702s + else dimnames(x) <- NULL 702s + # Check names attribute 702s + for (useNames in c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE)) { 702s + x_est1 <- rowWeightedVars(x, w = w, na.rm = TRUE, useNames = useNames) 702s + print(x_est1) 702s + x_est2 <- colWeightedVars(t(x), w = w, na.rm = TRUE, useNames = useNames) 702s + stopifnot(all.equal(x_est2, x_est1)) 702s + } 702s + } 702s a b c d e 702s 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 702s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 702s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 702s [1] 0.788377504 0.007986693 0.650894398 2.795470241 0.013980790 702s > 702s > 702s > # Weighted row standard deviation (excluding some columns) 702s > w <- c(1, 1, 0, 1) 702s > ## FIXME: rowVars()/rowSds() needs na.rm = FALSE (wrong default) 702s > x_est0 <- rowSds(x[, (w == 1), drop = FALSE], na.rm = FALSE) 702s > x_est1 <- rowWeightedSds(x, w = w) 702s > print(x_est1) 702s [1] NA NA 0.9734868 NA NA 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > # Check names attribute 702s > dimnames(x) <- dimnames 702s > x_est1 <- rowWeightedSds(x, w = w, na.rm = FALSE, useNames = FALSE) 702s > x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE, useNames = FALSE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > x_est0 <- rowSds(x[, (w == 1), drop = FALSE], na.rm = FALSE, useNames = TRUE) 702s > if (!matrixStats:::isUseNamesNADefunct()) { 702s + x_est1 <- rowWeightedSds(x, w = w, na.rm = FALSE, useNames = NA) 702s + x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE, useNames = NA) 702s + stopifnot(all.equal(x_est1, x_est0)) 702s + stopifnot(all.equal(x_est2, x_est0)) 702s + } 702s > x_est1 <- rowWeightedSds(x, w = w, na.rm = FALSE, useNames = TRUE) 702s > x_est2 <- colWeightedSds(t(x), w = w, na.rm = FALSE, useNames = TRUE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > dimnames(x) <- NULL 702s > 702s > 702s > # Weighted row MADs (excluding some columns) 702s > w <- c(1, 1, 0, 1) 702s > x_est0 <- rowMads(x[, (w == 1), drop = FALSE]) 702s > x_est1 <- rowWeightedMads(x, w = w) 702s > print(x_est1) 702s [1] NA NA 0.3046914 NA NA 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > x_est2 <- colWeightedMads(t(x), w = w) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > # Check names attribute 702s > dimnames(x) <- dimnames 702s > x_est1 <- rowWeightedMads(x, w = w, useNames = FALSE) 702s > x_est2 <- colWeightedMads(t(x), w = w, useNames = FALSE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > x_est0 <- rowMads(x[, (w == 1), drop = FALSE], useNames = TRUE) 702s > if (!matrixStats:::isUseNamesNADefunct()) { 702s + x_est1 <- rowWeightedMads(x, w = w, useNames = NA) 702s + x_est2 <- colWeightedMads(t(x), w = w, useNames = NA) 702s + stopifnot(all.equal(x_est1, x_est0)) 702s + stopifnot(all.equal(x_est2, x_est0)) 702s + } 702s > x_est1 <- rowWeightedMads(x, w = w, useNames = TRUE) 702s > x_est2 <- colWeightedMads(t(x), w = w, useNames = TRUE) 702s > stopifnot(all.equal(x_est1, x_est0)) 702s > stopifnot(all.equal(x_est2, x_est0)) 702s > dimnames(x) <- NULL 702s > 702s 702s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 702s Copyright (C) 2024 The R Foundation for Statistical Computing 702s Platform: powerpc64le-unknown-linux-gnu (64-bit) 702s 702s R is free software and comes with ABSOLUTELY NO WARRANTY. 702s You are welcome to redistribute it under certain conditions. 702s Type 'license()' or 'licence()' for distribution details. 702s 702s R is a collaborative project with many contributors. 702s Type 'contributors()' for more information and 702s 'citation()' on how to cite R or R packages in publications. 702s 702s Type 'demo()' for some demos, 'help()' for on-line help, or 702s 'help.start()' for an HTML browser interface to help. 702s Type 'q()' to quit R. 702s 702s > library("matrixStats") 702s > 702s > fcns <- list( 702s + weightedVar = c(rowWeightedVars, colWeightedVars), 702s + weightedSd = c(rowWeightedSds, colWeightedSds), 702s + weightedMad = c(rowWeightedMads, colWeightedMads) 702s + ) 702s > 702s > 702s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 702s > # Subsetted tests 702s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 702s > source("utils/validateIndicesFramework.R") 702s > # To check names attribute 702s > dimnames <- list(letters[1:6], LETTERS[1:6]) 702s > for (fcn in names(fcns)) { 702s + cat(sprintf("subsetted tests on matrix %s()...\n", fcn)) 702s + row_fcn <- fcns[[fcn]][[1]] 702s + col_fcn <- fcns[[fcn]][[2]] 702s + 702s + for (mode in c("numeric", "integer")) { 702s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 702s + w <- runif(6, min = 0, max = 6) 702s + storage.mode(x) <- mode 702s + storage.mode(w) <- mode 702s + if (mode == "numeric") w[1] <- Inf 702s + 702s + # Test with and without dimnames on x 702s + for (setDimnames in c(TRUE, FALSE)) { 702s + if (setDimnames) dimnames(x) <- dimnames 702s + else dimnames(x) <- NULL 702s + 702s + count <- 0L 702s + for (rows in index_cases) { 702s + for (cols in index_cases) { 702s + count <- count + 1L 702s + na.rm <- c(TRUE, FALSE)[count %% 2 + 1] 702s + useNames <- c(if (!matrixStats:::isUseNamesNADefunct()) NA, TRUE, FALSE) 702s + useNames <- useNames[count %% length(useNames) + 1] 702s + 702s + validateIndicesTestMatrix_w(x, w, rows, cols, 702s + ftest = row_fcn, fsure = row_fcn, 702s + na.rm = na.rm, useNames = useNames) 702s + validateIndicesTestMatrix_w(x, w, rows, cols, 702s + fcoltest = col_fcn, fsure = row_fcn, 702s + na.rm = na.rm, useNames = useNames) 702s + } 702s + } 702s + } 702s + } 702s + cat(sprintf("%s()...DONE\n", fcn)) 702s + } 702s subsetted tests on matrix weightedVar()... 703s weightedVar()...DONE 703s subsetted tests on matrix weightedSd()... 704s weightedSd()...DONE 704s subsetted tests on matrix weightedMad()... 705s weightedMad()...DONE 705s > 705s 705s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 705s Copyright (C) 2024 The R Foundation for Statistical Computing 705s Platform: powerpc64le-unknown-linux-gnu (64-bit) 705s 705s R is free software and comes with ABSOLUTELY NO WARRANTY. 705s You are welcome to redistribute it under certain conditions. 705s Type 'license()' or 'licence()' for distribution details. 705s 705s R is a collaborative project with many contributors. 705s Type 'contributors()' for more information and 705s 'citation()' on how to cite R or R packages in publications. 705s 705s Type 'demo()' for some demos, 'help()' for on-line help, or 705s 'help.start()' for an HTML browser interface to help. 705s Type 'q()' to quit R. 705s 705s > library("matrixStats") 705s > 705s > signTabulate0 <- function(x, ...) { 705s + nneg <- sum(x < 0, na.rm = TRUE) 705s + nzero <- sum(x == 0, na.rm = TRUE) 705s + npos <- sum(x > 0, na.rm = TRUE) 705s + nna <- sum(is.na(x)) 705s + nneginf <- sum(is.infinite(x) & x < 0, na.rm = TRUE) 705s + nposinf <- sum(is.infinite(x) & x > 0, na.rm = TRUE) 705s + res <- c(nneg, nzero, npos, nna, nneginf, nposinf) 705s + res <- as.double(res) 705s + names(res) <- c("-1", "0", "+1", "NA", "-Inf", "+Inf") 705s + if (is.integer(x)) res <- res[1:4] 705s + res 705s + } # signTabulate0() 705s > 705s > 705s > # Simulate data 705s > set.seed(0xBEEF) 705s > n <- 100L 705s > x <- runif(n) 705s > x[sample(n, size = 0.1 * n)] <- 0 705s > x[sample(n, size = 0.1 * n)] <- NA_real_ 705s > x[sample(n, size = 0.1 * n)] <- -Inf 705s > x[sample(n, size = 0.1 * n)] <- +Inf 705s > 705s > # Doubles 705s > message("Doubles:") 705s > counts0 <- signTabulate0(x) 705s > print(counts0) 705s -1 0 +1 NA -Inf +Inf 705s 9 7 77 7 9 10 705s > counts1 <- signTabulate(x) 705s > print(counts1) 705s -1 0 +1 NA -Inf +Inf 705s 9 7 77 7 9 10 705s > stopifnot(identical(counts1, counts0)) 705s > 705s > # Integers 705s > message("Integers:") 705s > x <- suppressWarnings(as.integer(x)) 705s > counts0 <- signTabulate0(x) 705s > print(counts0) 705s -1 0 +1 NA 705s 0 74 0 26 705s > counts1 <- signTabulate(x) 705s > print(counts1) 705s -1 0 +1 NA 705s 0 74 0 26 705s > stopifnot(identical(counts1, counts0)) 705s > 705s Doubles: 705s Integers: 705s 705s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 705s Copyright (C) 2024 The R Foundation for Statistical Computing 705s Platform: powerpc64le-unknown-linux-gnu (64-bit) 705s 705s R is free software and comes with ABSOLUTELY NO WARRANTY. 705s You are welcome to redistribute it under certain conditions. 705s Type 'license()' or 'licence()' for distribution details. 705s 705s R is a collaborative project with many contributors. 705s Type 'contributors()' for more information and 705s 'citation()' on how to cite R or R packages in publications. 705s 705s Type 'demo()' for some demos, 'help()' for on-line help, or 705s 'help.start()' for an HTML browser interface to help. 705s Type 'q()' to quit R. 705s 705s > library("matrixStats") 705s > 705s > signTabulate0 <- function(x, ...) { 705s + nneg <- sum(x < 0, na.rm = TRUE) 705s + nzero <- sum(x == 0, na.rm = TRUE) 705s + npos <- sum(x > 0, na.rm = TRUE) 705s + nna <- sum(is.na(x)) 705s + nneginf <- sum(is.infinite(x) & x < 0, na.rm = TRUE) 705s + nposinf <- sum(is.infinite(x) & x > 0, na.rm = TRUE) 705s + res <- c(nneg, nzero, npos, nna, nneginf, nposinf) 705s + res <- as.double(res) 705s + names(res) <- c("-1", "0", "+1", "NA", "-Inf", "+Inf") 705s + if (is.integer(x)) res <- res[1:4] 705s + res 705s + } # signTabulate0() 705s > 705s > 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > # Subsetted tests 705s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 705s > source("utils/validateIndicesFramework.R") 705s > x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6, ncol = 6) 705s > x[2:3, 4:5] <- +Inf 705s > x[4:5, 1:2] <- -Inf 705s > for (idxs in index_cases) { 705s + validateIndicesTestVector(x, idxs, 705s + ftest = signTabulate, fsure = signTabulate0) 705s + } 705s > 706s 706s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 706s Copyright (C) 2024 The R Foundation for Statistical Computing 706s Platform: powerpc64le-unknown-linux-gnu (64-bit) 706s 706s R is free software and comes with ABSOLUTELY NO WARRANTY. 706s You are welcome to redistribute it under certain conditions. 706s Type 'license()' or 'licence()' for distribution details. 706s 706s R is a collaborative project with many contributors. 706s Type 'contributors()' for more information and 706s 'citation()' on how to cite R or R packages in publications. 706s 706s Type 'demo()' for some demos, 'help()' for on-line help, or 706s 'help.start()' for an HTML browser interface to help. 706s Type 'q()' to quit R. 706s 706s > library("matrixStats") 706s > options(warn = 1) 706s > 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > # Consistency checks 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > set.seed(1) 706s > 706s > sum2_R <- function(x, na.rm = FALSE, idxs = NULL) { 706s + if (is.null(idxs)) { 706s + sum(x, na.rm = na.rm) 706s + } else { 706s + sum(x[idxs], na.rm = na.rm) 706s + } 706s + } # sum2_R() 706s > 706s > 706s > cat("Consistency checks:\n") 706s Consistency checks: 706s > for (kk in 1:20) { 706s + cat("Random test #", kk, "\n", sep = "") 706s + 706s + # Simulate data in a matrix of any shape 706s + n <- sample(1e3, size = 1L) 706s + x <- rnorm(n, sd = 100) 706s + 706s + # Add NAs? 706s + if ((kk %% 4) %in% c(3, 0)) { 706s + cat("Adding NAs\n") 706s + nna <- sample(n, size = 1L) 706s + na_values <- c(NA_real_, NaN) 706s + t <- sample(na_values, size = nna, replace = TRUE) 706s + x[sample(length(x), size = nna)] <- t 706s + } 706s + 706s + # Integer or double? 706s + if ((kk %% 4) %in% c(2, 0)) { 706s + cat("Coercing to integers\n") 706s + storage.mode(x) <- "integer" 706s + } 706s + 706s + na.rm <- sample(c(TRUE, FALSE), size = 1L) 706s + 706s + # Sum over all 706s + y0 <- sum2_R(x, na.rm = na.rm) 706s + y1 <- sum2(x, na.rm = na.rm) 706s + stopifnot(all.equal(y1, y0)) 706s + 706s + # Sum over subset 706s + nidxs <- sample(n, size = 1L) 706s + idxs <- sample(n, size = nidxs) 706s + y0 <- sum2_R(x, na.rm = na.rm, idxs = idxs) 706s + y1 <- sum2(x, na.rm = na.rm, idxs = idxs) 706s + stopifnot(all.equal(y1, y0)) 706s + 706s + if (storage.mode(x) == "integer") { 706s + storage.mode(x) <- "logical" 706s + 706s + y0 <- sum2_R(x, na.rm = na.rm) 706s + y1 <- sum2(x, na.rm = na.rm) 706s + stopifnot(all.equal(y1, y0)) 706s + 706s + y0 <- sum2_R(x, na.rm = na.rm, idxs = idxs) 706s + y1 <- sum2(x, na.rm = na.rm, idxs = idxs) 706s + stopifnot(all.equal(y1, y0)) 706s + } 706s + } # for (kk ...) 706s Random test #1 706s Random test #2 706s Coercing to integers 706s Random test #3 706s Adding NAs 706s Random test #4 706s Adding NAs 706s Coercing to integers 706s Random test #5 706s Random test #6 706s Coercing to integers 706s Random test #7 706s Adding NAs 706s Random test #8 706s Adding NAs 706s Coercing to integers 706s Random test #9 706s Random test #10 706s Coercing to integers 706s Random test #11 706s Adding NAs 706s Random test #12 706s Adding NAs 706s Coercing to integers 706s Random test #13 706s Random test #14 706s Coercing to integers 706s Random test #15 706s Adding NAs 706s Random test #16 706s Adding NAs 706s Coercing to integers 706s Random test #17 706s Random test #18 706s Coercing to integers 706s Random test #19 706s Adding NAs 706s Random test #20 706s Adding NAs 706s Coercing to integers 706s > 706s > 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > # All missing values 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > for (n in 0:2) { 706s + for (na.rm in c(FALSE, TRUE)) { 706s + x <- rep(NA_real_, times = n) 706s + y0 <- sum(x, na.rm = na.rm) 706s + y <- sum2(x, na.rm = na.rm) 706s + stopifnot(all.equal(y, y0)) 706s + 706s + x <- rep(NA_integer_, times = n) 706s + y0 <- sum(x, na.rm = na.rm) 706s + y <- sum2(x, na.rm = na.rm) 706s + stopifnot(all.equal(y, y0)) 706s + 706s + x <- rep(NA, times = n) 706s + y0 <- sum(x, na.rm = na.rm) 706s + y <- sum2(x, na.rm = na.rm) 706s + stopifnot(all.equal(y, y0)) 706s + } 706s + } 706s > 706s > 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > # Special cases 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > for (na.rm in c(FALSE, TRUE)) { 706s + # Summing over zero elements (integers) 706s + x <- integer(0) 706s + s1 <- sum(x, na.rm = na.rm) 706s + s2 <- sum2(x, na.rm = na.rm) 706s + stopifnot(identical(s1, s2)) 706s + 706s + x <- 1:10 706s + idxs <- integer(0) 706s + s1 <- sum(x[idxs], na.rm = na.rm) 706s + s2 <- sum2(x, idxs = idxs, na.rm = na.rm) 706s + stopifnot(identical(s1, s2)) 706s + 706s + # Summing over NA_integer_:s 706s + x <- rep(NA_integer_, times = 10L) 706s + s1 <- sum(x, na.rm = na.rm) 706s + s2 <- sum2(x, na.rm = na.rm) 706s + stopifnot(identical(s1, s2)) 706s + 706s + x <- rep(NA_integer_, times = 10L) 706s + idxs <- 1:5 706s + s1 <- sum(x[idxs], na.rm = na.rm) 706s + s2 <- sum2(x, idxs = idxs, na.rm = na.rm) 706s + stopifnot(identical(s1, s2)) 706s + 706s + 706s + # Summing over zero elements (doubles) 706s + x <- double(0) 706s + s1 <- sum(x) 706s + s2 <- sum2(x) 706s + stopifnot( 706s + identical(s1, 0), 706s + identical(s1, s2) 706s + ) 706s + 706s + x <- as.double(1:10) 706s + idxs <- integer(0) 706s + s1 <- sum(x[idxs]) 706s + s2 <- sum2(x, idxs = idxs) 706s + stopifnot( 706s + identical(s1, 0), 706s + identical(s1, s2) 706s + ) 706s + 706s + # Summing over NA_real_:s 706s + x <- rep(NA_real_, times = 10L) 706s + s1 <- sum(x, na.rm = na.rm) 706s + s2 <- sum2(x, na.rm = na.rm) 706s + stopifnot( 706s + !na.rm || s1 == 0, 706s + identical(s1, s2) 706s + ) 706s + 706s + x <- rep(NA_real_, times = 10L) 706s + idxs <- 1:5 706s + s1 <- sum(x[idxs], na.rm = na.rm) 706s + s2 <- sum2(x, idxs = idxs, na.rm = na.rm) 706s + stopifnot( 706s + !na.rm || s1 == 0, 706s + identical(s1, s2) 706s + ) 706s + 706s + # Summing over -Inf:s 706s + x <- rep(-Inf, times = 3L) 706s + s1 <- sum(x, na.rm = na.rm) 706s + s2 <- sum2(x, na.rm = na.rm) 706s + stopifnot( 706s + is.infinite(s1) && s1 < 0, 706s + identical(s1, s2) 706s + ) 706s + 706s + # Summing over +Inf:s 706s + x <- rep(+Inf, times = 3L) 706s + s1 <- sum(x, na.rm = na.rm) 706s + s2 <- sum2(x, na.rm = na.rm) 706s + stopifnot(identical(s1, s2)) 706s + stopifnot( 706s + is.infinite(s1) && s1 > 0, 706s + identical(s1, s2) 706s + ) 706s + 706s + # Summing over mix of -Inf:s and +Inf:s 706s + x <- rep(c(-Inf, +Inf), times = 3L) 706s + s1 <- sum(x, na.rm = na.rm) 706s + s2 <- sum2(x, na.rm = na.rm) 706s + stopifnot( 706s + is.nan(s1), 706s + identical(s1, s2) 706s + ) 706s + 706s + # Summing over mix of -Inf:s and +Inf:s and numerics 706s + x <- rep(c(-Inf, +Inf, 3.14), times = 2L) 706s + s1 <- sum(x, na.rm = na.rm) 706s + s2 <- sum2(x, na.rm = na.rm) 706s + stopifnot( 706s + is.nan(s1), 706s + identical(s1, s2) 706s + ) 706s + 706s + # Summing over mix of NaN, NA, +Inf, and numerics 706s + x <- c(NaN, NA, +Inf, 3.14) 706s + s1 <- sum(x, na.rm = na.rm) 706s + s2 <- sum2(x, na.rm = na.rm) 706s + if (na.rm) { 706s + stopifnot( 706s + is.infinite(s1) && s1 > 0, 706s + identical(s2, s1) 706s + ) 706s + } else { 706s + stopifnot(is.na(s1), is.na(s2)) 706s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 706s + ## returned here (as one would expect). NaN might very well be returned, 706s + ## when both NA and NaN are involved. This is an accepted feature in R, 706s + ## which is documented in help("is.nan"). See also 706s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 706s + ## Thus, we cannot guarantee that s1 is identical to s0. 706s + } 706s + 706s + # Summing over mix of NaN, NA, +Inf, and numerics 706s + x <- c(NA, NaN, +Inf, 3.14) 706s + s1 <- sum(x, na.rm = na.rm) 706s + s2 <- sum2(x, na.rm = na.rm) 706s + if (na.rm) { 706s + stopifnot( 706s + is.infinite(s1) && s1 > 0, 706s + identical(s2, s1) 706s + ) 706s + } else { 706s + stopifnot(is.na(s1), is.na(s2)) 706s + ## NOTE, due to compiler optimization, it is not guaranteed that NA is 706s + ## returned here (as one would expect). NaN might very well be returned, 706s + ## when both NA and NaN are involved. This is an accepted feature in R, 706s + ## which is documented in help("is.nan"). See also 706s + ## https://stat.ethz.ch/pipermail/r-devel/2017-April/074009.html. 706s + ## Thus, we cannot guarantee that s1 is identical to s0. 706s + } 706s + } 706s > 706s > 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > # Summing of large integers 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > x <- c(.Machine$integer.max, 1L, -.Machine$integer.max) 706s Warning in sum2(x[1:2]) :> 706s > # Total gives integer overflow 706s > s1 <- sum(x[1:2]) # NA_integer_ w/ warning 706s > s2 <- sum2(x[1:2]) # NA_integer_ w/ warning 706s 706s Integer overflow. Use sum2(..., mode = "double") to avoid this. 706s Warning in sum2(x, mode = "integer") : 706s sum2(x, mode = "integer") called with typeof(x) == "double"; did you mean to use as.integer(sum2(x))? 706s > stopifnot( 706s + getRversion() >= "3.5.0" || identical(s1, NA_integer_), 706s + identical(s2, NA_integer_) 706s + ) 706s > 706s > ## Assert above warning 706s > res <- tryCatch({ 706s + s2 <- sum2(x[1:2]) 706s + }, warning = identity) 706s > stopifnot(inherits(res, "warning")) 706s > 706s > 706s > # Total gives integer overflow (coerce to numeric) 706s > s1 <- sum(as.numeric(x[1:2])) # 2147483648 706s > s2 <- sum2(as.numeric(x[1:2])) # 2147483648 706s > s3 <- sum2(x[1:2], mode = "double") # 2147483648 706s > stopifnot( 706s + identical(s1, 2147483648), 706s + identical(s1, s2), 706s + identical(s1, s3) 706s + ) 706s > 706s > # Cumulative sum would give integer overflow but not the total 706s > s1 <- sum(x) # 1L 706s > s2 <- sum2(x) # 1L 706s > stopifnot( 706s + identical(s1, 1L), 706s + identical(s1, s2) 706s + ) 706s > 706s > # Input is double but coersing result to integer 706s > x <- c(1, 2, 3.1) 706s > s1 <- sum2(x) 706s > s2 <- sum2(x, mode = "integer") 706s > stopifnot( 706s + identical(as.integer(s1), s2) 706s + ) 706s > 706s > ## Assert above warning 706s > res <- tryCatch({ 706s + s2 <- sum2(x, mode = "integer") 706s + }, warning = identity) 706s > stopifnot(inherits(res, "warning")) 706s > 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > # Summing of large doubles 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > ## Double overflow 706s > x <- rep(.Machine$double.xmax, times = 2L) 706s > y0 <- sum(x) 706s > print(y0) 706s [1] Inf 706s > y <- sum2(x) 706s > print(y) 706s [1] Inf 706s > stopifnot( 706s + is.infinite(y) && y > 0, 706s + identical(y, y0) 706s + ) 706s > 706s > x <- rep(-.Machine$double.xmax, times = 2L) 706s > y0 <- sum(x) 706s > print(y0) 706s [1] -Inf 706s > y <- sum2(x) 706s > print(y) 706s [1] -Inf 706s > stopifnot( 706s + is.infinite(y) && y < 0, 706s + identical(y, y0) 706s + ) 706s > 706s > 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > # Argument 'idxs' 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > x <- 1:10 706s > idxs_list <- list( 706s + integer = 1:5, 706s + double = as.double(1:5), 706s + logical = (x <= 5) 706s + ) 706s > 706s > for (idxs in idxs_list) { 706s + cat("idxs:\n") 706s + str(idxs) 706s + s1 <- sum(x[idxs], na.rm = TRUE) 706s + s2 <- sum2(x, idxs = idxs, na.rm = TRUE) 706s + stopifnot(identical(s1, s2)) 706s + } 706s idxs: 706s int [1:5] 1 2 3 4 5 706s idxs: 706s num [1:5] 1 2 3 4 5 706s idxs: 706s logi [1:10] TRUE TRUE TRUE TRUE TRUE FALSE ... 706s > 706s 706s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 706s Copyright (C) 2024 The R Foundation for Statistical Computing 706s Platform: powerpc64le-unknown-linux-gnu (64-bit) 706s 706s R is free software and comes with ABSOLUTELY NO WARRANTY. 706s You are welcome to redistribute it under certain conditions. 706s Type 'license()' or 'licence()' for distribution details. 706s 706s R is a collaborative project with many contributors. 706s Type 'contributors()' for more information and 706s 'citation()' on how to cite R or R packages in publications. 706s 706s Type 'demo()' for some demos, 'help()' for on-line help, or 706s 'help.start()' for an HTML browser interface to help. 706s Type 'q()' to quit R. 706s 706s > library("matrixStats") 706s > 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > # Subsetted tests 706s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - 706s > source("utils/validateIndicesFramework.R") 706s > x <- runif(6, min = -6, max = 6) 706s > storage.mode(x) <- "integer" 706s > for (idxs in index_cases) { 706s + validateIndicesTestVector(x, idxs, 706s + ftest = sum2, fsure = sum, 706s + na.rm = FALSE) 706s + validateIndicesTestVector(x, idxs, 706s + ftest = sum2, fsure = sum, 706s + na.rm = TRUE) 706s + } 706s > 706s 706s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 706s Copyright (C) 2024 The R Foundation for Statistical Computing 706s Platform: powerpc64le-unknown-linux-gnu (64-bit) 706s 706s R is free software and comes with ABSOLUTELY NO WARRANTY. 706s You are welcome to redistribute it under certain conditions. 706s Type 'license()' or 'licence()' for distribution details. 706s 706s R is a collaborative project with many contributors. 706s Type 'contributors()' for more information and 706s 'citation()' on how to cite R or R packages in publications. 706s 706s Type 'demo()' for some demos, 'help()' for on-line help, or 706s 'help.start()' for an HTML browser interface to help. 706s Type 'q()' to quit R. 706s 706s > library(matrixStats) 706s > source("utils/validateIndicesFramework.R") 706s > 706s > oopts <- options(matrixStats.validateIndices = "ignore") 706s > 706s > ftest <- function(x, idxs) validateIndices(idxs, length(x)) 706s > 706s > x <- 1:6 706s > for (idxs in index_cases) { 706s + for (mode in c("integer", "numeric", "logical")) { 706s + if (!is.null(idxs)) { 706s + suppressWarnings({storage.mode(idxs) <- mode}) 706s + } 706s + validateIndicesTestVector(x, idxs, ftest = ftest, fsure = identity) 706s + } 706s + } 706s > 706s > ftest <- function(x, idxs) validateIndices(idxs, length(x)) 706s > 706s > for (idxs in index_error_cases) { 706s + validateIndicesTestVector(x, idxs, ftest = ftest, fsure = identity) 706s + } 706s > 706s > 706s > ftest <- function(x, rows, cols) { 706s + vr <- validateIndices(rows, dim(x)[1], FALSE) 706s + vc <- validateIndices(cols, dim(x)[2], FALSE) 706s + 706s + stopifnot(all((vr > 0 & vr <= dim(x)[1]) | is.na(vr))) 706s + stopifnot(all((vc > 0 & vc <= dim(x)[2]) | is.na(vc))) 706s + suppressWarnings(x <- x[vr, vc, drop = FALSE]) 706s + x 706s + } 706s > 706s > x <- matrix(1:36, nrow = 6, ncol = 6) 706s > for (rows in index_cases) { 706s + for (cols in index_cases) { 706s + validateIndicesTestMatrix(x, rows, cols, ftest = ftest, fsure = identity) 706s + } 706s + } 706s > 706s > # Testing for 64-bit builds (64 bits = 8 bytes) 706s > if (.Machine$sizeof.pointer == 8L) { 706s + validateIndices(c(1.25*2^40, 3, 1*2^38, 1, 1.4*2^39), maxIdx = 1*2^41) 706s + } 706s [1] 1.374390e+12 3.000000e+00 2.748779e+11 1.000000e+00 7.696581e+11 706s > 706s > options(oopts) 706s > 706s 706s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 706s Copyright (C) 2024 The R Foundation for Statistical Computing 706s Platform: powerpc64le-unknown-linux-gnu (64-bit) 706s 706s R is free software and comes with ABSOLUTELY NO WARRANTY. 706s You are welcome to redistribute it under certain conditions. 706s Type 'license()' or 'licence()' for distribution details. 706s 706s R is a collaborative project with many contributors. 706s Type 'contributors()' for more information and 706s 'citation()' on how to cite R or R packages in publications. 706s 706s Type 'demo()' for some demos, 'help()' for on-line help, or 706s 'help.start()' for an HTML browser interface to help. 706s Type 'q()' to quit R. 706s 707s > library("matrixStats") 707s > 707s > set.seed(1) 707s > x <- rnorm(1e4) 707s > 707s > 707s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707s > # Variance estimators 707s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707s > sigma2_a <- var(x) 707s > cat(sprintf("var(x) = %g\n", sigma2_a)) 707s var(x) = 1.02487 707s > 707s > sigma2_b <- varDiff(x) 707s > cat(sprintf("varDiff(x) = %g\n", sigma2_b)) 707s varDiff(x) = 1.01224 707s > 707s > d <- abs(sigma2_b - sigma2_a) 707s > cat(sprintf("Absolute difference = %g\n", d)) 707s Absolute difference = 0.0126268 707s > stopifnot(d < 0.02) 707s > 707s > 707s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707s > # Standard deviation estimators 707s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707s > sigma_a <- sd(x) 707s > cat(sprintf("sd(x) = %g\n", sigma_a)) 707s sd(x) = 1.01236 707s > 707s > sigma_b <- sdDiff(x) 707s > cat(sprintf("sdDiff(x) = %g\n", sigma_b)) 707s sdDiff(x) = 1.0061 707s > 707s > d <- abs(sigma_b - sigma_a) 707s > cat(sprintf("Absolute difference = %g\n", d)) 707s Absolute difference = 0.00625567 707s > stopifnot(d < 0.01) 707s > 707s > # Sanity checks 707s > stopifnot(abs(sigma2_a - sigma_a ^ 2) < 1e-9) 707s > stopifnot(abs(sigma2_b - sigma_b ^ 2) < 1e-9) 707s > 707s > 707s > sigma_a2 <- mad(x) 707s > cat(sprintf("mad(x) = %g\n", sigma_a2)) 707s mad(x) = 0.998376 707s > 707s > sigma_b2 <- madDiff(x) 707s > cat(sprintf("madDiff(x) = %g\n", sigma_b2)) 707s madDiff(x) = 1.02513 707s > 707s > d <- abs(sigma_b2 - sigma_a2) 707s > cat(sprintf("Absolute difference = %g\n", d)) 707s Absolute difference = 0.0267497 707s > stopifnot(d < 0.05) 707s > 707s > 707s > sigma_a3 <- IQR(x) 707s > cat(sprintf("IQR(x) = %g\n", sigma_a3)) 707s IQR(x) = 1.35105 707s > 707s > sigma_b3 <- iqrDiff(x) 707s > cat(sprintf("iqrDiff(x) = %g\n", sigma_b3)) 707s iqrDiff(x) = 1.37797 707s > 707s > d <- abs(sigma_b3 - sigma_a3) 707s > cat(sprintf("Absolute difference = %g\n", d)) 707s Absolute difference = 0.0269152 707s > stopifnot(d < 0.05) 707s > 707s > 707s > 707s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707s > # Trimmed estimators 707s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707s > y <- x 707s > outliers <- sample(length(x), size = 0.1 * length(x)) 707s > y[outliers] <- 100 * y[outliers] 707s > 707s > sigma_ao <- sd(y[-outliers]) 707s > cat(sprintf("sd(y) = %g\n", sigma_ao)) 707s sd(y) = 1.01166 707s > 707s > sigma_bo <- sdDiff(y[-outliers]) 707s > cat(sprintf("sdDiff(y) = %g\n", sigma_bo)) 707s sdDiff(y) = 1.00743 707s > 707s > d <- abs(sigma_b - sigma_a) 707s > cat(sprintf("Absolute difference = %g\n", d)) 707s Absolute difference = 0.00625567 707s > stopifnot(d < 0.01) 707s > 707s > sigma_bot <- sdDiff(y, trim = 0.05) 707s > cat(sprintf("sdDiff(y, trim = 0.05) = %g\n", sigma_bot)) 707s sdDiff(y, trim = 0.05) = 7.74327 707s > 707s > d <- abs(sigma_bot - sigma_a) 707s > cat(sprintf("Absolute difference = %g\n", d)) 707s Absolute difference = 6.73091 707s > #stopifnot(d < 1e-3) 707s > 707s > sigma_cot <- madDiff(y, trim = 0.05) 707s > cat(sprintf("madDiff(y, trim = 0.05) = %g\n", sigma_cot)) 707s madDiff(y, trim = 0.05) = 1.15278 707s > 707s > sigma_dot <- iqrDiff(y, trim = 0.05) 707s > cat(sprintf("iqrDiff(y, trim = 0.05) = %g\n", sigma_dot)) 707s iqrDiff(y, trim = 0.05) = 1.55762 707s > 707s > 707s > fcns <- list( 707s + varDiff = varDiff, 707s + sdDiff = sdDiff, 707s + madDiff = madDiff, 707s + iqrDiff = iqrDiff 707s + ) 707s > 707s > for (name in names(fcns)) { 707s + cat(sprintf("%s()...\n", name)) 707s + fcn <- fcns[[name]] 707s + 707s + for (mode in c("integer", "double")) { 707s + cat("mode: ", mode, "", sep = "") 707s + for (n in 0:3) { 707s + x <- runif(n, min = -5, max = 5) 707s + storage.mode(x) <- mode 707s + str(x) 707s + 707s + y <- fcn(x) 707s + yt <- fcn(x, trim = 0.1) 707s + str(list("non-trimmed" = y, trimmed = yt)) 707s + } # for (mode ...) 707s + } 707s + 707s + cat(sprintf("%s()...DONE\n", name)) 707s + } # for (name ...) 707s varDiff()... 707s mode: integer int(0) 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s int -4 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s int [1:2] 3 2 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s int [1:3] 1 4 -1 707s List of 2 707s $ non-trimmed: num 16 707s $ trimmed : num 16 707s mode: double num(0) 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s num -0.794 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s num [1:2] 0.897 -3.728 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s num [1:3] 2.07 -1.13 1.94 707s List of 2 707s $ non-trimmed: num 9.83 707s $ trimmed : num 9.83 707s varDiff()...DONE 707s sdDiff()... 707s mode: integer int(0) 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s int 2 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s int [1:2] -4 1 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s int [1:3] -2 1 -1 707s List of 2 707s $ non-trimmed: num 2.5 707s $ trimmed : num 2.5 707s mode: double num(0) 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s num -3.78 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s num [1:2] -2.04 2.38 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s num [1:3] 1.42 -2.14 1.14 707s List of 2 707s $ non-trimmed: num 3.42 707s $ trimmed : num 3.42 707s sdDiff()...DONE 707s madDiff()... 707s mode: integer int(0) 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s int -1 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s int [1:2] -1 4 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s int [1:3] -1 0 -3 707s List of 2 707s $ non-trimmed: num 2.1 707s $ trimmed : num 2.1 707s mode: double num(0) 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s num -1.13 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s num [1:2] -1.7 -1.21 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s num [1:3] -2.39 -0.464 3.086 707s List of 2 707s $ non-trimmed: num 0.851 707s $ trimmed : num 0.851 707s madDiff()...DONE 707s iqrDiff()... 707s mode: integer int(0) 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s int 3 707s List of 2 707s $ non-trimmed: num 0 707s $ trimmed : num 0 707s int [1:2] -3 4 707s List of 2 707s $ non-trimmed: num 0 707s $ trimmed : num 0 707s int [1:3] 0 -2 -2 707s List of 2 707s $ non-trimmed: num 0.707 707s $ trimmed : num 0.707 707s mode: double num(0) 707s List of 2 707s $ non-trimmed: num NA 707s $ trimmed : num NA 707s num -4.46 707s List of 2 707s $ non-trimmed: num 0 707s $ trimmed : num 0 707s num [1:2] 3.67 1.02 707s List of 2 707s $ non-trimmed: num 0 707s $ trimmed : num 0 707s num [1:3] -0.537 -2.733 2.857 707s List of 2 707s $ non-trimmed: num 2.75 707s $ trimmed : num 2.75 707s iqrDiff()...DONE 707s > 707s 707s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 707s Copyright (C) 2024 The R Foundation for Statistical Computing 707s Platform: powerpc64le-unknown-linux-gnu (64-bit) 707s 707s R is free software and comes with ABSOLUTELY NO WARRANTY. 707s You are welcome to redistribute it under certain conditions. 707s Type 'license()' or 'licence()' for distribution details. 707s 707s R is a collaborative project with many contributors. 707s Type 'contributors()' for more information and 707s 'citation()' on how to cite R or R packages in publications. 707s 707s Type 'demo()' for some demos, 'help()' for on-line help, or 707s 'help.start()' for an HTML browser interface to help. 707s Type 'q()' to quit R. 707s 707s > library("matrixStats") 707s > 707s > fcns <- list( 707s + varDiff = varDiff, 707s + sdDiff = sdDiff, 707s + madDiff = madDiff, 707s + iqrDiff = iqrDiff 707s + ) 707s > 707s > 707s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707s > # Subsetted tests 707s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 707s > source("utils/validateIndicesFramework.R") 707s > for (name in names(fcns)) { 707s + cat(sprintf("subsetted tests on %s()...\n", name)) 707s + fcn <- fcns[[name]] 707s + 707s + for (mode in c("numeric", "integer")) { 707s + x <- runif(6, min = -6, max = 6) 707s + storage.mode(x) <- mode 707s + trim <- runif(1, min = 0, max = 0.5) 707s + if (mode == "numeric") x[1] <- Inf 707s + 707s + for (diff in 1:2) { 707s + for (idxs in index_cases) { 707s + validateIndicesTestVector(x, idxs, 707s + ftest = fcn, fsure = fcn, 707s + na.rm = TRUE, diff = diff, trim = trim) 707s + validateIndicesTestVector(x, idxs, 707s + ftest = fcn, fsure = fcn, 707s + na.rm = FALSE, diff = diff, trim = trim) 707s + } 707s + } 707s + } 707s + cat(sprintf("%s()...DONE\n", name)) 707s + } 707s subsetted tests on varDiff()... 707s varDiff()...DONE 707s subsetted tests on sdDiff()... 707s sdDiff()...DONE 707s subsetted tests on madDiff()... 707s madDiff()...DONE 707s subsetted tests on iqrDiff()... 707s iqrDiff()...DONE 707s > 707s 707s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 707s Copyright (C) 2024 The R Foundation for Statistical Computing 707s Platform: powerpc64le-unknown-linux-gnu (64-bit) 707s 707s R is free software and comes with ABSOLUTELY NO WARRANTY. 707s You are welcome to redistribute it under certain conditions. 707s Type 'license()' or 'licence()' for distribution details. 707s 707s R is a collaborative project with many contributors. 707s Type 'contributors()' for more information and 707s 'citation()' on how to cite R or R packages in publications. 707s 707s Type 'demo()' for some demos, 'help()' for on-line help, or 707s 'help.start()' for an HTML browser interface to help. 707s Type 'q()' to quit R. 707s 707s > library("matrixStats") 707s > 707s > for (mode in c("logical", "integer", "double")) { 707s + cat("mode: ", mode, "", sep = "") 707s + n <- 2L 707s + x <- runif(n, min = -5, max = 5) 707s + if (mode == "logical") { 707s + x <- x > 0 707s + } 707s + storage.mode(x) <- mode 707s + str(x) 707s + 707s + cat("All weights are 1\n") 707s + w <- rep(1, times = n) 707s + m0 <- weighted.mean(x, w) 707s + m1 <- weightedMean(x, w) 707s + str(list(m0 = m0, m1 = m1)) 707s + stopifnot(identical(m1, m0)) 707s + 707s + cat("First weight is 5\n") 707s + # Pull the mean towards zero 707s + w[1] <- 5 707s + str(w) 707s + m0 <- weighted.mean(x, w) 707s + m1 <- weightedMean(x, w) 707s + str(list(m0 = m0, m1 = m1)) 707s + stopifnot(identical(m1, m0)) 707s + 707s + cat("All weights are 0\n") 707s + # All weights set to zero 707s + w <- rep(0, times = n) 707s + m0 <- weighted.mean(x, w) 707s + m1 <- weightedMean(x, w) 707s + str(list(m0 = m0, m1 = m1)) 707s + stopifnot(identical(m1, m0)) 707s + 707s + cat("First weight is 8.5\n") 707s + # Put even more weight on the zero 707s + w[1] <- 8.5 707s + m0 <- weighted.mean(x, w) 707s + m1 <- weightedMean(x, w) 707s + str(list(m0 = m0, m1 = m1)) 707s + stopifnot(identical(m1, m0)) 707s + 707s + cat("First weight is Inf\n") 707s + # All weight on the first value 707s + w[1] <- Inf 707s + m0 <- weighted.mean(x, w) 707s + m1 <- weightedMean(x, w) 707s + str(list(m0 = m0, m1 = m1)) 707s + stopifnot(identical(m1, m0)) 707s + 707s + cat("Last weight is Inf\n") 707s + # All weight on the last value 707s + w[1] <- 1 707s + w[n] <- Inf 707s + m0 <- weighted.mean(x, w) 707s + m1 <- weightedMean(x, w) 707s + str(list(m0 = m0, m1 = m1)) 707s + stopifnot(identical(m1, m0)) 707s + } # for (mode ...) 707s mode: logical logi [1:2] FALSE FALSE 707s All weights are 1 707s List of 2 707s $ m0: num 0 707s $ m1: num 0 707s First weight is 5 707s num [1:2] 5 1 707s List of 2 707s $ m0: num 0 707s $ m1: num 0 707s All weights are 0 707s List of 2 707s $ m0: num NaN 707s $ m1: num NaN 707s First weight is 8.5 707s List of 2 707s $ m0: num 0 707s $ m1: num 0 707s First weight is Inf 707s List of 2 707s $ m0: num NaN 707s $ m1: num NaN 707s Last weight is Inf 707s List of 2 707s $ m0: num NaN 707s $ m1: num NaN 707s mode: integer int [1:2] -3 -3 707s All weights are 1 707s List of 2 707s $ m0: num -3 707s $ m1: num -3 707s First weight is 5 707s num [1:2] 5 1 707s List of 2 707s $ m0: num -3 707s $ m1: num -3 707s All weights are 0 707s List of 2 707s $ m0: num NaN 707s $ m1: num NaN 707s First weight is 8.5 707s List of 2 707s $ m0: num -3 707s $ m1: num -3 707s First weight is Inf 707s List of 2 707s $ m0: num NaN 707s $ m1: num NaN 707s Last weight is Inf 707s List of 2 707s $ m0: num NaN 707s $ m1: num NaN 707s mode: double num [1:2] 0.316 1.47 707s All weights are 1 707s List of 2 707s $ m0: num 0.893 707s $ m1: num 0.893 707s First weight is 5 707s num [1:2] 5 1 707s List of 2 707s $ m0: num 0.508 707s $ m1: num 0.508 707s All weights are 0 707s List of 2 707s $ m0: num NaN 707s $ m1: num NaN 707s First weight is 8.5 707s List of 2 707s $ m0: num 0.316 707s $ m1: num 0.316 707s First weight is Inf 707s List of 2 707s $ m0: num NaN 707s $ m1: num NaN 707s Last weight is Inf 707s List of 2 707s $ m0: num NaN 707s $ m1: num NaN 707s > 707s > 707s > message("*** Testing for missing values") 707s *** Testing for missing values 707s > # NA tests 707s > xs <- list(A = c(1, 2, 3), B = c(NA, 2, 3), C = c(NA, 2, 3)) 707s > ws <- list(A = c(1, 1, 1), B = c(NA, 1, 1), C = c(1, NA, 1)) 707s > ## NOTE: The (B, B) case with na.rm = TRUE is interesting because 707s > ## even if NAs in 'w' are not dropped by na.rm = TRUE, this one 707s > ## is because 'x' is dropped and therefore that first element 707s > ## is skipped in the computation. It basically does 707s > ## keep <- !is.na(x); x <- x[keep]; w <- w[keep] 707s > ## without looking at 'w'. 707s > for (x in xs) { 707s + for (mode in c("logical", "integer", "double")) { 707s + storage.mode(x) <- mode 707s + for (w in ws) { 707s + for (na.rm in c(FALSE, TRUE)) { 707s + cat(sprintf("mode: %s, na.rm = %s\n", mode, na.rm)) 707s + str(list(x = x, w = w)) 707s + m0 <- weighted.mean(x, w, na.rm = na.rm) 707s + m1 <- weightedMean(x, w, na.rm = na.rm) 707s + str(list(m0 = m0, m1 = m1)) 707s + stopifnot(all.equal(m1, m0)) 707s + } 707s + } 707s + } 707s + } 707s mode: logical, na.rm = FALSE 707s List of 2 707s $ x: logi [1:3] TRUE TRUE TRUE 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: logical, na.rm = TRUE 707s List of 2 707s $ x: logi [1:3] TRUE TRUE TRUE 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: logical, na.rm = FALSE 707s List of 2 707s $ x: logi [1:3] TRUE TRUE TRUE 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = TRUE 707s List of 2 707s $ x: logi [1:3] TRUE TRUE TRUE 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = FALSE 707s List of 2 707s $ x: logi [1:3] TRUE TRUE TRUE 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = TRUE 707s List of 2 707s $ x: logi [1:3] TRUE TRUE TRUE 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = FALSE 707s List of 2 707s $ x: int [1:3] 1 1 1 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: integer, na.rm = TRUE 707s List of 2 707s $ x: int [1:3] 1 1 1 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: integer, na.rm = FALSE 707s List of 2 707s $ x: int [1:3] 1 1 1 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = TRUE 707s List of 2 707s $ x: int [1:3] 1 1 1 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = FALSE 707s List of 2 707s $ x: int [1:3] 1 1 1 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = TRUE 707s List of 2 707s $ x: int [1:3] 1 1 1 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: double, na.rm = FALSE 707s List of 2 707s $ x: num [1:3] 1 1 1 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: double, na.rm = TRUE 707s List of 2 707s $ x: num [1:3] 1 1 1 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: double, na.rm = FALSE 707s List of 2 707s $ x: num [1:3] 1 1 1 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: double, na.rm = TRUE 707s List of 2 707s $ x: num [1:3] 1 1 1 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: double, na.rm = FALSE 707s List of 2 707s $ x: num [1:3] 1 1 1 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: double, na.rm = TRUE 707s List of 2 707s $ x: num [1:3] 1 1 1 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = FALSE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = TRUE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: logical, na.rm = FALSE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = TRUE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: logical, na.rm = FALSE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = TRUE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = FALSE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = TRUE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: integer, na.rm = FALSE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = TRUE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: integer, na.rm = FALSE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = TRUE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: double, na.rm = FALSE 707s List of 2 707s $ x: num [1:3] NA 1 1 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: double, na.rm = TRUE 707s List of 2 707s $ x: num [1:3] NA 1 1 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: double, na.rm = FALSE 707s List of 2 707s $ x: num [1:3] NA 1 1 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: double, na.rm = TRUE 707s List of 2 707s $ x: num [1:3] NA 1 1 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: double, na.rm = FALSE 707s List of 2 707s $ x: num [1:3] NA 1 1 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: double, na.rm = TRUE 707s List of 2 707s $ x: num [1:3] NA 1 1 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = FALSE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = TRUE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: logical, na.rm = FALSE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = TRUE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: logical, na.rm = FALSE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: logical, na.rm = TRUE 707s List of 2 707s $ x: logi [1:3] NA TRUE TRUE 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = FALSE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = TRUE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] 1 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: integer, na.rm = FALSE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = TRUE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] NA 1 1 707s List of 2 707s $ m0: num 1 707s $ m1: num 1 707s mode: integer, na.rm = FALSE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 707s $ m1: num NA 707s mode: integer, na.rm = TRUE 707s List of 2 707s $ x: int [1:3] NA 1 1 707s $ w: num [1:3] 1 NA 1 707s List of 2 707s $ m0: num NA 708s $ m1: num NA 708s mode: double, na.rm = FALSE 708s List of 2 708s $ x: num [1:3] NA 1 1 708s $ w: num [1:3] 1 1 1 708s List of 2 708s $ m0: num NA 708s $ m1: num NA 708s mode: double, na.rm = TRUE 708s List of 2 708s $ x: num [1:3] NA 1 1 708s $ w: num [1:3] 1 1 1 708s List of 2 708s $ m0: num 1 708s $ m1: num 1 708s mode: double, na.rm = FALSE 708s List of 2 708s $ x: num [1:3] NA 1 1 708s $ w: num [1:3] NA 1 1 708s List of 2 708s $ m0: num NA 708s $ m1: num NA 708s mode: double, na.rm = TRUE 708s List of 2 708s $ x: num [1:3] NA 1 1 708s $ w: num [1:3] NA 1 1 708s List of 2 708s $ m0: num 1 708s $ m1: num 1 708s mode: double, na.rm = FALSE 708s List of 2 708s $ x: num [1:3] NA 1 1 708s $ w: num [1:3] 1 NA 1 708s List of 2 708s $ m0: num NA 708s $ m1: num NA 708s mode: double, na.rm = TRUE 708s List of 2 708s $ x: num [1:3] NA 1 1 708s $ w: num [1:3] 1 NA 1 708s List of 2 708s $ m0: num NA 708s $ m1: num NA 708s > 708s 708s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 708s Copyright (C) 2024 The R Foundation for Statistical Computing 708s Platform: powerpc64le-unknown-linux-gnu (64-bit) 708s 708s R is free software and comes with ABSOLUTELY NO WARRANTY. 708s You are welcome to redistribute it under certain conditions. 708s Type 'license()' or 'licence()' for distribution details. 708s 708s R is a collaborative project with many contributors. 708s Type 'contributors()' for more information and 708s 'citation()' on how to cite R or R packages in publications. 708s 708s Type 'demo()' for some demos, 'help()' for on-line help, or 708s 'help.start()' for an HTML browser interface to help. 708s Type 'q()' to quit R. 708s 708s > library("matrixStats") 708s > 708s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 708s > # Subsetted tests 708s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 708s > source("utils/validateIndicesFramework.R") 708s > for (mode in c("numeric", "integer")) { 708s + x <- runif(6, min = -6, max = 6) 708s + w <- runif(6, min = 0, max = 6) 708s + storage.mode(x) <- mode 708s + storage.mode(w) <- mode 708s + if (mode == "numeric") w[1] <- Inf 708s + 708s + for (idxs in index_cases) { 708s + validateIndicesTestVector_w(x, w, idxs, 708s + ftest = weightedMean, fsure = weighted.mean, 708s + na.rm = TRUE, refine = TRUE) 708s + validateIndicesTestVector_w(x, w, idxs, 708s + ftest = weightedMean, fsure = weighted.mean, 708s + na.rm = FALSE, refine = TRUE) 708s + } 708s + } 708s > 708s 708s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 708s Copyright (C) 2024 The R Foundation for Statistical Computing 708s Platform: powerpc64le-unknown-linux-gnu (64-bit) 708s 708s R is free software and comes with ABSOLUTELY NO WARRANTY. 708s You are welcome to redistribute it under certain conditions. 708s Type 'license()' or 'licence()' for distribution details. 708s 708s R is a collaborative project with many contributors. 708s Type 'contributors()' for more information and 708s 'citation()' on how to cite R or R packages in publications. 708s 708s Type 'demo()' for some demos, 'help()' for on-line help, or 708s 'help.start()' for an HTML browser interface to help. 708s Type 'q()' to quit R. 708s 708s > library("matrixStats") 708s > 708s > x <- 1:5 708s > y <- weightedMedian(x) 708s > y <- weightedMedian(x, w = c(NA, Inf, NA, Inf, NA), na.rm = TRUE) 708s > print(y) 708s [1] 3 708s > 708s > y <- weightedMedian(x, w = c(NA, Inf, NA, Inf, NA), na.rm = FALSE) 708s > print(y) 708s [1] NA 708s > stopifnot(is.na(y)) 708s > 708s > x <- 1:10 708s > n <- length(x) 708s > 708s > y1 <- median(x) # 5.5 708s > y2 <- weightedMedian(x) # 5.5 708s > stopifnot(all.equal(y1, y2)) 708s > 708s > 708s > w <- rep(1, times = n) 708s > y1 <- weightedMedian(x, w) # 5.5 (default) 708s > y2a <- weightedMedian(x, ties = "weighted") # 5.5 (default) 708s > y2b <- weightedMedian(x, ties = "min") # 5 708s > y2c <- weightedMedian(x, ties = "max") # 6 708s > stopifnot(all.equal(y2a, y1)) 708s > 708s > y3 <- weightedMedian(x, w) # 5.5 (default) 708s > 708s > 708s > # Pull the median towards zero 708s > w[1] <- 5 708s > y1 <- weightedMedian(x, w) # 3.5 708s > y <- c(rep(0, times = w[1]), x[-1]) # Only possible for integer weights 708s > y2 <- median(y) # 3.5 708s > stopifnot(all.equal(y1, y2)) 708s > 708s > # Put even more weight on the zero 708s > w[1] <- 8.5 708s > y <- weightedMedian(x, w) # 2 708s > 708s > # All weight on the first value 708s > w[1] <- Inf 708s > y <- weightedMedian(x, w) # 1 708s > 708s > # All weight on the last value 708s > w[1] <- 1 708s > w[n] <- Inf 708s > y <- weightedMedian(x, w) # 10 708s > 708s > # All weights set to zero 708s > w <- rep(0, times = n) 708s > y <- weightedMedian(x, w) # NA 708s > 708s > x <- 1:4 708s > w <- rep(1, times = 4) 708s > for (mode in c("integer", "double")) { 708s + storage.mode(x) <- mode 708s + for (ties in c("weighted", "mean", "min", "max")) { 708s + cat(sprintf("ties = %s\n", ties)) 708s + y <- weightedMedian(x, w, ties = ties) 708s + } 708s + } 708s ties = weighted 708s ties = mean 708s ties = min 708s ties = max 708s ties = weighted 708s ties = mean 708s ties = min 708s ties = max 708s > 708s > set.seed(0x42) 708s > 708s > y <- weightedMedian(x = double(0L)) 708s > print(y) 708s [1] NA 708s > stopifnot(length(y) == 1L) 708s > stopifnot(is.na(y)) 708s > 708s > y <- weightedMedian(x = x[1]) 708s > print(y) 708s [1] 1 708s > stopifnot(length(y) == 1L) 708s > stopifnot(all.equal(y, x[1])) 708s > 708s > 708s > n <- 1e3 708s > x <- runif(n) 708s > w <- runif(n, min = 0, max = 1) 708s > for (mode in c("integer", "double")) { 708s + storage.mode(x) <- mode 708s + for (ties in c("weighted", "mean", "min", "max")) { 708s + y <- weightedMedian(x, w, ties = ties) 708s + cat(sprintf("mode = %s, ties = %s, result = %g\n", mode, ties, y)) 708s + } 708s + } 708s mode = integer, ties = weighted, result = 0 708s mode = integer, ties = mean, result = 0 708s mode = integer, ties = min, result = 0 708s mode = integer, ties = max, result = 0 708s mode = double, ties = weighted, result = 0 708s mode = double, ties = mean, result = 0 708s mode = double, ties = min, result = 0 708s mode = double, ties = max, result = 0 708s > 708s > 708s > # A large vector 708s > n <- 1e5 708s > x <- runif(n) 708s > w <- runif(n, min = 0, max = 1) 708s > y <- weightedMedian(x, w) 708s > 708s > y <- weightedMedian(x, w, ties = "min") 708s > 708s > 708s > # Single Number 708s > xs <- c(1, NA_integer_) 708s > ws <- c(1, NA_integer_) 708s > for (x in xs) { 708s + for (w in ws) { 708s + y <- weightedMedian(x = x, w = w) 708s + if (is.na(w)) z <- NA_real_ 708s + else z <- x[1] 708s + stopifnot(all.equal(y, z)) 708s + } 708s + } 708s > 708s > ## Logical 708s > x1 <- c(TRUE, FALSE, TRUE) 708s > w0 <- c(0, 0, 0) 708s > stopifnot(!is.finite(weightedMedian(x1, w0)), 708s + !is.infinite(weightedMedian(x1, w0))) 708s > 708s > w1 <- c(1, 1, 1) 708s > stopifnot(weightedMedian(x1, w1) == 1) 708s > 708s > w2 <- c(1, 2, 3) 708s > stopifnot(weightedMedian(x1, w2) == 1) 708s > 708s > ### NA 708s > stopifnot(is.na(weightedMedian(c(TRUE, FALSE, NA), 708s + c(1, 2, 3))), 708s + all.equal(weightedMedian(c(TRUE, FALSE, NA), 708s + c(1, 2, 3), 708s + na.rm = TRUE), 708s + weightedMedian(c(TRUE, FALSE), 708s + c(1, 2)))) 708s > ### Identical to as.integer() 708s > x <- rcauchy(100) 708s > w <- abs(rcauchy(100)) 708s > stopifnot(all.equal(weightedMedian(x > 0, w), 708s + weightedMedian(as.integer(x > 0), w))) 708s > 708s > 708s > 708s 708s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 708s Copyright (C) 2024 The R Foundation for Statistical Computing 708s Platform: powerpc64le-unknown-linux-gnu (64-bit) 708s 708s R is free software and comes with ABSOLUTELY NO WARRANTY. 708s You are welcome to redistribute it under certain conditions. 708s Type 'license()' or 'licence()' for distribution details. 708s 708s R is a collaborative project with many contributors. 708s Type 'contributors()' for more information and 708s 'citation()' on how to cite R or R packages in publications. 708s 708s Type 'demo()' for some demos, 'help()' for on-line help, or 708s 'help.start()' for an HTML browser interface to help. 708s Type 'q()' to quit R. 708s 708s > library("matrixStats") 708s > 708s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 708s > # Subsetted tests 708s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 708s > source("utils/validateIndicesFramework.R") 708s > for (mode in c("numeric", "integer")) { 708s + x <- runif(6, min = -6, max = 6) 708s + w <- runif(6, min = 0, max = 6) 708s + storage.mode(x) <- mode 708s + storage.mode(w) <- mode 708s + if (mode == "numeric") w[1] <- Inf 708s + 708s + for (idxs in index_cases) { 708s + validateIndicesTestVector_w(x, w, idxs, 708s + ftest = weightedMedian, 708s + fsure = weightedMedian, 708s + na.rm = TRUE) 708s + validateIndicesTestVector_w(x, w, idxs, 708s + ftest = weightedMedian, 708s + fsure = weightedMedian, 708s + na.rm = FALSE) 708s + 708s + for (ties in c("weighted", "mean", "min", "max")) { 708s + validateIndicesTestVector_w(x, w, idxs, 708s + ftest = weightedMedian, 708s + fsure = weightedMedian, 708s + na.rm = TRUE, ties = ties) 708s + validateIndicesTestVector_w(x, w, idxs, 708s + ftest = weightedMedian, 708s + fsure = weightedMedian, 708s + na.rm = FALSE, ties = ties) 708s + } 708s + } 708s + } 708s > 708s 708s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 708s Copyright (C) 2024 The R Foundation for Statistical Computing 708s Platform: powerpc64le-unknown-linux-gnu (64-bit) 708s 708s R is free software and comes with ABSOLUTELY NO WARRANTY. 708s You are welcome to redistribute it under certain conditions. 708s Type 'license()' or 'licence()' for distribution details. 708s 708s R is a collaborative project with many contributors. 708s Type 'contributors()' for more information and 708s 'citation()' on how to cite R or R packages in publications. 708s 708s Type 'demo()' for some demos, 'help()' for on-line help, or 708s 'help.start()' for an HTML browser interface to help. 708s Type 'q()' to quit R. 708s 708s > library("matrixStats") 708s > 708s > weightedVar_R <- function(x, w) { 708s + mu <- weighted.mean(x, w = w) 708s + sum(w * (x - mu) ^ 2) / (sum(w) - 1) 708s + } 708s > 708s > 708s > n <- 10 708s > x <- as.double(1:n) 708s > 708s > message("*** weightedVar() ...") 708s *** weightedVar() ... 708s > 708s > message("- Zero elements") 708s - Zero elements 708s > m0 <- var(integer(0)) 708s > m1 <- weightedVar(integer(0), w = integer(0)) 708s > str(list(m0 = m0, m1 = m1)) 708s List of 2 708s $ m0: num NA 708s $ m1: int NA 708s > stopifnot(all.equal(m1, m0)) 708s > 708s > 708s > message("- One elements") 708s - One elements 708s > m0 <- var(1) 708s > m1 <- weightedVar(1) 708s > str(list(m0 = m0, m1 = m1)) 708s List of 2 708s $ m0: num NA 708s $ m1: num NA 708s > stopifnot(all.equal(m1, m0)) 708s > 708s > 708s > message("- Uniform weights (all w = 1)") 708s - Uniform weights (all w = 1) 708s > m0 <- var(x) 708s > w <- rep(1, times = n) 708s > m1 <- weightedVar(x, w = w) 708s > str(list(m0 = m0, m1 = m1)) 708s List of 2 708s $ m0: num 9.17 708s $ m1: num 9.17 708s > stopifnot(all.equal(m1, m0)) 708s > 708s > 708s > message("- Uniform weights (all w = 3)") 708s - Uniform weights (all w = 3) 708s > m0 <- var(rep(x, each = 3)) 708s > w <- rep(3, times = n) 708s > m1 <- weightedVar(x, w = w) 708s > str(list(m0 = m0, m1 = m1)) 708s List- Uniform weights on the first five elements 708s of 2 708s $ m0: num 8.53 708s $ m1: num 8.53 708s > stopifnot(all.equal(m1, m0)) 708s > 708s > 708s > message("- Uniform weights on the first five elements") 708s > idxs <- 1:5 708s > m0 <- var(x[1:5]) 708s > w <- rep(0, times = n) 708s > w[idxs] <- 1 708s > m1 <- weightedVar(x, w = w) 708s > str(list(m0 = m0, m1 = m1)) 708s List of 2 708s $ m0: num 2.5 708s $ m1: num 2.5 708s > stopifnot(all.equal(m1, m0)) 708s > 708s > 708s > message("- Uniform weights on every second elements") 708s - Uniform weights on every second elements 708s > idxs <- seq(from = 1, to = n, by = 2) 708s > m0 <- var(x[idxs]) 708s > w <- rep(0, times = n) 708s > w[idxs] <- 1 708s > m1 <- weightedVar(x, w = w) 708s > str(list(m0 = m0, m1 = m1)) 708s List of 2 708s $ m0: num 10 708s $ m1: num 10 708s > stopifnot(all.equal(m1, m0)) 708s > 708s > 708s > message("- All weights are zero") 708s > idxs <- integer(0L) 708s > m0 <- var(x[idxs]) 708s - All weights are zero 708s > w <- rep(0, times = n) 708s > w[idxs] <- 1 708s > m1 <- weightedVar(x, w = w) 708s > str(list(m0 = m0, m1 = m1)) 708s List of 2 708s $ m0: num NA 708s - Infinite weight on first element 708s $ m1: num NA 708s > stopifnot(all.equal(m1, m0)) 708s > 708s > message("- Infinite weight on first element") 708s > idxs <- 1L 708s > m0 <- var(x[idxs]) 708s > w <- rep(0, times = n) 708s > w[idxs] <- Inf 708s > m1 <- weightedVar(x, w = w) 708s > str(list(m0 = m0, m1 = m1)) 708s List of 2 708s $ m0: num NA 708s $ m1: num NA 708s > stopifnot(all.equal(m1, m0)) 708s > 708s > message("- Missing-value weight on first element") 708s - Missing-value weight on first element 708s > idxs <- 1L 708s > w <- rep(1, times = n) 708s > w[idxs] <- NA_real_ 708s > m1 <- weightedVar(x, w = w) 708s > str(list(m1 = m1)) 708s List of 1 708s $ m1: num NA 708s > stopifnot(identical(m1, NA_real_)) 708s > 708s > 708s > - Frequency weights 708s message("- Frequency weights") 708s > 708s > ## From https://en.wikipedia.org/wiki/Weighted_arithmetic_mean 708s > y <- c(2, 2, 4, 5, 5, 5) 708s > x <- unique(y) 708s > w <- table(y) 708s > stopifnot(names(w) == x) 708s > 708s > m0 <- weightedVar(x, w = w) 708s > m1 <- var(y) 708s > stopifnot(all.equal(m1, m0)) 708s > m2 <- weightedVar(x, w = w) 708s > str(list(m0 = m0, m1 = m1, m2 = m2)) 708s List of 3 708s $ m0: num 2.17 708s $ m1: num 2.17 708s $ m2: num 2.17 708s > stopifnot(all.equal(m2, m0)) 708s > 708s > ## From https://github.com/HenrikBengtsson/matrixStats/issues/72 708s > large <- c(21, 8, 26, 1, 15, 33, 12, 25, 0, 84) 708s > years <- c(41706, 9301, 33678, 3082, 27040, 44188, 10049, 30591, 2275, 109831) 708s > 708s > m0 <- weightedVar(large, w = years) 708s > m1 <- weightedVar(large, w = years) 708s > str(list(m0 = m0, m1 = m1)) 708s List of 2 708s $ m0: num 899 708s $ m1: num 899 708s > stopifnot(all.equal(m1, m0)) 708s > 708s > message("*** weightedVar() ... DONE") 708s *** weightedVar() ... DONE 708s > 709s 709s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 709s Copyright (C) 2024 The R Foundation for Statistical Computing 709s Platform: powerpc64le-unknown-linux-gnu (64-bit) 709s 709s R is free software and comes with ABSOLUTELY NO WARRANTY. 709s You are welcome to redistribute it under certain conditions. 709s Type 'license()' or 'licence()' for distribution details. 709s 709s R is a collaborative project with many contributors. 709s Type 'contributors()' for more information and 709s 'citation()' on how to cite R or R packages in publications. 709s 709s Type 'demo()' for some demos, 'help()' for on-line help, or 709s 'help.start()' for an HTML browser interface to help. 709s Type 'q()' to quit R. 709s 709s > library("matrixStats") 709s > 709s > fcns <- list( 709s + weightedVar = weightedVar, 709s + weightedSd = weightedSd, 709s + weightedMad = weightedMad 709s + ) 709s > 709s > for (name in names(fcns)) { 709s + cat(sprintf("%s()...\n", name)) 709s + fcn <- fcns[[name]] 709s + 709s + for (mode in c("integer", "double")) { 709s + cat("mode: ", mode, "\n", sep = "") 709s + n <- 15L 709s + x <- runif(n, min = -5, max = 5) 709s + storage.mode(x) <- mode 709s + str(x) 709s + 709s + for (add_na in c(FALSE, TRUE)) { 709s + cat("add_na: ", add_na, "\n", sep = "") 709s + if (add_na) { 709s + x[c(5, 7)] <- NA 709s + } 709s + str(x) 709s + 709s + for (na.rm in c(FALSE, TRUE)) { 709s + cat("na.rm: ", na.rm, "\n", sep = "") 709s + 709s + cat("Weights are not specified (all are 1)\n") 709s + m1 <- fcn(x, na.rm = na.rm) 709s + str(list(m1 = m1)) 709s + 709s + cat("All weights are 1\n") 709s + w <- rep(1, times = n) 709s + m1 <- fcn(x, w, na.rm = na.rm) 709s + str(list(m1 = m1)) 709s + 709s + cat("First weight is 5\n") 709s + # Pull the mean towards zero 709s + w[1] <- 5 709s + str(w) 709s + m1 <- fcn(x, w, na.rm = na.rm) 709s + str(list(m1 = m1)) 709s + 709s + cat("All weights are 0\n") 709s + # All weights set to zero 709s + w <- rep(0, times = n) 709s + m1 <- fcn(x, w, na.rm = na.rm) 709s + str(list(m1 = m1)) 709s + 709s + cat("First weight is 8.5\n") 709s + # Put even more weight on the zero 709s + w[1] <- 8.5 709s + m1 <- fcn(x, w, na.rm = na.rm) 709s + str(list(m1 = m1)) 709s + 709s + cat("First weight is Inf\n") 709s + # All weight on the first value 709s + w[1] <- Inf 709s + m1 <- fcn(x, w, na.rm = na.rm) 709s + str(list(m1 = m1)) 709s + 709s + cat("Last weight is Inf\n") 709s + # All weight on the last value 709s + w[1] <- 1 709s + w[n] <- Inf 709s + m1 <- fcn(x, w, na.rm = na.rm) 709s + str(list(m1 = m1)) 709s + 709s + cat("Last weight is NA\n") 709s + # All weight on the last value 709s + w[1] <- 1 709s + w[n] <- NA_real_ 709s + m1 <- fcn(x, w, na.rm = na.rm) 709s + str(list(m1 = m1)) 709s + } # for (na.rm ...) 709s + } # for (add_na ...) 709s + } # for (mode ...) 709s + 709s + cat(sprintf("%s()...DONE\n", name)) 709s + } # for (name ...) 709s weightedVar()... 709s mode: integer 709s int [1:15] -2 1 1 0 -3 0 2 2 4 0 ... 709s add_na: FALSE 709s int [1:15] -2 1 1 0 -3 0 2 2 4 0 ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 3.6 709s All weights are 1 709s List of 1 709s $ m1: num 3.6 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 3.65 709s All weights are 0 709s List of 1 709s $ m1: int NA 709s First weight is 8.5 709s List of 1 709s $ m1: int NA 709s First weight is Inf 709s List of 1 709s $ m1: int NA 709s Last weight is Inf 709s List of 1 709s $ m1: int NA 709s Last weight is NA 709s List of 1 709s $ m1: int NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 3.6 709s All weights are 1 709s List of 1 709s $ m1: num 3.6 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 3.65 709s All weights are 0 709s List of 1 709s $ m1: int NA 709s First weight is 8.5 709s List of 1 709s $ m1: int NA 709s First weight is Inf 709s List of 1 709s $ m1: int NA 709s Last weight is Inf 709s List of 1 709s $ m1: int NA 709s Last weight is NA 709s List of 1 709s $ m1: int NA 709s add_na: TRUE 709s int [1:15] -2 1 1 0 NA 0 NA 2 4 0 ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: int NA 709s All weights are 1 709s List of 1 709s $ m1: int NA 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: int NA 709s All weights are 0 709s List of 1 709s $ m1: int NA 709s First weight is 8.5 709s List of 1 709s $ m1: int NA 709s First weight is Inf 709s List of 1 709s $ m1: int NA 709s Last weight is Inf 709s List of 1 709s $ m1: int NA 709s Last weight is NA 709s List of 1 709s $ m1: int NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 3.06 709s All weights are 1 709s List of 1 709s $ m1: num 3.06 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 3.32 709s All weights are 0 709s List of 1 709s $ m1: int NA 709s First weight is 8.5 709s List of 1 709s $ m1: int NA 709s First weight is Inf 709s List of 1 709s $ m1: int NA 709s Last weight is Inf 709s List of 1 709s $ m1: int NA 709s Last weight is NA 709s List of 1 709s $ m1: int NA 709s mode: double 709s num [1:15] 1.41 -1.01 -1.06 4.36 -1.15 ... 709s add_na: FALSE 709s num [1:15] 1.41 -1.01 -1.06 4.36 -1.15 ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 6.94 709s All weights are 1 709s List of 1 709s $ m1: num 6.94 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 6.18 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 6.94 709s All weights are 1 709s List of 1 709s $ m1: num 6.94 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 6.18 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s add_na: TRUE 709s num [1:15] 1.41 -1.01 -1.06 4.36 NA ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num NA 709s All weights are 1 709s List of 1 709s $ m1: num NA 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num NA 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 7.49 709s All weights are 1 709s List of 1 709s $ m1: num 7.49 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 6.29 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s weightedVar()...DONE 709s weightedSd()... 709s mode: integer 709s int [1:15] 0 3 4 0 2 -3 -1 1 1 -4 ... 709s add_na: FALSE 709s int [1:15] 0 3 4 0 2 -3 -1 1 1 -4 ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 2.67 709s All weights are 1 709s List of 1 709s $ m1: num 2.67 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 2.35 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 2.67 709s All weights are 1 709s List of 1 709s $ m1: num 2.67 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 2.35 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s add_na: TRUE 709s int [1:15] 0 3 4 0 NA -3 NA 1 1 -4 ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num NA 709s All weights are 1 709s List of 1 709s $ m1: num NA 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num NA 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 2.81 709s All weights are 1 709s List of 1 709s $ m1: num 2.81 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 2.44 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s mode: double 709s num [1:15] 3.409 2.495 -3.408 -0.574 -0.845 ... 709s add_na: FALSE 709s num [1:15] 3.409 2.495 -3.408 -0.574 -0.845 ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 2.56 709s All weights are 1 709s List of 1 709s $ m1: num 2.56 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 2.8 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 2.56 709s All weights are 1 709s List of 1 709s $ m1: num 2.56 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 2.8 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s add_na: TRUE 709s num [1:15] 3.409 2.495 -3.408 -0.574 NA ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num NA 709s All weights are 1 709s List of 1 709s $ m1: num NA 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num NA 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 2.55 709s All weights are 1 709s List of 1 709s $ m1: num 2.55 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 2.87 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num NA 709s First weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is Inf 709s List of 1 709s $ m1: num NA 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s weightedSd()...DONE 709s weightedMad()... 709s mode: integer 709s int [1:15] -2 -2 0 3 0 0 0 2 1 -1 ... 709s add_na: FALSE 709s int [1:15] -2 -2 0 3 0 0 0 2 1 -1 ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 1.48 709s All weights are 1 709s List of 1 709s $ m1: num 1.48 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 1.48 709s All weights are 0 709s List of 1 709s $ m1: int NA 709s First weight is 8.5 709s List of 1 709s $ m1: int 0 709s First weight is Inf 709s List of 1 709s $ m1: int 0 709s Last weight is Inf 709s List of 1 709s $ m1: int 0 709s Last weight is NA 709s List of 1 709s $ m1: int NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 1.48 709s All weights are 1 709s List of 1 709s $ m1: num 1.48 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 1.48 709s All weights are 0 709s List of 1 709s $ m1: int NA 709s First weight is 8.5 709s List of 1 709s $ m1: int 0 709s First weight is Inf 709s List of 1 709s $ m1: int 0 709s Last weight is Inf 709s List of 1 709s $ m1: int 0 709s Last weight is NA 709s List of 1 709s $ m1: int NA 709s add_na: TRUE 709s int [1:15] -2 -2 0 3 NA 0 NA 2 1 -1 ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num NA 709s All weights are 1 709s List of 1 709s $ m1: int NA 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: int NA 709s All weights are 0 709s List of 1 709s $ m1: int NA 709s First weight is 8.5 709s List of 1 709s $ m1: int 0 709s First weight is Inf 709s List of 1 709s $ m1: int 0 709s Last weight is Inf 709s List of 1 709s $ m1: int 0 709s Last weight is NA 709s List of 1 709s $ m1: int NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 1.48 709s All weights are 1 709s List of 1 709s $ m1: num 1.48 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 1.48 709s All weights are 0 709s List of 1 709s $ m1: int NA 709s First weight is 8.5 709s List of 1 709s $ m1: int 0 709s First weight is Inf 709s List of 1 709s $ m1: int 0 709s Last weight is Inf 709s List of 1 709s $ m1: int 0 709s Last weight is NA 709s List of 1 709s $ m1: int NA 709s mode: double 709s num [1:15] 3.52 -4.96 -3.88 -1.49 3.48 ... 709s add_na: FALSE 709s num [1:15] 3.52 -4.96 -3.88 -1.49 3.48 ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 2.92 709s All weights are 1 709s List of 1 709s $ m1: num 2.92 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 6.09 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num 0 709s First weight is Inf 709s List of 1 709s $ m1: num 0 709s Last weight is Inf 709s List of 1 709s $ m1: num 0 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 2.92 709s All weights are 1 709s List of 1 709s $ m1: num 2.92 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 6.09 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num 0 709s First weight is Inf 709s List of 1 709s $ m1: num 0 709s Last weight is Inf 709s List of 1 709s $ m1: num 0 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s add_na: TRUE 709s num [1:15] 3.52 -4.96 -3.88 -1.49 NA ... 709s na.rm: FALSE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num NA 709s All weights are 1 709s List of 1 709s $ m1: num NA 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num NA 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num 0 709s First weight is Inf 709s List of 1 709s $ m1: num 0 709s Last weight is Inf 709s List of 1 709s $ m1: num 0 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s na.rm: TRUE 709s Weights are not specified (all are 1) 709s List of 1 709s $ m1: num 2.92 709s All weights are 1 709s List of 1 709s $ m1: num 2.92 709s First weight is 5 709s num [1:15] 5 1 1 1 1 1 1 1 1 1 ... 709s List of 1 709s $ m1: num 4.94 709s All weights are 0 709s List of 1 709s $ m1: num NA 709s First weight is 8.5 709s List of 1 709s $ m1: num 0 709s First weight is Inf 709s List of 1 709s $ m1: num 0 709s Last weight is Inf 709s List of 1 709s $ m1: num 0 709s Last weight is NA 709s List of 1 709s $ m1: num NA 709s weightedMad()...DONE 709s > 709s 709s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 709s Copyright (C) 2024 The R Foundation for Statistical Computing 709s Platform: powerpc64le-unknown-linux-gnu (64-bit) 709s 709s R is free software and comes with ABSOLUTELY NO WARRANTY. 709s You are welcome to redistribute it under certain conditions. 709s Type 'license()' or 'licence()' for distribution details. 709s 709s R is a collaborative project with many contributors. 709s Type 'contributors()' for more information and 709s 'citation()' on how to cite R or R packages in publications. 709s 709s Type 'demo()' for some demos, 'help()' for on-line help, or 709s 'help.start()' for an HTML browser interface to help. 709s Type 'q()' to quit R. 709s 709s > library("matrixStats") 709s > 709s > fcns <- list( 709s + weightedVar = weightedVar, 709s + weightedSd = weightedSd, 709s + weightedMad = weightedMad 709s + ) 709s > 709s > 709s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 709s > # Subsetted tests 709s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 709s > source("utils/validateIndicesFramework.R") 709s > for (name in names(fcns)) { 709s + cat(sprintf("subsetted tests on %s()...\n", name)) 709s + fcn <- fcns[[name]] 709s + 709s + for (mode in c("numeric", "integer")) { 709s + x <- runif(6, min = -6, max = 6) 709s + w <- runif(6, min = 0, max = 6) 709s + storage.mode(x) <- mode 709s + storage.mode(w) <- mode 709s + if (mode == "numeric") w[1] <- Inf 709s + 709s + for (idxs in index_cases) { 709s + validateIndicesTestVector_w(x, w, idxs, 709s + ftest = fcn, fsure = fcn, 709s + na.rm = TRUE) 709s + validateIndicesTestVector_w(x, w, idxs, 709s + ftest = fcn, fsure = fcn, 709s + na.rm = FALSE) 709s + } 709s + } 709s + cat(sprintf("%s()...DONE\n", name)) 709s + } 709s subsetted tests on weightedVar()... 709s weightedVar()...DONE 709s subsetted tests on weightedSd()... 709s weightedSd()...DONE 709s subsetted tests on weightedMad()... 709s weightedMad()...DONE 709s > 709s 709s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 709s Copyright (C) 2024 The R Foundation for Statistical Computing 709s Platform: powerpc64le-unknown-linux-gnu (64-bit) 709s 709s R is free software and comes with ABSOLUTELY NO WARRANTY. 709s You are welcome to redistribute it under certain conditions. 709s Type 'license()' or 'licence()' for distribution details. 709s 709s R is a collaborative project with many contributors. 709s Type 'contributors()' for more information and 709s 'citation()' on how to cite R or R packages in publications. 709s 709s Type 'demo()' for some demos, 'help()' for on-line help, or 709s 'help.start()' for an HTML browser interface to help. 709s Type 'q()' to quit R. 709s 709s > library("matrixStats") 709s > 709s > x_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 709s + if (na.rm) { 709s + xnok <- is.na(x) 709s + ynok <- is.na(y) 709s + anok <- xnok & ynok 709s + unit <- switch(OP, 709s + "+" = 0, 709s + "-" = NA_real_, 709s + "*" = 1, 709s + "/" = NA_real_, 709s + stop("Unknown 'OP' operator: ", OP) 709s + ) 709s + x[xnok] <- unit 709s + y[ynok] <- unit 709s + } 709s + 709s + ans <- switch(OP, 709s + "+" = x + y, 709s + "-" = x - y, 709s + "*" = x * y, 709s + "/" = x / y, 709s + stop("Unknown 'OP' operator: ", OP) 709s + ) 709s + 709s + if (na.rm) { 709s + ans[anok] <- NA_real_ 709s + } 709s + 709s + ans 709s + } # x_OP_y_R() 709s > 709s > 709s > 709s > t_tx_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 709s + t(x_OP_y_R(x = t(x), y = y, OP = OP, na.rm = na.rm)) 709s + } 709s > 709s > 709s > 709s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 709s > # No missing values 709s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 709s > x <- matrix(1:16, nrow = 4, ncol = 4) 709s > y <- 1:nrow(x) 709s > storage.mode(y) <- storage.mode(x) 709s > 709s > for (OP in c("+", "-", "*", "/")) { 709s + for (na.rm in c(FALSE, TRUE)) { 709s + cat(sprintf("OP = '%s', na.rm = %s\n", OP, na.rm)) 709s + 709s + a0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 709s + a1 <- x_OP_y(x, y, OP, na.rm = na.rm) 709s + str(a1) 709s + stopifnot(all.equal(a1, a0)) 709s + 709s + b0 <- t_tx_OP_y_R(x, y, OP, na.rm = na.rm) 709s + b1 <- t_tx_OP_y(x, y, OP, na.rm = na.rm) 709s + str(b1) 709s + stopifnot(all.equal(b1, b0)) 709s + } 709s + } 709s OP = '+', na.rm = FALSE 709s int [1:4, 1:4] 2 4 6 8 6 8 10 12 10 12 ... 709s int [1:4, 1:4] 2 3 4 5 7 8 9 10 12 13 ... 709s OP = '+', na.rm = TRUE 709s int [1:4, 1:4] 2 4 6 8 6 8 10 12 10 12 ... 709s int [1:4, 1:4] 2 3 4 5 7 8 9 10 12 13 ... 709s OP = '-', na.rm = FALSE 709s int [1:4, 1:4] 0 0 0 0 4 4 4 4 8 8 ... 709s int [1:4, 1:4] 0 1 2 3 3 4 5 6 6 7 ... 709s OP = '-', na.rm = TRUE 709s int [1:4, 1:4] 0 0 0 0 4 4 4 4 8 8 ... 709s int [1:4, 1:4] 0 1 2 3 3 4 5 6 6 7 ... 709s OP = '*', na.rm = FALSE 709s int [1:4, 1:4] 1 4 9 16 5 12 21 32 9 20 ... 709s int [1:4, 1:4] 1 2 3 4 10 12 14 16 27 30 ... 709s OP = '*', na.rm = TRUE 709s int [1:4, 1:4] 1 4 9 16 5 12 21 32 9 20 ... 709s int [1:4, 1:4] 1 2 3 4 10 12 14 16 27 30 ... 709s OP = '/', na.rm = FALSE 709s num [1:4, 1:4] 1 1 1 1 5 ... 709s num [1:4, 1:4] 1 2 3 4 2.5 ... 709s OP = '/', na.rm = TRUE 709s num [1:4, 1:4] 1 1 1 1 5 ... 709s num [1:4, 1:4] 1 2 3 4 2.5 ... 709s > 709s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 709s > # Missing values in x, y, or both. 709s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 709s > for (which in c("x", "y", "both")) { 709s + x <- matrix(1:16, nrow = 4, ncol = 4) 709s + y <- 1:nrow(x) 709s + storage.mode(y) <- storage.mode(x) 709s + 709s + if (which == "x") { 709s + x[3:6] <- NA_real_ 709s + } else if (which == "y") { 709s + y[c(1, 3)] <- NA_real_ 709s + } else if (which == "both") { 709s + x[3:6] <- NA_real_ 709s + y[c(1, 3)] <- NA_real_ 709s + } 709s + 709s + for (OP in c("+", "-", "*", "/")) { 709s + for (na.rm in c(FALSE, TRUE)) { 709s + cat(sprintf("OP = '%s', na.rm = %s\n", OP, na.rm)) 709s + a0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 709s + a1 <- x_OP_y(x, y, OP, na.rm = na.rm) 709s + str(a1) 709s + stopifnot(all.equal(a1, a0)) 709s + 709s + b0 <- t_tx_OP_y_R(x, y, OP, na.rm = na.rm) 709s + b1 <- t_tx_OP_y(x, y, OP, na.rm = na.rm) 709s + str(b1) 709s + stopifnot(all.equal(b1, b0)) 709s + } 709s + } 709s + } 709s OP = '+', na.rm = FALSE 709s num [1:4, 1:4] 2 4 NA NA NA NA 10 12 10 12 ... 709s num [1:4, 1:4] 2 3 NA NA NA NA 9 10 12 13 ... 709s OP = '+', na.rm = TRUE 709s num [1:4, 1:4] 2 4 3 4 1 2 10 12 10 12 ... 709s num [1:4, 1:4] 2 3 1 1 2 2 9 10 12 13 ... 709s OP = '-', na.rm = FALSE 709s num [1:4, 1:4] 0 0 NA NA NA NA 4 4 8 8 ... 709s num [1:4, 1:4] 0 1 NA NA NA NA 5 6 6 7 ... 709s OP = '-', na.rm = TRUE 709s num [1:4, 1:4] 0 0 NA NA NA NA 4 4 8 8 ... 709s num [1:4, 1:4] 0 1 NA NA NA NA 5 6 6 7 ... 709s OP = '*', na.rm = FALSE 709s num [1:4, 1:4] 1 4 NA NA NA NA 21 32 9 20 ... 709s num [1:4, 1:4] 1 2 NA NA NA NA 14 16 27 30 ... 709s OP = '*', na.rm = TRUE 709s num [1:4, 1:4] 1 4 3 4 1 2 21 32 9 20 ... 709s num [1:4, 1:4] 1 2 1 1 2 2 14 16 27 30 ... 709s OP = '/', na.rm = FALSE 709s num [1:4, 1:4] 1 1 NA NA NA ... 709s num [1:4, 1:4] 1 2 NA NA NA ... 709s OP = '/', na.rm = TRUE 709s num [1:4, 1:4] 1 1 NA NA NA ... 709s num [1:4, 1:4] 1 2 NA NA NA ... 709s OP = '+', na.rm = FALSE 709s num [1:4, 1:4] NA 4 NA 8 NA 8 NA 12 NA 12 ... 709s num [1:4, 1:4] NA NA NA NA 7 8 9 10 NA NA ... 709s OP = '+', na.rm = TRUE 709s num [1:4, 1:4] 1 4 3 8 5 8 7 12 9 12 ... 709s num [1:4, 1:4] 1 2 3 4 7 8 9 10 9 10 ... 709s OP = '-', na.rm = FALSE 709s num [1:4, 1:4] NA 0 NA 0 NA 4 NA 4 NA 8 ... 709s num [1:4, 1:4] NA NA NA NA 3 4 5 6 NA NA ... 709s OP = '-', na.rm = TRUE 709s num [1:4, 1:4] NA 0 NA 0 NA 4 NA 4 NA 8 ... 709s num [1:4, 1:4] NA NA NA NA 3 4 5 6 NA NA ... 709s OP = '*', na.rm = FALSE 709s num [1:4, 1:4] NA 4 NA 16 NA 12 NA 32 NA 20 ... 709s num [1:4, 1:4] NA NA NA NA 10 12 14 16 NA NA ... 709s OP = '*', na.rm = TRUE 709s num [1:4, 1:4] 1 4 3 16 5 12 7 32 9 20 ... 709s num [1:4, 1:4] 1 2 3 4 10 12 14 16 9 10 ... 709s OP = '/', na.rm = FALSE 709s num [1:4, 1:4] NA 1 NA 1 NA 3 NA 2 NA 5 ... 709s num [1:4, 1:4] NA NA NA NA 2.5 3 3.5 4 NA NA ... 709s OP = '/', na.rm = TRUE 709s num [1:4, 1:4] NA 1 NA 1 NA 3 NA 2 NA 5 ... 709s num [1:4, 1:4] NA NA NA NA 2.5 3 3.5 4 NA NA ... 709s OP = '+', na.rm = FALSE 709s num [1:4, 1:4] NA 4 NA NA NA NA NA 12 NA 12 ... 709s num [1:4, 1:4] NA NA NA NA NA NA 9 10 NA NA ... 709s OP = '+', na.rm = TRUE 709s num [1:4, 1:4] 1 4 NA 4 NA 2 7 12 9 12 ... 709s num [1:4, 1:4] 1 2 NA NA 2 2 9 10 9 10 ... 709s OP = '-', na.rm = FALSE 709s num [1:4, 1:4] NA 0 NA NA NA NA NA 4 NA 8 ... 709s num [1:4, 1:4] NA NA NA NA NA NA 5 6 NA NA ... 709s OP = '-', na.rm = TRUE 709s num [1:4, 1:4] NA 0 NA NA NA NA NA 4 NA 8 ... 709s num [1:4, 1:4] NA NA NA NA NA NA 5 6 NA NA ... 709s OP = '*', na.rm = FALSE 709s num [1:4, 1:4] NA 4 NA NA NA NA NA 32 NA 20 ... 709s num [1:4, 1:4] NA NA NA NA NA NA 14 16 NA NA ... 709s OP = '*', na.rm = TRUE 709s num [1:4, 1:4] 1 4 NA 4 NA 2 7 32 9 20 ... 709s num [1:4, 1:4] 1 2 NA NA 2 2 14 16 9 10 ... 709s OP = '/', na.rm = FALSE 709s num [1:4, 1:4] NA 1 NA NA NA NA NA 2 NA 5 ... 709s num [1:4, 1:4] NA NA NA NA NA NA 3.5 4 NA NA ... 709s OP = '/', na.rm = TRUE 709s num [1:4, 1:4] NA 1 NA NA NA NA NA 2 NA 5 ... 709s num [1:4, 1:4] NA NA NA NA NA NA 3.5 4 NA NA ... 709s > 709s > 709s > 709s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 709s > # Length differences 709s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 709s > x <- matrix(1:8, nrow = 2, ncol = 4) 709s > y <- 1:ncol(x) 709s > storage.mode(y) <- storage.mode(x) 709s > 709s > for (OP in c("+", "-", "*", "/")) { 709s + for (na.rm in c(FALSE, TRUE)) { 709s + cat(sprintf("OP = '%s', na.rm = %s\n", OP, na.rm)) 709s + 709s + a0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 709s + a1 <- x_OP_y(x, y, OP, na.rm = na.rm) 709s + str(a1) 709s + stopifnot(all.equal(a1, a0)) 709s + 709s + b0 <- t_tx_OP_y_R(x, y, OP, na.rm = na.rm) 709s + b1 <- t_tx_OP_y(x, y, OP, na.rm = na.rm) 709s + str(b1) 709s + stopifnot(all.equal(b1, b0)) 709s + } 709s + } 709s OP = '+', na.rm = FALSE 709s int [1:2, 1:4] 2 4 6 8 6 8 10 12 710s int [1:2, 1:4] 2 3 5 6 8 9 11 12 710s OP = '+', na.rm = TRUE 710s int [1:2, 1:4] 2 4 6 8 6 8 10 12 710s int [1:2, 1:4] 2 3 5 6 8 9 11 12 710s OP = '-', na.rm = FALSE 710s int [1:2, 1:4] 0 0 0 0 4 4 4 4 710s int [1:2, 1:4] 0 1 1 2 2 3 3 4 710s OP = '-', na.rm = TRUE 710s int [1:2, 1:4] 0 0 0 0 4 4 4 4 710s int [1:2, 1:4] 0 1 1 2 2 3 3 4 710s OP = '*', na.rm = FALSE 710s int [1:2, 1:4] 1 4 9 16 5 12 21 32 710s int [1:2, 1:4] 1 2 6 8 15 18 28 32 710s OP = '*', na.rm = TRUE 710s int [1:2, 1:4] 1 4 9 16 5 12 21 32 710s int [1:2, 1:4] 1 2 6 8 15 18 28 32 710s OP = '/', na.rm = FALSE 710s num [1:2, 1:4] 1 1 1 1 5 ... 710s num [1:2, 1:4] 1 2 1.5 2 1.67 ... 710s OP = '/', na.rm = TRUE 710s num [1:2, 1:4] 1 1 1 1 5 ... 710s num [1:2, 1:4] 1 2 1.5 2 1.67 ... 710s > 710s > 710s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 710s > # All missing values 710s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 710s > xs <- list( 710s + A = matrix(1:2, nrow = 2, ncol = 2), 710s + B = matrix(NA_integer_, nrow = 2, ncol = 2) 710s + ) 710s > ys <- list( 710s + A = 1L, 710s + B = NA_integer_ 710s + ) 710s > 710s > for (x in xs) { 710s + for (y in ys) { 710s + for (mode in c("logical", "integer", "double")) { 710s + storage.mode(x) <- mode 710s + storage.mode(y) <- mode 710s + str(list(x = x, y = y)) 710s + 710s + for (OP in c("+", "-", "*", "/")) { 710s + for (na.rm in c(FALSE, TRUE)) { 710s + cat(sprintf("mode = '%s', OP = '%s', na.rm = %s\n", mode, OP, na.rm)) 710s + suppressWarnings({ 710s + z0 <- x_OP_y_R(x, y, OP, na.rm = na.rm) 710s + z <- x_OP_y(x, y, OP, na.rm = na.rm) 710s + }) 710s + str(z) 710s + stopifnot(all.equal(z, z0)) 710s + } 710s + } 710s + } # for (mode ...) 710s + } # for (y ...) 710s + } # for (x ...) 710s List of 2 710s $ x: logi [1:2, 1:2] TRUE TRUE TRUE TRUE 710s $ y: logi TRUE 710s mode = 'logical', OP = '+', na.rm = FALSE 710s int [1:2, 1:2] 2 2 2 2 710s mode = 'logical', OP = '+', na.rm = TRUE 710s int [1:2, 1:2] 2 2 2 2 710s mode = 'logical', OP = '-', na.rm = FALSE 710s int [1:2, 1:2] 0 0 0 0 710s mode = 'logical', OP = '-', na.rm = TRUE 710s int [1:2, 1:2] 0 0 0 0 710s mode = 'logical', OP = '*', na.rm = FALSE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'logical', OP = '*', na.rm = TRUE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'logical', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] 1 1 1 1 710s mode = 'logical', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] 1 1 1 1 710s List of 2 710s $ x: int [1:2, 1:2] 1 1 1 1 710s $ y: int 1 710s mode = 'integer', OP = '+', na.rm = FALSE 710s int [1:2, 1:2] 2 2 2 2 710s mode = 'integer', OP = '+', na.rm = TRUE 710s int [1:2, 1:2] 2 2 2 2 710s mode = 'integer', OP = '-', na.rm = FALSE 710s int [1:2, 1:2] 0 0 0 0 710s mode = 'integer', OP = '-', na.rm = TRUE 710s int [1:2, 1:2] 0 0 0 0 710s mode = 'integer', OP = '*', na.rm = FALSE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'integer', OP = '*', na.rm = TRUE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'integer', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] 1 1 1 1 710s mode = 'integer', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] 1 1 1 1 710s List of 2 710s $ x: num [1:2, 1:2] 1 1 1 1 710s $ y: num 1 710s mode = 'double', OP = '+', na.rm = FALSE 710s num [1:2, 1:2] 2 2 2 2 710s mode = 'double', OP = '+', na.rm = TRUE 710s num [1:2, 1:2] 2 2 2 2 710s mode = 'double', OP = '-', na.rm = FALSE 710s num [1:2, 1:2] 0 0 0 0 710s mode = 'double', OP = '-', na.rm = TRUE 710s num [1:2, 1:2] 0 0 0 0 710s mode = 'double', OP = '*', na.rm = FALSE 710s num [1:2, 1:2] 1 1 1 1 710s mode = 'double', OP = '*', na.rm = TRUE 710s num [1:2, 1:2] 1 1 1 1 710s mode = 'double', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] 1 1 1 1 710s mode = 'double', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] 1 1 1 1 710s List of 2 710s $ x: logi [1:2, 1:2] TRUE TRUE TRUE TRUE 710s $ y: logi NA 710s mode = 'logical', OP = '+', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '+', na.rm = TRUE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'logical', OP = '-', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '-', na.rm = TRUE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '*', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '*', na.rm = TRUE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'logical', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s List of 2 710s $ x: int [1:2, 1:2] 1 1 1 1 710s $ y: int NA 710s mode = 'integer', OP = '+', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '+', na.rm = TRUE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'integer', OP = '-', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '-', na.rm = TRUE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '*', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '*', na.rm = TRUE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'integer', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s List of 2 710s $ x: num [1:2, 1:2] 1 1 1 1 710s $ y: num NA 710s mode = 'double', OP = '+', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '+', na.rm = TRUE 710s num [1:2, 1:2] 1 1 1 1 710s mode = 'double', OP = '-', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '-', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '*', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '*', na.rm = TRUE 710s num [1:2, 1:2] 1 1 1 1 710s mode = 'double', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s List of 2 710s $ x: logi [1:2, 1:2] NA NA NA NA 710s $ y: logi TRUE 710s mode = 'logical', OP = '+', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '+', na.rm = TRUE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'logical', OP = '-', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '-', na.rm = TRUE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '*', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '*', na.rm = TRUE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'logical', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s List of 2 710s $ x: int [1:2, 1:2] NA NA NA NA 710s $ y: int 1 710s mode = 'integer', OP = '+', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '+', na.rm = TRUE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'integer', OP = '-', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '-', na.rm = TRUE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '*', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '*', na.rm = TRUE 710s int [1:2, 1:2] 1 1 1 1 710s mode = 'integer', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s List of 2 710s $ x: num [1:2, 1:2] NA NA NA NA 710s $ y: num 1 710s mode = 'double', OP = '+', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '+', na.rm = TRUE 710s num [1:2, 1:2] 1 1 1 1 710s mode = 'double', OP = '-', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '-', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '*', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '*', na.rm = TRUE 710s num [1:2, 1:2] 1 1 1 1 710s mode = 'double', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s List of 2 710s $ x: logi [1:2, 1:2] NA NA NA NA 710s $ y: logi NA 710s mode = 'logical', OP = '+', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '+', na.rm = TRUE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '-', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '-', na.rm = TRUE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '*', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '*', na.rm = TRUE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'logical', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s List of 2 710s $ x: int [1:2, 1:2] NA NA NA NA 710s $ y: int NA 710s mode = 'integer', OP = '+', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '+', na.rm = TRUE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '-', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '-', na.rm = TRUE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '*', na.rm = FALSE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '*', na.rm = TRUE 710s int [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'integer', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s List of 2 710s $ x: num [1:2, 1:2] NA NA NA NA 710s $ y: num NA 710s mode = 'double', OP = '+', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '+', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '-', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '-', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '*', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '*', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '/', na.rm = FALSE 710s num [1:2, 1:2] NA NA NA NA 710s mode = 'double', OP = '/', na.rm = TRUE 710s num [1:2, 1:2] NA NA NA NA 710s > 710s 710s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 710s Copyright (C) 2024 The R Foundation for Statistical Computing 710s Platform: powerpc64le-unknown-linux-gnu (64-bit) 710s 710s R is free software and comes with ABSOLUTELY NO WARRANTY. 710s You are welcome to redistribute it under certain conditions. 710s Type 'license()' or 'licence()' for distribution details. 710s 710s R is a collaborative project with many contributors. 710s Type 'contributors()' for more information and 710s 'citation()' on how to cite R or R packages in publications. 710s 710s Type 'demo()' for some demos, 'help()' for on-line help, or 710s 'help.start()' for an HTML browser interface to help. 710s Type 'q()' to quit R. 710s 710s > library("matrixStats") 710s > 710s > x_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 710s + if (na.rm) { 710s + xnok <- is.na(x) 710s + ynok <- is.na(y) 710s + anok <- xnok & ynok 710s + unit <- switch(OP, 710s + "+" = 0, 710s + "-" = NA_real_, 710s + "*" = 1, 710s + "/" = NA_real_, 710s + stop("Unknown 'OP' operator: ", OP) 710s + ) 710s + x[xnok] <- unit 710s + y[ynok] <- unit 710s + } 710s + 710s + ans <- switch(OP, 710s + "+" = x + y, 710s + "-" = x - y, 710s + "*" = x * y, 710s + "/" = x / y, 710s + stop("Unknown 'OP' operator: ", OP) 710s + ) 710s + 710s + if (na.rm) { 710s + ans[anok] <- NA_real_ 710s + } 710s + 710s + ans 710s + } # x_OP_y_R() 710s > 710s > 710s > t_tx_OP_y_R <- function(x, y, OP, na.rm = FALSE) { 710s + t(x_OP_y_R(x = t(x), y = y, OP = OP, na.rm = na.rm)) 710s + } 710s > 710s > 710s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 710s > # Subsetted tests 710s > # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 710s > source("utils/validateIndicesFramework.R") 710s > for (OP in c("+", "-", "*", "/")) { 710s + for (mode in c("numeric", "integer", "logical")) { 710s + x <- matrix(runif(6 * 6, min = -6, max = 6), nrow = 6L, ncol = 6L) 710s + y <- runif(6, min = 0, max = 6) 710s + storage.mode(x) <- mode 710s + storage.mode(y) <- mode 710s + if (mode == "numeric") y[1] <- Inf 710s + 710s + for (xrows in index_cases) { 710s + for (xcols in index_cases) { 710s + if (is.null(xrows)) xrows <- seq_len(nrow(x)) 710s + if (is.null(xcols)) xcols <- seq_len(ncol(x)) 710s + 710s + for (yidxs in list(xrows, xcols)) { 710s + for (na.rm in c(TRUE, FALSE)) { 710s + 710s + suppressWarnings({ 710s + actual <- tryCatch( 710s + x_OP_y(x, y, OP, xrows = xrows, xcols = xcols, yidxs = yidxs, 710s + na.rm = na.rm), 710s + error = function(c) "error" 710s + ) 710s + 710s + expect <- tryCatch( 710s + x_OP_y_R(x[xrows, xcols, drop = FALSE], y[yidxs], OP, 710s + na.rm = na.rm), 710s + error = function(c) "error" 710s + ) 710s + }) 710s + stopifnot(all.equal(as.vector(actual), as.vector(expect))) 710s + 710s + suppressWarnings({ 710s + actual <- tryCatch( 710s + t_tx_OP_y(x, y, OP, xrows = xrows, xcols = xcols, yidxs = yidxs, 710s + na.rm = na.rm), 710s + error = function(c) "error" 710s + ) 710s + 710s + expect <- tryCatch( 710s + t_tx_OP_y_R(x[xrows, xcols, drop = FALSE], y[yidxs], OP, 710s + na.rm = na.rm), 710s + error = function(c) "error" 710s + ) 710s + }) 710s + stopifnot(all.equal(as.vector(actual), as.vector(expect))) 710s + } 710s + } 710s + } 710s + } 710s + } 710s + } 715s > 715s 715s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 715s Copyright (C) 2024 The R Foundation for Statistical Computing 715s Platform: powerpc64le-unknown-linux-gnu (64-bit) 715s 715s R is free software and comes with ABSOLUTELY NO WARRANTY. 715s You are welcome to redistribute it under certain conditions. 715s Type 'license()' or 'licence()' for distribution details. 715s 715s R is a collaborative project with many contributors. 715s Type 'contributors()' for more information and 715s 'citation()' on how to cite R or R packages in publications. 715s 715s Type 'demo()' for some demos, 'help()' for on-line help, or 715s 'help.start()' for an HTML browser interface to help. 715s Type 'q()' to quit R. 715s 715s > ## These tests need to be last of all tests, otherwise 715s > ## covr::package_coverage() gives an error. 715s > cat("1. Loading package\n") 715s 1. Loading package 715s > loadNamespace("matrixStats") 715s 715s > stopifnot("matrixStats" %in% loadedNamespaces()) 715s > 715s > cat("2. Unloading package\n") 715s 2. Unloading package 715s > unloadNamespace("matrixStats") 715s > stopifnot(!"matrixStats" %in% loadedNamespaces()) 715s > 715s > if (FALSE) { 715s + ## 'covr' gives "Error in library("matrixStats") : 715s + ## there is no package called 'matrixStats'" here, cf. 715s + ## https://travis-ci.org/HenrikBengtsson/matrixStats/builds/48015577 715s + 715s + cat("3. Attaching package\n") 715s + library("matrixStats") 715s + stopifnot("package:matrixStats" %in% search()) 715s + 715s + cat("4. Detaching package\n") 715s + detach("package:matrixStats") 715s + stopifnot(!"package:matrixStats" %in% search()) 715s + stopifnot("matrixStats" %in% loadedNamespaces()) 715s + 715s + cat("5. Unloading package\n") 715s + unloadNamespace("matrixStats") 715s + stopifnot(!"matrixStats" %in% loadedNamespaces()) 715s + 715s + cat("6. Attaching package (again)\n") 715s + library("matrixStats") 715s + stopifnot("package:matrixStats" %in% search()) 715s + 715s + cat("7. Detaching package (again)\n") 715s + detach("package:matrixStats") 715s + stopifnot(!"package:matrixStats" %in% search()) 715s + stopifnot("matrixStats" %in% loadedNamespaces()) 715s + } 715s > 715s > cat("7. DONE\n") 715s 7. DONE 715s > 715s autopkgtest [04:40:22]: test run-unit-test: -----------------------] 716s autopkgtest [04:40:23]: test run-unit-test: - - - - - - - - - - results - - - - - - - - - - 716s run-unit-test PASS 716s autopkgtest [04:40:23]: test pkg-r-autopkgtest: preparing testbed 874s autopkgtest [04:43:01]: testbed dpkg architecture: ppc64el 874s autopkgtest [04:43:01]: testbed apt version: 2.7.12 874s autopkgtest [04:43:01]: @@@@@@@@@@@@@@@@@@@@ test bed setup 876s Get:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease [117 kB] 876s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/restricted Sources [8504 B] 876s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main Sources [471 kB] 876s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/universe Sources [3949 kB] 876s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/multiverse Sources [55.9 kB] 876s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el Packages [659 kB] 876s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el c-n-f Metadata [3116 B] 876s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/restricted ppc64el Packages [1372 B] 876s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/restricted ppc64el c-n-f Metadata [116 B] 876s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el Packages [4099 kB] 877s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el c-n-f Metadata [8652 B] 877s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/multiverse ppc64el Packages [60.2 kB] 877s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/multiverse ppc64el c-n-f Metadata [116 B] 881s Fetched 9432 kB in 3s (3705 kB/s) 881s Reading package lists... 882s Reading package lists... 882s Building dependency tree... 882s Reading state information... 882s Calculating upgrade... 882s The following packages will be upgraded: 882s binutils binutils-common binutils-powerpc64le-linux-gnu dmsetup gcc-13-base 882s gcc-14-base initramfs-tools initramfs-tools-bin initramfs-tools-core jq 882s libbinutils libctf-nobfd0 libctf0 libdevmapper1.02.1 libexpat1 libftdi1-2 882s libgcc-s1 libjq1 libpam-modules libpam-modules-bin libpam-runtime libpam0g 882s libseccomp2 libsframe1 libstdc++6 libusb-1.0-0 python3-yaml 883s 27 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 883s Need to get 6134 kB of archives. 883s After this operation, 470 kB disk space will be freed. 883s Get:1 http://ftpmaster.internal/ubuntu noble/main ppc64el libpam0g ppc64el 1.5.3-5ubuntu3 [75.7 kB] 883s Get:2 http://ftpmaster.internal/ubuntu noble/main ppc64el libpam-modules-bin ppc64el 1.5.3-5ubuntu3 [57.9 kB] 883s Get:3 http://ftpmaster.internal/ubuntu noble/main ppc64el libpam-modules ppc64el 1.5.3-5ubuntu3 [320 kB] 883s Get:4 http://ftpmaster.internal/ubuntu noble/main ppc64el gcc-14-base ppc64el 14-20240315-1ubuntu1 [47.0 kB] 883s Get:5 http://ftpmaster.internal/ubuntu noble/main ppc64el libstdc++6 ppc64el 14-20240315-1ubuntu1 [897 kB] 883s Get:6 http://ftpmaster.internal/ubuntu noble/main ppc64el libgcc-s1 ppc64el 14-20240315-1ubuntu1 [39.2 kB] 883s Get:7 http://ftpmaster.internal/ubuntu noble/main ppc64el libpam-runtime all 1.5.3-5ubuntu3 [40.8 kB] 883s Get:8 http://ftpmaster.internal/ubuntu noble/main ppc64el libseccomp2 ppc64el 2.5.5-1ubuntu2 [62.5 kB] 883s Get:9 http://ftpmaster.internal/ubuntu noble/main ppc64el libdevmapper1.02.1 ppc64el 2:1.02.185-3ubuntu2 [182 kB] 883s Get:10 http://ftpmaster.internal/ubuntu noble/main ppc64el dmsetup ppc64el 2:1.02.185-3ubuntu2 [91.8 kB] 883s Get:11 http://ftpmaster.internal/ubuntu noble/main ppc64el libexpat1 ppc64el 2.6.1-2 [101 kB] 883s Get:12 http://ftpmaster.internal/ubuntu noble/main ppc64el python3-yaml ppc64el 6.0.1-2build1 [123 kB] 883s Get:13 http://ftpmaster.internal/ubuntu noble/main ppc64el libusb-1.0-0 ppc64el 2:1.0.27-1 [64.0 kB] 883s Get:14 http://ftpmaster.internal/ubuntu noble/main ppc64el libctf0 ppc64el 2.42-4ubuntu1 [112 kB] 883s Get:15 http://ftpmaster.internal/ubuntu noble/main ppc64el libctf-nobfd0 ppc64el 2.42-4ubuntu1 [112 kB] 883s Get:16 http://ftpmaster.internal/ubuntu noble/main ppc64el binutils-powerpc64le-linux-gnu ppc64el 2.42-4ubuntu1 [2473 kB] 883s Get:17 http://ftpmaster.internal/ubuntu noble/main ppc64el libbinutils ppc64el 2.42-4ubuntu1 [699 kB] 883s Get:18 http://ftpmaster.internal/ubuntu noble/main ppc64el binutils ppc64el 2.42-4ubuntu1 [3078 B] 883s Get:19 http://ftpmaster.internal/ubuntu noble/main ppc64el binutils-common ppc64el 2.42-4ubuntu1 [217 kB] 883s Get:20 http://ftpmaster.internal/ubuntu noble/main ppc64el libsframe1 ppc64el 2.42-4ubuntu1 [16.0 kB] 883s Get:21 http://ftpmaster.internal/ubuntu noble/main ppc64el gcc-13-base ppc64el 13.2.0-21ubuntu1 [48.3 kB] 883s Get:22 http://ftpmaster.internal/ubuntu noble/main ppc64el initramfs-tools all 0.142ubuntu23 [9058 B] 883s Get:23 http://ftpmaster.internal/ubuntu noble/main ppc64el initramfs-tools-core all 0.142ubuntu23 [50.1 kB] 883s Get:24 http://ftpmaster.internal/ubuntu noble/main ppc64el initramfs-tools-bin ppc64el 0.142ubuntu23 [21.0 kB] 883s Get:25 http://ftpmaster.internal/ubuntu noble/main ppc64el jq ppc64el 1.7.1-3 [66.1 kB] 883s Get:26 http://ftpmaster.internal/ubuntu noble/main ppc64el libjq1 ppc64el 1.7.1-3 [173 kB] 884s Get:27 http://ftpmaster.internal/ubuntu noble/main ppc64el libftdi1-2 ppc64el 1.5-6build4 [32.5 kB] 884s Preconfiguring packages ... 884s Fetched 6134 kB in 1s (5345 kB/s) 884s (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 ... 70153 files and directories currently installed.) 884s Preparing to unpack .../libpam0g_1.5.3-5ubuntu3_ppc64el.deb ... 884s Unpacking libpam0g:ppc64el (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 884s Setting up libpam0g:ppc64el (1.5.3-5ubuntu3) ... 884s (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 ... 70153 files and directories currently installed.) 884s Preparing to unpack .../libpam-modules-bin_1.5.3-5ubuntu3_ppc64el.deb ... 884s Unpacking libpam-modules-bin (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 884s Setting up libpam-modules-bin (1.5.3-5ubuntu3) ... 885s pam_namespace.service is a disabled or a static unit not running, not starting it. 885s (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 ... 70153 files and directories currently installed.) 885s Preparing to unpack .../libpam-modules_1.5.3-5ubuntu3_ppc64el.deb ... 885s Unpacking libpam-modules:ppc64el (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 885s Setting up libpam-modules:ppc64el (1.5.3-5ubuntu3) ... 885s Installing new version of config file /etc/security/namespace.init ... 885s (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 ... 70151 files and directories currently installed.) 885s Preparing to unpack .../gcc-14-base_14-20240315-1ubuntu1_ppc64el.deb ... 885s Unpacking gcc-14-base:ppc64el (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 885s Setting up gcc-14-base:ppc64el (14-20240315-1ubuntu1) ... 885s (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 ... 70151 files and directories currently installed.) 885s Preparing to unpack .../libstdc++6_14-20240315-1ubuntu1_ppc64el.deb ... 885s Unpacking libstdc++6:ppc64el (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 885s Setting up libstdc++6:ppc64el (14-20240315-1ubuntu1) ... 885s (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 ... 70151 files and directories currently installed.) 885s Preparing to unpack .../libgcc-s1_14-20240315-1ubuntu1_ppc64el.deb ... 885s Unpacking libgcc-s1:ppc64el (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 885s Setting up libgcc-s1:ppc64el (14-20240315-1ubuntu1) ... 885s (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 ... 70151 files and directories currently installed.) 885s Preparing to unpack .../libpam-runtime_1.5.3-5ubuntu3_all.deb ... 885s Unpacking libpam-runtime (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 885s Setting up libpam-runtime (1.5.3-5ubuntu3) ... 885s (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 ... 70151 files and directories currently installed.) 885s Preparing to unpack .../libseccomp2_2.5.5-1ubuntu2_ppc64el.deb ... 885s Unpacking libseccomp2:ppc64el (2.5.5-1ubuntu2) over (2.5.5-1ubuntu1) ... 885s Setting up libseccomp2:ppc64el (2.5.5-1ubuntu2) ... 886s (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 ... 70151 files and directories currently installed.) 886s Preparing to unpack .../00-libdevmapper1.02.1_2%3a1.02.185-3ubuntu2_ppc64el.deb ... 886s Unpacking libdevmapper1.02.1:ppc64el (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 886s Preparing to unpack .../01-dmsetup_2%3a1.02.185-3ubuntu2_ppc64el.deb ... 886s Unpacking dmsetup (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 886s Preparing to unpack .../02-libexpat1_2.6.1-2_ppc64el.deb ... 886s Unpacking libexpat1:ppc64el (2.6.1-2) over (2.6.0-1) ... 886s Preparing to unpack .../03-python3-yaml_6.0.1-2build1_ppc64el.deb ... 886s Unpacking python3-yaml (6.0.1-2build1) over (6.0.1-2) ... 886s Preparing to unpack .../04-libusb-1.0-0_2%3a1.0.27-1_ppc64el.deb ... 886s Unpacking libusb-1.0-0:ppc64el (2:1.0.27-1) over (2:1.0.26-1) ... 886s Preparing to unpack .../05-libctf0_2.42-4ubuntu1_ppc64el.deb ... 886s Unpacking libctf0:ppc64el (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 886s Preparing to unpack .../06-libctf-nobfd0_2.42-4ubuntu1_ppc64el.deb ... 886s Unpacking libctf-nobfd0:ppc64el (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 886s Preparing to unpack .../07-binutils-powerpc64le-linux-gnu_2.42-4ubuntu1_ppc64el.deb ... 886s Unpacking binutils-powerpc64le-linux-gnu (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 886s Preparing to unpack .../08-libbinutils_2.42-4ubuntu1_ppc64el.deb ... 886s Unpacking libbinutils:ppc64el (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 886s Preparing to unpack .../09-binutils_2.42-4ubuntu1_ppc64el.deb ... 886s Unpacking binutils (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 886s Preparing to unpack .../10-binutils-common_2.42-4ubuntu1_ppc64el.deb ... 886s Unpacking binutils-common:ppc64el (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 886s Preparing to unpack .../11-libsframe1_2.42-4ubuntu1_ppc64el.deb ... 886s Unpacking libsframe1:ppc64el (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 886s Preparing to unpack .../12-gcc-13-base_13.2.0-21ubuntu1_ppc64el.deb ... 886s Unpacking gcc-13-base:ppc64el (13.2.0-21ubuntu1) over (13.2.0-17ubuntu2) ... 886s Preparing to unpack .../13-initramfs-tools_0.142ubuntu23_all.deb ... 886s Unpacking initramfs-tools (0.142ubuntu23) over (0.142ubuntu20) ... 886s Preparing to unpack .../14-initramfs-tools-core_0.142ubuntu23_all.deb ... 886s Unpacking initramfs-tools-core (0.142ubuntu23) over (0.142ubuntu20) ... 886s Preparing to unpack .../15-initramfs-tools-bin_0.142ubuntu23_ppc64el.deb ... 886s Unpacking initramfs-tools-bin (0.142ubuntu23) over (0.142ubuntu20) ... 886s Preparing to unpack .../16-jq_1.7.1-3_ppc64el.deb ... 886s Unpacking jq (1.7.1-3) over (1.7.1-2) ... 886s Preparing to unpack .../17-libjq1_1.7.1-3_ppc64el.deb ... 886s Unpacking libjq1:ppc64el (1.7.1-3) over (1.7.1-2) ... 886s Preparing to unpack .../18-libftdi1-2_1.5-6build4_ppc64el.deb ... 886s Unpacking libftdi1-2:ppc64el (1.5-6build4) over (1.5-6build3) ... 886s Setting up libexpat1:ppc64el (2.6.1-2) ... 886s Setting up libjq1:ppc64el (1.7.1-3) ... 886s Setting up binutils-common:ppc64el (2.42-4ubuntu1) ... 886s Setting up libctf-nobfd0:ppc64el (2.42-4ubuntu1) ... 886s Setting up python3-yaml (6.0.1-2build1) ... 886s Setting up libsframe1:ppc64el (2.42-4ubuntu1) ... 886s Setting up gcc-13-base:ppc64el (13.2.0-21ubuntu1) ... 886s Setting up libdevmapper1.02.1:ppc64el (2:1.02.185-3ubuntu2) ... 886s Setting up dmsetup (2:1.02.185-3ubuntu2) ... 886s Setting up jq (1.7.1-3) ... 886s Setting up libusb-1.0-0:ppc64el (2:1.0.27-1) ... 886s Setting up libbinutils:ppc64el (2.42-4ubuntu1) ... 886s Setting up initramfs-tools-bin (0.142ubuntu23) ... 886s Setting up libctf0:ppc64el (2.42-4ubuntu1) ... 886s Setting up libftdi1-2:ppc64el (1.5-6build4) ... 886s Setting up binutils-powerpc64le-linux-gnu (2.42-4ubuntu1) ... 886s Setting up initramfs-tools-core (0.142ubuntu23) ... 886s Setting up initramfs-tools (0.142ubuntu23) ... 886s update-initramfs: deferring update (trigger activated) 886s Setting up binutils (2.42-4ubuntu1) ... 886s Processing triggers for libc-bin (2.39-0ubuntu6) ... 886s Processing triggers for man-db (2.12.0-3) ... 887s Processing triggers for initramfs-tools (0.142ubuntu23) ... 888s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 888s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 894s Reading package lists... 894s Building dependency tree... 894s Reading state information... 894s 0 upgraded, 0 newly installed, 0 to remove and 221 not upgraded. 895s Hit:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease 895s Hit:2 http://ftpmaster.internal/ubuntu noble InRelease 895s Hit:3 http://ftpmaster.internal/ubuntu noble-updates InRelease 895s Hit:4 http://ftpmaster.internal/ubuntu noble-security InRelease 896s Reading package lists... 896s Reading package lists... 896s Building dependency tree... 896s Reading state information... 897s Calculating upgrade... 897s The following packages were automatically installed and are no longer required: 897s libaio1 libnetplan0 python3-distutils python3-lib2to3 897s Use 'sudo apt autoremove' to remove them. 897s The following packages will be REMOVED: 897s libapt-pkg6.0 libarchive13 libatm1 libcurl3-gnutls libcurl4 libdb5.3 libelf1 897s libext2fs2 libgdbm-compat4 libgdbm6 libglib2.0-0 libgnutls30 libgpgme11 897s libhogweed6 libmagic1 libnettle8 libnpth0 libnvme1 libparted2 libperl5.38 897s libpng16-16 libpsl5 libreadline8 libreiserfscore0 libssl3 libtirpc3 liburcu8 897s libuv1 897s The following NEW packages will be installed: 897s bpfcc-tools bpftrace fontconfig-config fonts-dejavu-core fonts-dejavu-mono 897s ieee-data libaio1t64 libapt-pkg6.0t64 libarchive13t64 libatm1t64 libbpfcc 897s libc-dev-bin libc-devtools libc6-dev libclang-cpp18 libclang1-18 897s libcrypt-dev libcurl3t64-gnutls libcurl4t64 libdb5.3t64 libdeflate0 897s libdw1t64 libelf1t64 libext2fs2t64 libfontconfig1 libgd3 libgdbm-compat4t64 897s libgdbm6t64 libglib2.0-0t64 libgnutls30t64 libgpgme11t64 libhogweed6t64 897s libjbig0 libjpeg-turbo8 libjpeg8 liblerc4 libllvm18 libmagic1t64 libnetplan1 897s libnettle8t64 libnpth0t64 libnvme1t64 libparted2t64 libperl5.38t64 897s libpng16-16t64 libpsl5t64 libreadline8t64 libreiserfscore0t64 libsharpyuv0 897s libssl3t64 libtiff6 libtirpc3t64 libunwind8 liburcu8t64 libuv1t64 libwebp7 897s libxpm4 linux-headers-6.8.0-20 linux-headers-6.8.0-20-generic 897s linux-image-6.8.0-20-generic linux-libc-dev linux-modules-6.8.0-20-generic 897s linux-modules-extra-6.8.0-20-generic linux-tools-6.8.0-20 897s linux-tools-6.8.0-20-generic linux-tools-common manpages manpages-dev 897s python3-bpfcc python3-netaddr rpcsvc-proto ubuntu-kernel-accessories 897s xdg-user-dirs 897s The following packages will be upgraded: 897s apparmor apt apt-utils base-files bash bc bind9-dnsutils bind9-host 897s bind9-libs bolt bsdextrautils bsdutils btrfs-progs coreutils cryptsetup-bin 897s curl dbus dbus-bin dbus-daemon dbus-session-bus-common 897s dbus-system-bus-common dbus-user-session dhcpcd-base dirmngr dpkg dpkg-dev 897s e2fsprogs e2fsprogs-l10n eject fdisk file ftp fwupd gawk 897s gir1.2-girepository-2.0 gir1.2-glib-2.0 gnupg gnupg-l10n gnupg-utils gpg 897s gpg-agent gpg-wks-client gpgconf gpgsm gpgv groff-base grub-common 897s grub-ieee1275 grub-ieee1275-bin grub2-common ibverbs-providers 897s inetutils-telnet info install-info iproute2 keyboxd kmod kpartx krb5-locales 897s libapparmor1 libaudit-common libaudit1 libblkid1 libblockdev-crypto3 897s libblockdev-fs3 libblockdev-loop3 libblockdev-mdraid3 libblockdev-nvme3 897s libblockdev-part3 libblockdev-swap3 libblockdev-utils3 libblockdev3 libbpf1 897s libbrotli1 libcap-ng0 libcom-err2 libcryptsetup12 libdbus-1-3 897s libdebconfclient0 libdpkg-perl libevent-core-2.1-7 libfdisk1 libfido2-1 897s libfreetype6 libfwupd2 libgirepository-1.0-1 libglib2.0-data 897s libgssapi-krb5-2 libgudev-1.0-0 libgusb2 libibverbs1 libjcat1 897s libjson-glib-1.0-0 libjson-glib-1.0-common libk5crypto3 libkmod2 libkrb5-3 897s libkrb5support0 libldap-common libldap2 liblocale-gettext-perl liblzma5 897s libmagic-mgc libmbim-glib4 libmbim-proxy libmm-glib0 libmount1 libnghttp2-14 897s libnsl2 libnss-systemd libpam-systemd libplymouth5 libpolkit-agent-1-0 897s libpolkit-gobject-1-0 libproc2-0 libprotobuf-c1 libpython3-stdlib 897s libpython3.11-minimal libpython3.11-stdlib libpython3.12-minimal 897s libpython3.12-stdlib libqmi-glib5 libqmi-proxy libqrtr-glib0 librtmp1 897s libsasl2-2 libsasl2-modules libsasl2-modules-db libselinux1 897s libsemanage-common libsemanage2 libslang2 libsmartcols1 libsqlite3-0 libss2 897s libssh-4 libsystemd-shared libsystemd0 libtext-charwidth-perl 897s libtext-iconv-perl libtirpc-common libudev1 libudisks2-0 libuuid1 897s libvolume-key1 libxml2 libxmlb2 libxmuu1 linux-generic linux-headers-generic 897s linux-headers-virtual linux-image-generic linux-image-virtual linux-virtual 897s logsave lshw lsof man-db motd-news-config mount mtr-tiny multipath-tools 897s netplan-generator netplan.io openssh-client openssh-server 897s openssh-sftp-server openssl parted perl perl-base perl-modules-5.38 897s pinentry-curses plymouth plymouth-theme-ubuntu-text procps python-apt-common 897s python3 python3-apt python3-cryptography python3-dbus python3-distutils 897s python3-gdbm python3-gi python3-lib2to3 python3-minimal python3-netplan 897s python3-pkg-resources python3-pyrsistent python3-setuptools 897s python3-typing-extensions python3.11 python3.11-minimal python3.12 897s python3.12-minimal readline-common rsync rsyslog shared-mime-info sudo 897s systemd systemd-dev systemd-resolved systemd-sysv systemd-timesyncd tcpdump 897s telnet tnftp ubuntu-pro-client ubuntu-pro-client-l10n udev udisks2 usb.ids 897s util-linux uuid-runtime vim-common vim-tiny wget xxd xz-utils zlib1g 897s 221 upgraded, 73 newly installed, 28 to remove and 0 not upgraded. 897s Need to get 384 MB of archives. 897s After this operation, 640 MB of additional disk space will be used. 897s Get:1 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el motd-news-config all 13ubuntu8 [5098 B] 897s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el base-files ppc64el 13ubuntu8 [74.5 kB] 897s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bash ppc64el 5.2.21-2ubuntu3 [977 kB] 897s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bsdutils ppc64el 1:2.39.3-9ubuntu2 [98.3 kB] 897s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el coreutils ppc64el 9.4-3ubuntu3 [1523 kB] 898s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libudisks2-0 ppc64el 2.10.1-6 [182 kB] 898s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el udisks2 ppc64el 2.10.1-6 [344 kB] 898s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el shared-mime-info ppc64el 2.4-1build1 [481 kB] 898s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gir1.2-girepository-2.0 ppc64el 1.79.1-1ubuntu6 [24.8 kB] 898s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gir1.2-glib-2.0 ppc64el 2.79.3-3ubuntu5 [182 kB] 898s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgirepository-1.0-1 ppc64el 1.79.1-1ubuntu6 [93.8 kB] 898s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-gi ppc64el 3.47.0-3build1 [261 kB] 898s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-dbus ppc64el 1.3.2-5build2 [107 kB] 898s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnetplan1 ppc64el 1.0-1 [136 kB] 898s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-netplan ppc64el 1.0-1 [21.8 kB] 898s Get:16 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el netplan-generator ppc64el 1.0-1 [59.2 kB] 898s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el netplan.io ppc64el 1.0-1 [66.2 kB] 898s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libxmlb2 ppc64el 0.3.15-1build1 [82.6 kB] 898s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgpgme11t64 ppc64el 1.18.0-4.1ubuntu3 [173 kB] 898s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libvolume-key1 ppc64el 0.3.12-7build1 [47.9 kB] 898s Get:21 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libqrtr-glib0 ppc64el 1.2.2-1ubuntu3 [18.3 kB] 898s Get:22 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libqmi-glib5 ppc64el 1.35.2-0ubuntu1 [966 kB] 898s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libqmi-proxy ppc64el 1.35.2-0ubuntu1 [6208 B] 898s Get:24 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpolkit-agent-1-0 ppc64el 124-1ubuntu1 [18.8 kB] 898s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpolkit-gobject-1-0 ppc64el 124-1ubuntu1 [52.7 kB] 898s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmm-glib0 ppc64el 1.23.4-0ubuntu1 [282 kB] 898s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmbim-glib4 ppc64el 1.31.2-0ubuntu2 [253 kB] 898s Get:28 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmbim-proxy ppc64el 1.31.2-0ubuntu2 [6274 B] 898s Get:29 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libjson-glib-1.0-common all 1.8.0-2build1 [4210 B] 898s Get:30 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libjson-glib-1.0-0 ppc64el 1.8.0-2build1 [73.6 kB] 898s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgusb2 ppc64el 0.4.8-1build1 [43.0 kB] 898s Get:32 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgudev-1.0-0 ppc64el 1:238-3ubuntu2 [15.8 kB] 898s Get:33 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el tnftp ppc64el 20230507-2build1 [116 kB] 898s Get:34 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el tcpdump ppc64el 4.99.4-3ubuntu2 [543 kB] 898s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsystemd0 ppc64el 255.4-1ubuntu5 [526 kB] 898s Get:36 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el systemd-dev all 255.4-1ubuntu5 [103 kB] 898s Get:37 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnss-systemd ppc64el 255.4-1ubuntu5 [208 kB] 898s Get:38 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libudev1 ppc64el 255.4-1ubuntu5 [200 kB] 898s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libssl3t64 ppc64el 3.0.13-0ubuntu2 [2125 kB] 898s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el systemd ppc64el 255.4-1ubuntu5 [3771 kB] 898s Get:41 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el udev ppc64el 255.4-1ubuntu5 [2038 kB] 898s Get:42 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el systemd-sysv ppc64el 255.4-1ubuntu5 [11.9 kB] 898s Get:43 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpam-systemd ppc64el 255.4-1ubuntu5 [304 kB] 898s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el systemd-timesyncd ppc64el 255.4-1ubuntu5 [37.9 kB] 898s Get:45 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsystemd-shared ppc64el 255.4-1ubuntu5 [2351 kB] 898s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el systemd-resolved ppc64el 255.4-1ubuntu5 [346 kB] 898s Get:47 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el sudo ppc64el 1.9.15p5-3ubuntu3 [1005 kB] 898s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el rsync ppc64el 3.2.7-1build1 [487 kB] 898s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-cryptography ppc64el 41.0.7-4build2 [860 kB] 898s Get:50 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el openssl ppc64el 3.0.13-0ubuntu2 [1026 kB] 898s Get:51 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el openssh-sftp-server ppc64el 1:9.6p1-3ubuntu11 [43.7 kB] 898s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el openssh-client ppc64el 1:9.6p1-3ubuntu11 [1112 kB] 898s Get:53 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el openssh-server ppc64el 1:9.6p1-3ubuntu11 [627 kB] 898s Get:54 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libssh-4 ppc64el 0.10.6-2build1 [234 kB] 898s Get:55 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsasl2-modules ppc64el 2.1.28+dfsg1-5ubuntu1 [83.1 kB] 898s Get:56 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3.12 ppc64el 3.12.2-4build3 [645 kB] 898s Get:57 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3.12-minimal ppc64el 3.12.2-4build3 [2447 kB] 898s Get:58 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpython3.12-minimal ppc64el 3.12.2-4build3 [836 kB] 899s Get:59 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el grub-ieee1275 ppc64el 2.12-1ubuntu5 [63.1 kB] 899s Get:60 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el grub2-common ppc64el 2.12-1ubuntu5 [752 kB] 899s Get:61 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el grub-common ppc64el 2.12-1ubuntu5 [2356 kB] 899s Get:62 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el grub-ieee1275-bin ppc64el 2.12-1ubuntu5 [687 kB] 899s Get:63 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libparted2t64 ppc64el 3.6-3.1build2 [184 kB] 899s Get:64 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el parted ppc64el 3.6-3.1build2 [58.9 kB] 899s Get:65 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3.11 ppc64el 3.11.8-1build4 [589 kB] 899s Get:66 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3.11-minimal ppc64el 3.11.8-1build4 [2292 kB] 899s Get:67 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpython3.11-minimal ppc64el 3.11.8-1build4 [846 kB] 899s Get:68 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpython3.11-stdlib ppc64el 3.11.8-1build4 [1977 kB] 899s Get:69 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gnupg-utils ppc64el 2.4.4-2ubuntu15 [123 kB] 899s Get:70 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpg-agent ppc64el 2.4.4-2ubuntu15 [275 kB] 899s Get:71 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpg-wks-client ppc64el 2.4.4-2ubuntu15 [85.0 kB] 899s Get:72 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpg ppc64el 2.4.4-2ubuntu15 [706 kB] 899s Get:73 http://ftpmaster.internal/ubuntu noble/main ppc64el libnpth0t64 ppc64el 1.6-3.1 [8864 B] 899s Get:74 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpgv ppc64el 2.4.4-2ubuntu15 [198 kB] 899s Get:75 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dirmngr ppc64el 2.4.4-2ubuntu15 [391 kB] 899s Get:76 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gnupg all 2.4.4-2ubuntu15 [359 kB] 899s Get:77 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el keyboxd ppc64el 2.4.4-2ubuntu15 [94.3 kB] 899s Get:78 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpgconf ppc64el 2.4.4-2ubuntu15 [115 kB] 899s Get:79 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gpgsm ppc64el 2.4.4-2ubuntu15 [292 kB] 899s Get:80 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libreadline8t64 ppc64el 8.2-4 [182 kB] 899s Get:81 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gawk ppc64el 1:5.2.1-2build2 [528 kB] 899s Get:82 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el fdisk ppc64el 2.39.3-9ubuntu2 [132 kB] 899s Get:83 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bc ppc64el 1.07.1-3ubuntu2 [93.2 kB] 899s Get:84 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpython3.12-stdlib ppc64el 3.12.2-4build3 [2082 kB] 899s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el perl-base ppc64el 5.38.2-3.2 [1916 kB] 899s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el perl-modules-5.38 all 5.38.2-3.2 [3110 kB] 899s Get:87 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-gdbm ppc64el 3.12.2-3ubuntu1.1 [19.8 kB] 899s Get:88 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el man-db ppc64el 2.12.0-3build4 [1274 kB] 899s Get:89 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgdbm6t64 ppc64el 1.23-5.1 [41.9 kB] 899s Get:90 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgdbm-compat4t64 ppc64el 1.23-5.1 [6972 B] 899s Get:91 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libperl5.38t64 ppc64el 5.38.2-3.2 [4957 kB] 899s Get:92 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el perl ppc64el 5.38.2-3.2 [231 kB] 899s Get:93 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libdb5.3t64 ppc64el 5.3.28+dfsg2-6 [875 kB] 899s Get:94 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsasl2-modules-db ppc64el 2.1.28+dfsg1-5ubuntu1 [23.4 kB] 899s Get:95 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsasl2-2 ppc64el 2.1.28+dfsg1-5ubuntu1 [68.0 kB] 899s Get:96 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnvme1t64 ppc64el 1.8-3 [98.2 kB] 899s Get:97 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el wget ppc64el 1.21.4-1ubuntu2 [382 kB] 899s Get:98 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcurl4t64 ppc64el 8.5.0-2ubuntu8 [428 kB] 899s Get:99 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el curl ppc64el 8.5.0-2ubuntu8 [234 kB] 899s Get:100 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpsl5t64 ppc64el 0.21.2-1.1 [59.0 kB] 899s Get:101 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libarchive13t64 ppc64el 3.7.2-1.1ubuntu2 [518 kB] 899s Get:102 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el fwupd ppc64el 1.9.15-2 [4634 kB] 900s Get:103 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcurl3t64-gnutls ppc64el 8.5.0-2ubuntu8 [419 kB] 900s Get:104 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libfwupd2 ppc64el 1.9.15-2 [136 kB] 900s Get:105 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev3 ppc64el 3.1.0-1build1 [55.2 kB] 900s Get:106 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-utils3 ppc64el 3.1.0-1build1 [20.3 kB] 900s Get:107 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-swap3 ppc64el 3.1.0-1build1 [8616 B] 900s Get:108 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-part3 ppc64el 3.1.0-1build1 [17.5 kB] 900s Get:109 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-nvme3 ppc64el 3.1.0-1build1 [20.1 kB] 900s Get:110 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-mdraid3 ppc64el 3.1.0-1build1 [14.3 kB] 900s Get:111 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-loop3 ppc64el 3.1.0-1build1 [7742 B] 900s Get:112 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el logsave ppc64el 1.47.0-2.4~exp1ubuntu2 [22.9 kB] 900s Get:113 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el e2fsprogs-l10n all 1.47.0-2.4~exp1ubuntu2 [5996 B] 900s Get:114 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libext2fs2t64 ppc64el 1.47.0-2.4~exp1ubuntu2 [270 kB] 900s Get:115 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el e2fsprogs ppc64el 1.47.0-2.4~exp1ubuntu2 [663 kB] 900s Get:116 http://ftpmaster.internal/ubuntu noble/main ppc64el libreiserfscore0t64 ppc64el 1:3.6.27-7.1 [92.7 kB] 900s Get:117 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el btrfs-progs ppc64el 6.6.3-1.1build1 [1352 kB] 901s Get:118 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-fs3 ppc64el 3.1.0-1build1 [41.2 kB] 901s Get:119 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblockdev-crypto3 ppc64el 3.1.0-1build1 [22.5 kB] 901s Get:120 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bolt ppc64el 0.9.6-2build1 [171 kB] 901s Get:121 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libglib2.0-0t64 ppc64el 2.79.3-3ubuntu5 [1773 kB] 901s Get:122 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libjcat1 ppc64el 0.2.0-2build2 [40.0 kB] 901s Get:123 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libldap2 ppc64el 2.6.7+dfsg-1~exp1ubuntu6 [233 kB] 901s Get:124 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el ubuntu-pro-client-l10n ppc64el 31.2.2 [19.4 kB] 901s Get:125 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el ubuntu-pro-client ppc64el 31.2.2 [215 kB] 901s Get:126 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-apt ppc64el 2.7.7 [181 kB] 901s Get:127 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el apt-utils ppc64el 2.7.14 [226 kB] 901s Get:128 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libapt-pkg6.0t64 ppc64el 2.7.14 [1063 kB] 901s Get:129 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnettle8t64 ppc64el 3.9.1-2.2 [226 kB] 901s Get:130 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libhogweed6t64 ppc64el 3.9.1-2.2 [208 kB] 901s Get:131 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgnutls30t64 ppc64el 3.8.3-1.1ubuntu2 [1154 kB] 901s Get:132 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el apt ppc64el 2.7.14 [1401 kB] 901s Get:133 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el librtmp1 ppc64el 2.4+20151223.gitfa8646d.1-2build6 [64.4 kB] 901s Get:134 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el liblzma5 ppc64el 5.6.0-0.2 [156 kB] 901s Get:135 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libblkid1 ppc64el 2.39.3-9ubuntu2 [155 kB] 901s Get:136 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el kmod ppc64el 31+20240202-2ubuntu4 [122 kB] 901s Get:137 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libkmod2 ppc64el 31+20240202-2ubuntu4 [64.4 kB] 901s Get:138 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libselinux1 ppc64el 3.5-2ubuntu1 [101 kB] 901s Get:139 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus-session-bus-common all 1.14.10-4ubuntu2 [80.3 kB] 901s Get:140 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus-user-session ppc64el 1.14.10-4ubuntu2 [9960 B] 901s Get:141 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libapparmor1 ppc64el 4.0.0-beta3-0ubuntu2 [55.0 kB] 901s Get:142 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libaudit-common all 1:3.1.2-2.1 [5674 B] 901s Get:143 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcap-ng0 ppc64el 0.8.4-2build1 [16.2 kB] 901s Get:144 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libaudit1 ppc64el 1:3.1.2-2.1 [52.8 kB] 902s Get:145 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus-system-bus-common all 1.14.10-4ubuntu2 [81.5 kB] 902s Get:146 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus-bin ppc64el 1.14.10-4ubuntu2 [48.1 kB] 902s Get:147 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus ppc64el 1.14.10-4ubuntu2 [26.9 kB] 902s Get:148 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dbus-daemon ppc64el 1.14.10-4ubuntu2 [136 kB] 902s Get:149 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libdbus-1-3 ppc64el 1.14.10-4ubuntu2 [244 kB] 902s Get:150 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libuuid1 ppc64el 2.39.3-9ubuntu2 [39.3 kB] 902s Get:151 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcryptsetup12 ppc64el 2:2.7.0-1ubuntu2 [376 kB] 902s Get:152 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libfdisk1 ppc64el 2.39.3-9ubuntu2 [171 kB] 902s Get:153 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el mount ppc64el 2.39.3-9ubuntu2 [125 kB] 902s Get:154 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmount1 ppc64el 2.39.3-9ubuntu2 [169 kB] 902s Get:155 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el zlib1g ppc64el 1:1.3.dfsg-3.1ubuntu1 [72.8 kB] 902s Get:156 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-minimal ppc64el 3.12.2-0ubuntu1 [27.1 kB] 902s Get:157 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3 ppc64el 3.12.2-0ubuntu1 [24.1 kB] 902s Get:158 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libplymouth5 ppc64el 24.004.60-1ubuntu6 [166 kB] 902s Get:159 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpng16-16t64 ppc64el 1.6.43-3 [242 kB] 902s Get:160 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libbrotli1 ppc64el 1.1.0-2build1 [410 kB] 902s Get:161 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libfreetype6 ppc64el 2.13.2+dfsg-1build2 [545 kB] 902s Get:162 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsqlite3-0 ppc64el 3.45.1-1ubuntu1 [804 kB] 902s Get:163 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el pinentry-curses ppc64el 1.2.1-3ubuntu4 [38.7 kB] 902s Get:164 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python-apt-common all 2.7.7 [19.8 kB] 902s Get:165 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsmartcols1 ppc64el 2.39.3-9ubuntu2 [79.0 kB] 902s Get:166 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el readline-common all 8.2-4 [56.4 kB] 902s Get:167 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bsdextrautils ppc64el 2.39.3-9ubuntu2 [78.6 kB] 902s Get:168 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el groff-base ppc64el 1.23.0-3build1 [1112 kB] 902s Get:169 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpython3-stdlib ppc64el 3.12.2-0ubuntu1 [9798 B] 902s Get:170 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libfido2-1 ppc64el 1.14.0-1build1 [111 kB] 902s Get:171 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgssapi-krb5-2 ppc64el 1.20.1-6ubuntu1 [185 kB] 902s Get:172 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libkrb5-3 ppc64el 1.20.1-6ubuntu1 [432 kB] 902s Get:173 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libkrb5support0 ppc64el 1.20.1-6ubuntu1 [38.5 kB] 902s Get:174 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libk5crypto3 ppc64el 1.20.1-6ubuntu1 [108 kB] 902s Get:175 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcom-err2 ppc64el 1.47.0-2.4~exp1ubuntu2 [22.9 kB] 902s Get:176 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libproc2-0 ppc64el 2:4.0.4-4ubuntu2 [68.8 kB] 902s Get:177 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el procps ppc64el 2:4.0.4-4ubuntu2 [736 kB] 902s Get:178 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnghttp2-14 ppc64el 1.59.0-1build1 [89.0 kB] 902s Get:179 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dpkg ppc64el 1.22.6ubuntu5 [1343 kB] 902s Get:180 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el util-linux ppc64el 2.39.3-9ubuntu2 [1195 kB] 902s Get:181 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libxml2 ppc64el 2.9.14+dfsg-1.3ubuntu2 [840 kB] 903s Get:182 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libbpf1 ppc64el 1:1.3.0-2build1 [216 kB] 903s Get:183 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el iproute2 ppc64el 6.1.0-1ubuntu5 [1384 kB] 903s Get:184 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libelf1t64 ppc64el 0.190-1.1build2 [69.3 kB] 903s Get:185 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el file ppc64el 1:5.45-3 [22.7 kB] 903s Get:186 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmagic-mgc ppc64el 1:5.45-3 [307 kB] 903s Get:187 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libmagic1t64 ppc64el 1:5.45-3 [106 kB] 903s Get:188 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtirpc-common all 1.3.4+ds-1.1 [8018 B] 903s Get:189 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el lsof ppc64el 4.95.0-1build2 [256 kB] 903s Get:190 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libnsl2 ppc64el 1.3.0-3build2 [48.9 kB] 903s Get:191 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtirpc3t64 ppc64el 1.3.4+ds-1.1 [102 kB] 903s Get:192 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el multipath-tools ppc64el 0.9.4-5ubuntu6 [341 kB] 903s Get:193 http://ftpmaster.internal/ubuntu noble/main ppc64el liburcu8t64 ppc64el 0.14.0-3.1 [73.6 kB] 903s Get:194 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bind9-host ppc64el 1:9.18.24-0ubuntu3 [54.5 kB] 903s Get:195 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bind9-dnsutils ppc64el 1:9.18.24-0ubuntu3 [167 kB] 903s Get:196 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el bind9-libs ppc64el 1:9.18.24-0ubuntu3 [1436 kB] 903s Get:197 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libuv1t64 ppc64el 1.48.0-1.1 [117 kB] 903s Get:198 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el liblocale-gettext-perl ppc64el 1.07-6ubuntu4 [16.1 kB] 903s Get:199 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el uuid-runtime ppc64el 2.39.3-9ubuntu2 [33.8 kB] 903s Get:200 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libdebconfclient0 ppc64el 0.271ubuntu2 [11.2 kB] 903s Get:201 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsemanage-common all 3.5-1build4 [10.1 kB] 903s Get:202 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsemanage2 ppc64el 3.5-1build4 [115 kB] 903s Get:203 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el install-info ppc64el 7.1-3build1 [64.5 kB] 903s Get:204 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libss2 ppc64el 1.47.0-2.4~exp1ubuntu2 [18.0 kB] 903s Get:205 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dhcpcd-base ppc64el 1:10.0.6-1ubuntu2 [276 kB] 903s Get:206 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el eject ppc64el 2.39.3-9ubuntu2 [28.2 kB] 903s Get:207 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el krb5-locales all 1.20.1-6ubuntu1 [13.8 kB] 903s Get:208 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libglib2.0-data all 2.79.3-3ubuntu5 [46.6 kB] 903s Get:209 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libslang2 ppc64el 2.3.3-3build1 [501 kB] 904s Get:210 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtext-charwidth-perl ppc64el 0.04-11build2 [9506 B] 904s Get:211 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtext-iconv-perl ppc64el 1.7-8build2 [13.7 kB] 904s Get:212 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-setuptools all 68.1.2-2ubuntu1 [396 kB] 904s Get:213 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-pkg-resources all 68.1.2-2ubuntu1 [168 kB] 904s Get:214 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el rsyslog ppc64el 8.2312.0-3ubuntu7 [629 kB] 904s Get:215 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el vim-tiny ppc64el 2:9.1.0016-1ubuntu6 [1042 kB] 904s Get:216 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el vim-common all 2:9.1.0016-1ubuntu6 [385 kB] 904s Get:217 http://ftpmaster.internal/ubuntu noble/main ppc64el xdg-user-dirs ppc64el 0.18-1 [20.0 kB] 904s Get:218 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el xxd ppc64el 2:9.1.0016-1ubuntu6 [63.7 kB] 904s Get:219 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el apparmor ppc64el 4.0.0-beta3-0ubuntu2 [747 kB] 904s Get:220 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el ftp all 20230507-2build1 [4724 B] 904s Get:221 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el inetutils-telnet ppc64el 2:2.5-3ubuntu3 [115 kB] 904s Get:222 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el info ppc64el 7.1-3build1 [188 kB] 904s Get:223 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libxmuu1 ppc64el 2:1.1.3-3build1 [9488 B] 904s Get:224 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el lshw ppc64el 02.19.git.2021.06.19.996aaad9c7-2build2 [334 kB] 904s Get:225 http://ftpmaster.internal/ubuntu noble/main ppc64el manpages all 6.05.01-1 [1340 kB] 904s Get:226 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el mtr-tiny ppc64el 0.95-1.1build1 [62.8 kB] 904s Get:227 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el plymouth-theme-ubuntu-text ppc64el 24.004.60-1ubuntu6 [11.1 kB] 904s Get:228 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el plymouth ppc64el 24.004.60-1ubuntu6 [155 kB] 904s Get:229 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el telnet all 0.17+2.5-3ubuntu3 [3682 B] 904s Get:230 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el usb.ids all 2024.03.18-1 [223 kB] 904s Get:231 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el xz-utils ppc64el 5.6.0-0.2 [281 kB] 904s Get:232 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libllvm18 ppc64el 1:18.1.2-1ubuntu2 [28.9 MB] 905s Get:233 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libclang-cpp18 ppc64el 1:18.1.2-1ubuntu2 [14.6 MB] 905s Get:234 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el libbpfcc ppc64el 0.29.1+ds-1ubuntu4 [707 kB] 905s Get:235 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el python3-bpfcc all 0.29.1+ds-1ubuntu4 [40.2 kB] 905s Get:236 http://ftpmaster.internal/ubuntu noble/main ppc64el ieee-data all 20220827.1 [2113 kB] 905s Get:237 http://ftpmaster.internal/ubuntu noble/main ppc64el python3-netaddr all 0.8.0-2ubuntu1 [319 kB] 905s Get:238 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el bpfcc-tools all 0.29.1+ds-1ubuntu4 [687 kB] 905s Get:239 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libclang1-18 ppc64el 1:18.1.2-1ubuntu2 [8725 kB] 906s Get:240 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libdw1t64 ppc64el 0.190-1.1build2 [301 kB] 906s Get:241 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el bpftrace ppc64el 0.20.2-1ubuntu1 [1058 kB] 906s Get:242 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el cryptsetup-bin ppc64el 2:2.7.0-1ubuntu2 [227 kB] 906s Get:243 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el dpkg-dev all 1.22.6ubuntu5 [1074 kB] 906s Get:244 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libdpkg-perl all 1.22.6ubuntu5 [269 kB] 906s Get:245 http://ftpmaster.internal/ubuntu noble/main ppc64el fonts-dejavu-mono all 2.37-8 [502 kB] 906s Get:246 http://ftpmaster.internal/ubuntu noble/main ppc64el fonts-dejavu-core all 2.37-8 [835 kB] 906s Get:247 http://ftpmaster.internal/ubuntu noble/main ppc64el fontconfig-config ppc64el 2.15.0-1.1ubuntu1 [37.4 kB] 906s Get:248 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libprotobuf-c1 ppc64el 1.4.1-1ubuntu3 [25.9 kB] 906s Get:249 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el gnupg-l10n all 2.4.4-2ubuntu15 [65.8 kB] 906s Get:250 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libibverbs1 ppc64el 50.0-2build1 [74.4 kB] 906s Get:251 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el ibverbs-providers ppc64el 50.0-2build1 [420 kB] 906s Get:252 http://ftpmaster.internal/ubuntu noble/main ppc64el libaio1t64 ppc64el 0.3.113-6 [8188 B] 906s Get:253 http://ftpmaster.internal/ubuntu noble/main ppc64el libatm1t64 ppc64el 1:2.5.1-5.1 [26.9 kB] 906s Get:254 http://ftpmaster.internal/ubuntu noble/main ppc64el libc-dev-bin ppc64el 2.39-0ubuntu6 [21.3 kB] 906s Get:255 http://ftpmaster.internal/ubuntu noble/main ppc64el libfontconfig1 ppc64el 2.15.0-1.1ubuntu1 [190 kB] 906s Get:256 http://ftpmaster.internal/ubuntu noble/main ppc64el libjpeg-turbo8 ppc64el 2.1.5-2ubuntu1 [212 kB] 906s Get:257 http://ftpmaster.internal/ubuntu noble/main ppc64el libjpeg8 ppc64el 8c-2ubuntu11 [2148 B] 906s Get:258 http://ftpmaster.internal/ubuntu noble/main ppc64el libdeflate0 ppc64el 1.19-1 [61.9 kB] 906s Get:259 http://ftpmaster.internal/ubuntu noble/main ppc64el libjbig0 ppc64el 2.1-6.1ubuntu1 [34.7 kB] 906s Get:260 http://ftpmaster.internal/ubuntu noble/main ppc64el liblerc4 ppc64el 4.0.0+ds-4ubuntu1 [266 kB] 906s Get:261 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libsharpyuv0 ppc64el 1.3.2-0.4build2 [28.8 kB] 906s Get:262 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libwebp7 ppc64el 1.3.2-0.4build2 [312 kB] 906s Get:263 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtiff6 ppc64el 4.5.1+git230720-4ubuntu1 [274 kB] 906s Get:264 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libxpm4 ppc64el 1:3.5.17-1build1 [50.2 kB] 906s Get:265 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libgd3 ppc64el 2.3.3-9ubuntu3 [162 kB] 906s Get:266 http://ftpmaster.internal/ubuntu noble/main ppc64el libc-devtools ppc64el 2.39-0ubuntu6 [29.6 kB] 906s Get:267 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-libc-dev ppc64el 6.8.0-20.20 [1586 kB] 906s Get:268 http://ftpmaster.internal/ubuntu noble/main ppc64el libcrypt-dev ppc64el 1:4.4.36-4 [167 kB] 906s Get:269 http://ftpmaster.internal/ubuntu noble/main ppc64el rpcsvc-proto ppc64el 1.4.2-0ubuntu6 [82.3 kB] 906s Get:270 http://ftpmaster.internal/ubuntu noble/main ppc64el libc6-dev ppc64el 2.39-0ubuntu6 [2102 kB] 906s Get:271 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libevent-core-2.1-7 ppc64el 2.1.12-stable-9build1 [110 kB] 906s Get:272 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libldap-common all 2.6.7+dfsg-1~exp1ubuntu6 [31.3 kB] 906s Get:273 http://ftpmaster.internal/ubuntu noble/main ppc64el libunwind8 ppc64el 1.6.2-3 [59.9 kB] 906s Get:274 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-modules-6.8.0-20-generic ppc64el 6.8.0-20.20 [31.3 MB] 907s Get:275 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-image-6.8.0-20-generic ppc64el 6.8.0-20.20 [63.9 MB] 908s Get:276 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-modules-extra-6.8.0-20-generic ppc64el 6.8.0-20.20 [103 MB] 911s Get:277 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-generic ppc64el 6.8.0-20.20+1 [1734 B] 911s Get:278 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-image-generic ppc64el 6.8.0-20.20+1 [9698 B] 911s Get:279 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-virtual ppc64el 6.8.0-20.20+1 [1686 B] 911s Get:280 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-image-virtual ppc64el 6.8.0-20.20+1 [9702 B] 911s Get:281 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-headers-virtual ppc64el 6.8.0-20.20+1 [1648 B] 911s Get:282 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-headers-6.8.0-20 all 6.8.0-20.20 [13.6 MB] 911s Get:283 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-headers-6.8.0-20-generic ppc64el 6.8.0-20.20 [3728 kB] 912s Get:284 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-headers-generic ppc64el 6.8.0-20.20+1 [9612 B] 912s Get:285 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-tools-common all 6.8.0-20.20 [437 kB] 912s Get:286 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-tools-6.8.0-20 ppc64el 6.8.0-20.20 [2924 kB] 912s Get:287 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el linux-tools-6.8.0-20-generic ppc64el 6.8.0-20.20 [1730 B] 912s Get:288 http://ftpmaster.internal/ubuntu noble/main ppc64el manpages-dev all 6.05.01-1 [2018 kB] 912s Get:289 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-distutils all 3.12.2-3ubuntu1.1 [133 kB] 912s Get:290 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-lib2to3 all 3.12.2-3ubuntu1.1 [79.1 kB] 912s Get:291 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-pyrsistent ppc64el 0.20.0-1build1 [60.4 kB] 912s Get:292 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el python3-typing-extensions all 4.10.0-1 [60.7 kB] 912s Get:293 http://ftpmaster.internal/ubuntu noble/main ppc64el ubuntu-kernel-accessories ppc64el 1.536build1 [10.5 kB] 912s Get:294 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el kpartx ppc64el 0.9.4-5ubuntu6 [34.4 kB] 912s Preconfiguring packages ... 913s Fetched 384 MB in 15s (25.8 MB/s) 913s (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 ... 70151 files and directories currently installed.) 913s Preparing to unpack .../motd-news-config_13ubuntu8_all.deb ... 913s Unpacking motd-news-config (13ubuntu8) over (13ubuntu7) ... 913s Preparing to unpack .../base-files_13ubuntu8_ppc64el.deb ... 913s Unpacking base-files (13ubuntu8) over (13ubuntu7) ... 913s Setting up base-files (13ubuntu8) ... 914s motd-news.service is a disabled or a static unit not running, not starting it. 914s (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 ... 70151 files and directories currently installed.) 914s Preparing to unpack .../bash_5.2.21-2ubuntu3_ppc64el.deb ... 914s Unpacking bash (5.2.21-2ubuntu3) over (5.2.21-2ubuntu2) ... 914s Setting up bash (5.2.21-2ubuntu3) ... 914s 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 914s (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 ... 70151 files and directories currently installed.) 914s Preparing to unpack .../bsdutils_1%3a2.39.3-9ubuntu2_ppc64el.deb ... 914s Unpacking bsdutils (1:2.39.3-9ubuntu2) over (1:2.39.3-6ubuntu2) ... 914s Setting up bsdutils (1:2.39.3-9ubuntu2) ... 914s (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 ... 70151 files and directories currently installed.) 914s Preparing to unpack .../coreutils_9.4-3ubuntu3_ppc64el.deb ... 914s Unpacking coreutils (9.4-3ubuntu3) over (9.4-2ubuntu4) ... 914s Setting up coreutils (9.4-3ubuntu3) ... 914s (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 ... 70151 files and directories currently installed.) 914s Preparing to unpack .../00-libudisks2-0_2.10.1-6_ppc64el.deb ... 914s Unpacking libudisks2-0:ppc64el (2.10.1-6) over (2.10.1-1ubuntu2) ... 914s Preparing to unpack .../01-udisks2_2.10.1-6_ppc64el.deb ... 914s Unpacking udisks2 (2.10.1-6) over (2.10.1-1ubuntu2) ... 914s Preparing to unpack .../02-shared-mime-info_2.4-1build1_ppc64el.deb ... 914s Unpacking shared-mime-info (2.4-1build1) over (2.4-1) ... 914s Preparing to unpack .../03-gir1.2-girepository-2.0_1.79.1-1ubuntu6_ppc64el.deb ... 914s Unpacking gir1.2-girepository-2.0:ppc64el (1.79.1-1ubuntu6) over (1.79.1-1) ... 914s Preparing to unpack .../04-gir1.2-glib-2.0_2.79.3-3ubuntu5_ppc64el.deb ... 914s Unpacking gir1.2-glib-2.0:ppc64el (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 914s Preparing to unpack .../05-libgirepository-1.0-1_1.79.1-1ubuntu6_ppc64el.deb ... 914s Unpacking libgirepository-1.0-1:ppc64el (1.79.1-1ubuntu6) over (1.79.1-1) ... 914s Preparing to unpack .../06-python3-gi_3.47.0-3build1_ppc64el.deb ... 914s Unpacking python3-gi (3.47.0-3build1) over (3.47.0-3) ... 914s Preparing to unpack .../07-python3-dbus_1.3.2-5build2_ppc64el.deb ... 914s Unpacking python3-dbus (1.3.2-5build2) over (1.3.2-5build1) ... 914s Selecting previously unselected package libnetplan1:ppc64el. 914s Preparing to unpack .../08-libnetplan1_1.0-1_ppc64el.deb ... 914s Unpacking libnetplan1:ppc64el (1.0-1) ... 914s Preparing to unpack .../09-python3-netplan_1.0-1_ppc64el.deb ... 914s Unpacking python3-netplan (1.0-1) over (0.107.1-3) ... 914s Preparing to unpack .../10-netplan-generator_1.0-1_ppc64el.deb ... 914s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 914s Unpacking netplan-generator (1.0-1) over (0.107.1-3) ... 914s Preparing to unpack .../11-netplan.io_1.0-1_ppc64el.deb ... 914s Unpacking netplan.io (1.0-1) over (0.107.1-3) ... 915s Preparing to unpack .../12-libxmlb2_0.3.15-1build1_ppc64el.deb ... 915s Unpacking libxmlb2:ppc64el (0.3.15-1build1) over (0.3.15-1) ... 915s dpkg: libgpgme11:ppc64el: dependency problems, but removing anyway as you requested: 915s libvolume-key1:ppc64el depends on libgpgme11 (>= 1.4.1). 915s libjcat1:ppc64el depends on libgpgme11 (>= 1.2.0). 915s 915s (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 ... 70154 files and directories currently installed.) 915s Removing libgpgme11:ppc64el (1.18.0-4ubuntu1) ... 915s Selecting previously unselected package libgpgme11t64:ppc64el. 915s (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 ... 70148 files and directories currently installed.) 915s Preparing to unpack .../00-libgpgme11t64_1.18.0-4.1ubuntu3_ppc64el.deb ... 915s Unpacking libgpgme11t64:ppc64el (1.18.0-4.1ubuntu3) ... 915s Preparing to unpack .../01-libvolume-key1_0.3.12-7build1_ppc64el.deb ... 915s Unpacking libvolume-key1:ppc64el (0.3.12-7build1) over (0.3.12-5build2) ... 915s Preparing to unpack .../02-libqrtr-glib0_1.2.2-1ubuntu3_ppc64el.deb ... 915s Unpacking libqrtr-glib0:ppc64el (1.2.2-1ubuntu3) over (1.2.2-1ubuntu2) ... 915s Preparing to unpack .../03-libqmi-glib5_1.35.2-0ubuntu1_ppc64el.deb ... 915s Unpacking libqmi-glib5:ppc64el (1.35.2-0ubuntu1) over (1.34.0-2) ... 915s Preparing to unpack .../04-libqmi-proxy_1.35.2-0ubuntu1_ppc64el.deb ... 915s Unpacking libqmi-proxy (1.35.2-0ubuntu1) over (1.34.0-2) ... 915s Preparing to unpack .../05-libpolkit-agent-1-0_124-1ubuntu1_ppc64el.deb ... 915s Unpacking libpolkit-agent-1-0:ppc64el (124-1ubuntu1) over (124-1) ... 915s Preparing to unpack .../06-libpolkit-gobject-1-0_124-1ubuntu1_ppc64el.deb ... 915s Unpacking libpolkit-gobject-1-0:ppc64el (124-1ubuntu1) over (124-1) ... 915s Preparing to unpack .../07-libmm-glib0_1.23.4-0ubuntu1_ppc64el.deb ... 915s Unpacking libmm-glib0:ppc64el (1.23.4-0ubuntu1) over (1.22.0-3) ... 915s Preparing to unpack .../08-libmbim-glib4_1.31.2-0ubuntu2_ppc64el.deb ... 915s Unpacking libmbim-glib4:ppc64el (1.31.2-0ubuntu2) over (1.30.0-1) ... 915s Preparing to unpack .../09-libmbim-proxy_1.31.2-0ubuntu2_ppc64el.deb ... 915s Unpacking libmbim-proxy (1.31.2-0ubuntu2) over (1.30.0-1) ... 915s Preparing to unpack .../10-libjson-glib-1.0-common_1.8.0-2build1_all.deb ... 915s Unpacking libjson-glib-1.0-common (1.8.0-2build1) over (1.8.0-2) ... 915s Preparing to unpack .../11-libjson-glib-1.0-0_1.8.0-2build1_ppc64el.deb ... 915s Unpacking libjson-glib-1.0-0:ppc64el (1.8.0-2build1) over (1.8.0-2) ... 915s Preparing to unpack .../12-libgusb2_0.4.8-1build1_ppc64el.deb ... 915s Unpacking libgusb2:ppc64el (0.4.8-1build1) over (0.4.8-1) ... 915s Preparing to unpack .../13-libgudev-1.0-0_1%3a238-3ubuntu2_ppc64el.deb ... 915s Unpacking libgudev-1.0-0:ppc64el (1:238-3ubuntu2) over (1:238-3) ... 915s Preparing to unpack .../14-tnftp_20230507-2build1_ppc64el.deb ... 915s Unpacking tnftp (20230507-2build1) over (20230507-2) ... 915s Preparing to unpack .../15-tcpdump_4.99.4-3ubuntu2_ppc64el.deb ... 915s Unpacking tcpdump (4.99.4-3ubuntu2) over (4.99.4-3ubuntu1) ... 915s Preparing to unpack .../16-libsystemd0_255.4-1ubuntu5_ppc64el.deb ... 915s Unpacking libsystemd0:ppc64el (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 915s Setting up libsystemd0:ppc64el (255.4-1ubuntu5) ... 915s (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 ... 70155 files and directories currently installed.) 915s Preparing to unpack .../systemd-dev_255.4-1ubuntu5_all.deb ... 915s Unpacking systemd-dev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 915s Preparing to unpack .../libnss-systemd_255.4-1ubuntu5_ppc64el.deb ... 915s Unpacking libnss-systemd:ppc64el (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 915s Preparing to unpack .../libudev1_255.4-1ubuntu5_ppc64el.deb ... 915s Unpacking libudev1:ppc64el (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 915s Setting up libudev1:ppc64el (255.4-1ubuntu5) ... 915s dpkg: libssl3:ppc64el: dependency problems, but removing anyway as you requested: 915s wget depends on libssl3 (>= 3.0.0). 915s systemd-resolved depends on libssl3 (>= 3.0.0). 915s systemd depends on libssl3 (>= 3.0.0). 915s sudo depends on libssl3 (>= 3.0.0). 915s rsync depends on libssl3 (>= 3.0.0). 915s python3-cryptography depends on libssl3 (>= 3.0.0). 915s openssl depends on libssl3 (>= 3.0.9). 915s openssh-server depends on libssl3 (>= 3.0.10). 915s openssh-client depends on libssl3 (>= 3.0.10). 915s linux-headers-6.8.0-11-generic depends on libssl3 (>= 3.0.0). 915s libsystemd-shared:ppc64el depends on libssl3 (>= 3.0.0). 915s libssh-4:ppc64el depends on libssl3 (>= 3.0.0). 915s libsasl2-modules:ppc64el depends on libssl3 (>= 3.0.0). 915s libsasl2-2:ppc64el depends on libssl3 (>= 3.0.0). 915s libpython3.12-minimal:ppc64el depends on libssl3 (>= 3.0.0). 915s libpython3.11-minimal:ppc64el depends on libssl3 (>= 3.0.0). 915s libnvme1 depends on libssl3 (>= 3.0.0). 915s libkrb5-3:ppc64el depends on libssl3 (>= 3.0.0). 915s libkmod2:ppc64el depends on libssl3 (>= 3.0.0). 915s libfido2-1:ppc64el depends on libssl3 (>= 3.0.0). 915s libcurl4:ppc64el depends on libssl3 (>= 3.0.0). 915s libcryptsetup12:ppc64el depends on libssl3 (>= 3.0.0). 915s kmod depends on libssl3 (>= 3.0.0). 915s dhcpcd-base depends on libssl3 (>= 3.0.0). 915s coreutils depends on libssl3 (>= 3.0.0). 915s bind9-libs:ppc64el depends on libssl3 (>= 3.0.0). 915s 915s (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 ... 70155 files and directories currently installed.) 915s Removing libssl3:ppc64el (3.0.10-1ubuntu4) ... 915s Selecting previously unselected package libssl3t64:ppc64el. 915s (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 ... 70144 files and directories currently installed.) 915s Preparing to unpack .../libssl3t64_3.0.13-0ubuntu2_ppc64el.deb ... 915s Unpacking libssl3t64:ppc64el (3.0.13-0ubuntu2) ... 915s Setting up libssl3t64:ppc64el (3.0.13-0ubuntu2) ... 915s (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 ... 70157 files and directories currently installed.) 915s Preparing to unpack .../systemd_255.4-1ubuntu5_ppc64el.deb ... 915s Unpacking systemd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 916s Preparing to unpack .../udev_255.4-1ubuntu5_ppc64el.deb ... 916s Unpacking udev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 916s Preparing to unpack .../libsystemd-shared_255.4-1ubuntu5_ppc64el.deb ... 916s Unpacking libsystemd-shared:ppc64el (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 916s Setting up libsystemd-shared:ppc64el (255.4-1ubuntu5) ... 916s Setting up systemd-dev (255.4-1ubuntu5) ... 916s Setting up systemd (255.4-1ubuntu5) ... 917s (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 ... 70157 files and directories currently installed.) 917s Preparing to unpack .../00-systemd-sysv_255.4-1ubuntu5_ppc64el.deb ... 917s Unpacking systemd-sysv (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 917s Preparing to unpack .../01-libpam-systemd_255.4-1ubuntu5_ppc64el.deb ... 917s Unpacking libpam-systemd:ppc64el (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 917s Preparing to unpack .../02-systemd-timesyncd_255.4-1ubuntu5_ppc64el.deb ... 917s Unpacking systemd-timesyncd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 917s Preparing to unpack .../03-systemd-resolved_255.4-1ubuntu5_ppc64el.deb ... 917s Unpacking systemd-resolved (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 917s Preparing to unpack .../04-sudo_1.9.15p5-3ubuntu3_ppc64el.deb ... 917s Unpacking sudo (1.9.15p5-3ubuntu3) over (1.9.15p5-3ubuntu1) ... 917s Preparing to unpack .../05-rsync_3.2.7-1build1_ppc64el.deb ... 917s Unpacking rsync (3.2.7-1build1) over (3.2.7-1) ... 917s Preparing to unpack .../06-python3-cryptography_41.0.7-4build2_ppc64el.deb ... 917s Unpacking python3-cryptography (41.0.7-4build2) over (41.0.7-3) ... 917s Preparing to unpack .../07-openssl_3.0.13-0ubuntu2_ppc64el.deb ... 917s Unpacking openssl (3.0.13-0ubuntu2) over (3.0.10-1ubuntu4) ... 917s Preparing to unpack .../08-openssh-sftp-server_1%3a9.6p1-3ubuntu11_ppc64el.deb ... 917s Unpacking openssh-sftp-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 917s Preparing to unpack .../09-openssh-client_1%3a9.6p1-3ubuntu11_ppc64el.deb ... 917s Unpacking openssh-client (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 917s Preparing to unpack .../10-openssh-server_1%3a9.6p1-3ubuntu11_ppc64el.deb ... 917s Unpacking openssh-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 917s Preparing to unpack .../11-libssh-4_0.10.6-2build1_ppc64el.deb ... 917s Unpacking libssh-4:ppc64el (0.10.6-2build1) over (0.10.6-2) ... 917s Preparing to unpack .../12-libsasl2-modules_2.1.28+dfsg1-5ubuntu1_ppc64el.deb ... 917s Unpacking libsasl2-modules:ppc64el (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 917s Preparing to unpack .../13-python3.12_3.12.2-4build3_ppc64el.deb ... 917s Unpacking python3.12 (3.12.2-4build3) over (3.12.2-1) ... 917s Preparing to unpack .../14-python3.12-minimal_3.12.2-4build3_ppc64el.deb ... 917s Unpacking python3.12-minimal (3.12.2-4build3) over (3.12.2-1) ... 917s Preparing to unpack .../15-libpython3.12-minimal_3.12.2-4build3_ppc64el.deb ... 918s Unpacking libpython3.12-minimal:ppc64el (3.12.2-4build3) over (3.12.2-1) ... 918s Preparing to unpack .../16-grub-ieee1275_2.12-1ubuntu5_ppc64el.deb ... 918s Unpacking grub-ieee1275 (2.12-1ubuntu5) over (2.12-1ubuntu4) ... 918s Preparing to unpack .../17-grub2-common_2.12-1ubuntu5_ppc64el.deb ... 918s Unpacking grub2-common (2.12-1ubuntu5) over (2.12-1ubuntu4) ... 918s Preparing to unpack .../18-grub-common_2.12-1ubuntu5_ppc64el.deb ... 918s Unpacking grub-common (2.12-1ubuntu5) over (2.12-1ubuntu4) ... 918s Preparing to unpack .../19-grub-ieee1275-bin_2.12-1ubuntu5_ppc64el.deb ... 918s Unpacking grub-ieee1275-bin (2.12-1ubuntu5) over (2.12-1ubuntu4) ... 918s dpkg: libparted2:ppc64el: dependency problems, but removing anyway as you requested: 918s parted depends on libparted2 (= 3.6-3). 918s 918s (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 ... 70157 files and directories currently installed.) 918s Removing libparted2:ppc64el (3.6-3) ... 918s Selecting previously unselected package libparted2t64:ppc64el. 918s (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 ... 70151 files and directories currently installed.) 918s Preparing to unpack .../0-libparted2t64_3.6-3.1build2_ppc64el.deb ... 918s Unpacking libparted2t64:ppc64el (3.6-3.1build2) ... 918s Preparing to unpack .../1-parted_3.6-3.1build2_ppc64el.deb ... 918s Unpacking parted (3.6-3.1build2) over (3.6-3) ... 918s Preparing to unpack .../2-python3.11_3.11.8-1build4_ppc64el.deb ... 918s Unpacking python3.11 (3.11.8-1build4) over (3.11.8-1) ... 918s Preparing to unpack .../3-python3.11-minimal_3.11.8-1build4_ppc64el.deb ... 918s Unpacking python3.11-minimal (3.11.8-1build4) over (3.11.8-1) ... 918s Preparing to unpack .../4-libpython3.11-minimal_3.11.8-1build4_ppc64el.deb ... 918s Unpacking libpython3.11-minimal:ppc64el (3.11.8-1build4) over (3.11.8-1) ... 918s Preparing to unpack .../5-libpython3.11-stdlib_3.11.8-1build4_ppc64el.deb ... 918s Unpacking libpython3.11-stdlib:ppc64el (3.11.8-1build4) over (3.11.8-1) ... 919s Preparing to unpack .../6-gnupg-utils_2.4.4-2ubuntu15_ppc64el.deb ... 919s Unpacking gnupg-utils (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 919s Preparing to unpack .../7-gpg-agent_2.4.4-2ubuntu15_ppc64el.deb ... 919s Unpacking gpg-agent (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 919s Preparing to unpack .../8-gpg-wks-client_2.4.4-2ubuntu15_ppc64el.deb ... 919s Unpacking gpg-wks-client (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 919s Preparing to unpack .../9-gpg_2.4.4-2ubuntu15_ppc64el.deb ... 919s Unpacking gpg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 919s dpkg: libnpth0:ppc64el: dependency problems, but removing anyway as you requested: 919s keyboxd depends on libnpth0 (>= 0.90). 919s gpgv depends on libnpth0 (>= 0.90). 919s gpgsm depends on libnpth0 (>= 0.90). 919s dirmngr depends on libnpth0 (>= 0.90). 919s 919s (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 ... 70156 files and directories currently installed.) 919s Removing libnpth0:ppc64el (1.6-3build2) ... 919s Selecting previously unselected package libnpth0t64:ppc64el. 919s (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 ... 70151 files and directories currently installed.) 919s Preparing to unpack .../libnpth0t64_1.6-3.1_ppc64el.deb ... 919s Unpacking libnpth0t64:ppc64el (1.6-3.1) ... 919s Setting up libnpth0t64:ppc64el (1.6-3.1) ... 919s (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 ... 70157 files and directories currently installed.) 919s Preparing to unpack .../gpgv_2.4.4-2ubuntu15_ppc64el.deb ... 919s Unpacking gpgv (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 919s Setting up gpgv (2.4.4-2ubuntu15) ... 919s (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 ... 70157 files and directories currently installed.) 919s Preparing to unpack .../dirmngr_2.4.4-2ubuntu15_ppc64el.deb ... 919s Unpacking dirmngr (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 919s Preparing to unpack .../gnupg_2.4.4-2ubuntu15_all.deb ... 919s Unpacking gnupg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 919s Preparing to unpack .../keyboxd_2.4.4-2ubuntu15_ppc64el.deb ... 919s Unpacking keyboxd (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 919s Preparing to unpack .../gpgconf_2.4.4-2ubuntu15_ppc64el.deb ... 919s Unpacking gpgconf (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 919s Preparing to unpack .../gpgsm_2.4.4-2ubuntu15_ppc64el.deb ... 919s Unpacking gpgsm (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 919s dpkg: libreadline8:ppc64el: dependency problems, but removing anyway as you requested: 919s libpython3.12-stdlib:ppc64el depends on libreadline8 (>= 7.0~beta). 919s gawk depends on libreadline8 (>= 6.0). 919s fdisk depends on libreadline8 (>= 6.0). 919s bc depends on libreadline8 (>= 6.0). 919s 919s (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 ... 70157 files and directories currently installed.) 919s Removing libreadline8:ppc64el (8.2-3) ... 919s Selecting previously unselected package libreadline8t64:ppc64el. 919s (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 ... 70145 files and directories currently installed.) 919s Preparing to unpack .../libreadline8t64_8.2-4_ppc64el.deb ... 919s Adding 'diversion of /lib/powerpc64le-linux-gnu/libhistory.so.8 to /lib/powerpc64le-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' 919s Adding 'diversion of /lib/powerpc64le-linux-gnu/libhistory.so.8.2 to /lib/powerpc64le-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' 919s Adding 'diversion of /lib/powerpc64le-linux-gnu/libreadline.so.8 to /lib/powerpc64le-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' 919s Adding 'diversion of /lib/powerpc64le-linux-gnu/libreadline.so.8.2 to /lib/powerpc64le-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' 919s Unpacking libreadline8t64:ppc64el (8.2-4) ... 919s Setting up libreadline8t64:ppc64el (8.2-4) ... 919s (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 ... 70165 files and directories currently installed.) 919s Preparing to unpack .../gawk_1%3a5.2.1-2build2_ppc64el.deb ... 919s Unpacking gawk (1:5.2.1-2build2) over (1:5.2.1-2) ... 919s Preparing to unpack .../fdisk_2.39.3-9ubuntu2_ppc64el.deb ... 919s Unpacking fdisk (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 919s Preparing to unpack .../bc_1.07.1-3ubuntu2_ppc64el.deb ... 919s Unpacking bc (1.07.1-3ubuntu2) over (1.07.1-3build1) ... 919s Preparing to unpack .../libpython3.12-stdlib_3.12.2-4build3_ppc64el.deb ... 919s Unpacking libpython3.12-stdlib:ppc64el (3.12.2-4build3) over (3.12.2-1) ... 920s Preparing to unpack .../perl-base_5.38.2-3.2_ppc64el.deb ... 920s Unpacking perl-base (5.38.2-3.2) over (5.38.2-3) ... 920s Setting up perl-base (5.38.2-3.2) ... 920s (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 ... 70163 files and directories currently installed.) 920s Preparing to unpack .../perl-modules-5.38_5.38.2-3.2_all.deb ... 920s Unpacking perl-modules-5.38 (5.38.2-3.2) over (5.38.2-3) ... 920s Preparing to unpack .../python3-gdbm_3.12.2-3ubuntu1.1_ppc64el.deb ... 920s Unpacking python3-gdbm:ppc64el (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 920s Preparing to unpack .../man-db_2.12.0-3build4_ppc64el.deb ... 920s Unpacking man-db (2.12.0-3build4) over (2.12.0-3) ... 920s dpkg: libgdbm-compat4:ppc64el: dependency problems, but removing anyway as you requested: 920s libperl5.38:ppc64el depends on libgdbm-compat4 (>= 1.18-3). 920s 920s (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 ... 70163 files and directories currently installed.) 920s Removing libgdbm-compat4:ppc64el (1.23-5) ... 920s dpkg: libgdbm6:ppc64el: dependency problems, but removing anyway as you requested: 920s libperl5.38:ppc64el depends on libgdbm6 (>= 1.21). 920s 920s Removing libgdbm6:ppc64el (1.23-5) ... 920s Selecting previously unselected package libgdbm6t64:ppc64el. 920s (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 ... 70153 files and directories currently installed.) 920s Preparing to unpack .../libgdbm6t64_1.23-5.1_ppc64el.deb ... 920s Unpacking libgdbm6t64:ppc64el (1.23-5.1) ... 920s Selecting previously unselected package libgdbm-compat4t64:ppc64el. 920s Preparing to unpack .../libgdbm-compat4t64_1.23-5.1_ppc64el.deb ... 920s Unpacking libgdbm-compat4t64:ppc64el (1.23-5.1) ... 920s dpkg: libperl5.38:ppc64el: dependency problems, but removing anyway as you requested: 920s perl depends on libperl5.38 (= 5.38.2-3). 920s 920s (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 ... 70165 files and directories currently installed.) 920s Removing libperl5.38:ppc64el (5.38.2-3) ... 921s Selecting previously unselected package libperl5.38t64:ppc64el. 921s (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 ... 69642 files and directories currently installed.) 921s Preparing to unpack .../libperl5.38t64_5.38.2-3.2_ppc64el.deb ... 921s Unpacking libperl5.38t64:ppc64el (5.38.2-3.2) ... 921s Preparing to unpack .../perl_5.38.2-3.2_ppc64el.deb ... 921s Unpacking perl (5.38.2-3.2) over (5.38.2-3) ... 921s dpkg: libdb5.3:ppc64el: dependency problems, but removing anyway as you requested: 921s libsasl2-modules-db:ppc64el depends on libdb5.3. 921s iproute2 depends on libdb5.3. 921s apt-utils depends on libdb5.3. 921s 921s (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 ... 70165 files and directories currently installed.) 921s Removing libdb5.3:ppc64el (5.3.28+dfsg2-4) ... 921s Selecting previously unselected package libdb5.3t64:ppc64el. 921s (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 ... 70159 files and directories currently installed.) 921s Preparing to unpack .../libdb5.3t64_5.3.28+dfsg2-6_ppc64el.deb ... 921s Unpacking libdb5.3t64:ppc64el (5.3.28+dfsg2-6) ... 921s Preparing to unpack .../libsasl2-modules-db_2.1.28+dfsg1-5ubuntu1_ppc64el.deb ... 921s Unpacking libsasl2-modules-db:ppc64el (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 921s Preparing to unpack .../libsasl2-2_2.1.28+dfsg1-5ubuntu1_ppc64el.deb ... 921s Unpacking libsasl2-2:ppc64el (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 921s dpkg: libnvme1: dependency problems, but removing anyway as you requested: 921s libblockdev-nvme3:ppc64el depends on libnvme1 (>= 1.7.1). 921s 921s (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 ... 70165 files and directories currently installed.) 921s Removing libnvme1 (1.8-2) ... 921s Selecting previously unselected package libnvme1t64. 921s (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 ... 70158 files and directories currently installed.) 921s Preparing to unpack .../libnvme1t64_1.8-3_ppc64el.deb ... 921s Unpacking libnvme1t64 (1.8-3) ... 921s Preparing to unpack .../wget_1.21.4-1ubuntu2_ppc64el.deb ... 921s Unpacking wget (1.21.4-1ubuntu2) over (1.21.4-1ubuntu1) ... 921s dpkg: libcurl4:ppc64el: dependency problems, but removing anyway as you requested: 921s curl depends on libcurl4 (= 8.5.0-2ubuntu2). 921s 921s (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 ... 70166 files and directories currently installed.) 921s Removing libcurl4:ppc64el (8.5.0-2ubuntu2) ... 921s Selecting previously unselected package libcurl4t64:ppc64el. 921s (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 ... 70161 files and directories currently installed.) 921s Preparing to unpack .../libcurl4t64_8.5.0-2ubuntu8_ppc64el.deb ... 921s Unpacking libcurl4t64:ppc64el (8.5.0-2ubuntu8) ... 921s Preparing to unpack .../curl_8.5.0-2ubuntu8_ppc64el.deb ... 921s Unpacking curl (8.5.0-2ubuntu8) over (8.5.0-2ubuntu2) ... 921s dpkg: libpsl5:ppc64el: dependency problems, but removing anyway as you requested: 921s libcurl3-gnutls:ppc64el depends on libpsl5 (>= 0.16.0). 921s 921s (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 ... 70167 files and directories currently installed.) 921s Removing libpsl5:ppc64el (0.21.2-1build1) ... 921s Selecting previously unselected package libpsl5t64:ppc64el. 921s (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 ... 70162 files and directories currently installed.) 921s Preparing to unpack .../libpsl5t64_0.21.2-1.1_ppc64el.deb ... 921s Unpacking libpsl5t64:ppc64el (0.21.2-1.1) ... 921s dpkg: libarchive13:ppc64el: dependency problems, but removing anyway as you requested: 921s fwupd depends on libarchive13 (>= 3.2.1). 921s 921s (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 ... 70168 files and directories currently installed.) 921s Removing libarchive13:ppc64el (3.7.2-1ubuntu2) ... 921s Selecting previously unselected package libarchive13t64:ppc64el. 921s (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 ... 70162 files and directories currently installed.) 921s Preparing to unpack .../libarchive13t64_3.7.2-1.1ubuntu2_ppc64el.deb ... 921s Unpacking libarchive13t64:ppc64el (3.7.2-1.1ubuntu2) ... 921s Preparing to unpack .../fwupd_1.9.15-2_ppc64el.deb ... 922s Unpacking fwupd (1.9.15-2) over (1.9.14-1) ... 922s dpkg: libcurl3-gnutls:ppc64el: dependency problems, but removing anyway as you requested: 922s libfwupd2:ppc64el depends on libcurl3-gnutls (>= 7.63.0). 922s 922s (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 ... 70169 files and directories currently installed.) 922s Removing libcurl3-gnutls:ppc64el (8.5.0-2ubuntu2) ... 922s Selecting previously unselected package libcurl3t64-gnutls:ppc64el. 922s (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 ... 70162 files and directories currently installed.) 922s Preparing to unpack .../00-libcurl3t64-gnutls_8.5.0-2ubuntu8_ppc64el.deb ... 922s Unpacking libcurl3t64-gnutls:ppc64el (8.5.0-2ubuntu8) ... 922s Preparing to unpack .../01-libfwupd2_1.9.15-2_ppc64el.deb ... 922s Unpacking libfwupd2:ppc64el (1.9.15-2) over (1.9.14-1) ... 922s Preparing to unpack .../02-libblockdev3_3.1.0-1build1_ppc64el.deb ... 922s Unpacking libblockdev3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 922s Preparing to unpack .../03-libblockdev-utils3_3.1.0-1build1_ppc64el.deb ... 922s Unpacking libblockdev-utils3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 922s Preparing to unpack .../04-libblockdev-swap3_3.1.0-1build1_ppc64el.deb ... 922s Unpacking libblockdev-swap3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 922s Preparing to unpack .../05-libblockdev-part3_3.1.0-1build1_ppc64el.deb ... 922s Unpacking libblockdev-part3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 922s Preparing to unpack .../06-libblockdev-nvme3_3.1.0-1build1_ppc64el.deb ... 922s Unpacking libblockdev-nvme3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 922s Preparing to unpack .../07-libblockdev-mdraid3_3.1.0-1build1_ppc64el.deb ... 922s Unpacking libblockdev-mdraid3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 922s Preparing to unpack .../08-libblockdev-loop3_3.1.0-1build1_ppc64el.deb ... 922s Unpacking libblockdev-loop3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 922s Preparing to unpack .../09-logsave_1.47.0-2.4~exp1ubuntu2_ppc64el.deb ... 922s Unpacking logsave (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 922s Preparing to unpack .../10-e2fsprogs-l10n_1.47.0-2.4~exp1ubuntu2_all.deb ... 922s Unpacking e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 922s dpkg: libext2fs2:ppc64el: dependency problems, but removing anyway as you requested: 922s libblockdev-fs3:ppc64el depends on libext2fs2 (>= 1.42.11). 922s e2fsprogs depends on libext2fs2 (= 1.47.0-2ubuntu1). 922s btrfs-progs depends on libext2fs2 (>= 1.42). 922s 922s (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 ... 70169 files and directories currently installed.) 922s Removing libext2fs2:ppc64el (1.47.0-2ubuntu1) ... 922s Selecting previously unselected package libext2fs2t64:ppc64el. 922s (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 ... 70162 files and directories currently installed.) 922s Preparing to unpack .../libext2fs2t64_1.47.0-2.4~exp1ubuntu2_ppc64el.deb ... 922s Adding 'diversion of /lib/powerpc64le-linux-gnu/libe2p.so.2 to /lib/powerpc64le-linux-gnu/libe2p.so.2.usr-is-merged by libext2fs2t64' 922s Adding 'diversion of /lib/powerpc64le-linux-gnu/libe2p.so.2.3 to /lib/powerpc64le-linux-gnu/libe2p.so.2.3.usr-is-merged by libext2fs2t64' 922s Adding 'diversion of /lib/powerpc64le-linux-gnu/libext2fs.so.2 to /lib/powerpc64le-linux-gnu/libext2fs.so.2.usr-is-merged by libext2fs2t64' 922s Adding 'diversion of /lib/powerpc64le-linux-gnu/libext2fs.so.2.4 to /lib/powerpc64le-linux-gnu/libext2fs.so.2.4.usr-is-merged by libext2fs2t64' 922s Unpacking libext2fs2t64:ppc64el (1.47.0-2.4~exp1ubuntu2) ... 922s Setting up libext2fs2t64:ppc64el (1.47.0-2.4~exp1ubuntu2) ... 922s (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 ... 70178 files and directories currently installed.) 922s Preparing to unpack .../e2fsprogs_1.47.0-2.4~exp1ubuntu2_ppc64el.deb ... 922s Unpacking e2fsprogs (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 922s dpkg: libreiserfscore0: dependency problems, but removing anyway as you requested: 922s btrfs-progs depends on libreiserfscore0 (>= 1:3.6.27). 922s 922s (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 ... 70178 files and directories currently installed.) 922s Removing libreiserfscore0 (1:3.6.27-7) ... 922s Selecting previously unselected package libreiserfscore0t64. 922s (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 ... 70173 files and directories currently installed.) 922s Preparing to unpack .../libreiserfscore0t64_1%3a3.6.27-7.1_ppc64el.deb ... 922s Unpacking libreiserfscore0t64 (1:3.6.27-7.1) ... 922s Preparing to unpack .../btrfs-progs_6.6.3-1.1build1_ppc64el.deb ... 922s Unpacking btrfs-progs (6.6.3-1.1build1) over (6.6.3-1.1) ... 922s Preparing to unpack .../libblockdev-fs3_3.1.0-1build1_ppc64el.deb ... 922s Unpacking libblockdev-fs3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 922s Preparing to unpack .../libblockdev-crypto3_3.1.0-1build1_ppc64el.deb ... 922s Unpacking libblockdev-crypto3:ppc64el (3.1.0-1build1) over (3.1.0-1) ... 922s Preparing to unpack .../bolt_0.9.6-2build1_ppc64el.deb ... 922s Unpacking bolt (0.9.6-2build1) over (0.9.6-2) ... 922s dpkg: libglib2.0-0:ppc64el: dependency problems, but removing anyway as you requested: 922s libnetplan0:ppc64el depends on libglib2.0-0 (>= 2.75.3). 922s libjcat1:ppc64el depends on libglib2.0-0 (>= 2.75.3). 922s 922s (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 ... 70179 files and directories currently installed.) 922s Removing libglib2.0-0:ppc64el (2.79.2-1~ubuntu1) ... 922s Selecting previously unselected package libglib2.0-0t64:ppc64el. 922s (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 ... 70154 files and directories currently installed.) 922s Preparing to unpack .../0-libglib2.0-0t64_2.79.3-3ubuntu5_ppc64el.deb ... 923s libglib2.0-0t64.preinst: Removing /var/lib/dpkg/info/libglib2.0-0:ppc64el.postrm to avoid loss of /usr/share/glib-2.0/schemas/gschemas.compiled... 923s removed '/var/lib/dpkg/info/libglib2.0-0:ppc64el.postrm' 923s Unpacking libglib2.0-0t64:ppc64el (2.79.3-3ubuntu5) ... 923s Preparing to unpack .../1-libjcat1_0.2.0-2build2_ppc64el.deb ... 923s Unpacking libjcat1:ppc64el (0.2.0-2build2) over (0.2.0-2) ... 923s Preparing to unpack .../2-libldap2_2.6.7+dfsg-1~exp1ubuntu6_ppc64el.deb ... 923s Unpacking libldap2:ppc64el (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 923s Preparing to unpack .../3-ubuntu-pro-client-l10n_31.2.2_ppc64el.deb ... 923s Unpacking ubuntu-pro-client-l10n (31.2.2) over (31.1) ... 923s Preparing to unpack .../4-ubuntu-pro-client_31.2.2_ppc64el.deb ... 923s Unpacking ubuntu-pro-client (31.2.2) over (31.1) ... 923s Preparing to unpack .../5-python3-apt_2.7.7_ppc64el.deb ... 923s Unpacking python3-apt (2.7.7) over (2.7.6) ... 923s Preparing to unpack .../6-apt-utils_2.7.14_ppc64el.deb ... 923s Unpacking apt-utils (2.7.14) over (2.7.12) ... 923s dpkg: libapt-pkg6.0:ppc64el: dependency problems, but removing anyway as you requested: 923s apt depends on libapt-pkg6.0 (>= 2.7.12). 923s 923s (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 ... 70177 files and directories currently installed.) 923s Removing libapt-pkg6.0:ppc64el (2.7.12) ... 923s dpkg: libnettle8:ppc64el: dependency problems, but removing anyway as you requested: 923s librtmp1:ppc64el depends on libnettle8. 923s libhogweed6:ppc64el depends on libnettle8. 923s libgnutls30:ppc64el depends on libnettle8 (>= 3.9~). 923s 923s Removing libnettle8:ppc64el (3.9.1-2) ... 923s Selecting previously unselected package libapt-pkg6.0t64:ppc64el. 923s (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 ... 70121 files and directories currently installed.) 923s Preparing to unpack .../libapt-pkg6.0t64_2.7.14_ppc64el.deb ... 923s Unpacking libapt-pkg6.0t64:ppc64el (2.7.14) ... 923s Setting up libapt-pkg6.0t64:ppc64el (2.7.14) ... 923s Selecting previously unselected package libnettle8t64:ppc64el. 923s (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 ... 70171 files and directories currently installed.) 923s Preparing to unpack .../libnettle8t64_3.9.1-2.2_ppc64el.deb ... 923s Unpacking libnettle8t64:ppc64el (3.9.1-2.2) ... 923s Setting up libnettle8t64:ppc64el (3.9.1-2.2) ... 923s dpkg: libhogweed6:ppc64el: dependency problems, but removing anyway as you requested: 923s librtmp1:ppc64el depends on libhogweed6. 923s libgnutls30:ppc64el depends on libhogweed6 (>= 3.6). 923s 923s (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 ... 70179 files and directories currently installed.) 923s Removing libhogweed6:ppc64el (3.9.1-2) ... 923s Selecting previously unselected package libhogweed6t64:ppc64el. 923s (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 ... 70174 files and directories currently installed.) 923s Preparing to unpack .../libhogweed6t64_3.9.1-2.2_ppc64el.deb ... 923s Unpacking libhogweed6t64:ppc64el (3.9.1-2.2) ... 924s Setting up libhogweed6t64:ppc64el (3.9.1-2.2) ... 924s dpkg: libgnutls30:ppc64el: dependency problems, but removing anyway as you requested: 924s librtmp1:ppc64el depends on libgnutls30 (>= 3.7.2). 924s apt depends on libgnutls30 (>= 3.8.1). 924s 924s (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 ... 70180 files and directories currently installed.) 924s Removing libgnutls30:ppc64el (3.8.3-1ubuntu1) ... 924s Selecting previously unselected package libgnutls30t64:ppc64el. 924s (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 ... 70171 files and directories currently installed.) 924s Preparing to unpack .../libgnutls30t64_3.8.3-1.1ubuntu2_ppc64el.deb ... 924s Unpacking libgnutls30t64:ppc64el (3.8.3-1.1ubuntu2) ... 924s Setting up libgnutls30t64:ppc64el (3.8.3-1.1ubuntu2) ... 924s (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 ... 70199 files and directories currently installed.) 924s Preparing to unpack .../apt_2.7.14_ppc64el.deb ... 924s Unpacking apt (2.7.14) over (2.7.12) ... 924s Setting up apt (2.7.14) ... 925s (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 ... 70199 files and directories currently installed.) 925s Preparing to unpack .../librtmp1_2.4+20151223.gitfa8646d.1-2build6_ppc64el.deb ... 925s Unpacking librtmp1:ppc64el (2.4+20151223.gitfa8646d.1-2build6) over (2.4+20151223.gitfa8646d.1-2build4) ... 925s Preparing to unpack .../liblzma5_5.6.0-0.2_ppc64el.deb ... 925s Unpacking liblzma5:ppc64el (5.6.0-0.2) over (5.4.5-0.3) ... 925s Setting up liblzma5:ppc64el (5.6.0-0.2) ... 925s (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 ... 70199 files and directories currently installed.) 925s Preparing to unpack .../libblkid1_2.39.3-9ubuntu2_ppc64el.deb ... 925s Unpacking libblkid1:ppc64el (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 925s Setting up libblkid1:ppc64el (2.39.3-9ubuntu2) ... 925s (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 ... 70199 files and directories currently installed.) 925s Preparing to unpack .../kmod_31+20240202-2ubuntu4_ppc64el.deb ... 925s Unpacking kmod (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 925s Preparing to unpack .../libkmod2_31+20240202-2ubuntu4_ppc64el.deb ... 925s Unpacking libkmod2:ppc64el (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 925s Preparing to unpack .../libselinux1_3.5-2ubuntu1_ppc64el.deb ... 925s Unpacking libselinux1:ppc64el (3.5-2ubuntu1) over (3.5-2build1) ... 925s Setting up libselinux1:ppc64el (3.5-2ubuntu1) ... 925s (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 ... 70199 files and directories currently installed.) 925s Preparing to unpack .../dbus-session-bus-common_1.14.10-4ubuntu2_all.deb ... 925s Unpacking dbus-session-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 925s Preparing to unpack .../dbus-user-session_1.14.10-4ubuntu2_ppc64el.deb ... 925s Unpacking dbus-user-session (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 925s Preparing to unpack .../libapparmor1_4.0.0-beta3-0ubuntu2_ppc64el.deb ... 925s Unpacking libapparmor1:ppc64el (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 925s Preparing to unpack .../libaudit-common_1%3a3.1.2-2.1_all.deb ... 925s Unpacking libaudit-common (1:3.1.2-2.1) over (1:3.1.2-2) ... 925s Setting up libaudit-common (1:3.1.2-2.1) ... 925s (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 ... 70199 files and directories currently installed.) 925s Preparing to unpack .../libcap-ng0_0.8.4-2build1_ppc64el.deb ... 925s Unpacking libcap-ng0:ppc64el (0.8.4-2build1) over (0.8.4-2) ... 925s Setting up libcap-ng0:ppc64el (0.8.4-2build1) ... 925s (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 ... 70199 files and directories currently installed.) 925s Preparing to unpack .../libaudit1_1%3a3.1.2-2.1_ppc64el.deb ... 925s Unpacking libaudit1:ppc64el (1:3.1.2-2.1) over (1:3.1.2-2) ... 925s Setting up libaudit1:ppc64el (1:3.1.2-2.1) ... 925s (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 ... 70199 files and directories currently installed.) 925s Preparing to unpack .../0-dbus-system-bus-common_1.14.10-4ubuntu2_all.deb ... 925s Unpacking dbus-system-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 925s Preparing to unpack .../1-dbus-bin_1.14.10-4ubuntu2_ppc64el.deb ... 925s Unpacking dbus-bin (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 925s Preparing to unpack .../2-dbus_1.14.10-4ubuntu2_ppc64el.deb ... 925s Unpacking dbus (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 925s Preparing to unpack .../3-dbus-daemon_1.14.10-4ubuntu2_ppc64el.deb ... 925s Unpacking dbus-daemon (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 925s Preparing to unpack .../4-libdbus-1-3_1.14.10-4ubuntu2_ppc64el.deb ... 925s Unpacking libdbus-1-3:ppc64el (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 925s Preparing to unpack .../5-libuuid1_2.39.3-9ubuntu2_ppc64el.deb ... 925s Unpacking libuuid1:ppc64el (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 925s Setting up libuuid1:ppc64el (2.39.3-9ubuntu2) ... 925s (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 ... 70199 files and directories currently installed.) 925s Preparing to unpack .../libcryptsetup12_2%3a2.7.0-1ubuntu2_ppc64el.deb ... 925s Unpacking libcryptsetup12:ppc64el (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 925s Preparing to unpack .../libfdisk1_2.39.3-9ubuntu2_ppc64el.deb ... 925s Unpacking libfdisk1:ppc64el (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 925s Preparing to unpack .../mount_2.39.3-9ubuntu2_ppc64el.deb ... 925s Unpacking mount (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 925s Preparing to unpack .../libmount1_2.39.3-9ubuntu2_ppc64el.deb ... 925s Unpacking libmount1:ppc64el (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 925s Setting up libmount1:ppc64el (2.39.3-9ubuntu2) ... 925s (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 ... 70199 files and directories currently installed.) 925s Preparing to unpack .../zlib1g_1%3a1.3.dfsg-3.1ubuntu1_ppc64el.deb ... 925s Unpacking zlib1g:ppc64el (1:1.3.dfsg-3.1ubuntu1) over (1:1.3.dfsg-3ubuntu1) ... 925s Setting up zlib1g:ppc64el (1:1.3.dfsg-3.1ubuntu1) ... 925s Setting up libpython3.12-minimal:ppc64el (3.12.2-4build3) ... 925s Setting up python3.12-minimal (3.12.2-4build3) ... 927s (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 ... 70199 files and directories currently installed.) 927s Preparing to unpack .../python3-minimal_3.12.2-0ubuntu1_ppc64el.deb ... 927s Unpacking python3-minimal (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 927s Setting up python3-minimal (3.12.2-0ubuntu1) ... 927s (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 ... 70199 files and directories currently installed.) 927s Preparing to unpack .../python3_3.12.2-0ubuntu1_ppc64el.deb ... 927s Unpacking python3 (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 927s Preparing to unpack .../libplymouth5_24.004.60-1ubuntu6_ppc64el.deb ... 927s Unpacking libplymouth5:ppc64el (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 927s dpkg: libpng16-16:ppc64el: dependency problems, but removing anyway as you requested: 927s libfreetype6:ppc64el depends on libpng16-16 (>= 1.6.2-1). 927s 927s (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 ... 70199 files and directories currently installed.) 927s Removing libpng16-16:ppc64el (1.6.43-1) ... 927s Selecting previously unselected package libpng16-16t64:ppc64el. 927s (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 ... 70189 files and directories currently installed.) 927s Preparing to unpack .../0-libpng16-16t64_1.6.43-3_ppc64el.deb ... 927s Unpacking libpng16-16t64:ppc64el (1.6.43-3) ... 927s Preparing to unpack .../1-libbrotli1_1.1.0-2build1_ppc64el.deb ... 927s Unpacking libbrotli1:ppc64el (1.1.0-2build1) over (1.1.0-2) ... 927s Preparing to unpack .../2-libfreetype6_2.13.2+dfsg-1build2_ppc64el.deb ... 927s Unpacking libfreetype6:ppc64el (2.13.2+dfsg-1build2) over (2.13.2+dfsg-1) ... 927s Preparing to unpack .../3-libsqlite3-0_3.45.1-1ubuntu1_ppc64el.deb ... 927s Unpacking libsqlite3-0:ppc64el (3.45.1-1ubuntu1) over (3.45.1-1) ... 927s Preparing to unpack .../4-pinentry-curses_1.2.1-3ubuntu4_ppc64el.deb ... 927s Unpacking pinentry-curses (1.2.1-3ubuntu4) over (1.2.1-3ubuntu1) ... 927s Preparing to unpack .../5-python-apt-common_2.7.7_all.deb ... 927s Unpacking python-apt-common (2.7.7) over (2.7.6) ... 927s Preparing to unpack .../6-libsmartcols1_2.39.3-9ubuntu2_ppc64el.deb ... 927s Unpacking libsmartcols1:ppc64el (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 927s Setting up libsmartcols1:ppc64el (2.39.3-9ubuntu2) ... 927s (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 ... 70200 files and directories currently installed.) 927s Preparing to unpack .../00-readline-common_8.2-4_all.deb ... 927s Unpacking readline-common (8.2-4) over (8.2-3) ... 927s Preparing to unpack .../01-bsdextrautils_2.39.3-9ubuntu2_ppc64el.deb ... 927s Unpacking bsdextrautils (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 927s Preparing to unpack .../02-groff-base_1.23.0-3build1_ppc64el.deb ... 927s Unpacking groff-base (1.23.0-3build1) over (1.23.0-3) ... 927s Preparing to unpack .../03-libpython3-stdlib_3.12.2-0ubuntu1_ppc64el.deb ... 927s Unpacking libpython3-stdlib:ppc64el (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 927s Preparing to unpack .../04-libfido2-1_1.14.0-1build1_ppc64el.deb ... 927s Unpacking libfido2-1:ppc64el (1.14.0-1build1) over (1.14.0-1) ... 927s Preparing to unpack .../05-libgssapi-krb5-2_1.20.1-6ubuntu1_ppc64el.deb ... 927s Unpacking libgssapi-krb5-2:ppc64el (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 927s Preparing to unpack .../06-libkrb5-3_1.20.1-6ubuntu1_ppc64el.deb ... 927s Unpacking libkrb5-3:ppc64el (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 927s Preparing to unpack .../07-libkrb5support0_1.20.1-6ubuntu1_ppc64el.deb ... 927s Unpacking libkrb5support0:ppc64el (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 927s Preparing to unpack .../08-libk5crypto3_1.20.1-6ubuntu1_ppc64el.deb ... 927s Unpacking libk5crypto3:ppc64el (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 928s Preparing to unpack .../09-libcom-err2_1.47.0-2.4~exp1ubuntu2_ppc64el.deb ... 928s Unpacking libcom-err2:ppc64el (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 928s Preparing to unpack .../10-libproc2-0_2%3a4.0.4-4ubuntu2_ppc64el.deb ... 928s Unpacking libproc2-0:ppc64el (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 928s Preparing to unpack .../11-procps_2%3a4.0.4-4ubuntu2_ppc64el.deb ... 928s Unpacking procps (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 928s Preparing to unpack .../12-libnghttp2-14_1.59.0-1build1_ppc64el.deb ... 928s Unpacking libnghttp2-14:ppc64el (1.59.0-1build1) over (1.59.0-1) ... 928s Preparing to unpack .../13-dpkg_1.22.6ubuntu5_ppc64el.deb ... 928s Unpacking dpkg (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 928s Setting up dpkg (1.22.6ubuntu5) ... 928s (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 ... 70201 files and directories currently installed.) 928s Preparing to unpack .../util-linux_2.39.3-9ubuntu2_ppc64el.deb ... 928s Unpacking util-linux (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 928s Setting up util-linux (2.39.3-9ubuntu2) ... 929s fstrim.service is a disabled or a static unit not running, not starting it. 929s (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 ... 70201 files and directories currently installed.) 929s Preparing to unpack .../libxml2_2.9.14+dfsg-1.3ubuntu2_ppc64el.deb ... 929s Unpacking libxml2:ppc64el (2.9.14+dfsg-1.3ubuntu2) over (2.9.14+dfsg-1.3ubuntu1) ... 929s (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 ... 70201 files and directories currently installed.) 929s Removing libatm1:ppc64el (1:2.5.1-5) ... 930s (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 ... 70196 files and directories currently installed.) 930s Preparing to unpack .../libbpf1_1%3a1.3.0-2build1_ppc64el.deb ... 930s Unpacking libbpf1:ppc64el (1:1.3.0-2build1) over (1:1.3.0-2) ... 930s Preparing to unpack .../iproute2_6.1.0-1ubuntu5_ppc64el.deb ... 930s Unpacking iproute2 (6.1.0-1ubuntu5) over (6.1.0-1ubuntu2) ... 930s dpkg: libelf1:ppc64el: dependency problems, but removing anyway as you requested: 930s linux-headers-6.8.0-11-generic depends on libelf1 (>= 0.144). 930s 930s (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 ... 70196 files and directories currently installed.) 930s Removing libelf1:ppc64el (0.190-1) ... 930s Selecting previously unselected package libelf1t64:ppc64el. 930s (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 ... 70191 files and directories currently installed.) 930s Preparing to unpack .../libelf1t64_0.190-1.1build2_ppc64el.deb ... 930s Unpacking libelf1t64:ppc64el (0.190-1.1build2) ... 930s Preparing to unpack .../file_1%3a5.45-3_ppc64el.deb ... 930s Unpacking file (1:5.45-3) over (1:5.45-2) ... 930s (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 ... 70196 files and directories currently installed.) 930s Removing libmagic1:ppc64el (1:5.45-2) ... 930s (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 ... 70186 files and directories currently installed.) 930s Preparing to unpack .../libmagic-mgc_1%3a5.45-3_ppc64el.deb ... 930s Unpacking libmagic-mgc (1:5.45-3) over (1:5.45-2) ... 930s Selecting previously unselected package libmagic1t64:ppc64el. 930s Preparing to unpack .../libmagic1t64_1%3a5.45-3_ppc64el.deb ... 930s Unpacking libmagic1t64:ppc64el (1:5.45-3) ... 930s Preparing to unpack .../libtirpc-common_1.3.4+ds-1.1_all.deb ... 930s Unpacking libtirpc-common (1.3.4+ds-1.1) over (1.3.4+ds-1build1) ... 930s Preparing to unpack .../lsof_4.95.0-1build2_ppc64el.deb ... 930s Unpacking lsof (4.95.0-1build2) over (4.95.0-1build1) ... 930s Preparing to unpack .../libnsl2_1.3.0-3build2_ppc64el.deb ... 930s Unpacking libnsl2:ppc64el (1.3.0-3build2) over (1.3.0-3) ... 930s (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 ... 70197 files and directories currently installed.) 930s Removing libtirpc3:ppc64el (1.3.4+ds-1build1) ... 930s Selecting previously unselected package libtirpc3t64:ppc64el. 930s (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 ... 70191 files and directories currently installed.) 930s Preparing to unpack .../libtirpc3t64_1.3.4+ds-1.1_ppc64el.deb ... 930s Adding 'diversion of /lib/powerpc64le-linux-gnu/libtirpc.so.3 to /lib/powerpc64le-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' 930s Adding 'diversion of /lib/powerpc64le-linux-gnu/libtirpc.so.3.0.0 to /lib/powerpc64le-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' 930s Unpacking libtirpc3t64:ppc64el (1.3.4+ds-1.1) ... 930s Preparing to unpack .../multipath-tools_0.9.4-5ubuntu6_ppc64el.deb ... 930s Unpacking multipath-tools (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 930s dpkg: liburcu8:ppc64el: dependency problems, but removing anyway as you requested: 930s xfsprogs depends on liburcu8 (>= 0.13.0). 930s 930s (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 ... 70201 files and directories currently installed.) 930s Removing liburcu8:ppc64el (0.14.0-3) ... 930s Selecting previously unselected package liburcu8t64:ppc64el. 930s (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 ... 70182 files and directories currently installed.) 930s Preparing to unpack .../liburcu8t64_0.14.0-3.1_ppc64el.deb ... 930s Unpacking liburcu8t64:ppc64el (0.14.0-3.1) ... 930s Preparing to unpack .../bind9-host_1%3a9.18.24-0ubuntu3_ppc64el.deb ... 930s Unpacking bind9-host (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 930s Preparing to unpack .../bind9-dnsutils_1%3a9.18.24-0ubuntu3_ppc64el.deb ... 930s Unpacking bind9-dnsutils (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 930s Preparing to unpack .../bind9-libs_1%3a9.18.24-0ubuntu3_ppc64el.deb ... 930s Unpacking bind9-libs:ppc64el (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 930s (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 ... 70202 files and directories currently installed.) 930s Removing libuv1:ppc64el (1.48.0-1) ... 930s Selecting previously unselected package libuv1t64:ppc64el. 930s (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 ... 70197 files and directories currently installed.) 930s Preparing to unpack .../libuv1t64_1.48.0-1.1_ppc64el.deb ... 930s Unpacking libuv1t64:ppc64el (1.48.0-1.1) ... 930s Preparing to unpack .../liblocale-gettext-perl_1.07-6ubuntu4_ppc64el.deb ... 930s Unpacking liblocale-gettext-perl (1.07-6ubuntu4) over (1.07-6build1) ... 930s Preparing to unpack .../uuid-runtime_2.39.3-9ubuntu2_ppc64el.deb ... 930s Unpacking uuid-runtime (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 930s Preparing to unpack .../libdebconfclient0_0.271ubuntu2_ppc64el.deb ... 930s Unpacking libdebconfclient0:ppc64el (0.271ubuntu2) over (0.271ubuntu1) ... 931s Setting up libdebconfclient0:ppc64el (0.271ubuntu2) ... 931s (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 ... 70203 files and directories currently installed.) 931s Preparing to unpack .../libsemanage-common_3.5-1build4_all.deb ... 931s Unpacking libsemanage-common (3.5-1build4) over (3.5-1build2) ... 931s Setting up libsemanage-common (3.5-1build4) ... 931s (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 ... 70203 files and directories currently installed.) 931s Preparing to unpack .../libsemanage2_3.5-1build4_ppc64el.deb ... 931s Unpacking libsemanage2:ppc64el (3.5-1build4) over (3.5-1build2) ... 931s Setting up libsemanage2:ppc64el (3.5-1build4) ... 931s (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 ... 70203 files and directories currently installed.) 931s Preparing to unpack .../install-info_7.1-3build1_ppc64el.deb ... 931s Unpacking install-info (7.1-3build1) over (7.1-3) ... 931s Setting up install-info (7.1-3build1) ... 931s (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 ... 70203 files and directories currently installed.) 931s Preparing to unpack .../00-libss2_1.47.0-2.4~exp1ubuntu2_ppc64el.deb ... 931s Unpacking libss2:ppc64el (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 931s Preparing to unpack .../01-dhcpcd-base_1%3a10.0.6-1ubuntu2_ppc64el.deb ... 931s Unpacking dhcpcd-base (1:10.0.6-1ubuntu2) over (1:10.0.6-1ubuntu1) ... 931s Preparing to unpack .../02-eject_2.39.3-9ubuntu2_ppc64el.deb ... 931s Unpacking eject (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 931s Preparing to unpack .../03-krb5-locales_1.20.1-6ubuntu1_all.deb ... 931s Unpacking krb5-locales (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 931s Preparing to unpack .../04-libglib2.0-data_2.79.3-3ubuntu5_all.deb ... 931s Unpacking libglib2.0-data (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 931s Preparing to unpack .../05-libslang2_2.3.3-3build1_ppc64el.deb ... 931s Unpacking libslang2:ppc64el (2.3.3-3build1) over (2.3.3-3) ... 931s Preparing to unpack .../06-libtext-charwidth-perl_0.04-11build2_ppc64el.deb ... 931s Unpacking libtext-charwidth-perl:ppc64el (0.04-11build2) over (0.04-11build1) ... 931s Preparing to unpack .../07-libtext-iconv-perl_1.7-8build2_ppc64el.deb ... 931s Unpacking libtext-iconv-perl:ppc64el (1.7-8build2) over (1.7-8build1) ... 931s Preparing to unpack .../08-python3-setuptools_68.1.2-2ubuntu1_all.deb ... 931s Unpacking python3-setuptools (68.1.2-2ubuntu1) over (68.1.2-2) ... 931s Preparing to unpack .../09-python3-pkg-resources_68.1.2-2ubuntu1_all.deb ... 931s Unpacking python3-pkg-resources (68.1.2-2ubuntu1) over (68.1.2-2) ... 931s Preparing to unpack .../10-rsyslog_8.2312.0-3ubuntu7_ppc64el.deb ... 931s Unpacking rsyslog (8.2312.0-3ubuntu7) over (8.2312.0-3ubuntu3) ... 931s Preparing to unpack .../11-vim-tiny_2%3a9.1.0016-1ubuntu6_ppc64el.deb ... 931s Unpacking vim-tiny (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 931s Preparing to unpack .../12-vim-common_2%3a9.1.0016-1ubuntu6_all.deb ... 931s Unpacking vim-common (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 931s Selecting previously unselected package xdg-user-dirs. 931s Preparing to unpack .../13-xdg-user-dirs_0.18-1_ppc64el.deb ... 931s Unpacking xdg-user-dirs (0.18-1) ... 931s Preparing to unpack .../14-xxd_2%3a9.1.0016-1ubuntu6_ppc64el.deb ... 931s Unpacking xxd (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 931s Preparing to unpack .../15-apparmor_4.0.0-beta3-0ubuntu2_ppc64el.deb ... 932s Unpacking apparmor (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 932s Preparing to unpack .../16-ftp_20230507-2build1_all.deb ... 932s Unpacking ftp (20230507-2build1) over (20230507-2) ... 932s Preparing to unpack .../17-inetutils-telnet_2%3a2.5-3ubuntu3_ppc64el.deb ... 932s Unpacking inetutils-telnet (2:2.5-3ubuntu3) over (2:2.5-3ubuntu1) ... 932s Preparing to unpack .../18-info_7.1-3build1_ppc64el.deb ... 932s Unpacking info (7.1-3build1) over (7.1-3) ... 932s Preparing to unpack .../19-libxmuu1_2%3a1.1.3-3build1_ppc64el.deb ... 932s Unpacking libxmuu1:ppc64el (2:1.1.3-3build1) over (2:1.1.3-3) ... 932s Preparing to unpack .../20-lshw_02.19.git.2021.06.19.996aaad9c7-2build2_ppc64el.deb ... 932s Unpacking lshw (02.19.git.2021.06.19.996aaad9c7-2build2) over (02.19.git.2021.06.19.996aaad9c7-2build1) ... 932s Selecting previously unselected package manpages. 932s Preparing to unpack .../21-manpages_6.05.01-1_all.deb ... 932s Unpacking manpages (6.05.01-1) ... 932s Preparing to unpack .../22-mtr-tiny_0.95-1.1build1_ppc64el.deb ... 932s Unpacking mtr-tiny (0.95-1.1build1) over (0.95-1.1) ... 932s Preparing to unpack .../23-plymouth-theme-ubuntu-text_24.004.60-1ubuntu6_ppc64el.deb ... 932s Unpacking plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 932s Preparing to unpack .../24-plymouth_24.004.60-1ubuntu6_ppc64el.deb ... 932s Unpacking plymouth (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 932s Preparing to unpack .../25-telnet_0.17+2.5-3ubuntu3_all.deb ... 932s Unpacking telnet (0.17+2.5-3ubuntu3) over (0.17+2.5-3ubuntu1) ... 932s Preparing to unpack .../26-usb.ids_2024.03.18-1_all.deb ... 932s Unpacking usb.ids (2024.03.18-1) over (2024.01.30-1) ... 933s Preparing to unpack .../27-xz-utils_5.6.0-0.2_ppc64el.deb ... 933s Unpacking xz-utils (5.6.0-0.2) over (5.4.5-0.3) ... 933s Selecting previously unselected package libllvm18:ppc64el. 933s Preparing to unpack .../28-libllvm18_1%3a18.1.2-1ubuntu2_ppc64el.deb ... 933s Unpacking libllvm18:ppc64el (1:18.1.2-1ubuntu2) ... 933s Selecting previously unselected package libclang-cpp18. 933s Preparing to unpack .../29-libclang-cpp18_1%3a18.1.2-1ubuntu2_ppc64el.deb ... 933s Unpacking libclang-cpp18 (1:18.1.2-1ubuntu2) ... 934s Selecting previously unselected package libbpfcc:ppc64el. 934s Preparing to unpack .../30-libbpfcc_0.29.1+ds-1ubuntu4_ppc64el.deb ... 934s Unpacking libbpfcc:ppc64el (0.29.1+ds-1ubuntu4) ... 934s Selecting previously unselected package python3-bpfcc. 934s Preparing to unpack .../31-python3-bpfcc_0.29.1+ds-1ubuntu4_all.deb ... 934s Unpacking python3-bpfcc (0.29.1+ds-1ubuntu4) ... 934s Selecting previously unselected package ieee-data. 934s Preparing to unpack .../32-ieee-data_20220827.1_all.deb ... 934s Unpacking ieee-data (20220827.1) ... 934s Selecting previously unselected package python3-netaddr. 934s Preparing to unpack .../33-python3-netaddr_0.8.0-2ubuntu1_all.deb ... 934s Unpacking python3-netaddr (0.8.0-2ubuntu1) ... 934s Selecting previously unselected package bpfcc-tools. 934s Preparing to unpack .../34-bpfcc-tools_0.29.1+ds-1ubuntu4_all.deb ... 934s Unpacking bpfcc-tools (0.29.1+ds-1ubuntu4) ... 934s Selecting previously unselected package libclang1-18. 934s Preparing to unpack .../35-libclang1-18_1%3a18.1.2-1ubuntu2_ppc64el.deb ... 934s Unpacking libclang1-18 (1:18.1.2-1ubuntu2) ... 935s Selecting previously unselected package libdw1t64:ppc64el. 935s Preparing to unpack .../36-libdw1t64_0.190-1.1build2_ppc64el.deb ... 935s Unpacking libdw1t64:ppc64el (0.190-1.1build2) ... 935s Selecting previously unselected package bpftrace. 935s Preparing to unpack .../37-bpftrace_0.20.2-1ubuntu1_ppc64el.deb ... 935s Unpacking bpftrace (0.20.2-1ubuntu1) ... 935s Preparing to unpack .../38-cryptsetup-bin_2%3a2.7.0-1ubuntu2_ppc64el.deb ... 935s Unpacking cryptsetup-bin (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 935s Preparing to unpack .../39-dpkg-dev_1.22.6ubuntu5_all.deb ... 935s Unpacking dpkg-dev (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 935s Preparing to unpack .../40-libdpkg-perl_1.22.6ubuntu5_all.deb ... 935s Unpacking libdpkg-perl (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 935s Selecting previously unselected package fonts-dejavu-mono. 935s Preparing to unpack .../41-fonts-dejavu-mono_2.37-8_all.deb ... 935s Unpacking fonts-dejavu-mono (2.37-8) ... 935s Selecting previously unselected package fonts-dejavu-core. 935s Preparing to unpack .../42-fonts-dejavu-core_2.37-8_all.deb ... 935s Unpacking fonts-dejavu-core (2.37-8) ... 935s Selecting previously unselected package fontconfig-config. 935s Preparing to unpack .../43-fontconfig-config_2.15.0-1.1ubuntu1_ppc64el.deb ... 935s Unpacking fontconfig-config (2.15.0-1.1ubuntu1) ... 935s Preparing to unpack .../44-libprotobuf-c1_1.4.1-1ubuntu3_ppc64el.deb ... 935s Unpacking libprotobuf-c1:ppc64el (1.4.1-1ubuntu3) over (1.4.1-1ubuntu2) ... 935s Preparing to unpack .../45-gnupg-l10n_2.4.4-2ubuntu15_all.deb ... 935s Unpacking gnupg-l10n (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 935s Preparing to unpack .../46-libibverbs1_50.0-2build1_ppc64el.deb ... 935s Unpacking libibverbs1:ppc64el (50.0-2build1) over (50.0-2) ... 935s Preparing to unpack .../47-ibverbs-providers_50.0-2build1_ppc64el.deb ... 935s Unpacking ibverbs-providers:ppc64el (50.0-2build1) over (50.0-2) ... 935s Selecting previously unselected package libaio1t64:ppc64el. 935s Preparing to unpack .../48-libaio1t64_0.3.113-6_ppc64el.deb ... 935s Unpacking libaio1t64:ppc64el (0.3.113-6) ... 935s Selecting previously unselected package libatm1t64:ppc64el. 935s Preparing to unpack .../49-libatm1t64_1%3a2.5.1-5.1_ppc64el.deb ... 935s Unpacking libatm1t64:ppc64el (1:2.5.1-5.1) ... 935s Selecting previously unselected package libc-dev-bin. 935s Preparing to unpack .../50-libc-dev-bin_2.39-0ubuntu6_ppc64el.deb ... 935s Unpacking libc-dev-bin (2.39-0ubuntu6) ... 935s Selecting previously unselected package libfontconfig1:ppc64el. 935s Preparing to unpack .../51-libfontconfig1_2.15.0-1.1ubuntu1_ppc64el.deb ... 935s Unpacking libfontconfig1:ppc64el (2.15.0-1.1ubuntu1) ... 935s Selecting previously unselected package libjpeg-turbo8:ppc64el. 935s Preparing to unpack .../52-libjpeg-turbo8_2.1.5-2ubuntu1_ppc64el.deb ... 935s Unpacking libjpeg-turbo8:ppc64el (2.1.5-2ubuntu1) ... 935s Selecting previously unselected package libjpeg8:ppc64el. 935s Preparing to unpack .../53-libjpeg8_8c-2ubuntu11_ppc64el.deb ... 935s Unpacking libjpeg8:ppc64el (8c-2ubuntu11) ... 935s Selecting previously unselected package libdeflate0:ppc64el. 935s Preparing to unpack .../54-libdeflate0_1.19-1_ppc64el.deb ... 935s Unpacking libdeflate0:ppc64el (1.19-1) ... 935s Selecting previously unselected package libjbig0:ppc64el. 935s Preparing to unpack .../55-libjbig0_2.1-6.1ubuntu1_ppc64el.deb ... 935s Unpacking libjbig0:ppc64el (2.1-6.1ubuntu1) ... 935s Selecting previously unselected package liblerc4:ppc64el. 935s Preparing to unpack .../56-liblerc4_4.0.0+ds-4ubuntu1_ppc64el.deb ... 935s Unpacking liblerc4:ppc64el (4.0.0+ds-4ubuntu1) ... 935s Selecting previously unselected package libsharpyuv0:ppc64el. 935s Preparing to unpack .../57-libsharpyuv0_1.3.2-0.4build2_ppc64el.deb ... 935s Unpacking libsharpyuv0:ppc64el (1.3.2-0.4build2) ... 935s Selecting previously unselected package libwebp7:ppc64el. 935s Preparing to unpack .../58-libwebp7_1.3.2-0.4build2_ppc64el.deb ... 935s Unpacking libwebp7:ppc64el (1.3.2-0.4build2) ... 935s Selecting previously unselected package libtiff6:ppc64el. 935s Preparing to unpack .../59-libtiff6_4.5.1+git230720-4ubuntu1_ppc64el.deb ... 935s Unpacking libtiff6:ppc64el (4.5.1+git230720-4ubuntu1) ... 935s Selecting previously unselected package libxpm4:ppc64el. 935s Preparing to unpack .../60-libxpm4_1%3a3.5.17-1build1_ppc64el.deb ... 935s Unpacking libxpm4:ppc64el (1:3.5.17-1build1) ... 935s Selecting previously unselected package libgd3:ppc64el. 935s Preparing to unpack .../61-libgd3_2.3.3-9ubuntu3_ppc64el.deb ... 935s Unpacking libgd3:ppc64el (2.3.3-9ubuntu3) ... 935s Selecting previously unselected package libc-devtools. 935s Preparing to unpack .../62-libc-devtools_2.39-0ubuntu6_ppc64el.deb ... 935s Unpacking libc-devtools (2.39-0ubuntu6) ... 935s Selecting previously unselected package linux-libc-dev:ppc64el. 935s Preparing to unpack .../63-linux-libc-dev_6.8.0-20.20_ppc64el.deb ... 935s Unpacking linux-libc-dev:ppc64el (6.8.0-20.20) ... 936s Selecting previously unselected package libcrypt-dev:ppc64el. 936s Preparing to unpack .../64-libcrypt-dev_1%3a4.4.36-4_ppc64el.deb ... 936s Unpacking libcrypt-dev:ppc64el (1:4.4.36-4) ... 936s Selecting previously unselected package rpcsvc-proto. 936s Preparing to unpack .../65-rpcsvc-proto_1.4.2-0ubuntu6_ppc64el.deb ... 936s Unpacking rpcsvc-proto (1.4.2-0ubuntu6) ... 936s Selecting previously unselected package libc6-dev:ppc64el. 936s Preparing to unpack .../66-libc6-dev_2.39-0ubuntu6_ppc64el.deb ... 936s Unpacking libc6-dev:ppc64el (2.39-0ubuntu6) ... 936s Preparing to unpack .../67-libevent-core-2.1-7_2.1.12-stable-9build1_ppc64el.deb ... 936s Unpacking libevent-core-2.1-7:ppc64el (2.1.12-stable-9build1) over (2.1.12-stable-9) ... 936s Preparing to unpack .../68-libldap-common_2.6.7+dfsg-1~exp1ubuntu6_all.deb ... 936s Unpacking libldap-common (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 936s Selecting previously unselected package libunwind8:ppc64el. 936s Preparing to unpack .../69-libunwind8_1.6.2-3_ppc64el.deb ... 936s Unpacking libunwind8:ppc64el (1.6.2-3) ... 936s Selecting previously unselected package linux-modules-6.8.0-20-generic. 936s Preparing to unpack .../70-linux-modules-6.8.0-20-generic_6.8.0-20.20_ppc64el.deb ... 936s Unpacking linux-modules-6.8.0-20-generic (6.8.0-20.20) ... 936s Selecting previously unselected package linux-image-6.8.0-20-generic. 936s Preparing to unpack .../71-linux-image-6.8.0-20-generic_6.8.0-20.20_ppc64el.deb ... 936s Unpacking linux-image-6.8.0-20-generic (6.8.0-20.20) ... 937s Selecting previously unselected package linux-modules-extra-6.8.0-20-generic. 937s Preparing to unpack .../72-linux-modules-extra-6.8.0-20-generic_6.8.0-20.20_ppc64el.deb ... 937s Unpacking linux-modules-extra-6.8.0-20-generic (6.8.0-20.20) ... 938s Preparing to unpack .../73-linux-generic_6.8.0-20.20+1_ppc64el.deb ... 938s Unpacking linux-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 938s Preparing to unpack .../74-linux-image-generic_6.8.0-20.20+1_ppc64el.deb ... 938s Unpacking linux-image-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 938s Preparing to unpack .../75-linux-virtual_6.8.0-20.20+1_ppc64el.deb ... 938s Unpacking linux-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 938s Preparing to unpack .../76-linux-image-virtual_6.8.0-20.20+1_ppc64el.deb ... 938s Unpacking linux-image-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 938s Preparing to unpack .../77-linux-headers-virtual_6.8.0-20.20+1_ppc64el.deb ... 938s Unpacking linux-headers-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 938s Selecting previously unselected package linux-headers-6.8.0-20. 938s Preparing to unpack .../78-linux-headers-6.8.0-20_6.8.0-20.20_all.deb ... 938s Unpacking linux-headers-6.8.0-20 (6.8.0-20.20) ... 941s Selecting previously unselected package linux-headers-6.8.0-20-generic. 941s Preparing to unpack .../79-linux-headers-6.8.0-20-generic_6.8.0-20.20_ppc64el.deb ... 941s Unpacking linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 942s Preparing to unpack .../80-linux-headers-generic_6.8.0-20.20+1_ppc64el.deb ... 942s Unpacking linux-headers-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 942s Selecting previously unselected package linux-tools-common. 942s Preparing to unpack .../81-linux-tools-common_6.8.0-20.20_all.deb ... 942s Unpacking linux-tools-common (6.8.0-20.20) ... 942s Selecting previously unselected package linux-tools-6.8.0-20. 942s Preparing to unpack .../82-linux-tools-6.8.0-20_6.8.0-20.20_ppc64el.deb ... 942s Unpacking linux-tools-6.8.0-20 (6.8.0-20.20) ... 942s Selecting previously unselected package linux-tools-6.8.0-20-generic. 942s Preparing to unpack .../83-linux-tools-6.8.0-20-generic_6.8.0-20.20_ppc64el.deb ... 942s Unpacking linux-tools-6.8.0-20-generic (6.8.0-20.20) ... 942s Selecting previously unselected package manpages-dev. 942s Preparing to unpack .../84-manpages-dev_6.05.01-1_all.deb ... 942s Unpacking manpages-dev (6.05.01-1) ... 943s Preparing to unpack .../85-python3-distutils_3.12.2-3ubuntu1.1_all.deb ... 943s Unpacking python3-distutils (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 943s Preparing to unpack .../86-python3-lib2to3_3.12.2-3ubuntu1.1_all.deb ... 943s Unpacking python3-lib2to3 (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 943s Preparing to unpack .../87-python3-pyrsistent_0.20.0-1build1_ppc64el.deb ... 943s Unpacking python3-pyrsistent:ppc64el (0.20.0-1build1) over (0.20.0-1) ... 943s Preparing to unpack .../88-python3-typing-extensions_4.10.0-1_all.deb ... 943s Unpacking python3-typing-extensions (4.10.0-1) over (4.9.0-1) ... 943s Selecting previously unselected package ubuntu-kernel-accessories. 943s Preparing to unpack .../89-ubuntu-kernel-accessories_1.536build1_ppc64el.deb ... 943s Unpacking ubuntu-kernel-accessories (1.536build1) ... 943s Preparing to unpack .../90-kpartx_0.9.4-5ubuntu6_ppc64el.deb ... 943s Unpacking kpartx (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 943s Setting up pinentry-curses (1.2.1-3ubuntu4) ... 943s Setting up motd-news-config (13ubuntu8) ... 943s Setting up libtext-iconv-perl:ppc64el (1.7-8build2) ... 943s Setting up libtext-charwidth-perl:ppc64el (0.04-11build2) ... 943s Setting up libsharpyuv0:ppc64el (1.3.2-0.4build2) ... 943s Setting up liburcu8t64:ppc64el (0.14.0-3.1) ... 943s Setting up tcpdump (4.99.4-3ubuntu2) ... 943s Setting up libibverbs1:ppc64el (50.0-2build1) ... 943s Setting up systemd-sysv (255.4-1ubuntu5) ... 943s Setting up ubuntu-kernel-accessories (1.536build1) ... 943s Setting up libapparmor1:ppc64el (4.0.0-beta3-0ubuntu2) ... 943s Setting up libatm1t64:ppc64el (1:2.5.1-5.1) ... 943s Setting up liblerc4:ppc64el (4.0.0+ds-4ubuntu1) ... 943s Setting up libgdbm6t64:ppc64el (1.23-5.1) ... 943s Setting up bsdextrautils (2.39.3-9ubuntu2) ... 943s Setting up libxpm4:ppc64el (1:3.5.17-1build1) ... 943s Setting up libgdbm-compat4t64:ppc64el (1.23-5.1) ... 943s Setting up xdg-user-dirs (0.18-1) ... 943s Setting up ibverbs-providers:ppc64el (50.0-2build1) ... 943s Setting up linux-headers-6.8.0-20 (6.8.0-20.20) ... 943s Setting up libmagic-mgc (1:5.45-3) ... 943s Setting up gawk (1:5.2.1-2build2) ... 943s Setting up manpages (6.05.01-1) ... 943s Setting up libtirpc-common (1.3.4+ds-1.1) ... 943s Setting up libbrotli1:ppc64el (1.1.0-2build1) ... 943s Setting up libsqlite3-0:ppc64el (3.45.1-1ubuntu1) ... 943s Setting up libsasl2-modules:ppc64el (2.1.28+dfsg1-5ubuntu1) ... 943s Setting up libuv1t64:ppc64el (1.48.0-1.1) ... 943s Setting up libmagic1t64:ppc64el (1:5.45-3) ... 943s Setting up rsyslog (8.2312.0-3ubuntu7) ... 943s info: The user `syslog' is already a member of `adm'. 945s Setting up libpsl5t64:ppc64el (0.21.2-1.1) ... 945s Setting up libnghttp2-14:ppc64el (1.59.0-1build1) ... 945s Setting up libdeflate0:ppc64el (1.19-1) ... 945s Setting up linux-libc-dev:ppc64el (6.8.0-20.20) ... 945s Setting up bc (1.07.1-3ubuntu2) ... 945s Setting up libnss-systemd:ppc64el (255.4-1ubuntu5) ... 945s Setting up libparted2t64:ppc64el (3.6-3.1build2) ... 945s Setting up krb5-locales (1.20.1-6ubuntu1) ... 945s Setting up libcom-err2:ppc64el (1.47.0-2.4~exp1ubuntu2) ... 945s Setting up file (1:5.45-3) ... 945s Setting up lshw (02.19.git.2021.06.19.996aaad9c7-2build2) ... 945s Setting up libldap-common (2.6.7+dfsg-1~exp1ubuntu6) ... 945s Setting up libunwind8:ppc64el (1.6.2-3) ... 945s Setting up libprotobuf-c1:ppc64el (1.4.1-1ubuntu3) ... 945s Setting up libjbig0:ppc64el (2.1-6.1ubuntu1) ... 945s Setting up xxd (2:9.1.0016-1ubuntu6) ... 945s Setting up libelf1t64:ppc64el (0.190-1.1build2) ... 945s Setting up libkrb5support0:ppc64el (1.20.1-6ubuntu1) ... 945s Setting up libdw1t64:ppc64el (0.190-1.1build2) ... 945s Setting up linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 945s Setting up eject (2.39.3-9ubuntu2) ... 945s Setting up apparmor (4.0.0-beta3-0ubuntu2) ... 945s Installing new version of config file /etc/apparmor.d/abstractions/authentication ... 945s Installing new version of config file /etc/apparmor.d/abstractions/crypto ... 945s Installing new version of config file /etc/apparmor.d/abstractions/kde-open5 ... 945s Installing new version of config file /etc/apparmor.d/abstractions/openssl ... 945s Installing new version of config file /etc/apparmor.d/code ... 945s Installing new version of config file /etc/apparmor.d/firefox ... 946s Reloading AppArmor profiles 946s Setting up libglib2.0-0t64:ppc64el (2.79.3-3ubuntu5) ... 946s No schema files found: doing nothing. 946s Setting up libglib2.0-data (2.79.3-3ubuntu5) ... 946s Setting up rpcsvc-proto (1.4.2-0ubuntu6) ... 946s Setting up vim-common (2:9.1.0016-1ubuntu6) ... 946s Setting up libqrtr-glib0:ppc64el (1.2.2-1ubuntu3) ... 946s Setting up libslang2:ppc64el (2.3.3-3build1) ... 946s Setting up libnvme1t64 (1.8-3) ... 946s Setting up mtr-tiny (0.95-1.1build1) ... 946s Setting up gnupg-l10n (2.4.4-2ubuntu15) ... 946s Setting up librtmp1:ppc64el (2.4+20151223.gitfa8646d.1-2build6) ... 946s Setting up libdbus-1-3:ppc64el (1.14.10-4ubuntu2) ... 946s Setting up xz-utils (5.6.0-0.2) ... 946s Setting up perl-modules-5.38 (5.38.2-3.2) ... 946s Setting up libproc2-0:ppc64el (2:4.0.4-4ubuntu2) ... 946s Setting up fonts-dejavu-mono (2.37-8) ... 946s Setting up libpng16-16t64:ppc64el (1.6.43-3) ... 946s Setting up systemd-timesyncd (255.4-1ubuntu5) ... 947s Setting up libevent-core-2.1-7:ppc64el (2.1.12-stable-9build1) ... 947s Setting up libss2:ppc64el (1.47.0-2.4~exp1ubuntu2) ... 947s Setting up usb.ids (2024.03.18-1) ... 947s Setting up sudo (1.9.15p5-3ubuntu3) ... 947s Setting up fonts-dejavu-core (2.37-8) ... 947s Setting up dhcpcd-base (1:10.0.6-1ubuntu2) ... 947s Setting up gir1.2-glib-2.0:ppc64el (2.79.3-3ubuntu5) ... 947s Setting up libk5crypto3:ppc64el (1.20.1-6ubuntu1) ... 947s Setting up libjpeg-turbo8:ppc64el (2.1.5-2ubuntu1) ... 947s Setting up logsave (1.47.0-2.4~exp1ubuntu2) ... 947s Setting up libwebp7:ppc64el (1.3.2-0.4build2) ... 947s Setting up libfdisk1:ppc64el (2.39.3-9ubuntu2) ... 947s Setting up libdb5.3t64:ppc64el (5.3.28+dfsg2-6) ... 947s Setting up libaio1t64:ppc64el (0.3.113-6) ... 947s Setting up python-apt-common (2.7.7) ... 947s Setting up mount (2.39.3-9ubuntu2) ... 947s Setting up uuid-runtime (2.39.3-9ubuntu2) ... 948s uuidd.service is a disabled or a static unit not running, not starting it. 948s Setting up libmm-glib0:ppc64el (1.23.4-0ubuntu1) ... 948s Setting up groff-base (1.23.0-3build1) ... 948s Setting up libcrypt-dev:ppc64el (1:4.4.36-4) ... 948s Setting up libplymouth5:ppc64el (24.004.60-1ubuntu6) ... 948s Setting up dbus-session-bus-common (1.14.10-4ubuntu2) ... 948s Setting up procps (2:4.0.4-4ubuntu2) ... 948s Setting up gpgconf (2.4.4-2ubuntu15) ... 948s Setting up libcryptsetup12:ppc64el (2:2.7.0-1ubuntu2) ... 948s Setting up libgirepository-1.0-1:ppc64el (1.79.1-1ubuntu6) ... 948s Setting up libjson-glib-1.0-common (1.8.0-2build1) ... 948s Setting up libkrb5-3:ppc64el (1.20.1-6ubuntu1) ... 948s Setting up libpython3.11-minimal:ppc64el (3.11.8-1build4) ... 948s Setting up libperl5.38t64:ppc64el (5.38.2-3.2) ... 948s Setting up tnftp (20230507-2build1) ... 948s Setting up dbus-system-bus-common (1.14.10-4ubuntu2) ... 948s Setting up libfido2-1:ppc64el (1.14.0-1build1) ... 948s Setting up libc-dev-bin (2.39-0ubuntu6) ... 948s Setting up openssl (3.0.13-0ubuntu2) ... 948s Setting up linux-modules-6.8.0-20-generic (6.8.0-20.20) ... 952s Setting up linux-tools-common (6.8.0-20.20) ... 952s Setting up readline-common (8.2-4) ... 952s Setting up libxml2:ppc64el (2.9.14+dfsg-1.3ubuntu2) ... 952s Setting up libxmuu1:ppc64el (2:1.1.3-3build1) ... 952s Setting up dbus-bin (1.14.10-4ubuntu2) ... 952s Setting up info (7.1-3build1) ... 952s Setting up liblocale-gettext-perl (1.07-6ubuntu4) ... 952s Setting up gpg (2.4.4-2ubuntu15) ... 952s Setting up libgudev-1.0-0:ppc64el (1:238-3ubuntu2) ... 952s Setting up libpolkit-gobject-1-0:ppc64el (124-1ubuntu1) ... 952s Setting up libbpf1:ppc64el (1:1.3.0-2build1) ... 952s Setting up libmbim-glib4:ppc64el (1.31.2-0ubuntu2) ... 952s Setting up rsync (3.2.7-1build1) ... 952s rsync.service is a disabled or a static unit not running, not starting it. 952s Setting up libudisks2-0:ppc64el (2.10.1-6) ... 952s Setting up libkmod2:ppc64el (31+20240202-2ubuntu4) ... 952s Setting up bolt (0.9.6-2build1) ... 953s bolt.service is a disabled or a static unit not running, not starting it. 953s Setting up libllvm18:ppc64el (1:18.1.2-1ubuntu2) ... 953s Setting up gnupg-utils (2.4.4-2ubuntu15) ... 953s Setting up libjpeg8:ppc64el (8c-2ubuntu11) ... 953s Setting up cryptsetup-bin (2:2.7.0-1ubuntu2) ... 953s Setting up python3.11-minimal (3.11.8-1build4) ... 954s Setting up libclang1-18 (1:18.1.2-1ubuntu2) ... 954s Setting up manpages-dev (6.05.01-1) ... 954s Setting up linux-modules-extra-6.8.0-20-generic (6.8.0-20.20) ... 956s Setting up apt-utils (2.7.14) ... 956s Setting up gpg-agent (2.4.4-2ubuntu15) ... 956s Setting up libpython3.12-stdlib:ppc64el (3.12.2-4build3) ... 956s Setting up wget (1.21.4-1ubuntu2) ... 956s Setting up fontconfig-config (2.15.0-1.1ubuntu1) ... 957s Setting up libxmlb2:ppc64el (0.3.15-1build1) ... 957s Setting up libpython3.11-stdlib:ppc64el (3.11.8-1build4) ... 957s Setting up python3.12 (3.12.2-4build3) ... 958s Setting up gpgsm (2.4.4-2ubuntu15) ... 958s Setting up inetutils-telnet (2:2.5-3ubuntu3) ... 958s Setting up libreiserfscore0t64 (1:3.6.27-7.1) ... 958s Setting up parted (3.6-3.1build2) ... 958s Setting up e2fsprogs (1.47.0-2.4~exp1ubuntu2) ... 958s update-initramfs: deferring update (trigger activated) 959s e2scrub_all.service is a disabled or a static unit not running, not starting it. 959s Setting up linux-tools-6.8.0-20 (6.8.0-20.20) ... 959s Setting up linux-headers-generic (6.8.0-20.20+1) ... 959s Setting up dbus-daemon (1.14.10-4ubuntu2) ... 959s Setting up libmbim-proxy (1.31.2-0ubuntu2) ... 959s Setting up vim-tiny (2:9.1.0016-1ubuntu6) ... 959s Setting up kmod (31+20240202-2ubuntu4) ... 959s Setting up libnetplan1:ppc64el (1.0-1) ... 959s Setting up man-db (2.12.0-3build4) ... 959s Updating database of manual pages ... 962s man-db.service is a disabled or a static unit not running, not starting it. 963s Setting up fdisk (2.39.3-9ubuntu2) ... 963s Setting up libjson-glib-1.0-0:ppc64el (1.8.0-2build1) ... 963s Setting up libsasl2-modules-db:ppc64el (2.1.28+dfsg1-5ubuntu1) ... 963s Setting up perl (5.38.2-3.2) ... 963s Setting up libfreetype6:ppc64el (2.13.2+dfsg-1build2) ... 963s Setting up linux-tools-6.8.0-20-generic (6.8.0-20.20) ... 963s Setting up gir1.2-girepository-2.0:ppc64el (1.79.1-1ubuntu6) ... 963s Setting up dbus (1.14.10-4ubuntu2) ... 963s A reboot is required to replace the running dbus-daemon. 963s Please reboot the system when convenient. 963s Setting up shared-mime-info (2.4-1build1) ... 963s Setting up libblockdev-utils3:ppc64el (3.1.0-1build1) ... 963s Setting up libgssapi-krb5-2:ppc64el (1.20.1-6ubuntu1) ... 963s Setting up udev (255.4-1ubuntu5) ... 964s Setting up ftp (20230507-2build1) ... 964s Setting up keyboxd (2.4.4-2ubuntu15) ... 964s Setting up libdpkg-perl (1.22.6ubuntu5) ... 964s Setting up libsasl2-2:ppc64el (2.1.28+dfsg1-5ubuntu1) ... 964s Setting up libssh-4:ppc64el (0.10.6-2build1) ... 964s Setting up libblockdev-nvme3:ppc64el (3.1.0-1build1) ... 964s Setting up libblockdev-fs3:ppc64el (3.1.0-1build1) ... 964s Setting up ieee-data (20220827.1) ... 964s Setting up libtiff6:ppc64el (4.5.1+git230720-4ubuntu1) ... 964s Setting up kpartx (0.9.4-5ubuntu6) ... 964s Setting up libpam-systemd:ppc64el (255.4-1ubuntu5) ... 965s Setting up libpolkit-agent-1-0:ppc64el (124-1ubuntu1) ... 965s Setting up libc6-dev:ppc64el (2.39-0ubuntu6) ... 965s Setting up libgpgme11t64:ppc64el (1.18.0-4.1ubuntu3) ... 965s Setting up libfontconfig1:ppc64el (2.15.0-1.1ubuntu1) ... 965s Setting up netplan-generator (1.0-1) ... 965s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 965s Setting up libclang-cpp18 (1:18.1.2-1ubuntu2) ... 965s Setting up libbpfcc:ppc64el (0.29.1+ds-1ubuntu4) ... 965s Setting up libarchive13t64:ppc64el (3.7.2-1.1ubuntu2) ... 965s Setting up libldap2:ppc64el (2.6.7+dfsg-1~exp1ubuntu6) ... 965s Setting up libpython3-stdlib:ppc64el (3.12.2-0ubuntu1) ... 965s Setting up systemd-resolved (255.4-1ubuntu5) ... 965s Setting up python3.11 (3.11.8-1build4) ... 966s Setting up telnet (0.17+2.5-3ubuntu3) ... 966s Setting up libblockdev-mdraid3:ppc64el (3.1.0-1build1) ... 966s Setting up linux-headers-virtual (6.8.0-20.20+1) ... 966s Setting up libcurl4t64:ppc64el (8.5.0-2ubuntu8) ... 966s Setting up bpftrace (0.20.2-1ubuntu1) ... 966s Setting up bind9-libs:ppc64el (1:9.18.24-0ubuntu3) ... 967s Setting up linux-image-6.8.0-20-generic (6.8.0-20.20) ... 969s I: /boot/vmlinux is now a symlink to vmlinux-6.8.0-20-generic 969s I: /boot/initrd.img is now a symlink to initrd.img-6.8.0-20-generic 969s Setting up libtirpc3t64:ppc64el (1.3.4+ds-1.1) ... 969s Setting up e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) ... 969s Setting up libblockdev-swap3:ppc64el (3.1.0-1build1) ... 969s Setting up plymouth (24.004.60-1ubuntu6) ... 969s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 969s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 976s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 977s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 977s Setting up iproute2 (6.1.0-1ubuntu5) ... 977s Setting up openssh-client (1:9.6p1-3ubuntu11) ... 977s Setting up libgusb2:ppc64el (0.4.8-1build1) ... 977s Setting up btrfs-progs (6.6.3-1.1build1) ... 977s Setting up libblockdev-loop3:ppc64el (3.1.0-1build1) ... 977s Setting up libcurl3t64-gnutls:ppc64el (8.5.0-2ubuntu8) ... 977s Setting up libqmi-glib5:ppc64el (1.35.2-0ubuntu1) ... 977s Setting up python3 (3.12.2-0ubuntu1) ... 978s Setting up libblockdev3:ppc64el (3.1.0-1build1) ... 978s Setting up libjcat1:ppc64el (0.2.0-2build2) ... 978s Setting up multipath-tools (0.9.4-5ubuntu6) ... 979s Setting up dpkg-dev (1.22.6ubuntu5) ... 979s Setting up libblockdev-part3:ppc64el (3.1.0-1build1) ... 979s Setting up dirmngr (2.4.4-2ubuntu15) ... 979s Setting up dbus-user-session (1.14.10-4ubuntu2) ... 979s Setting up plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) ... 979s update-initramfs: deferring update (trigger activated) 979s Setting up python3-cryptography (41.0.7-4build2) ... 979s Setting up python3-gi (3.47.0-3build1) ... 979s Setting up libgd3:ppc64el (2.3.3-9ubuntu3) ... 979s Setting up python3-typing-extensions (4.10.0-1) ... 979s Setting up lsof (4.95.0-1build2) ... 979s Setting up python3-pyrsistent:ppc64el (0.20.0-1build1) ... 980s Setting up python3-netaddr (0.8.0-2ubuntu1) ... 980s Setting up libnsl2:ppc64el (1.3.0-3build2) ... 980s Setting up gnupg (2.4.4-2ubuntu15) ... 980s Setting up python3-netplan (1.0-1) ... 980s Setting up curl (8.5.0-2ubuntu8) ... 980s Setting up libvolume-key1:ppc64el (0.3.12-7build1) ... 980s Setting up linux-image-virtual (6.8.0-20.20+1) ... 980s Setting up bind9-host (1:9.18.24-0ubuntu3) ... 980s Setting up python3-lib2to3 (3.12.2-3ubuntu1.1) ... 980s Setting up python3-bpfcc (0.29.1+ds-1ubuntu4) ... 980s Setting up libc-devtools (2.39-0ubuntu6) ... 980s Setting up python3-pkg-resources (68.1.2-2ubuntu1) ... 981s Setting up python3-distutils (3.12.2-3ubuntu1.1) ... 981s python3.12: can't get files for byte-compilation 981s Setting up openssh-sftp-server (1:9.6p1-3ubuntu11) ... 981s Setting up linux-image-generic (6.8.0-20.20+1) ... 981s Setting up python3-dbus (1.3.2-5build2) ... 981s Setting up python3-setuptools (68.1.2-2ubuntu1) ... 982s Setting up gpg-wks-client (2.4.4-2ubuntu15) ... 982s Setting up openssh-server (1:9.6p1-3ubuntu11) ... 982s Replacing config file /etc/ssh/sshd_config with new version 984s Created symlink /etc/systemd/system/ssh.service.requires/ssh.socket → /usr/lib/systemd/system/ssh.socket. 985s Setting up linux-generic (6.8.0-20.20+1) ... 985s Setting up libblockdev-crypto3:ppc64el (3.1.0-1build1) ... 985s Setting up python3-gdbm:ppc64el (3.12.2-3ubuntu1.1) ... 985s Setting up python3-apt (2.7.7) ... 986s Setting up libfwupd2:ppc64el (1.9.15-2) ... 986s Setting up libqmi-proxy (1.35.2-0ubuntu1) ... 986s Setting up netplan.io (1.0-1) ... 986s Setting up linux-virtual (6.8.0-20.20+1) ... 986s Setting up grub-common (2.12-1ubuntu5) ... 986s Setting up bpfcc-tools (0.29.1+ds-1ubuntu4) ... 986s Setting up bind9-dnsutils (1:9.18.24-0ubuntu3) ... 986s Setting up ubuntu-pro-client (31.2.2) ... 988s Setting up fwupd (1.9.15-2) ... 988s fwupd-offline-update.service is a disabled or a static unit not running, not starting it. 988s fwupd-refresh.service is a disabled or a static unit not running, not starting it. 989s Setting up ubuntu-pro-client-l10n (31.2.2) ... 989s Setting up udisks2 (2.10.1-6) ... 989s Setting up grub2-common (2.12-1ubuntu5) ... 989s Setting up grub-ieee1275-bin (2.12-1ubuntu5) ... 989s Setting up grub-ieee1275 (2.12-1ubuntu5) ... 990s Installing for powerpc-ieee1275 platform. 990s Installation finished. No error reported. 990s Sourcing file `/etc/default/grub' 990s Sourcing file `/etc/default/grub.d/50-cloudimg-settings.cfg' 990s Generating grub configuration file ... 990s Found linux image: /boot/vmlinux-6.8.0-20-generic 990s Found linux image: /boot/vmlinux-6.8.0-11-generic 990s Found initrd image: /boot/initrd.img-6.8.0-11-generic 990s Warning: os-prober will not be executed to detect other bootable partitions. 990s Systems on them will not be added to the GRUB boot configuration. 990s Check GRUB_DISABLE_OS_PROBER documentation entry. 990s Adding boot menu entry for UEFI Firmware Settings ... 990s done 990s Processing triggers for libc-bin (2.39-0ubuntu6) ... 991s Processing triggers for ufw (0.36.2-5) ... 991s Processing triggers for systemd (255.4-1ubuntu5) ... 991s Processing triggers for debianutils (5.17) ... 991s Processing triggers for install-info (7.1-3build1) ... 991s Processing triggers for initramfs-tools (0.142ubuntu23) ... 991s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 991s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 997s Processing triggers for linux-image-6.8.0-20-generic (6.8.0-20.20) ... 997s /etc/kernel/postinst.d/initramfs-tools: 997s update-initramfs: Generating /boot/initrd.img-6.8.0-20-generic 997s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 1003s /etc/kernel/postinst.d/zz-update-grub: 1003s Sourcing file `/etc/default/grub' 1003s Sourcing file `/etc/default/grub.d/50-cloudimg-settings.cfg' 1003s Generating grub configuration file ... 1003s Found linux image: /boot/vmlinux-6.8.0-20-generic 1003s Found initrd image: /boot/initrd.img-6.8.0-20-generic 1004s Found linux image: /boot/vmlinux-6.8.0-11-generic 1004s Found initrd image: /boot/initrd.img-6.8.0-11-generic 1004s Warning: os-prober will not be executed to detect other bootable partitions. 1004s Systems on them will not be added to the GRUB boot configuration. 1004s Check GRUB_DISABLE_OS_PROBER documentation entry. 1004s Adding boot menu entry for UEFI Firmware Settings ... 1004s done 1005s Reading package lists... 1005s Building dependency tree... 1005s Reading state information... 1005s The following packages will be REMOVED: 1005s libaio1* libnetplan0* python3-distutils* python3-lib2to3* 1006s 0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded. 1006s After this operation, 1613 kB disk space will be freed. 1006s (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 ... 112169 files and directories currently installed.) 1006s Removing libaio1:ppc64el (0.3.113-5) ... 1006s Removing libnetplan0:ppc64el (0.107.1-3) ... 1006s Removing python3-distutils (3.12.2-3ubuntu1.1) ... 1006s Removing python3-lib2to3 (3.12.2-3ubuntu1.1) ... 1006s Processing triggers for libc-bin (2.39-0ubuntu6) ... 1006s autopkgtest [04:45:13]: rebooting testbed after setup commands that affected boot 1176s autopkgtest-virt-ssh: WARNING: ssh connection failed. Retrying in 3 seconds... 1198s Reading package lists... 1198s Building dependency tree... 1198s Reading state information... 1198s Starting pkgProblemResolver with broken count: 0 1198s Starting 2 pkgProblemResolver with broken count: 0 1198s Done 1198s The following additional packages will be installed: 1198s build-essential cpp cpp-13 cpp-13-powerpc64le-linux-gnu 1198s cpp-powerpc64le-linux-gnu dctrl-tools fontconfig fonts-glyphicons-halflings 1198s fonts-mathjax g++ g++-13 g++-13-powerpc64le-linux-gnu 1198s g++-powerpc64le-linux-gnu gcc gcc-13 gcc-13-powerpc64le-linux-gnu 1198s gcc-powerpc64le-linux-gnu gfortran gfortran-13 1198s gfortran-13-powerpc64le-linux-gnu gfortran-powerpc64le-linux-gnu 1198s icu-devtools libasan8 libatomic1 libblas-dev libblas3 libbz2-dev libcairo2 1198s libcc1-0 libdatrie1 libgcc-13-dev libgfortran-13-dev libgfortran5 libgomp1 1198s libgraphite2-3 libharfbuzz0b libice6 libicu-dev libisl23 libitm1 libjpeg-dev 1198s libjpeg-turbo8-dev libjpeg8-dev libjs-bootstrap libjs-highlight.js 1199s libjs-jquery libjs-jquery-datatables libjs-mathjax liblapack-dev liblapack3 1199s liblsan0 liblzma-dev libmpc3 libncurses-dev libpango-1.0-0 1199s libpangocairo-1.0-0 libpangoft2-1.0-0 libpaper-utils libpaper1 libpcre2-16-0 1199s libpcre2-32-0 libpcre2-dev libpcre2-posix3 libpixman-1-0 libpkgconf3 1199s libpng-dev libquadmath0 libreadline-dev libsm6 libstdc++-13-dev libtcl8.6 1199s libthai-data libthai0 libtk8.6 libtsan2 libubsan1 libxcb-render0 libxcb-shm0 1199s libxft2 libxrender1 libxss1 libxt6t64 node-normalize.css pkg-config 1199s pkg-r-autopkgtest pkgconf pkgconf-bin r-base-core r-base-dev 1199s r-cran-base64enc r-cran-cli r-cran-colorspace r-cran-commonmark 1199s r-cran-evaluate r-cran-fansi r-cran-farver r-cran-ggplot2 r-cran-glue 1199s r-cran-gtable r-cran-highr r-cran-isoband r-cran-knitr r-cran-labeling 1199s r-cran-lattice r-cran-lifecycle r-cran-magrittr r-cran-markdown r-cran-mass 1199s r-cran-matrix r-cran-matrixstats r-cran-mgcv r-cran-munsell r-cran-nlme 1199s r-cran-pillar r-cran-pkgconfig r-cran-r6 r-cran-rcolorbrewer r-cran-rlang 1199s r-cran-scales r-cran-tibble r-cran-utf8 r-cran-vctrs r-cran-viridislite 1199s r-cran-withr r-cran-xfun r-cran-yaml unzip x11-common xdg-utils zip 1199s zlib1g-dev 1199s Suggested packages: 1199s cpp-doc gcc-13-locales cpp-13-doc debtags gcc-13-doc gcc-multilib autoconf 1199s automake libtool flex bison gdb gcc-doc gdb-powerpc64le-linux-gnu 1199s gfortran-doc gfortran-13-doc libcoarrays-dev liblapack-doc icu-doc 1199s fonts-mathjax-extras fonts-stix libjs-mathjax-doc liblzma-doc ncurses-doc 1199s readline-doc libstdc++-13-doc tcl8.6 tk8.6 libjs-html5shiv elpa-ess 1199s r-doc-info | r-doc-pdf r-mathlib r-base-html texlive-base texlive-latex-base 1199s texlive-plain-generic texlive-fonts-recommended texlive-fonts-extra 1199s texlive-extra-utils texlive-latex-recommended texlive-latex-extra texinfo 1199s r-cran-kernsmooth r-cran-kernlab r-cran-mvtnorm r-cran-vcd r-cran-shiny 1199s r-cran-shinyjs r-cran-dplyr r-cran-png r-cran-jpeg r-cran-rmarkdown 1199s r-cran-viridis r-cran-covr r-cran-magick r-cran-sf r-cran-bit64 r-cran-dbi 1199s r-cran-formattable r-cran-nanotime r-cran-palmerpenguins r-cran-stringi 1199s r-cran-survival r-cran-units r-cran-vdiffr r-cran-testthat r-cran-bench 1199s r-cran-blob r-cran-brio r-cran-callr r-cran-crayon r-cran-here r-cran-hms 1199s r-cran-htmltools r-cran-pkgbuild r-cran-pkgload r-cran-purrr r-cran-tidyr 1199s Recommended packages: 1199s bzip2-doc javascript-common libpng-tools r-recommended r-doc-html 1199s r-cran-callr r-cran-covr r-cran-crayon r-cran-digest r-cran-htmltools 1199s r-cran-htmlwidgets r-cran-mockery r-cran-processx r-cran-ps r-cran-rmarkdown 1199s r-cran-rprojroot r-cran-rstudioapi r-cran-testthat r-cran-whoami r-cran-curl 1199s r-cran-xml2 r-cran-unitizer r-cran-dplyr r-cran-hexbin r-cran-hmisc 1199s r-cran-mapproj r-cran-maps r-cran-multcomp r-cran-profvis r-cran-quantreg 1199s r-cran-ragg r-cran-rpart r-cran-sf r-cran-svglite r-cran-vdiffr r-cran-dbi 1199s r-cran-rsqlite r-cran-waldo r-cran-testit r-cran-bslib r-cran-codetools 1199s r-cran-formatr r-cran-gridsvg r-cran-jpeg r-cran-magick r-cran-png 1199s r-cran-reticulate r-cran-rgl r-cran-sass r-cran-tikzdevice r-cran-tinytex 1199s r-cran-webshot node-highlight.js r-cran-lintr r-cran-tidyverse r-cran-rcurl 1199s r-cran-r.devices r-cran-r.rsp r-cran-lubridate r-cran-fs r-cran-usethis 1199s r-cran-bit64 r-cran-dichromat r-cran-hms r-cran-stringi r-cran-data.table 1199s r-cran-mockr r-cran-formattable r-cran-generics r-cran-pkgdown 1199s r-cran-zeallot r-cran-mime r-cran-remotes r-cran-renv r-cran-jsonlite 1199s r-cran-runit libfile-mimeinfo-perl libnet-dbus-perl libx11-protocol-perl 1199s x11-utils x11-xserver-utils 1199s The following NEW packages will be installed: 1199s autopkgtest-satdep build-essential cpp cpp-13 cpp-13-powerpc64le-linux-gnu 1199s cpp-powerpc64le-linux-gnu dctrl-tools fontconfig fonts-glyphicons-halflings 1199s fonts-mathjax g++ g++-13 g++-13-powerpc64le-linux-gnu 1199s g++-powerpc64le-linux-gnu gcc gcc-13 gcc-13-powerpc64le-linux-gnu 1199s gcc-powerpc64le-linux-gnu gfortran gfortran-13 1199s gfortran-13-powerpc64le-linux-gnu gfortran-powerpc64le-linux-gnu 1199s icu-devtools libasan8 libatomic1 libblas-dev libblas3 libbz2-dev libcairo2 1199s libcc1-0 libdatrie1 libgcc-13-dev libgfortran-13-dev libgfortran5 libgomp1 1199s libgraphite2-3 libharfbuzz0b libice6 libicu-dev libisl23 libitm1 libjpeg-dev 1199s libjpeg-turbo8-dev libjpeg8-dev libjs-bootstrap libjs-highlight.js 1199s libjs-jquery libjs-jquery-datatables libjs-mathjax liblapack-dev liblapack3 1199s liblsan0 liblzma-dev libmpc3 libncurses-dev libpango-1.0-0 1199s libpangocairo-1.0-0 libpangoft2-1.0-0 libpaper-utils libpaper1 libpcre2-16-0 1199s libpcre2-32-0 libpcre2-dev libpcre2-posix3 libpixman-1-0 libpkgconf3 1199s libpng-dev libquadmath0 libreadline-dev libsm6 libstdc++-13-dev libtcl8.6 1199s libthai-data libthai0 libtk8.6 libtsan2 libubsan1 libxcb-render0 libxcb-shm0 1199s libxft2 libxrender1 libxss1 libxt6t64 node-normalize.css pkg-config 1199s pkg-r-autopkgtest pkgconf pkgconf-bin r-base-core r-base-dev 1199s r-cran-base64enc r-cran-cli r-cran-colorspace r-cran-commonmark 1199s r-cran-evaluate r-cran-fansi r-cran-farver r-cran-ggplot2 r-cran-glue 1199s r-cran-gtable r-cran-highr r-cran-isoband r-cran-knitr r-cran-labeling 1199s r-cran-lattice r-cran-lifecycle r-cran-magrittr r-cran-markdown r-cran-mass 1199s r-cran-matrix r-cran-matrixstats r-cran-mgcv r-cran-munsell r-cran-nlme 1199s r-cran-pillar r-cran-pkgconfig r-cran-r6 r-cran-rcolorbrewer r-cran-rlang 1199s r-cran-scales r-cran-tibble r-cran-utf8 r-cran-vctrs r-cran-viridislite 1199s r-cran-withr r-cran-xfun r-cran-yaml unzip x11-common xdg-utils zip 1199s zlib1g-dev 1199s 0 upgraded, 132 newly installed, 0 to remove and 0 not upgraded. 1199s Need to get 170 MB/170 MB of archives. 1199s After this operation, 538 MB of additional disk space will be used. 1199s Get:1 /tmp/autopkgtest.5aLxeV/2-autopkgtest-satdep.deb autopkgtest-satdep ppc64el 0 [756 B] 1199s Get:2 http://ftpmaster.internal/ubuntu noble/main ppc64el libisl23 ppc64el 0.26-3 [864 kB] 1199s Get:3 http://ftpmaster.internal/ubuntu noble/main ppc64el libmpc3 ppc64el 1.3.1-1 [61.2 kB] 1199s Get:4 http://ftpmaster.internal/ubuntu noble/main ppc64el cpp-13-powerpc64le-linux-gnu ppc64el 13.2.0-21ubuntu1 [10.7 MB] 1200s Get:5 http://ftpmaster.internal/ubuntu noble/main ppc64el cpp-13 ppc64el 13.2.0-21ubuntu1 [1034 B] 1200s Get:6 http://ftpmaster.internal/ubuntu noble/main ppc64el cpp-powerpc64le-linux-gnu ppc64el 4:13.2.0-7ubuntu1 [5330 B] 1200s Get:7 http://ftpmaster.internal/ubuntu noble/main ppc64el cpp ppc64el 4:13.2.0-7ubuntu1 [22.5 kB] 1200s Get:8 http://ftpmaster.internal/ubuntu noble/main ppc64el libcc1-0 ppc64el 14-20240315-1ubuntu1 [48.1 kB] 1200s Get:9 http://ftpmaster.internal/ubuntu noble/main ppc64el libgomp1 ppc64el 14-20240315-1ubuntu1 [161 kB] 1200s Get:10 http://ftpmaster.internal/ubuntu noble/main ppc64el libitm1 ppc64el 14-20240315-1ubuntu1 [32.2 kB] 1200s Get:11 http://ftpmaster.internal/ubuntu noble/main ppc64el libatomic1 ppc64el 14-20240315-1ubuntu1 [10.7 kB] 1200s Get:12 http://ftpmaster.internal/ubuntu noble/main ppc64el libasan8 ppc64el 14-20240315-1ubuntu1 [2973 kB] 1200s Get:13 http://ftpmaster.internal/ubuntu noble/main ppc64el liblsan0 ppc64el 14-20240315-1ubuntu1 [1325 kB] 1200s Get:14 http://ftpmaster.internal/ubuntu noble/main ppc64el libtsan2 ppc64el 14-20240315-1ubuntu1 [2702 kB] 1200s Get:15 http://ftpmaster.internal/ubuntu noble/main ppc64el libubsan1 ppc64el 14-20240315-1ubuntu1 [1193 kB] 1200s Get:16 http://ftpmaster.internal/ubuntu noble/main ppc64el libquadmath0 ppc64el 14-20240315-1ubuntu1 [158 kB] 1200s Get:17 http://ftpmaster.internal/ubuntu noble/main ppc64el libgcc-13-dev ppc64el 13.2.0-21ubuntu1 [1579 kB] 1200s Get:18 http://ftpmaster.internal/ubuntu noble/main ppc64el gcc-13-powerpc64le-linux-gnu ppc64el 13.2.0-21ubuntu1 [20.6 MB] 1200s Get:19 http://ftpmaster.internal/ubuntu noble/main ppc64el gcc-13 ppc64el 13.2.0-21ubuntu1 [479 kB] 1200s Get:20 http://ftpmaster.internal/ubuntu noble/main ppc64el gcc-powerpc64le-linux-gnu ppc64el 4:13.2.0-7ubuntu1 [1224 B] 1200s Get:21 http://ftpmaster.internal/ubuntu noble/main ppc64el gcc ppc64el 4:13.2.0-7ubuntu1 [5022 B] 1200s Get:22 http://ftpmaster.internal/ubuntu noble/main ppc64el libstdc++-13-dev ppc64el 13.2.0-21ubuntu1 [2510 kB] 1200s Get:23 http://ftpmaster.internal/ubuntu noble/main ppc64el g++-13-powerpc64le-linux-gnu ppc64el 13.2.0-21ubuntu1 [12.1 MB] 1201s Get:24 http://ftpmaster.internal/ubuntu noble/main ppc64el g++-13 ppc64el 13.2.0-21ubuntu1 [14.5 kB] 1201s Get:25 http://ftpmaster.internal/ubuntu noble/main ppc64el g++-powerpc64le-linux-gnu ppc64el 4:13.2.0-7ubuntu1 [968 B] 1201s Get:26 http://ftpmaster.internal/ubuntu noble/main ppc64el g++ ppc64el 4:13.2.0-7ubuntu1 [1086 B] 1201s Get:27 http://ftpmaster.internal/ubuntu noble/main ppc64el build-essential ppc64el 12.10ubuntu1 [4936 B] 1201s Get:28 http://ftpmaster.internal/ubuntu noble/main ppc64el dctrl-tools ppc64el 2.24-3build2 [70.6 kB] 1201s Get:29 http://ftpmaster.internal/ubuntu noble/main ppc64el fontconfig ppc64el 2.15.0-1.1ubuntu1 [192 kB] 1201s Get:30 http://ftpmaster.internal/ubuntu noble/universe ppc64el fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 1201s Get:31 http://ftpmaster.internal/ubuntu noble/main ppc64el fonts-mathjax all 2.7.9+dfsg-1 [2208 kB] 1201s Get:32 http://ftpmaster.internal/ubuntu noble/main ppc64el libgfortran5 ppc64el 14-20240315-1ubuntu1 [574 kB] 1201s Get:33 http://ftpmaster.internal/ubuntu noble/main ppc64el libgfortran-13-dev ppc64el 13.2.0-21ubuntu1 [603 kB] 1201s Get:34 http://ftpmaster.internal/ubuntu noble/main ppc64el gfortran-13-powerpc64le-linux-gnu ppc64el 13.2.0-21ubuntu1 [11.2 MB] 1201s Get:35 http://ftpmaster.internal/ubuntu noble/main ppc64el gfortran-13 ppc64el 13.2.0-21ubuntu1 [10.9 kB] 1201s Get:36 http://ftpmaster.internal/ubuntu noble/main ppc64el gfortran-powerpc64le-linux-gnu ppc64el 4:13.2.0-7ubuntu1 [1030 B] 1201s Get:37 http://ftpmaster.internal/ubuntu noble/main ppc64el gfortran ppc64el 4:13.2.0-7ubuntu1 [1170 B] 1201s Get:38 http://ftpmaster.internal/ubuntu noble/main ppc64el icu-devtools ppc64el 74.2-1ubuntu1 [246 kB] 1201s Get:39 http://ftpmaster.internal/ubuntu noble/main ppc64el libblas3 ppc64el 3.12.0-3 [227 kB] 1201s Get:40 http://ftpmaster.internal/ubuntu noble/main ppc64el libblas-dev ppc64el 3.12.0-3 [301 kB] 1201s Get:41 http://ftpmaster.internal/ubuntu noble/main ppc64el libbz2-dev ppc64el 1.0.8-5ubuntu1 [51.2 kB] 1201s Get:42 http://ftpmaster.internal/ubuntu noble/main ppc64el libpixman-1-0 ppc64el 0.42.2-1 [300 kB] 1201s Get:43 http://ftpmaster.internal/ubuntu noble/main ppc64el libxcb-render0 ppc64el 1.15-1 [17.2 kB] 1201s Get:44 http://ftpmaster.internal/ubuntu noble/main ppc64el libxcb-shm0 ppc64el 1.15-1 [5896 B] 1201s Get:45 http://ftpmaster.internal/ubuntu noble/main ppc64el libxrender1 ppc64el 1:0.9.10-1.1 [23.3 kB] 1201s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libcairo2 ppc64el 1.18.0-1ubuntu1 [751 kB] 1201s Get:47 http://ftpmaster.internal/ubuntu noble/main ppc64el libdatrie1 ppc64el 0.2.13-3 [25.1 kB] 1201s Get:48 http://ftpmaster.internal/ubuntu noble/main ppc64el libgraphite2-3 ppc64el 1.3.14-2 [105 kB] 1201s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libharfbuzz0b ppc64el 8.3.0-2build1 [580 kB] 1201s Get:50 http://ftpmaster.internal/ubuntu noble/main ppc64el x11-common all 1:7.7+23ubuntu2 [23.4 kB] 1201s Get:51 http://ftpmaster.internal/ubuntu noble/main ppc64el libice6 ppc64el 2:1.0.10-1build2 [49.3 kB] 1201s Get:52 http://ftpmaster.internal/ubuntu noble/main ppc64el libicu-dev ppc64el 74.2-1ubuntu1 [12.5 MB] 1202s Get:53 http://ftpmaster.internal/ubuntu noble/main ppc64el libjpeg-turbo8-dev ppc64el 2.1.5-2ubuntu1 [357 kB] 1202s Get:54 http://ftpmaster.internal/ubuntu noble/main ppc64el libjpeg8-dev ppc64el 8c-2ubuntu11 [1484 B] 1202s Get:55 http://ftpmaster.internal/ubuntu noble/main ppc64el libjpeg-dev ppc64el 8c-2ubuntu11 [1486 B] 1202s Get:56 http://ftpmaster.internal/ubuntu noble/universe ppc64el libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 1202s Get:57 http://ftpmaster.internal/ubuntu noble/universe ppc64el libjs-highlight.js all 9.18.5+dfsg1-2 [385 kB] 1202s Get:58 http://ftpmaster.internal/ubuntu noble/main ppc64el libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 1202s Get:59 http://ftpmaster.internal/ubuntu noble/universe ppc64el libjs-jquery-datatables all 1.11.5+dfsg-2 [146 kB] 1202s Get:60 http://ftpmaster.internal/ubuntu noble/main ppc64el liblapack3 ppc64el 3.12.0-3 [2804 kB] 1202s Get:61 http://ftpmaster.internal/ubuntu noble/main ppc64el liblapack-dev ppc64el 3.12.0-3 [6100 kB] 1202s Get:62 http://ftpmaster.internal/ubuntu noble/main ppc64el libncurses-dev ppc64el 6.4+20240113-1ubuntu1 [485 kB] 1202s Get:63 http://ftpmaster.internal/ubuntu noble/main ppc64el libthai-data all 0.1.29-2 [158 kB] 1202s Get:64 http://ftpmaster.internal/ubuntu noble/main ppc64el libthai0 ppc64el 0.1.29-2 [21.4 kB] 1202s Get:65 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpango-1.0-0 ppc64el 1.52.1+ds-1 [271 kB] 1202s Get:66 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpangoft2-1.0-0 ppc64el 1.52.1+ds-1 [50.5 kB] 1202s Get:67 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpangocairo-1.0-0 ppc64el 1.52.1+ds-1 [31.1 kB] 1202s Get:68 http://ftpmaster.internal/ubuntu noble/main ppc64el libpaper1 ppc64el 1.1.29 [13.5 kB] 1202s Get:69 http://ftpmaster.internal/ubuntu noble/main ppc64el libpaper-utils ppc64el 1.1.29 [8710 B] 1202s Get:70 http://ftpmaster.internal/ubuntu noble/main ppc64el libpcre2-16-0 ppc64el 10.42-4ubuntu1 [245 kB] 1202s Get:71 http://ftpmaster.internal/ubuntu noble/main ppc64el libpcre2-32-0 ppc64el 10.42-4ubuntu1 [228 kB] 1202s Get:72 http://ftpmaster.internal/ubuntu noble/main ppc64el libpcre2-posix3 ppc64el 10.42-4ubuntu1 [7016 B] 1202s Get:73 http://ftpmaster.internal/ubuntu noble/main ppc64el libpcre2-dev ppc64el 10.42-4ubuntu1 [794 kB] 1202s Get:74 http://ftpmaster.internal/ubuntu noble/main ppc64el libpkgconf3 ppc64el 1.8.1-2 [36.9 kB] 1202s Get:75 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el zlib1g-dev ppc64el 1:1.3.dfsg-3.1ubuntu1 [902 kB] 1202s Get:76 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libpng-dev ppc64el 1.6.43-3 [327 kB] 1202s Get:77 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libreadline-dev ppc64el 8.2-4 [230 kB] 1202s Get:78 http://ftpmaster.internal/ubuntu noble/main ppc64el libsm6 ppc64el 2:1.2.3-1build2 [18.5 kB] 1202s Get:79 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libtcl8.6 ppc64el 8.6.14+dfsg-1 [1204 kB] 1202s Get:80 http://ftpmaster.internal/ubuntu noble/main ppc64el libxft2 ppc64el 2.3.6-1 [59.8 kB] 1202s Get:81 http://ftpmaster.internal/ubuntu noble/main ppc64el libxss1 ppc64el 1:1.2.3-1build2 [8982 B] 1202s Get:82 http://ftpmaster.internal/ubuntu noble/main ppc64el libtk8.6 ppc64el 8.6.14-1 [944 kB] 1202s Get:83 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el libxt6t64 ppc64el 1:1.2.1-1.2 [204 kB] 1202s Get:84 http://ftpmaster.internal/ubuntu noble/universe ppc64el node-normalize.css all 8.0.1-5 [10.8 kB] 1202s Get:85 http://ftpmaster.internal/ubuntu noble/main ppc64el pkgconf-bin ppc64el 1.8.1-2 [22.0 kB] 1202s Get:86 http://ftpmaster.internal/ubuntu noble/main ppc64el pkgconf ppc64el 1.8.1-2 [16.7 kB] 1202s Get:87 http://ftpmaster.internal/ubuntu noble/main ppc64el pkg-config ppc64el 1.8.1-2 [7170 B] 1202s Get:88 http://ftpmaster.internal/ubuntu noble/main ppc64el zip ppc64el 3.0-13 [192 kB] 1202s Get:89 http://ftpmaster.internal/ubuntu noble/main ppc64el unzip ppc64el 6.0-28ubuntu3 [192 kB] 1202s Get:90 http://ftpmaster.internal/ubuntu noble/main ppc64el xdg-utils all 1.1.3-4.1ubuntu3 [62.0 kB] 1202s Get:91 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el r-base-core ppc64el 4.3.3-2build1 [27.4 MB] 1203s Get:92 http://ftpmaster.internal/ubuntu noble-proposed/main ppc64el liblzma-dev ppc64el 5.6.0-0.2 [208 kB] 1203s Get:93 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el r-base-dev all 4.3.3-2build1 [4334 B] 1203s Get:94 http://ftpmaster.internal/ubuntu noble/universe ppc64el pkg-r-autopkgtest all 20231212ubuntu1 [6448 B] 1203s Get:95 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-base64enc ppc64el 0.1-3-3 [28.1 kB] 1203s Get:96 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-cli ppc64el 3.6.2-1 [1405 kB] 1203s Get:97 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-colorspace ppc64el 2.1-0+dfsg-1 [1542 kB] 1203s Get:98 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-commonmark ppc64el 1.9.1-1 [142 kB] 1203s Get:99 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-evaluate all 0.23-1 [90.2 kB] 1203s Get:100 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-fansi ppc64el 1.0.5-1 [627 kB] 1203s Get:101 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-farver ppc64el 2.1.1-1 [1365 kB] 1203s Get:102 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-glue ppc64el 1.7.0-1 [155 kB] 1203s Get:103 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-rlang ppc64el 1.1.3-1 [1696 kB] 1204s Get:104 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-lifecycle all 1.0.4+dfsg-1 [110 kB] 1204s Get:105 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-gtable all 0.3.4+dfsg-1 [191 kB] 1204s Get:106 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-isoband ppc64el 0.2.7-1 [1486 kB] 1204s Get:107 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-mass ppc64el 7.3-60.0.1-1 [1126 kB] 1204s Get:108 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-lattice ppc64el 0.22-5-1 [1343 kB] 1204s Get:109 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-nlme ppc64el 3.1.164-1 [2281 kB] 1204s Get:110 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-matrix ppc64el 1.6-5-1 [4057 kB] 1204s Get:111 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-mgcv ppc64el 1.9-1-1 [3393 kB] 1204s Get:112 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-labeling all 0.4.3-1 [62.1 kB] 1204s Get:113 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-munsell all 0.5.0-2build1 [208 kB] 1204s Get:114 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-r6 all 2.5.1-1 [99.0 kB] 1204s Get:115 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-rcolorbrewer all 1.1-3-1build1 [55.4 kB] 1204s Get:116 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-viridislite all 0.4.2-2 [1088 kB] 1205s Get:117 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-scales all 1.3.0-1 [603 kB] 1205s Get:118 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-magrittr ppc64el 2.0.3-1 [154 kB] 1205s Get:119 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-utf8 ppc64el 1.2.4-1 [148 kB] 1205s Get:120 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-vctrs ppc64el 0.6.5-1 [1399 kB] 1205s Get:121 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-pillar all 1.9.0+dfsg-1 [464 kB] 1205s Get:122 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-pkgconfig all 2.0.3-2build1 [19.7 kB] 1205s Get:123 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-tibble ppc64el 3.2.1+dfsg-2 [415 kB] 1205s Get:124 http://ftpmaster.internal/ubuntu noble-proposed/universe ppc64el r-cran-withr all 3.0.0+dfsg-1 [228 kB] 1205s Get:125 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-ggplot2 all 3.4.4+dfsg-1 [3411 kB] 1205s Get:126 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-xfun ppc64el 0.41+dfsg-1 [415 kB] 1205s Get:127 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-highr all 0.10+dfsg-1 [38.3 kB] 1205s Get:128 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-yaml ppc64el 2.3.8-1 [139 kB] 1205s Get:129 http://ftpmaster.internal/ubuntu noble/main ppc64el libjs-mathjax all 2.7.9+dfsg-1 [5665 kB] 1205s Get:130 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-knitr all 1.45+dfsg-1 [917 kB] 1205s Get:131 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-markdown all 1.12+dfsg-1 [179 kB] 1205s Get:132 http://ftpmaster.internal/ubuntu noble/universe ppc64el r-cran-matrixstats ppc64el 1.2.0-1 [530 kB] 1206s Preconfiguring packages ... 1206s Fetched 170 MB in 7s (25.4 MB/s) 1206s Selecting previously unselected package libisl23:ppc64el. 1206s (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 ... 111945 files and directories currently installed.) 1206s Preparing to unpack .../000-libisl23_0.26-3_ppc64el.deb ... 1206s Unpacking libisl23:ppc64el (0.26-3) ... 1206s Selecting previously unselected package libmpc3:ppc64el. 1206s Preparing to unpack .../001-libmpc3_1.3.1-1_ppc64el.deb ... 1206s Unpacking libmpc3:ppc64el (1.3.1-1) ... 1206s Selecting previously unselected package cpp-13-powerpc64le-linux-gnu. 1206s Preparing to unpack .../002-cpp-13-powerpc64le-linux-gnu_13.2.0-21ubuntu1_ppc64el.deb ... 1206s Unpacking cpp-13-powerpc64le-linux-gnu (13.2.0-21ubuntu1) ... 1206s Selecting previously unselected package cpp-13. 1206s Preparing to unpack .../003-cpp-13_13.2.0-21ubuntu1_ppc64el.deb ... 1206s Unpacking cpp-13 (13.2.0-21ubuntu1) ... 1206s Selecting previously unselected package cpp-powerpc64le-linux-gnu. 1206s Preparing to unpack .../004-cpp-powerpc64le-linux-gnu_4%3a13.2.0-7ubuntu1_ppc64el.deb ... 1206s Unpacking cpp-powerpc64le-linux-gnu (4:13.2.0-7ubuntu1) ... 1206s Selecting previously unselected package cpp. 1206s Preparing to unpack .../005-cpp_4%3a13.2.0-7ubuntu1_ppc64el.deb ... 1206s Unpacking cpp (4:13.2.0-7ubuntu1) ... 1206s Selecting previously unselected package libcc1-0:ppc64el. 1206s Preparing to unpack .../006-libcc1-0_14-20240315-1ubuntu1_ppc64el.deb ... 1206s Unpacking libcc1-0:ppc64el (14-20240315-1ubuntu1) ... 1206s Selecting previously unselected package libgomp1:ppc64el. 1206s Preparing to unpack .../007-libgomp1_14-20240315-1ubuntu1_ppc64el.deb ... 1206s Unpacking libgomp1:ppc64el (14-20240315-1ubuntu1) ... 1206s Selecting previously unselected package libitm1:ppc64el. 1206s Preparing to unpack .../008-libitm1_14-20240315-1ubuntu1_ppc64el.deb ... 1206s Unpacking libitm1:ppc64el (14-20240315-1ubuntu1) ... 1206s Selecting previously unselected package libatomic1:ppc64el. 1206s Preparing to unpack .../009-libatomic1_14-20240315-1ubuntu1_ppc64el.deb ... 1206s Unpacking libatomic1:ppc64el (14-20240315-1ubuntu1) ... 1206s Selecting previously unselected package libasan8:ppc64el. 1206s Preparing to unpack .../010-libasan8_14-20240315-1ubuntu1_ppc64el.deb ... 1206s Unpacking libasan8:ppc64el (14-20240315-1ubuntu1) ... 1206s Selecting previously unselected package liblsan0:ppc64el. 1206s Preparing to unpack .../011-liblsan0_14-20240315-1ubuntu1_ppc64el.deb ... 1206s Unpacking liblsan0:ppc64el (14-20240315-1ubuntu1) ... 1206s Selecting previously unselected package libtsan2:ppc64el. 1206s Preparing to unpack .../012-libtsan2_14-20240315-1ubuntu1_ppc64el.deb ... 1206s Unpacking libtsan2:ppc64el (14-20240315-1ubuntu1) ... 1206s Selecting previously unselected package libubsan1:ppc64el. 1206s Preparing to unpack .../013-libubsan1_14-20240315-1ubuntu1_ppc64el.deb ... 1206s Unpacking libubsan1:ppc64el (14-20240315-1ubuntu1) ... 1206s Selecting previously unselected package libquadmath0:ppc64el. 1207s Preparing to unpack .../014-libquadmath0_14-20240315-1ubuntu1_ppc64el.deb ... 1207s Unpacking libquadmath0:ppc64el (14-20240315-1ubuntu1) ... 1207s Selecting previously unselected package libgcc-13-dev:ppc64el. 1207s Preparing to unpack .../015-libgcc-13-dev_13.2.0-21ubuntu1_ppc64el.deb ... 1207s Unpacking libgcc-13-dev:ppc64el (13.2.0-21ubuntu1) ... 1207s Selecting previously unselected package gcc-13-powerpc64le-linux-gnu. 1207s Preparing to unpack .../016-gcc-13-powerpc64le-linux-gnu_13.2.0-21ubuntu1_ppc64el.deb ... 1207s Unpacking gcc-13-powerpc64le-linux-gnu (13.2.0-21ubuntu1) ... 1207s Selecting previously unselected package gcc-13. 1207s Preparing to unpack .../017-gcc-13_13.2.0-21ubuntu1_ppc64el.deb ... 1207s Unpacking gcc-13 (13.2.0-21ubuntu1) ... 1207s Selecting previously unselected package gcc-powerpc64le-linux-gnu. 1207s Preparing to unpack .../018-gcc-powerpc64le-linux-gnu_4%3a13.2.0-7ubuntu1_ppc64el.deb ... 1207s Unpacking gcc-powerpc64le-linux-gnu (4:13.2.0-7ubuntu1) ... 1207s Selecting previously unselected package gcc. 1207s Preparing to unpack .../019-gcc_4%3a13.2.0-7ubuntu1_ppc64el.deb ... 1207s Unpacking gcc (4:13.2.0-7ubuntu1) ... 1207s Selecting previously unselected package libstdc++-13-dev:ppc64el. 1207s Preparing to unpack .../020-libstdc++-13-dev_13.2.0-21ubuntu1_ppc64el.deb ... 1207s Unpacking libstdc++-13-dev:ppc64el (13.2.0-21ubuntu1) ... 1207s Selecting previously unselected package g++-13-powerpc64le-linux-gnu. 1207s Preparing to unpack .../021-g++-13-powerpc64le-linux-gnu_13.2.0-21ubuntu1_ppc64el.deb ... 1207s Unpacking g++-13-powerpc64le-linux-gnu (13.2.0-21ubuntu1) ... 1208s Selecting previously unselected package g++-13. 1208s Preparing to unpack .../022-g++-13_13.2.0-21ubuntu1_ppc64el.deb ... 1208s Unpacking g++-13 (13.2.0-21ubuntu1) ... 1208s Selecting previously unselected package g++-powerpc64le-linux-gnu. 1208s Preparing to unpack .../023-g++-powerpc64le-linux-gnu_4%3a13.2.0-7ubuntu1_ppc64el.deb ... 1208s Unpacking g++-powerpc64le-linux-gnu (4:13.2.0-7ubuntu1) ... 1208s Selecting previously unselected package g++. 1208s Preparing to unpack .../024-g++_4%3a13.2.0-7ubuntu1_ppc64el.deb ... 1208s Unpacking g++ (4:13.2.0-7ubuntu1) ... 1208s Selecting previously unselected package build-essential. 1208s Preparing to unpack .../025-build-essential_12.10ubuntu1_ppc64el.deb ... 1208s Unpacking build-essential (12.10ubuntu1) ... 1208s Selecting previously unselected package dctrl-tools. 1208s Preparing to unpack .../026-dctrl-tools_2.24-3build2_ppc64el.deb ... 1208s Unpacking dctrl-tools (2.24-3build2) ... 1208s Selecting previously unselected package fontconfig. 1208s Preparing to unpack .../027-fontconfig_2.15.0-1.1ubuntu1_ppc64el.deb ... 1208s Unpacking fontconfig (2.15.0-1.1ubuntu1) ... 1208s Selecting previously unselected package fonts-glyphicons-halflings. 1208s Preparing to unpack .../028-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 1208s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 1208s Selecting previously unselected package fonts-mathjax. 1208s Preparing to unpack .../029-fonts-mathjax_2.7.9+dfsg-1_all.deb ... 1208s Unpacking fonts-mathjax (2.7.9+dfsg-1) ... 1208s Selecting previously unselected package libgfortran5:ppc64el. 1208s Preparing to unpack .../030-libgfortran5_14-20240315-1ubuntu1_ppc64el.deb ... 1208s Unpacking libgfortran5:ppc64el (14-20240315-1ubuntu1) ... 1208s Selecting previously unselected package libgfortran-13-dev:ppc64el. 1208s Preparing to unpack .../031-libgfortran-13-dev_13.2.0-21ubuntu1_ppc64el.deb ... 1208s Unpacking libgfortran-13-dev:ppc64el (13.2.0-21ubuntu1) ... 1208s Selecting previously unselected package gfortran-13-powerpc64le-linux-gnu. 1208s Preparing to unpack .../032-gfortran-13-powerpc64le-linux-gnu_13.2.0-21ubuntu1_ppc64el.deb ... 1208s Unpacking gfortran-13-powerpc64le-linux-gnu (13.2.0-21ubuntu1) ... 1208s Selecting previously unselected package gfortran-13. 1208s Preparing to unpack .../033-gfortran-13_13.2.0-21ubuntu1_ppc64el.deb ... 1208s Unpacking gfortran-13 (13.2.0-21ubuntu1) ... 1208s Selecting previously unselected package gfortran-powerpc64le-linux-gnu. 1208s Preparing to unpack .../034-gfortran-powerpc64le-linux-gnu_4%3a13.2.0-7ubuntu1_ppc64el.deb ... 1208s Unpacking gfortran-powerpc64le-linux-gnu (4:13.2.0-7ubuntu1) ... 1208s Selecting previously unselected package gfortran. 1208s Preparing to unpack .../035-gfortran_4%3a13.2.0-7ubuntu1_ppc64el.deb ... 1208s Unpacking gfortran (4:13.2.0-7ubuntu1) ... 1208s Selecting previously unselected package icu-devtools. 1208s Preparing to unpack .../036-icu-devtools_74.2-1ubuntu1_ppc64el.deb ... 1208s Unpacking icu-devtools (74.2-1ubuntu1) ... 1208s Selecting previously unselected package libblas3:ppc64el. 1208s Preparing to unpack .../037-libblas3_3.12.0-3_ppc64el.deb ... 1208s Unpacking libblas3:ppc64el (3.12.0-3) ... 1208s Selecting previously unselected package libblas-dev:ppc64el. 1208s Preparing to unpack .../038-libblas-dev_3.12.0-3_ppc64el.deb ... 1208s Unpacking libblas-dev:ppc64el (3.12.0-3) ... 1208s Selecting previously unselected package libbz2-dev:ppc64el. 1208s Preparing to unpack .../039-libbz2-dev_1.0.8-5ubuntu1_ppc64el.deb ... 1208s Unpacking libbz2-dev:ppc64el (1.0.8-5ubuntu1) ... 1208s Selecting previously unselected package libpixman-1-0:ppc64el. 1208s Preparing to unpack .../040-libpixman-1-0_0.42.2-1_ppc64el.deb ... 1208s Unpacking libpixman-1-0:ppc64el (0.42.2-1) ... 1209s Selecting previously unselected package libxcb-render0:ppc64el. 1209s Preparing to unpack .../041-libxcb-render0_1.15-1_ppc64el.deb ... 1209s Unpacking libxcb-render0:ppc64el (1.15-1) ... 1209s Selecting previously unselected package libxcb-shm0:ppc64el. 1209s Preparing to unpack .../042-libxcb-shm0_1.15-1_ppc64el.deb ... 1209s Unpacking libxcb-shm0:ppc64el (1.15-1) ... 1209s Selecting previously unselected package libxrender1:ppc64el. 1209s Preparing to unpack .../043-libxrender1_1%3a0.9.10-1.1_ppc64el.deb ... 1209s Unpacking libxrender1:ppc64el (1:0.9.10-1.1) ... 1209s Selecting previously unselected package libcairo2:ppc64el. 1209s Preparing to unpack .../044-libcairo2_1.18.0-1ubuntu1_ppc64el.deb ... 1209s Unpacking libcairo2:ppc64el (1.18.0-1ubuntu1) ... 1209s Selecting previously unselected package libdatrie1:ppc64el. 1209s Preparing to unpack .../045-libdatrie1_0.2.13-3_ppc64el.deb ... 1209s Unpacking libdatrie1:ppc64el (0.2.13-3) ... 1209s Selecting previously unselected package libgraphite2-3:ppc64el. 1209s Preparing to unpack .../046-libgraphite2-3_1.3.14-2_ppc64el.deb ... 1209s Unpacking libgraphite2-3:ppc64el (1.3.14-2) ... 1209s Selecting previously unselected package libharfbuzz0b:ppc64el. 1209s Preparing to unpack .../047-libharfbuzz0b_8.3.0-2build1_ppc64el.deb ... 1209s Unpacking libharfbuzz0b:ppc64el (8.3.0-2build1) ... 1209s Selecting previously unselected package x11-common. 1209s Preparing to unpack .../048-x11-common_1%3a7.7+23ubuntu2_all.deb ... 1209s Unpacking x11-common (1:7.7+23ubuntu2) ... 1209s Selecting previously unselected package libice6:ppc64el. 1209s Preparing to unpack .../049-libice6_2%3a1.0.10-1build2_ppc64el.deb ... 1209s Unpacking libice6:ppc64el (2:1.0.10-1build2) ... 1209s Selecting previously unselected package libicu-dev:ppc64el. 1209s Preparing to unpack .../050-libicu-dev_74.2-1ubuntu1_ppc64el.deb ... 1209s Unpacking libicu-dev:ppc64el (74.2-1ubuntu1) ... 1209s Selecting previously unselected package libjpeg-turbo8-dev:ppc64el. 1209s Preparing to unpack .../051-libjpeg-turbo8-dev_2.1.5-2ubuntu1_ppc64el.deb ... 1209s Unpacking libjpeg-turbo8-dev:ppc64el (2.1.5-2ubuntu1) ... 1209s Selecting previously unselected package libjpeg8-dev:ppc64el. 1209s Preparing to unpack .../052-libjpeg8-dev_8c-2ubuntu11_ppc64el.deb ... 1209s Unpacking libjpeg8-dev:ppc64el (8c-2ubuntu11) ... 1209s Selecting previously unselected package libjpeg-dev:ppc64el. 1209s Preparing to unpack .../053-libjpeg-dev_8c-2ubuntu11_ppc64el.deb ... 1209s Unpacking libjpeg-dev:ppc64el (8c-2ubuntu11) ... 1209s Selecting previously unselected package libjs-bootstrap. 1209s Preparing to unpack .../054-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 1209s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 1209s Selecting previously unselected package libjs-highlight.js. 1209s Preparing to unpack .../055-libjs-highlight.js_9.18.5+dfsg1-2_all.deb ... 1209s Unpacking libjs-highlight.js (9.18.5+dfsg1-2) ... 1209s Selecting previously unselected package libjs-jquery. 1209s Preparing to unpack .../056-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 1209s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 1209s Selecting previously unselected package libjs-jquery-datatables. 1209s Preparing to unpack .../057-libjs-jquery-datatables_1.11.5+dfsg-2_all.deb ... 1209s Unpacking libjs-jquery-datatables (1.11.5+dfsg-2) ... 1209s Selecting previously unselected package liblapack3:ppc64el. 1209s Preparing to unpack .../058-liblapack3_3.12.0-3_ppc64el.deb ... 1209s Unpacking liblapack3:ppc64el (3.12.0-3) ... 1209s Selecting previously unselected package liblapack-dev:ppc64el. 1209s Preparing to unpack .../059-liblapack-dev_3.12.0-3_ppc64el.deb ... 1209s Unpacking liblapack-dev:ppc64el (3.12.0-3) ... 1209s Selecting previously unselected package libncurses-dev:ppc64el. 1209s Preparing to unpack .../060-libncurses-dev_6.4+20240113-1ubuntu1_ppc64el.deb ... 1209s Unpacking libncurses-dev:ppc64el (6.4+20240113-1ubuntu1) ... 1210s Selecting previously unselected package libthai-data. 1210s Preparing to unpack .../061-libthai-data_0.1.29-2_all.deb ... 1210s Unpacking libthai-data (0.1.29-2) ... 1210s Selecting previously unselected package libthai0:ppc64el. 1210s Preparing to unpack .../062-libthai0_0.1.29-2_ppc64el.deb ... 1210s Unpacking libthai0:ppc64el (0.1.29-2) ... 1210s Selecting previously unselected package libpango-1.0-0:ppc64el. 1210s Preparing to unpack .../063-libpango-1.0-0_1.52.1+ds-1_ppc64el.deb ... 1210s Unpacking libpango-1.0-0:ppc64el (1.52.1+ds-1) ... 1210s Selecting previously unselected package libpangoft2-1.0-0:ppc64el. 1210s Preparing to unpack .../064-libpangoft2-1.0-0_1.52.1+ds-1_ppc64el.deb ... 1210s Unpacking libpangoft2-1.0-0:ppc64el (1.52.1+ds-1) ... 1210s Selecting previously unselected package libpangocairo-1.0-0:ppc64el. 1210s Preparing to unpack .../065-libpangocairo-1.0-0_1.52.1+ds-1_ppc64el.deb ... 1210s Unpacking libpangocairo-1.0-0:ppc64el (1.52.1+ds-1) ... 1210s Selecting previously unselected package libpaper1:ppc64el. 1210s Preparing to unpack .../066-libpaper1_1.1.29_ppc64el.deb ... 1210s Unpacking libpaper1:ppc64el (1.1.29) ... 1210s Selecting previously unselected package libpaper-utils. 1210s Preparing to unpack .../067-libpaper-utils_1.1.29_ppc64el.deb ... 1210s Unpacking libpaper-utils (1.1.29) ... 1210s Selecting previously unselected package libpcre2-16-0:ppc64el. 1210s Preparing to unpack .../068-libpcre2-16-0_10.42-4ubuntu1_ppc64el.deb ... 1210s Unpacking libpcre2-16-0:ppc64el (10.42-4ubuntu1) ... 1210s Selecting previously unselected package libpcre2-32-0:ppc64el. 1210s Preparing to unpack .../069-libpcre2-32-0_10.42-4ubuntu1_ppc64el.deb ... 1210s Unpacking libpcre2-32-0:ppc64el (10.42-4ubuntu1) ... 1210s Selecting previously unselected package libpcre2-posix3:ppc64el. 1210s Preparing to unpack .../070-libpcre2-posix3_10.42-4ubuntu1_ppc64el.deb ... 1210s Unpacking libpcre2-posix3:ppc64el (10.42-4ubuntu1) ... 1210s Selecting previously unselected package libpcre2-dev:ppc64el. 1210s Preparing to unpack .../071-libpcre2-dev_10.42-4ubuntu1_ppc64el.deb ... 1210s Unpacking libpcre2-dev:ppc64el (10.42-4ubuntu1) ... 1210s Selecting previously unselected package libpkgconf3:ppc64el. 1210s Preparing to unpack .../072-libpkgconf3_1.8.1-2_ppc64el.deb ... 1210s Unpacking libpkgconf3:ppc64el (1.8.1-2) ... 1210s Selecting previously unselected package zlib1g-dev:ppc64el. 1210s Preparing to unpack .../073-zlib1g-dev_1%3a1.3.dfsg-3.1ubuntu1_ppc64el.deb ... 1210s Unpacking zlib1g-dev:ppc64el (1:1.3.dfsg-3.1ubuntu1) ... 1210s Selecting previously unselected package libpng-dev:ppc64el. 1210s Preparing to unpack .../074-libpng-dev_1.6.43-3_ppc64el.deb ... 1210s Unpacking libpng-dev:ppc64el (1.6.43-3) ... 1210s Selecting previously unselected package libreadline-dev:ppc64el. 1210s Preparing to unpack .../075-libreadline-dev_8.2-4_ppc64el.deb ... 1210s Unpacking libreadline-dev:ppc64el (8.2-4) ... 1210s Selecting previously unselected package libsm6:ppc64el. 1210s Preparing to unpack .../076-libsm6_2%3a1.2.3-1build2_ppc64el.deb ... 1210s Unpacking libsm6:ppc64el (2:1.2.3-1build2) ... 1210s Selecting previously unselected package libtcl8.6:ppc64el. 1210s Preparing to unpack .../077-libtcl8.6_8.6.14+dfsg-1_ppc64el.deb ... 1210s Unpacking libtcl8.6:ppc64el (8.6.14+dfsg-1) ... 1210s Selecting previously unselected package libxft2:ppc64el. 1210s Preparing to unpack .../078-libxft2_2.3.6-1_ppc64el.deb ... 1210s Unpacking libxft2:ppc64el (2.3.6-1) ... 1210s Selecting previously unselected package libxss1:ppc64el. 1210s Preparing to unpack .../079-libxss1_1%3a1.2.3-1build2_ppc64el.deb ... 1210s Unpacking libxss1:ppc64el (1:1.2.3-1build2) ... 1210s Selecting previously unselected package libtk8.6:ppc64el. 1210s Preparing to unpack .../080-libtk8.6_8.6.14-1_ppc64el.deb ... 1210s Unpacking libtk8.6:ppc64el (8.6.14-1) ... 1210s Selecting previously unselected package libxt6t64:ppc64el. 1210s Preparing to unpack .../081-libxt6t64_1%3a1.2.1-1.2_ppc64el.deb ... 1210s Unpacking libxt6t64:ppc64el (1:1.2.1-1.2) ... 1210s Selecting previously unselected package node-normalize.css. 1210s Preparing to unpack .../082-node-normalize.css_8.0.1-5_all.deb ... 1210s Unpacking node-normalize.css (8.0.1-5) ... 1210s Selecting previously unselected package pkgconf-bin. 1210s Preparing to unpack .../083-pkgconf-bin_1.8.1-2_ppc64el.deb ... 1210s Unpacking pkgconf-bin (1.8.1-2) ... 1210s Selecting previously unselected package pkgconf:ppc64el. 1210s Preparing to unpack .../084-pkgconf_1.8.1-2_ppc64el.deb ... 1210s Unpacking pkgconf:ppc64el (1.8.1-2) ... 1210s Selecting previously unselected package pkg-config:ppc64el. 1210s Preparing to unpack .../085-pkg-config_1.8.1-2_ppc64el.deb ... 1210s Unpacking pkg-config:ppc64el (1.8.1-2) ... 1210s Selecting previously unselected package zip. 1210s Preparing to unpack .../086-zip_3.0-13_ppc64el.deb ... 1210s Unpacking zip (3.0-13) ... 1210s Selecting previously unselected package unzip. 1210s Preparing to unpack .../087-unzip_6.0-28ubuntu3_ppc64el.deb ... 1210s Unpacking unzip (6.0-28ubuntu3) ... 1210s Selecting previously unselected package xdg-utils. 1210s Preparing to unpack .../088-xdg-utils_1.1.3-4.1ubuntu3_all.deb ... 1210s Unpacking xdg-utils (1.1.3-4.1ubuntu3) ... 1210s Selecting previously unselected package r-base-core. 1210s Preparing to unpack .../089-r-base-core_4.3.3-2build1_ppc64el.deb ... 1210s Unpacking r-base-core (4.3.3-2build1) ... 1211s Selecting previously unselected package liblzma-dev:ppc64el. 1211s Preparing to unpack .../090-liblzma-dev_5.6.0-0.2_ppc64el.deb ... 1211s Unpacking liblzma-dev:ppc64el (5.6.0-0.2) ... 1211s Selecting previously unselected package r-base-dev. 1211s Preparing to unpack .../091-r-base-dev_4.3.3-2build1_all.deb ... 1211s Unpacking r-base-dev (4.3.3-2build1) ... 1211s Selecting previously unselected package pkg-r-autopkgtest. 1211s Preparing to unpack .../092-pkg-r-autopkgtest_20231212ubuntu1_all.deb ... 1211s Unpacking pkg-r-autopkgtest (20231212ubuntu1) ... 1211s Selecting previously unselected package r-cran-base64enc. 1211s Preparing to unpack .../093-r-cran-base64enc_0.1-3-3_ppc64el.deb ... 1211s Unpacking r-cran-base64enc (0.1-3-3) ... 1211s Selecting previously unselected package r-cran-cli. 1211s Preparing to unpack .../094-r-cran-cli_3.6.2-1_ppc64el.deb ... 1211s Unpacking r-cran-cli (3.6.2-1) ... 1211s Selecting previously unselected package r-cran-colorspace. 1211s Preparing to unpack .../095-r-cran-colorspace_2.1-0+dfsg-1_ppc64el.deb ... 1211s Unpacking r-cran-colorspace (2.1-0+dfsg-1) ... 1211s Selecting previously unselected package r-cran-commonmark. 1211s Preparing to unpack .../096-r-cran-commonmark_1.9.1-1_ppc64el.deb ... 1211s Unpacking r-cran-commonmark (1.9.1-1) ... 1211s Selecting previously unselected package r-cran-evaluate. 1211s Preparing to unpack .../097-r-cran-evaluate_0.23-1_all.deb ... 1211s Unpacking r-cran-evaluate (0.23-1) ... 1211s Selecting previously unselected package r-cran-fansi. 1211s Preparing to unpack .../098-r-cran-fansi_1.0.5-1_ppc64el.deb ... 1211s Unpacking r-cran-fansi (1.0.5-1) ... 1211s Selecting previously unselected package r-cran-farver. 1211s Preparing to unpack .../099-r-cran-farver_2.1.1-1_ppc64el.deb ... 1211s Unpacking r-cran-farver (2.1.1-1) ... 1211s Selecting previously unselected package r-cran-glue. 1211s Preparing to unpack .../100-r-cran-glue_1.7.0-1_ppc64el.deb ... 1211s Unpacking r-cran-glue (1.7.0-1) ... 1211s Selecting previously unselected package r-cran-rlang. 1211s Preparing to unpack .../101-r-cran-rlang_1.1.3-1_ppc64el.deb ... 1211s Unpacking r-cran-rlang (1.1.3-1) ... 1211s Selecting previously unselected package r-cran-lifecycle. 1211s Preparing to unpack .../102-r-cran-lifecycle_1.0.4+dfsg-1_all.deb ... 1211s Unpacking r-cran-lifecycle (1.0.4+dfsg-1) ... 1211s Selecting previously unselected package r-cran-gtable. 1211s Preparing to unpack .../103-r-cran-gtable_0.3.4+dfsg-1_all.deb ... 1211s Unpacking r-cran-gtable (0.3.4+dfsg-1) ... 1211s Selecting previously unselected package r-cran-isoband. 1211s Preparing to unpack .../104-r-cran-isoband_0.2.7-1_ppc64el.deb ... 1211s Unpacking r-cran-isoband (0.2.7-1) ... 1211s Selecting previously unselected package r-cran-mass. 1211s Preparing to unpack .../105-r-cran-mass_7.3-60.0.1-1_ppc64el.deb ... 1211s Unpacking r-cran-mass (7.3-60.0.1-1) ... 1211s Selecting previously unselected package r-cran-lattice. 1211s Preparing to unpack .../106-r-cran-lattice_0.22-5-1_ppc64el.deb ... 1211s Unpacking r-cran-lattice (0.22-5-1) ... 1211s Selecting previously unselected package r-cran-nlme. 1211s Preparing to unpack .../107-r-cran-nlme_3.1.164-1_ppc64el.deb ... 1211s Unpacking r-cran-nlme (3.1.164-1) ... 1211s Selecting previously unselected package r-cran-matrix. 1211s Preparing to unpack .../108-r-cran-matrix_1.6-5-1_ppc64el.deb ... 1211s Unpacking r-cran-matrix (1.6-5-1) ... 1211s Selecting previously unselected package r-cran-mgcv. 1211s Preparing to unpack .../109-r-cran-mgcv_1.9-1-1_ppc64el.deb ... 1211s Unpacking r-cran-mgcv (1.9-1-1) ... 1211s Selecting previously unselected package r-cran-labeling. 1211s Preparing to unpack .../110-r-cran-labeling_0.4.3-1_all.deb ... 1211s Unpacking r-cran-labeling (0.4.3-1) ... 1211s Selecting previously unselected package r-cran-munsell. 1211s Preparing to unpack .../111-r-cran-munsell_0.5.0-2build1_all.deb ... 1211s Unpacking r-cran-munsell (0.5.0-2build1) ... 1211s Selecting previously unselected package r-cran-r6. 1211s Preparing to unpack .../112-r-cran-r6_2.5.1-1_all.deb ... 1211s Unpacking r-cran-r6 (2.5.1-1) ... 1211s Selecting previously unselected package r-cran-rcolorbrewer. 1211s Preparing to unpack .../113-r-cran-rcolorbrewer_1.1-3-1build1_all.deb ... 1211s Unpacking r-cran-rcolorbrewer (1.1-3-1build1) ... 1211s Selecting previously unselected package r-cran-viridislite. 1211s Preparing to unpack .../114-r-cran-viridislite_0.4.2-2_all.deb ... 1211s Unpacking r-cran-viridislite (0.4.2-2) ... 1211s Selecting previously unselected package r-cran-scales. 1211s Preparing to unpack .../115-r-cran-scales_1.3.0-1_all.deb ... 1211s Unpacking r-cran-scales (1.3.0-1) ... 1211s Selecting previously unselected package r-cran-magrittr. 1211s Preparing to unpack .../116-r-cran-magrittr_2.0.3-1_ppc64el.deb ... 1211s Unpacking r-cran-magrittr (2.0.3-1) ... 1211s Selecting previously unselected package r-cran-utf8. 1211s Preparing to unpack .../117-r-cran-utf8_1.2.4-1_ppc64el.deb ... 1211s Unpacking r-cran-utf8 (1.2.4-1) ... 1211s Selecting previously unselected package r-cran-vctrs. 1211s Preparing to unpack .../118-r-cran-vctrs_0.6.5-1_ppc64el.deb ... 1211s Unpacking r-cran-vctrs (0.6.5-1) ... 1212s Selecting previously unselected package r-cran-pillar. 1212s Preparing to unpack .../119-r-cran-pillar_1.9.0+dfsg-1_all.deb ... 1212s Unpacking r-cran-pillar (1.9.0+dfsg-1) ... 1212s Selecting previously unselected package r-cran-pkgconfig. 1212s Preparing to unpack .../120-r-cran-pkgconfig_2.0.3-2build1_all.deb ... 1212s Unpacking r-cran-pkgconfig (2.0.3-2build1) ... 1212s Selecting previously unselected package r-cran-tibble. 1212s Preparing to unpack .../121-r-cran-tibble_3.2.1+dfsg-2_ppc64el.deb ... 1212s Unpacking r-cran-tibble (3.2.1+dfsg-2) ... 1212s Selecting previously unselected package r-cran-withr. 1212s Preparing to unpack .../122-r-cran-withr_3.0.0+dfsg-1_all.deb ... 1212s Unpacking r-cran-withr (3.0.0+dfsg-1) ... 1212s Selecting previously unselected package r-cran-ggplot2. 1212s Preparing to unpack .../123-r-cran-ggplot2_3.4.4+dfsg-1_all.deb ... 1212s Unpacking r-cran-ggplot2 (3.4.4+dfsg-1) ... 1212s Selecting previously unselected package r-cran-xfun. 1212s Preparing to unpack .../124-r-cran-xfun_0.41+dfsg-1_ppc64el.deb ... 1212s Unpacking r-cran-xfun (0.41+dfsg-1) ... 1212s Selecting previously unselected package r-cran-highr. 1212s Preparing to unpack .../125-r-cran-highr_0.10+dfsg-1_all.deb ... 1212s Unpacking r-cran-highr (0.10+dfsg-1) ... 1212s Selecting previously unselected package r-cran-yaml. 1212s Preparing to unpack .../126-r-cran-yaml_2.3.8-1_ppc64el.deb ... 1212s Unpacking r-cran-yaml (2.3.8-1) ... 1212s Selecting previously unselected package libjs-mathjax. 1212s Preparing to unpack .../127-libjs-mathjax_2.7.9+dfsg-1_all.deb ... 1212s Unpacking libjs-mathjax (2.7.9+dfsg-1) ... 1213s Selecting previously unselected package r-cran-knitr. 1213s Preparing to unpack .../128-r-cran-knitr_1.45+dfsg-1_all.deb ... 1213s Unpacking r-cran-knitr (1.45+dfsg-1) ... 1213s Selecting previously unselected package r-cran-markdown. 1213s Preparing to unpack .../129-r-cran-markdown_1.12+dfsg-1_all.deb ... 1213s Unpacking r-cran-markdown (1.12+dfsg-1) ... 1213s Selecting previously unselected package r-cran-matrixstats. 1213s Preparing to unpack .../130-r-cran-matrixstats_1.2.0-1_ppc64el.deb ... 1213s Unpacking r-cran-matrixstats (1.2.0-1) ... 1213s Selecting previously unselected package autopkgtest-satdep. 1213s Preparing to unpack .../131-2-autopkgtest-satdep.deb ... 1213s Unpacking autopkgtest-satdep (0) ... 1213s Setting up libgraphite2-3:ppc64el (1.3.14-2) ... 1213s Setting up libpixman-1-0:ppc64el (0.42.2-1) ... 1213s Setting up libpaper1:ppc64el (1.1.29) ... 1213s 1213s Creating config file /etc/papersize with new version 1213s Setting up fontconfig (2.15.0-1.1ubuntu1) ... 1215s Regenerating fonts cache... done. 1215s Setting up libjpeg-turbo8-dev:ppc64el (2.1.5-2ubuntu1) ... 1215s Setting up libncurses-dev:ppc64el (6.4+20240113-1ubuntu1) ... 1215s Setting up fonts-mathjax (2.7.9+dfsg-1) ... 1215s Setting up libjs-mathjax (2.7.9+dfsg-1) ... 1215s Setting up libxrender1:ppc64el (1:0.9.10-1.1) ... 1215s Setting up libdatrie1:ppc64el (0.2.13-3) ... 1215s Setting up libxcb-render0:ppc64el (1.15-1) ... 1215s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 1215s Setting up unzip (6.0-28ubuntu3) ... 1215s Setting up x11-common (1:7.7+23ubuntu2) ... 1216s Setting up libxcb-shm0:ppc64el (1.15-1) ... 1216s Setting up libpaper-utils (1.1.29) ... 1216s Setting up libreadline-dev:ppc64el (8.2-4) ... 1216s Setting up libgomp1:ppc64el (14-20240315-1ubuntu1) ... 1216s Setting up libcairo2:ppc64el (1.18.0-1ubuntu1) ... 1216s Setting up libpcre2-16-0:ppc64el (10.42-4ubuntu1) ... 1216s Setting up zip (3.0-13) ... 1216s Setting up libpcre2-32-0:ppc64el (10.42-4ubuntu1) ... 1216s Setting up libblas3:ppc64el (3.12.0-3) ... 1216s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/blas/libblas.so.3 to provide /usr/lib/powerpc64le-linux-gnu/libblas.so.3 (libblas.so.3-powerpc64le-linux-gnu) in auto mode 1216s Setting up libpkgconf3:ppc64el (1.8.1-2) ... 1216s Setting up libquadmath0:ppc64el (14-20240315-1ubuntu1) ... 1216s Setting up libmpc3:ppc64el (1.3.1-1) ... 1216s Setting up libatomic1:ppc64el (14-20240315-1ubuntu1) ... 1216s Setting up libtcl8.6:ppc64el (8.6.14+dfsg-1) ... 1216s Setting up icu-devtools (74.2-1ubuntu1) ... 1216s Setting up pkgconf-bin (1.8.1-2) ... 1216s Setting up libgfortran5:ppc64el (14-20240315-1ubuntu1) ... 1216s Setting up liblzma-dev:ppc64el (5.6.0-0.2) ... 1216s Setting up libubsan1:ppc64el (14-20240315-1ubuntu1) ... 1216s Setting up zlib1g-dev:ppc64el (1:1.3.dfsg-3.1ubuntu1) ... 1216s Setting up libpcre2-posix3:ppc64el (10.42-4ubuntu1) ... 1216s Setting up libjs-highlight.js (9.18.5+dfsg1-2) ... 1216s Setting up libasan8:ppc64el (14-20240315-1ubuntu1) ... 1216s Setting up libharfbuzz0b:ppc64el (8.3.0-2build1) ... 1216s Setting up libthai-data (0.1.29-2) ... 1216s Setting up libxss1:ppc64el (1:1.2.3-1build2) ... 1216s Setting up libtsan2:ppc64el (14-20240315-1ubuntu1) ... 1216s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 1216s Setting up libjpeg8-dev:ppc64el (8c-2ubuntu11) ... 1216s Setting up libisl23:ppc64el (0.26-3) ... 1216s Setting up cpp-13-powerpc64le-linux-gnu (13.2.0-21ubuntu1) ... 1216s Setting up node-normalize.css (8.0.1-5) ... 1216s Setting up libicu-dev:ppc64el (74.2-1ubuntu1) ... 1216s Setting up xdg-utils (1.1.3-4.1ubuntu3) ... 1216s update-alternatives: using /usr/bin/xdg-open to provide /usr/bin/open (open) in auto mode 1216s Setting up libcc1-0:ppc64el (14-20240315-1ubuntu1) ... 1216s Setting up liblsan0:ppc64el (14-20240315-1ubuntu1) ... 1216s Setting up libblas-dev:ppc64el (3.12.0-3) ... 1216s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/blas/libblas.so to provide /usr/lib/powerpc64le-linux-gnu/libblas.so (libblas.so-powerpc64le-linux-gnu) in auto mode 1216s Setting up dctrl-tools (2.24-3build2) ... 1216s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 1216s Setting up libitm1:ppc64el (14-20240315-1ubuntu1) ... 1216s Setting up cpp-powerpc64le-linux-gnu (4:13.2.0-7ubuntu1) ... 1216s Setting up libbz2-dev:ppc64el (1.0.8-5ubuntu1) ... 1216s Setting up libice6:ppc64el (2:1.0.10-1build2) ... 1216s Setting up liblapack3:ppc64el (3.12.0-3) ... 1216s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/powerpc64le-linux-gnu/liblapack.so.3 (liblapack.so.3-powerpc64le-linux-gnu) in auto mode 1216s Setting up libxft2:ppc64el (2.3.6-1) ... 1216s Setting up libpcre2-dev:ppc64el (10.42-4ubuntu1) ... 1216s Setting up cpp-13 (13.2.0-21ubuntu1) ... 1216s Setting up libtk8.6:ppc64el (8.6.14-1) ... 1216s Setting up libpng-dev:ppc64el (1.6.43-3) ... 1216s Setting up libjpeg-dev:ppc64el (8c-2ubuntu11) ... 1216s Setting up libjs-jquery-datatables (1.11.5+dfsg-2) ... 1216s Setting up pkgconf:ppc64el (1.8.1-2) ... 1216s Setting up libthai0:ppc64el (0.1.29-2) ... 1216s Setting up liblapack-dev:ppc64el (3.12.0-3) ... 1216s update-alternatives: using /usr/lib/powerpc64le-linux-gnu/lapack/liblapack.so to provide /usr/lib/powerpc64le-linux-gnu/liblapack.so (liblapack.so-powerpc64le-linux-gnu) in auto mode 1216s Setting up pkg-config:ppc64el (1.8.1-2) ... 1216s Setting up libgcc-13-dev:ppc64el (13.2.0-21ubuntu1) ... 1216s Setting up cpp (4:13.2.0-7ubuntu1) ... 1216s Setting up libgfortran-13-dev:ppc64el (13.2.0-21ubuntu1) ... 1216s Setting up libsm6:ppc64el (2:1.2.3-1build2) ... 1216s Setting up libstdc++-13-dev:ppc64el (13.2.0-21ubuntu1) ... 1216s Setting up libpango-1.0-0:ppc64el (1.52.1+ds-1) ... 1216s Setting up gcc-13-powerpc64le-linux-gnu (13.2.0-21ubuntu1) ... 1216s Setting up libxt6t64:ppc64el (1:1.2.1-1.2) ... 1216s Setting up gcc-13 (13.2.0-21ubuntu1) ... 1216s Setting up libpangoft2-1.0-0:ppc64el (1.52.1+ds-1) ... 1216s Setting up libpangocairo-1.0-0:ppc64el (1.52.1+ds-1) ... 1216s Setting up gfortran-13-powerpc64le-linux-gnu (13.2.0-21ubuntu1) ... 1216s Setting up g++-13-powerpc64le-linux-gnu (13.2.0-21ubuntu1) ... 1216s Setting up gcc-powerpc64le-linux-gnu (4:13.2.0-7ubuntu1) ... 1216s Setting up gfortran-13 (13.2.0-21ubuntu1) ... 1216s Setting up r-base-core (4.3.3-2build1) ... 1216s 1216s Creating config file /etc/R/Renviron with new version 1216s Setting up r-cran-labeling (0.4.3-1) ... 1216s Setting up r-cran-lattice (0.22-5-1) ... 1216s Setting up r-cran-nlme (3.1.164-1) ... 1216s Setting up r-cran-farver (2.1.1-1) ... 1216s Setting up r-cran-viridislite (0.4.2-2) ... 1216s Setting up r-cran-commonmark (1.9.1-1) ... 1216s Setting up r-cran-r6 (2.5.1-1) ... 1216s Setting up r-cran-magrittr (2.0.3-1) ... 1216s Setting up g++-powerpc64le-linux-gnu (4:13.2.0-7ubuntu1) ... 1216s Setting up g++-13 (13.2.0-21ubuntu1) ... 1216s Setting up r-cran-rlang (1.1.3-1) ... 1216s Setting up r-cran-matrixstats (1.2.0-1) ... 1216s Setting up r-cran-xfun (0.41+dfsg-1) ... 1216s Setting up r-cran-withr (3.0.0+dfsg-1) ... 1216s Setting up r-cran-base64enc (0.1-3-3) ... 1216s Setting up r-cran-yaml (2.3.8-1) ... 1216s Setting up r-cran-evaluate (0.23-1) ... 1216s Setting up r-cran-highr (0.10+dfsg-1) ... 1216s Setting up r-cran-fansi (1.0.5-1) ... 1216s Setting up r-cran-mass (7.3-60.0.1-1) ... 1216s Setting up r-cran-glue (1.7.0-1) ... 1216s Setting up r-cran-cli (3.6.2-1) ... 1216s Setting up r-cran-lifecycle (1.0.4+dfsg-1) ... 1216s Setting up gcc (4:13.2.0-7ubuntu1) ... 1216s Setting up r-cran-pkgconfig (2.0.3-2build1) ... 1216s Setting up r-cran-utf8 (1.2.4-1) ... 1216s Setting up gfortran-powerpc64le-linux-gnu (4:13.2.0-7ubuntu1) ... 1216s Setting up r-cran-colorspace (2.1-0+dfsg-1) ... 1216s Setting up r-cran-markdown (1.12+dfsg-1) ... 1216s Setting up r-cran-rcolorbrewer (1.1-3-1build1) ... 1216s Setting up r-cran-isoband (0.2.7-1) ... 1216s Setting up r-cran-gtable (0.3.4+dfsg-1) ... 1216s Setting up r-cran-matrix (1.6-5-1) ... 1216s Setting up r-cran-knitr (1.45+dfsg-1) ... 1216s Setting up r-cran-mgcv (1.9-1-1) ... 1216s Setting up g++ (4:13.2.0-7ubuntu1) ... 1216s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 1216s Setting up build-essential (12.10ubuntu1) ... 1216s Setting up r-cran-vctrs (0.6.5-1) ... 1216s Setting up r-cran-pillar (1.9.0+dfsg-1) ... 1216s Setting up r-cran-munsell (0.5.0-2build1) ... 1216s Setting up r-cran-tibble (3.2.1+dfsg-2) ... 1216s Setting up gfortran (4:13.2.0-7ubuntu1) ... 1216s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode 1216s 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 1216s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode 1216s 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 1216s Setting up r-cran-scales (1.3.0-1) ... 1216s Setting up r-base-dev (4.3.3-2build1) ... 1216s Setting up r-cran-ggplot2 (3.4.4+dfsg-1) ... 1216s Setting up pkg-r-autopkgtest (20231212ubuntu1) ... 1216s Setting up autopkgtest-satdep (0) ... 1216s Processing triggers for man-db (2.12.0-3build4) ... 1218s Processing triggers for install-info (7.1-3build1) ... 1218s Processing triggers for libc-bin (2.39-0ubuntu6) ... 1223s (Reading database ... 124031 files and directories currently installed.) 1223s Removing autopkgtest-satdep (0) ... 1224s autopkgtest [04:48:51]: test pkg-r-autopkgtest: /usr/share/dh-r/pkg-r-autopkgtest 1224s autopkgtest [04:48:51]: test pkg-r-autopkgtest: [----------------------- 1224s Test: Try to load the R library matrixStats 1224s 1224s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 1224s Copyright (C) 2024 The R Foundation for Statistical Computing 1224s Platform: powerpc64le-unknown-linux-gnu (64-bit) 1224s 1224s R is free software and comes with ABSOLUTELY NO WARRANTY. 1224s You are welcome to redistribute it under certain conditions. 1224s Type 'license()' or 'licence()' for distribution details. 1224s 1224s R is a collaborative project with many contributors. 1224s Type 'contributors()' for more information and 1224s 'citation()' on how to cite R or R packages in publications. 1224s 1224s Type 'demo()' for some demos, 'help()' for on-line help, or 1224s 'help.start()' for an HTML browser interface to help. 1224s Type 'q()' to quit R. 1224s 1225s > library('matrixStats') 1225s > 1225s > 1225s Other tests are currently unsupported! 1225s They will be progressively added. 1225s autopkgtest [04:48:52]: test pkg-r-autopkgtest: -----------------------] 1225s pkg-r-autopkgtest PASS 1225s autopkgtest [04:48:52]: test pkg-r-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 1226s autopkgtest [04:48:53]: @@@@@@@@@@@@@@@@@@@@ summary 1226s run-unit-test PASS 1226s pkg-r-autopkgtest PASS 1247s Creating nova instance adt-noble-ppc64el-r-cran-matrixstats-20240328-042827-juju-7f2275-prod-proposed-migration-environment-2-b3d56563-a19e-40be-93ef-fd3216d524d3 from image adt/ubuntu-noble-ppc64el-server-20240327.img (UUID 74f6a06c-176c-47b3-992a-25e3d3e7cc4c)... 1247s Creating nova instance adt-noble-ppc64el-r-cran-matrixstats-20240328-042827-juju-7f2275-prod-proposed-migration-environment-2-b3d56563-a19e-40be-93ef-fd3216d524d3 from image adt/ubuntu-noble-ppc64el-server-20240327.img (UUID 74f6a06c-176c-47b3-992a-25e3d3e7cc4c)...