Diff of the two buildlogs: -- --- b1/build.log 2021-06-19 12:04:30.768697861 +0000 +++ b2/build.log 2021-06-19 12:21:38.925451339 +0000 @@ -1,6 +1,8 @@ -I: pbuilder: network access will be disabled during build -I: Current time: Fri Jul 22 06:25:39 -12 2022 -I: pbuilder-time-stamp: 1658514339 +unshare: unshare failed: Cannot allocate memory +W: pbuilder: unshare CLONE_NEWNET not available +I: pbuilder: network access is available during build! +I: Current time: Sun Jun 20 02:04:33 +14 2021 +I: pbuilder-time-stamp: 1624104273 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bullseye-reproducible-base.tgz] I: copying local configuration @@ -17,8 +19,8 @@ I: copying [./octave-optics_0.1.4-3.debian.tar.xz] I: Extracting source gpgv: unknown type of key resource 'trustedkeys.kbx' -gpgv: keyblock resource '/tmp/dpkg-verify-sig.05lrU7Y7/trustedkeys.kbx': General error -gpgv: Signature made Wed Jul 29 00:44:02 2020 -12 +gpgv: keyblock resource '/tmp/dpkg-verify-sig.wgrgHXTb/trustedkeys.kbx': General error +gpgv: Signature made Thu Jul 30 02:44:02 2020 +14 gpgv: using RSA key 3F464391498FE874BDB5D98F2124AA1983785C90 gpgv: Can't check signature: No public key dpkg-source: warning: failed to verify signature on ./octave-optics_0.1.4-3.dsc @@ -27,137 +29,171 @@ dpkg-source: info: unpacking octave-optics_0.1.4-3.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/15677/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/11351/tmp/hooks/D01_modify_environment starting +debug: Running on ionos12-i386. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +Removing 'diversion of /bin/sh to /bin/sh.distrib by dash' +Adding 'diversion of /bin/sh to /bin/sh.distrib by bash' +Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash' +Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by bash' +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/11351/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/11351/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='i386' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all,-fixfilepath parallel=18' - DISTRIBUTION='' - HOME='/root' - HOST_ARCH='i386' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="1" [2]="4" [3]="1" [4]="release" [5]="i686-pc-linux-gnu") + BASH_VERSION='5.1.4(1)-release' + BUILDDIR=/build + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=i386 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all,-fixfilepath parallel=10' + DIRSTACK=() + DISTRIBUTION= + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=i686 + HOST_ARCH=i386 IFS=' ' - INVOCATION_ID='2ffc3152129148c0b36a8145eb404601' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - LD_LIBRARY_PATH='/usr/lib/libeatmydata' - LD_PRELOAD='libeatmydata.so' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='15677' - PS1='# ' - PS2='> ' + INVOCATION_ID=de68128cb881418b9a7f22097b9a41ac + LANG=C + LANGUAGE=de_CH:de + LC_ALL=C + LD_LIBRARY_PATH=/usr/lib/libeatmydata + LD_PRELOAD=libeatmydata.so + MACHTYPE=i686-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=11351 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/tmp.PrcUuxP1Np/pbuilderrc_e5re --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.PrcUuxP1Np/b1 --logfile b1/build.log octave-optics_0.1.4-3.dsc' - SUDO_GID='112' - SUDO_UID='107' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://85.184.249.68:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/tmp.PrcUuxP1Np/pbuilderrc_INrw --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.PrcUuxP1Np/b2 --logfile b2/build.log --extrapackages usrmerge octave-optics_0.1.4-3.dsc' + SUDO_GID=112 + SUDO_UID=107 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://78.137.99.97:3128 I: uname -a - Linux ionos6-i386 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux + Linux i-capture-the-hostname 4.19.0-16-686-pae #1 SMP Debian 4.19.181-1 (2021-03-19) i686 GNU/Linux I: ls -l /bin - total 5776 - -rwxr-xr-x 1 root root 1367848 Feb 24 2021 bash - -rwxr-xr-x 3 root root 38280 Jul 20 2020 bunzip2 - -rwxr-xr-x 3 root root 38280 Jul 20 2020 bzcat - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzcmp -> bzdiff - -rwxr-xr-x 1 root root 2225 Jul 20 2020 bzdiff - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzegrep -> bzgrep - -rwxr-xr-x 1 root root 4877 Sep 4 2019 bzexe - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzfgrep -> bzgrep - -rwxr-xr-x 1 root root 3775 Jul 20 2020 bzgrep - -rwxr-xr-x 3 root root 38280 Jul 20 2020 bzip2 - -rwxr-xr-x 1 root root 17768 Jul 20 2020 bzip2recover - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzless -> bzmore - -rwxr-xr-x 1 root root 1297 Jul 20 2020 bzmore - -rwxr-xr-x 1 root root 38824 Sep 22 2020 cat - -rwxr-xr-x 1 root root 71624 Sep 22 2020 chgrp - -rwxr-xr-x 1 root root 67528 Sep 22 2020 chmod - -rwxr-xr-x 1 root root 75752 Sep 22 2020 chown - -rwxr-xr-x 1 root root 157960 Sep 22 2020 cp - -rwxr-xr-x 1 root root 128724 Dec 10 2020 dash - -rwxr-xr-x 1 root root 124904 Sep 22 2020 date - -rwxr-xr-x 1 root root 92172 Sep 22 2020 dd - -rwxr-xr-x 1 root root 100752 Sep 22 2020 df - -rwxr-xr-x 1 root root 153964 Sep 22 2020 dir - -rwxr-xr-x 1 root root 83644 Feb 7 2021 dmesg - lrwxrwxrwx 1 root root 8 Nov 6 2019 dnsdomainname -> hostname - lrwxrwxrwx 1 root root 8 Nov 6 2019 domainname -> hostname - -rwxr-xr-x 1 root root 34664 Sep 22 2020 echo - -rwxr-xr-x 1 root root 28 Nov 9 2020 egrep - -rwxr-xr-x 1 root root 34664 Sep 22 2020 false - -rwxr-xr-x 1 root root 28 Nov 9 2020 fgrep - -rwxr-xr-x 1 root root 71928 Feb 7 2021 findmnt - -rwsr-xr-x 1 root root 30112 Feb 26 2021 fusermount - -rwxr-xr-x 1 root root 210488 Nov 9 2020 grep - -rwxr-xr-x 2 root root 2346 Mar 2 2021 gunzip - -rwxr-xr-x 1 root root 6376 Mar 2 2021 gzexe - -rwxr-xr-x 1 root root 100952 Mar 2 2021 gzip - -rwxr-xr-x 1 root root 21916 Nov 6 2019 hostname - -rwxr-xr-x 1 root root 83980 Sep 22 2020 ln - -rwxr-xr-x 1 root root 55572 Feb 7 2020 login - -rwxr-xr-x 1 root root 153964 Sep 22 2020 ls - -rwxr-xr-x 1 root root 153124 Feb 7 2021 lsblk - -rwxr-xr-x 1 root root 96328 Sep 22 2020 mkdir - -rwxr-xr-x 1 root root 79912 Sep 22 2020 mknod - -rwxr-xr-x 1 root root 47048 Sep 22 2020 mktemp - -rwxr-xr-x 1 root root 58920 Feb 7 2021 more - -rwsr-xr-x 1 root root 50720 Feb 7 2021 mount - -rwxr-xr-x 1 root root 13856 Feb 7 2021 mountpoint - -rwxr-xr-x 1 root root 157996 Sep 22 2020 mv - lrwxrwxrwx 1 root root 8 Nov 6 2019 nisdomainname -> hostname - lrwxrwxrwx 1 root root 14 Apr 18 2021 pidof -> /sbin/killall5 - -rwxr-xr-x 1 root root 38824 Sep 22 2020 pwd - lrwxrwxrwx 1 root root 4 Feb 24 2021 rbash -> bash - -rwxr-xr-x 1 root root 46984 Sep 22 2020 readlink - -rwxr-xr-x 1 root root 75720 Sep 22 2020 rm - -rwxr-xr-x 1 root root 46984 Sep 22 2020 rmdir - -rwxr-xr-x 1 root root 22292 Sep 27 2020 run-parts - -rwxr-xr-x 1 root root 125036 Dec 22 2018 sed - lrwxrwxrwx 1 root root 4 Jul 22 03:48 sh -> dash - -rwxr-xr-x 1 root root 34696 Sep 22 2020 sleep - -rwxr-xr-x 1 root root 83880 Sep 22 2020 stty - -rwsr-xr-x 1 root root 79396 Feb 7 2021 su - -rwxr-xr-x 1 root root 34696 Sep 22 2020 sync - -rwxr-xr-x 1 root root 602584 Feb 16 2021 tar - -rwxr-xr-x 1 root root 13860 Sep 27 2020 tempfile - -rwxr-xr-x 1 root root 108520 Sep 22 2020 touch - -rwxr-xr-x 1 root root 34664 Sep 22 2020 true - -rwxr-xr-x 1 root root 17768 Feb 26 2021 ulockmgr_server - -rwsr-xr-x 1 root root 30236 Feb 7 2021 umount - -rwxr-xr-x 1 root root 34664 Sep 22 2020 uname - -rwxr-xr-x 2 root root 2346 Mar 2 2021 uncompress - -rwxr-xr-x 1 root root 153964 Sep 22 2020 vdir - -rwxr-xr-x 1 root root 63024 Feb 7 2021 wdctl - lrwxrwxrwx 1 root root 8 Nov 6 2019 ypdomainname -> hostname - -rwxr-xr-x 1 root root 1984 Mar 2 2021 zcat - -rwxr-xr-x 1 root root 1678 Mar 2 2021 zcmp - -rwxr-xr-x 1 root root 5880 Mar 2 2021 zdiff - -rwxr-xr-x 1 root root 29 Mar 2 2021 zegrep - -rwxr-xr-x 1 root root 29 Mar 2 2021 zfgrep - -rwxr-xr-x 1 root root 2081 Mar 2 2021 zforce - -rwxr-xr-x 1 root root 7585 Mar 2 2021 zgrep - -rwxr-xr-x 1 root root 2206 Mar 2 2021 zless - -rwxr-xr-x 1 root root 1842 Mar 2 2021 zmore - -rwxr-xr-x 1 root root 4553 Mar 2 2021 znew -I: user script /srv/workspace/pbuilder/15677/tmp/hooks/D02_print_environment finished + total 5784 + -rwxr-xr-x 1 root root 1367848 Feb 25 10:57 bash + -rwxr-xr-x 3 root root 38280 Jul 21 2020 bunzip2 + -rwxr-xr-x 3 root root 38280 Jul 21 2020 bzcat + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzcmp -> bzdiff + -rwxr-xr-x 1 root root 2225 Jul 21 2020 bzdiff + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzegrep -> bzgrep + -rwxr-xr-x 1 root root 4877 Sep 5 2019 bzexe + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzfgrep -> bzgrep + -rwxr-xr-x 1 root root 3775 Jul 21 2020 bzgrep + -rwxr-xr-x 3 root root 38280 Jul 21 2020 bzip2 + -rwxr-xr-x 1 root root 17768 Jul 21 2020 bzip2recover + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzless -> bzmore + -rwxr-xr-x 1 root root 1297 Jul 21 2020 bzmore + -rwxr-xr-x 1 root root 38824 Sep 23 2020 cat + -rwxr-xr-x 1 root root 71624 Sep 23 2020 chgrp + -rwxr-xr-x 1 root root 67528 Sep 23 2020 chmod + -rwxr-xr-x 1 root root 75752 Sep 23 2020 chown + -rwxr-xr-x 1 root root 157960 Sep 23 2020 cp + -rwxr-xr-x 1 root root 128724 Dec 11 2020 dash + -rwxr-xr-x 1 root root 124904 Sep 23 2020 date + -rwxr-xr-x 1 root root 92172 Sep 23 2020 dd + -rwxr-xr-x 1 root root 100752 Sep 23 2020 df + -rwxr-xr-x 1 root root 153964 Sep 23 2020 dir + -rwxr-xr-x 1 root root 83644 Feb 8 04:38 dmesg + lrwxrwxrwx 1 root root 8 Nov 8 2019 dnsdomainname -> hostname + lrwxrwxrwx 1 root root 8 Nov 8 2019 domainname -> hostname + -rwxr-xr-x 1 root root 34664 Sep 23 2020 echo + -rwxr-xr-x 1 root root 28 Nov 10 2020 egrep + -rwxr-xr-x 1 root root 34664 Sep 23 2020 false + -rwxr-xr-x 1 root root 28 Nov 10 2020 fgrep + -rwxr-xr-x 1 root root 71928 Feb 8 04:38 findmnt + -rwsr-xr-x 1 root root 30112 Feb 27 06:12 fusermount + -rwxr-xr-x 1 root root 210488 Nov 10 2020 grep + -rwxr-xr-x 2 root root 2346 Mar 3 13:30 gunzip + -rwxr-xr-x 1 root root 6376 Mar 3 13:30 gzexe + -rwxr-xr-x 1 root root 100952 Mar 3 13:30 gzip + -rwxr-xr-x 1 root root 21916 Nov 8 2019 hostname + -rwxr-xr-x 1 root root 83980 Sep 23 2020 ln + -rwxr-xr-x 1 root root 55572 Feb 8 2020 login + -rwxr-xr-x 1 root root 153964 Sep 23 2020 ls + -rwxr-xr-x 1 root root 153124 Feb 8 04:38 lsblk + -rwxr-xr-x 1 root root 96328 Sep 23 2020 mkdir + -rwxr-xr-x 1 root root 79912 Sep 23 2020 mknod + -rwxr-xr-x 1 root root 47048 Sep 23 2020 mktemp + -rwxr-xr-x 1 root root 58920 Feb 8 04:38 more + -rwsr-xr-x 1 root root 50720 Feb 8 04:38 mount + -rwxr-xr-x 1 root root 13856 Feb 8 04:38 mountpoint + -rwxr-xr-x 1 root root 157996 Sep 23 2020 mv + lrwxrwxrwx 1 root root 8 Nov 8 2019 nisdomainname -> hostname + lrwxrwxrwx 1 root root 14 Apr 19 05:38 pidof -> /sbin/killall5 + -rwxr-xr-x 1 root root 38824 Sep 23 2020 pwd + lrwxrwxrwx 1 root root 4 Feb 25 10:57 rbash -> bash + -rwxr-xr-x 1 root root 46984 Sep 23 2020 readlink + -rwxr-xr-x 1 root root 75720 Sep 23 2020 rm + -rwxr-xr-x 1 root root 46984 Sep 23 2020 rmdir + -rwxr-xr-x 1 root root 22292 Sep 28 2020 run-parts + -rwxr-xr-x 1 root root 125036 Dec 23 2018 sed + lrwxrwxrwx 1 root root 4 Jun 20 02:09 sh -> bash + lrwxrwxrwx 1 root root 4 Jun 18 23:27 sh.distrib -> dash + -rwxr-xr-x 1 root root 34696 Sep 23 2020 sleep + -rwxr-xr-x 1 root root 83880 Sep 23 2020 stty + -rwsr-xr-x 1 root root 79396 Feb 8 04:38 su + -rwxr-xr-x 1 root root 34696 Sep 23 2020 sync + -rwxr-xr-x 1 root root 602584 Feb 17 23:55 tar + -rwxr-xr-x 1 root root 13860 Sep 28 2020 tempfile + -rwxr-xr-x 1 root root 108520 Sep 23 2020 touch + -rwxr-xr-x 1 root root 34664 Sep 23 2020 true + -rwxr-xr-x 1 root root 17768 Feb 27 06:12 ulockmgr_server + -rwsr-xr-x 1 root root 30236 Feb 8 04:38 umount + -rwxr-xr-x 1 root root 34664 Sep 23 2020 uname + -rwxr-xr-x 2 root root 2346 Mar 3 13:30 uncompress + -rwxr-xr-x 1 root root 153964 Sep 23 2020 vdir + -rwxr-xr-x 1 root root 63024 Feb 8 04:38 wdctl + lrwxrwxrwx 1 root root 8 Nov 8 2019 ypdomainname -> hostname + -rwxr-xr-x 1 root root 1984 Mar 3 13:30 zcat + -rwxr-xr-x 1 root root 1678 Mar 3 13:30 zcmp + -rwxr-xr-x 1 root root 5880 Mar 3 13:30 zdiff + -rwxr-xr-x 1 root root 29 Mar 3 13:30 zegrep + -rwxr-xr-x 1 root root 29 Mar 3 13:30 zfgrep + -rwxr-xr-x 1 root root 2081 Mar 3 13:30 zforce + -rwxr-xr-x 1 root root 7585 Mar 3 13:30 zgrep + -rwxr-xr-x 1 root root 2206 Mar 3 13:30 zless + -rwxr-xr-x 1 root root 1842 Mar 3 13:30 zmore + -rwxr-xr-x 1 root root 4553 Mar 3 13:30 znew +I: user script /srv/workspace/pbuilder/11351/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -683,7 +719,7 @@ Get: 480 http://deb.debian.org/debian bullseye/main i386 texlive-latex-recommended all 2020.20210202-3 [14.5 MB] Get: 481 http://deb.debian.org/debian bullseye/main i386 texlive-pictures all 2020.20210202-3 [6743 kB] Get: 482 http://deb.debian.org/debian bullseye/main i386 texlive-latex-extra all 2020.20210202-3 [13.7 MB] -Fetched 252 MB in 3s (72.2 MB/s) +Fetched 252 MB in 1min 17s (3280 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package bsdextrautils. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19675 files and directories currently installed.) @@ -2674,8 +2710,25 @@ Writing extended state information... Building tag database... -> Finished parsing the build-deps +Reading package lists... +Building dependency tree... +Reading state information... +The following NEW packages will be installed: + usrmerge +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Need to get 13.0 kB of archives. +After this operation, 43.0 kB of additional disk space will be used. +Get:1 http://deb.debian.org/debian bullseye/main i386 usrmerge all 25 [13.0 kB] +debconf: delaying package configuration, since apt-utils is not installed +Fetched 13.0 kB in 0s (832 kB/s) +Selecting previously unselected package usrmerge. +(Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 56025 files and directories currently installed.) +Preparing to unpack .../archives/usrmerge_25_all.deb ... +Unpacking usrmerge (25) ... +Setting up usrmerge (25) ... +The system has been successfully converted. I: Building the package -I: Running cd /build/octave-optics-0.1.4/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b +I: Running cd /build/octave-optics-0.1.4/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b dpkg-buildpackage: info: source package octave-optics dpkg-buildpackage: info: source version 0.1.4-3 dpkg-buildpackage: info: source distribution unstable @@ -3541,91 +3594,265 @@ dh_octave_check -O--buildsystem=octave Checking package... Checking m files ... -[inst/mueller_checkmueller.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_checkmueller.m +[inst/zernike_name.m] +>>>>> /build/octave-optics-0.1.4/inst/zernike_name.m +***** assert (zernike_name (4), "defocus") +***** assert (zernike_name (22), "-") +***** error (zernike_name (0)) +***** error (zernike_name ([1 2])) +***** error (zernike_name (pi)) +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/zernike_osa_ansi_to_mn.m] +>>>>> /build/octave-optics-0.1.4/inst/zernike_osa_ansi_to_mn.m ***** test - % test type check - A1 = mueller_unity(); - A2 = char(A1); - t1 = mueller_checkmueller(A1); - t2 = mueller_checkmueller(A2); - assert(t1 && ~t2); + [m,n]=zernike_osa_ansi_to_mn(0); + assert([m n],[0 0]) + [m,n]=zernike_osa_ansi_to_mn(1); + assert([m n],[-1 1]) + [m,n]=zernike_osa_ansi_to_mn(2); + assert([m n],[1 1]) + [m,n]=zernike_osa_ansi_to_mn(3); + assert([m n],[-2 2]) + [m,n]=zernike_osa_ansi_to_mn(4); + assert([m n],[0 2]) + [m,n]=zernike_osa_ansi_to_mn(5); + assert([m n],[2 2]) + [m,n]=zernike_osa_ansi_to_mn(6); + assert([m n],[-3 3]) + [m,n]=zernike_osa_ansi_to_mn(7); + assert([m n],[-1 3]) + [m,n]=zernike_osa_ansi_to_mn(8); + assert([m n],[1 3]) + [m,n]=zernike_osa_ansi_to_mn(9); + assert([m n],[3 3]) + [m,n]=zernike_osa_ansi_to_mn(10); + assert([m n],[-4 4]) + [m,n]=zernike_osa_ansi_to_mn(11); + assert([m n],[-2 4]) + [m,n]=zernike_osa_ansi_to_mn(12); + assert([m n],[0 4]) + [m,n]=zernike_osa_ansi_to_mn(13); + assert([m n],[2 4]) + [m,n]=zernike_osa_ansi_to_mn(14); + assert([m n],[4 4]) + [m,n]=zernike_osa_ansi_to_mn(15); + assert([m n],[-5 5]) + [m,n]=zernike_osa_ansi_to_mn(16); + assert([m n],[-3 5]) + [m,n]=zernike_osa_ansi_to_mn(17); + assert([m n],[-1 5]) + [m,n]=zernike_osa_ansi_to_mn(18); + assert([m n],[1 5]) + [m,n]=zernike_osa_ansi_to_mn(19); + assert([m n],[3 5]) + [m,n]=zernike_osa_ansi_to_mn(20); + assert([m n],[5 5]) + [m,n]=zernike_osa_ansi_to_mn(21); + assert([m n],[-6 6]) + [m,n]=zernike_osa_ansi_to_mn(22); + assert([m n],[-4 6]) + [m,n]=zernike_osa_ansi_to_mn(23); + assert([m n],[-2 6]) + [m,n]=zernike_osa_ansi_to_mn(24); + assert([m n],[0 6]) + [m,n]=zernike_osa_ansi_to_mn(25); + assert([m n],[2 6]) + [m,n]=zernike_osa_ansi_to_mn(26); + assert([m n],[4 6]) + [m,n]=zernike_osa_ansi_to_mn(27); + assert([m n],[6 6]) + [m,n]=zernike_osa_ansi_to_mn(28); + assert([m n],[-7 7]) + [m,n]=zernike_osa_ansi_to_mn(29); + assert([m n],[-5 7]) + [m,n]=zernike_osa_ansi_to_mn(30); + assert([m n],[-3 7]) + [m,n]=zernike_osa_ansi_to_mn(31); + assert([m n],[-1 7]) + [m,n]=zernike_osa_ansi_to_mn(32); + assert([m n],[1 7]) + [m,n]=zernike_osa_ansi_to_mn(33); + assert([m n],[3 7]) + [m,n]=zernike_osa_ansi_to_mn(34); + assert([m n],[5 7]) + [m,n]=zernike_osa_ansi_to_mn(35); + assert([m n],[7 7]) +***** test + [m,n]=zernike_osa_ansi_to_mn([2 7 15 35]); + assert(m,[1 -1 -5 7]) + assert(n,[1 3 5 7]) +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/zernike_cartesian.m] +>>>>> /build/octave-optics-0.1.4/inst/zernike_cartesian.m +***** demo + t = linspace (-1, 1, 80); + [x, y] = meshgrid (t, t); + max_order = 16; + Z = zernike_cartesian (x, y, max_order); + for k = 1:max_order + subplot (4, 4, k) + factors = zeros (max_order, 1); + factors(k) = 1; + z = reshape (Z*factors, size (x)); + imagesc (z) + axis ("off", "equal") + zname = strrep (zernike_name (k), " ", "\n"); + title (zname) + endfor +***** demo + n=30; + [x,y,z] = sombrero (n); + z += 0.05 * peaks (x./4, y./4); + z += 0.02 * x; + figure + surf (x, y, z) + title ("Original sombrero + peaks + tilt"); + + ## approximate sombrero+peaks + d = 10; + x /= d; + y /= d; + max_order = 50; + Z = zernike_cartesian (x, y, max_order, false); + f = Z\z(:); + ## create approximated plot + z_approx = reshape (Z * f, n, n); + figure + surf (10 * x, 10 * y, z_approx) + title ("approximated"); +***** assert (zernike_cartesian (0, 0, 1), 1) +***** error (zernike_cartesian (0, 0, 0)) +***** error (zernike_cartesian (0, 0, pi)) +***** error (zernike_cartesian ()) +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/zernike_noll_to_mn.m] +>>>>> /build/octave-optics-0.1.4/inst/zernike_noll_to_mn.m +***** test + [m,n]=zernike_noll_to_mn(1); + assert([m n],[0 0]) +***** test + [m,n]=zernike_noll_to_mn(2); + assert([m n],[1 1]) +***** test + [m,n]=zernike_noll_to_mn(3); + assert([m n],[-1 1]) +***** test + [m,n]=zernike_noll_to_mn(4); + assert([m n],[0 2]) +***** test + [m,n]=zernike_noll_to_mn(5); + assert([m n],[-2 2]) +***** test + [m,n]=zernike_noll_to_mn(20); + assert([m n],[5 5]) +***** test + [m,n]=zernike_noll_to_mn(34); + assert([m n],[5 7]) +***** test + [m,n]=zernike_noll_to_mn(35); + assert([m n],[-7 7]) +***** test + [m,n]=zernike_noll_to_mn(36); + assert([m n],[7 7]) +***** test + [m,n]=zernike_noll_to_mn([2 5 8 35]); + assert(m,[1 -2 1 -7]) + assert(n,[1 2 3 7]) +10 tests, 10 passed, 0 known failure, 0 skipped +[inst/jones_rotator.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_rotator.m +***** test + % test default return value + A = jones_rotator(); + R = A*A-A; + assert(norm(R,inf), 0, 1e-9); ***** test - % test size check - A1 = mueller_unity(); - A2 = A1; - A2(5,5) = 1; - t1 = mueller_checkmueller(A1); - t2 = mueller_checkmueller(A2); - assert(t1 && ~t2); + % test serial application of rotator + angle = rand(1, 1); + A1 = jones_rotator(angle); + A2 = jones_rotator(angle*2); + R = A1*A1-A2; + assert(norm(R,inf), 0, 1e-9); ***** test - % test size of return value - A1 = mueller_mirror([2,3,4]); - A1{2,2,2} = 0; - A2 = mueller_mirror([4,3,2]); - A2{1,1,1} = 0; - t1 = mueller_checkmueller(A1); - t2 = mueller_checkmueller(A2); - assert((size(A1)==size(t1)) && (size(A2)==size(t2))); + % another test of serial application of rotator + angle1 = rand(1, 1); + angle2 = rand(1, 1); + A1 = jones_rotator(angle1); + A2 = jones_rotator(angle2); + A12 = jones_rotator(angle1+angle2); + R = A1*A2-A12; + assert(norm(R,inf), 0, 1e-9); ***** test - % test indivial elements of return value - A1 = mueller_mirror([2,3,4]); - A1{2,2,2} = ones(4,4)*0.99; - A2 = mueller_mirror([4,3,2]); - A2{1,1,1} = ones(4,4)*1.01; - t1 = mueller_checkmueller(A1); - t2 = mueller_checkmueller(A2); - assert(t1(1,1,1) && ~t1(2,2,2) && ~t2(1,1,1) && t2(2,2,2)); -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/mueller_lindiattenuator.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_lindiattenuator.m + % test different angle value interpretations + angle = rand(1, 1); + A1 = jones_rotator(angle); + A2 = jones_rotator(-angle*180/pi(), 'deg'); + R = A2*A1-jones_unity(); + assert(norm(R,inf), 0, 1e-9); + +***** test + % test size of return values + for dim = 1:5 + asize = randi([1 4], 1, dim); + R = rand(asize); + if numel(R) == 1 + R = {R}; + end + rsize = size(R); + C = jones_rotator(R); + csize = size(C); + assert(rsize == csize); + end +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/mueller_circdiattenuator.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_circdiattenuator.m ***** test % test default return value - A = mueller_lindiattenuator(); + A = mueller_circdiattenuator(); R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test % test equality of providing diattenuation or kx and ky d = rand(1, 1); - kx = 1; - ky = (1-d)./(1+d); - A1 = mueller_lindiattenuator(d); - A2 = mueller_lindiattenuator(kx, ky); + kr = 1; + kl = (1-d)./(1+d); + A1 = mueller_circdiattenuator(d); + A2 = mueller_circdiattenuator(kr, kl); R = A1-A2; assert(norm(R,inf), 0, 1e-9); ***** test - % test serial application of linear diattenuators - kx = rand(1, 1); - ky = rand(1, 1); - A1 = mueller_lindiattenuator(kx,ky); - A2 = mueller_lindiattenuator(kx*kx,ky*ky); + % test serial application of circular diattenuators + kr = rand(1, 1); + kl = rand(1, 1); + A1 = mueller_circdiattenuator(kr,kl); + A2 = mueller_circdiattenuator(kr*kr,kl*kl); R = A1*A1-A2; assert(norm(R,inf), 0, 1e-9); ***** test % another test of serial application of retarder elements - kx1 = rand(1, 1); - kx2 = rand(1, 1); - ky1 = rand(1, 1); - ky2 = rand(1, 1); - A1 = mueller_lindiattenuator(kx1,ky1); - A2 = mueller_lindiattenuator(kx2,ky2); - A12 = mueller_lindiattenuator(kx1*kx2,ky1*ky2); + kr1 = rand(1, 1); + kr2 = rand(1, 1); + kl1 = rand(1, 1); + kl2 = rand(1, 1); + A1 = mueller_circdiattenuator(kr1,kl1); + A2 = mueller_circdiattenuator(kr2,kl2); + A12 = mueller_circdiattenuator(kr1*kr2,kl1*kl2); R = A1*A2-A12; assert(norm(R,inf), 0, 1e-9); ***** test % test mode - kx = rand(1, 1); - ky = rand(1, 1); - A1 = mueller_lindiattenuator(kx,ky); - A2 = mueller_lindiattenuator(kx,ky,'int'); - A3 = mueller_lindiattenuator(sqrt(kx),sqrt(ky),'amp'); + kr = rand(1, 1); + kl = rand(1, 1); + A1 = mueller_circdiattenuator(kr,kl); + A2 = mueller_circdiattenuator(kr,kl,'int'); + A3 = mueller_circdiattenuator(sqrt(kr),sqrt(kl),'amp'); R1 = A1-A2; R2 = A1-A3; assert(norm(R1,inf)+norm(R2,inf), 0, 1e-9); @@ -3639,32 +3866,62 @@ R = {R}; end rsize = size(R); - C = mueller_lindiattenuator(R); + C = mueller_circdiattenuator(R); csize = size(C); assert(rsize == csize); end ***** test % another test correct size of return values - kx = rand(3,4,5); - ky = rand(5,4,3); - C = mueller_lindiattenuator(kx,ky); + kr = rand(3,4,5); + kl = rand(5,4,3); + C = mueller_circdiattenuator(kr,kl); csize = size(C); assert(csize == [5,4,5]); 7 tests, 7 passed, 0 known failure, 0 skipped -[inst/stokes_lpvertical.m] ->>>>> /build/octave-optics-0.1.4/inst/stokes_lpvertical.m +[inst/jones_mirror.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_mirror.m +***** test + % test mirror that is its own inverted element + A = jones_mirror(); + R = (A-1\A); + assert(norm(R,inf), 0, 1e-9); + +***** test + % test direct size parameter + for dim = 1:5 + asize = randi([1 4], 1, dim); + rsize = size(rand(asize)); + U = jones_mirror(rsize); + usize = size(U); + assert(usize == rsize); + end + +***** test + % test indirect size parameter + for dim = 1:5 + asize = randi([1 4], 1, dim); + C = cell(asize); + csize = size(C); + U = jones_mirror(C); + usize = size(U); + assert(usize == csize); + end + +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/jones_cpleft.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_cpleft.m ***** test % test default return value - V = stokes_lpvertical(); - R = V-[1;-1;0;0]; + V = jones_cpleft(); + R = V-[1;-1i]; assert(norm(R,inf), 0, 1e-9); ***** test % test return value - intensity = rand(1, 1); - V = stokes_lpvertical(intensity); - R = V-[1;-1;0;0]*intensity; + amplitude = rand(1, 1); + V = jones_cpleft(amplitude); + R = V-[1;-1i]*amplitude; assert(norm(R,inf), 0, 1e-9); ***** test @@ -3676,7 +3933,7 @@ R = {R}; end rsize = size(R); - C = stokes_lpvertical(R); + C = jones_cpleft(R); csize = size(C); assert(rsize == csize); end @@ -3731,163 +3988,65 @@ assert(rsize == csize); end 5 tests, 5 passed, 0 known failure, 0 skipped -[inst/mueller_ismueller.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_ismueller.m -***** test - % test type check - A1 = mueller_unity(); - A2 = char(A1); - t1 = mueller_ismueller(A1); - t2 = mueller_ismueller(A2); - assert(t1 && ~t2); - -***** test - % test size check - A1 = mueller_unity(); - A2 = A1; - A2(5,5) = 1; - t1 = mueller_ismueller(A1); - t2 = mueller_ismueller(A2); - assert(t1 && ~t2); - -***** test - % test size of return value - A1 = mueller_mirror([2,3,4]); - A1{2,2,2} = 0; - A2 = mueller_mirror([4,3,2]); - A2{1,1,1} = 0; - t1 = mueller_ismueller(A1); - t2 = mueller_ismueller(A2); - assert((size(A1)==size(t1)) && (size(A2)==size(t2))); - -***** test - % test indivial elements of return value - A1 = mueller_mirror([2,3,4]); - A1{2,2,2} = 0; - A2 = mueller_mirror([4,3,2]); - A2{1,1,1} = 0; - t1 = mueller_ismueller(A1); - t2 = mueller_ismueller(A2); - assert(t1(1,1,1) && ~t1(2,2,2) && ~t2(1,1,1) && t2(2,2,2)); -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/mueller_homogeneous_elliptic_diattenuator.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_homogeneous_elliptic_diattenuator.m +[inst/jones_rotate.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_rotate.m ***** test - % test default return value - A = mueller_homogeneous_elliptic_diattenuator(); + % default return value: unity matrix + A = jones_rotate(); R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test - % test modes - t0 = rand(1,1); - d = rand(1,1); - azimuth = rand(1,1); - ellipticity = rand(1,1); - A1 = mueller_homogeneous_elliptic_diattenuator(t0,d,azimuth,ellipticity); - A2 = mueller_homogeneous_elliptic_diattenuator(t0,d,azimuth*180/pi(),ellipticity,'deg'); - R = (A2-A1); + % rotation by 0 should do nothing + delay = rand(1,1); + JM = jones_linretarder(delay); + A = jones_rotate(JM, 0); + R = JM-A; assert(norm(R,inf), 0, 1e-9); ***** test - % another test correct size of return values - t0 = rand(3,4,5); - d = rand(4,5,6); - azimuth = rand(5,4,3); - ellipticity = rand(6,5,4); - C = mueller_homogeneous_elliptic_diattenuator(t0,d,azimuth,ellipticity); - csize = size(C); - assert(csize == [6,5,6]); -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/jones_lpplus45.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_lpplus45.m + % undo rotation by 2nd opposite rotation + delay = rand(1,1); + angle = rand(1, 1); + JM = jones_linretarder(delay); + A1 = jones_rotate(JM, angle); + A2 = jones_rotate(A1, -angle); + R = A2-JM; + assert(norm(R,inf), 0, 1e-9); + ***** test - % test default return value - V = jones_lpplus45(); - R = V-[1;1]; + % test serial application of rotation + delay = rand(1,1); + angle1 = rand(1, 1); + angle2 = rand(1, 1); + JM = jones_linretarder(delay); + A1 = jones_rotate(JM, angle1); + A2 = jones_rotate(A1, angle2); + A12 = jones_rotate(JM, angle1+angle2); + R = A2-A12; assert(norm(R,inf), 0, 1e-9); ***** test - % test return value - amplitude = rand(1, 1); - V = jones_lpplus45(amplitude); - R = V-[1;1]*amplitude; + % testing MODE parameter + angle = rand(1, 1); + A1 = jones_rotate(jones_waveplate(0.5), angle, 'rad'); + A2 = jones_rotate(jones_waveplate(0.5), angle*180/pi(), 'deg'); + R = A2-A1; assert(norm(R,inf), 0, 1e-9); ***** test - % test correct size of return values + % size of return value determined by 1st argument + angle = rand(1,1); for dim = 1:5 asize = randi([1 4], 1, dim); - R = rand(asize); - if numel(R) == 1 - R = {R}; - end - rsize = size(R); - C = jones_lpplus45(R); + rsize = size(rand(asize)); + C = jones_rotate(jones_unity(rsize), angle); csize = size(C); assert(rsize == csize); end -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/zernike_cartesian.m] ->>>>> /build/octave-optics-0.1.4/inst/zernike_cartesian.m -***** demo - t = linspace (-1, 1, 80); - [x, y] = meshgrid (t, t); - max_order = 16; - Z = zernike_cartesian (x, y, max_order); - for k = 1:max_order - subplot (4, 4, k) - factors = zeros (max_order, 1); - factors(k) = 1; - z = reshape (Z*factors, size (x)); - imagesc (z) - axis ("off", "equal") - zname = strrep (zernike_name (k), " ", "\n"); - title (zname) - endfor -***** demo - n=30; - [x,y,z] = sombrero (n); - z += 0.05 * peaks (x./4, y./4); - z += 0.02 * x; - figure - surf (x, y, z) - title ("Original sombrero + peaks + tilt"); - - ## approximate sombrero+peaks - d = 10; - x /= d; - y /= d; - max_order = 50; - Z = zernike_cartesian (x, y, max_order, false); - f = Z\z(:); - ## create approximated plot - z_approx = reshape (Z * f, n, n); - figure - surf (10 * x, 10 * y, z_approx) - title ("approximated"); -***** assert (zernike_cartesian (0, 0, 1), 1) -***** error (zernike_cartesian (0, 0, 0)) -***** error (zernike_cartesian (0, 0, pi)) -***** error (zernike_cartesian ()) -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/jones_lphorizontal.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_lphorizontal.m -***** test - % test default return value - V = jones_lphorizontal(); - R = V-[1;0]; - assert(norm(R,inf), 0, 1e-9); ***** test - % test return value - amplitude = rand(1, 1); - V = jones_lphorizontal(amplitude); - R = V-[1;0]*amplitude; - assert(norm(R,inf), 0, 1e-9); - -***** test - % test correct size of return values + % size if return value determined by 2nd argument for dim = 1:5 asize = randi([1 4], 1, dim); R = rand(asize); @@ -3895,37 +4054,98 @@ R = {R}; end rsize = size(R); - C = jones_lphorizontal(R); + C = jones_rotate(jones_unity(), R); csize = size(C); assert(rsize == csize); end -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/stokes_degpolarization.m] ->>>>> /build/octave-optics-0.1.4/inst/stokes_degpolarization.m + ***** test - % test size of return values + % size if return value determined by both argument + JM = jones_unity([4,3,2]); + angle = rand(2,3,4); + C = jones_rotate(JM, angle); + csize = size(C); + assert(csize == [4,3,4]); + +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/stokes_isstokes.m] +>>>>> /build/octave-optics-0.1.4/inst/stokes_isstokes.m +***** test + % test type check + V1 = stokes_unpolarized(); + V2 = char(V1); + t1 = stokes_isstokes(V1); + t2 = stokes_isstokes(V2); + assert(t1 && ~t2); + +***** test + % test size check + V1 = stokes_unpolarized(); + V2 = V1; + V2(5,1) = 1; + t1 = stokes_isstokes(V1); + t2 = stokes_isstokes(V2); + assert(t1 && ~t2); + +***** test + % test size of return value + V1 = stokes_unpolarized(ones(2,3,4)); + V1{2,2,2} = 0; + V2 = stokes_unpolarized(ones(4,3,2)); + V2{1,1,1} = 0; + t1 = stokes_isstokes(V1); + t2 = stokes_isstokes(V2); + assert((size(t1)==size(V1)) && (size(t2)==size(V2))); + +***** test + % test size of return value + V1 = stokes_unpolarized(ones(2,3,4)); + V2 = stokes_unpolarized(1); + [t1,t2] = stokes_isstokes(V1,V2); + assert((size(t1)==size(V1)) && (size(t2)==[1,1])); + +***** test + % test indivial elements of return value + V1 = stokes_unpolarized(ones(2,3,4)); + V1{2,2,2} = 0; + V2 = stokes_unpolarized(ones(4,3,2)); + V2{1,1,1} = 0; + t1 = stokes_isstokes(V1); + t2 = stokes_isstokes(V2); + assert(t1(1,1,1) && ~t1(2,2,2) && ~t2(1,1,1) && t2(2,2,2)); +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/jones_intensity.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_intensity.m +***** test + % test size and value of return values r1 = rand(2,3,4); - V1 = stokes_unpolarized(r1); + V1 = jones_lphorizontal(sqrt(r1)); r2 = rand(4,3,2); - V2 = stokes_unpolarized(r2); - [d1,d2] = stokes_degpolarization(V1,V2); - assert((size(d1)==size(r1)) && size(size(d2)==size(r2))); + V2 = jones_lpvertical(sqrt(r2)); + i1 = jones_intensity(V1); + i2 = jones_intensity(V2); + d1 = i1-r1; + d2 = i2-r2; + assert(max(d1(:))+max(d2(:)), 0, 1e-9); ***** test - % test return values - r1 = rand(1,1); - V1 = stokes_cpleft(r1)+stokes_unpolarized(1-r1); + % test size and value of return values + r1 = rand(2,3,4); + V1 = jones_lphorizontal(sqrt(r1)); r2 = rand(1,1); - V2 = stokes_unpolarized(r2); - [d1,d2] = stokes_degpolarization(V1,V2); - assert((d1==r1) && (d2==0)); + V2 = jones_lpvertical(sqrt(r2)); + [i1,i2] = jones_intensity(V1,V2); + d1 = i1-r1; + d2 = i2-r2; + assert(max(d1(:))+max(d2(:)), 0, 1e-9); 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/jones_mirror.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_mirror.m +[inst/jones_linpolarizer.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_linpolarizer.m ***** test - % test mirror that is its own inverted element - A = jones_mirror(); - R = (A-1\A); + % applying an ideal linear polarizer twice is identical to + % apply it once! + A = jones_linpolarizer(); + R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test @@ -3933,7 +4153,7 @@ for dim = 1:5 asize = randi([1 4], 1, dim); rsize = size(rand(asize)); - U = jones_mirror(rsize); + U = jones_linpolarizer(rsize); usize = size(U); assert(usize == rsize); end @@ -3944,71 +4164,68 @@ asize = randi([1 4], 1, dim); C = cell(asize); csize = size(C); - U = jones_mirror(C); + U = jones_linpolarizer(C); usize = size(U); assert(usize == csize); end 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/mueller_rotate.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_rotate.m +[inst/mueller_checkmueller.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_checkmueller.m ***** test - % default return value: unity matrix - A = mueller_rotate(); - R = A*A-A; - assert(norm(R,inf), 0, 1e-9); + % test type check + A1 = mueller_unity(); + A2 = char(A1); + t1 = mueller_checkmueller(A1); + t2 = mueller_checkmueller(A2); + assert(t1 && ~t2); ***** test - % rotation by 0 should do nothing - delay = rand(1,1); - M = mueller_linretarder(delay); - A = mueller_rotate(M, 0); - R = M-A; - assert(norm(R,inf), 0, 1e-9); + % test size check + A1 = mueller_unity(); + A2 = A1; + A2(5,5) = 1; + t1 = mueller_checkmueller(A1); + t2 = mueller_checkmueller(A2); + assert(t1 && ~t2); ***** test - % undo rotation by 2nd opposite rotation - delay = rand(1,1); - angle = rand(1, 1); - M = mueller_linretarder(delay); - A1 = mueller_rotate(M, angle); - A2 = mueller_rotate(A1, -angle); - R = A2-M; - assert(norm(R,inf), 0, 1e-9); + % test size of return value + A1 = mueller_mirror([2,3,4]); + A1{2,2,2} = 0; + A2 = mueller_mirror([4,3,2]); + A2{1,1,1} = 0; + t1 = mueller_checkmueller(A1); + t2 = mueller_checkmueller(A2); + assert((size(A1)==size(t1)) && (size(A2)==size(t2))); ***** test - % test serial application of rotation - delay = rand(1,1); - angle1 = rand(1, 1); - angle2 = rand(1, 1); - M = mueller_linretarder(delay); - A1 = mueller_rotate(M, angle1); - A2 = mueller_rotate(A1, angle2); - A12 = mueller_rotate(M, angle1+angle2); - R = A2-A12; - assert(norm(R,inf), 0, 1e-9); - + % test indivial elements of return value + A1 = mueller_mirror([2,3,4]); + A1{2,2,2} = ones(4,4)*0.99; + A2 = mueller_mirror([4,3,2]); + A2{1,1,1} = ones(4,4)*1.01; + t1 = mueller_checkmueller(A1); + t2 = mueller_checkmueller(A2); + assert(t1(1,1,1) && ~t1(2,2,2) && ~t2(1,1,1) && t2(2,2,2)); +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/jones_lpminus45.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_lpminus45.m ***** test - % testing MODE parameter - angle = rand(1, 1); - A1 = mueller_rotate(mueller_waveplate(0.5), angle, 'rad'); - A2 = mueller_rotate(mueller_waveplate(0.5), angle*180/pi(), 'deg'); - R = A2-A1; + % test default return value + V = jones_lpminus45(); + R = V-[1;-1]; assert(norm(R,inf), 0, 1e-9); ***** test - % size of return value determined by 1st argument - angle = rand(1,1); - for dim = 1:5 - asize = randi([1 4], 1, dim); - rsize = size(rand(asize)); - C = mueller_rotate(mueller_unity(rsize), angle); - csize = size(C); - assert(rsize == csize); - end + % test return value + amplitude = rand(1, 1); + V = jones_lpminus45(amplitude); + R = V-[1;-1]*amplitude; + assert(norm(R,inf), 0, 1e-9); ***** test - % size if return value determined by 2nd argument + % test correct size of return values for dim = 1:5 asize = randi([1 4], 1, dim); R = rand(asize); @@ -4016,44 +4233,24 @@ R = {R}; end rsize = size(R); - C = mueller_rotate(mueller_unity(), R); + C = jones_lpminus45(R); csize = size(C); assert(rsize == csize); end - -***** test - % size if return value determined by both argument - M = mueller_unity([4,3,2]); - angle = rand(2,3,4); - C = mueller_rotate(M, angle); - csize = size(C); - assert(csize == [4,3,4]); - -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/mueller_absorber.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_absorber.m +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/stokes_cpright.m] +>>>>> /build/octave-optics-0.1.4/inst/stokes_cpright.m ***** test % test default return value - A = mueller_absorber(); - R = A*A-A; - assert(norm(R,inf), 0, 1e-9); - -***** test - % test serial appliation of absorptive elements - absorption = rand(1, 1); - A1 = mueller_absorber(absorption); - A2 = mueller_absorber(1-(1-absorption)^2); - R = A1*A1-A2; + V = stokes_cpright(); + R = V-[1;0;0;1]; assert(norm(R,inf), 0, 1e-9); ***** test - % another test of serial appliation of absorptive elements - absorption1 = rand(1, 1); - absorption2 = rand(1, 1); - A1 = mueller_absorber(absorption1); - A2 = mueller_absorber(absorption2); - A12 = mueller_absorber(1-((1-absorption1)*(1-absorption2))); - R = A1*A2-A12; + % test return value + intensity = rand(1, 1); + V = stokes_cpright(intensity); + R = V-[1;0;0;1]*intensity; assert(norm(R,inf), 0, 1e-9); ***** test @@ -4065,47 +4262,36 @@ R = {R}; end rsize = size(R); - C = mueller_absorber(R); + C = stokes_cpright(R); csize = size(C); assert(rsize == csize); end -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/jones_rotator.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_rotator.m +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/jones_waveplate.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_waveplate.m ***** test % test default return value - A = jones_rotator(); + A = jones_waveplate(); R = A*A-A; assert(norm(R,inf), 0, 1e-9); - ***** test - % test serial application of rotator - angle = rand(1, 1); - A1 = jones_rotator(angle); - A2 = jones_rotator(angle*2); + % test serial application of absorptive elements + delay = rand(1, 1); + A1 = jones_waveplate(delay); + A2 = jones_waveplate(delay*2); R = A1*A1-A2; assert(norm(R,inf), 0, 1e-9); - ***** test - % another test of serial application of rotator - angle1 = rand(1, 1); - angle2 = rand(1, 1); - A1 = jones_rotator(angle1); - A2 = jones_rotator(angle2); - A12 = jones_rotator(angle1+angle2); + % another test of serial application of absorptive elements + delay1 = rand(1, 1); + delay2 = rand(1, 1); + A1 = jones_waveplate(delay1); + A2 = jones_waveplate(delay2); + A12 = jones_waveplate(delay1+delay2); R = A1*A2-A12; assert(norm(R,inf), 0, 1e-9); - ***** test - % test different angle value interpretations - angle = rand(1, 1); - A1 = jones_rotator(angle); - A2 = jones_rotator(-angle*180/pi(), 'deg'); - R = A2*A1-jones_unity(); - assert(norm(R,inf), 0, 1e-9); - -***** test - % test size of return values + % test correct size of return values for dim = 1:5 asize = randi([1 4], 1, dim); R = rand(asize); @@ -4113,11 +4299,26 @@ R = {R}; end rsize = size(R); - C = jones_rotator(R); + C = jones_waveplate(R); csize = size(C); - assert(rsize == csize); + assert(csize, rsize); end -5 tests, 5 passed, 0 known failure, 0 skipped +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/zernike_polar.m] +>>>>> /build/octave-optics-0.1.4/inst/zernike_polar.m +***** test + r = 0.2; + phi = 1.23; + n = 4; + ret = zernike_polar (r, phi, n); + assert (ret, [1 r*cos(phi) r*sin(phi) 2*r^2-1], 5*eps) +***** test + r = [0.5 0.8]; + phi = [pi/4 pi/4]; + n = 4; + ret = zernike_polar (r, phi, n); + assert (ret, [1 r(1)*cos(phi(1)) r(1)*sin(phi(1)) 2*r(1)^2-1; 1 r(2)*cos(phi(2)) r(2)*sin(phi(2)) 2*r(2)^2-1], 5*eps) +2 tests, 2 passed, 0 known failure, 0 skipped [inst/stokes_intensity.m] >>>>> /build/octave-optics-0.1.4/inst/stokes_intensity.m ***** test @@ -4139,19 +4340,19 @@ [i1,i2] = stokes_intensity(V1,V2); assert(all(i1==r1) && all(i2==r2)); 2 tests, 2 passed, 0 known failure, 0 skipped -[inst/jones_cpright.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_cpright.m +[inst/stokes_lpplus45.m] +>>>>> /build/octave-optics-0.1.4/inst/stokes_lpplus45.m ***** test % test default return value - V = jones_cpright(); - R = V-[1;1i]; + V = stokes_lpplus45(); + R = V-[1;0;1;0]; assert(norm(R,inf), 0, 1e-9); ***** test % test return value - amplitude = rand(1, 1); - V = jones_cpright(amplitude); - R = V-[1;1i]*amplitude; + intensity = rand(1, 1); + V = stokes_lpplus45(intensity); + R = V-[1;0;1;0]*intensity; assert(norm(R,inf), 0, 1e-9); ***** test @@ -4163,55 +4364,96 @@ R = {R}; end rsize = size(R); - C = jones_cpright(R); + C = stokes_lpplus45(R); csize = size(C); assert(rsize == csize); end 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/mueller_homogeneous_elliptic_retarder.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_homogeneous_elliptic_retarder.m +[inst/mueller_lindiattenuator.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_lindiattenuator.m ***** test % test default return value - A = mueller_homogeneous_elliptic_retarder(); + A = mueller_lindiattenuator(); R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test - % test modes - t0 = rand(1,1); - delay = rand(1,1); - azimuth = rand(1,1); - ellipticity = rand(1,1); - A1 = mueller_homogeneous_elliptic_retarder(t0,delay,azimuth,ellipticity); - A2 = mueller_homogeneous_elliptic_retarder(t0,delay*180/pi(),azimuth,ellipticity,'deg'); - A3 = mueller_homogeneous_elliptic_retarder(t0,delay/(2*pi()),azimuth,ellipticity,'wav'); - A4 = mueller_homogeneous_elliptic_retarder(t0,delay,azimuth*180/pi(),ellipticity,'rad','deg'); - R = (A2-A1)+(A3-A1)+(A4-A1); + % test equality of providing diattenuation or kx and ky + d = rand(1, 1); + kx = 1; + ky = (1-d)./(1+d); + A1 = mueller_lindiattenuator(d); + A2 = mueller_lindiattenuator(kx, ky); + R = A1-A2; + assert(norm(R,inf), 0, 1e-9); + +***** test + % test serial application of linear diattenuators + kx = rand(1, 1); + ky = rand(1, 1); + A1 = mueller_lindiattenuator(kx,ky); + A2 = mueller_lindiattenuator(kx*kx,ky*ky); + R = A1*A1-A2; + assert(norm(R,inf), 0, 1e-9); + +***** test + % another test of serial application of retarder elements + kx1 = rand(1, 1); + kx2 = rand(1, 1); + ky1 = rand(1, 1); + ky2 = rand(1, 1); + A1 = mueller_lindiattenuator(kx1,ky1); + A2 = mueller_lindiattenuator(kx2,ky2); + A12 = mueller_lindiattenuator(kx1*kx2,ky1*ky2); + R = A1*A2-A12; assert(norm(R,inf), 0, 1e-9); ***** test + % test mode + kx = rand(1, 1); + ky = rand(1, 1); + A1 = mueller_lindiattenuator(kx,ky); + A2 = mueller_lindiattenuator(kx,ky,'int'); + A3 = mueller_lindiattenuator(sqrt(kx),sqrt(ky),'amp'); + R1 = A1-A2; + R2 = A1-A3; + assert(norm(R1,inf)+norm(R2,inf), 0, 1e-9); + +***** test + % test correct size of return values + for dim = 1:5 + asize = randi([1 4], 1, dim); + R = rand(asize); + if numel(R) == 1 + R = {R}; + end + rsize = size(R); + C = mueller_lindiattenuator(R); + csize = size(C); + assert(rsize == csize); + end + +***** test % another test correct size of return values - t0 = rand(3,4,5); - delay = rand(4,5,6); - azimuth = rand(5,4,3); - ellipticity = rand(6,5,4); - C = mueller_homogeneous_elliptic_retarder(t0,delay,azimuth,ellipticity); + kx = rand(3,4,5); + ky = rand(5,4,3); + C = mueller_lindiattenuator(kx,ky); csize = size(C); - assert(csize == [6,5,6]); -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/stokes_lpminus45.m] ->>>>> /build/octave-optics-0.1.4/inst/stokes_lpminus45.m + assert(csize == [5,4,5]); +7 tests, 7 passed, 0 known failure, 0 skipped +[inst/jones_cpright.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_cpright.m ***** test % test default return value - V = stokes_lpminus45(); - R = V-[1;0;-1;0]; + V = jones_cpright(); + R = V-[1;1i]; assert(norm(R,inf), 0, 1e-9); ***** test % test return value - intensity = rand(1, 1); - V = stokes_lpminus45(intensity); - R = V-[1;0;-1;0]*intensity; + amplitude = rand(1, 1); + V = jones_cpright(amplitude); + R = V-[1;1i]*amplitude; assert(norm(R,inf), 0, 1e-9); ***** test @@ -4223,7 +4465,7 @@ R = {R}; end rsize = size(R); - C = stokes_lpminus45(R); + C = jones_cpright(R); csize = size(C); assert(rsize == csize); end @@ -4300,22 +4542,43 @@ csize = size(C); assert(csize == [5,4,5]); 7 tests, 7 passed, 0 known failure, 0 skipped -[inst/stokes_cpright.m] ->>>>> /build/octave-optics-0.1.4/inst/stokes_cpright.m +[inst/mueller_circretarder.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_circretarder.m ***** test % test default return value - V = stokes_cpright(); - R = V-[1;0;0;1]; + A = mueller_circretarder(); + R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test - % test return value - intensity = rand(1, 1); - V = stokes_cpright(intensity); - R = V-[1;0;0;1]*intensity; + % test serial application of circular retarder elements + phase = rand(1, 1); + A1 = mueller_circretarder(phase); + A2 = mueller_circretarder(phase*2); + R = A1*A1-A2; assert(norm(R,inf), 0, 1e-9); ***** test + % another test of serial application of retarder elements + phase1 = rand(1, 1); + phase2 = rand(1, 1); + A1 = mueller_circretarder(phase1); + A2 = mueller_circretarder(phase2); + A12 = mueller_circretarder(phase1+phase2); + R = A1*A2-A12; + assert(norm(R,inf), 0, 1e-9); + +***** test + % test mode + phase = rand(1, 1); + A1 = mueller_circretarder(phase); + A2 = mueller_circretarder(phase*180/pi(), 'deg'); + A3 = mueller_circretarder(phase/(2*pi()), 'wav'); + R1 = A1-A2; + R2 = A1-A3; + assert(norm(R1,inf)+norm(R2,inf), 0, 1e-9); + +***** test % test correct size of return values for dim = 1:5 asize = randi([1 4], 1, dim); @@ -4324,24 +4587,35 @@ R = {R}; end rsize = size(R); - C = stokes_cpright(R); + C = mueller_circretarder(R); csize = size(C); assert(rsize == csize); end -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/stokes_lpplus45.m] ->>>>> /build/octave-optics-0.1.4/inst/stokes_lpplus45.m +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/mueller_waveplate.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_waveplate.m ***** test % test default return value - V = stokes_lpplus45(); - R = V-[1;0;1;0]; + A = mueller_waveplate(); + R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test - % test return value - intensity = rand(1, 1); - V = stokes_lpplus45(intensity); - R = V-[1;0;1;0]*intensity; + % test serial application of absorptive elements + delay = rand(1, 1); + A1 = mueller_waveplate(delay); + A2 = mueller_waveplate(delay*2); + R = A1*A1-A2; + assert(norm(R,inf), 0, 1e-9); + +***** test + % another test of serial application of absorptive elements + delay1 = rand(1, 1); + delay2 = rand(1, 1); + A1 = mueller_waveplate(delay1); + A2 = mueller_waveplate(delay2); + A12 = mueller_waveplate(delay1+delay2); + R = A1*A2-A12; assert(norm(R,inf), 0, 1e-9); ***** test @@ -4353,70 +4627,128 @@ R = {R}; end rsize = size(R); - C = stokes_lpplus45(R); + C = mueller_waveplate(R); csize = size(C); assert(rsize == csize); end -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/jones_rotate.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_rotate.m +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/mueller_mirror.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_mirror.m ***** test - % default return value: unity matrix - A = jones_rotate(); - R = A*A-A; + % test mirror that is its own inverted element + A = mueller_mirror(); + R = (A-1\A); assert(norm(R,inf), 0, 1e-9); ***** test - % rotation by 0 should do nothing - delay = rand(1,1); - JM = jones_linretarder(delay); - A = jones_rotate(JM, 0); - R = JM-A; - assert(norm(R,inf), 0, 1e-9); + % test direct size parameter + for dim = 1:5 + asize = randi([1 4], 1, dim); + rsize = size(rand(asize)); + U = mueller_mirror(rsize); + usize = size(U); + assert(usize == rsize); + end ***** test - % undo rotation by 2nd opposite rotation - delay = rand(1,1); - angle = rand(1, 1); - JM = jones_linretarder(delay); - A1 = jones_rotate(JM, angle); - A2 = jones_rotate(A1, -angle); - R = A2-JM; + % test indirect size parameter + for dim = 1:5 + asize = randi([1 4], 1, dim); + C = cell(asize); + csize = size(C); + U = mueller_mirror(C); + usize = size(U); + assert(usize == csize); + end + +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/zernike_R_poly.m] +>>>>> /build/octave-optics-0.1.4/inst/zernike_R_poly.m +***** assert (zernike_R_poly (0, 0), [1]) +***** assert (zernike_R_poly (1, 1), [1 0]) +***** assert (zernike_R_poly (0, 2), [2 0 -1]) +***** assert (zernike_R_poly (2, 2), [1 0 0]) +***** assert (zernike_R_poly (1, 3), [3 0 -2 0]) +***** assert (zernike_R_poly (3, 3), [1 0 0 0]) +***** assert (zernike_R_poly (0, 4), [6 0 -6 0 1]) +***** assert (zernike_R_poly (2, 4), [4 0 -3 0 0]) +***** assert (zernike_R_poly (4, 4), [1 0 0 0 0]) +***** assert (zernike_R_poly (1, 5), [10 0 -12 0 3 0]) +***** assert (zernike_R_poly (3, 5), [5 0 -4 0 0 0]) +***** assert (zernike_R_poly (5, 5), [1 0 0 0 0 0]) +***** assert (zernike_R_poly (0, 6), [20 0 -30 0 12 0 -1]) +***** assert (zernike_R_poly (2, 6), [15 0 -20 0 6 0 0]) +***** assert (zernike_R_poly (4, 6), [ 6 0 -5 0 0 0 0]) +***** assert (zernike_R_poly (6, 6), [ 1 0 0 0 0 0 0]) +16 tests, 16 passed, 0 known failure, 0 skipped +[inst/stokes_degpolarization.m] +>>>>> /build/octave-optics-0.1.4/inst/stokes_degpolarization.m +***** test + % test size of return values + r1 = rand(2,3,4); + V1 = stokes_unpolarized(r1); + r2 = rand(4,3,2); + V2 = stokes_unpolarized(r2); + [d1,d2] = stokes_degpolarization(V1,V2); + assert((size(d1)==size(r1)) && size(size(d2)==size(r2))); + +***** test + % test return values + r1 = rand(1,1); + V1 = stokes_cpleft(r1)+stokes_unpolarized(1-r1); + r2 = rand(1,1); + V2 = stokes_unpolarized(r2); + [d1,d2] = stokes_degpolarization(V1,V2); + assert((d1==r1) && (d2==0)); +2 tests, 2 passed, 0 known failure, 0 skipped +[inst/mueller_homogeneous_elliptic_retarder.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_homogeneous_elliptic_retarder.m +***** test + % test default return value + A = mueller_homogeneous_elliptic_retarder(); + R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test - % test serial application of rotation + % test modes + t0 = rand(1,1); delay = rand(1,1); - angle1 = rand(1, 1); - angle2 = rand(1, 1); - JM = jones_linretarder(delay); - A1 = jones_rotate(JM, angle1); - A2 = jones_rotate(A1, angle2); - A12 = jones_rotate(JM, angle1+angle2); - R = A2-A12; + azimuth = rand(1,1); + ellipticity = rand(1,1); + A1 = mueller_homogeneous_elliptic_retarder(t0,delay,azimuth,ellipticity); + A2 = mueller_homogeneous_elliptic_retarder(t0,delay*180/pi(),azimuth,ellipticity,'deg'); + A3 = mueller_homogeneous_elliptic_retarder(t0,delay/(2*pi()),azimuth,ellipticity,'wav'); + A4 = mueller_homogeneous_elliptic_retarder(t0,delay,azimuth*180/pi(),ellipticity,'rad','deg'); + R = (A2-A1)+(A3-A1)+(A4-A1); assert(norm(R,inf), 0, 1e-9); ***** test - % testing MODE parameter - angle = rand(1, 1); - A1 = jones_rotate(jones_waveplate(0.5), angle, 'rad'); - A2 = jones_rotate(jones_waveplate(0.5), angle*180/pi(), 'deg'); - R = A2-A1; + % another test correct size of return values + t0 = rand(3,4,5); + delay = rand(4,5,6); + azimuth = rand(5,4,3); + ellipticity = rand(6,5,4); + C = mueller_homogeneous_elliptic_retarder(t0,delay,azimuth,ellipticity); + csize = size(C); + assert(csize == [6,5,6]); +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/stokes_cpleft.m] +>>>>> /build/octave-optics-0.1.4/inst/stokes_cpleft.m +***** test + % test default return value + V = stokes_cpleft(); + R = V-[1;0;0;-1]; assert(norm(R,inf), 0, 1e-9); ***** test - % size of return value determined by 1st argument - angle = rand(1,1); - for dim = 1:5 - asize = randi([1 4], 1, dim); - rsize = size(rand(asize)); - C = jones_rotate(jones_unity(rsize), angle); - csize = size(C); - assert(rsize == csize); - end + % test return value + intensity = rand(1, 1); + V = stokes_cpleft(intensity); + R = V-[1;0;0;-1]*intensity; + assert(norm(R,inf), 0, 1e-9); ***** test - % size if return value determined by 2nd argument + % test correct size of return values for dim = 1:5 asize = randi([1 4], 1, dim); R = rand(asize); @@ -4424,33 +4756,116 @@ R = {R}; end rsize = size(R); - C = jones_rotate(jones_unity(), R); + C = stokes_cpleft(R); csize = size(C); assert(rsize == csize); end - +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/mueller_stokes.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_stokes.m +***** error A = mueller_stokes(); ***** test - % size if return value determined by both argument - JM = jones_unity([4,3,2]); - angle = rand(2,3,4); - C = jones_rotate(JM, angle); - csize = size(C); - assert(csize == [4,3,4]); - -8 tests, 8 passed, 0 known failure, 0 skipped -[inst/stokes_unpolarized.m] ->>>>> /build/octave-optics-0.1.4/inst/stokes_unpolarized.m + % test singular argument, should just be returned + M = mueller_waveplate(rand(1,1),'wav'); + MM = mueller_stokes(M); + R = MM-M; + assert(norm(R,inf), 0, 1e-9); +***** test + % send light with horizontal linear polarization through a rotating + % 1/2-waveplate and subsequent polarizer: final intensity should + % vary as cos(2*angle)^2. + % This test feeds mueller_stokes() with one cell array only! + angles = 0:360; + wps = mueller_rotate(mueller_waveplate(0.5, 'wav'), angles, 'deg'); + lightin = stokes_lphorizontal(); + lightout = mueller_stokes(mueller_linpolarizer(),wps,lightin); + ilightout = stokes_intensity(lightout); + R = ilightout-(cosd(angles.*2).^2); + assert(norm(R,inf), 0, 1e-9); +***** test + % this is a more thorough test: send light with horizontal linear + % polarization through two rotating 1/2-waveplates (combining to + % a 1/1-waveplate) and subsequent polarizer: final intensity + % should not vary! + % This test feeds mueller_stokes() with two cell arrays. + angles = 0:360; + wps1 = mueller_rotate(mueller_waveplate(0.5, 'wav'), angles, 'deg'); + wps2 = mueller_rotate(mueller_waveplate(0.5, 'wav'), angles, 'deg'); + lightin = stokes_lphorizontal(); + lightout = mueller_stokes(mueller_linpolarizer(),wps2,wps1,lightin); + ilightout = stokes_intensity(lightout); + R = ilightout-1; + assert(norm(R,inf), 0, 1e-9); +***** demo + angles = 0:360; + wps = mueller_rotate(mueller_waveplate(0.5, 'wav'), angles, 'deg'); + lightin = stokes_lphorizontal(); + lightout = mueller_stokes(mueller_linpolarizer(),wps,lightin); + ilightout = stokes_intensity(lightout); + figure(); + plot(angles, ilightout); + title('transmitted intensity [should look like cos(2*a)^2'); + xlabel('angle of halfwave plate axis'); + ylabel('intensity [a.u.]'); + legend('transmitted intensity'); + % ----------------------------------------------------------------- + % example 1: send light with horizontal linear polarization through + % a rotating, perfect halfwave plate and subsequent polarizer: + % final intensity should vary as cos(2*angle)^2. +***** demo + angles = 0:360; + wps = mueller_rotate(mueller_waveplate(0.5, 'wav'), angles, 'deg'); + wps2 = mueller_rotate(mueller_waveplate(0.45, 'wav'), angles, 'deg'); + lightin = stokes_lphorizontal(); + lightout = mueller_stokes(mueller_linpolarizer(),wps,lightin); + ilightout = stokes_intensity(lightout); + lightout2 = mueller_stokes(mueller_linpolarizer(),wps2,lightin); + ilightout2 = stokes_intensity(lightout2); + figure(); + plot(angles, ilightout, angles, ilightout2); + title('transmitted intensity with perfect and non-perfect halfwave plate'); + xlabel('angle of halfwave plate axis'); + ylabel('intensity [a.u.]'); + legend('perfect (0.5-)plate', 'non-perfect (0.45-)plate'); + % ----------------------------------------------------------------- + % example 2: send light with horizontal linear polarization through + % a rotating, non-perfect halfwave plate and subsequent polarizer: + % final intensity should deviate from the perfect cos(2*angle)^2 + % curve, never reaching zero transmission +***** demo + angle = 0:360; + delay = 0:0.05:1; + % angles are in rows, delays in columns + angle_all = repmat(angle, [length(delay), 1]); + delay_all = repmat(delay', [1, length(angle)]); + wps3 = mueller_waveplate(delay_all, 'wav'); + wps3 = mueller_rotate(wps3, angle_all, 'deg'); + lightin = stokes_lphorizontal(); + lightout3 = mueller_stokes(mueller_linpolarizer(),wps3,lightin); + ilightout3 = stokes_intensity(lightout3); + figure(); + plot(angle, ilightout3); + title('transmitted intensity with plates of increasing delay'); + xlabel('angle of plate axis'); + ylabel('intensity [a.u.]'); + legend(cellfun(@(x)sprintf('delay=%.2f',x),num2cell(delay),'UniformOutput',false)); + % ----------------------------------------------------------------- + % example 3: send light with horizontal linear polarization through + % rotating waveplates with increasing delay and subsequent polarizer +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/stokes_lpvertical.m] +>>>>> /build/octave-optics-0.1.4/inst/stokes_lpvertical.m ***** test % test default return value - V = stokes_unpolarized(); - R = V-[1;0;0;0]; + V = stokes_lpvertical(); + R = V-[1;-1;0;0]; assert(norm(R,inf), 0, 1e-9); ***** test % test return value intensity = rand(1, 1); - V = stokes_unpolarized(intensity); - R = V-[1;0;0;0]*intensity; + V = stokes_lpvertical(intensity); + R = V-[1;-1;0;0]*intensity; assert(norm(R,inf), 0, 1e-9); ***** test @@ -4462,39 +4877,28 @@ R = {R}; end rsize = size(R); - C = stokes_unpolarized(R); + C = stokes_lpvertical(R); csize = size(C); assert(rsize == csize); end 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/mueller_depolarizer.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_depolarizer.m +[inst/jones_lpplus45.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_lpplus45.m ***** test % test default return value - A = mueller_depolarizer(); - R = A*A-A; - assert(norm(R,inf), 0, 1e-9); - -***** test - % test serial application of matrix - depolarization = rand(1, 1); - A1 = mueller_depolarizer(depolarization); - A2 = mueller_depolarizer(depolarization^2); - R = A1*A1-A2; + V = jones_lpplus45(); + R = V-[1;1]; assert(norm(R,inf), 0, 1e-9); ***** test - % another test of serial application - depolarization1 = rand(1, 1); - depolarization2 = rand(1, 1); - A1 = mueller_depolarizer(depolarization1); - A2 = mueller_depolarizer(depolarization2); - A12 = mueller_depolarizer(depolarization1*depolarization2); - R = A1*A2-A12; + % test return value + amplitude = rand(1, 1); + V = jones_lpplus45(amplitude); + R = V-[1;1]*amplitude; assert(norm(R,inf), 0, 1e-9); ***** test - % test size of return value + % test correct size of return values for dim = 1:5 asize = randi([1 4], 1, dim); R = rand(asize); @@ -4502,62 +4906,96 @@ R = {R}; end rsize = size(R); - C = mueller_depolarizer(R); + C = jones_lpplus45(R); csize = size(C); assert(rsize == csize); end -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/zernike_polar.m] ->>>>> /build/octave-optics-0.1.4/inst/zernike_polar.m +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/jones_unity.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_unity.m ***** test - r = 0.2; - phi = 1.23; - n = 4; - ret = zernike_polar (r, phi, n); - assert (ret, [1 r*cos(phi) r*sin(phi) 2*r^2-1], 5*eps) + A = jones_unity(); + R = A*A-A; + assert(norm(R,inf), 0, 1e-9); + ***** test - r = [0.5 0.8]; - phi = [pi/4 pi/4]; - n = 4; - ret = zernike_polar (r, phi, n); - assert (ret, [1 r(1)*cos(phi(1)) r(1)*sin(phi(1)) 2*r(1)^2-1; 1 r(2)*cos(phi(2)) r(2)*sin(phi(2)) 2*r(2)^2-1], 5*eps) -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/mueller_rotator.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_rotator.m + for dim = 1:5 + asize = randi([1 4], 1, dim); + C = cell(asize); + csize = size(C); + U = jones_unity(C); + usize = size(U); + assert(usize == csize); + end + ***** test - % test default return value - A = mueller_rotator(); + for dim = 1:5 + asize = randi([1 4], 1, dim); + rsize = size(rand(asize)); + U = jones_unity(rsize); + usize = size(U); + assert(usize == rsize); + end +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/mueller_rotate.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_rotate.m +***** test + % default return value: unity matrix + A = mueller_rotate(); R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test - % test serial application of rotator + % rotation by 0 should do nothing + delay = rand(1,1); + M = mueller_linretarder(delay); + A = mueller_rotate(M, 0); + R = M-A; + assert(norm(R,inf), 0, 1e-9); + +***** test + % undo rotation by 2nd opposite rotation + delay = rand(1,1); angle = rand(1, 1); - A1 = mueller_rotator(angle); - A2 = mueller_rotator(angle*2); - R = A1*A1-A2; + M = mueller_linretarder(delay); + A1 = mueller_rotate(M, angle); + A2 = mueller_rotate(A1, -angle); + R = A2-M; assert(norm(R,inf), 0, 1e-9); ***** test - % another test of serial application of rotator + % test serial application of rotation + delay = rand(1,1); angle1 = rand(1, 1); angle2 = rand(1, 1); - A1 = mueller_rotator(angle1); - A2 = mueller_rotator(angle2); - A12 = mueller_rotator(angle1+angle2); - R = A1*A2-A12; + M = mueller_linretarder(delay); + A1 = mueller_rotate(M, angle1); + A2 = mueller_rotate(A1, angle2); + A12 = mueller_rotate(M, angle1+angle2); + R = A2-A12; assert(norm(R,inf), 0, 1e-9); ***** test - % test different angle value interpretations + % testing MODE parameter angle = rand(1, 1); - A1 = mueller_rotator(angle); - A2 = mueller_rotator(-angle*180/pi(), 'deg'); - R = A2*A1-mueller_unity(); + A1 = mueller_rotate(mueller_waveplate(0.5), angle, 'rad'); + A2 = mueller_rotate(mueller_waveplate(0.5), angle*180/pi(), 'deg'); + R = A2-A1; assert(norm(R,inf), 0, 1e-9); ***** test - % test size of return values + % size of return value determined by 1st argument + angle = rand(1,1); + for dim = 1:5 + asize = randi([1 4], 1, dim); + rsize = size(rand(asize)); + C = mueller_rotate(mueller_unity(rsize), angle); + csize = size(C); + assert(rsize == csize); + end + +***** test + % size if return value determined by 2nd argument for dim = 1:5 asize = randi([1 4], 1, dim); R = rand(asize); @@ -4565,15 +5003,24 @@ R = {R}; end rsize = size(R); - C = mueller_rotator(R); + C = mueller_rotate(mueller_unity(), R); csize = size(C); assert(rsize == csize); end -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/jones_unity.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_unity.m + ***** test - A = jones_unity(); + % size if return value determined by both argument + M = mueller_unity([4,3,2]); + angle = rand(2,3,4); + C = mueller_rotate(M, angle); + csize = size(C); + assert(csize == [4,3,4]); + +8 tests, 8 passed, 0 known failure, 0 skipped +[inst/mueller_unity.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_unity.m +***** test + A = mueller_unity(); R = A*A-A; assert(norm(R,inf), 0, 1e-9); @@ -4582,7 +5029,7 @@ asize = randi([1 4], 1, dim); C = cell(asize); csize = size(C); - U = jones_unity(C); + U = mueller_unity(C); usize = size(U); assert(usize == csize); end @@ -4591,11 +5038,42 @@ for dim = 1:5 asize = randi([1 4], 1, dim); rsize = size(rand(asize)); - U = jones_unity(rsize); + U = mueller_unity(rsize); usize = size(U); assert(usize == rsize); end 3 tests, 3 passed, 0 known failure, 0 skipped +[inst/mueller_linpolarizer.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_linpolarizer.m +***** test + % applying a linear polarizer twice is identical to + % apply it once! + A = mueller_linpolarizer(); + R = A*A-A; + assert(norm(R,inf), 0, 1e-9); + +***** test + % test direct size parameter + for dim = 1:5 + asize = randi([1 4], 1, dim); + rsize = size(rand(asize)); + U = mueller_linpolarizer(rsize); + usize = size(U); + assert(usize == rsize); + end + +***** test + % test indirect size parameter + for dim = 1:5 + asize = randi([1 4], 1, dim); + C = cell(asize); + csize = size(C); + U = mueller_linpolarizer(C); + usize = size(U); + assert(usize == csize); + end + +3 tests, 3 passed, 0 known failure, 0 skipped [inst/jones.m] >>>>> /build/octave-optics-0.1.4/inst/jones.m ***** error A = jones(); @@ -4688,161 +5166,19 @@ % example 3: send light with horizontal linear polarization through % rotating waveplates with increasing delay and subsequent polarizer 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/mueller_stokes.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_stokes.m -***** error A = mueller_stokes(); -***** test - % test singular argument, should just be returned - M = mueller_waveplate(rand(1,1),'wav'); - MM = mueller_stokes(M); - R = MM-M; - assert(norm(R,inf), 0, 1e-9); -***** test - % send light with horizontal linear polarization through a rotating - % 1/2-waveplate and subsequent polarizer: final intensity should - % vary as cos(2*angle)^2. - % This test feeds mueller_stokes() with one cell array only! - angles = 0:360; - wps = mueller_rotate(mueller_waveplate(0.5, 'wav'), angles, 'deg'); - lightin = stokes_lphorizontal(); - lightout = mueller_stokes(mueller_linpolarizer(),wps,lightin); - ilightout = stokes_intensity(lightout); - R = ilightout-(cosd(angles.*2).^2); - assert(norm(R,inf), 0, 1e-9); -***** test - % this is a more thorough test: send light with horizontal linear - % polarization through two rotating 1/2-waveplates (combining to - % a 1/1-waveplate) and subsequent polarizer: final intensity - % should not vary! - % This test feeds mueller_stokes() with two cell arrays. - angles = 0:360; - wps1 = mueller_rotate(mueller_waveplate(0.5, 'wav'), angles, 'deg'); - wps2 = mueller_rotate(mueller_waveplate(0.5, 'wav'), angles, 'deg'); - lightin = stokes_lphorizontal(); - lightout = mueller_stokes(mueller_linpolarizer(),wps2,wps1,lightin); - ilightout = stokes_intensity(lightout); - R = ilightout-1; - assert(norm(R,inf), 0, 1e-9); -***** demo - angles = 0:360; - wps = mueller_rotate(mueller_waveplate(0.5, 'wav'), angles, 'deg'); - lightin = stokes_lphorizontal(); - lightout = mueller_stokes(mueller_linpolarizer(),wps,lightin); - ilightout = stokes_intensity(lightout); - figure(); - plot(angles, ilightout); - title('transmitted intensity [should look like cos(2*a)^2'); - xlabel('angle of halfwave plate axis'); - ylabel('intensity [a.u.]'); - legend('transmitted intensity'); - % ----------------------------------------------------------------- - % example 1: send light with horizontal linear polarization through - % a rotating, perfect halfwave plate and subsequent polarizer: - % final intensity should vary as cos(2*angle)^2. -***** demo - angles = 0:360; - wps = mueller_rotate(mueller_waveplate(0.5, 'wav'), angles, 'deg'); - wps2 = mueller_rotate(mueller_waveplate(0.45, 'wav'), angles, 'deg'); - lightin = stokes_lphorizontal(); - lightout = mueller_stokes(mueller_linpolarizer(),wps,lightin); - ilightout = stokes_intensity(lightout); - lightout2 = mueller_stokes(mueller_linpolarizer(),wps2,lightin); - ilightout2 = stokes_intensity(lightout2); - figure(); - plot(angles, ilightout, angles, ilightout2); - title('transmitted intensity with perfect and non-perfect halfwave plate'); - xlabel('angle of halfwave plate axis'); - ylabel('intensity [a.u.]'); - legend('perfect (0.5-)plate', 'non-perfect (0.45-)plate'); - % ----------------------------------------------------------------- - % example 2: send light with horizontal linear polarization through - % a rotating, non-perfect halfwave plate and subsequent polarizer: - % final intensity should deviate from the perfect cos(2*angle)^2 - % curve, never reaching zero transmission -***** demo - angle = 0:360; - delay = 0:0.05:1; - % angles are in rows, delays in columns - angle_all = repmat(angle, [length(delay), 1]); - delay_all = repmat(delay', [1, length(angle)]); - wps3 = mueller_waveplate(delay_all, 'wav'); - wps3 = mueller_rotate(wps3, angle_all, 'deg'); - lightin = stokes_lphorizontal(); - lightout3 = mueller_stokes(mueller_linpolarizer(),wps3,lightin); - ilightout3 = stokes_intensity(lightout3); - figure(); - plot(angle, ilightout3); - title('transmitted intensity with plates of increasing delay'); - xlabel('angle of plate axis'); - ylabel('intensity [a.u.]'); - legend(cellfun(@(x)sprintf('delay=%.2f',x),num2cell(delay),'UniformOutput',false)); - % ----------------------------------------------------------------- - % example 3: send light with horizontal linear polarization through - % rotating waveplates with increasing delay and subsequent polarizer -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/mueller_linretarder.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_linretarder.m -***** test - % test default return value - A = mueller_linretarder(); - R = A*A-A; - assert(norm(R,inf), 0, 1e-9); - -***** test - % test serial application of linear retarder elements - phase = rand(1, 1); - A1 = mueller_linretarder(phase); - A2 = mueller_linretarder(phase*2); - R = A1*A1-A2; - assert(norm(R,inf), 0, 1e-9); - -***** test - % another test of serial application of retarder elements - phase1 = rand(1, 1); - phase2 = rand(1, 1); - A1 = mueller_linretarder(phase1); - A2 = mueller_linretarder(phase2); - A12 = mueller_linretarder(phase1+phase2); - R = A1*A2-A12; - assert(norm(R,inf), 0, 1e-9); - -***** test - % test mode - phase = rand(1, 1); - A1 = mueller_linretarder(phase); - A2 = mueller_linretarder(phase*180/pi(), 'deg'); - A3 = mueller_linretarder(phase/(2*pi()), 'wav'); - R1 = A1-A2; - R2 = A1-A3; - assert(norm(R1,inf)+norm(R2,inf), 0, 1e-9); - -***** test - % test correct size of return values - for dim = 1:5 - asize = randi([1 4], 1, dim); - R = rand(asize); - if numel(R) == 1 - R = {R}; - end - rsize = size(R); - C = mueller_linretarder(R); - csize = size(C); - assert(rsize == csize); - end -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/jones_lpminus45.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_lpminus45.m +[inst/stokes_lpminus45.m] +>>>>> /build/octave-optics-0.1.4/inst/stokes_lpminus45.m ***** test % test default return value - V = jones_lpminus45(); - R = V-[1;-1]; + V = stokes_lpminus45(); + R = V-[1;0;-1;0]; assert(norm(R,inf), 0, 1e-9); ***** test % test return value - amplitude = rand(1, 1); - V = jones_lpminus45(amplitude); - R = V-[1;-1]*amplitude; + intensity = rand(1, 1); + V = stokes_lpminus45(intensity); + R = V-[1;0;-1;0]*intensity; assert(norm(R,inf), 0, 1e-9); ***** test @@ -4854,68 +5190,24 @@ R = {R}; end rsize = size(R); - C = jones_lpminus45(R); + C = stokes_lpminus45(R); csize = size(C); assert(rsize == csize); end 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/zernike_R_poly.m] ->>>>> /build/octave-optics-0.1.4/inst/zernike_R_poly.m -***** assert (zernike_R_poly (0, 0), [1]) -***** assert (zernike_R_poly (1, 1), [1 0]) -***** assert (zernike_R_poly (0, 2), [2 0 -1]) -***** assert (zernike_R_poly (2, 2), [1 0 0]) -***** assert (zernike_R_poly (1, 3), [3 0 -2 0]) -***** assert (zernike_R_poly (3, 3), [1 0 0 0]) -***** assert (zernike_R_poly (0, 4), [6 0 -6 0 1]) -***** assert (zernike_R_poly (2, 4), [4 0 -3 0 0]) -***** assert (zernike_R_poly (4, 4), [1 0 0 0 0]) -***** assert (zernike_R_poly (1, 5), [10 0 -12 0 3 0]) -***** assert (zernike_R_poly (3, 5), [5 0 -4 0 0 0]) -***** assert (zernike_R_poly (5, 5), [1 0 0 0 0 0]) -***** assert (zernike_R_poly (0, 6), [20 0 -30 0 12 0 -1]) -***** assert (zernike_R_poly (2, 6), [15 0 -20 0 6 0 0]) -***** assert (zernike_R_poly (4, 6), [ 6 0 -5 0 0 0 0]) -***** assert (zernike_R_poly (6, 6), [ 1 0 0 0 0 0 0]) -16 tests, 16 passed, 0 known failure, 0 skipped -[inst/jones_intensity.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_intensity.m -***** test - % test size and value of return values - r1 = rand(2,3,4); - V1 = jones_lphorizontal(sqrt(r1)); - r2 = rand(4,3,2); - V2 = jones_lpvertical(sqrt(r2)); - i1 = jones_intensity(V1); - i2 = jones_intensity(V2); - d1 = i1-r1; - d2 = i2-r2; - assert(max(d1(:))+max(d2(:)), 0, 1e-9); - -***** test - % test size and value of return values - r1 = rand(2,3,4); - V1 = jones_lphorizontal(sqrt(r1)); - r2 = rand(1,1); - V2 = jones_lpvertical(sqrt(r2)); - [i1,i2] = jones_intensity(V1,V2); - d1 = i1-r1; - d2 = i2-r2; - assert(max(d1(:))+max(d2(:)), 0, 1e-9); -2 tests, 2 passed, 0 known failure, 0 skipped -[inst/jones_cpleft.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_cpleft.m +[inst/jones_lpvertical.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_lpvertical.m ***** test % test default return value - V = jones_cpleft(); - R = V-[1;-1i]; + V = jones_lpvertical(); + R = V-[0;1]; assert(norm(R,inf), 0, 1e-9); ***** test % test return value amplitude = rand(1, 1); - V = jones_cpleft(amplitude); - R = V-[1;-1i]*amplitude; + V = jones_lpvertical(amplitude); + R = V-[0;1]*amplitude; assert(norm(R,inf), 0, 1e-9); ***** test @@ -4927,36 +5219,39 @@ R = {R}; end rsize = size(R); - C = jones_cpleft(R); + C = jones_lpvertical(R); csize = size(C); assert(rsize == csize); end 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/jones_waveplate.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_waveplate.m +[inst/mueller_depolarizer.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_depolarizer.m ***** test % test default return value - A = jones_waveplate(); + A = mueller_depolarizer(); R = A*A-A; assert(norm(R,inf), 0, 1e-9); + ***** test - % test serial application of absorptive elements - delay = rand(1, 1); - A1 = jones_waveplate(delay); - A2 = jones_waveplate(delay*2); + % test serial application of matrix + depolarization = rand(1, 1); + A1 = mueller_depolarizer(depolarization); + A2 = mueller_depolarizer(depolarization^2); R = A1*A1-A2; assert(norm(R,inf), 0, 1e-9); + ***** test - % another test of serial application of absorptive elements - delay1 = rand(1, 1); - delay2 = rand(1, 1); - A1 = jones_waveplate(delay1); - A2 = jones_waveplate(delay2); - A12 = jones_waveplate(delay1+delay2); + % another test of serial application + depolarization1 = rand(1, 1); + depolarization2 = rand(1, 1); + A1 = mueller_depolarizer(depolarization1); + A2 = mueller_depolarizer(depolarization2); + A12 = mueller_depolarizer(depolarization1*depolarization2); R = A1*A2-A12; assert(norm(R,inf), 0, 1e-9); + ***** test - % test correct size of return values + % test size of return value for dim = 1:5 asize = randi([1 4], 1, dim); R = rand(asize); @@ -4964,109 +5259,47 @@ R = {R}; end rsize = size(R); - C = jones_waveplate(R); + C = mueller_depolarizer(R); csize = size(C); - assert(csize, rsize); + assert(rsize == csize); end 4 tests, 4 passed, 0 known failure, 0 skipped -[inst/stokes_isstokes.m] ->>>>> /build/octave-optics-0.1.4/inst/stokes_isstokes.m -***** test - % test type check - V1 = stokes_unpolarized(); - V2 = char(V1); - t1 = stokes_isstokes(V1); - t2 = stokes_isstokes(V2); - assert(t1 && ~t2); - -***** test - % test size check - V1 = stokes_unpolarized(); - V2 = V1; - V2(5,1) = 1; - t1 = stokes_isstokes(V1); - t2 = stokes_isstokes(V2); - assert(t1 && ~t2); - -***** test - % test size of return value - V1 = stokes_unpolarized(ones(2,3,4)); - V1{2,2,2} = 0; - V2 = stokes_unpolarized(ones(4,3,2)); - V2{1,1,1} = 0; - t1 = stokes_isstokes(V1); - t2 = stokes_isstokes(V2); - assert((size(t1)==size(V1)) && (size(t2)==size(V2))); - -***** test - % test size of return value - V1 = stokes_unpolarized(ones(2,3,4)); - V2 = stokes_unpolarized(1); - [t1,t2] = stokes_isstokes(V1,V2); - assert((size(t1)==size(V1)) && (size(t2)==[1,1])); - -***** test - % test indivial elements of return value - V1 = stokes_unpolarized(ones(2,3,4)); - V1{2,2,2} = 0; - V2 = stokes_unpolarized(ones(4,3,2)); - V2{1,1,1} = 0; - t1 = stokes_isstokes(V1); - t2 = stokes_isstokes(V2); - assert(t1(1,1,1) && ~t1(2,2,2) && ~t2(1,1,1) && t2(2,2,2)); -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/mueller_circdiattenuator.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_circdiattenuator.m +[inst/mueller_rotator.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_rotator.m ***** test % test default return value - A = mueller_circdiattenuator(); + A = mueller_rotator(); R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test - % test equality of providing diattenuation or kx and ky - d = rand(1, 1); - kr = 1; - kl = (1-d)./(1+d); - A1 = mueller_circdiattenuator(d); - A2 = mueller_circdiattenuator(kr, kl); - R = A1-A2; - assert(norm(R,inf), 0, 1e-9); - -***** test - % test serial application of circular diattenuators - kr = rand(1, 1); - kl = rand(1, 1); - A1 = mueller_circdiattenuator(kr,kl); - A2 = mueller_circdiattenuator(kr*kr,kl*kl); + % test serial application of rotator + angle = rand(1, 1); + A1 = mueller_rotator(angle); + A2 = mueller_rotator(angle*2); R = A1*A1-A2; assert(norm(R,inf), 0, 1e-9); ***** test - % another test of serial application of retarder elements - kr1 = rand(1, 1); - kr2 = rand(1, 1); - kl1 = rand(1, 1); - kl2 = rand(1, 1); - A1 = mueller_circdiattenuator(kr1,kl1); - A2 = mueller_circdiattenuator(kr2,kl2); - A12 = mueller_circdiattenuator(kr1*kr2,kl1*kl2); + % another test of serial application of rotator + angle1 = rand(1, 1); + angle2 = rand(1, 1); + A1 = mueller_rotator(angle1); + A2 = mueller_rotator(angle2); + A12 = mueller_rotator(angle1+angle2); R = A1*A2-A12; assert(norm(R,inf), 0, 1e-9); ***** test - % test mode - kr = rand(1, 1); - kl = rand(1, 1); - A1 = mueller_circdiattenuator(kr,kl); - A2 = mueller_circdiattenuator(kr,kl,'int'); - A3 = mueller_circdiattenuator(sqrt(kr),sqrt(kl),'amp'); - R1 = A1-A2; - R2 = A1-A3; - assert(norm(R1,inf)+norm(R2,inf), 0, 1e-9); + % test different angle value interpretations + angle = rand(1, 1); + A1 = mueller_rotator(angle); + A2 = mueller_rotator(-angle*180/pi(), 'deg'); + R = A2*A1-mueller_unity(); + assert(norm(R,inf), 0, 1e-9); ***** test - % test correct size of return values + % test size of return values for dim = 1:5 asize = randi([1 4], 1, dim); R = rand(asize); @@ -5074,58 +5307,24 @@ R = {R}; end rsize = size(R); - C = mueller_circdiattenuator(R); + C = mueller_rotator(R); csize = size(C); assert(rsize == csize); end - -***** test - % another test correct size of return values - kr = rand(3,4,5); - kl = rand(5,4,3); - C = mueller_circdiattenuator(kr,kl); - csize = size(C); - assert(csize == [5,4,5]); -7 tests, 7 passed, 0 known failure, 0 skipped -[inst/mueller_unity.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_unity.m -***** test - A = mueller_unity(); - R = A*A-A; - assert(norm(R,inf), 0, 1e-9); - -***** test - for dim = 1:5 - asize = randi([1 4], 1, dim); - C = cell(asize); - csize = size(C); - U = mueller_unity(C); - usize = size(U); - assert(usize == csize); - end - -***** test - for dim = 1:5 - asize = randi([1 4], 1, dim); - rsize = size(rand(asize)); - U = mueller_unity(rsize); - usize = size(U); - assert(usize == rsize); - end -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/stokes_cpleft.m] ->>>>> /build/octave-optics-0.1.4/inst/stokes_cpleft.m +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/stokes_lphorizontal.m] +>>>>> /build/octave-optics-0.1.4/inst/stokes_lphorizontal.m ***** test % test default return value - V = stokes_cpleft(); - R = V-[1;0;0;-1]; + V = stokes_lphorizontal(); + R = V-[1;1;0;0]; assert(norm(R,inf), 0, 1e-9); ***** test % test return value intensity = rand(1, 1); - V = stokes_cpleft(intensity); - R = V-[1;0;0;-1]*intensity; + V = stokes_lphorizontal(intensity); + R = V-[1;1;0;0]*intensity; assert(norm(R,inf), 0, 1e-9); ***** test @@ -5137,80 +5336,54 @@ R = {R}; end rsize = size(R); - C = stokes_cpleft(R); + C = stokes_lphorizontal(R); csize = size(C); assert(rsize == csize); end 3 tests, 3 passed, 0 known failure, 0 skipped -[inst/zernike_noll_to_mn.m] ->>>>> /build/octave-optics-0.1.4/inst/zernike_noll_to_mn.m -***** test - [m,n]=zernike_noll_to_mn(1); - assert([m n],[0 0]) -***** test - [m,n]=zernike_noll_to_mn(2); - assert([m n],[1 1]) -***** test - [m,n]=zernike_noll_to_mn(3); - assert([m n],[-1 1]) -***** test - [m,n]=zernike_noll_to_mn(4); - assert([m n],[0 2]) -***** test - [m,n]=zernike_noll_to_mn(5); - assert([m n],[-2 2]) -***** test - [m,n]=zernike_noll_to_mn(20); - assert([m n],[5 5]) -***** test - [m,n]=zernike_noll_to_mn(34); - assert([m n],[5 7]) -***** test - [m,n]=zernike_noll_to_mn(35); - assert([m n],[-7 7]) -***** test - [m,n]=zernike_noll_to_mn(36); - assert([m n],[7 7]) -***** test - [m,n]=zernike_noll_to_mn([2 5 8 35]); - assert(m,[1 -2 1 -7]) - assert(n,[1 2 3 7]) -10 tests, 10 passed, 0 known failure, 0 skipped -[inst/mueller_circretarder.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_circretarder.m +[inst/mueller_homogeneous_elliptic_diattenuator.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_homogeneous_elliptic_diattenuator.m ***** test % test default return value - A = mueller_circretarder(); + A = mueller_homogeneous_elliptic_diattenuator(); R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test - % test serial application of circular retarder elements - phase = rand(1, 1); - A1 = mueller_circretarder(phase); - A2 = mueller_circretarder(phase*2); - R = A1*A1-A2; + % test modes + t0 = rand(1,1); + d = rand(1,1); + azimuth = rand(1,1); + ellipticity = rand(1,1); + A1 = mueller_homogeneous_elliptic_diattenuator(t0,d,azimuth,ellipticity); + A2 = mueller_homogeneous_elliptic_diattenuator(t0,d,azimuth*180/pi(),ellipticity,'deg'); + R = (A2-A1); assert(norm(R,inf), 0, 1e-9); ***** test - % another test of serial application of retarder elements - phase1 = rand(1, 1); - phase2 = rand(1, 1); - A1 = mueller_circretarder(phase1); - A2 = mueller_circretarder(phase2); - A12 = mueller_circretarder(phase1+phase2); - R = A1*A2-A12; + % another test correct size of return values + t0 = rand(3,4,5); + d = rand(4,5,6); + azimuth = rand(5,4,3); + ellipticity = rand(6,5,4); + C = mueller_homogeneous_elliptic_diattenuator(t0,d,azimuth,ellipticity); + csize = size(C); + assert(csize == [6,5,6]); +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/stokes_unpolarized.m] +>>>>> /build/octave-optics-0.1.4/inst/stokes_unpolarized.m +***** test + % test default return value + V = stokes_unpolarized(); + R = V-[1;0;0;0]; assert(norm(R,inf), 0, 1e-9); ***** test - % test mode - phase = rand(1, 1); - A1 = mueller_circretarder(phase); - A2 = mueller_circretarder(phase*180/pi(), 'deg'); - A3 = mueller_circretarder(phase/(2*pi()), 'wav'); - R1 = A1-A2; - R2 = A1-A3; - assert(norm(R1,inf)+norm(R2,inf), 0, 1e-9); + % test return value + intensity = rand(1, 1); + V = stokes_unpolarized(intensity); + R = V-[1;0;0;0]*intensity; + assert(norm(R,inf), 0, 1e-9); ***** test % test correct size of return values @@ -5221,35 +5394,24 @@ R = {R}; end rsize = size(R); - C = mueller_circretarder(R); + C = stokes_unpolarized(R); csize = size(C); assert(rsize == csize); end -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/mueller_waveplate.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_waveplate.m +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/jones_lphorizontal.m] +>>>>> /build/octave-optics-0.1.4/inst/jones_lphorizontal.m ***** test % test default return value - A = mueller_waveplate(); - R = A*A-A; - assert(norm(R,inf), 0, 1e-9); - -***** test - % test serial application of absorptive elements - delay = rand(1, 1); - A1 = mueller_waveplate(delay); - A2 = mueller_waveplate(delay*2); - R = A1*A1-A2; + V = jones_lphorizontal(); + R = V-[1;0]; assert(norm(R,inf), 0, 1e-9); ***** test - % another test of serial application of absorptive elements - delay1 = rand(1, 1); - delay2 = rand(1, 1); - A1 = mueller_waveplate(delay1); - A2 = mueller_waveplate(delay2); - A12 = mueller_waveplate(delay1+delay2); - R = A1*A2-A12; + % test return value + amplitude = rand(1, 1); + V = jones_lphorizontal(amplitude); + R = V-[1;0]*amplitude; assert(norm(R,inf), 0, 1e-9); ***** test @@ -5261,56 +5423,46 @@ R = {R}; end rsize = size(R); - C = mueller_waveplate(R); + C = jones_lphorizontal(R); csize = size(C); assert(rsize == csize); end -4 tests, 4 passed, 0 known failure, 0 skipped -[inst/mueller_linpolarizer.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_linpolarizer.m +3 tests, 3 passed, 0 known failure, 0 skipped +[inst/mueller_linretarder.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_linretarder.m ***** test - % applying a linear polarizer twice is identical to - % apply it once! - A = mueller_linpolarizer(); + % test default return value + A = mueller_linretarder(); R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test - % test direct size parameter - for dim = 1:5 - asize = randi([1 4], 1, dim); - rsize = size(rand(asize)); - U = mueller_linpolarizer(rsize); - usize = size(U); - assert(usize == rsize); - end - -***** test - % test indirect size parameter - for dim = 1:5 - asize = randi([1 4], 1, dim); - C = cell(asize); - csize = size(C); - U = mueller_linpolarizer(C); - usize = size(U); - assert(usize == csize); - end + % test serial application of linear retarder elements + phase = rand(1, 1); + A1 = mueller_linretarder(phase); + A2 = mueller_linretarder(phase*2); + R = A1*A1-A2; + assert(norm(R,inf), 0, 1e-9); -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/jones_lpvertical.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_lpvertical.m ***** test - % test default return value - V = jones_lpvertical(); - R = V-[0;1]; + % another test of serial application of retarder elements + phase1 = rand(1, 1); + phase2 = rand(1, 1); + A1 = mueller_linretarder(phase1); + A2 = mueller_linretarder(phase2); + A12 = mueller_linretarder(phase1+phase2); + R = A1*A2-A12; assert(norm(R,inf), 0, 1e-9); ***** test - % test return value - amplitude = rand(1, 1); - V = jones_lpvertical(amplitude); - R = V-[0;1]*amplitude; - assert(norm(R,inf), 0, 1e-9); + % test mode + phase = rand(1, 1); + A1 = mueller_linretarder(phase); + A2 = mueller_linretarder(phase*180/pi(), 'deg'); + A3 = mueller_linretarder(phase/(2*pi()), 'wav'); + R1 = A1-A2; + R2 = A1-A3; + assert(norm(R1,inf)+norm(R2,inf), 0, 1e-9); ***** test % test correct size of return values @@ -5321,55 +5473,74 @@ R = {R}; end rsize = size(R); - C = jones_lpvertical(R); + C = mueller_linretarder(R); csize = size(C); assert(rsize == csize); end -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/jones_linpolarizer.m] ->>>>> /build/octave-optics-0.1.4/inst/jones_linpolarizer.m +5 tests, 5 passed, 0 known failure, 0 skipped +[inst/mueller_ismueller.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_ismueller.m ***** test - % applying an ideal linear polarizer twice is identical to - % apply it once! - A = jones_linpolarizer(); - R = A*A-A; - assert(norm(R,inf), 0, 1e-9); + % test type check + A1 = mueller_unity(); + A2 = char(A1); + t1 = mueller_ismueller(A1); + t2 = mueller_ismueller(A2); + assert(t1 && ~t2); ***** test - % test direct size parameter - for dim = 1:5 - asize = randi([1 4], 1, dim); - rsize = size(rand(asize)); - U = jones_linpolarizer(rsize); - usize = size(U); - assert(usize == rsize); - end + % test size check + A1 = mueller_unity(); + A2 = A1; + A2(5,5) = 1; + t1 = mueller_ismueller(A1); + t2 = mueller_ismueller(A2); + assert(t1 && ~t2); ***** test - % test indirect size parameter - for dim = 1:5 - asize = randi([1 4], 1, dim); - C = cell(asize); - csize = size(C); - U = jones_linpolarizer(C); - usize = size(U); - assert(usize == csize); - end + % test size of return value + A1 = mueller_mirror([2,3,4]); + A1{2,2,2} = 0; + A2 = mueller_mirror([4,3,2]); + A2{1,1,1} = 0; + t1 = mueller_ismueller(A1); + t2 = mueller_ismueller(A2); + assert((size(A1)==size(t1)) && (size(A2)==size(t2))); -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/stokes_lphorizontal.m] ->>>>> /build/octave-optics-0.1.4/inst/stokes_lphorizontal.m +***** test + % test indivial elements of return value + A1 = mueller_mirror([2,3,4]); + A1{2,2,2} = 0; + A2 = mueller_mirror([4,3,2]); + A2{1,1,1} = 0; + t1 = mueller_ismueller(A1); + t2 = mueller_ismueller(A2); + assert(t1(1,1,1) && ~t1(2,2,2) && ~t2(1,1,1) && t2(2,2,2)); +4 tests, 4 passed, 0 known failure, 0 skipped +[inst/mueller_absorber.m] +>>>>> /build/octave-optics-0.1.4/inst/mueller_absorber.m ***** test % test default return value - V = stokes_lphorizontal(); - R = V-[1;1;0;0]; + A = mueller_absorber(); + R = A*A-A; assert(norm(R,inf), 0, 1e-9); ***** test - % test return value - intensity = rand(1, 1); - V = stokes_lphorizontal(intensity); - R = V-[1;1;0;0]*intensity; + % test serial appliation of absorptive elements + absorption = rand(1, 1); + A1 = mueller_absorber(absorption); + A2 = mueller_absorber(1-(1-absorption)^2); + R = A1*A1-A2; + assert(norm(R,inf), 0, 1e-9); + +***** test + % another test of serial appliation of absorptive elements + absorption1 = rand(1, 1); + absorption2 = rand(1, 1); + A1 = mueller_absorber(absorption1); + A2 = mueller_absorber(absorption2); + A12 = mueller_absorber(1-((1-absorption1)*(1-absorption2))); + R = A1*A2-A12; assert(norm(R,inf), 0, 1e-9); ***** test @@ -5381,129 +5552,11 @@ R = {R}; end rsize = size(R); - C = stokes_lphorizontal(R); + C = mueller_absorber(R); csize = size(C); assert(rsize == csize); end -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/mueller_mirror.m] ->>>>> /build/octave-optics-0.1.4/inst/mueller_mirror.m -***** test - % test mirror that is its own inverted element - A = mueller_mirror(); - R = (A-1\A); - assert(norm(R,inf), 0, 1e-9); - -***** test - % test direct size parameter - for dim = 1:5 - asize = randi([1 4], 1, dim); - rsize = size(rand(asize)); - U = mueller_mirror(rsize); - usize = size(U); - assert(usize == rsize); - end - -***** test - % test indirect size parameter - for dim = 1:5 - asize = randi([1 4], 1, dim); - C = cell(asize); - csize = size(C); - U = mueller_mirror(C); - usize = size(U); - assert(usize == csize); - end - -3 tests, 3 passed, 0 known failure, 0 skipped -[inst/zernike_name.m] ->>>>> /build/octave-optics-0.1.4/inst/zernike_name.m -***** assert (zernike_name (4), "defocus") -***** assert (zernike_name (22), "-") -***** error (zernike_name (0)) -***** error (zernike_name ([1 2])) -***** error (zernike_name (pi)) -5 tests, 5 passed, 0 known failure, 0 skipped -[inst/zernike_osa_ansi_to_mn.m] ->>>>> /build/octave-optics-0.1.4/inst/zernike_osa_ansi_to_mn.m -***** test - [m,n]=zernike_osa_ansi_to_mn(0); - assert([m n],[0 0]) - [m,n]=zernike_osa_ansi_to_mn(1); - assert([m n],[-1 1]) - [m,n]=zernike_osa_ansi_to_mn(2); - assert([m n],[1 1]) - [m,n]=zernike_osa_ansi_to_mn(3); - assert([m n],[-2 2]) - [m,n]=zernike_osa_ansi_to_mn(4); - assert([m n],[0 2]) - [m,n]=zernike_osa_ansi_to_mn(5); - assert([m n],[2 2]) - [m,n]=zernike_osa_ansi_to_mn(6); - assert([m n],[-3 3]) - [m,n]=zernike_osa_ansi_to_mn(7); - assert([m n],[-1 3]) - [m,n]=zernike_osa_ansi_to_mn(8); - assert([m n],[1 3]) - [m,n]=zernike_osa_ansi_to_mn(9); - assert([m n],[3 3]) - [m,n]=zernike_osa_ansi_to_mn(10); - assert([m n],[-4 4]) - [m,n]=zernike_osa_ansi_to_mn(11); - assert([m n],[-2 4]) - [m,n]=zernike_osa_ansi_to_mn(12); - assert([m n],[0 4]) - [m,n]=zernike_osa_ansi_to_mn(13); - assert([m n],[2 4]) - [m,n]=zernike_osa_ansi_to_mn(14); - assert([m n],[4 4]) - [m,n]=zernike_osa_ansi_to_mn(15); - assert([m n],[-5 5]) - [m,n]=zernike_osa_ansi_to_mn(16); - assert([m n],[-3 5]) - [m,n]=zernike_osa_ansi_to_mn(17); - assert([m n],[-1 5]) - [m,n]=zernike_osa_ansi_to_mn(18); - assert([m n],[1 5]) - [m,n]=zernike_osa_ansi_to_mn(19); - assert([m n],[3 5]) - [m,n]=zernike_osa_ansi_to_mn(20); - assert([m n],[5 5]) - [m,n]=zernike_osa_ansi_to_mn(21); - assert([m n],[-6 6]) - [m,n]=zernike_osa_ansi_to_mn(22); - assert([m n],[-4 6]) - [m,n]=zernike_osa_ansi_to_mn(23); - assert([m n],[-2 6]) - [m,n]=zernike_osa_ansi_to_mn(24); - assert([m n],[0 6]) - [m,n]=zernike_osa_ansi_to_mn(25); - assert([m n],[2 6]) - [m,n]=zernike_osa_ansi_to_mn(26); - assert([m n],[4 6]) - [m,n]=zernike_osa_ansi_to_mn(27); - assert([m n],[6 6]) - [m,n]=zernike_osa_ansi_to_mn(28); - assert([m n],[-7 7]) - [m,n]=zernike_osa_ansi_to_mn(29); - assert([m n],[-5 7]) - [m,n]=zernike_osa_ansi_to_mn(30); - assert([m n],[-3 7]) - [m,n]=zernike_osa_ansi_to_mn(31); - assert([m n],[-1 7]) - [m,n]=zernike_osa_ansi_to_mn(32); - assert([m n],[1 7]) - [m,n]=zernike_osa_ansi_to_mn(33); - assert([m n],[3 7]) - [m,n]=zernike_osa_ansi_to_mn(34); - assert([m n],[5 7]) - [m,n]=zernike_osa_ansi_to_mn(35); - assert([m n],[7 7]) -***** test - [m,n]=zernike_osa_ansi_to_mn([2 7 15 35]); - assert(m,[1 -1 -5 7]) - assert(n,[1 3 5 7]) -2 tests, 2 passed, 0 known failure, 0 skipped +4 tests, 4 passed, 0 known failure, 0 skipped Checking C++ files ... Summary: 207 tests, 207 passed, 0 known failures, 0 skipped dh_installdocs -O--buildsystem=octave @@ -5529,13 +5582,14 @@ dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) -I: copying local configuration +I: user script /srv/workspace/pbuilder/11351/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/11351/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/15677 and its subdirectories -I: Current time: Fri Jul 22 06:27:29 -12 2022 -I: pbuilder-time-stamp: 1658514449 +I: removing directory /srv/workspace/pbuilder/11351 and its subdirectories +I: Current time: Sun Jun 20 02:21:38 +14 2021 +I: pbuilder-time-stamp: 1624105298