[Pkg-octave-commit] [octave-interval] 01/03: Imported Upstream version 1.4.0

Oliver Heimlich oheim-guest at moszumanska.debian.org
Mon Feb 8 23:14:30 UTC 2016


This is an automated email from the git hooks/post-receive script.

oheim-guest pushed a commit to branch master
in repository octave-interval.

commit 505138958db1bb94919ccd2a56c8b9592d6a2749
Author: Oliver Heimlich <oheim at posteo.de>
Date:   Tue Feb 9 00:04:47 2016 +0100

    Imported Upstream version 1.4.0
---
 CITATION                                           |   4 +-
 DESCRIPTION                                        |  10 +-
 INDEX                                              |   5 +-
 NEWS                                               |  17 +
 doc/CITATION.texinfo                               |   2 +-
 doc/COPYING.texinfo                                |   2 +-
 doc/Makefile                                       |   8 +-
 doc/NEWS.texinfo                                   |  15 +-
 doc/chapter/advanced-topics.texinfo                |   6 +-
 doc/chapter/examples.texinfo                       |   2 +-
 doc/chapter/getting-started.texinfo                |   2 +-
 doc/chapter/ieee-1788.texinfo                      |   6 +-
 .../introduction-to-interval-arithmetic.texinfo    |  10 +-
 doc/chapter/preface.texinfo                        |   5 +-
 doc/image/contractor-rings-intersect.m.texinfo     |   8 +-
 doc/image/contractor-rings-union.m.texinfo         |   8 +-
 doc/image/interval-plot3.m.texinfo                 |   2 +-
 doc/image/interval-sombrero.m                      |   2 +-
 doc/image/interval-vs-normal-plot.m.texinfo        |   2 +-
 doc/image/inverse-power.svg                        |   2 +-
 doc/image/inverse-power.svg.eps                    |   2 +-
 doc/image/logo.svg                                 | 198 ---------
 doc/image/logo.svg.eps                             | 273 ------------
 doc/image/logo.svg.pdf                             | Bin 6049 -> 0 bytes
 doc/image/logo.svg.png                             | Bin 8995 -> 0 bytes
 doc/image/octave-interval.ly                       |   2 +-
 doc/image/octave-interval.ly.pdf                   | Bin 18023 -> 18021 bytes
 doc/image/poly-example-roots-simple.m.texinfo      |   4 +-
 doc/image/poly-example-roots-with-deriv.m.texinfo  |   4 +-
 doc/manual.css                                     |   6 +-
 doc/manual.init                                    |   1 -
 doc/manual.texinfo                                 |   9 +-
 inst/@infsup/abs.m                                 |   2 +-
 inst/@infsup/absrev.m                              |   2 +-
 inst/@infsup/acos.m                                |   2 +-
 inst/@infsup/acosh.m                               |   2 +-
 inst/@infsup/asin.m                                |   2 +-
 inst/@infsup/asinh.m                               |   2 +-
 inst/@infsup/atan.m                                |   2 +-
 inst/@infsup/atan2.m                               |   2 +-
 inst/@infsup/atan2rev1.m                           |   2 +-
 inst/@infsup/atan2rev2.m                           |   2 +-
 inst/@infsup/atanh.m                               |   2 +-
 inst/@infsup/bisect.m                              |   2 +-
 inst/@infsup/bitunpack.m                           |  18 +-
 inst/@infsup/cancelminus.m                         |   2 +-
 inst/@infsup/cancelplus.m                          |   2 +-
 inst/@infsup/cat.m                                 |   2 +-
 inst/@infsup/cbrt.m                                |   2 +-
 inst/@infsup/ceil.m                                |   2 +-
 inst/@infsup/columns.m                             |   2 +-
 inst/@infsup/cos.m                                 |   2 +-
 inst/@infsup/cosh.m                                |   2 +-
 inst/@infsup/coshrev.m                             |   2 +-
 inst/@infsup/cosrev.m                              |   2 +-
 inst/@infsup/cot.m                                 |   2 +-
 inst/@infsup/coth.m                                |   2 +-
 inst/@infsup/csc.m                                 |   2 +-
 inst/@infsup/csch.m                                |   2 +-
 inst/@infsup/ctranspose.m                          |   2 +-
 inst/@infsup/det.m                                 |   2 +-
 inst/@infsup/diag.m                                |   2 +-
 inst/@infsup/dilog.m                               |   2 +-
 inst/@infsup/disjoint.m                            |   2 +-
 inst/@infsup/disp.m                                |   2 +-
 inst/@infsup/display.m                             |   2 +-
 inst/@infsup/dot.m                                 |   2 +-
 inst/@infsup/ei.m                                  |   2 +-
 inst/@infsup/eq.m                                  |   2 +-
 inst/@infsup/erf.m                                 |   2 +-
 inst/@infsup/erfc.m                                |   2 +-
 inst/@infsup/exp.m                                 |   2 +-
 inst/@infsup/expm.m                                | 127 ++++++
 inst/@infsup/expm1.m                               |   2 +-
 inst/@infsup/factorial.m                           |  78 ++++
 inst/@infsup/fix.m                                 |   2 +-
 inst/@infsup/floor.m                               |   2 +-
 inst/@infsup/fma.m                                 |   2 +-
 inst/@infsup/fminsearch.m                          |   7 +-
 inst/@infsup/fsolve.m                              |   6 +-
 inst/@infsup/fzero.m                               |   8 +-
 inst/@infsup/gamma.m                               |   4 +-
 inst/@infsup/gammaln.m                             |   4 +-
 inst/@infsup/gauss.m                               |   2 +-
 inst/@infsup/ge.m                                  |   2 +-
 inst/@infsup/gt.m                                  |   2 +-
 inst/@infsup/hdist.m                               |   2 +-
 inst/@infsup/horzcat.m                             |   2 +-
 inst/@infsup/hypot.m                               |   2 +-
 inst/@infsup/idist.m                               |   2 +-
 inst/@infsup/inf.m                                 |   2 +-
 inst/@infsup/infsup.m                              |   2 +-
 inst/@infsup/interior.m                            |   2 +-
 inst/@infsup/intersect.m                           |   2 +-
 inst/@infsup/intervaltoexact.m                     |   2 +-
 inst/@infsup/intervaltotext.m                      |   2 +-
 inst/@infsup/inv.m                                 |   6 +-
 inst/@infsup/iscolumn.m                            |   2 +-
 inst/@infsup/iscommoninterval.m                    |   2 +-
 inst/@infsup/isempty.m                             |   2 +-
 inst/@infsup/isentire.m                            |   2 +-
 inst/@infsup/ismatrix.m                            |   2 +-
 inst/@infsup/ismember.m                            |   2 +-
 inst/@infsup/isrow.m                               |   2 +-
 inst/@infsup/isscalar.m                            |   2 +-
 inst/@infsup/issingleton.m                         |   2 +-
 inst/@infsup/issquare.m                            |   2 +-
 inst/@infsup/isvector.m                            |   2 +-
 inst/@infsup/ldivide.m                             |   2 +-
 inst/@infsup/le.m                                  |   2 +-
 inst/@infsup/length.m                              |   2 +-
 inst/@infsup/linspace.m                            |   2 +-
 inst/@infsup/log.m                                 |   2 +-
 inst/@infsup/log10.m                               |   2 +-
 inst/@infsup/log1p.m                               |   2 +-
 inst/@infsup/log2.m                                |   2 +-
 inst/@infsup/lt.m                                  |   2 +-
 inst/@infsup/lu.m                                  |   2 +-
 inst/@infsup/mag.m                                 |   2 +-
 inst/@infsup/max.m                                 |   2 +-
 inst/@infsup/meshgrid.m                            |   2 +-
 inst/@infsup/mid.m                                 |   2 +-
 inst/@infsup/mig.m                                 |   2 +-
 inst/@infsup/min.m                                 |   2 +-
 inst/@infsup/mince.m                               |   2 +-
 inst/@infsup/minus.m                               |   2 +-
 inst/@infsup/mldivide.m                            |   2 +-
 inst/@infsup/mpower.m                              |  11 +-
 inst/@infsup/mrdivide.m                            |   2 +-
 inst/@infsup/mtimes.m                              |   2 +-
 inst/@infsup/mulrev.m                              |   2 +-
 inst/@infsup/ndims.m                               |   2 +-
 inst/@infsup/ne.m                                  |   2 +-
 inst/@infsup/newdec.m                              |   2 +-
 inst/@infsup/nextout.m                             |   2 +-
 inst/@infsup/norm.m                                | 149 +++++++
 inst/@infsup/nthroot.m                             |   2 +-
 inst/@infsup/numel.m                               |   2 +-
 inst/@infsup/overlap.m                             |   2 +-
 inst/@infsup/plot.m                                |   2 +-
 inst/@infsup/plot3.m                               |   2 +-
 inst/@infsup/plus.m                                |   2 +-
 inst/@infsup/polyval.m                             |   2 +-
 inst/@infsup/postpad.m                             |   2 +-
 inst/@infsup/pow.m                                 |   2 +-
 inst/@infsup/pow10.m                               |   2 +-
 inst/@infsup/pow2.m                                |   2 +-
 inst/@infsup/power.m                               |   2 +-
 inst/@infsup/pown.m                                |  26 +-
 inst/@infsup/pownrev.m                             |   2 +-
 inst/@infsup/powrev1.m                             |   2 +-
 inst/@infsup/powrev2.m                             |   2 +-
 inst/@infsup/precedes.m                            |   2 +-
 inst/@infsup/prepad.m                              |   2 +-
 inst/@infsup/private/decimaladd.m                  |   2 +-
 inst/@infsup/private/decimalcompare.m              |   2 +-
 inst/@infsup/private/decimaldivide.m               |   2 +-
 inst/@infsup/private/double2decimal.m              |   2 +-
 inst/@infsup/private/hex2double.m                  |   2 +-
 inst/@infsup/private/parsedouble.m                 |   2 +-
 inst/@infsup/private/str2decimal.m                 |   2 +-
 inst/@infsup/private/uncertainsplit.m              |   2 +-
 inst/@infsup/prod.m                                |   2 +-
 inst/@infsup/psi.m                                 |   2 +-
 inst/@infsup/rad.m                                 |   2 +-
 inst/@infsup/rdivide.m                             |  56 ++-
 inst/@infsup/realsqrt.m                            |   2 +-
 inst/@infsup/recip.m                               |  39 +-
 inst/@infsup/reshape.m                             |   2 +-
 inst/@infsup/resize.m                              |   2 +-
 inst/@infsup/round.m                               |   2 +-
 inst/@infsup/roundb.m                              |   2 +-
 inst/@infsup/rows.m                                |   2 +-
 inst/@infsup/rsqrt.m                               |   2 +-
 inst/@infsup/sdist.m                               |   2 +-
 inst/@infsup/sec.m                                 |   2 +-
 inst/@infsup/sech.m                                |   2 +-
 inst/@infsup/setdiff.m                             |   2 +-
 inst/@infsup/setxor.m                              |   2 +-
 inst/@infsup/sign.m                                |   2 +-
 inst/@infsup/sin.m                                 |   2 +-
 inst/@infsup/sinh.m                                |   2 +-
 inst/@infsup/sinrev.m                              |   2 +-
 inst/@infsup/size.m                                |   2 +-
 inst/@infsup/smig.m                                |   2 +-
 inst/@infsup/sqr.m                                 |  22 +-
 inst/@infsup/sqrrev.m                              |   2 +-
 inst/@infsup/sqrt.m                                |   2 +-
 inst/@infsup/strictprecedes.m                      |   2 +-
 inst/@infsup/subsasgn.m                            |   2 +-
 inst/@infsup/subset.m                              |   2 +-
 inst/@infsup/subsref.m                             |   2 +-
 inst/@infsup/sum.m                                 |   2 +-
 inst/@infsup/sumabs.m                              |   2 +-
 inst/@infsup/sumsq.m                               |   4 +-
 inst/@infsup/sup.m                                 |   2 +-
 inst/@infsup/tan.m                                 |   2 +-
 inst/@infsup/tanh.m                                |   2 +-
 inst/@infsup/tanrev.m                              |   2 +-
 inst/@infsup/times.m                               |   2 +-
 inst/@infsup/transpose.m                           |   2 +-
 inst/@infsup/uminus.m                              |   2 +-
 inst/@infsup/union.m                               |   2 +-
 inst/@infsup/uplus.m                               |   2 +-
 inst/@infsup/vertcat.m                             |   2 +-
 inst/@infsup/wid.m                                 |   2 +-
 inst/@infsupdec/abs.m                              |   2 +-
 inst/@infsupdec/absrev.m                           |   2 +-
 inst/@infsupdec/acos.m                             |   2 +-
 inst/@infsupdec/acosh.m                            |   2 +-
 inst/@infsupdec/asin.m                             |   2 +-
 inst/@infsupdec/asinh.m                            |   2 +-
 inst/@infsupdec/atan.m                             |   2 +-
 inst/@infsupdec/atan2.m                            |   2 +-
 inst/@infsupdec/atan2rev1.m                        |   2 +-
 inst/@infsupdec/atan2rev2.m                        |   2 +-
 inst/@infsupdec/atanh.m                            |   2 +-
 inst/@infsupdec/bisect.m                           |   2 +-
 inst/@infsupdec/bitunpack.m                        |  18 +-
 inst/@infsupdec/cancelminus.m                      |   2 +-
 inst/@infsupdec/cbrt.m                             |   2 +-
 inst/@infsupdec/ceil.m                             |   2 +-
 inst/@infsupdec/cos.m                              |   2 +-
 inst/@infsupdec/cosh.m                             |   2 +-
 inst/@infsupdec/coshrev.m                          |   2 +-
 inst/@infsupdec/cosrev.m                           |   2 +-
 inst/@infsupdec/cot.m                              |   2 +-
 inst/@infsupdec/coth.m                             |   2 +-
 inst/@infsupdec/csc.m                              |   2 +-
 inst/@infsupdec/csch.m                             |   2 +-
 inst/@infsupdec/decorationpart.m                   |   2 +-
 inst/@infsupdec/det.m                              |   2 +-
 inst/@infsupdec/diag.m                             |   2 +-
 inst/@infsupdec/dilog.m                            |   2 +-
 inst/@infsupdec/disjoint.m                         |   2 +-
 inst/@infsupdec/dot.m                              |   2 +-
 inst/@infsupdec/ei.m                               |   2 +-
 inst/@infsupdec/eq.m                               |   2 +-
 inst/@infsupdec/erf.m                              |   2 +-
 inst/@infsupdec/erfc.m                             |   2 +-
 inst/@infsupdec/exp.m                              |   2 +-
 inst/@infsupdec/expm1.m                            |   2 +-
 inst/@infsupdec/factorial.m                        |  78 ++++
 inst/@infsupdec/fix.m                              |   2 +-
 inst/@infsupdec/floor.m                            |   2 +-
 inst/@infsupdec/fma.m                              |   2 +-
 inst/@infsupdec/gamma.m                            |   4 +-
 inst/@infsupdec/gammaln.m                          |   4 +-
 inst/@infsupdec/gauss.m                            |   2 +-
 inst/@infsupdec/horzcat.m                          |   2 +-
 inst/@infsupdec/hypot.m                            |   2 +-
 inst/@infsupdec/infsupdec.m                        |   2 +-
 inst/@infsupdec/interior.m                         |   2 +-
 inst/@infsupdec/intersect.m                        |   2 +-
 inst/@infsupdec/intervalpart.m                     |   2 +-
 inst/@infsupdec/intervaltotext.m                   |   2 +-
 inst/@infsupdec/isempty.m                          |   2 +-
 inst/@infsupdec/isnai.m                            |   2 +-
 inst/@infsupdec/le.m                               |   2 +-
 inst/@infsupdec/linspace.m                         |   2 +-
 inst/@infsupdec/log.m                              |   2 +-
 inst/@infsupdec/log10.m                            |   2 +-
 inst/@infsupdec/log1p.m                            |   2 +-
 inst/@infsupdec/log2.m                             |   2 +-
 inst/@infsupdec/lt.m                               |   2 +-
 inst/@infsupdec/lu.m                               |   2 +-
 inst/@infsupdec/max.m                              |   2 +-
 inst/@infsupdec/meshgrid.m                         |   2 +-
 inst/@infsupdec/min.m                              |   2 +-
 inst/@infsupdec/mince.m                            |   2 +-
 inst/@infsupdec/minus.m                            |   2 +-
 inst/@infsupdec/mldivide.m                         |   2 +-
 inst/{@infsup => @infsupdec}/mpower.m              |  72 ++--
 inst/@infsupdec/mtimes.m                           |   2 +-
 inst/@infsupdec/mulrev.m                           |   2 +-
 inst/@infsupdec/nextout.m                          |   2 +-
 inst/@infsupdec/nthroot.m                          |   2 +-
 inst/@infsupdec/overlap.m                          |   2 +-
 inst/@infsupdec/plus.m                             |   2 +-
 inst/@infsupdec/polyval.m                          |   2 +-
 inst/@infsupdec/postpad.m                          |   2 +-
 inst/@infsupdec/pow.m                              |   2 +-
 inst/@infsupdec/pow10.m                            |   2 +-
 inst/@infsupdec/pow2.m                             |   2 +-
 inst/@infsupdec/power.m                            |   2 +-
 inst/@infsupdec/pown.m                             |   3 +-
 inst/@infsupdec/pownrev.m                          |   2 +-
 inst/@infsupdec/powrev1.m                          |   2 +-
 inst/@infsupdec/powrev2.m                          |   2 +-
 inst/@infsupdec/precedes.m                         |   2 +-
 inst/@infsupdec/prepad.m                           |   2 +-
 inst/@infsupdec/private/_com.m                     |   2 +-
 inst/@infsupdec/private/_dac.m                     |   2 +-
 inst/@infsupdec/private/_def.m                     |   2 +-
 inst/@infsupdec/private/_ill.m                     |   2 +-
 inst/@infsupdec/private/_trv.m                     |   2 +-
 inst/@infsupdec/prod.m                             |   2 +-
 inst/@infsupdec/psi.m                              |   2 +-
 inst/@infsupdec/rdivide.m                          |   8 +-
 inst/@infsupdec/realsqrt.m                         |   2 +-
 inst/@infsupdec/recip.m                            |  56 ---
 inst/@infsupdec/reshape.m                          |   2 +-
 inst/@infsupdec/resize.m                           |   2 +-
 inst/@infsupdec/round.m                            |   2 +-
 inst/@infsupdec/roundb.m                           |   2 +-
 inst/@infsupdec/rsqrt.m                            |   2 +-
 inst/@infsupdec/sec.m                              |   2 +-
 inst/@infsupdec/sech.m                             |   2 +-
 inst/@infsupdec/setdiff.m                          |   2 +-
 inst/@infsupdec/setxor.m                           |   2 +-
 inst/@infsupdec/sign.m                             |   2 +-
 inst/@infsupdec/sin.m                              |   2 +-
 inst/@infsupdec/sinh.m                             |   2 +-
 inst/@infsupdec/sinrev.m                           |   2 +-
 inst/@infsupdec/sqr.m                              |  56 ---
 inst/@infsupdec/sqrrev.m                           |   2 +-
 inst/@infsupdec/strictprecedes.m                   |   2 +-
 inst/@infsupdec/subsasgn.m                         |   2 +-
 inst/@infsupdec/subset.m                           |   2 +-
 inst/@infsupdec/subsref.m                          |   2 +-
 inst/@infsupdec/sum.m                              |   2 +-
 inst/@infsupdec/tan.m                              |   2 +-
 inst/@infsupdec/tanh.m                             |   2 +-
 inst/@infsupdec/tanrev.m                           |   2 +-
 inst/@infsupdec/times.m                            |   2 +-
 inst/@infsupdec/transpose.m                        |   2 +-
 inst/@infsupdec/uminus.m                           |   2 +-
 inst/@infsupdec/union.m                            |   2 +-
 inst/@infsupdec/vertcat.m                          |   2 +-
 inst/__print_mesa__.m                              |   2 +-
 inst/__split_interval_literals__.m                 |   2 +-
 inst/ctc_intersect.m                               |   2 +-
 inst/ctc_union.m                                   |   2 +-
 inst/empty.m                                       |   2 +-
 inst/entire.m                                      |   2 +-
 inst/exacttointerval.m                             |   2 +-
 inst/hull.m                                        |   2 +-
 inst/interval_bitpack.m                            |  30 +-
 inst/midrad.m                                      |   2 +-
 inst/nai.m                                         |   2 +-
 inst/test/abs_rev.tst                              |   4 +-
 inst/test/atan2.tst                                |   4 +-
 inst/test/c-xsc.tst                                |  26 +-
 inst/test/fi_lib.tst                               | 242 ++++++++---
 inst/test/libieeep1788_tests_bool.tst              |   6 +-
 inst/test/libieeep1788_tests_cancel.tst            |   6 +-
 inst/test/libieeep1788_tests_elem.tst              | 464 +++++++++++++++++----
 inst/test/libieeep1788_tests_mul_rev.tst           |   6 +-
 inst/test/libieeep1788_tests_num.tst               |   6 +-
 inst/test/libieeep1788_tests_overlap.tst           |   6 +-
 inst/test/libieeep1788_tests_rec_bool.tst          |   6 +-
 inst/test/libieeep1788_tests_rev.tst               |   6 +-
 inst/test/libieeep1788_tests_set.tst               |   6 +-
 inst/test/mpfi.tst                                 | 202 +++++++--
 inst/test/pow_rev.tst                              |   4 +-
 octave-interval.metainfo.xml                       |  61 +++
 src/Makefile                                       |   5 +-
 src/__setround__.cc                                |   6 +-
 src/mpfr_commons.cc                                | 112 ++++-
 src/mpfr_function_d.cc                             |  29 +-
 src/mpfr_linspace_d.cc                             |   2 +-
 src/mpfr_matrix_mul_d.cc                           | 144 ++-----
 src/mpfr_matrix_sqr_d.cc                           | 337 +++++++++++++++
 src/mpfr_to_string_d.cc                            |   2 +-
 src/mpfr_vector_dot_d.cc                           |  90 +---
 src/mpfr_vector_sum_d.cc                           |   2 +-
 test/abs_rev.itl                                   |   2 +-
 test/atan2.itl                                     |   2 +-
 test/c-xsc.itl                                     |   2 +-
 test/fi_lib.itl                                    |   2 +-
 test/libieeep1788_tests_bool.itl                   |   4 +-
 test/libieeep1788_tests_cancel.itl                 |   4 +-
 test/libieeep1788_tests_elem.itl                   |   4 +-
 test/libieeep1788_tests_mul_rev.itl                |   4 +-
 test/libieeep1788_tests_num.itl                    |   4 +-
 test/libieeep1788_tests_overlap.itl                |   4 +-
 test/libieeep1788_tests_rec_bool.itl               |   4 +-
 test/libieeep1788_tests_rev.itl                    |   4 +-
 test/libieeep1788_tests_set.itl                    |   4 +-
 test/mpfi.itl                                      |  10 +-
 test/pow_rev.itl                                   |   2 +-
 381 files changed, 2388 insertions(+), 1527 deletions(-)

diff --git a/CITATION b/CITATION
index 22b3ff2..16d82e5 100644
--- a/CITATION
+++ b/CITATION
@@ -7,8 +7,8 @@ in publications use:
        author  = {Oliver Heimlich},
        title   = {GNU Octave Interval Package},
        url     = {http://octave.sourceforge.net/interval/},
-       version = {1.3.0},
-       date    = {2015-12-22},
+       version = {1.4.0},
+       date    = {2016-02-09},
      }
 
 See also ‘citation’ for citing Octave as a whole.
diff --git a/DESCRIPTION b/DESCRIPTION
index aa29c60..e6bce0c 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,6 +1,6 @@
 Name: interval
-Version: 1.3.0
-Date: 2015-12-22
+Version: 1.4.0
+Date: 2016-02-09
 Author: Oliver Heimlich <oheim at posteo.de>
 Maintainer: Oliver Heimlich <oheim at posteo.de>
 Title: Real-valued interval arithmetic
@@ -17,9 +17,9 @@ Description: The interval package for real-valued interval arithmetic allows
  numbers and is conforming to IEEE Std 1788-2015, IEEE standard for interval
  arithmetic.
 Problems: Comparison with isequal fails for interval matrices in
- Octave 4.0.0 (bug #44334).  3D plotting is not possible with
- gnuplot as graphics toolkit (bug #45594).
+ Octave 4.0.0 (bug #44334, fixed in Octave 4.0.1).  3D plotting is not possible
+ with gnuplot as graphics toolkit (bug #45594).
 Depends: octave (>= 3.8.0)
 SystemRequirements: mpfr (>= 3.1.0) [Debian] libmpfr4 (>= 3.1.0)
 BuildRequires: mpfr (>= 3.1.0) [Debian] libmpfr-dev (>= 3.1.0)
-License: GPLv3+
+License: GPL-3.0+
diff --git a/INDEX b/INDEX
index 408fe8a..01e5ce1 100644
--- a/INDEX
+++ b/INDEX
@@ -34,6 +34,7 @@ Interval function (most with tightest accuracy)
  @infsup/erfc
  @infsup/exp
  @infsup/expm1
+ @infsup/factorial
  @infsup/fix
  @infsup/floor
  @infsup/fma
@@ -67,7 +68,6 @@ Interval function (most with tightest accuracy)
  @infsup/sign
  @infsup/sin
  @infsup/sinh
- @infsup/sqr
  @infsup/tan
  @infsup/tanh
  @infsup/times
@@ -76,12 +76,14 @@ Interval function (most with tightest accuracy)
 Interval matrix operation
  @infsup/det
  @infsup/dot
+ @infsup/expm
  @infsup/inv
  @infsup/lu
  @infsup/mldivide
  @infsup/mpower
  @infsup/mrdivide
  @infsup/mtimes
+ @infsup/norm
  @infsup/prod
  @infsup/sum
  @infsup/sumabs
@@ -189,6 +191,7 @@ API function to the MPFR library
  mpfr_function_d
  mpfr_linspace_d
  mpfr_matrix_mul_d
+ mpfr_matrix_sqr_d
  mpfr_to_string_d
  mpfr_vector_sum_d
  mpfr_vector_dot_d
diff --git a/NEWS b/NEWS
index 08a2013..819b90b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,23 @@
                       GNU Octave Interval Package
                Summary of important user-visible changes
 
+Version 1.4.0 2016-02-09
+========================
+
+   • mpower: Improved accuracy and speed.  The interval matrix square
+     can now be computed without dependency errors and with tightest
+     accuracy.
+   • factorial: New interval arithmetic operation
+   • expm, norm: New interval matrix operations
+   • The functions recip and sqr have been deprecated and will be
+     removed in a future release.  Please use ‘1 ./ X’ and ‘X .^ 2’
+     instead.
+
+Bugfixes
+   • bitunpack, interval_bitpack: The order of inf/sup/dec parts has
+     been fixed.  The function documentation describes how the functions
+     behave on little-endian and big-endian systems.
+
 Version 1.3.0 2015-12-22
 ========================
 
diff --git a/doc/CITATION.texinfo b/doc/CITATION.texinfo
index c78bbdf..5dff813 100644
--- a/doc/CITATION.texinfo
+++ b/doc/CITATION.texinfo
@@ -4,7 +4,7 @@
 @documentencoding UTF-8
 
 @c This is part of the GNU Octave Interval Package.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file COPYING for copying conditions.
 
 The interval package is a collection of functions for interval arithmetic. It is developed at Octave Forge, a sibling of the GNU Octave project. To cite this particular version of the interval package in publications use:
diff --git a/doc/COPYING.texinfo b/doc/COPYING.texinfo
index 81a2a03..d7f1bbd 100644
--- a/doc/COPYING.texinfo
+++ b/doc/COPYING.texinfo
@@ -4,7 +4,7 @@
 @documentencoding UTF-8
 
 @c This is part of the GNU Octave Interval Package.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 
 The interval package is free software and can be used under the terms of the GNU General Public License Version 3 (or at your option any later version).  The wording of the license can be found below.
 
diff --git a/doc/Makefile b/doc/Makefile
index 72bb163..37067e3 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -1,3 +1,7 @@
+## This is part of the GNU Octave Interval Package.
+## Copyright 2015-2016 Oliver Heimlich.
+## See the file COPYING for copying conditions.
+
 SHELL      = /bin/sh
 M_IMAGE    = $(wildcard image/*.m) $(patsubst %.m.texinfo,%.m,$(wildcard image/*.m.texinfo))
 IMAGE_OBJ  = $(patsubst %,%.png,$(M_IMAGE))
@@ -12,8 +16,8 @@ all: $(OBJ)
 
 images: $(IMAGE_OBJ)
 
-manual.html: manual.texinfo manual.init $(wildcard chapter/*) license/gpl-3.0.texi $(wildcard image/*.texinfo) $(IMAGE_OBJ)
-	$(MAKEINFO) -D 'version $(VERSION)' --html --no-split --init-file manual.init --css-include manual.css "$<"
+manual.html: manual.texinfo $(wildcard chapter/*) license/gpl-3.0.texi $(wildcard image/*.texinfo) $(IMAGE_OBJ)
+	$(MAKEINFO) -D 'version $(VERSION)' --html --no-split --css-include manual.css "$<"
 
 manual.pdf: manual.texinfo $(wildcard chapter/*) license/gpl-3.0.texi $(wildcard image/*.texinfo) $(wildcard image/*.pdf) $(IMAGE_OBJ)
 	$(MAKEINFO) --Xopt=--texinfo='@set version $(VERSION)' --pdf "$<"
diff --git a/doc/NEWS.texinfo b/doc/NEWS.texinfo
index ab24bcd..c2d5791 100644
--- a/doc/NEWS.texinfo
+++ b/doc/NEWS.texinfo
@@ -4,7 +4,7 @@
 @documentencoding UTF-8
 
 @c This is part of the GNU Octave Interval Package.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file COPYING for copying conditions.
 
 @macro release{version, date}
@@ -14,6 +14,19 @@
 @center GNU Octave Interval Package
 @center Summary of important user-visible changes
 
+ at release{1.4.0, 2016-02-09}
+ at itemize
+ at item mpower: Improved accuracy and speed.  The interval matrix square can now be computed without dependency errors and with tightest accuracy.
+ at item factorial: New interval arithmetic operation
+ at item expm, norm: New interval matrix operations
+ at item The functions recip and sqr have been deprecated and will be removed in a future release.  Please use @code{1 ./ @var{x}} and @code{@var{x} .^ 2} instead.
+ at end itemize
+
+ at noindent Bugfixes
+ at itemize
+ at item bitunpack, interval_bitpack: The order of inf/sup/dec parts has been fixed.  The function documentation describes how the functions behave on little-endian and big-endian systems.
+ at end itemize
+
 @release{1.3.0, 2015-12-22}
 @itemize
 @item postpad, prepad, subsasgn: Implicit new elements during subscript assignment and padding have been initialized with empty intervals before this release.  This behavior has changed.  Now, the implicit new element are initialized with zero to make a correct interval extension of the corresponding built-in function.
diff --git a/doc/chapter/advanced-topics.texinfo b/doc/chapter/advanced-topics.texinfo
index fc1edd6..64f720b 100644
--- a/doc/chapter/advanced-topics.texinfo
+++ b/doc/chapter/advanced-topics.texinfo
@@ -1,5 +1,5 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
@@ -204,7 +204,7 @@ The hex-form can be set for output with the @command{format hex} command.
 
 @section Reverse Arithmetic Operations
 
-Some arithmetic functions also provide reverse mode operations. That is inverse functions with interval constraints. For example the @funref{@@infsup/sqrrev} function can compute the inverse of the @funref{@@infsup/sqr} function on intervals. The syntax is @code{sqrrev (@var{C}, @var{X})} and will compute the enclosure of all numbers x ∈ @var{X} that fulfill the constraint x² ∈ @var{C}.
+Some arithmetic functions also provide reverse mode operations. That is inverse functions with interval constraints. For example the @funref{@@infsup/sqrrev} function can compute the inverse of the @code{@var{x} .^ 2} function on intervals. The syntax is @code{sqrrev (@var{C}, @var{X})} and will compute the enclosure of all numbers x ∈ @var{X} that fulfill the constraint x² ∈ @var{C}.
 
 In the following example, we compute the constraints for base and exponent of the power function pow as shown in the figure. 
 
@@ -237,7 +237,7 @@ ans + "[0, 2]"
 @end group
 @end example
 
-Interval functions with only one argument can be called by using property syntax, e. g. @code{x.inf}, @code{x.sup} or even @code{x.sqr}.
+Interval functions with only one argument can be called by using property syntax, e. g. @code{x.inf}, @code{x.sup} or even @code{x.sqrt}.
 
 Whilst most functions (@funref{@@infsup/size}, @funref{@@infsup/isvector}, @funref{@@infsup/ismatrix}, …) work as expected on interval data types, the function @funref{@@infsup/isempty} is evaluated element-wise and checks if an interval equals the empty set.
 
diff --git a/doc/chapter/examples.texinfo b/doc/chapter/examples.texinfo
index 0cad9f9..2250663 100644
--- a/doc/chapter/examples.texinfo
+++ b/doc/chapter/examples.texinfo
@@ -1,5 +1,5 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
diff --git a/doc/chapter/getting-started.texinfo b/doc/chapter/getting-started.texinfo
index 9c3f119..3823cc8 100644
--- a/doc/chapter/getting-started.texinfo
+++ b/doc/chapter/getting-started.texinfo
@@ -1,5 +1,5 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
diff --git a/doc/chapter/ieee-1788.texinfo b/doc/chapter/ieee-1788.texinfo
index b6abddd..67b8e9e 100644
--- a/doc/chapter/ieee-1788.texinfo
+++ b/doc/chapter/ieee-1788.texinfo
@@ -1,5 +1,5 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
@@ -69,10 +69,10 @@ The operations textToInterval (@var{S}), numsToInterval (@var{l}, @var{u}), and
     @tab at funref{@@infsup/rdivide}
     @tab tightest
 @item recip (@var{x})
-    @tab at funref{@@infsup/recip}
+    @tab at code{1 ./ @var{x}}
     @tab tightest
 @item sqr (@var{x})
-    @tab at funref{@@infsup/sqr}
+    @tab at code{@var{x} .^ 2}
     @tab tightest
 @item sqrt (@var{x})
     @tab at funref{@@infsup/realsqrt}
diff --git a/doc/chapter/introduction-to-interval-arithmetic.texinfo b/doc/chapter/introduction-to-interval-arithmetic.texinfo
index 1ce922c..ae5e8f7 100644
--- a/doc/chapter/introduction-to-interval-arithmetic.texinfo
+++ b/doc/chapter/introduction-to-interval-arithmetic.texinfo
@@ -1,6 +1,6 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
- at c Copyright (C) 2008-2009 Simone Pernice.
+ at c Copyright 2015-2016 Oliver Heimlich.
+ at c Copyright 2008-2009 Simone Pernice.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
@@ -134,12 +134,12 @@ ceil (cans)
 
 Interval arithmetic, introduced in the 1960s, is a young and powerful technique.  Its first application has been to control errors in computations and simplify error analysis for engineers (rounding errors, truncation errors, and conversion errors).  The range evaluation of functions has soon been exploited for reliably checking for certain function values and for self-verifying algorithms.  Latest usage scenarios comprise root finding, function approximation, and robust pattern recognit [...]
 
-The major problem in interval arithmetic is that errors can easily build up, such that the final result is too wide to be useful.  This is especially true when the @emph{dependency problem} applies, that is, a single variable occurs several times within a computation and is represented by an interval in each occurrence.  Then, the variable virtually may take different values independently, which introduces a systematic error. For example, computing @code{sqr (x)} will always yield a subs [...]
+The major problem in interval arithmetic is that errors can easily build up, such that the final result is too wide to be useful.  This is especially true when the @emph{dependency problem} applies, that is, a single variable occurs several times within a computation and is represented by an interval in each occurrence.  Then, the variable virtually may take different values independently, which introduces a systematic error. For example, computing @code{x .^ 2} will always yield a subse [...]
 
 @example
 @group
 x = infsupdec ("[-1, 3]");
-sqr (x)
+x .^ 2
   @result{} ans = [0, 9]_com
 times (x, x)
   @result{} ans = [-3, +9]_com
@@ -152,7 +152,7 @@ After all, it is possible to reduce overestimation errors by subdividing the fun
 @group
 x1 = infsupdec ("[-1, 1]");
 x2 = infsupdec ("[1, 3]");
-hull (sqr (x1), sqr (x2))
+hull (x1 .^ 2, x2 .^ 2)
   @result{} ans = [0, 9]_com
 hull (times (x1, x1), times (x2, x2))
   @result{} ans = [-1, +9]_com
diff --git a/doc/chapter/preface.texinfo b/doc/chapter/preface.texinfo
index 901748e..a5ad777 100644
--- a/doc/chapter/preface.texinfo
+++ b/doc/chapter/preface.texinfo
@@ -1,5 +1,5 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
@@ -40,6 +40,9 @@ The GNU Octave interval package is build upon great third-party software.
     @ref{Introduction to Interval Arithmetic} is partly based on the documentation for the former SIMP package for Octave by Simone Pernice.
 
 @item
+    A French translation of the package description has been made by Rodéric Moitié.
+
+ at item
     In the @ref{Examples} for finding root enclosures a function and code by Helmut Podhaisky has been used.
 
 @item
diff --git a/doc/image/contractor-rings-intersect.m.texinfo b/doc/image/contractor-rings-intersect.m.texinfo
index e3bf8f2..fa70951 100644
--- a/doc/image/contractor-rings-intersect.m.texinfo
+++ b/doc/image/contractor-rings-intersect.m.texinfo
@@ -1,5 +1,5 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
@@ -11,11 +11,11 @@
 function [fval, cx1, cx2] = ctc_ring (y, c1, c2, x1, x2)
     x1_c1 = x1 - c1;
     x2_c2 = x2 - c2;
-    sqr_x1_c1 = sqr (x1_c1);
-    sqr_x2_c2 = sqr (x2_c2);
+    sqr_x1_c1 = x1_c1 .^ 2;
+    sqr_x2_c2 = x2_c2 .^ 2;
     fval = hypot (x1_c1, x2_c2);
     y = intersect (y, fval);
-    sqr_y = sqr (y);
+    sqr_y = y .^ 2;
     sqr_x1_c1 = intersect (sqr_x1_c1, sqr_y - sqr_x2_c2);
     sqr_x2_c2 = intersect (sqr_x2_c2, sqr_y - sqr_x1_c1);
     x1_c1 = sqrrev (sqr_x1_c1, x1_c1);
diff --git a/doc/image/contractor-rings-union.m.texinfo b/doc/image/contractor-rings-union.m.texinfo
index ce83dfa..e565ab5 100644
--- a/doc/image/contractor-rings-union.m.texinfo
+++ b/doc/image/contractor-rings-union.m.texinfo
@@ -1,5 +1,5 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
@@ -11,12 +11,12 @@ function [fval, cx1, cx2] = ctc_ring (y, c1, c2, x1, x2)
     ## Forward evaluation
     x1_c1 = x1 - c1;
     x2_c2 = x2 - c2;
-    sqr_x1_c1 = sqr (x1_c1);
-    sqr_x2_c2 = sqr (x2_c2);
+    sqr_x1_c1 = x1_c1 .^ 2;
+    sqr_x2_c2 = x2_c2 .^ 2;
     fval = hypot (x1_c1, x2_c2);
     ## Reverse evaluation
     y = intersect (y, fval);
-    sqr_y = sqr (y);
+    sqr_y = y .^ 2;
     sqr_x1_c1 = intersect (sqr_x1_c1, sqr_y - sqr_x2_c2);
     sqr_x2_c2 = intersect (sqr_x2_c2, sqr_y - sqr_x1_c1);
     x1_c1 = sqrrev (sqr_x1_c1, x1_c1);
diff --git a/doc/image/interval-plot3.m.texinfo b/doc/image/interval-plot3.m.texinfo
index b9f2b27..5820c5a 100644
--- a/doc/image/interval-plot3.m.texinfo
+++ b/doc/image/interval-plot3.m.texinfo
@@ -1,5 +1,5 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
diff --git a/doc/image/interval-sombrero.m b/doc/image/interval-sombrero.m
index 7a0eb49..55fa3a3 100644
--- a/doc/image/interval-sombrero.m
+++ b/doc/image/interval-sombrero.m
@@ -1,5 +1,5 @@
 ## This is part of the GNU Octave Interval Package Manual.
-## Copyright (C) 2015 Oliver Heimlich.
+## Copyright 2015-2016 Oliver Heimlich.
 ## See the file manual.texinfo for copying conditions.
 
 clf
diff --git a/doc/image/interval-vs-normal-plot.m.texinfo b/doc/image/interval-vs-normal-plot.m.texinfo
index e59ea11..68ddaac 100644
--- a/doc/image/interval-vs-normal-plot.m.texinfo
+++ b/doc/image/interval-vs-normal-plot.m.texinfo
@@ -1,5 +1,5 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
+ at c Copyright 2015-2016 Oliver Heimlich.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
diff --git a/doc/image/inverse-power.svg b/doc/image/inverse-power.svg
index a7589c7..953a7c5 100644
--- a/doc/image/inverse-power.svg
+++ b/doc/image/inverse-power.svg
@@ -24,7 +24,7 @@
      id="metadata3104"><rdf:RDF><cc:Work
          rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title>Inserse Power Function</dc:title><dc:date>2012-10-11</dc:date><dc:creator><cc:Agent><dc:title>Oliver Heimlich</dc:title></cc:Agent></dc:creator><cc:license
-           rdf:resource="http://www.gnu.org/licenses/gpl-3.0" /><dc:rights><cc:Agent><dc:title>Copyright 2012-2015 Oliver Heimlich</dc:title></cc:Agent></dc:rights><dc:source>own work</dc:source><dc:description>Graphical interpretation of reverse power operations. The (twodimensional) inverse image of z is hatched and outlined in the figure, in the shown example it is z = [2, 3]. A, for given intervals y and z find every x with x^y ∩ z ≠ Ø. B, for given intervals x and z find every y wit [...]
+           rdf:resource="http://www.gnu.org/licenses/gpl-3.0" /><dc:rights><cc:Agent><dc:title>Copyright 2012-2016 Oliver Heimlich</dc:title></cc:Agent></dc:rights><dc:source>own work</dc:source><dc:description>Graphical interpretation of reverse power operations. The (twodimensional) inverse image of z is hatched and outlined in the figure, in the shown example it is z = [2, 3]. A, for given intervals y and z find every x with x^y ∩ z ≠ Ø. B, for given intervals x and z find every y wit [...]
      id="defs3102"><pattern
        inkscape:collect="always"
        xlink:href="#pattern8774"
diff --git a/doc/image/inverse-power.svg.eps b/doc/image/inverse-power.svg.eps
index 648096b..33a7183 100644
--- a/doc/image/inverse-power.svg.eps
+++ b/doc/image/inverse-power.svg.eps
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0 EPSF-3.0
 %%Creator: cairo 1.14.0 (http://cairographics.org)
-%%CreationDate: Mon Dec 21 23:08:18 2015
+%%CreationDate: Mon Feb  8 23:55:20 2016
 %%Pages: 1
 %%DocumentData: Clean7Bit
 %%LanguageLevel: 2
diff --git a/doc/image/logo.svg b/doc/image/logo.svg
deleted file mode 100644
index 4339435..0000000
--- a/doc/image/logo.svg
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="171.59312"
-   height="58.712929"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="logo.svg">
-  <title
-     id="title50561">Octave Interval Package Logo</title>
-  <defs
-     id="defs4">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="723.29727 : 401.34172 : 1"
-       inkscape:vp_y="-6.123234e-14 : 1000 : 0"
-       inkscape:vp_z="-329.06493 : 401.34172 : 1"
-       inkscape:persp3d-origin="197.11618 : 277.32592 : 1"
-       id="perspective4048" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="48.27423"
-     inkscape:cy="7.4013725"
-     inkscape:document-units="pt"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1680"
-     inkscape:window-height="986"
-     inkscape:window-x="0"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     fit-margin-top="4"
-     fit-margin-left="4"
-     fit-margin-right="4"
-     fit-margin-bottom="4"
-     units="pt" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title>Octave Interval Package Logo</dc:title>
-        <dc:date>2015-07-25</dc:date>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Oliver Heimlich</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:rights>
-          <cc:Agent>
-            <dc:title>Oliver Heimlich</dc:title>
-          </cc:Agent>
-        </dc:rights>
-        <cc:license
-           rdf:resource="http://www.gnu.org/licenses/gpl-3.0.html" />
-        <dc:description>Colors are taken from the solarized color scheme. Font is: EB Garamond.</dc:description>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Ebene 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-464.88204,-478.8302)"
-     style="display:inline">
-    <g
-       id="g50539"
-       style="fill:#839496;fill-opacity:1">
-      <path
-         id="path50451"
-         transform="translate(0,308.2677)"
-         d="m 521.40625,175.5625 c -7.91999,0 -13.59375,4.56501 -13.59375,12.125 0,4.39317 2.00179,7.92879 5.15625,10.0625 l 0,-6.875 c -0.11775,-0.39122 -0.19324,-0.78675 -0.28125,-1.1875 -0.25422,-0.0976 -0.78493,-0.26913 -1.71875,-0.53125 l -0.0312,0 -0.0312,0 c -0.32757,-0.10919 -0.73036,-0.27877 -1.125,-0.65625 -0.39464,-0.37748 -0.71875,-1.0538 -0.71875,-1.6875 0,-0.60611 0.28082,-1.19745 0.59375,-1.53125 0.31293,-0.3338 0.64856,-0.49892 0.9375,-0.625 0.57788,-0.2522 1.09167,-0.312 [...]
-         style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#839496;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path50453"
-         style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#839496;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-         d="m 542.43521,508.06202 c 3.92,0 6.24,-1.92 6.24,-3.08 0,-0.4 -0.2,-0.56 -0.6,-0.56 -0.4,0 -2.36,0.92 -4.2,0.92 -3.4,0 -4.96,-3.76 -4.96,-7.28 0,-2.63999 1.68,-5.64 4.08,-5.64 0.84,0 1.36,0.72 2.04,1.4 0.88,0.88 1.88,1.44 2.6,1.44 0.92,0 1.68,-0.6 1.68,-1.56 0,-0.52 -0.56,-1.2 -1.32,-1.84 -0.64,-0.52 -1.88,-1.32 -4.68,-1.32 -4.6,0 -8.08,4.56001 -8.08,9.4 0,4.24 2.92,8.12 7.2,8.12" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path50455"
-         style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#839496;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-         d="m 557.45833,508.06202 c 2.4,0 4.56,-1.96 4.56,-2.88 0,-0.4 -0.2,-0.56 -0.6,-0.56 -0.4,0 -1.4,0.72 -2.88,0.72 -1.39999,0 -2.08,-0.88 -2.08,-3.68 l 0,-7.48 c 0,-0.56 0.16,-0.76 0.64,-0.76 l 3.96,0 c 0.56,0 0.96,-1.04 0.96,-1.44 0,-0.4 -0.16,-0.92 -0.8,-0.92 l -3.88,0 c -0.52,0 -0.88,-0.2 -0.88,-0.6 l 0,-1.12 c 0,-0.68 -0.08,-1 -0.56,-1 -0.52,0 -2.04,1.52 -2.6,2 -0.99999,0.84 -2.68,1.96 -2.68,2.52 0,0.4 0.92,0.56 1.28,0.56 1.48,0 1.24,0.2 1.24,0.56 l 0,9.52 c 0,3.4 1.96001,4.56  [...]
-      <path
-         inkscape:connector-curvature="0"
-         id="path50457"
-         style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#839496;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-         d="m 567.42708,502.50202 c 0,-0.68 0.60001,-1.48 2,-1.92 l 1.92,-0.76 c 0.44,-0.16 0.92,-0.16 0.92,0.28 l 0,3.76 c 0,0.96 -1.36,1.52 -2.48,1.52 -1.43999,0 -2.36,-0.92 -2.36,-2.88 m 2.96,-11.96 c -1.47999,0 -3,0.92 -4.4,1.88 -0.83999,0.6 -1.52,1.8 -1.52,2.72 0,0.32 0.08,1.36 0.32,1.36 0.4,0 2,-0.68 2.24,-0.84 0.36,-0.24 0.4,-0.56 0.4,-1.56 0,-0.84 1.00001,-1.16 1.84,-1.16 1.4,0 2.92,1.04 2.92,2.44 l 0,1.96 c 0,0.4 -0.2,0.6 -0.92,0.92 l -5.24,2.2 c -1.19999,0.52 -2.16,1.76001 -2.1 [...]
-      <path
-         inkscape:connector-curvature="0"
-         id="path50459"
-         style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#839496;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-         d="m 591.55521,492.54202 c 0.24,0.04 0.68,0.32 0.68,0.72 0,0.28 -0.08,0.84 -0.4,1.64 l -2.88,7.28 c -0.12,0.32 -0.28,0.4 -0.4,0 l -3.28,-8.6 c -0.16,-0.4 0,-0.92 0.2,-0.96 0.88,-0.28 1.36,-0.6 1.36,-1 0,-0.4 -0.36,-0.8 -1,-0.8 -0.6,0 -2.28,0.24 -2.88,0.24 -0.6,0 -1.96,-0.24 -2.56,-0.24 -0.64,0 -0.96,0.4 -0.96,0.8 0,0.4 0.72,0.72 1.32,0.92 0.6,0.2 1.16,1.48 1.56,2.52 l 4.44,11.64 c 0.24,0.68 0.6,1.6 1,1.6 0.72,0 1.84,-3.8 2.52,-5.48 l 3.16,-8 c 0.56,-1.4 1.28,-2.12 1.72,-2.28 0.6 [...]
-      <path
-         inkscape:connector-curvature="0"
-         id="path50461"
-         style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#839496;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-         d="m 601.07208,495.14202 c 0,-0.8 1.64001,-2.76 4.04,-2.76 1.16,0 2.36,0.8 2.36,1.96 0,0.56 -0.2,1.24 -0.6,1.24 l -5.28,0 c -0.48,0 -0.52,-0.16 -0.52,-0.44 m 9.88,-0.44 c 0,-2.03999 -2.56,-4.16 -5.28,-4.16 -4.87999,0 -8.64,3.76001 -8.64,8.68 0,4.52 2.48001,8.84 6.92,8.84 3.92,0 6.24,-1.92 6.24,-3.08 0,-0.4 -0.2,-0.56 -0.6,-0.56 -0.4,0 -2.16,0.92 -4.16,0.92 -3.15999,0 -5.04,-3.28 -5.04,-6.32 0,-0.68 0,-0.76 0.16,-1.2 0.12,-0.32 0.2,-0.4 0.76,-0.4 l 8.44,0 c 1.04,0 1.2,-1.64 1.2,- [...]
-    </g>
-    <g
-       style="fill:#b58900;fill-opacity:1"
-       id="g50465"
-       transform="translate(212.85534,-0.14793341)">
-      <path
-         inkscape:connector-curvature="0"
-         id="path50467"
-         style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#b58900;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-         d="m 267.4267,518.49106 c -1.35999,0 -3,0.2 -4.4,0.2 -1.43999,0 -2.88,-0.2 -4.44,-0.2 -0.6,0 -1.4,0.24 -1.4,0.72 0,0.36 0.28,0.56 0.64,0.68 2.28,0.64 3.28,0.68001 3.28,2.96 l 0,4.6 c 0,1.48 -0.52,2.28 -1.88,2.88 -0.87999,0.4 -2.2,0.6 -2.2,1.2 0,0.4 0.88,0.64 1.32,0.68 0.28,0 2.64001,-0.24 4.52,-0.24 1.92,0 4.56,0.24 4.84,0.24 0.44,-0.04 1.28,-0.28 1.28,-0.68 0,-0.6 -1.32,-0.8 -2.2,-1.2 -1.35999,-0.6 -1.88,-1.4 -1.88,-2.88 l 0,-4.6 c 0,-2.27999 1.04001,-2.32 3.32,-2.96 0.36,-0.12 [...]
-         sodipodi:nodetypes="cssscsscscscscsscsc" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path50469"
-         style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#b58900;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-         d="m 294.6142,504.49106 c -1.35999,0 -3,0.2 -4.4,0.2 -1.43999,0 -2.88,-0.2 -4.44,-0.2 -0.6,0 -1.4,0.24 -1.4,0.72 0,0.36 0.28,0.56 0.64,0.68 2.28,0.64 3.28,0.68001 3.28,2.96 l 0,18.6 c 0,1.48 -0.52,2.28 -1.88,2.88 -0.87999,0.4 -2.2,0.6 -2.2,1.2 0,0.4 0.88,0.64 1.32,0.68 0.28,0 2.64001,-0.24 4.52,-0.24 1.92,0 4.56,0.24 4.84,0.24 0.44,-0.04 1.28,-0.28 1.28,-0.68 0,-0.6 -1.32,-0.8 -2.2,-1.2 -1.35999,-0.6 -1.88,-1.4 -1.88,-2.88 l 0,-18.6 c 0,-2.27999 1.04001,-2.32 3.32,-2.96 0.36,-0. [...]
-         sodipodi:nodetypes="cssscsscscscscsscsc" />
-    </g>
-    <g
-       id="g50557"
-       style="fill:#dc322f;fill-opacity:1">
-      <path
-         inkscape:connector-curvature="0"
-         id="path50473"
-         style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dc322f;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-         d="m 493.87579,512.34313 c -1.35999,0 -3,0.2 -4.4,0.2 -1.43999,0 -2.88,-0.2 -4.44,-0.2 -0.6,0 -1.4,0.24 -1.4,0.72 0,0.36 0.28,0.56 0.64,0.68 2.28,0.64 3.28,0.68001 3.28,2.96 l 0,10.6 c 0,1.48 -0.52,2.28 -1.88,2.88 -0.87999,0.4 -2.2,0.6 -2.2,1.2 0,0.4 0.88,0.64 1.32,0.68 0.28,0 2.64001,-0.24 4.52,-0.24 1.92,0 4.56,0.24 4.84,0.24 0.44,-0.04 1.28,-0.28 1.28,-0.68 0,-0.6 -1.32,-0.8 -2.2,-1.2 -1.35999,-0.6 -1.88,-1.4 -1.88,-2.88 l 0,-10.6 c 0,-2.27999 1.04001,-2.32 3.32,-2.96 0.36,-0 [...]
-         sodipodi:nodetypes="cssscsscscscscsscsc" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path50475"
-         style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dc322f;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-         d="m 521.06329,494.34313 c -1.35999,0 -3,0.2 -4.4,0.2 -1.43999,0 -2.88,-0.2 -4.44,-0.2 -0.6,0 -1.4,0.24 -1.4,0.72 0,0.36 0.28,0.56 0.64,0.68 2.28,0.64 3.28,0.68001 3.28,2.96 l 0,28.6 c 0,1.48 -0.52,2.28 -1.88,2.88 -0.87999,0.4 -2.2,0.6 -2.2,1.2 0,0.4 0.88,0.64 1.32,0.68 0.28,0 2.64001,-0.24 4.52,-0.24 1.92,0 4.56,0.24 4.84,0.24 0.44,-0.04 1.28,-0.28 1.28,-0.68 0,-0.6 -1.32,-0.8 -2.2,-1.2 -1.35999,-0.6 -1.88,-1.4 -1.88,-2.88 l 0,-28.6 c 0,-2.27999 1.04001,-2.32 3.32,-2.96 0.36,-0 [...]
-         sodipodi:nodetypes="cssscsscscscscsscsc" />
-    </g>
-    <g
-       id="g50547"
-       style="fill:#586e75;fill-opacity:1">
-      <g
-         id="g50477"
-         transform="translate(176.13779,-25.906823)"
-         style="fill:#586e75;fill-opacity:1">
-        <path
-           d="m 365.27924,553.48995 0,-7.24 c 0,-2.91999 -2.2,-5.56 -5,-5.56 -2.07999,0 -3.64,0.48 -4.96,1.56 -0.32,0.28 -0.8,0.84 -0.8,0.24 l 0,-1 c 0,-0.76 0,-1.12 -0.48,-1.12 -0.4,0 -3.68,1.32 -4.16,1.56 -0.52,0.24 -1.16,0.56 -1.16,1 0,0.44 0.4,0.68 0.84,0.84 0.96,0.36 1.64,1.36 1.64,2.04 l 0,7.76 c 0,1 -0.44,2.24 -1.52,2.56 -1.07999,0.32 -1.56,0.64 -1.56,1.04 0,0.4 0.16001,0.8 1.2,0.8 0.88,0 2.76001,-0.24 3.56,-0.24 0.64,0 2.04001,0.24 2.92,0.24 1.04,0 1.16,-0.4 1.16,-0.8 0,-0.4 -0.4 [...]
-           style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#586e75;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-           id="path50479"
-           inkscape:connector-curvature="0" />
-        <path
-           d="m 376.47799,558.20995 c 2.4,0 4.56,-1.96 4.56,-2.88 0,-0.4 -0.2,-0.56 -0.6,-0.56 -0.4,0 -1.4,0.72 -2.88,0.72 -1.39999,0 -2.08,-0.88 -2.08,-3.68 l 0,-7.48 c 0,-0.56 0.16,-0.76 0.64,-0.76 l 3.96,0 c 0.56,0 0.96,-1.04 0.96,-1.44 0,-0.4 -0.16,-0.92 -0.8,-0.92 l -3.88,0 c -0.52,0 -0.88,-0.2 -0.88,-0.6 l 0,-1.12 c 0,-0.68 -0.08,-1 -0.56,-1 -0.52,0 -2.04,1.52 -2.6,2 -0.99999,0.84 -2.68,1.96 -2.68,2.52 0,0.4 0.92,0.56 1.28,0.56 1.48,0 1.24,0.2 1.24,0.56 l 0,9.52 c 0,3.4 1.96001,4.5 [...]
-           style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#586e75;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-           id="path50481"
-           inkscape:connector-curvature="0" />
-        <path
-           d="m 386.96674,545.28995 c 0,-0.8 1.64001,-2.76 4.04,-2.76 1.16,0 2.36,0.8 2.36,1.96 0,0.56 -0.2,1.24 -0.6,1.24 l -5.28,0 c -0.48,0 -0.52,-0.16 -0.52,-0.44 m 9.88,-0.44 c 0,-2.03999 -2.56,-4.16 -5.28,-4.16 -4.87999,0 -8.64,3.76001 -8.64,8.68 0,4.52 2.48001,8.84 6.92,8.84 3.92,0 6.24,-1.92 6.24,-3.08 0,-0.4 -0.2,-0.56 -0.6,-0.56 -0.4,0 -2.16,0.92 -4.16,0.92 -3.15999,0 -5.04,-3.28 -5.04,-6.32 0,-0.68 0,-0.76 0.16,-1.2 0.12,-0.32 0.2,-0.4 0.76,-0.4 l 8.44,0 c 1.04,0 1.2,-1.64 1.2,-2.72"
-           style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#586e75;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-           id="path50483"
-           inkscape:connector-curvature="0" />
-        <path
-           d="m 403.19174,557.72995 c 0.64,0 3.00001,0.24 3.88,0.24 1.04,0 1.36,-0.4 1.36,-0.8 0,-0.4 -0.56,-0.72 -1.64,-1.04 -1.07999,-0.32 -1.96,-1.56 -1.96,-2.56 l 0.08,-7.8 c 0,-1.04 1.16001,-1.88 2.08,-1.88 0.8,0 2,1.12 2.6,1.12 0.2,0 0.52,-0.24 0.64,-0.36 0.64,-0.64 1.2,-1.68 1.2,-2.28 0,-0.92 -0.64,-1.68 -2.28,-1.68 -1.19999,0 -2.88,0.88 -3.52,1.56 -0.2,0.24 -0.8,0.84 -0.8,0.24 l 0,-1 c 0,-0.76 0,-1.12 -0.48,-1.12 -0.4,0 -3.72,1.32 -4.16,1.56 -0.52,0.24 -1.16,0.56 -1.16,1 0,0.44 0 [...]
-           style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#586e75;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-           id="path50485"
-           inkscape:connector-curvature="0" />
-        <path
-           d="m 424.01237,542.68995 c 0.24,0.04 0.68,0.32 0.68,0.72 0,0.28 -0.08,0.84 -0.4,1.64 l -2.88,7.28 c -0.12,0.32 -0.28,0.4 -0.4,0 l -3.28,-8.6 c -0.16,-0.4 0,-0.92 0.2,-0.96 0.88,-0.28 1.36,-0.6 1.36,-1 0,-0.4 -0.36,-0.8 -1,-0.8 -0.6,0 -2.28,0.24 -2.88,0.24 -0.6,0 -1.96,-0.24 -2.56,-0.24 -0.64,0 -0.96,0.4 -0.96,0.8 0,0.4 0.72,0.72 1.32,0.92 0.6,0.2 1.16,1.48 1.56,2.52 l 4.44,11.64 c 0.24,0.68 0.6,1.6 1,1.6 0.72,0 1.84,-3.8 2.52,-5.48 l 3.16,-8 c 0.56,-1.4 1.28,-2.12 1.72,-2.28 0 [...]
-           style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#586e75;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-           id="path50487"
-           inkscape:connector-curvature="0" />
-        <path
-           d="m 433.00924,552.64995 c 0,-0.68 0.60001,-1.48 2,-1.92 l 1.92,-0.76 c 0.44,-0.16 0.92,-0.16 0.92,0.28 l 0,3.76 c 0,0.96 -1.36,1.52 -2.48,1.52 -1.43999,0 -2.36,-0.92 -2.36,-2.88 m 2.96,-11.96 c -1.47999,0 -3,0.92 -4.4,1.88 -0.83999,0.6 -1.52,1.8 -1.52,2.72 0,0.32 0.08,1.36 0.32,1.36 0.4,0 2,-0.68 2.24,-0.84 0.36,-0.24 0.4,-0.56 0.4,-1.56 0,-0.84 1.00001,-1.16 1.84,-1.16 1.4,0 2.92,1.04 2.92,2.44 l 0,1.96 c 0,0.4 -0.2,0.6 -0.92,0.92 l -5.24,2.2 c -1.19999,0.52 -2.16,1.76001 -2 [...]
-           style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#586e75;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-           id="path50489"
-           inkscape:connector-curvature="0" />
-        <path
-           d="m 448.77737,535.20995 0,18.36 c 0,1 -0.44,2.24 -1.52,2.56 -1.08,0.32 -1.76,0.64 -1.76,1.04 0,0.4 0.36,0.8 1.4,0.8 0.88,0 2.76,-0.24 3.56,-0.24 0.64,0 2.64,0.24 3.52,0.24 1.04,0 1.36,-0.4 1.36,-0.8 0,-0.4 -0.64,-0.72 -1.72,-1.04 -1.08,-0.32 -1.52,-1.56 -1.52,-2.56 l 0,-21.84 c 0,-0.76 0,-1.08 -0.48,-1.08 -0.4,0 -2.56,0.68 -4.16,0.96 -0.56,0.08 -1.16,0.4 -1.16,0.84 0,0.44 0.48,0.76 0.92,0.92 0.96,0.36 1.56,1.16 1.56,1.84"
-           style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#586e75;fill-opacity:1;stroke:none;font-family:EB Garamond;-inkscape-font-specification:EB Garamond"
-           id="path50491"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-  </g>
-</svg>
diff --git a/doc/image/logo.svg.eps b/doc/image/logo.svg.eps
deleted file mode 100644
index b0d016e..0000000
--- a/doc/image/logo.svg.eps
+++ /dev/null
@@ -1,273 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: cairo 1.14.0 (http://cairographics.org)
-%%CreationDate: Mon Dec 21 23:08:18 2015
-%%Pages: 1
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%BoundingBox: 0 -1 130 39
-%%EndComments
-%%BeginProlog
-save
-50 dict begin
-/q { gsave } bind def
-/Q { grestore } bind def
-/cm { 6 array astore concat } bind def
-/w { setlinewidth } bind def
-/J { setlinecap } bind def
-/j { setlinejoin } bind def
-/M { setmiterlimit } bind def
-/d { setdash } bind def
-/m { moveto } bind def
-/l { lineto } bind def
-/c { curveto } bind def
-/h { closepath } bind def
-/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
-      0 exch rlineto 0 rlineto closepath } bind def
-/S { stroke } bind def
-/f { fill } bind def
-/f* { eofill } bind def
-/n { newpath } bind def
-/W { clip } bind def
-/W* { eoclip } bind def
-/BT { } bind def
-/ET { } bind def
-/pdfmark where { pop globaldict /?pdfmark /exec load put }
-    { globaldict begin /?pdfmark /pop load def /pdfmark
-    /cleartomark load def end } ifelse
-/BDC { mark 3 1 roll /BDC pdfmark } bind def
-/EMC { mark /EMC pdfmark } bind def
-/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
-/Tj { show currentpoint cairo_store_point } bind def
-/TJ {
-  {
-    dup
-    type /stringtype eq
-    { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
-  } forall
-  currentpoint cairo_store_point
-} bind def
-/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
-    cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
-/Tf { pop /cairo_font exch def /cairo_font_matrix where
-      { pop cairo_selectfont } if } bind def
-/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
-      /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
-      /cairo_font where { pop cairo_selectfont } if } bind def
-/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
-      cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
-/g { setgray } bind def
-/rg { setrgbcolor } bind def
-/d1 { setcachedevice } bind def
-%%EndProlog
-%%BeginSetup
-%%EndSetup
-%%Page: 1 1
-%%BeginPageSetup
-%%PageBoundingBox: 0 -1 130 39
-%%EndPageSetup
-q 0 -1 130 40 rectclip q
-0.513726 0.580392 0.588235 rg
-41.219 38.97 m 34.883 38.97 30.344 35.318 30.344 29.271 c 30.344 25.755
- 31.945 22.927 34.469 21.22 c 34.469 26.72 l 34.375 27.033 34.316 27.349
- 34.246 27.67 c 34.039 27.748 33.617 27.884 32.871 28.095 c 32.82 28.095
- l 32.559 28.181 32.234 28.318 31.918 28.619 c 31.605 28.923 31.344 29.463
- 31.344 29.97 c 31.344 30.455 31.57 30.927 31.82 31.197 c 32.07 31.463 32.34
- 31.595 32.57 31.697 c 33.031 31.896 33.441 31.947 33.871 31.947 c 33.945
- 31.947 34.02 31.947 34.094 31.947 c 34.707 34.896 36.992 37.494 39.996 
-37.494 c 44.156 37.494 46.371 32.955 46.371 28.795 c 46.371 24.986 44.703
- 20.92 40.895 20.92 c 40.699 20.92 40.504 20.943 40.32 20.97 c 40.32 19.447
- l 40.359 19.443 40.402 19.447 40.445 19.447 c 45.918 19.447 49.945 24.298
- 49.945 29.771 c 49.945 34.443 45.57 38.97 41.219 38.97 c h
-37.27 22.271 m 37.27 19.92 l 37.352 19.896 37.438 19.892 37.52 19.869 c
- 37.52 22.095 l 37.438 22.154 37.348 22.205 37.27 22.271 c h
-37.27 22.271 m f
-58.043 19.584 m 61.18 19.584 63.035 21.123 63.035 22.048 c 63.035 22.369
- 62.875 22.498 62.555 22.498 c 62.234 22.498 60.668 21.759 59.195 21.759
- c 56.473 21.759 55.227 24.767 55.227 27.584 c 55.227 29.697 56.57 32.095
- 58.492 32.095 c 59.164 32.095 59.578 31.521 60.121 30.978 c 60.828 30.271
- 61.625 29.826 62.203 29.826 c 62.938 29.826 63.547 30.306 63.547 31.072
- c 63.547 31.49 63.098 32.033 62.492 32.545 c 61.98 32.963 60.988 33.599
- 58.746 33.599 c 55.066 33.599 52.281 29.955 52.281 26.08 c 52.281 22.689
- 54.617 19.584 58.043 19.584 c f
-70.062 19.584 m 71.98 19.584 73.711 21.154 73.711 21.888 c 73.711 22.209
- 73.551 22.338 73.23 22.338 c 72.91 22.338 72.109 21.759 70.926 21.759 c
- 69.805 21.759 69.262 22.466 69.262 24.705 c 69.262 30.689 l 69.262 31.138
- 69.391 31.298 69.773 31.298 c 72.941 31.298 l 73.391 31.298 73.711 32.13
- 73.711 32.451 c 73.711 32.767 73.582 33.185 73.07 33.185 c 69.965 33.185
- l 69.551 33.185 69.262 33.345 69.262 33.666 c 69.262 34.56 l 69.262 35.103
- 69.195 35.361 68.812 35.361 c 68.398 35.361 67.18 34.146 66.734 33.759 
-c 65.934 33.088 64.59 32.193 64.59 31.744 c 64.59 31.423 65.324 31.298 65.613
- 31.298 c 66.797 31.298 66.605 31.138 66.605 30.849 c 66.605 23.232 l 66.605
- 20.513 68.172 19.584 70.062 19.584 c f
-78.035 24.033 m 78.035 24.576 78.516 25.216 79.637 25.568 c 81.172 26.177
- l 81.523 26.306 81.906 26.306 81.906 25.955 c 81.906 22.943 l 81.906 22.177
- 80.82 21.728 79.926 21.728 c 78.773 21.728 78.035 22.466 78.035 24.033 
-c 80.402 33.599 m 79.219 33.599 78.004 32.865 76.883 32.095 c 76.211 31.619
- 75.668 30.658 75.668 29.92 c 75.668 29.666 75.73 28.834 75.926 28.834 c
- 76.242 28.834 77.523 29.377 77.715 29.505 c 78.004 29.697 78.035 29.955
- 78.035 30.752 c 78.035 31.423 78.836 31.681 79.508 31.681 c 80.629 31.681
- 81.844 30.849 81.844 29.728 c 81.844 28.162 l 81.844 27.841 81.684 27.681
- 81.109 27.423 c 76.918 25.666 l 75.957 25.248 75.188 24.255 75.188 22.658
- c 75.188 21.056 76.789 19.584 78.355 19.584 c 79.605 19.584 80.883 20.224
- 81.621 20.963 c 81.844 21.185 81.875 21.216 82.102 20.896 c 82.516 20.322
- 83.254 19.584 84.309 19.584 c 85.59 19.584 87.188 20.416 87.188 21.568 
-c 87.188 21.92 87.094 22.271 86.898 22.271 c 86.676 22.271 86.195 21.857
- 85.746 21.857 c 85.203 21.857 84.598 22.24 84.598 22.752 c 84.598 30.338
- l 84.598 32.033 83.125 33.599 80.402 33.599 c f
-97.34 32.002 m 97.531 31.97 97.883 31.744 97.883 31.423 c 97.883 31.201
- 97.82 30.752 97.562 30.111 c 95.258 24.291 l 95.164 24.033 95.035 23.97
- 94.938 24.291 c 92.316 31.17 l 92.188 31.49 92.316 31.904 92.473 31.935
- c 93.18 32.162 93.562 32.416 93.562 32.736 c 93.562 33.056 93.273 33.377
- 92.762 33.377 c 92.281 33.377 90.938 33.185 90.457 33.185 c 89.98 33.185
- 88.891 33.377 88.41 33.377 c 87.898 33.377 87.641 33.056 87.641 32.736 
-c 87.641 32.416 88.219 32.162 88.699 32.002 c 89.18 31.841 89.625 30.818
- 89.945 29.986 c 93.5 20.673 l 93.691 20.13 93.98 19.392 94.297 19.392 c
- 94.875 19.392 95.77 22.431 96.316 23.775 c 98.844 30.177 l 99.289 31.298
- 99.867 31.873 100.219 32.002 c 100.699 32.162 101.305 32.416 101.305 32.736
- c 101.305 33.056 101.051 33.377 100.539 33.377 c 100.059 33.377 99.484 
-33.185 99.004 33.185 c 98.523 33.185 97.723 33.377 97.242 33.377 c 96.73
- 33.377 96.441 33.056 96.441 32.736 c 96.441 32.416 96.859 32.095 97.34 
-32.002 c f
-104.953 29.92 m 104.953 30.56 106.266 32.13 108.184 32.13 c 109.113 32.13
- 110.07 31.49 110.07 30.56 c 110.07 30.111 109.91 29.568 109.594 29.568 
-c 105.367 29.568 l 104.984 29.568 104.953 29.697 104.953 29.92 c 112.855
- 30.271 m 112.855 31.904 110.809 33.599 108.633 33.599 c 104.727 33.599 
-101.719 30.591 101.719 26.658 c 101.719 23.041 103.703 19.584 107.258 19.584
- c 110.391 19.584 112.246 21.123 112.246 22.048 c 112.246 22.369 112.09 
-22.498 111.77 22.498 c 111.449 22.498 110.039 21.759 108.441 21.759 c 105.91
- 21.759 104.406 24.384 104.406 26.818 c 104.406 27.361 104.406 27.423 104.535
- 27.775 c 104.633 28.033 104.695 28.095 105.145 28.095 c 111.895 28.095 
-l 112.727 28.095 112.855 29.408 112.855 30.271 c f
-0.709804 0.537255 0 rg
-8.32 11.361 m 7.23 11.361 5.922 11.201 4.801 11.201 c 3.648 11.201 2.496
- 11.361 1.246 11.361 c 0.77 11.361 0.129 11.17 0.129 10.783 c 0.129 10.498
- 0.352 10.338 0.641 10.24 c 2.465 9.728 3.266 9.697 3.266 7.873 c 3.266 
-4.193 l 3.266 3.009 2.848 2.369 1.762 1.888 c 1.055 1.568 0 1.408 0 0.927
- c 0 0.607 0.703 0.416 1.055 0.384 c 1.281 0.384 3.168 0.576 4.672 0.576
- c 6.207 0.576 8.32 0.384 8.543 0.384 c 8.895 0.416 9.566 0.607 9.566 0.927
- c 9.566 1.408 8.512 1.568 7.809 1.888 c 6.719 2.369 6.305 3.009 6.305 4.193
- c 6.305 7.873 l 6.305 9.697 7.137 9.728 8.961 10.24 c 9.246 10.338 9.441
- 10.498 9.441 10.783 c 9.441 11.17 8.801 11.361 8.32 11.361 c f
-30.07 22.56 m 28.98 22.56 27.672 22.4 26.551 22.4 c 25.398 22.4 24.246 
-22.56 22.996 22.56 c 22.52 22.56 21.879 22.369 21.879 21.982 c 21.879 21.697
- 22.102 21.537 22.391 21.439 c 24.215 20.927 25.016 20.896 25.016 19.072
- c 25.016 4.193 l 25.016 3.009 24.598 2.369 23.512 1.888 c 22.805 1.568 
-21.75 1.408 21.75 0.927 c 21.75 0.607 22.453 0.416 22.805 0.384 c 23.031
- 0.384 24.918 0.576 26.422 0.576 c 27.957 0.576 30.07 0.384 30.293 0.384
- c 30.645 0.416 31.316 0.607 31.316 0.927 c 31.316 1.408 30.262 1.568 29.559
- 1.888 c 28.469 2.369 28.055 3.009 28.055 4.193 c 28.055 19.072 l 28.055
- 20.896 28.887 20.927 30.711 21.439 c 30.996 21.537 31.191 21.697 31.191
- 21.982 c 31.191 22.369 30.551 22.56 30.07 22.56 c f
-0.862745 0.196078 0.184314 rg
-19.195 16.162 m 18.105 16.162 16.797 16.002 15.676 16.002 c 14.523 16.002
- 13.371 16.162 12.121 16.162 c 11.645 16.162 11.004 15.966 11.004 15.584
- c 11.004 15.295 11.227 15.134 11.516 15.041 c 13.34 14.529 14.141 14.498
- 14.141 12.673 c 14.141 4.193 l 14.141 3.009 13.723 2.369 12.637 1.888 c
- 11.93 1.568 10.875 1.408 10.875 0.927 c 10.875 0.607 11.578 0.416 11.93
- 0.384 c 12.156 0.384 14.043 0.576 15.547 0.576 c 17.082 0.576 19.195 0.384
- 19.418 0.384 c 19.77 0.416 20.441 0.607 20.441 0.927 c 20.441 1.408 19.387
- 1.568 18.684 1.888 c 17.594 2.369 17.18 3.009 17.18 4.193 c 17.18 12.673
- l 17.18 14.498 18.012 14.529 19.836 15.041 c 20.121 15.134 20.316 15.295
- 20.316 15.584 c 20.316 15.966 19.676 16.162 19.195 16.162 c f
-40.945 30.56 m 39.855 30.56 38.547 30.4 37.426 30.4 c 36.273 30.4 35.121
- 30.56 33.871 30.56 c 33.395 30.56 32.754 30.369 32.754 29.982 c 32.754 
-29.697 32.977 29.537 33.266 29.439 c 35.09 28.927 35.891 28.896 35.891 27.072
- c 35.891 4.193 l 35.891 3.009 35.473 2.369 34.387 1.888 c 33.68 1.568 32.625
- 1.408 32.625 0.927 c 32.625 0.607 33.328 0.416 33.68 0.384 c 33.906 0.384
- 35.793 0.576 37.297 0.576 c 38.832 0.576 40.945 0.384 41.168 0.384 c 41.52
- 0.416 42.191 0.607 42.191 0.927 c 42.191 1.408 41.137 1.568 40.434 1.888
- c 39.344 2.369 38.93 3.009 38.93 4.193 c 38.93 27.072 l 38.93 28.896 39.762
- 28.927 41.586 29.439 c 41.871 29.537 42.066 29.697 42.066 29.982 c 42.066
- 30.369 41.426 30.56 40.945 30.56 c f
-0.345098 0.431373 0.458824 rg
-57.227 3.966 m 57.227 9.759 l 57.227 12.095 55.469 14.209 53.227 14.209
- c 51.562 14.209 50.316 13.826 49.262 12.959 c 49.004 12.736 48.621 12.287
- 48.621 12.767 c 48.621 13.568 l 48.621 14.177 48.621 14.463 48.234 14.463
- c 47.914 14.463 45.293 13.408 44.906 13.216 c 44.492 13.025 43.98 12.767
- 43.98 12.416 c 43.98 12.064 44.301 11.873 44.652 11.744 c 45.422 11.455
- 45.965 10.658 45.965 10.111 c 45.965 3.904 l 45.965 3.103 45.613 2.111 
-44.746 1.857 c 43.883 1.599 43.5 1.345 43.5 1.025 c 43.5 0.705 43.629 0.384
- 44.461 0.384 c 45.164 0.384 46.668 0.576 47.309 0.576 c 47.82 0.576 48.941
- 0.384 49.645 0.384 c 50.477 0.384 50.57 0.705 50.57 1.025 c 50.57 1.345
- 50.219 1.599 49.355 1.857 c 48.746 2.048 48.621 3.103 48.621 3.904 c 48.652
- 9.025 l 48.652 11.455 49.934 12.545 51.789 12.545 c 53.453 12.545 54.57
- 10.689 54.57 8.798 c 54.57 3.904 l 54.57 3.103 54.41 2.017 53.836 1.857
- c 52.973 1.599 52.59 1.345 52.59 1.025 c 52.59 0.705 52.715 0.384 53.547
- 0.384 c 54.254 0.384 55.277 0.576 55.914 0.576 c 56.43 0.576 58.027 0.384
- 58.73 0.384 c 59.562 0.384 59.598 0.705 59.598 1.025 c 59.598 1.345 59.309
- 1.599 58.445 1.857 c 57.578 2.111 57.227 3.134 57.227 3.966 c f
-66.188 0.193 m 68.105 0.193 69.836 1.759 69.836 2.498 c 69.836 2.814 69.676
- 2.943 69.355 2.943 c 69.035 2.943 68.234 2.369 67.051 2.369 c 65.93 2.369
- 65.387 3.072 65.387 5.31 c 65.387 11.295 l 65.387 11.744 65.516 11.904 
-65.898 11.904 c 69.066 11.904 l 69.516 11.904 69.836 12.736 69.836 13.056
- c 69.836 13.377 69.707 13.791 69.195 13.791 c 66.09 13.791 l 65.676 13.791
- 65.387 13.951 65.387 14.271 c 65.387 15.17 l 65.387 15.713 65.324 15.966
- 64.938 15.966 c 64.523 15.966 63.309 14.752 62.859 14.369 c 62.059 13.697
- 60.715 12.798 60.715 12.353 c 60.715 12.033 61.449 11.904 61.738 11.904
- c 62.922 11.904 62.73 11.744 62.73 11.455 c 62.73 3.841 l 62.73 1.119 64.301
- 0.193 66.188 0.193 c f
-74.578 10.529 m 74.578 11.17 75.891 12.736 77.809 12.736 c 78.738 12.736
- 79.699 12.095 79.699 11.17 c 79.699 10.72 79.539 10.177 79.219 10.177 c
- 74.992 10.177 l 74.609 10.177 74.578 10.302 74.578 10.529 c 82.48 10.88
- m 82.48 12.513 80.434 14.209 78.258 14.209 c 74.355 14.209 71.348 11.201
- 71.348 7.263 c 71.348 3.646 73.328 0.193 76.883 0.193 c 80.02 0.193 81.875
- 1.728 81.875 2.658 c 81.875 2.974 81.715 3.103 81.395 3.103 c 81.074 3.103
- 79.664 2.369 78.066 2.369 c 75.539 2.369 74.035 4.994 74.035 7.423 c 74.035
- 7.966 74.035 8.033 74.16 8.384 c 74.258 8.638 74.32 8.705 74.77 8.705 c
- 81.523 8.705 l 82.355 8.705 82.48 10.017 82.48 10.88 c f
-87.559 0.576 m 88.07 0.576 89.957 0.384 90.66 0.384 c 91.492 0.384 91.75
- 0.705 91.75 1.025 c 91.75 1.345 91.301 1.599 90.438 1.857 c 89.574 2.111
- 88.871 3.103 88.871 3.904 c 88.934 10.142 l 88.934 10.974 89.863 11.646
- 90.598 11.646 c 91.238 11.646 92.199 10.752 92.68 10.752 c 92.84 10.752
- 93.094 10.943 93.191 11.041 c 93.703 11.552 94.148 12.384 94.148 12.865
- c 94.148 13.599 93.637 14.209 92.324 14.209 c 91.367 14.209 90.023 13.505
- 89.512 12.959 c 89.352 12.767 88.871 12.287 88.871 12.767 c 88.871 13.568
- l 88.871 14.177 88.871 14.463 88.484 14.463 c 88.164 14.463 85.512 13.408
- 85.156 13.216 c 84.742 13.025 84.23 12.767 84.23 12.416 c 84.23 12.064 
-84.551 11.873 84.902 11.744 c 85.672 11.455 86.215 10.658 86.215 10.111 
-c 86.215 3.904 l 86.215 3.103 85.863 2.111 84.996 1.857 c 84.133 1.599 83.75
- 1.345 83.75 1.025 c 83.75 0.705 83.879 0.384 84.711 0.384 c 85.414 0.384
- 86.949 0.576 87.559 0.576 c f
-104.215 12.607 m 104.406 12.576 104.758 12.353 104.758 12.033 c 104.758
- 11.806 104.695 11.361 104.438 10.72 c 102.133 4.896 l 102.039 4.638 101.91
- 4.576 101.816 4.896 c 99.191 11.775 l 99.062 12.095 99.191 12.513 99.352
- 12.545 c 100.055 12.767 100.438 13.025 100.438 13.345 c 100.438 13.666 
-100.152 13.982 99.637 13.982 c 99.16 13.982 97.816 13.791 97.336 13.791 
-c 96.855 13.791 95.766 13.982 95.285 13.982 c 94.773 13.982 94.52 13.666
- 94.52 13.345 c 94.52 13.025 95.094 12.767 95.574 12.607 c 96.055 12.447
- 96.504 11.423 96.824 10.591 c 100.375 1.279 l 100.566 0.736 100.855 0.002
- 101.176 0.002 c 101.75 0.002 102.648 3.041 103.191 4.384 c 105.719 10.783
- l 106.168 11.904 106.742 12.478 107.094 12.607 c 107.574 12.767 108.184
- 13.025 108.184 13.345 c 108.184 13.666 107.926 13.982 107.414 13.982 c 
-106.934 13.982 106.359 13.791 105.879 13.791 c 105.398 13.791 104.598 13.982
- 104.117 13.982 c 103.605 13.982 103.32 13.666 103.32 13.345 c 103.32 13.025
- 103.734 12.705 104.215 12.607 c f
-111.41 4.638 m 111.41 5.185 111.891 5.826 113.012 6.177 c 114.547 6.783
- l 114.898 6.912 115.285 6.912 115.285 6.56 c 115.285 3.552 l 115.285 2.783
- 114.195 2.338 113.301 2.338 c 112.148 2.338 111.41 3.072 111.41 4.638 c
- 113.781 14.209 m 112.598 14.209 111.379 13.47 110.262 12.705 c 109.59 12.224
- 109.043 11.263 109.043 10.529 c 109.043 10.271 109.109 9.439 109.301 9.439
- c 109.621 9.439 110.898 9.982 111.094 10.111 c 111.379 10.302 111.41 10.56
- 111.41 11.361 c 111.41 12.033 112.211 12.287 112.883 12.287 c 114.004 12.287
- 115.219 11.455 115.219 10.338 c 115.219 8.767 l 115.219 8.447 115.059 8.287
- 114.484 8.033 c 110.293 6.271 l 109.332 5.857 108.562 4.865 108.562 3.263
- c 108.562 1.666 110.164 0.193 111.73 0.193 c 112.98 0.193 114.262 0.834
- 114.996 1.568 c 115.219 1.791 115.254 1.826 115.477 1.505 c 115.891 0.927
- 116.629 0.193 117.684 0.193 c 118.965 0.193 120.562 1.025 120.562 2.177
- c 120.562 2.529 120.469 2.88 120.277 2.88 c 120.051 2.88 119.57 2.463 119.125
- 2.463 c 118.578 2.463 117.973 2.849 117.973 3.361 c 117.973 10.943 l 117.973
- 12.638 116.5 14.209 113.781 14.209 c f
-124.027 18.591 m 124.027 3.904 l 124.027 3.103 123.676 2.111 122.809 1.857
- c 121.945 1.599 121.402 1.345 121.402 1.025 c 121.402 0.705 121.691 0.384
- 122.523 0.384 c 123.227 0.384 124.73 0.576 125.371 0.576 c 125.883 0.576
- 127.484 0.384 128.188 0.384 c 129.02 0.384 129.273 0.705 129.273 1.025 
-c 129.273 1.345 128.762 1.599 127.898 1.857 c 127.035 2.111 126.684 3.103
- 126.684 3.904 c 126.684 21.377 l 126.684 21.982 126.684 22.24 126.297 22.24
- c 125.977 22.24 124.25 21.697 122.969 21.47 c 122.523 21.408 122.043 21.154
- 122.043 20.798 c 122.043 20.447 122.426 20.193 122.777 20.064 c 123.547
- 19.775 124.027 19.134 124.027 18.591 c f
-Q Q
-showpage
-%%Trailer
-end restore
-%%EOF
diff --git a/doc/image/logo.svg.pdf b/doc/image/logo.svg.pdf
deleted file mode 100644
index 5ba84a8..0000000
Binary files a/doc/image/logo.svg.pdf and /dev/null differ
diff --git a/doc/image/logo.svg.png b/doc/image/logo.svg.png
deleted file mode 100644
index 4330e90..0000000
Binary files a/doc/image/logo.svg.png and /dev/null differ
diff --git a/doc/image/octave-interval.ly b/doc/image/octave-interval.ly
index 5a15d6b..ae99ede 100644
--- a/doc/image/octave-interval.ly
+++ b/doc/image/octave-interval.ly
@@ -1,5 +1,5 @@
 %% This is part of the GNU Octave Interval Package Manual.
-%% Copyright (C) 2015 Oliver Heimlich.
+%% Copyright 2015-2016 Oliver Heimlich.
 %% See the file manual.texinfo for copying conditions.
 
 \include "lilypond-book-preamble.ly"
diff --git a/doc/image/octave-interval.ly.pdf b/doc/image/octave-interval.ly.pdf
index 56f9e27..e19039b 100644
Binary files a/doc/image/octave-interval.ly.pdf and b/doc/image/octave-interval.ly.pdf differ
diff --git a/doc/image/poly-example-roots-simple.m.texinfo b/doc/image/poly-example-roots-simple.m.texinfo
index c529f64..aa18ea7 100644
--- a/doc/image/poly-example-roots-simple.m.texinfo
+++ b/doc/image/poly-example-roots-simple.m.texinfo
@@ -1,6 +1,6 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
- at c Copyright (C) 2015 Helmut Podhaisky.
+ at c Copyright 2015-2016 Oliver Heimlich.
+ at c Copyright 2015 Helmut Podhaisky.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
diff --git a/doc/image/poly-example-roots-with-deriv.m.texinfo b/doc/image/poly-example-roots-with-deriv.m.texinfo
index 333bf68..af7b2e5 100644
--- a/doc/image/poly-example-roots-with-deriv.m.texinfo
+++ b/doc/image/poly-example-roots-with-deriv.m.texinfo
@@ -1,6 +1,6 @@
 @c This is part of the GNU Octave Interval Package Manual.
- at c Copyright (C) 2015 Oliver Heimlich.
- at c Copyright (C) 2015 Helmut Podhaisky.
+ at c Copyright 2015-2016 Oliver Heimlich.
+ at c Copyright 2015 Helmut Podhaisky.
 @c See the file manual.texinfo for copying conditions.
 @documentencoding UTF-8
 
diff --git a/doc/manual.css b/doc/manual.css
index dbadcc0..db80df0 100644
--- a/doc/manual.css
+++ b/doc/manual.css
@@ -1,6 +1,6 @@
 /*
 This is part of the GNU Octave Interval Package Manual.
-Copyright (C) 2015 Oliver Heimlich.
+Copyright 2015-2016 Oliver Heimlich.
 See the file manual.texinfo for copying conditions.
 */
 
@@ -49,9 +49,7 @@ div.alpha-list + ol { list-style-type:lower-alpha; }
 div.zero-list + ol { counter-reset: item -1; }
 div.zero-list + ol > li { display:block; }
 div.zero-list + ol > li:before { content: counter(item) "."; counter-increment: item; display:inline-block; margin-left: -2.5em; min-width: 2em; margin-right: 0.2em; text-align: right; }
-div.logo { text-align: center; }
-div.logo object { height: 4em; }
-div.logo object, div.logo img { padding-bottom: 1em; padding-top: 5em; }
+.sf-logo { display:block; text-align: center; padding-top: 2em; padding-bottom: 2em; }
 code, samp { font-family: 'Fantasque Sans Mono', monospace; padding: 0 0.1em; font-style: italic; }
 pre.example, pre.smallexample, pre.verbatim { font-family: 'Fantasque Sans Mono', monospace; }
 pre.example { background-color: #fdf6e3; color: #657b83; padding: 0.5em; }
diff --git a/doc/manual.init b/doc/manual.init
deleted file mode 100644
index 210c05c..0000000
--- a/doc/manual.init
+++ /dev/null
@@ -1 +0,0 @@
-set_from_init_file ('PRE_BODY_CLOSE', '<div class="logo"><object data="image/logo.svg" type="image/svg+xml"><param name="src" value="image/logo.svg" /><img src="image/logo.svg.png" /></object></div>');
diff --git a/doc/manual.texinfo b/doc/manual.texinfo
index 0ffdd83..9cb04e9 100644
--- a/doc/manual.texinfo
+++ b/doc/manual.texinfo
@@ -34,7 +34,7 @@
 @copying
 This manual is for the GNU Octave interval package, version @value{version}.
 
-Copyright @copyright{} 2015 Oliver Heimlich
+Copyright @copyright{} 2015–2016 Oliver Heimlich
 
 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 3 or any later version published by the Free Software Foundation. A copy of the license is included in @ref{GNU General Public License}.
 @end copying
@@ -68,14 +68,7 @@ Permission is granted to copy, distribute and/or modify this document under the
 @insertcopying
 @end ifnottex
 
- at ifset octave-forge
- at c For the HTML version at Octave Forge we must fix the up node,
- at c because “../doc/index.html” does not exist.
- at node Top, Preface,, (..)
- at end ifset
- at ifclear octave-forge
 @node Top
- at end ifclear
 @ifnottex
 @top
 @end ifnottex
diff --git a/inst/@infsup/abs.m b/inst/@infsup/abs.m
index 0dff2e6..baee778 100644
--- a/inst/@infsup/abs.m
+++ b/inst/@infsup/abs.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/absrev.m b/inst/@infsup/absrev.m
index 617a869..fcecc69 100644
--- a/inst/@infsup/absrev.m
+++ b/inst/@infsup/absrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/acos.m b/inst/@infsup/acos.m
index 3262adf..03305d0 100644
--- a/inst/@infsup/acos.m
+++ b/inst/@infsup/acos.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/acosh.m b/inst/@infsup/acosh.m
index bc87bcb..6cd0210 100644
--- a/inst/@infsup/acosh.m
+++ b/inst/@infsup/acosh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/asin.m b/inst/@infsup/asin.m
index 8bd718f..1d80cbc 100644
--- a/inst/@infsup/asin.m
+++ b/inst/@infsup/asin.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/asinh.m b/inst/@infsup/asinh.m
index 7a1a295..d4043dd 100644
--- a/inst/@infsup/asinh.m
+++ b/inst/@infsup/asinh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/atan.m b/inst/@infsup/atan.m
index 47584d8..e12bd45 100644
--- a/inst/@infsup/atan.m
+++ b/inst/@infsup/atan.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/atan2.m b/inst/@infsup/atan2.m
index c7e9814..d085918 100644
--- a/inst/@infsup/atan2.m
+++ b/inst/@infsup/atan2.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/atan2rev1.m b/inst/@infsup/atan2rev1.m
index f2b6aaa..4f55c0f 100644
--- a/inst/@infsup/atan2rev1.m
+++ b/inst/@infsup/atan2rev1.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/atan2rev2.m b/inst/@infsup/atan2rev2.m
index bc1c667..e34c354 100644
--- a/inst/@infsup/atan2rev2.m
+++ b/inst/@infsup/atan2rev2.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/atanh.m b/inst/@infsup/atanh.m
index a0ba075..35332a7 100644
--- a/inst/@infsup/atanh.m
+++ b/inst/@infsup/atanh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/bisect.m b/inst/@infsup/bisect.m
index fbafa8c..ef0e139 100644
--- a/inst/@infsup/bisect.m
+++ b/inst/@infsup/bisect.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/bitunpack.m b/inst/@infsup/bitunpack.m
index 73f3ffb..7e93ac9 100644
--- a/inst/@infsup/bitunpack.m
+++ b/inst/@infsup/bitunpack.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -21,7 +21,9 @@
 ## Encode bare interval @var{X} in interchange format.
 ##
 ## The result is a raw bit pattern of length 128 that derive from two binary64
-## numbers.  Bits are in increasing order.
+## numbers.  Bits are in increasing order.  Byte order depends on the system's
+## endianness.  First 8 bytes come from the lower interval boundary, last
+## 8 bytes come from the upper interval boundary.
 ##
 ## The result is a row vector if @var{X} is a row vector; otherwise, it is a
 ## column vector.
@@ -57,15 +59,19 @@ if (not (isrow (l)))
 endif
 
 ## Merge 64 bit blocks from l and u (alternating) together into result.
-## Because of increasing bit order, u comes first.
 target = reshape (1 : length (result), 64, numel (x.inf) + numel (x.sup));
 target (:, 2 : 2 : size (target, 2)) = [];
-result (target) = u;
-result (target + 64) = l;
+result (target) = l;
+result (target + 64) = u;
 
 endfunction
 
 %!test;
+%!  littleendian = bitunpack (uint16 (1))(1);
 %!  b = zeros (1, 128);
-%!  b ([53, 63, 116, 127]) = 1;
+%!  if (littleendian)
+%!    b([52, 63, 117, 127]) = 1;
+%!  else
+%!    b([7, 12, 71, 77]) = 1;
+%!  endif
 %!  assert (bitunpack (infsup (3, 4)), logical (b));
diff --git a/inst/@infsup/cancelminus.m b/inst/@infsup/cancelminus.m
index 7fd02cc..ae47022 100644
--- a/inst/@infsup/cancelminus.m
+++ b/inst/@infsup/cancelminus.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/cancelplus.m b/inst/@infsup/cancelplus.m
index 6048c0f..43c4cc5 100644
--- a/inst/@infsup/cancelplus.m
+++ b/inst/@infsup/cancelplus.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/cat.m b/inst/@infsup/cat.m
index 234efc9..942e018 100644
--- a/inst/@infsup/cat.m
+++ b/inst/@infsup/cat.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/cbrt.m b/inst/@infsup/cbrt.m
index 1ddef59..f581ed0 100644
--- a/inst/@infsup/cbrt.m
+++ b/inst/@infsup/cbrt.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/ceil.m b/inst/@infsup/ceil.m
index 9c34780..e138dd2 100644
--- a/inst/@infsup/ceil.m
+++ b/inst/@infsup/ceil.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/columns.m b/inst/@infsup/columns.m
index 696430d..7fb2463 100644
--- a/inst/@infsup/columns.m
+++ b/inst/@infsup/columns.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/cos.m b/inst/@infsup/cos.m
index bf70c55..966d16d 100644
--- a/inst/@infsup/cos.m
+++ b/inst/@infsup/cos.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/cosh.m b/inst/@infsup/cosh.m
index 0bdbe16..bc25926 100644
--- a/inst/@infsup/cosh.m
+++ b/inst/@infsup/cosh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/coshrev.m b/inst/@infsup/coshrev.m
index 18ad018..dbb341d 100644
--- a/inst/@infsup/coshrev.m
+++ b/inst/@infsup/coshrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/cosrev.m b/inst/@infsup/cosrev.m
index 5f46492..e780f6d 100644
--- a/inst/@infsup/cosrev.m
+++ b/inst/@infsup/cosrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/cot.m b/inst/@infsup/cot.m
index ad2b7d9..3214e33 100644
--- a/inst/@infsup/cot.m
+++ b/inst/@infsup/cot.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/coth.m b/inst/@infsup/coth.m
index 5319e9d..6df7ef8 100644
--- a/inst/@infsup/coth.m
+++ b/inst/@infsup/coth.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/csc.m b/inst/@infsup/csc.m
index b8769c6..0648417 100644
--- a/inst/@infsup/csc.m
+++ b/inst/@infsup/csc.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/csch.m b/inst/@infsup/csch.m
index 230eb0c..d9ec0ab 100644
--- a/inst/@infsup/csch.m
+++ b/inst/@infsup/csch.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/ctranspose.m b/inst/@infsup/ctranspose.m
index d01864c..1188d24 100644
--- a/inst/@infsup/ctranspose.m
+++ b/inst/@infsup/ctranspose.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/det.m b/inst/@infsup/det.m
index 462f50c..10a15e1 100644
--- a/inst/@infsup/det.m
+++ b/inst/@infsup/det.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/diag.m b/inst/@infsup/diag.m
index dbafa51..2bdf0eb 100644
--- a/inst/@infsup/diag.m
+++ b/inst/@infsup/diag.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/dilog.m b/inst/@infsup/dilog.m
index 706deb3..577d29e 100644
--- a/inst/@infsup/dilog.m
+++ b/inst/@infsup/dilog.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/disjoint.m b/inst/@infsup/disjoint.m
index 43f0fc8..0fe62f9 100644
--- a/inst/@infsup/disjoint.m
+++ b/inst/@infsup/disjoint.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/disp.m b/inst/@infsup/disp.m
index 4df2dc5..f3b93ad 100644
--- a/inst/@infsup/disp.m
+++ b/inst/@infsup/disp.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/display.m b/inst/@infsup/display.m
index 69625f4..5b75762 100644
--- a/inst/@infsup/display.m
+++ b/inst/@infsup/display.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/dot.m b/inst/@infsup/dot.m
index 7e4375c..cbed8f7 100644
--- a/inst/@infsup/dot.m
+++ b/inst/@infsup/dot.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/ei.m b/inst/@infsup/ei.m
index 126769b..71ee2f4 100644
--- a/inst/@infsup/ei.m
+++ b/inst/@infsup/ei.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/eq.m b/inst/@infsup/eq.m
index 2884e71..5c4322e 100644
--- a/inst/@infsup/eq.m
+++ b/inst/@infsup/eq.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/erf.m b/inst/@infsup/erf.m
index decfdce..cb6228a 100644
--- a/inst/@infsup/erf.m
+++ b/inst/@infsup/erf.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/erfc.m b/inst/@infsup/erfc.m
index 7f81c0d..9891fe2 100644
--- a/inst/@infsup/erfc.m
+++ b/inst/@infsup/erfc.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/exp.m b/inst/@infsup/exp.m
index 438f2de..b02a101 100644
--- a/inst/@infsup/exp.m
+++ b/inst/@infsup/exp.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/expm.m b/inst/@infsup/expm.m
new file mode 100644
index 0000000..0093d9d
--- /dev/null
+++ b/inst/@infsup/expm.m
@@ -0,0 +1,127 @@
+## Copyright 2016 Oliver Heimlich
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @documentencoding UTF-8
+## @defmethod {@@infsup} expm (@var{A})
+## 
+## Compute the matrix exponential of square matrix @var{A}.
+##
+## The matrix exponential is defined as the infinite Taylor series
+##
+## @tex
+## $$
+##  {\rm expm} (A) = \sum_{k = 0}^{\infty} {A^k \over k!}
+## $$
+## @end tex
+## @ifnottex
+## @group
+## @verbatim
+##                     A²     A³
+## expm (A) = I + A + ---- + ---- + …
+##                     2!     3!
+## @end verbatim
+## @end group
+## @end ifnottex
+##
+## The function implements the following algorithm:  1. The matrix is scaled,
+## 2. an enclosure of the Taylor series is computed using the Horner scheme,
+## 3. the matrix is squared.  That is, the algorithm computes
+## @code{expm (@var{A} ./ pow2 (@var{L})) ^ pow2 (@var{L})}.  The scaling
+## reduces the matrix norm below 1, which reduces errors during exponentiation.
+## Exponentiation typically is done by Padé approximation, but that doesn't
+## work for interval matrices, so we compute a Horner evaluation of the Taylor
+## series.  Finally, the exponentiation with @code{pow2 (@var{L})} is computed
+## with @var{L} successive interval matrix square operations.  Interval matrix
+## square operations can be done without dependency errors (regarding each
+## single step).
+##
+## The algorithm has been published by Alexandre Goldsztejn and Arnold
+## Neumaier (2009), “On the Exponentiation of Interval Matrices.” 
+##
+## Accuracy: The result is a valid enclosure.
+##
+## @example
+## @group
+## vec (expm (infsup(magic (3))))
+##   @result{} ans ⊂ 9×1 interval vector
+##
+##        [1.0897e+06, 1.0898e+06]
+##        [1.0896e+06, 1.0897e+06]
+##        [1.0896e+06, 1.0897e+06]
+##        [1.0895e+06, 1.0896e+06]
+##        [1.0897e+06, 1.0898e+06]
+##        [1.0897e+06, 1.0898e+06]
+##        [1.0896e+06, 1.0897e+06]
+##        [1.0896e+06, 1.0897e+06]
+##        [1.0896e+06, 1.0897e+06]
+##
+## @end group
+## @end example
+## @seealso{@@infsup/mpower, @@infsup/exp}
+## @end defmethod
+
+## Author: Oliver Heimlich
+## Keywords: interval
+## Created: 2016-01-26
+
+function result = expm (A)
+
+if (nargin ~= 1)
+    print_usage ();
+    return
+endif
+
+if (isscalar (A))
+    ## Short-circuit for scalars
+    result = exp (A);
+    return
+endif
+
+if (not (issquare (A.inf)))
+    error ("interval:InvalidOperand", ...
+           "expm: must be square matrix");
+endif
+
+## Choose L such that ||A|| / 2^L < 0.1 and 10 <= L <= 100
+L = min (max (inf (ceil (log2 (10 * norm (A, inf)))), 10), 100);
+## Choose K such that K + 2 > ||A|| and 10 <= K <= 170
+K = min (max (inf (ceil (norm (A, inf) - 2)), 10), 170);
+
+## 1. Scale
+A = rdivide (A, pow2 (L));
+
+## 2. Compute Taylor series
+## Compute Horner scheme: I + A*(I + A/2*(I + A/3*( ... (I + A/K) ... )))
+result = I = eye (size (A.inf));
+for k = K : -1 : 1
+    result = I + A ./ k * result;
+endfor
+## Truncation error for the exponential series
+alpha = norm (A, inf);
+rho = pown (alpha, K + 1) ./ ...
+      (factorial (infsup (K + 1)) * (1 - alpha ./ (K + 2)));
+warning ("off", "interval:ImplicitPromote", "local");
+truncation_error = rho .* infsup (-1, 1);
+result = result + truncation_error;
+
+## 3. Squaring
+result = mpower (result, pow2 (L));
+
+endfunction
+
+%!test "from the paper";
+%! A = infsup ([0 1; 0 -3], [0 1; 0 -2]);
+%! assert (all (all (subset (infsup ([1, 0.316738; 0, 0.0497871], [1, 0.432332; 0 0.135335]), expm (A)))));
\ No newline at end of file
diff --git a/inst/@infsup/expm1.m b/inst/@infsup/expm1.m
index ff8ddee..33d52cc 100644
--- a/inst/@infsup/expm1.m
+++ b/inst/@infsup/expm1.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/factorial.m b/inst/@infsup/factorial.m
new file mode 100644
index 0000000..2a54652
--- /dev/null
+++ b/inst/@infsup/factorial.m
@@ -0,0 +1,78 @@
+## Copyright 2016 Oliver Heimlich
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @documentencoding UTF-8
+## @defmethod {@@infsup} factorial (@var{N})
+## 
+## Compute the factorial of @var{N} where @var{N} is a real non-negative
+## integer.
+##
+## If @var{N} is a scalar, this is equivalent to
+## @display
+## factorial (@var{N}) = 1 * 2 * @dots{} * @var{N}.
+## @end display
+## For vector or matrix arguments, return the factorial of each element in the
+## array.
+##
+## For non-integers see the generalized factorial function @command{gamma}.
+## Not that the factorial function grows large quite quickly, and the result
+## cannot be represented exactly in binary64 for @var{N} ≥ 23 and will overflow
+## for @var{N} ≥ 171.
+##
+## Accuracy: The result is a tight enclosure.
+##
+## @example
+## @group
+## factorial (infsup (6))
+##   @result{} ans = [720]
+## @end group
+## @end example
+## @seealso{@@infsup/prod, @@infsup/gamma, @@infsup/gammaln}
+## @end defmethod
+
+## Author: Oliver Heimlich
+## Keywords: interval
+## Created: 2016-01-31
+
+function result = factorial (x)
+
+if (nargin ~= 1)
+    print_usage ();
+    return
+endif
+
+l = max (0, ceil (x.inf));
+u = floor (x.sup);
+
+emptyresult = l > u;
+l (emptyresult) = inf;
+u (emptyresult) = -inf;
+
+l (not (emptyresult)) = ...
+    mpfr_function_d ("factorial", -inf, l (not (emptyresult)));
+u (not (emptyresult)) = ...
+    mpfr_function_d ("factorial", +inf, u (not (emptyresult)));
+
+result = infsup (l, u);
+
+endfunction
+
+%!test "from the documentation string";
+%! assert (factorial (infsup (6)) == 720);
+%!assert (factorial (infsup (0)) == 1);
+%!assert (factorial (infsup ("[0, 1.99]")) == 1);
+%!assert (factorial (infsup ("[0, 2]")) == "[1, 2]");
+%!assert (factorial (infsup ("[1.4, 1.6]")) == "[Empty]");
diff --git a/inst/@infsup/fix.m b/inst/@infsup/fix.m
index 8c9a835..4354953 100644
--- a/inst/@infsup/fix.m
+++ b/inst/@infsup/fix.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/floor.m b/inst/@infsup/floor.m
index 048af2c..9da564d 100644
--- a/inst/@infsup/floor.m
+++ b/inst/@infsup/floor.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/fma.m b/inst/@infsup/fma.m
index 946dec1..1f8b822 100644
--- a/inst/@infsup/fma.m
+++ b/inst/@infsup/fma.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/fminsearch.m b/inst/@infsup/fminsearch.m
index f134000..71301e1 100644
--- a/inst/@infsup/fminsearch.m
+++ b/inst/@infsup/fminsearch.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -43,7 +43,7 @@
 ##
 ## @example
 ## @group
-## f = @@(x) sqr (x(1)) - sqr (x(2));
+## f = @@(x) x(1) .^ 2 - x(2) .^ 2;
 ## [x, fval] = fminsearch (f, infsup ("[-1, 1] [-1, 1]"))
 ##   @result{}
 ##     x ⊂ 1×2 interval vector
@@ -273,6 +273,7 @@ function [list, X, fX] = pop_ordered_list (list)
 endfunction
 
 %!test
+%!  sqr = @(x) x .^ 2;
 %!  [x, y] = fminsearch (@sqr, infsup (-inf, inf));
 %!  assert (y == 0);
 
@@ -280,7 +281,7 @@ endfunction
 %!  clf
 %!  hold on
 %!  draw = @(x) plot (x(1), x(2), [238 232 213]/255, [88 110 117]/255);
-%!  f = @(x) sqr (x(1) - 2) - sqr (x(2));
+%!  f = @(x) (x(1) - 2) .^ 2 - x(2) .^ 2;
 %!  fminsearch (f, infsup ("[1, 3] [0, 1]"), ...
 %!              optimset ('OutputFcn', draw));
 %!  hold off
diff --git a/inst/@infsup/fsolve.m b/inst/@infsup/fsolve.m
index 81c09af..8b3a90e 100644
--- a/inst/@infsup/fsolve.m
+++ b/inst/@infsup/fsolve.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -92,8 +92,8 @@
 ## # but now contractions speed up the algorithm.
 ## function [fval, cx1, cx2] = f (y, x1, x2)
 ##   # Forward evaluation
-##   x1_sqr = sqr (x1);
-##   x2_sqr = sqr (x2);
+##   x1_sqr = x1 .^ 2;
+##   x2_sqr = x2 .^ 2;
 ##   fval = hypot (x1, x2);
 ##
 ##   # Reverse evaluation and contraction
diff --git a/inst/@infsup/fzero.m b/inst/@infsup/fzero.m
index c13e1d2..ea4c797 100644
--- a/inst/@infsup/fzero.m
+++ b/inst/@infsup/fzero.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -62,7 +62,8 @@
 ##         [1.5707, 1.5708]
 ##         [4.7123, 4.7124]
 ##          [7.8539, 7.854]
-## fzero ("sqr", infsup ("[Entire]"))
+## sqr = @@(x) x .^ 2;
+## fzero (sqr, infsup ("[Entire]"))
 ##   @result{} ans ⊂ [-3.2968e-161, +3.2968e-161]
 ## @end group
 ## @end example
@@ -222,6 +223,7 @@ endfunction
 %! zeros = fzero (f, infsup ("[-10, 10]"), df);
 %! assert (all (subset (pi * (-2.5:1:2.5)', zeros)));
 %! assert (max (rad (zeros)) < 8 * eps);
-%! zeros = fzero ("sqr", infsup ("[Entire]"));
+%! sqr = @(x) x .^ 2;
+%! zeros = fzero (sqr, infsup ("[Entire]"));
 %! assert (all (subset (0, zeros)));
 %! assert (max (rad (zeros)) < eps);
diff --git a/inst/@infsup/gamma.m b/inst/@infsup/gamma.m
index 871c867..45afbe4 100644
--- a/inst/@infsup/gamma.m
+++ b/inst/@infsup/gamma.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -45,7 +45,7 @@
 ##   @result{} ans ⊂ [0.88622, 0.88623]
 ## @end group
 ## @end example
-## @seealso{@@infsup/psi, @@infsup/gammaln}
+## @seealso{@@infsup/psi, @@infsup/gammaln, @@infsup/factorial}
 ## @end defmethod
 
 ## Author: Oliver Heimlich
diff --git a/inst/@infsup/gammaln.m b/inst/@infsup/gammaln.m
index 8e33714..8c013e9 100644
--- a/inst/@infsup/gammaln.m
+++ b/inst/@infsup/gammaln.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
 ##   @result{} ans ⊂ [-0.12079, -0.12078]
 ## @end group
 ## @end example
-## @seealso{@@infsup/psi, @@infsup/gamma}
+## @seealso{@@infsup/psi, @@infsup/gamma, @@infsup/factorial}
 ## @end defmethod
 
 ## Author: Oliver Heimlich
diff --git a/inst/@infsup/gauss.m b/inst/@infsup/gauss.m
index 7446127..7e8cfb6 100644
--- a/inst/@infsup/gauss.m
+++ b/inst/@infsup/gauss.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/ge.m b/inst/@infsup/ge.m
index 4371328..f351c82 100644
--- a/inst/@infsup/ge.m
+++ b/inst/@infsup/ge.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/gt.m b/inst/@infsup/gt.m
index 37901ee..aa46047 100644
--- a/inst/@infsup/gt.m
+++ b/inst/@infsup/gt.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/hdist.m b/inst/@infsup/hdist.m
index 9d69f93..e92a6a3 100644
--- a/inst/@infsup/hdist.m
+++ b/inst/@infsup/hdist.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/horzcat.m b/inst/@infsup/horzcat.m
index 5c69cb8..209c11b 100644
--- a/inst/@infsup/horzcat.m
+++ b/inst/@infsup/horzcat.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/hypot.m b/inst/@infsup/hypot.m
index efcc1e7..cd9cbb2 100644
--- a/inst/@infsup/hypot.m
+++ b/inst/@infsup/hypot.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/idist.m b/inst/@infsup/idist.m
index 9d8ec87..eca557c 100644
--- a/inst/@infsup/idist.m
+++ b/inst/@infsup/idist.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/inf.m b/inst/@infsup/inf.m
index 848fe1e..e8ae8de 100644
--- a/inst/@infsup/inf.m
+++ b/inst/@infsup/inf.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/infsup.m b/inst/@infsup/infsup.m
index e76ddf7..a1dc92b 100644
--- a/inst/@infsup/infsup.m
+++ b/inst/@infsup/infsup.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/interior.m b/inst/@infsup/interior.m
index c162e2e..2ae0811 100644
--- a/inst/@infsup/interior.m
+++ b/inst/@infsup/interior.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/intersect.m b/inst/@infsup/intersect.m
index 26ef8c6..a6ac578 100644
--- a/inst/@infsup/intersect.m
+++ b/inst/@infsup/intersect.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/intervaltoexact.m b/inst/@infsup/intervaltoexact.m
index 3415756..6eb3bd5 100644
--- a/inst/@infsup/intervaltoexact.m
+++ b/inst/@infsup/intervaltoexact.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/intervaltotext.m b/inst/@infsup/intervaltotext.m
index 7fe1d49..e059093 100644
--- a/inst/@infsup/intervaltotext.m
+++ b/inst/@infsup/intervaltotext.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/inv.m b/inst/@infsup/inv.m
index 88d655e..8a2d49a 100644
--- a/inst/@infsup/inv.m
+++ b/inst/@infsup/inv.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -35,7 +35,7 @@
 ##        [0]        [0]       [1]
 ## @end group
 ## @end example
-## @seealso{@@infsup/recip, @@infsup/mrdivide}
+## @seealso{@@infsup/mrdivide}
 ## @end defmethod
 
 ## Author: Oliver Heimlich
@@ -51,7 +51,7 @@ endif
 
 n = length (x);
 if (n <= 1)
-    result = recip (x);
+    result = rdivide (1, x);
     return
 endif
 
diff --git a/inst/@infsup/iscolumn.m b/inst/@infsup/iscolumn.m
index fe10a55..c977c3b 100644
--- a/inst/@infsup/iscolumn.m
+++ b/inst/@infsup/iscolumn.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/iscommoninterval.m b/inst/@infsup/iscommoninterval.m
index 962af57..4ed5c08 100644
--- a/inst/@infsup/iscommoninterval.m
+++ b/inst/@infsup/iscommoninterval.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/isempty.m b/inst/@infsup/isempty.m
index 3db5059..ee16b8c 100644
--- a/inst/@infsup/isempty.m
+++ b/inst/@infsup/isempty.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/isentire.m b/inst/@infsup/isentire.m
index a9bf58c..0a3c829 100644
--- a/inst/@infsup/isentire.m
+++ b/inst/@infsup/isentire.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/ismatrix.m b/inst/@infsup/ismatrix.m
index 1bb848b..f478931 100644
--- a/inst/@infsup/ismatrix.m
+++ b/inst/@infsup/ismatrix.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/ismember.m b/inst/@infsup/ismember.m
index ec34806..4de4f6c 100644
--- a/inst/@infsup/ismember.m
+++ b/inst/@infsup/ismember.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/isrow.m b/inst/@infsup/isrow.m
index 3f416dd..e7e740c 100644
--- a/inst/@infsup/isrow.m
+++ b/inst/@infsup/isrow.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/isscalar.m b/inst/@infsup/isscalar.m
index 6ee7aeb..ff5641e 100644
--- a/inst/@infsup/isscalar.m
+++ b/inst/@infsup/isscalar.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/issingleton.m b/inst/@infsup/issingleton.m
index 78a0e0e..e96f681 100644
--- a/inst/@infsup/issingleton.m
+++ b/inst/@infsup/issingleton.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/issquare.m b/inst/@infsup/issquare.m
index 52755e5..b3ee3d0 100644
--- a/inst/@infsup/issquare.m
+++ b/inst/@infsup/issquare.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/isvector.m b/inst/@infsup/isvector.m
index faf5f73..ed134f3 100644
--- a/inst/@infsup/isvector.m
+++ b/inst/@infsup/isvector.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/ldivide.m b/inst/@infsup/ldivide.m
index 1d60c15..a1e7599 100644
--- a/inst/@infsup/ldivide.m
+++ b/inst/@infsup/ldivide.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/le.m b/inst/@infsup/le.m
index feef343..60a2c82 100644
--- a/inst/@infsup/le.m
+++ b/inst/@infsup/le.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/length.m b/inst/@infsup/length.m
index fcc4759..0b9a04d 100644
--- a/inst/@infsup/length.m
+++ b/inst/@infsup/length.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/linspace.m b/inst/@infsup/linspace.m
index 46c5c44..a75d114 100644
--- a/inst/@infsup/linspace.m
+++ b/inst/@infsup/linspace.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/log.m b/inst/@infsup/log.m
index 16c77a5..f01a4fa 100644
--- a/inst/@infsup/log.m
+++ b/inst/@infsup/log.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/log10.m b/inst/@infsup/log10.m
index e65f399..907af35 100644
--- a/inst/@infsup/log10.m
+++ b/inst/@infsup/log10.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/log1p.m b/inst/@infsup/log1p.m
index cbeaf97..6402c4f 100644
--- a/inst/@infsup/log1p.m
+++ b/inst/@infsup/log1p.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/log2.m b/inst/@infsup/log2.m
index d0e3c87..5f595fa 100644
--- a/inst/@infsup/log2.m
+++ b/inst/@infsup/log2.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/lt.m b/inst/@infsup/lt.m
index bbb0364..63ddf12 100644
--- a/inst/@infsup/lt.m
+++ b/inst/@infsup/lt.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/lu.m b/inst/@infsup/lu.m
index 5cfa551..31ba12a 100644
--- a/inst/@infsup/lu.m
+++ b/inst/@infsup/lu.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/mag.m b/inst/@infsup/mag.m
index 4886279..eb30241 100644
--- a/inst/@infsup/mag.m
+++ b/inst/@infsup/mag.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/max.m b/inst/@infsup/max.m
index e4da059..265ec03 100644
--- a/inst/@infsup/max.m
+++ b/inst/@infsup/max.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/meshgrid.m b/inst/@infsup/meshgrid.m
index 069d9f6..b9035fe 100644
--- a/inst/@infsup/meshgrid.m
+++ b/inst/@infsup/meshgrid.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/mid.m b/inst/@infsup/mid.m
index e15be5b..06d49b0 100644
--- a/inst/@infsup/mid.m
+++ b/inst/@infsup/mid.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/mig.m b/inst/@infsup/mig.m
index 6602813..996c89a 100644
--- a/inst/@infsup/mig.m
+++ b/inst/@infsup/mig.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/min.m b/inst/@infsup/min.m
index 371fa2b..506920a 100644
--- a/inst/@infsup/min.m
+++ b/inst/@infsup/min.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/mince.m b/inst/@infsup/mince.m
index 6629713..8f0bb36 100644
--- a/inst/@infsup/mince.m
+++ b/inst/@infsup/mince.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/minus.m b/inst/@infsup/minus.m
index e7b166b..1bcca81 100644
--- a/inst/@infsup/minus.m
+++ b/inst/@infsup/minus.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/mldivide.m b/inst/@infsup/mldivide.m
index 14656e1..563f5fc 100644
--- a/inst/@infsup/mldivide.m
+++ b/inst/@infsup/mldivide.m
@@ -2,7 +2,7 @@
 ##                     Universität Karlsruhe, Germany
 ## Copyright 2000-2014 Wissenschaftliches Rechnen/Softwaretechnologie,
 ##                     Universität Wuppertal, Germany
-## Copyright 2015      Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## This program is derived from FastLSS in CXSC, C++ library for eXtended
 ## Scientific Computing (V 2.5.4), which is distributed under the terms of
diff --git a/inst/@infsup/mpower.m b/inst/@infsup/mpower.m
index 101a32f..0534be0 100644
--- a/inst/@infsup/mpower.m
+++ b/inst/@infsup/mpower.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -56,6 +56,7 @@ if (not (isa (x, "infsup")))
 endif
 
 if (isscalar (x))
+    ## Short-circuit for scalars
     result = power (x, y);
     return
 endif
@@ -65,7 +66,7 @@ if (not (isreal (y)) || fix (y) ~= y)
            "mpower: only integral powers can be computed");
 endif
 
-if (size (x, 1) ~= size (x, 2))
+if (not (issquare (x.inf)))
     error ("interval:InvalidOperand", ...
            "mpower: must be square matrix");
 endif
@@ -78,7 +79,7 @@ endif
 result = infsup (eye (length (x)));
 while (y ~= 0)
     if (rem (y, 2) == 0) # y is even
-        x = mtimes (x, x);
+        [x.inf, x.sup] = mpfr_matrix_sqr_d (x.inf, x.sup);
         y /= 2;
     else # y is odd
         result = mtimes (result, x);
@@ -102,5 +103,5 @@ endwhile
 
 endfunction
 
-%!test "from the documentation string";
-%! assert (infsup (magic (3)) ^ 2 == infsup (magic (3) ^ 2));
+%!xtest "from the documentation string";
+%! assert (isequal (infsup (magic (3)) ^ 2, infsup (magic (3) ^ 2)));
diff --git a/inst/@infsup/mrdivide.m b/inst/@infsup/mrdivide.m
index 046a105..0b5f441 100644
--- a/inst/@infsup/mrdivide.m
+++ b/inst/@infsup/mrdivide.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/mtimes.m b/inst/@infsup/mtimes.m
index dfed533..ea2defc 100644
--- a/inst/@infsup/mtimes.m
+++ b/inst/@infsup/mtimes.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/mulrev.m b/inst/@infsup/mulrev.m
index ad2bf4a..22691d7 100644
--- a/inst/@infsup/mulrev.m
+++ b/inst/@infsup/mulrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/ndims.m b/inst/@infsup/ndims.m
index 92f33ab..796f6c8 100644
--- a/inst/@infsup/ndims.m
+++ b/inst/@infsup/ndims.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/ne.m b/inst/@infsup/ne.m
index d847115..353643d 100644
--- a/inst/@infsup/ne.m
+++ b/inst/@infsup/ne.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/newdec.m b/inst/@infsup/newdec.m
index 7c8c886..03f7853 100644
--- a/inst/@infsup/newdec.m
+++ b/inst/@infsup/newdec.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/nextout.m b/inst/@infsup/nextout.m
index e541d5e..ceb0500 100644
--- a/inst/@infsup/nextout.m
+++ b/inst/@infsup/nextout.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/norm.m b/inst/@infsup/norm.m
new file mode 100644
index 0000000..5ac597a
--- /dev/null
+++ b/inst/@infsup/norm.m
@@ -0,0 +1,149 @@
+## Copyright 2016 Oliver Heimlich
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @documentencoding UTF-8
+## @defmethod {@@infsup} norm (@var{A}, @var{P})
+## @defmethodx {@@infsup} norm (@var{A}, @var{P}, @var{OPT})
+## 
+## Compute the p-norm of the matrix @var{A}.
+##
+## If @var{A} is a matrix:
+## @table @asis
+## @item @var{P} = 1
+## 1-norm, the largest column sum of the absolute values of @var{A}.
+## @item @var{P} = inf
+## Infinity norm, the largest row sum of the absolute values of @var{A}.
+## @item @var{P} = "fro"
+## Frobenius norm of @var{A}, @code{sqrt (sum (diag (A' * A)))}.
+## @end table
+##
+## If @var{A} is a vector or a scalar:
+## @table @asis
+## @item @var{P} = inf
+## @code{max (abs (A))}.
+## @item @var{P} = -inf
+## @code{min (abs (A))}.
+## @item @var{P} = "fro"
+## Frobenius norm of @var{A}, @code{sqrt (sumsq (abs (A)))}.
+## @item @var{P} = 0
+## Hamming norm - the number of nonzero elements.
+## @item other @var{P}, @code{@var{P} > 1}
+## p-norm of @var{A}, @code{(sum (abs (A) .^ P)) ^ (1/P)}.
+## @item other @var{P}, @code{@var{P} < 1}
+## p-pseudonorm defined as above.
+## @end table
+##
+## If @var{OPT} is the value "rows", treat each row as a vector and compute its
+## norm.  The result returned as a column vector.  Similarly, if @var{OPT} is
+## "columns" or "cols" then compute the norms of each column and return a row
+## vector.
+##
+## Accuracy: The result is a valid enclosure.
+##
+## @example
+## @group
+## norm (infsup (magic (3)), "fro")
+##   @result{} ans ⊂ [16.881, 16.882]
+## @end group
+## @group
+## norm (infsup (magic (3)), 1, "cols")
+##   @result{} ans = 1×3 interval vector
+##
+##        [15]   [15]   [15]
+##
+## @end group
+## @end example
+## @seealso{@@infsup/abs, @@infsup/max}
+## @end defmethod
+
+## Author: Oliver Heimlich
+## Keywords: interval
+## Created: 2016-01-26
+
+function result = norm (A, p, opt)
+
+if (nargin > 3 || not (isa (A, "infsup")))
+    print_usage ();
+    return
+endif
+
+if (isa (A, "infsupdec"))
+    if (isnai (A))
+        result = A;
+        return
+    endif
+endif
+
+if (nargin < 2)
+    p = 2;
+    opt = "";
+elseif (nargin < 3)
+    opt = "";
+endif
+
+switch (opt)
+    case "rows"
+        dim = 2;
+    case {"columns", "cols"}
+        dim = 1;
+    case ""
+        if (isvector (A.inf))
+            ## Try to find non-singleton dimension
+            dim = find (size (A.inf) > 1, 1);
+            if (isempty (dim))
+                dim = 1;
+            endif
+        else
+            dim = [];
+        endif
+endswitch
+
+if (isempty (dim))
+    ## Matrix norm
+    switch (p)
+        case 1
+            result = max (sum (abs (A), 1));
+        case inf
+            result = max (sum (abs (A), 2));
+        case "fro"
+            result = sqrt (sumsq (vec (A)));
+        otherwise
+            error ("norm: Particular matrix norm is not yet supported")
+    endswitch
+else
+    ## Vector norm
+    switch (p)
+        case inf
+            result = max (abs (A), [], dim);
+        case -inf
+            result = min (abs (A), [], dim);
+        case "fro"
+            result = sqrt (sumsq (abs (A), dim));
+        case 0
+            result = infsup (sum (not (ismember (0, A)), dim), ...
+                             sum (0 != A, dim)) - ...
+                             sum (isempty (A), dim);
+        otherwise
+            warning ("off", "interval:ImplicitPromote", "local");
+            result = (sum (abs (A) .^ p, dim)) .^ (1 ./ infsup (p));
+    endswitch
+endif
+
+endfunction
+
+%!xtest
+%! A = infsup ("0 [Empty] [0, 1] 1");
+%! assert (isequal (norm (A, 0, "cols"), infsup ("0 0 [0, 1] 1")));
diff --git a/inst/@infsup/nthroot.m b/inst/@infsup/nthroot.m
index e551553..329138d 100644
--- a/inst/@infsup/nthroot.m
+++ b/inst/@infsup/nthroot.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/numel.m b/inst/@infsup/numel.m
index b1353e4..1c4f6e5 100644
--- a/inst/@infsup/numel.m
+++ b/inst/@infsup/numel.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/overlap.m b/inst/@infsup/overlap.m
index d47062c..0f94bf2 100644
--- a/inst/@infsup/overlap.m
+++ b/inst/@infsup/overlap.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/plot.m b/inst/@infsup/plot.m
index 9034bd4..eb984a8 100644
--- a/inst/@infsup/plot.m
+++ b/inst/@infsup/plot.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/plot3.m b/inst/@infsup/plot3.m
index 9d0249e..f50f18b 100644
--- a/inst/@infsup/plot3.m
+++ b/inst/@infsup/plot3.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/plus.m b/inst/@infsup/plus.m
index 46f532f..6de7386 100644
--- a/inst/@infsup/plus.m
+++ b/inst/@infsup/plus.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/polyval.m b/inst/@infsup/polyval.m
index 361e8aa..2ecaf0b 100644
--- a/inst/@infsup/polyval.m
+++ b/inst/@infsup/polyval.m
@@ -3,7 +3,7 @@
 ##                     Universität Karlsruhe, Germany
 ## Copyright 2000-2014 Wissenschaftliches Rechnen/Softwaretechnologie,
 ##                     Universität Wuppertal, Germany
-## Copyright 2015      Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is derived from RPolyEval in CXSC, C++ library for eXtended
 ## Scientific Computing (V 2.5.4), which is distributed under the terms of
diff --git a/inst/@infsup/postpad.m b/inst/@infsup/postpad.m
index d9339b0..05b3fb8 100644
--- a/inst/@infsup/postpad.m
+++ b/inst/@infsup/postpad.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/pow.m b/inst/@infsup/pow.m
index 51e014a..5e8fb50 100644
--- a/inst/@infsup/pow.m
+++ b/inst/@infsup/pow.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/pow10.m b/inst/@infsup/pow10.m
index 138d0eb..99e31c2 100644
--- a/inst/@infsup/pow10.m
+++ b/inst/@infsup/pow10.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/pow2.m b/inst/@infsup/pow2.m
index ff1d34a..bfcd58c 100644
--- a/inst/@infsup/pow2.m
+++ b/inst/@infsup/pow2.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/power.m b/inst/@infsup/power.m
index 79b8e33..b82bb14 100644
--- a/inst/@infsup/power.m
+++ b/inst/@infsup/power.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/pown.m b/inst/@infsup/pown.m
index ef4159b..cbb6ff3 100644
--- a/inst/@infsup/pown.m
+++ b/inst/@infsup/pown.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -65,6 +65,11 @@ if (any (any (idx.subs{1})))
     result = subsasgn (result, idx, sqr (subsref (x, idx)));
 endif
 
+idx.subs = {(p == -1)}; # x^-1 = 1./x
+if (any (any (idx.subs{1})))
+    result = subsasgn (result, idx, 1 ./ subsref (x, idx));
+endif
+
 idx.subs = {(rem (p, 2) == 0 & p ~= 2 & p ~= 0)};
 if (any (any (idx.subs{1}))) # p even
     x_mig = mig (subsref (x, idx));
@@ -79,7 +84,7 @@ if (any (any (idx.subs{1}))) # p even
     result = subsasgn (result, idx, pow (subsref (x, idx), subsref (p, idx)));
 endif
 
-idx.subs = {(rem (p, 2) ~= 0)};
+idx.subs = {(rem (p, 2) ~= 0 & p ~= -1)};
 if (any (any (idx.subs{1}))) # p odd
     x_idx = subsref (x, idx);
     p_idx = infsup (subsref (p, idx));
@@ -95,5 +100,22 @@ result.sup(select) = +0;
 
 endfunction
 
+function result = sqr (x)
+## Compute the square for each entry in @var{X}.
+##
+## Accuracy: The result is a tight enclosure.
+
+l = mpfr_function_d ('sqr', -inf, mig (x));
+u = mpfr_function_d ('sqr', +inf, mag (x));
+
+emptyresult = isempty (x);
+l (emptyresult) = inf;
+u (emptyresult) = -inf;
+
+result = infsup (l, u);
+
+endfunction
+
 %!test "from the documentation string";
 %! assert (pown (infsup (5, 6), 2) == infsup (25, 36));
+%!assert (pown (infsup (-2, 1), 2) == infsup (0, 4));
diff --git a/inst/@infsup/pownrev.m b/inst/@infsup/pownrev.m
index c50a941..4587083 100644
--- a/inst/@infsup/pownrev.m
+++ b/inst/@infsup/pownrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/powrev1.m b/inst/@infsup/powrev1.m
index a36253b..7a5dc49 100644
--- a/inst/@infsup/powrev1.m
+++ b/inst/@infsup/powrev1.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/powrev2.m b/inst/@infsup/powrev2.m
index 607ae4b..64dbdc9 100644
--- a/inst/@infsup/powrev2.m
+++ b/inst/@infsup/powrev2.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/precedes.m b/inst/@infsup/precedes.m
index cb69877..47ff2dc 100644
--- a/inst/@infsup/precedes.m
+++ b/inst/@infsup/precedes.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/prepad.m b/inst/@infsup/prepad.m
index 253667f..af87194 100644
--- a/inst/@infsup/prepad.m
+++ b/inst/@infsup/prepad.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/private/decimaladd.m b/inst/@infsup/private/decimaladd.m
index 082f00f..f911cee 100644
--- a/inst/@infsup/private/decimaladd.m
+++ b/inst/@infsup/private/decimaladd.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/private/decimalcompare.m b/inst/@infsup/private/decimalcompare.m
index 5241eac..2943caf 100644
--- a/inst/@infsup/private/decimalcompare.m
+++ b/inst/@infsup/private/decimalcompare.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/private/decimaldivide.m b/inst/@infsup/private/decimaldivide.m
index 64bd8f8..e7ef37a 100644
--- a/inst/@infsup/private/decimaldivide.m
+++ b/inst/@infsup/private/decimaldivide.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/private/double2decimal.m b/inst/@infsup/private/double2decimal.m
index cca3390..533fb8c 100644
--- a/inst/@infsup/private/double2decimal.m
+++ b/inst/@infsup/private/double2decimal.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/private/hex2double.m b/inst/@infsup/private/hex2double.m
index a8743d5..e3b0915 100644
--- a/inst/@infsup/private/hex2double.m
+++ b/inst/@infsup/private/hex2double.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/private/parsedouble.m b/inst/@infsup/private/parsedouble.m
index a85e3ae..193ddf9 100644
--- a/inst/@infsup/private/parsedouble.m
+++ b/inst/@infsup/private/parsedouble.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/private/str2decimal.m b/inst/@infsup/private/str2decimal.m
index 0ce8a32..65436f7 100644
--- a/inst/@infsup/private/str2decimal.m
+++ b/inst/@infsup/private/str2decimal.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/private/uncertainsplit.m b/inst/@infsup/private/uncertainsplit.m
index 43bdc8f..4894cc0 100644
--- a/inst/@infsup/private/uncertainsplit.m
+++ b/inst/@infsup/private/uncertainsplit.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/prod.m b/inst/@infsup/prod.m
index 7231571..254c892 100644
--- a/inst/@infsup/prod.m
+++ b/inst/@infsup/prod.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/psi.m b/inst/@infsup/psi.m
index b95e57d..370f79a 100644
--- a/inst/@infsup/psi.m
+++ b/inst/@infsup/psi.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/rad.m b/inst/@infsup/rad.m
index 42ae9ce..55ec052 100644
--- a/inst/@infsup/rad.m
+++ b/inst/@infsup/rad.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/rdivide.m b/inst/@infsup/rdivide.m
index 5379ac1..d50482f 100644
--- a/inst/@infsup/rdivide.m
+++ b/inst/@infsup/rdivide.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -20,6 +20,9 @@
 ## 
 ## Divide all numbers of interval @var{X} by all numbers of @var{Y}.
 ##
+## For @var{X} = 1 compute the reciprocal of @var{Y}.  Thus this function can
+## compute @code{recip} as defined by IEEE Std 1788-2015.
+##
 ## Accuracy: The result is a tight enclosure.
 ##
 ## @example
@@ -30,7 +33,7 @@
 ##   @result{} ans = [1, 3]
 ## @end group
 ## @end example
-## @seealso{@@infsup/recip, @@infsup/times}
+## @seealso{@@infsup/times}
 ## @end defop
 
 ## Author: Oliver Heimlich
@@ -54,6 +57,17 @@ elseif (isa (y, "infsupdec"))
     return
 endif
 
+## Short-circuit evaluation for 1 ./ x
+if (all (all (x.inf == 1 & x.sup == 1)))
+    result = recip (y);
+    ## Resize, if scalar × matrix
+    if (isscalar (x.inf) ~= isscalar (y.inf))
+        result.inf = ones (size (x.inf)) .* result.inf;
+        result.sup = ones (size (x.inf)) .* result.sup;
+    endif
+    return
+endif
+
 ## Resize, if scalar × matrix
 if (isscalar (x.inf) ~= isscalar (y.inf))
     x.inf = ones (size (y.inf)) .* x.inf;
@@ -113,5 +127,43 @@ result = infsup (l, u);
 
 endfunction
 
+function result = recip (x)
+## Compute the reciprocal of @var{X}.
+##
+## The result is equivalent to @code{1 ./ @var{X}}, but is computed more
+## efficiently.
+##
+## Accuracy: The result is a tight enclosure.
+
+l = inf (size (x.inf));
+u = -l;
+
+## Fix signs to make use of limit values for 1 ./ x.
+x.inf(x.inf == 0) = +0;
+x.sup(x.sup == 0) = -0;
+
+select = (x.inf >= 0 | x.sup <= 0) & ...
+         # undefined for x = [0, 0]
+         not (x.inf == 0 & x.sup == 0) & ...
+         # x is not empty
+         x.inf < inf;
+if (any (any (select)))
+    ## recip is monotonically decreasing
+    l(select) = mpfr_function_d ('rdivide', -inf, 1, x.sup(select));
+    u(select) = mpfr_function_d ('rdivide', +inf, 1, x.inf(select));
+endif
+
+## singularity at x = 0
+select = x.inf < 0 & x.sup > 0;
+if (any (any (select)))
+    l(select) = -inf;
+    u(select) = +inf;
+endif
+
+result = infsup (l, u);
+
+endfunction
+
 %!test "from the documentation string";
 %! assert (infsup (2, 3) ./ infsup (1, 2) == infsup (1, 3));
+%!assert (1 ./ infsup (1, 4) == infsup (0.25, 1));
diff --git a/inst/@infsup/realsqrt.m b/inst/@infsup/realsqrt.m
index 56cb58a..650dd02 100644
--- a/inst/@infsup/realsqrt.m
+++ b/inst/@infsup/realsqrt.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/recip.m b/inst/@infsup/recip.m
index 46019c1..5da34d9 100644
--- a/inst/@infsup/recip.m
+++ b/inst/@infsup/recip.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -19,14 +19,14 @@
 ## 
 ## Compute the reciprocal of @var{X}.
 ##
-## The result is equivalent to @code{1 ./ @var{X}}, but is computed more
-## efficiently.
+## THIS FUNCTION IS DEPRECATED AND WILL BE REMOVED IN A FUTURE RELEASE OF THIS
+## SOFTWARE.  PLEASE USE @code{1 ./ @var{X}} INSTEAD.
 ##
 ## Accuracy: The result is a tight enclosure.
 ##
 ## @example
 ## @group
-## recip (infsup (1, 4))
+## recip (infsup (1, 4)) @c doctest: +SKIP
 ##   @result{} ans = [0.25, 1]
 ## @end group
 ## @end example
@@ -44,34 +44,9 @@ if (nargin ~= 1)
     return
 endif
 
-l = inf (size (x.inf));
-u = -l;
+warning ("interval:deprecated", ...
+         "recip: This function is deprecated, please use 1 ./ x instead")
 
-## Fix signs to make use of limit values for 1 ./ x.
-x.inf(x.inf == 0) = +0;
-x.sup(x.sup == 0) = -0;
-
-select = (x.inf >= 0 | x.sup <= 0) & ...
-         # undefined for x = [0, 0]
-         not (x.inf == 0 & x.sup == 0) & ...
-         # x is not empty
-         x.inf < inf;
-if (any (any (select)))
-    ## recip is monotonically decreasing
-    l(select) = mpfr_function_d ('rdivide', -inf, 1, x.sup(select));
-    u(select) = mpfr_function_d ('rdivide', +inf, 1, x.inf(select));
-endif
-
-## singularity at x = 0
-select = x.inf < 0 & x.sup > 0;
-if (any (any (select)))
-    l(select) = -inf;
-    u(select) = +inf;
-endif
-
-result = infsup (l, u);
+result = rdivide (1, x);
 
 endfunction
-
-%!test "from the documentation string";
-%!  assert (recip (infsup (1, 4)) == infsup (0.25, 1));
diff --git a/inst/@infsup/reshape.m b/inst/@infsup/reshape.m
index 41a6920..39e8ff6 100644
--- a/inst/@infsup/reshape.m
+++ b/inst/@infsup/reshape.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/resize.m b/inst/@infsup/resize.m
index 42475e4..0300022 100644
--- a/inst/@infsup/resize.m
+++ b/inst/@infsup/resize.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/round.m b/inst/@infsup/round.m
index 910b548..1a22e4c 100644
--- a/inst/@infsup/round.m
+++ b/inst/@infsup/round.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/roundb.m b/inst/@infsup/roundb.m
index 3771d60..b2c9133 100644
--- a/inst/@infsup/roundb.m
+++ b/inst/@infsup/roundb.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/rows.m b/inst/@infsup/rows.m
index 9e32517..cb49cb3 100644
--- a/inst/@infsup/rows.m
+++ b/inst/@infsup/rows.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/rsqrt.m b/inst/@infsup/rsqrt.m
index 172b358..b9cabce 100644
--- a/inst/@infsup/rsqrt.m
+++ b/inst/@infsup/rsqrt.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sdist.m b/inst/@infsup/sdist.m
index acfe7e6..c0ffe0e 100644
--- a/inst/@infsup/sdist.m
+++ b/inst/@infsup/sdist.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sec.m b/inst/@infsup/sec.m
index 82e863b..55a4f96 100644
--- a/inst/@infsup/sec.m
+++ b/inst/@infsup/sec.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sech.m b/inst/@infsup/sech.m
index a28ad0c..0e5002e 100644
--- a/inst/@infsup/sech.m
+++ b/inst/@infsup/sech.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/setdiff.m b/inst/@infsup/setdiff.m
index 5f7c187..2204336 100644
--- a/inst/@infsup/setdiff.m
+++ b/inst/@infsup/setdiff.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/setxor.m b/inst/@infsup/setxor.m
index 73f6dfb..c93bcf0 100644
--- a/inst/@infsup/setxor.m
+++ b/inst/@infsup/setxor.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sign.m b/inst/@infsup/sign.m
index 9be8aad..3c37e93 100644
--- a/inst/@infsup/sign.m
+++ b/inst/@infsup/sign.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sin.m b/inst/@infsup/sin.m
index bc29b0a..4669831 100644
--- a/inst/@infsup/sin.m
+++ b/inst/@infsup/sin.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sinh.m b/inst/@infsup/sinh.m
index 950fa7d..0ba8258 100644
--- a/inst/@infsup/sinh.m
+++ b/inst/@infsup/sinh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sinrev.m b/inst/@infsup/sinrev.m
index 14ef7b9..98b5c68 100644
--- a/inst/@infsup/sinrev.m
+++ b/inst/@infsup/sinrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/size.m b/inst/@infsup/size.m
index f6aef9c..af90772 100644
--- a/inst/@infsup/size.m
+++ b/inst/@infsup/size.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/smig.m b/inst/@infsup/smig.m
index c1246c9..f228ab2 100644
--- a/inst/@infsup/smig.m
+++ b/inst/@infsup/smig.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sqr.m b/inst/@infsup/sqr.m
index 2b3b8dc..33388e6 100644
--- a/inst/@infsup/sqr.m
+++ b/inst/@infsup/sqr.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -17,13 +17,16 @@
 ## @documentencoding UTF-8
 ## @defmethod {@@infsup} sqr (@var{X})
 ## 
-## Compute the square.
+## Compute the square for each entry in @var{X}.
+##
+## THIS FUNCTION IS DEPRECATED AND WILL BE REMOVED IN A FUTURE RELEASE OF THIS
+## SOFTWARE.  PLEASE USE @code{@var{X} .^ 2} INSTEAD.
 ##
 ## Accuracy: The result is a tight enclosure.
 ##
 ## @example
 ## @group
-## sqr (infsup (-2, 1))
+## sqr (infsup (-2, 1)) @c doctest: +SKIP
 ##   @result{} ans = [0, 4]
 ## @end group
 ## @end example
@@ -41,16 +44,9 @@ if (nargin ~= 1)
     return
 endif
 
-l = mpfr_function_d ('sqr', -inf, mig (x));
-u = mpfr_function_d ('sqr', +inf, mag (x));
-
-emptyresult = isempty (x);
-l (emptyresult) = inf;
-u (emptyresult) = -inf;
+warning ("interval:deprecated", ...
+         "sqr: This function is deprecated, please use x .^ 2 instead")
 
-result = infsup (l, u);
+result = power (x, 2);
 
 endfunction
-
-%!test "from the documentation string";
-%! assert (sqr (infsup (-2, 1)) == infsup (0, 4));
diff --git a/inst/@infsup/sqrrev.m b/inst/@infsup/sqrrev.m
index 1a83925..2812414 100644
--- a/inst/@infsup/sqrrev.m
+++ b/inst/@infsup/sqrrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sqrt.m b/inst/@infsup/sqrt.m
index 240a1ff..aef2431 100644
--- a/inst/@infsup/sqrt.m
+++ b/inst/@infsup/sqrt.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/strictprecedes.m b/inst/@infsup/strictprecedes.m
index cd74b02..23f837a 100644
--- a/inst/@infsup/strictprecedes.m
+++ b/inst/@infsup/strictprecedes.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/subsasgn.m b/inst/@infsup/subsasgn.m
index 32a4fcb..8bf6e18 100644
--- a/inst/@infsup/subsasgn.m
+++ b/inst/@infsup/subsasgn.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/subset.m b/inst/@infsup/subset.m
index cbe9e84..4ad85c7 100644
--- a/inst/@infsup/subset.m
+++ b/inst/@infsup/subset.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/subsref.m b/inst/@infsup/subsref.m
index 3c26090..eded67b 100644
--- a/inst/@infsup/subsref.m
+++ b/inst/@infsup/subsref.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sum.m b/inst/@infsup/sum.m
index 9450357..2eedbb2 100644
--- a/inst/@infsup/sum.m
+++ b/inst/@infsup/sum.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sumabs.m b/inst/@infsup/sumabs.m
index 741e020..c49bf48 100644
--- a/inst/@infsup/sumabs.m
+++ b/inst/@infsup/sumabs.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/sumsq.m b/inst/@infsup/sumsq.m
index 1df12e4..e12028e 100644
--- a/inst/@infsup/sumsq.m
+++ b/inst/@infsup/sumsq.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -29,7 +29,7 @@
 ##   @result{} ans ⊂ [2, 2.0001]
 ## @end group
 ## @end example
-## @seealso{@@infsup/plus, @@infsup/sum, @@infsup/sumabs, @@infsup/sqr}
+## @seealso{@@infsup/plus, @@infsup/sum, @@infsup/sumabs}
 ## @end defmethod
 
 ## Author: Oliver Heimlich
diff --git a/inst/@infsup/sup.m b/inst/@infsup/sup.m
index d3a80dc..f97a0db 100644
--- a/inst/@infsup/sup.m
+++ b/inst/@infsup/sup.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/tan.m b/inst/@infsup/tan.m
index 454b9e6..c13d0cd 100644
--- a/inst/@infsup/tan.m
+++ b/inst/@infsup/tan.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/tanh.m b/inst/@infsup/tanh.m
index 602e2b5..f36dbe9 100644
--- a/inst/@infsup/tanh.m
+++ b/inst/@infsup/tanh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/tanrev.m b/inst/@infsup/tanrev.m
index 901c0c1..210c950 100644
--- a/inst/@infsup/tanrev.m
+++ b/inst/@infsup/tanrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/times.m b/inst/@infsup/times.m
index 7b4a066..90839b0 100644
--- a/inst/@infsup/times.m
+++ b/inst/@infsup/times.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/transpose.m b/inst/@infsup/transpose.m
index 34c63f7..d3b7c27 100644
--- a/inst/@infsup/transpose.m
+++ b/inst/@infsup/transpose.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/uminus.m b/inst/@infsup/uminus.m
index d9deb06..3fcc75d 100644
--- a/inst/@infsup/uminus.m
+++ b/inst/@infsup/uminus.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/union.m b/inst/@infsup/union.m
index 98477ab..cc200e4 100644
--- a/inst/@infsup/union.m
+++ b/inst/@infsup/union.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/uplus.m b/inst/@infsup/uplus.m
index aad31f5..6410988 100644
--- a/inst/@infsup/uplus.m
+++ b/inst/@infsup/uplus.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/vertcat.m b/inst/@infsup/vertcat.m
index 693ce65..bd6bd3e 100644
--- a/inst/@infsup/vertcat.m
+++ b/inst/@infsup/vertcat.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/wid.m b/inst/@infsup/wid.m
index c787f34..fb25377 100644
--- a/inst/@infsup/wid.m
+++ b/inst/@infsup/wid.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/abs.m b/inst/@infsupdec/abs.m
index f6167e3..f65ab88 100644
--- a/inst/@infsupdec/abs.m
+++ b/inst/@infsupdec/abs.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/absrev.m b/inst/@infsupdec/absrev.m
index 00b03c6..0079e5f 100644
--- a/inst/@infsupdec/absrev.m
+++ b/inst/@infsupdec/absrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/acos.m b/inst/@infsupdec/acos.m
index 40392c9..fc15492 100644
--- a/inst/@infsupdec/acos.m
+++ b/inst/@infsupdec/acos.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/acosh.m b/inst/@infsupdec/acosh.m
index 1d17577..028b68f 100644
--- a/inst/@infsupdec/acosh.m
+++ b/inst/@infsupdec/acosh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/asin.m b/inst/@infsupdec/asin.m
index dfa0b2e..b211576 100644
--- a/inst/@infsupdec/asin.m
+++ b/inst/@infsupdec/asin.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/asinh.m b/inst/@infsupdec/asinh.m
index f37ec1b..419d1bc 100644
--- a/inst/@infsupdec/asinh.m
+++ b/inst/@infsupdec/asinh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/atan.m b/inst/@infsupdec/atan.m
index 7e0128b..53dc645 100644
--- a/inst/@infsupdec/atan.m
+++ b/inst/@infsupdec/atan.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/atan2.m b/inst/@infsupdec/atan2.m
index 229a4e9..a2d8dce 100644
--- a/inst/@infsupdec/atan2.m
+++ b/inst/@infsupdec/atan2.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/atan2rev1.m b/inst/@infsupdec/atan2rev1.m
index b532334..957d825 100644
--- a/inst/@infsupdec/atan2rev1.m
+++ b/inst/@infsupdec/atan2rev1.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/atan2rev2.m b/inst/@infsupdec/atan2rev2.m
index b7cdcbe..8f7cf69 100644
--- a/inst/@infsupdec/atan2rev2.m
+++ b/inst/@infsupdec/atan2rev2.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/atanh.m b/inst/@infsupdec/atanh.m
index 130c9dc..b2fd7f2 100644
--- a/inst/@infsupdec/atanh.m
+++ b/inst/@infsupdec/atanh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/bisect.m b/inst/@infsupdec/bisect.m
index 283cf53..9a54202 100644
--- a/inst/@infsupdec/bisect.m
+++ b/inst/@infsupdec/bisect.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/bitunpack.m b/inst/@infsupdec/bitunpack.m
index cb4bd89..24f7ac8 100644
--- a/inst/@infsupdec/bitunpack.m
+++ b/inst/@infsupdec/bitunpack.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -22,6 +22,9 @@
 ##
 ## The result is a raw bit pattern of length 136 that derive from two binary64
 ## numbers plus 8 bit for the decoration.  Bits are in increasing order.
+## Byte order depends on the system's endianness.  First 8 bytes come from the
+## lower interval boundary, next 8 bytes come from the upper interval boundary,
+## last byte comes from the decoration.
 ##
 ## The result is a row vector if @var{X} is a row vector; otherwise, it is a
 ## column vector.
@@ -59,16 +62,21 @@ if (not (isrow (bare)))
 endif
 
 ## Merge alternating 128 bit blocks from bare and 8 bit blocks from d together
-## into result.  Because of increasing bit order, d comes first.
+## into result.
 target_bare = reshape (1 : length (result), 8, length (result) / 8);
-target_d = target_bare (:, 1 : 17 : size (target_bare, 2));
-target_bare (:, 1 : 17 : size (target_bare, 2)) = [];
+target_d = target_bare (:, 17 : 17 : size (target_bare, 2));
+target_bare (:, 17 : 17 : size (target_bare, 2)) = [];
 result (target_bare) = bare;
 result (target_d) = d;
 
 endfunction
 
 %!test;
+%!  littleendian = bitunpack (uint16 (1))(1);
 %!  b = zeros (1, 136);
-%!  b ([5, 61, 71, 124, 135]) = 1;
+%!  if (littleendian)
+%!    b([52, 63, 117, 127, 133]) = 1;
+%!  else
+%!    b([7, 12, 71, 77, 133]) = 1;
+%!  endif
 %!  assert (bitunpack (infsupdec (3, 4)), logical (b));
diff --git a/inst/@infsupdec/cancelminus.m b/inst/@infsupdec/cancelminus.m
index fdfc9b0..3386f9f 100644
--- a/inst/@infsupdec/cancelminus.m
+++ b/inst/@infsupdec/cancelminus.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/cbrt.m b/inst/@infsupdec/cbrt.m
index fff57c6..c7fac31 100644
--- a/inst/@infsupdec/cbrt.m
+++ b/inst/@infsupdec/cbrt.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/ceil.m b/inst/@infsupdec/ceil.m
index 14f9116..89c1ee1 100644
--- a/inst/@infsupdec/ceil.m
+++ b/inst/@infsupdec/ceil.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/cos.m b/inst/@infsupdec/cos.m
index b7694f2..280b650 100644
--- a/inst/@infsupdec/cos.m
+++ b/inst/@infsupdec/cos.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/cosh.m b/inst/@infsupdec/cosh.m
index 2169a09..2b00293 100644
--- a/inst/@infsupdec/cosh.m
+++ b/inst/@infsupdec/cosh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/coshrev.m b/inst/@infsupdec/coshrev.m
index 4b6584b..1f089ce 100644
--- a/inst/@infsupdec/coshrev.m
+++ b/inst/@infsupdec/coshrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/cosrev.m b/inst/@infsupdec/cosrev.m
index 1cd44fd..df5a2af 100644
--- a/inst/@infsupdec/cosrev.m
+++ b/inst/@infsupdec/cosrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/cot.m b/inst/@infsupdec/cot.m
index 7df69d4..a1d887b 100644
--- a/inst/@infsupdec/cot.m
+++ b/inst/@infsupdec/cot.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/coth.m b/inst/@infsupdec/coth.m
index f4f1747..d6b0673 100644
--- a/inst/@infsupdec/coth.m
+++ b/inst/@infsupdec/coth.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/csc.m b/inst/@infsupdec/csc.m
index e6b9330..d3b8814 100644
--- a/inst/@infsupdec/csc.m
+++ b/inst/@infsupdec/csc.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/csch.m b/inst/@infsupdec/csch.m
index aee2091..75534e1 100644
--- a/inst/@infsupdec/csch.m
+++ b/inst/@infsupdec/csch.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/decorationpart.m b/inst/@infsupdec/decorationpart.m
index 602e84e..30a61d0 100644
--- a/inst/@infsupdec/decorationpart.m
+++ b/inst/@infsupdec/decorationpart.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/det.m b/inst/@infsupdec/det.m
index 4f965c0..500749d 100644
--- a/inst/@infsupdec/det.m
+++ b/inst/@infsupdec/det.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/diag.m b/inst/@infsupdec/diag.m
index 611c4c4..78bc6b0 100644
--- a/inst/@infsupdec/diag.m
+++ b/inst/@infsupdec/diag.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/dilog.m b/inst/@infsupdec/dilog.m
index 9c4fa3a..54995e9 100644
--- a/inst/@infsupdec/dilog.m
+++ b/inst/@infsupdec/dilog.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/disjoint.m b/inst/@infsupdec/disjoint.m
index 5f38f0e..b0a4128 100644
--- a/inst/@infsupdec/disjoint.m
+++ b/inst/@infsupdec/disjoint.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/dot.m b/inst/@infsupdec/dot.m
index 364445c..a2566de 100644
--- a/inst/@infsupdec/dot.m
+++ b/inst/@infsupdec/dot.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/ei.m b/inst/@infsupdec/ei.m
index 5939aa0..bc90762 100644
--- a/inst/@infsupdec/ei.m
+++ b/inst/@infsupdec/ei.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/eq.m b/inst/@infsupdec/eq.m
index 6a10f01..53a1142 100644
--- a/inst/@infsupdec/eq.m
+++ b/inst/@infsupdec/eq.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/erf.m b/inst/@infsupdec/erf.m
index cc66cfb..f465789 100644
--- a/inst/@infsupdec/erf.m
+++ b/inst/@infsupdec/erf.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/erfc.m b/inst/@infsupdec/erfc.m
index 6816983..94cf1ec 100644
--- a/inst/@infsupdec/erfc.m
+++ b/inst/@infsupdec/erfc.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/exp.m b/inst/@infsupdec/exp.m
index 9e45317..98262ea 100644
--- a/inst/@infsupdec/exp.m
+++ b/inst/@infsupdec/exp.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/expm1.m b/inst/@infsupdec/expm1.m
index e8bd72f..7e37da7 100644
--- a/inst/@infsupdec/expm1.m
+++ b/inst/@infsupdec/expm1.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/factorial.m b/inst/@infsupdec/factorial.m
new file mode 100644
index 0000000..dd5d6d7
--- /dev/null
+++ b/inst/@infsupdec/factorial.m
@@ -0,0 +1,78 @@
+## Copyright 2016 Oliver Heimlich
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @documentencoding UTF-8
+## @defmethod {@@infsup} factorial (@var{N})
+## 
+## Compute the factorial of @var{N} where @var{N} is a real non-negative
+## integer.
+##
+## If @var{N} is a scalar, this is equivalent to
+## @display
+## factorial (@var{N}) = 1 * 2 * @dots{} * @var{N}.
+## @end display
+## For vector or matrix arguments, return the factorial of each element in the
+## array.
+##
+## For non-integers see the generalized factorial function @command{gamma}.
+## Not that the factorial function grows large quite quickly, and the result
+## cannot be represented exactly in binary64 for @var{N} ≥ 23 and will overflow
+## for @var{N} ≥ 171.
+##
+## Accuracy: The result is a tight enclosure.
+##
+## @example
+## @group
+## factorial (infsupdec (6))
+##   @result{} ans = [720]_dac
+## @end group
+## @end example
+## @seealso{@@infsupdec/prod, @@infsupdec/gamma, @@infsupdec/gammaln}
+## @end defmethod
+
+## Author: Oliver Heimlich
+## Keywords: interval
+## Created: 2016-01-31
+
+function result = factorial (x)
+
+if (nargin ~= 1)
+    print_usage ();
+    return
+endif
+
+if (isnai (x))
+    result = x;
+    return
+endif
+
+## The function is not continuous, since it is defined for non-negative
+## integrals only.  Thus the best possible decoration can be “dac”.
+result = infsupdec (factorial (intervalpart (x)), "dac");
+result.dec = min (result.dec, x.dec);
+
+## The function is defined for non-negative integrals only
+defined = issingleton (x) & fix (sup (x)) == sup (x);
+result.dec (not (defined)) = _trv ();
+
+endfunction
+
+%!test "from the documentation string";
+%! assert (factorial (infsupdec (6)) == infsupdec (720, "dac"));
+%!assert (factorial (infsupdec (0)) == infsupdec (1, "dac"));
+%!assert (factorial (infsupdec ("[0, 1.99]")) == infsupdec (1, "trv"));
+%!assert (factorial (infsupdec ("[0, 2]")) == "[1, 2]_trv");
+%!assert (factorial (infsupdec ("[1.4, 1.6]")) == "[Empty]_trv");
diff --git a/inst/@infsupdec/fix.m b/inst/@infsupdec/fix.m
index 8cd595e..10c8a53 100644
--- a/inst/@infsupdec/fix.m
+++ b/inst/@infsupdec/fix.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/floor.m b/inst/@infsupdec/floor.m
index bdbeae9..c36a961 100644
--- a/inst/@infsupdec/floor.m
+++ b/inst/@infsupdec/floor.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/fma.m b/inst/@infsupdec/fma.m
index 1fcc373..1f7b2de 100644
--- a/inst/@infsupdec/fma.m
+++ b/inst/@infsupdec/fma.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/gamma.m b/inst/@infsupdec/gamma.m
index 6cea1bf..add96e3 100644
--- a/inst/@infsupdec/gamma.m
+++ b/inst/@infsupdec/gamma.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -45,7 +45,7 @@
 ##   @result{} ans ⊂ [0.88622, 0.88623]_com
 ## @end group
 ## @end example
-## @seealso{@@infsupdec/psi, @@infsupdec/gammaln}
+## @seealso{@@infsupdec/psi, @@infsupdec/gammaln, @@infsupdec/factorial}
 ## @end defmethod
 
 ## Author: Oliver Heimlich
diff --git a/inst/@infsupdec/gammaln.m b/inst/@infsupdec/gammaln.m
index 6f4bf77..f65c652 100644
--- a/inst/@infsupdec/gammaln.m
+++ b/inst/@infsupdec/gammaln.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
 ##   @result{} ans ⊂ [-0.12079, -0.12078]_com
 ## @end group
 ## @end example
-## @seealso{@@infsupdec/psi, @@infsupdec/gamma}
+## @seealso{@@infsupdec/psi, @@infsupdec/gamma, @@infsupdec/factorial}
 ## @end defmethod
 
 ## Author: Oliver Heimlich
diff --git a/inst/@infsupdec/gauss.m b/inst/@infsupdec/gauss.m
index 77a3c7d..d5babe5 100644
--- a/inst/@infsupdec/gauss.m
+++ b/inst/@infsupdec/gauss.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/horzcat.m b/inst/@infsupdec/horzcat.m
index e2c04f8..f7adc57 100644
--- a/inst/@infsupdec/horzcat.m
+++ b/inst/@infsupdec/horzcat.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/hypot.m b/inst/@infsupdec/hypot.m
index 41bcbc2..a143d2a 100644
--- a/inst/@infsupdec/hypot.m
+++ b/inst/@infsupdec/hypot.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/infsupdec.m b/inst/@infsupdec/infsupdec.m
index a8e660b..db15854 100644
--- a/inst/@infsupdec/infsupdec.m
+++ b/inst/@infsupdec/infsupdec.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/interior.m b/inst/@infsupdec/interior.m
index 8c9470f..e55074f 100644
--- a/inst/@infsupdec/interior.m
+++ b/inst/@infsupdec/interior.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/intersect.m b/inst/@infsupdec/intersect.m
index 6fe84bc..b8a931d 100644
--- a/inst/@infsupdec/intersect.m
+++ b/inst/@infsupdec/intersect.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/intervalpart.m b/inst/@infsupdec/intervalpart.m
index 0a407a3..c058a93 100644
--- a/inst/@infsupdec/intervalpart.m
+++ b/inst/@infsupdec/intervalpart.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/intervaltotext.m b/inst/@infsupdec/intervaltotext.m
index afd9fbe..edc9407 100644
--- a/inst/@infsupdec/intervaltotext.m
+++ b/inst/@infsupdec/intervaltotext.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/isempty.m b/inst/@infsupdec/isempty.m
index bf8df7b..e9961b4 100644
--- a/inst/@infsupdec/isempty.m
+++ b/inst/@infsupdec/isempty.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/isnai.m b/inst/@infsupdec/isnai.m
index 270fe87..84a701f 100644
--- a/inst/@infsupdec/isnai.m
+++ b/inst/@infsupdec/isnai.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/le.m b/inst/@infsupdec/le.m
index 8d98dda..2cab772 100644
--- a/inst/@infsupdec/le.m
+++ b/inst/@infsupdec/le.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/linspace.m b/inst/@infsupdec/linspace.m
index abef839..3fd8bb0 100644
--- a/inst/@infsupdec/linspace.m
+++ b/inst/@infsupdec/linspace.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/log.m b/inst/@infsupdec/log.m
index 3b05dfe..a6388de 100644
--- a/inst/@infsupdec/log.m
+++ b/inst/@infsupdec/log.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/log10.m b/inst/@infsupdec/log10.m
index 378926e..4edb654 100644
--- a/inst/@infsupdec/log10.m
+++ b/inst/@infsupdec/log10.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/log1p.m b/inst/@infsupdec/log1p.m
index 376a0fa..b3a3eab 100644
--- a/inst/@infsupdec/log1p.m
+++ b/inst/@infsupdec/log1p.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/log2.m b/inst/@infsupdec/log2.m
index dbec75d..7055aad 100644
--- a/inst/@infsupdec/log2.m
+++ b/inst/@infsupdec/log2.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/lt.m b/inst/@infsupdec/lt.m
index 726859d..9f3d724 100644
--- a/inst/@infsupdec/lt.m
+++ b/inst/@infsupdec/lt.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/lu.m b/inst/@infsupdec/lu.m
index b13ef06..c26ac4b 100644
--- a/inst/@infsupdec/lu.m
+++ b/inst/@infsupdec/lu.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/max.m b/inst/@infsupdec/max.m
index 7d4bc62..1c29c50 100644
--- a/inst/@infsupdec/max.m
+++ b/inst/@infsupdec/max.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/meshgrid.m b/inst/@infsupdec/meshgrid.m
index 850dca7..0368e60 100644
--- a/inst/@infsupdec/meshgrid.m
+++ b/inst/@infsupdec/meshgrid.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/min.m b/inst/@infsupdec/min.m
index 00d8d0f..37fd123 100644
--- a/inst/@infsupdec/min.m
+++ b/inst/@infsupdec/min.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/mince.m b/inst/@infsupdec/mince.m
index 270bde0..a40f3f7 100644
--- a/inst/@infsupdec/mince.m
+++ b/inst/@infsupdec/mince.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/minus.m b/inst/@infsupdec/minus.m
index 9911a50..6c9d75d 100644
--- a/inst/@infsupdec/minus.m
+++ b/inst/@infsupdec/minus.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/mldivide.m b/inst/@infsupdec/mldivide.m
index da4835b..6f51657 100644
--- a/inst/@infsupdec/mldivide.m
+++ b/inst/@infsupdec/mldivide.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsup/mpower.m b/inst/@infsupdec/mpower.m
similarity index 51%
copy from inst/@infsup/mpower.m
copy to inst/@infsupdec/mpower.m
index 101a32f..763884c 100644
--- a/inst/@infsup/mpower.m
+++ b/inst/@infsupdec/mpower.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -31,31 +31,32 @@
 ##
 ## @example
 ## @group
-## infsup (magic (3)) ^ 2
+## infsupdec (magic (3)) ^ 2
 ##   @result{} ans = 3×3 interval matrix
-##      [91]   [67]   [67]
-##      [67]   [91]   [67]
-##      [67]   [67]   [91]
+##      [91]_com   [67]_com   [67]_com
+##      [67]_com   [91]_com   [67]_com
+##      [67]_com   [67]_com   [91]_com
 ## @end group
 ## @end example
-## @seealso{@@infsup/pow, @@infsup/pown, @@infsup/pow2, @@infsup/pow10, @@infsup/exp}
+## @seealso{@@infsupdec/pow, @@infsupdec/pown, @@infsupdec/pow2, @@infsupdec/pow10, @@infsupdec/exp}
 ## @end defop
 
 ## Author: Oliver Heimlich
 ## Keywords: interval
-## Created: 2014-10-31
+## Created: 2016-01-24
 
 function result = mpower (x, y)
 
-if (nargin ~= 2)
+if (nargin != 2)
     print_usage ();
     return
 endif
-if (not (isa (x, "infsup")))
-    x = infsup (x);
+if (not (isa (x, "infsupdec")))
+    x = infsupdec (x);
 endif
 
-if (isscalar (x))
+if (isscalar (x.dec))
+    ## Short-circuit for scalars
     result = power (x, y);
     return
 endif
@@ -65,42 +66,21 @@ if (not (isreal (y)) || fix (y) ~= y)
            "mpower: only integral powers can be computed");
 endif
 
-if (size (x, 1) ~= size (x, 2))
-    error ("interval:InvalidOperand", ...
-           "mpower: must be square matrix");
-endif
+result = newdec (mpower (intervalpart (x), y));
 
-## Implements log-time algorithm A.1 in
-## Heimlich, Oliver. 2011. “The General Interval Power Function.”
-## Diplomarbeit, Institute for Computer Science, University of Würzburg.
-## http://exp.ln0.de/heimlich-power-2011.htm.
-
-result = infsup (eye (length (x)));
-while (y ~= 0)
-    if (rem (y, 2) == 0) # y is even
-        x = mtimes (x, x);
-        y /= 2;
-    else # y is odd
-        result = mtimes (result, x);
-        if (all (all (isempty (result))) || all (all (isentire (result))))
-            ## We can stop the computation here, this is a fixed point
-            break
-        endif
-        if (y > 0)
-            y --;
-        else
-            y ++;
-            if (y == 0)
-                ## Inversion after computation of a negative power.
-                ## Inversion should be the last step, because it is not
-                ## tightest and would otherwise increase rounding errors.
-                result = inv (result);
-            endif
-        endif
-    endif
-endwhile
+if (y < 0)
+    result.dec(:) = _trv ();
+elseif (y < 2)
+    result.dec = x.dec;
+elseif (y == 2)
+    warning ('off', 'Octave:broadcast', 'local');
+    result.dec = min (result.dec, min (min (x.dec, [], 1), ...
+                                       min (x.dec, [], 2)));
+elseif (y > 2)
+    result.dec = min (result.dec, min (min (x.dec)));
+endif
 
 endfunction
 
-%!test "from the documentation string";
-%! assert (infsup (magic (3)) ^ 2 == infsup (magic (3) ^ 2));
+%!xtest "from the documentation string";
+%! assert (isequal (infsupdec (magic (3)) ^ 2, infsupdec (magic (3) ^ 2)));
diff --git a/inst/@infsupdec/mtimes.m b/inst/@infsupdec/mtimes.m
index fbc0eb8..1b74f6f 100644
--- a/inst/@infsupdec/mtimes.m
+++ b/inst/@infsupdec/mtimes.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/mulrev.m b/inst/@infsupdec/mulrev.m
index 219c5a6..aaca552 100644
--- a/inst/@infsupdec/mulrev.m
+++ b/inst/@infsupdec/mulrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/nextout.m b/inst/@infsupdec/nextout.m
index 32dd5be..911e1f3 100644
--- a/inst/@infsupdec/nextout.m
+++ b/inst/@infsupdec/nextout.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/nthroot.m b/inst/@infsupdec/nthroot.m
index c89a16a..8827331 100644
--- a/inst/@infsupdec/nthroot.m
+++ b/inst/@infsupdec/nthroot.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/overlap.m b/inst/@infsupdec/overlap.m
index cdcec5a..39119b3 100644
--- a/inst/@infsupdec/overlap.m
+++ b/inst/@infsupdec/overlap.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/plus.m b/inst/@infsupdec/plus.m
index a954ab5..a4c1e50 100644
--- a/inst/@infsupdec/plus.m
+++ b/inst/@infsupdec/plus.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/polyval.m b/inst/@infsupdec/polyval.m
index f3dab3c..54bc01f 100644
--- a/inst/@infsupdec/polyval.m
+++ b/inst/@infsupdec/polyval.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/postpad.m b/inst/@infsupdec/postpad.m
index 53a725c..d55cd3b 100644
--- a/inst/@infsupdec/postpad.m
+++ b/inst/@infsupdec/postpad.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/pow.m b/inst/@infsupdec/pow.m
index 4f55b83..c18d497 100644
--- a/inst/@infsupdec/pow.m
+++ b/inst/@infsupdec/pow.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/pow10.m b/inst/@infsupdec/pow10.m
index 3bc2b45..366694e 100644
--- a/inst/@infsupdec/pow10.m
+++ b/inst/@infsupdec/pow10.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/pow2.m b/inst/@infsupdec/pow2.m
index e4741ac..529766a 100644
--- a/inst/@infsupdec/pow2.m
+++ b/inst/@infsupdec/pow2.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/power.m b/inst/@infsupdec/power.m
index fc51e62..cee0d31 100644
--- a/inst/@infsupdec/power.m
+++ b/inst/@infsupdec/power.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/pown.m b/inst/@infsupdec/pown.m
index c0e9c32..854f66c 100644
--- a/inst/@infsupdec/pown.m
+++ b/inst/@infsupdec/pown.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -60,3 +60,4 @@ endfunction
 
 %!test "from the documentation string";
 %! assert (isequal (pown (infsupdec (5, 6), 2), infsupdec (25, 36)));
+%!assert (pown (infsupdec (-2, 1), 2) == infsupdec (0, 4));
diff --git a/inst/@infsupdec/pownrev.m b/inst/@infsupdec/pownrev.m
index bef8d91..e6fa031 100644
--- a/inst/@infsupdec/pownrev.m
+++ b/inst/@infsupdec/pownrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/powrev1.m b/inst/@infsupdec/powrev1.m
index f4a6077..9f187c1 100644
--- a/inst/@infsupdec/powrev1.m
+++ b/inst/@infsupdec/powrev1.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/powrev2.m b/inst/@infsupdec/powrev2.m
index 31dca41..8903587 100644
--- a/inst/@infsupdec/powrev2.m
+++ b/inst/@infsupdec/powrev2.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/precedes.m b/inst/@infsupdec/precedes.m
index 21bc085..04f52f9 100644
--- a/inst/@infsupdec/precedes.m
+++ b/inst/@infsupdec/precedes.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/prepad.m b/inst/@infsupdec/prepad.m
index 266a593..74cefd0 100644
--- a/inst/@infsupdec/prepad.m
+++ b/inst/@infsupdec/prepad.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/private/_com.m b/inst/@infsupdec/private/_com.m
index ae10478..8f3db15 100644
--- a/inst/@infsupdec/private/_com.m
+++ b/inst/@infsupdec/private/_com.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/private/_dac.m b/inst/@infsupdec/private/_dac.m
index 7382f09..76ae747 100644
--- a/inst/@infsupdec/private/_dac.m
+++ b/inst/@infsupdec/private/_dac.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/private/_def.m b/inst/@infsupdec/private/_def.m
index dbba083..1e97a6b 100644
--- a/inst/@infsupdec/private/_def.m
+++ b/inst/@infsupdec/private/_def.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/private/_ill.m b/inst/@infsupdec/private/_ill.m
index ebad25f..55c62f0 100644
--- a/inst/@infsupdec/private/_ill.m
+++ b/inst/@infsupdec/private/_ill.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/private/_trv.m b/inst/@infsupdec/private/_trv.m
index d281515..e8eebc8 100644
--- a/inst/@infsupdec/private/_trv.m
+++ b/inst/@infsupdec/private/_trv.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/prod.m b/inst/@infsupdec/prod.m
index a866cf6..19f6fc5 100644
--- a/inst/@infsupdec/prod.m
+++ b/inst/@infsupdec/prod.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/psi.m b/inst/@infsupdec/psi.m
index 0b3fa93..83bf753 100644
--- a/inst/@infsupdec/psi.m
+++ b/inst/@infsupdec/psi.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/rdivide.m b/inst/@infsupdec/rdivide.m
index 3d45361..e31a5ff 100644
--- a/inst/@infsupdec/rdivide.m
+++ b/inst/@infsupdec/rdivide.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -20,6 +20,9 @@
 ## 
 ## Divide all numbers of interval @var{X} by all numbers of @var{Y}.
 ##
+## For @var{X} = 1 compute the reciprocal of @var{Y}.  Thus this function can
+## compute @code{recip} as defined by IEEE Std 1788-2015.
+##
 ## Accuracy: The result is a tight enclosure.
 ##
 ## @example
@@ -30,7 +33,7 @@
 ##   @result{} ans = [1, 3]_com
 ## @end group
 ## @end example
-## @seealso{@@infsupdec/recip, @@infsupdec/mtimes}
+## @seealso{@@infsupdec/mtimes}
 ## @end defop
 
 ## Author: Oliver Heimlich
@@ -73,3 +76,4 @@ endfunction
 
 %!test "from the documentation string";
 %! assert (isequal (infsupdec (2, 3) ./ infsupdec (1, 2), infsupdec (1, 3)));
+%!assert (1 ./ infsupdec (1, 4) == infsupdec (0.25, 1));
\ No newline at end of file
diff --git a/inst/@infsupdec/realsqrt.m b/inst/@infsupdec/realsqrt.m
index bdcaf52..320dde2 100644
--- a/inst/@infsupdec/realsqrt.m
+++ b/inst/@infsupdec/realsqrt.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/recip.m b/inst/@infsupdec/recip.m
deleted file mode 100644
index 66e37c1..0000000
--- a/inst/@infsupdec/recip.m
+++ /dev/null
@@ -1,56 +0,0 @@
-## Copyright 2015 Oliver Heimlich
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 3 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @documentencoding UTF-8
-## @defmethod {@@infsupdec} recip (@var{X})
-## 
-## Compute the reciprocal of @var{X}.
-##
-## The result is equivalent to @code{1 ./ @var{X}}, but is computed more
-## efficiently.
-##
-## Accuracy: The result is a tight enclosure.
-##
-## @example
-## @group
-## recip (infsupdec (1, 4))
-##   @result{} ans = [0.25, 1]_com
-## @end group
-## @end example
-## @seealso{@@infsup/inv, @@infsupdec/rdivide}
-## @end defmethod
-
-## Author: Oliver Heimlich
-## Keywords: interval
-## Created: 2015-11-07
-
-function result = recip (x)
-
-if (nargin ~= 1)
-    print_usage ();
-    return
-endif
-
-result = newdec (recip (intervalpart (x)));
-result.dec = min (result.dec, x.dec);
-
-divisionbyzero = ismember (0, x);
-result.dec(divisionbyzero) = _trv ();
-
-endfunction
-
-%!test "from the documentation string";
-%!  assert (recip (infsupdec (1, 4)) == infsupdec (0.25, 1));
diff --git a/inst/@infsupdec/reshape.m b/inst/@infsupdec/reshape.m
index 687b126..db0478e 100644
--- a/inst/@infsupdec/reshape.m
+++ b/inst/@infsupdec/reshape.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/resize.m b/inst/@infsupdec/resize.m
index 073e981..cb76302 100644
--- a/inst/@infsupdec/resize.m
+++ b/inst/@infsupdec/resize.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/round.m b/inst/@infsupdec/round.m
index 7d36d5c..06af3a4 100644
--- a/inst/@infsupdec/round.m
+++ b/inst/@infsupdec/round.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/roundb.m b/inst/@infsupdec/roundb.m
index f675d6e..a19c6e8 100644
--- a/inst/@infsupdec/roundb.m
+++ b/inst/@infsupdec/roundb.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/rsqrt.m b/inst/@infsupdec/rsqrt.m
index 240eb1d..8835c7b 100644
--- a/inst/@infsupdec/rsqrt.m
+++ b/inst/@infsupdec/rsqrt.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/sec.m b/inst/@infsupdec/sec.m
index 2fd430a..4c8a34f 100644
--- a/inst/@infsupdec/sec.m
+++ b/inst/@infsupdec/sec.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/sech.m b/inst/@infsupdec/sech.m
index a42a6b2..0c68559 100644
--- a/inst/@infsupdec/sech.m
+++ b/inst/@infsupdec/sech.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/setdiff.m b/inst/@infsupdec/setdiff.m
index 98b1ba4..ab4d793 100644
--- a/inst/@infsupdec/setdiff.m
+++ b/inst/@infsupdec/setdiff.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/setxor.m b/inst/@infsupdec/setxor.m
index 4f7f349..0a39ae3 100644
--- a/inst/@infsupdec/setxor.m
+++ b/inst/@infsupdec/setxor.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/sign.m b/inst/@infsupdec/sign.m
index c360fd1..ff90c47 100644
--- a/inst/@infsupdec/sign.m
+++ b/inst/@infsupdec/sign.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/sin.m b/inst/@infsupdec/sin.m
index 6ab88b8..7c544c5 100644
--- a/inst/@infsupdec/sin.m
+++ b/inst/@infsupdec/sin.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/sinh.m b/inst/@infsupdec/sinh.m
index 15d4579..c674c38 100644
--- a/inst/@infsupdec/sinh.m
+++ b/inst/@infsupdec/sinh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/sinrev.m b/inst/@infsupdec/sinrev.m
index bcf5086..7b1b6fe 100644
--- a/inst/@infsupdec/sinrev.m
+++ b/inst/@infsupdec/sinrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/sqr.m b/inst/@infsupdec/sqr.m
deleted file mode 100644
index b6b7975..0000000
--- a/inst/@infsupdec/sqr.m
+++ /dev/null
@@ -1,56 +0,0 @@
-## Copyright 2014-2015 Oliver Heimlich
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 3 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, see <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @documentencoding UTF-8
-## @defmethod {@@infsupdec} sqr (@var{X})
-## 
-## Compute the square.
-##
-## Accuracy: The result is a tight enclosure.
-##
-## @example
-## @group
-## sqr (infsupdec (-2, 1))
-##   @result{} ans = [0, 4]_com
-## @end group
-## @end example
-## @seealso{@@infsupdec/realsqrt, @@infsupdec/pown, @@infsupdec/pow}
-## @end defmethod
-
-## Author: Oliver Heimlich
-## Keywords: interval
-## Created: 2014-10-13
-
-function result = sqr (x)
-
-if (nargin ~= 1)
-    print_usage ();
-    return
-endif
-
-if (isnai (x))
-    result = x;
-    return
-endif
-
-result = newdec (sqr (intervalpart (x)));
-## sqr is defined and continuous everywhere
-result.dec = min (result.dec, x.dec);
-
-endfunction
-
-%!test "from the documentation string";
-%! assert (isequal (sqr (infsupdec (-2, 1)), infsupdec (0, 4)));
diff --git a/inst/@infsupdec/sqrrev.m b/inst/@infsupdec/sqrrev.m
index f2d150b..843d669 100644
--- a/inst/@infsupdec/sqrrev.m
+++ b/inst/@infsupdec/sqrrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/strictprecedes.m b/inst/@infsupdec/strictprecedes.m
index e7e3447..0f75d29 100644
--- a/inst/@infsupdec/strictprecedes.m
+++ b/inst/@infsupdec/strictprecedes.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/subsasgn.m b/inst/@infsupdec/subsasgn.m
index d28e187..6243833 100644
--- a/inst/@infsupdec/subsasgn.m
+++ b/inst/@infsupdec/subsasgn.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/subset.m b/inst/@infsupdec/subset.m
index 92f3560..d6da647 100644
--- a/inst/@infsupdec/subset.m
+++ b/inst/@infsupdec/subset.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/subsref.m b/inst/@infsupdec/subsref.m
index 2dd90ac..42141eb 100644
--- a/inst/@infsupdec/subsref.m
+++ b/inst/@infsupdec/subsref.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/sum.m b/inst/@infsupdec/sum.m
index 1feca0c..9b95320 100644
--- a/inst/@infsupdec/sum.m
+++ b/inst/@infsupdec/sum.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/tan.m b/inst/@infsupdec/tan.m
index 343cc94..d4da6a8 100644
--- a/inst/@infsupdec/tan.m
+++ b/inst/@infsupdec/tan.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/tanh.m b/inst/@infsupdec/tanh.m
index 5803be1..42d7724 100644
--- a/inst/@infsupdec/tanh.m
+++ b/inst/@infsupdec/tanh.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/tanrev.m b/inst/@infsupdec/tanrev.m
index 68b654e..019d0ec 100644
--- a/inst/@infsupdec/tanrev.m
+++ b/inst/@infsupdec/tanrev.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/times.m b/inst/@infsupdec/times.m
index 9e3e284..b8acef0 100644
--- a/inst/@infsupdec/times.m
+++ b/inst/@infsupdec/times.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/transpose.m b/inst/@infsupdec/transpose.m
index c48def9..fae7c72 100644
--- a/inst/@infsupdec/transpose.m
+++ b/inst/@infsupdec/transpose.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/uminus.m b/inst/@infsupdec/uminus.m
index 96964fd..9077d72 100644
--- a/inst/@infsupdec/uminus.m
+++ b/inst/@infsupdec/uminus.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/union.m b/inst/@infsupdec/union.m
index 7386afa..16fa587 100644
--- a/inst/@infsupdec/union.m
+++ b/inst/@infsupdec/union.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/@infsupdec/vertcat.m b/inst/@infsupdec/vertcat.m
index c14bf8a..07faeac 100644
--- a/inst/@infsupdec/vertcat.m
+++ b/inst/@infsupdec/vertcat.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/__print_mesa__.m b/inst/__print_mesa__.m
index a0c73a2..048a16d 100644
--- a/inst/__print_mesa__.m
+++ b/inst/__print_mesa__.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/__split_interval_literals__.m b/inst/__split_interval_literals__.m
index d892de5..b0534d6 100644
--- a/inst/__split_interval_literals__.m
+++ b/inst/__split_interval_literals__.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/ctc_intersect.m b/inst/ctc_intersect.m
index 977323f..723d463 100644
--- a/inst/ctc_intersect.m
+++ b/inst/ctc_intersect.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/ctc_union.m b/inst/ctc_union.m
index 9016b12..9d7dc85 100644
--- a/inst/ctc_union.m
+++ b/inst/ctc_union.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/empty.m b/inst/empty.m
index dfd8713..e21ade0 100644
--- a/inst/empty.m
+++ b/inst/empty.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/entire.m b/inst/entire.m
index 2890f38..fb27f1a 100644
--- a/inst/entire.m
+++ b/inst/entire.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/exacttointerval.m b/inst/exacttointerval.m
index 42d841c..8d0446a 100644
--- a/inst/exacttointerval.m
+++ b/inst/exacttointerval.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/hull.m b/inst/hull.m
index ee57784..8f917c6 100644
--- a/inst/hull.m
+++ b/inst/hull.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/interval_bitpack.m b/inst/interval_bitpack.m
index 04a5432..12085c4 100644
--- a/inst/interval_bitpack.m
+++ b/inst/interval_bitpack.m
@@ -1,4 +1,4 @@
-## Copyright 2014-2015 Oliver Heimlich
+## Copyright 2014-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -21,7 +21,9 @@
 ##
 ## The input must either be a matrix of n × 128 bits for n bare intervals, or a
 ## matrix of n × 136 bits for n decorated intervals.  Bits are in increasing
-## order.
+## order.  Byte order depends on the system's endianness.  First 8 bytes are
+## used for the lower interval boundary, next 8 bytes are used for the upper
+## interval boundary, (optionally) last byte is used for the decoration.
 ##
 ## The result is a row vector of intervals.
 ##
@@ -50,14 +52,14 @@ endif
 
 switch size (x, 2)
     case 128 # (inf, sup)
-        u = bitpack (x (:, 1 : 64)' (:), 'double');
-        l = bitpack (x (:, 65 : 128)' (:), 'double');
+        l = bitpack (x (:, 1 : 64)' (:), 'double');
+        u = bitpack (x (:, 65 : 128)' (:), 'double');
         result = infsup (l, u);
     
     case 136 # (inf, sup, dec)
-        d = bitpack (x (:, 1 : 8)' (:), 'uint8');
-        u = bitpack (x (:, 9 : 72)' (:), 'double');
-        l = bitpack (x (:, 73 : 136)' (:), 'double');
+        l = bitpack (x (:, 1 : 64)' (:), 'double');
+        u = bitpack (x (:, 65 : 128)' (:), 'double');
+        d = bitpack (x (:, 129 : 136)' (:), 'uint8');
         
         dec = cell (size (x, 1), 1);
         dec (d == 4) = 'trv';
@@ -76,12 +78,22 @@ endswitch
 
 endfunction
 %!test "bare";
+%!  littleendian = bitunpack (uint16 (1))(1);
 %!  b = zeros (1, 128);
-%!  b ([53, 63, 116, 127]) = 1;
+%!  if (littleendian)
+%!    b([52, 63, 117, 127]) = 1;
+%!  else
+%!    b([7, 12, 71, 77]) = 1;
+%!  endif
 %!  decoded = interval_bitpack (logical (b));
 %!  assert (eq (decoded, infsup (3, 4)));
 %!test "decorated";
+%!  littleendian = bitunpack (uint16 (1))(1);
 %!  b = zeros (1, 136);
-%!  b ([5, 61, 71, 124, 135]) = 1;
+%!  if (littleendian)
+%!    b([52, 63, 117, 127, 133]) = 1;
+%!  else
+%!    b([7, 12, 71, 77, 133]) = 1;
+%!  endif
 %!  decoded = interval_bitpack (logical (b));
 %!  assert (eq (decoded, infsupdec (3, 4)));
diff --git a/inst/midrad.m b/inst/midrad.m
index b5ac017..92f44a8 100644
--- a/inst/midrad.m
+++ b/inst/midrad.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/nai.m b/inst/nai.m
index b033213..dec8afd 100644
--- a/inst/nai.m
+++ b/inst/nai.m
@@ -1,4 +1,4 @@
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/test/abs_rev.tst b/inst/test/abs_rev.tst
index 96b4746..e2b2de7 100644
--- a/inst/test/abs_rev.tst
+++ b/inst/test/abs_rev.tst
@@ -1,8 +1,8 @@
 ## DO NOT EDIT!  Generated automatically from test/abs_rev.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/test/atan2.tst b/inst/test/atan2.tst
index d72a13d..316245d 100644
--- a/inst/test/atan2.tst
+++ b/inst/test/atan2.tst
@@ -1,8 +1,8 @@
 ## DO NOT EDIT!  Generated automatically from test/atan2.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/inst/test/c-xsc.tst b/inst/test/c-xsc.tst
index 00fd14d..d8ecd84 100644
--- a/inst/test/c-xsc.tst
+++ b/inst/test/c-xsc.tst
@@ -1,12 +1,12 @@
 ## DO NOT EDIT!  Generated automatically from test/c-xsc.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
 ## Copyright 1990-2000 Institut fuer Angewandte Mathematik,
 ##                     Universitaet Karlsruhe, Germany
 ##           2000-2014 Wiss. Rechnen/Softwaretechnologie
 ##                     Universitaet Wuppertal, Germany   
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Origin: unit tests in C-XSC version 2.5.4, Original license: LGPLv2+
 ## Converted into portable ITL format by Oliver Heimlich.
@@ -417,11 +417,23 @@ end_try_catch;
 ## cxsc.intervalstdfunc
 
 %!test
-%! assert (isequal (sqr (infsup (11.0, 11.0)), infsup (121.0, 121.0)));
-%!test
-%! assert (isequal (sqr (infsup (0.0, 0.0)), infsup (0.0, 0.0)));
-%!test
-%! assert (isequal (sqr (infsup (-9.0, -9.0)), infsup (81.0, 81.0)));
+%! assert (isequal (pown (infsup (11.0, 11.0), 2), infsup (121.0, 121.0)));
+%! assert (isequal (infsup (11.0, 11.0) .^ 2, infsup (121.0, 121.0)));
+%! assert (isequal (power (infsup (11.0, 11.0), 2), infsup (121.0, 121.0)));
+%! assert (isequal (infsup (11.0, 11.0) ^ 2, infsup (121.0, 121.0)));
+%! assert (isequal (mpower (infsup (11.0, 11.0), 2), infsup (121.0, 121.0)));
+%!test
+%! assert (isequal (pown (infsup (0.0, 0.0), 2), infsup (0.0, 0.0)));
+%! assert (isequal (infsup (0.0, 0.0) .^ 2, infsup (0.0, 0.0)));
+%! assert (isequal (power (infsup (0.0, 0.0), 2), infsup (0.0, 0.0)));
+%! assert (isequal (infsup (0.0, 0.0) ^ 2, infsup (0.0, 0.0)));
+%! assert (isequal (mpower (infsup (0.0, 0.0), 2), infsup (0.0, 0.0)));
+%!test
+%! assert (isequal (pown (infsup (-9.0, -9.0), 2), infsup (81.0, 81.0)));
+%! assert (isequal (infsup (-9.0, -9.0) .^ 2, infsup (81.0, 81.0)));
+%! assert (isequal (power (infsup (-9.0, -9.0), 2), infsup (81.0, 81.0)));
+%! assert (isequal (infsup (-9.0, -9.0) ^ 2, infsup (81.0, 81.0)));
+%! assert (isequal (mpower (infsup (-9.0, -9.0), 2), infsup (81.0, 81.0)));
 %!test
 %! assert (isequal (realsqrt (infsup (121.0, 121.0)), infsup (11.0, 11.0)));
 %!test
diff --git a/inst/test/fi_lib.tst b/inst/test/fi_lib.tst
index 653810b..5a4bb29 100644
--- a/inst/test/fi_lib.tst
+++ b/inst/test/fi_lib.tst
@@ -1,6 +1,6 @@
 ## DO NOT EDIT!  Generated automatically from test/fi_lib.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
 ## Copyright 1997-2000 Institut fuer Wissenschaftliches Rechnen
 ##                     und Mathematische Modellbildung (IWRMM)
@@ -9,7 +9,7 @@
 ##                     Universitaet Karlsruhe, Germany
 ##           2000-2005 Wiss. Rechnen/Softwaretechnologie
 ##                     Universitaet Wuppertal, Germany
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original authors: Werner Hofschuster and Walter Kraemer
 ##                   (unit tests in FI_LIB version 1.2, original license: LGPLv2+)
@@ -1738,62 +1738,182 @@ end_try_catch;
 %!test
 %! assert (isequal (realsqrt (infsup (1.027829701532525701e-53, 1.755408547816880709e-45)), infsup (3.205978324213258952e-27, 4.189759596703468421e-23)));
 %!test
-%! assert (isequal (sqr (infsup (-1.820250631842705497e-45, -9.117403206523163851e-284)), infsup (0.000000000000000000e+00, 3.313312362723768996e-90)));
-%!test
-%! assert (isequal (sqr (infsup (-9.132843019095516065e-132, -9.836586939929288236e-188)), infsup (0.000000000000000000e+00, 8.340882161144170744e-263)));
-%!test
-%! assert (isequal (sqr (infsup (-8.631384205445317548e+01, -2.269091389186822222e-289)), infsup (0.000000000000000000e+00, 7.450079330201089761e+03)));
-%!test
-%! assert (isequal (sqr (infsup (-1.654017949299359065e-112, 1.159376035639006975e-176)), infsup (0.000000000000000000e+00, 2.735775376604457287e-224)));
-%!test
-%! assert (isequal (sqr (infsup (-2.261578927830210317e-107, -2.921845682025291002e-170)), infsup (0.000000000000000000e+00, 5.114739246805643826e-214)));
-%!test
-%! assert (isequal (sqr (infsup (-1.469458391712281360e-99, -1.976254011990074054e-124)), infsup (3.905579919906863034e-248, 2.159307964973644752e-198)));
-%!test
-%! assert (isequal (sqr (infsup (-1.088588131986426258e-12, -3.239993862505298994e-238)), infsup (0.000000000000000000e+00, 1.185024121101697110e-24)));
-%!test
-%! assert (isequal (sqr (infsup (-3.114600191344484305e-60, -1.151057432815240852e-61)), infsup (1.324933213639212643e-122, 9.700734351923098806e-120)));
-%!test
-%! assert (isequal (sqr (infsup (3.215755734598088570e-80, 2.860247434645490115e-24)), infsup (1.034108494460049166e-159, 8.181015387396108212e-48)));
-%!test
-%! assert (isequal (sqr (infsup (-7.599545156767026148e-113, -3.620806299549831939e-276)), infsup (0.000000000000000000e+00, 5.775308658974116928e-225)));
-%!test
-%! assert (isequal (sqr (infsup (-8.378054792460110690e-178, 2.171929406448802147e-04)), infsup (0.000000000000000000e+00, 4.717277346597046512e-08)));
-%!test
-%! assert (isequal (sqr (infsup (-6.977305240208117095e-101, -5.652987073406890307e-174)), infsup (0.000000000000000000e+00, 4.868278841503565141e-201)));
-%!test
-%! assert (isequal (sqr (infsup (-5.464129729164141708e-282, 9.669182275976748412e-117)), infsup (0.000000000000000000e+00, 9.349308588606289563e-233)));
-%!test
-%! assert (isequal (sqr (infsup (-2.609094333453398954e-148, 5.011306988287881225e-06)), infsup (0.000000000000000000e+00, 2.511319773086295719e-11)));
-%!test
-%! assert (isequal (sqr (infsup (-2.520164184091732485e-91, -6.923225182185906259e-252)), infsup (0.000000000000000000e+00, 6.351227514778747876e-182)));
-%!test
-%! assert (isequal (sqr (infsup (-2.058411222963202619e-150, -1.691080271454051769e-229)), infsup (0.000000000000000000e+00, 4.237056762820867958e-300)));
-%!test
-%! assert (isequal (sqr (infsup (-1.194912260770650641e-171, -3.063641562993914407e-235)), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
-%!test
-%! assert (isequal (sqr (infsup (-1.410213021759318257e-164, 2.113307206456483530e-235)), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
-%!test
-%! assert (isequal (sqr (infsup (-2.734402476279937437e-15, 2.214286456252711975e-200)), infsup (0.000000000000000000e+00, 7.476956902285853824e-30)));
-%!test
-%! assert (isequal (sqr (infsup (-4.736813689297963792e-37, -3.757820326147841254e-165)), infsup (0.000000000000000000e+00, 2.243740392712058757e-73)));
-%!test
-%! assert (isequal (sqr (infsup (-1.178872317111653867e-269, -3.697079530478824433e-304)), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
-%!test
-%! assert (isequal (sqr (infsup (-3.170977600535302060e-50, 1.773732353250808790e-223)), infsup (0.000000000000000000e+00, 1.005509894309662304e-99)));
-%!test
-%! assert (isequal (sqr (infsup (-9.582715182984806788e-234, -6.481946913158783102e-280)), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
-%!test
-%! assert (isequal (sqr (infsup (1.510030059283921314e-212, 1.357381528725581723e-08)), infsup (0.000000000000000000e+00, 1.842484614525397339e-16)));
-%!test
-%! assert (isequal (sqr (infsup (-1.323507196051687166e-113, 8.782017701712098963e-233)), infsup (0.000000000000000000e+00, 1.751671298000599397e-226)));
-%!test
-%! assert (isequal (sqr (infsup (-7.715995104235895070e-26, -1.871718785128404206e-162)), infsup (0.000000000000000000e+00, 5.953658044859230885e-51)));
-%!test
-%! assert (isequal (sqr (infsup (-3.395185885371617857e-83, -1.892322506995032646e-149)), infsup (3.580884470479965241e-298, 1.152728719622665870e-165)));
-%!test
-%! assert (isequal (sqr (infsup (-1.449285613317172764e-98, -5.707789272110613126e-264)), infsup (0.000000000000000000e+00, 2.100428788968133734e-196)));
-%!test
-%! assert (isequal (sqr (infsup (-1.045711771041448932e-76, 2.500374714085601101e-183)), infsup (0.000000000000000000e+00, 1.093513108094643860e-152)));
-%!test
-%! assert (isequal (sqr (infsup (-1.069106323474023944e-70, -1.300019611184126890e-129)), infsup (1.690050989463328240e-258, 1.142988330892144404e-140)));
+%! assert (isequal (pown (infsup (-1.820250631842705497e-45, -9.117403206523163851e-284), 2), infsup (0.000000000000000000e+00, 3.313312362723768996e-90)));
+%! assert (isequal (infsup (-1.820250631842705497e-45, -9.117403206523163851e-284) .^ 2, infsup (0.000000000000000000e+00, 3.313312362723768996e-90)));
+%! assert (isequal (power (infsup (-1.820250631842705497e-45, -9.117403206523163851e-284), 2), infsup (0.000000000000000000e+00, 3.313312362723768996e-90)));
+%! assert (isequal (infsup (-1.820250631842705497e-45, -9.117403206523163851e-284) ^ 2, infsup (0.000000000000000000e+00, 3.313312362723768996e-90)));
+%! assert (isequal (mpower (infsup (-1.820250631842705497e-45, -9.117403206523163851e-284), 2), infsup (0.000000000000000000e+00, 3.313312362723768996e-90)));
+%!test
+%! assert (isequal (pown (infsup (-9.132843019095516065e-132, -9.836586939929288236e-188), 2), infsup (0.000000000000000000e+00, 8.340882161144170744e-263)));
+%! assert (isequal (infsup (-9.132843019095516065e-132, -9.836586939929288236e-188) .^ 2, infsup (0.000000000000000000e+00, 8.340882161144170744e-263)));
+%! assert (isequal (power (infsup (-9.132843019095516065e-132, -9.836586939929288236e-188), 2), infsup (0.000000000000000000e+00, 8.340882161144170744e-263)));
+%! assert (isequal (infsup (-9.132843019095516065e-132, -9.836586939929288236e-188) ^ 2, infsup (0.000000000000000000e+00, 8.340882161144170744e-263)));
+%! assert (isequal (mpower (infsup (-9.132843019095516065e-132, -9.836586939929288236e-188), 2), infsup (0.000000000000000000e+00, 8.340882161144170744e-263)));
+%!test
+%! assert (isequal (pown (infsup (-8.631384205445317548e+01, -2.269091389186822222e-289), 2), infsup (0.000000000000000000e+00, 7.450079330201089761e+03)));
+%! assert (isequal (infsup (-8.631384205445317548e+01, -2.269091389186822222e-289) .^ 2, infsup (0.000000000000000000e+00, 7.450079330201089761e+03)));
+%! assert (isequal (power (infsup (-8.631384205445317548e+01, -2.269091389186822222e-289), 2), infsup (0.000000000000000000e+00, 7.450079330201089761e+03)));
+%! assert (isequal (infsup (-8.631384205445317548e+01, -2.269091389186822222e-289) ^ 2, infsup (0.000000000000000000e+00, 7.450079330201089761e+03)));
+%! assert (isequal (mpower (infsup (-8.631384205445317548e+01, -2.269091389186822222e-289), 2), infsup (0.000000000000000000e+00, 7.450079330201089761e+03)));
+%!test
+%! assert (isequal (pown (infsup (-1.654017949299359065e-112, 1.159376035639006975e-176), 2), infsup (0.000000000000000000e+00, 2.735775376604457287e-224)));
+%! assert (isequal (infsup (-1.654017949299359065e-112, 1.159376035639006975e-176) .^ 2, infsup (0.000000000000000000e+00, 2.735775376604457287e-224)));
+%! assert (isequal (power (infsup (-1.654017949299359065e-112, 1.159376035639006975e-176), 2), infsup (0.000000000000000000e+00, 2.735775376604457287e-224)));
+%! assert (isequal (infsup (-1.654017949299359065e-112, 1.159376035639006975e-176) ^ 2, infsup (0.000000000000000000e+00, 2.735775376604457287e-224)));
+%! assert (isequal (mpower (infsup (-1.654017949299359065e-112, 1.159376035639006975e-176), 2), infsup (0.000000000000000000e+00, 2.735775376604457287e-224)));
+%!test
+%! assert (isequal (pown (infsup (-2.261578927830210317e-107, -2.921845682025291002e-170), 2), infsup (0.000000000000000000e+00, 5.114739246805643826e-214)));
+%! assert (isequal (infsup (-2.261578927830210317e-107, -2.921845682025291002e-170) .^ 2, infsup (0.000000000000000000e+00, 5.114739246805643826e-214)));
+%! assert (isequal (power (infsup (-2.261578927830210317e-107, -2.921845682025291002e-170), 2), infsup (0.000000000000000000e+00, 5.114739246805643826e-214)));
+%! assert (isequal (infsup (-2.261578927830210317e-107, -2.921845682025291002e-170) ^ 2, infsup (0.000000000000000000e+00, 5.114739246805643826e-214)));
+%! assert (isequal (mpower (infsup (-2.261578927830210317e-107, -2.921845682025291002e-170), 2), infsup (0.000000000000000000e+00, 5.114739246805643826e-214)));
+%!test
+%! assert (isequal (pown (infsup (-1.469458391712281360e-99, -1.976254011990074054e-124), 2), infsup (3.905579919906863034e-248, 2.159307964973644752e-198)));
+%! assert (isequal (infsup (-1.469458391712281360e-99, -1.976254011990074054e-124) .^ 2, infsup (3.905579919906863034e-248, 2.159307964973644752e-198)));
+%! assert (isequal (power (infsup (-1.469458391712281360e-99, -1.976254011990074054e-124), 2), infsup (3.905579919906863034e-248, 2.159307964973644752e-198)));
+%! assert (isequal (infsup (-1.469458391712281360e-99, -1.976254011990074054e-124) ^ 2, infsup (3.905579919906863034e-248, 2.159307964973644752e-198)));
+%! assert (isequal (mpower (infsup (-1.469458391712281360e-99, -1.976254011990074054e-124), 2), infsup (3.905579919906863034e-248, 2.159307964973644752e-198)));
+%!test
+%! assert (isequal (pown (infsup (-1.088588131986426258e-12, -3.239993862505298994e-238), 2), infsup (0.000000000000000000e+00, 1.185024121101697110e-24)));
+%! assert (isequal (infsup (-1.088588131986426258e-12, -3.239993862505298994e-238) .^ 2, infsup (0.000000000000000000e+00, 1.185024121101697110e-24)));
+%! assert (isequal (power (infsup (-1.088588131986426258e-12, -3.239993862505298994e-238), 2), infsup (0.000000000000000000e+00, 1.185024121101697110e-24)));
+%! assert (isequal (infsup (-1.088588131986426258e-12, -3.239993862505298994e-238) ^ 2, infsup (0.000000000000000000e+00, 1.185024121101697110e-24)));
+%! assert (isequal (mpower (infsup (-1.088588131986426258e-12, -3.239993862505298994e-238), 2), infsup (0.000000000000000000e+00, 1.185024121101697110e-24)));
+%!test
+%! assert (isequal (pown (infsup (-3.114600191344484305e-60, -1.151057432815240852e-61), 2), infsup (1.324933213639212643e-122, 9.700734351923098806e-120)));
+%! assert (isequal (infsup (-3.114600191344484305e-60, -1.151057432815240852e-61) .^ 2, infsup (1.324933213639212643e-122, 9.700734351923098806e-120)));
+%! assert (isequal (power (infsup (-3.114600191344484305e-60, -1.151057432815240852e-61), 2), infsup (1.324933213639212643e-122, 9.700734351923098806e-120)));
+%! assert (isequal (infsup (-3.114600191344484305e-60, -1.151057432815240852e-61) ^ 2, infsup (1.324933213639212643e-122, 9.700734351923098806e-120)));
+%! assert (isequal (mpower (infsup (-3.114600191344484305e-60, -1.151057432815240852e-61), 2), infsup (1.324933213639212643e-122, 9.700734351923098806e-120)));
+%!test
+%! assert (isequal (pown (infsup (3.215755734598088570e-80, 2.860247434645490115e-24), 2), infsup (1.034108494460049166e-159, 8.181015387396108212e-48)));
+%! assert (isequal (infsup (3.215755734598088570e-80, 2.860247434645490115e-24) .^ 2, infsup (1.034108494460049166e-159, 8.181015387396108212e-48)));
+%! assert (isequal (power (infsup (3.215755734598088570e-80, 2.860247434645490115e-24), 2), infsup (1.034108494460049166e-159, 8.181015387396108212e-48)));
+%! assert (isequal (infsup (3.215755734598088570e-80, 2.860247434645490115e-24) ^ 2, infsup (1.034108494460049166e-159, 8.181015387396108212e-48)));
+%! assert (isequal (mpower (infsup (3.215755734598088570e-80, 2.860247434645490115e-24), 2), infsup (1.034108494460049166e-159, 8.181015387396108212e-48)));
+%!test
+%! assert (isequal (pown (infsup (-7.599545156767026148e-113, -3.620806299549831939e-276), 2), infsup (0.000000000000000000e+00, 5.775308658974116928e-225)));
+%! assert (isequal (infsup (-7.599545156767026148e-113, -3.620806299549831939e-276) .^ 2, infsup (0.000000000000000000e+00, 5.775308658974116928e-225)));
+%! assert (isequal (power (infsup (-7.599545156767026148e-113, -3.620806299549831939e-276), 2), infsup (0.000000000000000000e+00, 5.775308658974116928e-225)));
+%! assert (isequal (infsup (-7.599545156767026148e-113, -3.620806299549831939e-276) ^ 2, infsup (0.000000000000000000e+00, 5.775308658974116928e-225)));
+%! assert (isequal (mpower (infsup (-7.599545156767026148e-113, -3.620806299549831939e-276), 2), infsup (0.000000000000000000e+00, 5.775308658974116928e-225)));
+%!test
+%! assert (isequal (pown (infsup (-8.378054792460110690e-178, 2.171929406448802147e-04), 2), infsup (0.000000000000000000e+00, 4.717277346597046512e-08)));
+%! assert (isequal (infsup (-8.378054792460110690e-178, 2.171929406448802147e-04) .^ 2, infsup (0.000000000000000000e+00, 4.717277346597046512e-08)));
+%! assert (isequal (power (infsup (-8.378054792460110690e-178, 2.171929406448802147e-04), 2), infsup (0.000000000000000000e+00, 4.717277346597046512e-08)));
+%! assert (isequal (infsup (-8.378054792460110690e-178, 2.171929406448802147e-04) ^ 2, infsup (0.000000000000000000e+00, 4.717277346597046512e-08)));
+%! assert (isequal (mpower (infsup (-8.378054792460110690e-178, 2.171929406448802147e-04), 2), infsup (0.000000000000000000e+00, 4.717277346597046512e-08)));
+%!test
+%! assert (isequal (pown (infsup (-6.977305240208117095e-101, -5.652987073406890307e-174), 2), infsup (0.000000000000000000e+00, 4.868278841503565141e-201)));
+%! assert (isequal (infsup (-6.977305240208117095e-101, -5.652987073406890307e-174) .^ 2, infsup (0.000000000000000000e+00, 4.868278841503565141e-201)));
+%! assert (isequal (power (infsup (-6.977305240208117095e-101, -5.652987073406890307e-174), 2), infsup (0.000000000000000000e+00, 4.868278841503565141e-201)));
+%! assert (isequal (infsup (-6.977305240208117095e-101, -5.652987073406890307e-174) ^ 2, infsup (0.000000000000000000e+00, 4.868278841503565141e-201)));
+%! assert (isequal (mpower (infsup (-6.977305240208117095e-101, -5.652987073406890307e-174), 2), infsup (0.000000000000000000e+00, 4.868278841503565141e-201)));
+%!test
+%! assert (isequal (pown (infsup (-5.464129729164141708e-282, 9.669182275976748412e-117), 2), infsup (0.000000000000000000e+00, 9.349308588606289563e-233)));
+%! assert (isequal (infsup (-5.464129729164141708e-282, 9.669182275976748412e-117) .^ 2, infsup (0.000000000000000000e+00, 9.349308588606289563e-233)));
+%! assert (isequal (power (infsup (-5.464129729164141708e-282, 9.669182275976748412e-117), 2), infsup (0.000000000000000000e+00, 9.349308588606289563e-233)));
+%! assert (isequal (infsup (-5.464129729164141708e-282, 9.669182275976748412e-117) ^ 2, infsup (0.000000000000000000e+00, 9.349308588606289563e-233)));
+%! assert (isequal (mpower (infsup (-5.464129729164141708e-282, 9.669182275976748412e-117), 2), infsup (0.000000000000000000e+00, 9.349308588606289563e-233)));
+%!test
+%! assert (isequal (pown (infsup (-2.609094333453398954e-148, 5.011306988287881225e-06), 2), infsup (0.000000000000000000e+00, 2.511319773086295719e-11)));
+%! assert (isequal (infsup (-2.609094333453398954e-148, 5.011306988287881225e-06) .^ 2, infsup (0.000000000000000000e+00, 2.511319773086295719e-11)));
+%! assert (isequal (power (infsup (-2.609094333453398954e-148, 5.011306988287881225e-06), 2), infsup (0.000000000000000000e+00, 2.511319773086295719e-11)));
+%! assert (isequal (infsup (-2.609094333453398954e-148, 5.011306988287881225e-06) ^ 2, infsup (0.000000000000000000e+00, 2.511319773086295719e-11)));
+%! assert (isequal (mpower (infsup (-2.609094333453398954e-148, 5.011306988287881225e-06), 2), infsup (0.000000000000000000e+00, 2.511319773086295719e-11)));
+%!test
+%! assert (isequal (pown (infsup (-2.520164184091732485e-91, -6.923225182185906259e-252), 2), infsup (0.000000000000000000e+00, 6.351227514778747876e-182)));
+%! assert (isequal (infsup (-2.520164184091732485e-91, -6.923225182185906259e-252) .^ 2, infsup (0.000000000000000000e+00, 6.351227514778747876e-182)));
+%! assert (isequal (power (infsup (-2.520164184091732485e-91, -6.923225182185906259e-252), 2), infsup (0.000000000000000000e+00, 6.351227514778747876e-182)));
+%! assert (isequal (infsup (-2.520164184091732485e-91, -6.923225182185906259e-252) ^ 2, infsup (0.000000000000000000e+00, 6.351227514778747876e-182)));
+%! assert (isequal (mpower (infsup (-2.520164184091732485e-91, -6.923225182185906259e-252), 2), infsup (0.000000000000000000e+00, 6.351227514778747876e-182)));
+%!test
+%! assert (isequal (pown (infsup (-2.058411222963202619e-150, -1.691080271454051769e-229), 2), infsup (0.000000000000000000e+00, 4.237056762820867958e-300)));
+%! assert (isequal (infsup (-2.058411222963202619e-150, -1.691080271454051769e-229) .^ 2, infsup (0.000000000000000000e+00, 4.237056762820867958e-300)));
+%! assert (isequal (power (infsup (-2.058411222963202619e-150, -1.691080271454051769e-229), 2), infsup (0.000000000000000000e+00, 4.237056762820867958e-300)));
+%! assert (isequal (infsup (-2.058411222963202619e-150, -1.691080271454051769e-229) ^ 2, infsup (0.000000000000000000e+00, 4.237056762820867958e-300)));
+%! assert (isequal (mpower (infsup (-2.058411222963202619e-150, -1.691080271454051769e-229), 2), infsup (0.000000000000000000e+00, 4.237056762820867958e-300)));
+%!test
+%! assert (isequal (pown (infsup (-1.194912260770650641e-171, -3.063641562993914407e-235), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (infsup (-1.194912260770650641e-171, -3.063641562993914407e-235) .^ 2, infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (power (infsup (-1.194912260770650641e-171, -3.063641562993914407e-235), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (infsup (-1.194912260770650641e-171, -3.063641562993914407e-235) ^ 2, infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (mpower (infsup (-1.194912260770650641e-171, -3.063641562993914407e-235), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%!test
+%! assert (isequal (pown (infsup (-1.410213021759318257e-164, 2.113307206456483530e-235), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (infsup (-1.410213021759318257e-164, 2.113307206456483530e-235) .^ 2, infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (power (infsup (-1.410213021759318257e-164, 2.113307206456483530e-235), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (infsup (-1.410213021759318257e-164, 2.113307206456483530e-235) ^ 2, infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (mpower (infsup (-1.410213021759318257e-164, 2.113307206456483530e-235), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%!test
+%! assert (isequal (pown (infsup (-2.734402476279937437e-15, 2.214286456252711975e-200), 2), infsup (0.000000000000000000e+00, 7.476956902285853824e-30)));
+%! assert (isequal (infsup (-2.734402476279937437e-15, 2.214286456252711975e-200) .^ 2, infsup (0.000000000000000000e+00, 7.476956902285853824e-30)));
+%! assert (isequal (power (infsup (-2.734402476279937437e-15, 2.214286456252711975e-200), 2), infsup (0.000000000000000000e+00, 7.476956902285853824e-30)));
+%! assert (isequal (infsup (-2.734402476279937437e-15, 2.214286456252711975e-200) ^ 2, infsup (0.000000000000000000e+00, 7.476956902285853824e-30)));
+%! assert (isequal (mpower (infsup (-2.734402476279937437e-15, 2.214286456252711975e-200), 2), infsup (0.000000000000000000e+00, 7.476956902285853824e-30)));
+%!test
+%! assert (isequal (pown (infsup (-4.736813689297963792e-37, -3.757820326147841254e-165), 2), infsup (0.000000000000000000e+00, 2.243740392712058757e-73)));
+%! assert (isequal (infsup (-4.736813689297963792e-37, -3.757820326147841254e-165) .^ 2, infsup (0.000000000000000000e+00, 2.243740392712058757e-73)));
+%! assert (isequal (power (infsup (-4.736813689297963792e-37, -3.757820326147841254e-165), 2), infsup (0.000000000000000000e+00, 2.243740392712058757e-73)));
+%! assert (isequal (infsup (-4.736813689297963792e-37, -3.757820326147841254e-165) ^ 2, infsup (0.000000000000000000e+00, 2.243740392712058757e-73)));
+%! assert (isequal (mpower (infsup (-4.736813689297963792e-37, -3.757820326147841254e-165), 2), infsup (0.000000000000000000e+00, 2.243740392712058757e-73)));
+%!test
+%! assert (isequal (pown (infsup (-1.178872317111653867e-269, -3.697079530478824433e-304), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (infsup (-1.178872317111653867e-269, -3.697079530478824433e-304) .^ 2, infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (power (infsup (-1.178872317111653867e-269, -3.697079530478824433e-304), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (infsup (-1.178872317111653867e-269, -3.697079530478824433e-304) ^ 2, infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (mpower (infsup (-1.178872317111653867e-269, -3.697079530478824433e-304), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%!test
+%! assert (isequal (pown (infsup (-3.170977600535302060e-50, 1.773732353250808790e-223), 2), infsup (0.000000000000000000e+00, 1.005509894309662304e-99)));
+%! assert (isequal (infsup (-3.170977600535302060e-50, 1.773732353250808790e-223) .^ 2, infsup (0.000000000000000000e+00, 1.005509894309662304e-99)));
+%! assert (isequal (power (infsup (-3.170977600535302060e-50, 1.773732353250808790e-223), 2), infsup (0.000000000000000000e+00, 1.005509894309662304e-99)));
+%! assert (isequal (infsup (-3.170977600535302060e-50, 1.773732353250808790e-223) ^ 2, infsup (0.000000000000000000e+00, 1.005509894309662304e-99)));
+%! assert (isequal (mpower (infsup (-3.170977600535302060e-50, 1.773732353250808790e-223), 2), infsup (0.000000000000000000e+00, 1.005509894309662304e-99)));
+%!test
+%! assert (isequal (pown (infsup (-9.582715182984806788e-234, -6.481946913158783102e-280), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (infsup (-9.582715182984806788e-234, -6.481946913158783102e-280) .^ 2, infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (power (infsup (-9.582715182984806788e-234, -6.481946913158783102e-280), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (infsup (-9.582715182984806788e-234, -6.481946913158783102e-280) ^ 2, infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%! assert (isequal (mpower (infsup (-9.582715182984806788e-234, -6.481946913158783102e-280), 2), infsup (0.000000000000000000e+00, 4.940656458412465442e-324)));
+%!test
+%! assert (isequal (pown (infsup (1.510030059283921314e-212, 1.357381528725581723e-08), 2), infsup (0.000000000000000000e+00, 1.842484614525397339e-16)));
+%! assert (isequal (infsup (1.510030059283921314e-212, 1.357381528725581723e-08) .^ 2, infsup (0.000000000000000000e+00, 1.842484614525397339e-16)));
+%! assert (isequal (power (infsup (1.510030059283921314e-212, 1.357381528725581723e-08), 2), infsup (0.000000000000000000e+00, 1.842484614525397339e-16)));
+%! assert (isequal (infsup (1.510030059283921314e-212, 1.357381528725581723e-08) ^ 2, infsup (0.000000000000000000e+00, 1.842484614525397339e-16)));
+%! assert (isequal (mpower (infsup (1.510030059283921314e-212, 1.357381528725581723e-08), 2), infsup (0.000000000000000000e+00, 1.842484614525397339e-16)));
+%!test
+%! assert (isequal (pown (infsup (-1.323507196051687166e-113, 8.782017701712098963e-233), 2), infsup (0.000000000000000000e+00, 1.751671298000599397e-226)));
+%! assert (isequal (infsup (-1.323507196051687166e-113, 8.782017701712098963e-233) .^ 2, infsup (0.000000000000000000e+00, 1.751671298000599397e-226)));
+%! assert (isequal (power (infsup (-1.323507196051687166e-113, 8.782017701712098963e-233), 2), infsup (0.000000000000000000e+00, 1.751671298000599397e-226)));
+%! assert (isequal (infsup (-1.323507196051687166e-113, 8.782017701712098963e-233) ^ 2, infsup (0.000000000000000000e+00, 1.751671298000599397e-226)));
+%! assert (isequal (mpower (infsup (-1.323507196051687166e-113, 8.782017701712098963e-233), 2), infsup (0.000000000000000000e+00, 1.751671298000599397e-226)));
+%!test
+%! assert (isequal (pown (infsup (-7.715995104235895070e-26, -1.871718785128404206e-162), 2), infsup (0.000000000000000000e+00, 5.953658044859230885e-51)));
+%! assert (isequal (infsup (-7.715995104235895070e-26, -1.871718785128404206e-162) .^ 2, infsup (0.000000000000000000e+00, 5.953658044859230885e-51)));
+%! assert (isequal (power (infsup (-7.715995104235895070e-26, -1.871718785128404206e-162), 2), infsup (0.000000000000000000e+00, 5.953658044859230885e-51)));
+%! assert (isequal (infsup (-7.715995104235895070e-26, -1.871718785128404206e-162) ^ 2, infsup (0.000000000000000000e+00, 5.953658044859230885e-51)));
+%! assert (isequal (mpower (infsup (-7.715995104235895070e-26, -1.871718785128404206e-162), 2), infsup (0.000000000000000000e+00, 5.953658044859230885e-51)));
+%!test
+%! assert (isequal (pown (infsup (-3.395185885371617857e-83, -1.892322506995032646e-149), 2), infsup (3.580884470479965241e-298, 1.152728719622665870e-165)));
+%! assert (isequal (infsup (-3.395185885371617857e-83, -1.892322506995032646e-149) .^ 2, infsup (3.580884470479965241e-298, 1.152728719622665870e-165)));
+%! assert (isequal (power (infsup (-3.395185885371617857e-83, -1.892322506995032646e-149), 2), infsup (3.580884470479965241e-298, 1.152728719622665870e-165)));
+%! assert (isequal (infsup (-3.395185885371617857e-83, -1.892322506995032646e-149) ^ 2, infsup (3.580884470479965241e-298, 1.152728719622665870e-165)));
+%! assert (isequal (mpower (infsup (-3.395185885371617857e-83, -1.892322506995032646e-149), 2), infsup (3.580884470479965241e-298, 1.152728719622665870e-165)));
+%!test
+%! assert (isequal (pown (infsup (-1.449285613317172764e-98, -5.707789272110613126e-264), 2), infsup (0.000000000000000000e+00, 2.100428788968133734e-196)));
+%! assert (isequal (infsup (-1.449285613317172764e-98, -5.707789272110613126e-264) .^ 2, infsup (0.000000000000000000e+00, 2.100428788968133734e-196)));
+%! assert (isequal (power (infsup (-1.449285613317172764e-98, -5.707789272110613126e-264), 2), infsup (0.000000000000000000e+00, 2.100428788968133734e-196)));
+%! assert (isequal (infsup (-1.449285613317172764e-98, -5.707789272110613126e-264) ^ 2, infsup (0.000000000000000000e+00, 2.100428788968133734e-196)));
+%! assert (isequal (mpower (infsup (-1.449285613317172764e-98, -5.707789272110613126e-264), 2), infsup (0.000000000000000000e+00, 2.100428788968133734e-196)));
+%!test
+%! assert (isequal (pown (infsup (-1.045711771041448932e-76, 2.500374714085601101e-183), 2), infsup (0.000000000000000000e+00, 1.093513108094643860e-152)));
+%! assert (isequal (infsup (-1.045711771041448932e-76, 2.500374714085601101e-183) .^ 2, infsup (0.000000000000000000e+00, 1.093513108094643860e-152)));
+%! assert (isequal (power (infsup (-1.045711771041448932e-76, 2.500374714085601101e-183), 2), infsup (0.000000000000000000e+00, 1.093513108094643860e-152)));
+%! assert (isequal (infsup (-1.045711771041448932e-76, 2.500374714085601101e-183) ^ 2, infsup (0.000000000000000000e+00, 1.093513108094643860e-152)));
+%! assert (isequal (mpower (infsup (-1.045711771041448932e-76, 2.500374714085601101e-183), 2), infsup (0.000000000000000000e+00, 1.093513108094643860e-152)));
+%!test
+%! assert (isequal (pown (infsup (-1.069106323474023944e-70, -1.300019611184126890e-129), 2), infsup (1.690050989463328240e-258, 1.142988330892144404e-140)));
+%! assert (isequal (infsup (-1.069106323474023944e-70, -1.300019611184126890e-129) .^ 2, infsup (1.690050989463328240e-258, 1.142988330892144404e-140)));
+%! assert (isequal (power (infsup (-1.069106323474023944e-70, -1.300019611184126890e-129), 2), infsup (1.690050989463328240e-258, 1.142988330892144404e-140)));
+%! assert (isequal (infsup (-1.069106323474023944e-70, -1.300019611184126890e-129) ^ 2, infsup (1.690050989463328240e-258, 1.142988330892144404e-140)));
+%! assert (isequal (mpower (infsup (-1.069106323474023944e-70, -1.300019611184126890e-129), 2), infsup (1.690050989463328240e-258, 1.142988330892144404e-140)));
diff --git a/inst/test/libieeep1788_tests_bool.tst b/inst/test/libieeep1788_tests_bool.tst
index 1bd5984..f0ed092 100644
--- a/inst/test/libieeep1788_tests_bool.tst
+++ b/inst/test/libieeep1788_tests_bool.tst
@@ -1,9 +1,9 @@
 ## DO NOT EDIT!  Generated automatically from test/libieeep1788_tests_bool.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-## Copyright 2015 Oliver Heimlich
+## Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original author: Marco Nehmeier (unit tests in libieeep1788,
 ##                  original license: Apache License 2.0)
diff --git a/inst/test/libieeep1788_tests_cancel.tst b/inst/test/libieeep1788_tests_cancel.tst
index f6b1962..b8703cb 100644
--- a/inst/test/libieeep1788_tests_cancel.tst
+++ b/inst/test/libieeep1788_tests_cancel.tst
@@ -1,9 +1,9 @@
 ## DO NOT EDIT!  Generated automatically from test/libieeep1788_tests_cancel.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-## Copyright 2015 Oliver Heimlich
+## Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original author: Marco Nehmeier (unit tests in libieeep1788,
 ##                  original license: Apache License 2.0)
diff --git a/inst/test/libieeep1788_tests_elem.tst b/inst/test/libieeep1788_tests_elem.tst
index adb5849..345040c 100644
--- a/inst/test/libieeep1788_tests_elem.tst
+++ b/inst/test/libieeep1788_tests_elem.tst
@@ -1,9 +1,9 @@
 ## DO NOT EDIT!  Generated automatically from test/libieeep1788_tests_elem.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-## Copyright 2015 Oliver Heimlich
+## Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original author: Marco Nehmeier (unit tests in libieeep1788,
 ##                  original license: Apache License 2.0)
@@ -1838,110 +1838,394 @@ end_try_catch;
 ## minimal_recip_test
 
 %!test
-%! assert (isequal (recip (infsup (-50.0, -10.0)), infsup (-1.000000000000000056e-01, -1.999999999999999695e-02)));
-%!test
-%! assert (isequal (recip (infsup (10.0, 50.0)), infsup (1.999999999999999695e-02, 1.000000000000000056e-01)));
-%!test
-%! assert (isequal (recip (infsup (-inf, -10.0)), infsup (-1.000000000000000056e-01, 0.0)));
-%!test
-%! assert (isequal (recip (infsup (10.0, inf)), infsup (0.0, 1.000000000000000056e-01)));
-%!test
-%! assert (isequal (recip (infsup (0.0, 0.0)), infsup));
-%!test
-%! assert (isequal (recip (infsup (-0.0, -0.0)), infsup));
-%!test
-%! assert (isequal (recip (infsup (-10.0, 0.0)), infsup (-inf, -9.999999999999999167e-02)));
-%!test
-%! assert (isequal (recip (infsup (-10.0, -0.0)), infsup (-inf, -9.999999999999999167e-02)));
-%!test
-%! assert (isequal (recip (infsup (-10.0, 10.0)), infsup (-inf, inf)));
-%!test
-%! assert (isequal (recip (infsup (0.0, 10.0)), infsup (9.999999999999999167e-02, inf)));
-%!test
-%! assert (isequal (recip (infsup (-0.0, 10.0)), infsup (9.999999999999999167e-02, inf)));
-%!test
-%! assert (isequal (recip (infsup (-inf, 0.0)), infsup (-inf, 0.0)));
-%!test
-%! assert (isequal (recip (infsup (-inf, -0.0)), infsup (-inf, 0.0)));
-%!test
-%! assert (isequal (recip (infsup (-inf, 10.0)), infsup (-inf, inf)));
+%! assert (isequal (1 ./ infsup (-50.0, -10.0), infsup (-1.000000000000000056e-01, -1.999999999999999695e-02)));
+%! assert (isequal (rdivide (1, infsup (-50.0, -10.0)), infsup (-1.000000000000000056e-01, -1.999999999999999695e-02)));
+%! assert (isequal (pown (infsup (-50.0, -10.0), -1), infsup (-1.000000000000000056e-01, -1.999999999999999695e-02)));
+%! assert (isequal (infsup (-50.0, -10.0) .^ -1, infsup (-1.000000000000000056e-01, -1.999999999999999695e-02)));
+%! assert (isequal (power (infsup (-50.0, -10.0), -1), infsup (-1.000000000000000056e-01, -1.999999999999999695e-02)));
+%! assert (isequal (infsup (-50.0, -10.0) ^ -1, infsup (-1.000000000000000056e-01, -1.999999999999999695e-02)));
+%! assert (isequal (mpower (infsup (-50.0, -10.0), -1), infsup (-1.000000000000000056e-01, -1.999999999999999695e-02)));
+%!test
+%! assert (isequal (1 ./ infsup (10.0, 50.0), infsup (1.999999999999999695e-02, 1.000000000000000056e-01)));
+%! assert (isequal (rdivide (1, infsup (10.0, 50.0)), infsup (1.999999999999999695e-02, 1.000000000000000056e-01)));
+%! assert (isequal (pown (infsup (10.0, 50.0), -1), infsup (1.999999999999999695e-02, 1.000000000000000056e-01)));
+%! assert (isequal (infsup (10.0, 50.0) .^ -1, infsup (1.999999999999999695e-02, 1.000000000000000056e-01)));
+%! assert (isequal (power (infsup (10.0, 50.0), -1), infsup (1.999999999999999695e-02, 1.000000000000000056e-01)));
+%! assert (isequal (infsup (10.0, 50.0) ^ -1, infsup (1.999999999999999695e-02, 1.000000000000000056e-01)));
+%! assert (isequal (mpower (infsup (10.0, 50.0), -1), infsup (1.999999999999999695e-02, 1.000000000000000056e-01)));
+%!test
+%! assert (isequal (1 ./ infsup (-inf, -10.0), infsup (-1.000000000000000056e-01, 0.0)));
+%! assert (isequal (rdivide (1, infsup (-inf, -10.0)), infsup (-1.000000000000000056e-01, 0.0)));
+%! assert (isequal (pown (infsup (-inf, -10.0), -1), infsup (-1.000000000000000056e-01, 0.0)));
+%! assert (isequal (infsup (-inf, -10.0) .^ -1, infsup (-1.000000000000000056e-01, 0.0)));
+%! assert (isequal (power (infsup (-inf, -10.0), -1), infsup (-1.000000000000000056e-01, 0.0)));
+%! assert (isequal (infsup (-inf, -10.0) ^ -1, infsup (-1.000000000000000056e-01, 0.0)));
+%! assert (isequal (mpower (infsup (-inf, -10.0), -1), infsup (-1.000000000000000056e-01, 0.0)));
+%!test
+%! assert (isequal (1 ./ infsup (10.0, inf), infsup (0.0, 1.000000000000000056e-01)));
+%! assert (isequal (rdivide (1, infsup (10.0, inf)), infsup (0.0, 1.000000000000000056e-01)));
+%! assert (isequal (pown (infsup (10.0, inf), -1), infsup (0.0, 1.000000000000000056e-01)));
+%! assert (isequal (infsup (10.0, inf) .^ -1, infsup (0.0, 1.000000000000000056e-01)));
+%! assert (isequal (power (infsup (10.0, inf), -1), infsup (0.0, 1.000000000000000056e-01)));
+%! assert (isequal (infsup (10.0, inf) ^ -1, infsup (0.0, 1.000000000000000056e-01)));
+%! assert (isequal (mpower (infsup (10.0, inf), -1), infsup (0.0, 1.000000000000000056e-01)));
+%!test
+%! assert (isequal (1 ./ infsup (0.0, 0.0), infsup));
+%! assert (isequal (rdivide (1, infsup (0.0, 0.0)), infsup));
+%! assert (isequal (pown (infsup (0.0, 0.0), -1), infsup));
+%! assert (isequal (infsup (0.0, 0.0) .^ -1, infsup));
+%! assert (isequal (power (infsup (0.0, 0.0), -1), infsup));
+%! assert (isequal (infsup (0.0, 0.0) ^ -1, infsup));
+%! assert (isequal (mpower (infsup (0.0, 0.0), -1), infsup));
 %!test
-%! assert (isequal (recip (infsup (-10.0, inf)), infsup (-inf, inf)));
+%! assert (isequal (1 ./ infsup (-0.0, -0.0), infsup));
+%! assert (isequal (rdivide (1, infsup (-0.0, -0.0)), infsup));
+%! assert (isequal (pown (infsup (-0.0, -0.0), -1), infsup));
+%! assert (isequal (infsup (-0.0, -0.0) .^ -1, infsup));
+%! assert (isequal (power (infsup (-0.0, -0.0), -1), infsup));
+%! assert (isequal (infsup (-0.0, -0.0) ^ -1, infsup));
+%! assert (isequal (mpower (infsup (-0.0, -0.0), -1), infsup));
+%!test
+%! assert (isequal (1 ./ infsup (-10.0, 0.0), infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (rdivide (1, infsup (-10.0, 0.0)), infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (pown (infsup (-10.0, 0.0), -1), infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (infsup (-10.0, 0.0) .^ -1, infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (power (infsup (-10.0, 0.0), -1), infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (infsup (-10.0, 0.0) ^ -1, infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (mpower (infsup (-10.0, 0.0), -1), infsup (-inf, -9.999999999999999167e-02)));
+%!test
+%! assert (isequal (1 ./ infsup (-10.0, -0.0), infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (rdivide (1, infsup (-10.0, -0.0)), infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (pown (infsup (-10.0, -0.0), -1), infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (infsup (-10.0, -0.0) .^ -1, infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (power (infsup (-10.0, -0.0), -1), infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (infsup (-10.0, -0.0) ^ -1, infsup (-inf, -9.999999999999999167e-02)));
+%! assert (isequal (mpower (infsup (-10.0, -0.0), -1), infsup (-inf, -9.999999999999999167e-02)));
+%!test
+%! assert (isequal (1 ./ infsup (-10.0, 10.0), infsup (-inf, inf)));
+%! assert (isequal (rdivide (1, infsup (-10.0, 10.0)), infsup (-inf, inf)));
+%! assert (isequal (pown (infsup (-10.0, 10.0), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-10.0, 10.0) .^ -1, infsup (-inf, inf)));
+%! assert (isequal (power (infsup (-10.0, 10.0), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-10.0, 10.0) ^ -1, infsup (-inf, inf)));
+%! assert (isequal (mpower (infsup (-10.0, 10.0), -1), infsup (-inf, inf)));
+%!test
+%! assert (isequal (1 ./ infsup (0.0, 10.0), infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (rdivide (1, infsup (0.0, 10.0)), infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (pown (infsup (0.0, 10.0), -1), infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (infsup (0.0, 10.0) .^ -1, infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (power (infsup (0.0, 10.0), -1), infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (infsup (0.0, 10.0) ^ -1, infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (mpower (infsup (0.0, 10.0), -1), infsup (9.999999999999999167e-02, inf)));
+%!test
+%! assert (isequal (1 ./ infsup (-0.0, 10.0), infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (rdivide (1, infsup (-0.0, 10.0)), infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (pown (infsup (-0.0, 10.0), -1), infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (infsup (-0.0, 10.0) .^ -1, infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (power (infsup (-0.0, 10.0), -1), infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (infsup (-0.0, 10.0) ^ -1, infsup (9.999999999999999167e-02, inf)));
+%! assert (isequal (mpower (infsup (-0.0, 10.0), -1), infsup (9.999999999999999167e-02, inf)));
+%!test
+%! assert (isequal (1 ./ infsup (-inf, 0.0), infsup (-inf, 0.0)));
+%! assert (isequal (rdivide (1, infsup (-inf, 0.0)), infsup (-inf, 0.0)));
+%! assert (isequal (pown (infsup (-inf, 0.0), -1), infsup (-inf, 0.0)));
+%! assert (isequal (infsup (-inf, 0.0) .^ -1, infsup (-inf, 0.0)));
+%! assert (isequal (power (infsup (-inf, 0.0), -1), infsup (-inf, 0.0)));
+%! assert (isequal (infsup (-inf, 0.0) ^ -1, infsup (-inf, 0.0)));
+%! assert (isequal (mpower (infsup (-inf, 0.0), -1), infsup (-inf, 0.0)));
 %!test
-%! assert (isequal (recip (infsup (0.0, inf)), infsup (0.0, inf)));
+%! assert (isequal (1 ./ infsup (-inf, -0.0), infsup (-inf, 0.0)));
+%! assert (isequal (rdivide (1, infsup (-inf, -0.0)), infsup (-inf, 0.0)));
+%! assert (isequal (pown (infsup (-inf, -0.0), -1), infsup (-inf, 0.0)));
+%! assert (isequal (infsup (-inf, -0.0) .^ -1, infsup (-inf, 0.0)));
+%! assert (isequal (power (infsup (-inf, -0.0), -1), infsup (-inf, 0.0)));
+%! assert (isequal (infsup (-inf, -0.0) ^ -1, infsup (-inf, 0.0)));
+%! assert (isequal (mpower (infsup (-inf, -0.0), -1), infsup (-inf, 0.0)));
+%!test
+%! assert (isequal (1 ./ infsup (-inf, 10.0), infsup (-inf, inf)));
+%! assert (isequal (rdivide (1, infsup (-inf, 10.0)), infsup (-inf, inf)));
+%! assert (isequal (pown (infsup (-inf, 10.0), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-inf, 10.0) .^ -1, infsup (-inf, inf)));
+%! assert (isequal (power (infsup (-inf, 10.0), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-inf, 10.0) ^ -1, infsup (-inf, inf)));
+%! assert (isequal (mpower (infsup (-inf, 10.0), -1), infsup (-inf, inf)));
+%!test
+%! assert (isequal (1 ./ infsup (-10.0, inf), infsup (-inf, inf)));
+%! assert (isequal (rdivide (1, infsup (-10.0, inf)), infsup (-inf, inf)));
+%! assert (isequal (pown (infsup (-10.0, inf), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-10.0, inf) .^ -1, infsup (-inf, inf)));
+%! assert (isequal (power (infsup (-10.0, inf), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-10.0, inf) ^ -1, infsup (-inf, inf)));
+%! assert (isequal (mpower (infsup (-10.0, inf), -1), infsup (-inf, inf)));
+%!test
+%! assert (isequal (1 ./ infsup (0.0, inf), infsup (0.0, inf)));
+%! assert (isequal (rdivide (1, infsup (0.0, inf)), infsup (0.0, inf)));
+%! assert (isequal (pown (infsup (0.0, inf), -1), infsup (0.0, inf)));
+%! assert (isequal (infsup (0.0, inf) .^ -1, infsup (0.0, inf)));
+%! assert (isequal (power (infsup (0.0, inf), -1), infsup (0.0, inf)));
+%! assert (isequal (infsup (0.0, inf) ^ -1, infsup (0.0, inf)));
+%! assert (isequal (mpower (infsup (0.0, inf), -1), infsup (0.0, inf)));
 %!test
-%! assert (isequal (recip (infsup (-0.0, inf)), infsup (0.0, inf)));
+%! assert (isequal (1 ./ infsup (-0.0, inf), infsup (0.0, inf)));
+%! assert (isequal (rdivide (1, infsup (-0.0, inf)), infsup (0.0, inf)));
+%! assert (isequal (pown (infsup (-0.0, inf), -1), infsup (0.0, inf)));
+%! assert (isequal (infsup (-0.0, inf) .^ -1, infsup (0.0, inf)));
+%! assert (isequal (power (infsup (-0.0, inf), -1), infsup (0.0, inf)));
+%! assert (isequal (infsup (-0.0, inf) ^ -1, infsup (0.0, inf)));
+%! assert (isequal (mpower (infsup (-0.0, inf), -1), infsup (0.0, inf)));
 %!test
-%! assert (isequal (recip (infsup (-inf, inf)), infsup (-inf, inf)));
+%! assert (isequal (1 ./ infsup (-inf, inf), infsup (-inf, inf)));
+%! assert (isequal (rdivide (1, infsup (-inf, inf)), infsup (-inf, inf)));
+%! assert (isequal (pown (infsup (-inf, inf), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-inf, inf) .^ -1, infsup (-inf, inf)));
+%! assert (isequal (power (infsup (-inf, inf), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-inf, inf) ^ -1, infsup (-inf, inf)));
+%! assert (isequal (mpower (infsup (-inf, inf), -1), infsup (-inf, inf)));
 
 ## minimal_recip_dec_test
 
 %!test
-%! assert (isequal (recip (infsupdec (10.0, 50.0, "com")), infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")));
-%! assert (isequal (decorationpart (recip (infsupdec (10.0, 50.0, "com"))){1}, decorationpart (infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")){1}));
-%!test
-%! assert (isequal (recip (infsupdec (-inf, -10.0, "dac")), infsupdec (-1.000000000000000056e-01, 0.0, "dac")));
-%! assert (isequal (decorationpart (recip (infsupdec (-inf, -10.0, "dac"))){1}, decorationpart (infsupdec (-1.000000000000000056e-01, 0.0, "dac")){1}));
-%!test
-%! assert (isequal (recip (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def")), infsupdec (-inf, -5.562684646268003458e-309, "def")));
-%! assert (isequal (decorationpart (recip (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def"))){1}, decorationpart (infsupdec (-inf, -5.562684646268003458e-309, "def")){1}));
-%!test
-%! assert (isequal (recip (infsupdec (0.0, 0.0, "com")), infsupdec (empty, "trv")));
-%! assert (isequal (decorationpart (recip (infsupdec (0.0, 0.0, "com"))){1}, decorationpart (infsupdec (empty, "trv")){1}));
-%!test
-%! assert (isequal (recip (infsupdec (-10.0, 0.0, "com")), infsupdec (-inf, -9.999999999999999167e-02, "trv")));
-%! assert (isequal (decorationpart (recip (infsupdec (-10.0, 0.0, "com"))){1}, decorationpart (infsupdec (-inf, -9.999999999999999167e-02, "trv")){1}));
-%!test
-%! assert (isequal (recip (infsupdec (-10.0, inf, "dac")), infsupdec (entire, "trv")));
-%! assert (isequal (decorationpart (recip (infsupdec (-10.0, inf, "dac"))){1}, decorationpart (infsupdec (entire, "trv")){1}));
-%!test
-%! assert (isequal (recip (infsupdec (-0.0, inf, "dac")), infsupdec (0.0, inf, "trv")));
-%! assert (isequal (decorationpart (recip (infsupdec (-0.0, inf, "dac"))){1}, decorationpart (infsupdec (0.0, inf, "trv")){1}));
-%!test
-%! assert (isequal (recip (infsupdec (entire, "def")), infsupdec (entire, "trv")));
-%! assert (isequal (decorationpart (recip (infsupdec (entire, "def"))){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (1 ./ infsupdec (10.0, 50.0, "com"), infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")));
+%! assert (isequal (decorationpart (1 ./ infsupdec (10.0, 50.0, "com")){1}, decorationpart (infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")){1}));
+%! assert (isequal (rdivide (1, infsupdec (10.0, 50.0, "com")), infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")));
+%! assert (isequal (decorationpart (rdivide (1, infsupdec (10.0, 50.0, "com"))){1}, decorationpart (infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")){1}));
+%! assert (isequal (pown (infsupdec (10.0, 50.0, "com"), -1), infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")));
+%! assert (isequal (decorationpart (pown (infsupdec (10.0, 50.0, "com"), -1)){1}, decorationpart (infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")){1}));
+%! assert (isequal (infsupdec (10.0, 50.0, "com") .^ -1, infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")));
+%! assert (isequal (decorationpart (infsupdec (10.0, 50.0, "com") .^ -1){1}, decorationpart (infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")){1}));
+%! assert (isequal (power (infsupdec (10.0, 50.0, "com"), -1), infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")));
+%! assert (isequal (decorationpart (power (infsupdec (10.0, 50.0, "com"), -1)){1}, decorationpart (infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")){1}));
+%! assert (isequal (infsupdec (10.0, 50.0, "com") ^ -1, infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")));
+%! assert (isequal (decorationpart (infsupdec (10.0, 50.0, "com") ^ -1){1}, decorationpart (infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")){1}));
+%! assert (isequal (mpower (infsupdec (10.0, 50.0, "com"), -1), infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")));
+%! assert (isequal (decorationpart (mpower (infsupdec (10.0, 50.0, "com"), -1)){1}, decorationpart (infsupdec (1.999999999999999695e-02, 1.000000000000000056e-01, "com")){1}));
+%!test
+%! assert (isequal (1 ./ infsupdec (-inf, -10.0, "dac"), infsupdec (-1.000000000000000056e-01, 0.0, "dac")));
+%! assert (isequal (decorationpart (1 ./ infsupdec (-inf, -10.0, "dac")){1}, decorationpart (infsupdec (-1.000000000000000056e-01, 0.0, "dac")){1}));
+%! assert (isequal (rdivide (1, infsupdec (-inf, -10.0, "dac")), infsupdec (-1.000000000000000056e-01, 0.0, "dac")));
+%! assert (isequal (decorationpart (rdivide (1, infsupdec (-inf, -10.0, "dac"))){1}, decorationpart (infsupdec (-1.000000000000000056e-01, 0.0, "dac")){1}));
+%! assert (isequal (pown (infsupdec (-inf, -10.0, "dac"), -1), infsupdec (-1.000000000000000056e-01, 0.0, "dac")));
+%! assert (isequal (decorationpart (pown (infsupdec (-inf, -10.0, "dac"), -1)){1}, decorationpart (infsupdec (-1.000000000000000056e-01, 0.0, "dac")){1}));
+%! assert (isequal (infsupdec (-inf, -10.0, "dac") .^ -1, infsupdec (-1.000000000000000056e-01, 0.0, "dac")));
+%! assert (isequal (decorationpart (infsupdec (-inf, -10.0, "dac") .^ -1){1}, decorationpart (infsupdec (-1.000000000000000056e-01, 0.0, "dac")){1}));
+%! assert (isequal (power (infsupdec (-inf, -10.0, "dac"), -1), infsupdec (-1.000000000000000056e-01, 0.0, "dac")));
+%! assert (isequal (decorationpart (power (infsupdec (-inf, -10.0, "dac"), -1)){1}, decorationpart (infsupdec (-1.000000000000000056e-01, 0.0, "dac")){1}));
+%! assert (isequal (infsupdec (-inf, -10.0, "dac") ^ -1, infsupdec (-1.000000000000000056e-01, 0.0, "dac")));
+%! assert (isequal (decorationpart (infsupdec (-inf, -10.0, "dac") ^ -1){1}, decorationpart (infsupdec (-1.000000000000000056e-01, 0.0, "dac")){1}));
+%! assert (isequal (mpower (infsupdec (-inf, -10.0, "dac"), -1), infsupdec (-1.000000000000000056e-01, 0.0, "dac")));
+%! assert (isequal (decorationpart (mpower (infsupdec (-inf, -10.0, "dac"), -1)){1}, decorationpart (infsupdec (-1.000000000000000056e-01, 0.0, "dac")){1}));
+%!test
+%! assert (isequal (1 ./ infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def"), infsupdec (-inf, -5.562684646268003458e-309, "def")));
+%! assert (isequal (decorationpart (1 ./ infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def")){1}, decorationpart (infsupdec (-inf, -5.562684646268003458e-309, "def")){1}));
+%! assert (isequal (rdivide (1, infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def")), infsupdec (-inf, -5.562684646268003458e-309, "def")));
+%! assert (isequal (decorationpart (rdivide (1, infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def"))){1}, decorationpart (infsupdec (-inf, -5.562684646268003458e-309, "def")){1}));
+%! assert (isequal (pown (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def"), -1), infsupdec (-inf, -5.562684646268003458e-309, "def")));
+%! assert (isequal (decorationpart (pown (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def"), -1)){1}, decorationpart (infsupdec (-inf, -5.562684646268003458e-309, "def")){1}));
+%! assert (isequal (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def") .^ -1, infsupdec (-inf, -5.562684646268003458e-309, "def")));
+%! assert (isequal (decorationpart (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def") .^ -1){1}, decorationpart (infsupdec (-inf, -5.562684646268003458e-309, "def")){1}));
+%! assert (isequal (power (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def"), -1), infsupdec (-inf, -5.562684646268003458e-309, "def")));
+%! assert (isequal (decorationpart (power (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def"), -1)){1}, decorationpart (infsupdec (-inf, -5.562684646268003458e-309, "def")){1}));
+%! assert (isequal (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def") ^ -1, infsupdec (-inf, -5.562684646268003458e-309, "def")));
+%! assert (isequal (decorationpart (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def") ^ -1){1}, decorationpart (infsupdec (-inf, -5.562684646268003458e-309, "def")){1}));
+%! assert (isequal (mpower (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def"), -1), infsupdec (-inf, -5.562684646268003458e-309, "def")));
+%! assert (isequal (decorationpart (mpower (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "def"), -1)){1}, decorationpart (infsupdec (-inf, -5.562684646268003458e-309, "def")){1}));
+%!test
+%! assert (isequal (1 ./ infsupdec (0.0, 0.0, "com"), infsupdec (empty, "trv")));
+%! assert (isequal (decorationpart (1 ./ infsupdec (0.0, 0.0, "com")){1}, decorationpart (infsupdec (empty, "trv")){1}));
+%! assert (isequal (rdivide (1, infsupdec (0.0, 0.0, "com")), infsupdec (empty, "trv")));
+%! assert (isequal (decorationpart (rdivide (1, infsupdec (0.0, 0.0, "com"))){1}, decorationpart (infsupdec (empty, "trv")){1}));
+%! assert (isequal (pown (infsupdec (0.0, 0.0, "com"), -1), infsupdec (empty, "trv")));
+%! assert (isequal (decorationpart (pown (infsupdec (0.0, 0.0, "com"), -1)){1}, decorationpart (infsupdec (empty, "trv")){1}));
+%! assert (isequal (infsupdec (0.0, 0.0, "com") .^ -1, infsupdec (empty, "trv")));
+%! assert (isequal (decorationpart (infsupdec (0.0, 0.0, "com") .^ -1){1}, decorationpart (infsupdec (empty, "trv")){1}));
+%! assert (isequal (power (infsupdec (0.0, 0.0, "com"), -1), infsupdec (empty, "trv")));
+%! assert (isequal (decorationpart (power (infsupdec (0.0, 0.0, "com"), -1)){1}, decorationpart (infsupdec (empty, "trv")){1}));
+%! assert (isequal (infsupdec (0.0, 0.0, "com") ^ -1, infsupdec (empty, "trv")));
+%! assert (isequal (decorationpart (infsupdec (0.0, 0.0, "com") ^ -1){1}, decorationpart (infsupdec (empty, "trv")){1}));
+%! assert (isequal (mpower (infsupdec (0.0, 0.0, "com"), -1), infsupdec (empty, "trv")));
+%! assert (isequal (decorationpart (mpower (infsupdec (0.0, 0.0, "com"), -1)){1}, decorationpart (infsupdec (empty, "trv")){1}));
+%!test
+%! assert (isequal (1 ./ infsupdec (-10.0, 0.0, "com"), infsupdec (-inf, -9.999999999999999167e-02, "trv")));
+%! assert (isequal (decorationpart (1 ./ infsupdec (-10.0, 0.0, "com")){1}, decorationpart (infsupdec (-inf, -9.999999999999999167e-02, "trv")){1}));
+%! assert (isequal (rdivide (1, infsupdec (-10.0, 0.0, "com")), infsupdec (-inf, -9.999999999999999167e-02, "trv")));
+%! assert (isequal (decorationpart (rdivide (1, infsupdec (-10.0, 0.0, "com"))){1}, decorationpart (infsupdec (-inf, -9.999999999999999167e-02, "trv")){1}));
+%! assert (isequal (pown (infsupdec (-10.0, 0.0, "com"), -1), infsupdec (-inf, -9.999999999999999167e-02, "trv")));
+%! assert (isequal (decorationpart (pown (infsupdec (-10.0, 0.0, "com"), -1)){1}, decorationpart (infsupdec (-inf, -9.999999999999999167e-02, "trv")){1}));
+%! assert (isequal (infsupdec (-10.0, 0.0, "com") .^ -1, infsupdec (-inf, -9.999999999999999167e-02, "trv")));
+%! assert (isequal (decorationpart (infsupdec (-10.0, 0.0, "com") .^ -1){1}, decorationpart (infsupdec (-inf, -9.999999999999999167e-02, "trv")){1}));
+%! assert (isequal (power (infsupdec (-10.0, 0.0, "com"), -1), infsupdec (-inf, -9.999999999999999167e-02, "trv")));
+%! assert (isequal (decorationpart (power (infsupdec (-10.0, 0.0, "com"), -1)){1}, decorationpart (infsupdec (-inf, -9.999999999999999167e-02, "trv")){1}));
+%! assert (isequal (infsupdec (-10.0, 0.0, "com") ^ -1, infsupdec (-inf, -9.999999999999999167e-02, "trv")));
+%! assert (isequal (decorationpart (infsupdec (-10.0, 0.0, "com") ^ -1){1}, decorationpart (infsupdec (-inf, -9.999999999999999167e-02, "trv")){1}));
+%! assert (isequal (mpower (infsupdec (-10.0, 0.0, "com"), -1), infsupdec (-inf, -9.999999999999999167e-02, "trv")));
+%! assert (isequal (decorationpart (mpower (infsupdec (-10.0, 0.0, "com"), -1)){1}, decorationpart (infsupdec (-inf, -9.999999999999999167e-02, "trv")){1}));
+%!test
+%! assert (isequal (1 ./ infsupdec (-10.0, inf, "dac"), infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (1 ./ infsupdec (-10.0, inf, "dac")){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (rdivide (1, infsupdec (-10.0, inf, "dac")), infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (rdivide (1, infsupdec (-10.0, inf, "dac"))){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (pown (infsupdec (-10.0, inf, "dac"), -1), infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (pown (infsupdec (-10.0, inf, "dac"), -1)){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (infsupdec (-10.0, inf, "dac") .^ -1, infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (infsupdec (-10.0, inf, "dac") .^ -1){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (power (infsupdec (-10.0, inf, "dac"), -1), infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (power (infsupdec (-10.0, inf, "dac"), -1)){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (infsupdec (-10.0, inf, "dac") ^ -1, infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (infsupdec (-10.0, inf, "dac") ^ -1){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (mpower (infsupdec (-10.0, inf, "dac"), -1), infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (mpower (infsupdec (-10.0, inf, "dac"), -1)){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%!test
+%! assert (isequal (1 ./ infsupdec (-0.0, inf, "dac"), infsupdec (0.0, inf, "trv")));
+%! assert (isequal (decorationpart (1 ./ infsupdec (-0.0, inf, "dac")){1}, decorationpart (infsupdec (0.0, inf, "trv")){1}));
+%! assert (isequal (rdivide (1, infsupdec (-0.0, inf, "dac")), infsupdec (0.0, inf, "trv")));
+%! assert (isequal (decorationpart (rdivide (1, infsupdec (-0.0, inf, "dac"))){1}, decorationpart (infsupdec (0.0, inf, "trv")){1}));
+%! assert (isequal (pown (infsupdec (-0.0, inf, "dac"), -1), infsupdec (0.0, inf, "trv")));
+%! assert (isequal (decorationpart (pown (infsupdec (-0.0, inf, "dac"), -1)){1}, decorationpart (infsupdec (0.0, inf, "trv")){1}));
+%! assert (isequal (infsupdec (-0.0, inf, "dac") .^ -1, infsupdec (0.0, inf, "trv")));
+%! assert (isequal (decorationpart (infsupdec (-0.0, inf, "dac") .^ -1){1}, decorationpart (infsupdec (0.0, inf, "trv")){1}));
+%! assert (isequal (power (infsupdec (-0.0, inf, "dac"), -1), infsupdec (0.0, inf, "trv")));
+%! assert (isequal (decorationpart (power (infsupdec (-0.0, inf, "dac"), -1)){1}, decorationpart (infsupdec (0.0, inf, "trv")){1}));
+%! assert (isequal (infsupdec (-0.0, inf, "dac") ^ -1, infsupdec (0.0, inf, "trv")));
+%! assert (isequal (decorationpart (infsupdec (-0.0, inf, "dac") ^ -1){1}, decorationpart (infsupdec (0.0, inf, "trv")){1}));
+%! assert (isequal (mpower (infsupdec (-0.0, inf, "dac"), -1), infsupdec (0.0, inf, "trv")));
+%! assert (isequal (decorationpart (mpower (infsupdec (-0.0, inf, "dac"), -1)){1}, decorationpart (infsupdec (0.0, inf, "trv")){1}));
+%!test
+%! assert (isequal (1 ./ infsupdec (entire, "def"), infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (1 ./ infsupdec (entire, "def")){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (rdivide (1, infsupdec (entire, "def")), infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (rdivide (1, infsupdec (entire, "def"))){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (pown (infsupdec (entire, "def"), -1), infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (pown (infsupdec (entire, "def"), -1)){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (infsupdec (entire, "def") .^ -1, infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (infsupdec (entire, "def") .^ -1){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (power (infsupdec (entire, "def"), -1), infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (power (infsupdec (entire, "def"), -1)){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (infsupdec (entire, "def") ^ -1, infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (infsupdec (entire, "def") ^ -1){1}, decorationpart (infsupdec (entire, "trv")){1}));
+%! assert (isequal (mpower (infsupdec (entire, "def"), -1), infsupdec (entire, "trv")));
+%! assert (isequal (decorationpart (mpower (infsupdec (entire, "def"), -1)){1}, decorationpart (infsupdec (entire, "trv")){1}));
 
 ## minimal_sqr_test
 
 %!test
-%! assert (isequal (sqr (infsup), infsup));
-%!test
-%! assert (isequal (sqr (infsup (-inf, inf)), infsup (0.0, inf)));
-%!test
-%! assert (isequal (sqr (infsup (-inf, -4.940656458412465442e-324)), infsup (0.0, inf)));
-%!test
-%! assert (isequal (sqr (infsup (-1.0, 1.0)), infsup (0.0, 1.0)));
-%!test
-%! assert (isequal (sqr (infsup (0.0, 1.0)), infsup (0.0, 1.0)));
-%!test
-%! assert (isequal (sqr (infsup (-0.0, 1.0)), infsup (0.0, 1.0)));
-%!test
-%! assert (isequal (sqr (infsup (-5.0, 3.0)), infsup (0.0, 25.0)));
-%!test
-%! assert (isequal (sqr (infsup (-5.0, 0.0)), infsup (0.0, 25.0)));
-%!test
-%! assert (isequal (sqr (infsup (-5.0, -0.0)), infsup (0.0, 25.0)));
-%!test
-%! assert (isequal (sqr (infsup (1.000000000000000056e-01, 1.000000000000000056e-01)), infsup (1.000000000000000021e-02, 1.000000000000000194e-02)));
-%!test
-%! assert (isequal (sqr (infsup (-1.999999999999996447e+00, 1.000000000000000056e-01)), infsup (0.0, 3.999999999999986233e+00)));
+%! assert (isequal (pown (infsup, 2), infsup));
+%! assert (isequal (infsup .^ 2, infsup));
+%! assert (isequal (power (infsup, 2), infsup));
+%! assert (isequal (infsup ^ 2, infsup));
+%! assert (isequal (mpower (infsup, 2), infsup));
 %!test
-%! assert (isequal (sqr (infsup (-1.999999999999996447e+00, -1.999999999999996447e+00)), infsup (3.999999999999985789e+00, 3.999999999999986233e+00)));
+%! assert (isequal (pown (infsup (-inf, inf), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (-inf, inf) .^ 2, infsup (0.0, inf)));
+%! assert (isequal (power (infsup (-inf, inf), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (-inf, inf) ^ 2, infsup (0.0, inf)));
+%! assert (isequal (mpower (infsup (-inf, inf), 2), infsup (0.0, inf)));
+%!test
+%! assert (isequal (pown (infsup (-inf, -4.940656458412465442e-324), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (-inf, -4.940656458412465442e-324) .^ 2, infsup (0.0, inf)));
+%! assert (isequal (power (infsup (-inf, -4.940656458412465442e-324), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (-inf, -4.940656458412465442e-324) ^ 2, infsup (0.0, inf)));
+%! assert (isequal (mpower (infsup (-inf, -4.940656458412465442e-324), 2), infsup (0.0, inf)));
+%!test
+%! assert (isequal (pown (infsup (-1.0, 1.0), 2), infsup (0.0, 1.0)));
+%! assert (isequal (infsup (-1.0, 1.0) .^ 2, infsup (0.0, 1.0)));
+%! assert (isequal (power (infsup (-1.0, 1.0), 2), infsup (0.0, 1.0)));
+%! assert (isequal (infsup (-1.0, 1.0) ^ 2, infsup (0.0, 1.0)));
+%! assert (isequal (mpower (infsup (-1.0, 1.0), 2), infsup (0.0, 1.0)));
+%!test
+%! assert (isequal (pown (infsup (0.0, 1.0), 2), infsup (0.0, 1.0)));
+%! assert (isequal (infsup (0.0, 1.0) .^ 2, infsup (0.0, 1.0)));
+%! assert (isequal (power (infsup (0.0, 1.0), 2), infsup (0.0, 1.0)));
+%! assert (isequal (infsup (0.0, 1.0) ^ 2, infsup (0.0, 1.0)));
+%! assert (isequal (mpower (infsup (0.0, 1.0), 2), infsup (0.0, 1.0)));
+%!test
+%! assert (isequal (pown (infsup (-0.0, 1.0), 2), infsup (0.0, 1.0)));
+%! assert (isequal (infsup (-0.0, 1.0) .^ 2, infsup (0.0, 1.0)));
+%! assert (isequal (power (infsup (-0.0, 1.0), 2), infsup (0.0, 1.0)));
+%! assert (isequal (infsup (-0.0, 1.0) ^ 2, infsup (0.0, 1.0)));
+%! assert (isequal (mpower (infsup (-0.0, 1.0), 2), infsup (0.0, 1.0)));
+%!test
+%! assert (isequal (pown (infsup (-5.0, 3.0), 2), infsup (0.0, 25.0)));
+%! assert (isequal (infsup (-5.0, 3.0) .^ 2, infsup (0.0, 25.0)));
+%! assert (isequal (power (infsup (-5.0, 3.0), 2), infsup (0.0, 25.0)));
+%! assert (isequal (infsup (-5.0, 3.0) ^ 2, infsup (0.0, 25.0)));
+%! assert (isequal (mpower (infsup (-5.0, 3.0), 2), infsup (0.0, 25.0)));
+%!test
+%! assert (isequal (pown (infsup (-5.0, 0.0), 2), infsup (0.0, 25.0)));
+%! assert (isequal (infsup (-5.0, 0.0) .^ 2, infsup (0.0, 25.0)));
+%! assert (isequal (power (infsup (-5.0, 0.0), 2), infsup (0.0, 25.0)));
+%! assert (isequal (infsup (-5.0, 0.0) ^ 2, infsup (0.0, 25.0)));
+%! assert (isequal (mpower (infsup (-5.0, 0.0), 2), infsup (0.0, 25.0)));
+%!test
+%! assert (isequal (pown (infsup (-5.0, -0.0), 2), infsup (0.0, 25.0)));
+%! assert (isequal (infsup (-5.0, -0.0) .^ 2, infsup (0.0, 25.0)));
+%! assert (isequal (power (infsup (-5.0, -0.0), 2), infsup (0.0, 25.0)));
+%! assert (isequal (infsup (-5.0, -0.0) ^ 2, infsup (0.0, 25.0)));
+%! assert (isequal (mpower (infsup (-5.0, -0.0), 2), infsup (0.0, 25.0)));
+%!test
+%! assert (isequal (pown (infsup (1.000000000000000056e-01, 1.000000000000000056e-01), 2), infsup (1.000000000000000021e-02, 1.000000000000000194e-02)));
+%! assert (isequal (infsup (1.000000000000000056e-01, 1.000000000000000056e-01) .^ 2, infsup (1.000000000000000021e-02, 1.000000000000000194e-02)));
+%! assert (isequal (power (infsup (1.000000000000000056e-01, 1.000000000000000056e-01), 2), infsup (1.000000000000000021e-02, 1.000000000000000194e-02)));
+%! assert (isequal (infsup (1.000000000000000056e-01, 1.000000000000000056e-01) ^ 2, infsup (1.000000000000000021e-02, 1.000000000000000194e-02)));
+%! assert (isequal (mpower (infsup (1.000000000000000056e-01, 1.000000000000000056e-01), 2), infsup (1.000000000000000021e-02, 1.000000000000000194e-02)));
+%!test
+%! assert (isequal (pown (infsup (-1.999999999999996447e+00, 1.000000000000000056e-01), 2), infsup (0.0, 3.999999999999986233e+00)));
+%! assert (isequal (infsup (-1.999999999999996447e+00, 1.000000000000000056e-01) .^ 2, infsup (0.0, 3.999999999999986233e+00)));
+%! assert (isequal (power (infsup (-1.999999999999996447e+00, 1.000000000000000056e-01), 2), infsup (0.0, 3.999999999999986233e+00)));
+%! assert (isequal (infsup (-1.999999999999996447e+00, 1.000000000000000056e-01) ^ 2, infsup (0.0, 3.999999999999986233e+00)));
+%! assert (isequal (mpower (infsup (-1.999999999999996447e+00, 1.000000000000000056e-01), 2), infsup (0.0, 3.999999999999986233e+00)));
+%!test
+%! assert (isequal (pown (infsup (-1.999999999999996447e+00, -1.999999999999996447e+00), 2), infsup (3.999999999999985789e+00, 3.999999999999986233e+00)));
+%! assert (isequal (infsup (-1.999999999999996447e+00, -1.999999999999996447e+00) .^ 2, infsup (3.999999999999985789e+00, 3.999999999999986233e+00)));
+%! assert (isequal (power (infsup (-1.999999999999996447e+00, -1.999999999999996447e+00), 2), infsup (3.999999999999985789e+00, 3.999999999999986233e+00)));
+%! assert (isequal (infsup (-1.999999999999996447e+00, -1.999999999999996447e+00) ^ 2, infsup (3.999999999999985789e+00, 3.999999999999986233e+00)));
+%! assert (isequal (mpower (infsup (-1.999999999999996447e+00, -1.999999999999996447e+00), 2), infsup (3.999999999999985789e+00, 3.999999999999986233e+00)));
 
 ## minimal_sqr_dec_test
 
 %!test
-%! assert (isequal (sqr (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com")), infsupdec (0.0, inf, "dac")));
-%! assert (isequal (decorationpart (sqr (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com"))){1}, decorationpart (infsupdec (0.0, inf, "dac")){1}));
-%!test
-%! assert (isequal (sqr (infsupdec (-1.0, 1.0, "def")), infsupdec (0.0, 1.0, "def")));
-%! assert (isequal (decorationpart (sqr (infsupdec (-1.0, 1.0, "def"))){1}, decorationpart (infsupdec (0.0, 1.0, "def")){1}));
-%!test
-%! assert (isequal (sqr (infsupdec (-5.0, 3.0, "com")), infsupdec (0.0, 25.0, "com")));
-%! assert (isequal (decorationpart (sqr (infsupdec (-5.0, 3.0, "com"))){1}, decorationpart (infsupdec (0.0, 25.0, "com")){1}));
-%!test
-%! assert (isequal (sqr (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com")), infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")));
-%! assert (isequal (decorationpart (sqr (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com"))){1}, decorationpart (infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")){1}));
+%! assert (isequal (pown (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com"), 2), infsupdec (0.0, inf, "dac")));
+%! assert (isequal (decorationpart (pown (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com"), 2)){1}, decorationpart (infsupdec (0.0, inf, "dac")){1}));
+%! assert (isequal (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com") .^ 2, infsupdec (0.0, inf, "dac")));
+%! assert (isequal (decorationpart (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com") .^ 2){1}, decorationpart (infsupdec (0.0, inf, "dac")){1}));
+%! assert (isequal (power (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com"), 2), infsupdec (0.0, inf, "dac")));
+%! assert (isequal (decorationpart (power (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com"), 2)){1}, decorationpart (infsupdec (0.0, inf, "dac")){1}));
+%! assert (isequal (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com") ^ 2, infsupdec (0.0, inf, "dac")));
+%! assert (isequal (decorationpart (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com") ^ 2){1}, decorationpart (infsupdec (0.0, inf, "dac")){1}));
+%! assert (isequal (mpower (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com"), 2), infsupdec (0.0, inf, "dac")));
+%! assert (isequal (decorationpart (mpower (infsupdec (-1.797693134862315708e+308, -4.940656458412465442e-324, "com"), 2)){1}, decorationpart (infsupdec (0.0, inf, "dac")){1}));
+%!test
+%! assert (isequal (pown (infsupdec (-1.0, 1.0, "def"), 2), infsupdec (0.0, 1.0, "def")));
+%! assert (isequal (decorationpart (pown (infsupdec (-1.0, 1.0, "def"), 2)){1}, decorationpart (infsupdec (0.0, 1.0, "def")){1}));
+%! assert (isequal (infsupdec (-1.0, 1.0, "def") .^ 2, infsupdec (0.0, 1.0, "def")));
+%! assert (isequal (decorationpart (infsupdec (-1.0, 1.0, "def") .^ 2){1}, decorationpart (infsupdec (0.0, 1.0, "def")){1}));
+%! assert (isequal (power (infsupdec (-1.0, 1.0, "def"), 2), infsupdec (0.0, 1.0, "def")));
+%! assert (isequal (decorationpart (power (infsupdec (-1.0, 1.0, "def"), 2)){1}, decorationpart (infsupdec (0.0, 1.0, "def")){1}));
+%! assert (isequal (infsupdec (-1.0, 1.0, "def") ^ 2, infsupdec (0.0, 1.0, "def")));
+%! assert (isequal (decorationpart (infsupdec (-1.0, 1.0, "def") ^ 2){1}, decorationpart (infsupdec (0.0, 1.0, "def")){1}));
+%! assert (isequal (mpower (infsupdec (-1.0, 1.0, "def"), 2), infsupdec (0.0, 1.0, "def")));
+%! assert (isequal (decorationpart (mpower (infsupdec (-1.0, 1.0, "def"), 2)){1}, decorationpart (infsupdec (0.0, 1.0, "def")){1}));
+%!test
+%! assert (isequal (pown (infsupdec (-5.0, 3.0, "com"), 2), infsupdec (0.0, 25.0, "com")));
+%! assert (isequal (decorationpart (pown (infsupdec (-5.0, 3.0, "com"), 2)){1}, decorationpart (infsupdec (0.0, 25.0, "com")){1}));
+%! assert (isequal (infsupdec (-5.0, 3.0, "com") .^ 2, infsupdec (0.0, 25.0, "com")));
+%! assert (isequal (decorationpart (infsupdec (-5.0, 3.0, "com") .^ 2){1}, decorationpart (infsupdec (0.0, 25.0, "com")){1}));
+%! assert (isequal (power (infsupdec (-5.0, 3.0, "com"), 2), infsupdec (0.0, 25.0, "com")));
+%! assert (isequal (decorationpart (power (infsupdec (-5.0, 3.0, "com"), 2)){1}, decorationpart (infsupdec (0.0, 25.0, "com")){1}));
+%! assert (isequal (infsupdec (-5.0, 3.0, "com") ^ 2, infsupdec (0.0, 25.0, "com")));
+%! assert (isequal (decorationpart (infsupdec (-5.0, 3.0, "com") ^ 2){1}, decorationpart (infsupdec (0.0, 25.0, "com")){1}));
+%! assert (isequal (mpower (infsupdec (-5.0, 3.0, "com"), 2), infsupdec (0.0, 25.0, "com")));
+%! assert (isequal (decorationpart (mpower (infsupdec (-5.0, 3.0, "com"), 2)){1}, decorationpart (infsupdec (0.0, 25.0, "com")){1}));
+%!test
+%! assert (isequal (pown (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com"), 2), infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")));
+%! assert (isequal (decorationpart (pown (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com"), 2)){1}, decorationpart (infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")){1}));
+%! assert (isequal (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com") .^ 2, infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")));
+%! assert (isequal (decorationpart (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com") .^ 2){1}, decorationpart (infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")){1}));
+%! assert (isequal (power (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com"), 2), infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")));
+%! assert (isequal (decorationpart (power (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com"), 2)){1}, decorationpart (infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")){1}));
+%! assert (isequal (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com") ^ 2, infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")));
+%! assert (isequal (decorationpart (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com") ^ 2){1}, decorationpart (infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")){1}));
+%! assert (isequal (mpower (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com"), 2), infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")));
+%! assert (isequal (decorationpart (mpower (infsupdec (1.000000000000000056e-01, 1.000000000000000056e-01, "com"), 2)){1}, decorationpart (infsupdec (1.000000000000000021e-02, 1.000000000000000194e-02, "com")){1}));
 
 ## minimal_sqrt_test
 
diff --git a/inst/test/libieeep1788_tests_mul_rev.tst b/inst/test/libieeep1788_tests_mul_rev.tst
index 9e088e7..b07e3e9 100644
--- a/inst/test/libieeep1788_tests_mul_rev.tst
+++ b/inst/test/libieeep1788_tests_mul_rev.tst
@@ -1,9 +1,9 @@
 ## DO NOT EDIT!  Generated automatically from test/libieeep1788_tests_mul_rev.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-## Copyright 2015 Oliver Heimlich
+## Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original author: Marco Nehmeier (unit tests in libieeep1788,
 ##                  original license: Apache License 2.0)
diff --git a/inst/test/libieeep1788_tests_num.tst b/inst/test/libieeep1788_tests_num.tst
index afffd91..42f5e66 100644
--- a/inst/test/libieeep1788_tests_num.tst
+++ b/inst/test/libieeep1788_tests_num.tst
@@ -1,9 +1,9 @@
 ## DO NOT EDIT!  Generated automatically from test/libieeep1788_tests_num.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-## Copyright 2015 Oliver Heimlich
+## Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original author: Marco Nehmeier (unit tests in libieeep1788,
 ##                  original license: Apache License 2.0)
diff --git a/inst/test/libieeep1788_tests_overlap.tst b/inst/test/libieeep1788_tests_overlap.tst
index 7ecd046..ae3c636 100644
--- a/inst/test/libieeep1788_tests_overlap.tst
+++ b/inst/test/libieeep1788_tests_overlap.tst
@@ -1,9 +1,9 @@
 ## DO NOT EDIT!  Generated automatically from test/libieeep1788_tests_overlap.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-## Copyright 2015 Oliver Heimlich
+## Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original author: Marco Nehmeier (unit tests in libieeep1788,
 ##                  original license: Apache License 2.0)
diff --git a/inst/test/libieeep1788_tests_rec_bool.tst b/inst/test/libieeep1788_tests_rec_bool.tst
index 1f5fc99..d526242 100644
--- a/inst/test/libieeep1788_tests_rec_bool.tst
+++ b/inst/test/libieeep1788_tests_rec_bool.tst
@@ -1,9 +1,9 @@
 ## DO NOT EDIT!  Generated automatically from test/libieeep1788_tests_rec_bool.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-## Copyright 2015 Oliver Heimlich
+## Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original author: Marco Nehmeier (unit tests in libieeep1788,
 ##                  original license: Apache License 2.0)
diff --git a/inst/test/libieeep1788_tests_rev.tst b/inst/test/libieeep1788_tests_rev.tst
index 9224467..578033d 100644
--- a/inst/test/libieeep1788_tests_rev.tst
+++ b/inst/test/libieeep1788_tests_rev.tst
@@ -1,9 +1,9 @@
 ## DO NOT EDIT!  Generated automatically from test/libieeep1788_tests_rev.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-## Copyright 2015 Oliver Heimlich
+## Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original author: Marco Nehmeier (unit tests in libieeep1788,
 ##                  original license: Apache License 2.0)
diff --git a/inst/test/libieeep1788_tests_set.tst b/inst/test/libieeep1788_tests_set.tst
index b9912d4..ca4547b 100644
--- a/inst/test/libieeep1788_tests_set.tst
+++ b/inst/test/libieeep1788_tests_set.tst
@@ -1,9 +1,9 @@
 ## DO NOT EDIT!  Generated automatically from test/libieeep1788_tests_set.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-## Copyright 2015 Oliver Heimlich
+## Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original author: Marco Nehmeier (unit tests in libieeep1788,
 ##                  original license: Apache License 2.0)
diff --git a/inst/test/mpfi.tst b/inst/test/mpfi.tst
index 4c5fc0d..0c1fd08 100644
--- a/inst/test/mpfi.tst
+++ b/inst/test/mpfi.tst
@@ -1,12 +1,12 @@
 ## DO NOT EDIT!  Generated automatically from test/mpfi.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2009–2012  Spaces project, Inria Lorraine
-##                      and Salsa project, INRIA Rocquencourt,
-##                      and Arenaire project, Inria Rhone-Alpes, France
-##                      and Lab. ANO, USTL (Univ. of Lille),  France
-## Copyright 2015 Oliver Heimlich
+## Copyright 2009–2012 Spaces project, Inria Lorraine
+##                     and Salsa project, INRIA Rocquencourt,
+##                     and Arenaire project, Inria Rhone-Alpes, France
+##                     and Lab. ANO, USTL (Univ. of Lille),  France
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## Original authors: Philippe Theveny (Philippe.Theveny at ens-lyon.fr)
 ##                   and Nathalie Revol (Nathalie.Revol at ens-lyon.fr)
@@ -1637,28 +1637,94 @@ end_try_catch;
 
 %!# special values
 %!test
-%! assert (isequal (recip (infsup (-inf, -.25)), infsup (-4.0, 0.0)));
-%!test
-%! assert (isequal (recip (infsup (-inf, 0.0)), infsup (-inf, 0.0)));
-%!test
-%! assert (isequal (recip (infsup (-inf, +4.0)), infsup (-inf, inf)));
-%!test
-%! assert (isequal (recip (infsup (-inf, inf)), infsup (-inf, inf)));
-%!test
-%! assert (isequal (recip (infsup (0.0, 0.0)), infsup));
-%!test
-%! assert (isequal (recip (infsup (0.0, +2.0)), infsup (+.5, inf)));
-%!test
-%! assert (isequal (recip (infsup (0.0, inf)), infsup (0.0, inf)));
+%! assert (isequal (1 ./ infsup (-inf, -.25), infsup (-4.0, 0.0)));
+%! assert (isequal (rdivide (1, infsup (-inf, -.25)), infsup (-4.0, 0.0)));
+%! assert (isequal (pown (infsup (-inf, -.25), -1), infsup (-4.0, 0.0)));
+%! assert (isequal (infsup (-inf, -.25) .^ -1, infsup (-4.0, 0.0)));
+%! assert (isequal (power (infsup (-inf, -.25), -1), infsup (-4.0, 0.0)));
+%! assert (isequal (infsup (-inf, -.25) ^ -1, infsup (-4.0, 0.0)));
+%! assert (isequal (mpower (infsup (-inf, -.25), -1), infsup (-4.0, 0.0)));
+%!test
+%! assert (isequal (1 ./ infsup (-inf, 0.0), infsup (-inf, 0.0)));
+%! assert (isequal (rdivide (1, infsup (-inf, 0.0)), infsup (-inf, 0.0)));
+%! assert (isequal (pown (infsup (-inf, 0.0), -1), infsup (-inf, 0.0)));
+%! assert (isequal (infsup (-inf, 0.0) .^ -1, infsup (-inf, 0.0)));
+%! assert (isequal (power (infsup (-inf, 0.0), -1), infsup (-inf, 0.0)));
+%! assert (isequal (infsup (-inf, 0.0) ^ -1, infsup (-inf, 0.0)));
+%! assert (isequal (mpower (infsup (-inf, 0.0), -1), infsup (-inf, 0.0)));
+%!test
+%! assert (isequal (1 ./ infsup (-inf, +4.0), infsup (-inf, inf)));
+%! assert (isequal (rdivide (1, infsup (-inf, +4.0)), infsup (-inf, inf)));
+%! assert (isequal (pown (infsup (-inf, +4.0), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-inf, +4.0) .^ -1, infsup (-inf, inf)));
+%! assert (isequal (power (infsup (-inf, +4.0), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-inf, +4.0) ^ -1, infsup (-inf, inf)));
+%! assert (isequal (mpower (infsup (-inf, +4.0), -1), infsup (-inf, inf)));
+%!test
+%! assert (isequal (1 ./ infsup (-inf, inf), infsup (-inf, inf)));
+%! assert (isequal (rdivide (1, infsup (-inf, inf)), infsup (-inf, inf)));
+%! assert (isequal (pown (infsup (-inf, inf), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-inf, inf) .^ -1, infsup (-inf, inf)));
+%! assert (isequal (power (infsup (-inf, inf), -1), infsup (-inf, inf)));
+%! assert (isequal (infsup (-inf, inf) ^ -1, infsup (-inf, inf)));
+%! assert (isequal (mpower (infsup (-inf, inf), -1), infsup (-inf, inf)));
+%!test
+%! assert (isequal (1 ./ infsup (0.0, 0.0), infsup));
+%! assert (isequal (rdivide (1, infsup (0.0, 0.0)), infsup));
+%! assert (isequal (pown (infsup (0.0, 0.0), -1), infsup));
+%! assert (isequal (infsup (0.0, 0.0) .^ -1, infsup));
+%! assert (isequal (power (infsup (0.0, 0.0), -1), infsup));
+%! assert (isequal (infsup (0.0, 0.0) ^ -1, infsup));
+%! assert (isequal (mpower (infsup (0.0, 0.0), -1), infsup));
+%!test
+%! assert (isequal (1 ./ infsup (0.0, +2.0), infsup (+.5, inf)));
+%! assert (isequal (rdivide (1, infsup (0.0, +2.0)), infsup (+.5, inf)));
+%! assert (isequal (pown (infsup (0.0, +2.0), -1), infsup (+.5, inf)));
+%! assert (isequal (infsup (0.0, +2.0) .^ -1, infsup (+.5, inf)));
+%! assert (isequal (power (infsup (0.0, +2.0), -1), infsup (+.5, inf)));
+%! assert (isequal (infsup (0.0, +2.0) ^ -1, infsup (+.5, inf)));
+%! assert (isequal (mpower (infsup (0.0, +2.0), -1), infsup (+.5, inf)));
+%!test
+%! assert (isequal (1 ./ infsup (0.0, inf), infsup (0.0, inf)));
+%! assert (isequal (rdivide (1, infsup (0.0, inf)), infsup (0.0, inf)));
+%! assert (isequal (pown (infsup (0.0, inf), -1), infsup (0.0, inf)));
+%! assert (isequal (infsup (0.0, inf) .^ -1, infsup (0.0, inf)));
+%! assert (isequal (power (infsup (0.0, inf), -1), infsup (0.0, inf)));
+%! assert (isequal (infsup (0.0, inf) ^ -1, infsup (0.0, inf)));
+%! assert (isequal (mpower (infsup (0.0, inf), -1), infsup (0.0, inf)));
 %!# regular values
 %!test
-%! assert (isequal (recip (infsup (-8.0, -2.0)), infsup (-.5, -0.125)));
-%!test
-%! assert (isequal (recip (infsup (6.250000000000000000e-02, 6.329046211334584671e-01)), infsup (1.580016903983283205e+00, 1.600000000000000000e+01)));
-%!test
-%! assert (isequal (recip (infsup (2.026869327694375278e-01, +64.0)), infsup (0.015625, 4.933717168326436031e+00)));
-%!test
-%! assert (isequal (recip (infsup (-6.816974503452348788e-01, -1.950973066082791751e-01)), infsup (-5.125647387884359141e+00, -1.466926419474747556e+00)));
+%! assert (isequal (1 ./ infsup (-8.0, -2.0), infsup (-.5, -0.125)));
+%! assert (isequal (rdivide (1, infsup (-8.0, -2.0)), infsup (-.5, -0.125)));
+%! assert (isequal (pown (infsup (-8.0, -2.0), -1), infsup (-.5, -0.125)));
+%! assert (isequal (infsup (-8.0, -2.0) .^ -1, infsup (-.5, -0.125)));
+%! assert (isequal (power (infsup (-8.0, -2.0), -1), infsup (-.5, -0.125)));
+%! assert (isequal (infsup (-8.0, -2.0) ^ -1, infsup (-.5, -0.125)));
+%! assert (isequal (mpower (infsup (-8.0, -2.0), -1), infsup (-.5, -0.125)));
+%!test
+%! assert (isequal (1 ./ infsup (6.250000000000000000e-02, 6.329046211334584671e-01), infsup (1.580016903983283205e+00, 1.600000000000000000e+01)));
+%! assert (isequal (rdivide (1, infsup (6.250000000000000000e-02, 6.329046211334584671e-01)), infsup (1.580016903983283205e+00, 1.600000000000000000e+01)));
+%! assert (isequal (pown (infsup (6.250000000000000000e-02, 6.329046211334584671e-01), -1), infsup (1.580016903983283205e+00, 1.600000000000000000e+01)));
+%! assert (isequal (infsup (6.250000000000000000e-02, 6.329046211334584671e-01) .^ -1, infsup (1.580016903983283205e+00, 1.600000000000000000e+01)));
+%! assert (isequal (power (infsup (6.250000000000000000e-02, 6.329046211334584671e-01), -1), infsup (1.580016903983283205e+00, 1.600000000000000000e+01)));
+%! assert (isequal (infsup (6.250000000000000000e-02, 6.329046211334584671e-01) ^ -1, infsup (1.580016903983283205e+00, 1.600000000000000000e+01)));
+%! assert (isequal (mpower (infsup (6.250000000000000000e-02, 6.329046211334584671e-01), -1), infsup (1.580016903983283205e+00, 1.600000000000000000e+01)));
+%!test
+%! assert (isequal (1 ./ infsup (2.026869327694375278e-01, +64.0), infsup (0.015625, 4.933717168326436031e+00)));
+%! assert (isequal (rdivide (1, infsup (2.026869327694375278e-01, +64.0)), infsup (0.015625, 4.933717168326436031e+00)));
+%! assert (isequal (pown (infsup (2.026869327694375278e-01, +64.0), -1), infsup (0.015625, 4.933717168326436031e+00)));
+%! assert (isequal (infsup (2.026869327694375278e-01, +64.0) .^ -1, infsup (0.015625, 4.933717168326436031e+00)));
+%! assert (isequal (power (infsup (2.026869327694375278e-01, +64.0), -1), infsup (0.015625, 4.933717168326436031e+00)));
+%! assert (isequal (infsup (2.026869327694375278e-01, +64.0) ^ -1, infsup (0.015625, 4.933717168326436031e+00)));
+%! assert (isequal (mpower (infsup (2.026869327694375278e-01, +64.0), -1), infsup (0.015625, 4.933717168326436031e+00)));
+%!test
+%! assert (isequal (1 ./ infsup (-6.816974503452348788e-01, -1.950973066082791751e-01), infsup (-5.125647387884359141e+00, -1.466926419474747556e+00)));
+%! assert (isequal (rdivide (1, infsup (-6.816974503452348788e-01, -1.950973066082791751e-01)), infsup (-5.125647387884359141e+00, -1.466926419474747556e+00)));
+%! assert (isequal (pown (infsup (-6.816974503452348788e-01, -1.950973066082791751e-01), -1), infsup (-5.125647387884359141e+00, -1.466926419474747556e+00)));
+%! assert (isequal (infsup (-6.816974503452348788e-01, -1.950973066082791751e-01) .^ -1, infsup (-5.125647387884359141e+00, -1.466926419474747556e+00)));
+%! assert (isequal (power (infsup (-6.816974503452348788e-01, -1.950973066082791751e-01), -1), infsup (-5.125647387884359141e+00, -1.466926419474747556e+00)));
+%! assert (isequal (infsup (-6.816974503452348788e-01, -1.950973066082791751e-01) ^ -1, infsup (-5.125647387884359141e+00, -1.466926419474747556e+00)));
+%! assert (isequal (mpower (infsup (-6.816974503452348788e-01, -1.950973066082791751e-01), -1), infsup (-5.125647387884359141e+00, -1.466926419474747556e+00)));
 
 ## mpfi_is_neg
 
@@ -2951,28 +3017,72 @@ end_try_catch;
 
 %!# special values
 %!test
-%! assert (isequal (sqr (infsup (-inf, -7.0)), infsup (+49.0, inf)));
-%!test
-%! assert (isequal (sqr (infsup (-inf, 0.0)), infsup (0.0, inf)));
-%!test
-%! assert (isequal (sqr (infsup (-inf, +8.0)), infsup (0.0, inf)));
-%!test
-%! assert (isequal (sqr (infsup (-inf, inf)), infsup (0.0, inf)));
-%!test
-%! assert (isequal (sqr (infsup (0.0, 0.0)), infsup (0.0, 0.0)));
-%!test
-%! assert (isequal (sqr (infsup (0.0, +8.0)), infsup (0.0, +64.0)));
-%!test
-%! assert (isequal (sqr (infsup (0.0, inf)), infsup (0.0, inf)));
+%! assert (isequal (pown (infsup (-inf, -7.0), 2), infsup (+49.0, inf)));
+%! assert (isequal (infsup (-inf, -7.0) .^ 2, infsup (+49.0, inf)));
+%! assert (isequal (power (infsup (-inf, -7.0), 2), infsup (+49.0, inf)));
+%! assert (isequal (infsup (-inf, -7.0) ^ 2, infsup (+49.0, inf)));
+%! assert (isequal (mpower (infsup (-inf, -7.0), 2), infsup (+49.0, inf)));
+%!test
+%! assert (isequal (pown (infsup (-inf, 0.0), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (-inf, 0.0) .^ 2, infsup (0.0, inf)));
+%! assert (isequal (power (infsup (-inf, 0.0), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (-inf, 0.0) ^ 2, infsup (0.0, inf)));
+%! assert (isequal (mpower (infsup (-inf, 0.0), 2), infsup (0.0, inf)));
+%!test
+%! assert (isequal (pown (infsup (-inf, +8.0), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (-inf, +8.0) .^ 2, infsup (0.0, inf)));
+%! assert (isequal (power (infsup (-inf, +8.0), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (-inf, +8.0) ^ 2, infsup (0.0, inf)));
+%! assert (isequal (mpower (infsup (-inf, +8.0), 2), infsup (0.0, inf)));
+%!test
+%! assert (isequal (pown (infsup (-inf, inf), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (-inf, inf) .^ 2, infsup (0.0, inf)));
+%! assert (isequal (power (infsup (-inf, inf), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (-inf, inf) ^ 2, infsup (0.0, inf)));
+%! assert (isequal (mpower (infsup (-inf, inf), 2), infsup (0.0, inf)));
+%!test
+%! assert (isequal (pown (infsup (0.0, 0.0), 2), infsup (0.0, 0.0)));
+%! assert (isequal (infsup (0.0, 0.0) .^ 2, infsup (0.0, 0.0)));
+%! assert (isequal (power (infsup (0.0, 0.0), 2), infsup (0.0, 0.0)));
+%! assert (isequal (infsup (0.0, 0.0) ^ 2, infsup (0.0, 0.0)));
+%! assert (isequal (mpower (infsup (0.0, 0.0), 2), infsup (0.0, 0.0)));
+%!test
+%! assert (isequal (pown (infsup (0.0, +8.0), 2), infsup (0.0, +64.0)));
+%! assert (isequal (infsup (0.0, +8.0) .^ 2, infsup (0.0, +64.0)));
+%! assert (isequal (power (infsup (0.0, +8.0), 2), infsup (0.0, +64.0)));
+%! assert (isequal (infsup (0.0, +8.0) ^ 2, infsup (0.0, +64.0)));
+%! assert (isequal (mpower (infsup (0.0, +8.0), 2), infsup (0.0, +64.0)));
+%!test
+%! assert (isequal (pown (infsup (0.0, inf), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (0.0, inf) .^ 2, infsup (0.0, inf)));
+%! assert (isequal (power (infsup (0.0, inf), 2), infsup (0.0, inf)));
+%! assert (isequal (infsup (0.0, inf) ^ 2, infsup (0.0, inf)));
+%! assert (isequal (mpower (infsup (0.0, inf), 2), infsup (0.0, inf)));
 %!# regular values
 %!test
-%! assert (isequal (sqr (infsup (5.242813527584075928e-01, 1.009848281860351562e+03)), infsup (2.748709368501858208e-01, 1.019793552376304055e+06)));
-%!test
-%! assert (isequal (sqr (infsup (1.020801660558309578e+02, 1.193046000000000000e+06)), infsup (1.042036030198602202e+04, 1.423358758116000000e+12)));
-%!test
-%! assert (isequal (sqr (infsup (-1.392367054308168983e+00, 1.000000000000000000e+00)), infsup (0.0, 1.938686013922807705e+00)));
-%!test
-%! assert (isequal (sqr (infsup (1.418084280671316311e+00, 2.688493217609218444e+00)), infsup (2.010963027087084409e+00, 7.227995781130768904e+00)));
+%! assert (isequal (pown (infsup (5.242813527584075928e-01, 1.009848281860351562e+03), 2), infsup (2.748709368501858208e-01, 1.019793552376304055e+06)));
+%! assert (isequal (infsup (5.242813527584075928e-01, 1.009848281860351562e+03) .^ 2, infsup (2.748709368501858208e-01, 1.019793552376304055e+06)));
+%! assert (isequal (power (infsup (5.242813527584075928e-01, 1.009848281860351562e+03), 2), infsup (2.748709368501858208e-01, 1.019793552376304055e+06)));
+%! assert (isequal (infsup (5.242813527584075928e-01, 1.009848281860351562e+03) ^ 2, infsup (2.748709368501858208e-01, 1.019793552376304055e+06)));
+%! assert (isequal (mpower (infsup (5.242813527584075928e-01, 1.009848281860351562e+03), 2), infsup (2.748709368501858208e-01, 1.019793552376304055e+06)));
+%!test
+%! assert (isequal (pown (infsup (1.020801660558309578e+02, 1.193046000000000000e+06), 2), infsup (1.042036030198602202e+04, 1.423358758116000000e+12)));
+%! assert (isequal (infsup (1.020801660558309578e+02, 1.193046000000000000e+06) .^ 2, infsup (1.042036030198602202e+04, 1.423358758116000000e+12)));
+%! assert (isequal (power (infsup (1.020801660558309578e+02, 1.193046000000000000e+06), 2), infsup (1.042036030198602202e+04, 1.423358758116000000e+12)));
+%! assert (isequal (infsup (1.020801660558309578e+02, 1.193046000000000000e+06) ^ 2, infsup (1.042036030198602202e+04, 1.423358758116000000e+12)));
+%! assert (isequal (mpower (infsup (1.020801660558309578e+02, 1.193046000000000000e+06), 2), infsup (1.042036030198602202e+04, 1.423358758116000000e+12)));
+%!test
+%! assert (isequal (pown (infsup (-1.392367054308168983e+00, 1.000000000000000000e+00), 2), infsup (0.0, 1.938686013922807705e+00)));
+%! assert (isequal (infsup (-1.392367054308168983e+00, 1.000000000000000000e+00) .^ 2, infsup (0.0, 1.938686013922807705e+00)));
+%! assert (isequal (power (infsup (-1.392367054308168983e+00, 1.000000000000000000e+00), 2), infsup (0.0, 1.938686013922807705e+00)));
+%! assert (isequal (infsup (-1.392367054308168983e+00, 1.000000000000000000e+00) ^ 2, infsup (0.0, 1.938686013922807705e+00)));
+%! assert (isequal (mpower (infsup (-1.392367054308168983e+00, 1.000000000000000000e+00), 2), infsup (0.0, 1.938686013922807705e+00)));
+%!test
+%! assert (isequal (pown (infsup (1.418084280671316311e+00, 2.688493217609218444e+00), 2), infsup (2.010963027087084409e+00, 7.227995781130768904e+00)));
+%! assert (isequal (infsup (1.418084280671316311e+00, 2.688493217609218444e+00) .^ 2, infsup (2.010963027087084409e+00, 7.227995781130768904e+00)));
+%! assert (isequal (power (infsup (1.418084280671316311e+00, 2.688493217609218444e+00), 2), infsup (2.010963027087084409e+00, 7.227995781130768904e+00)));
+%! assert (isequal (infsup (1.418084280671316311e+00, 2.688493217609218444e+00) ^ 2, infsup (2.010963027087084409e+00, 7.227995781130768904e+00)));
+%! assert (isequal (mpower (infsup (1.418084280671316311e+00, 2.688493217609218444e+00), 2), infsup (2.010963027087084409e+00, 7.227995781130768904e+00)));
 
 ## mpfi_sqrt
 
diff --git a/inst/test/pow_rev.tst b/inst/test/pow_rev.tst
index 03f629c..802ae40 100644
--- a/inst/test/pow_rev.tst
+++ b/inst/test/pow_rev.tst
@@ -1,8 +1,8 @@
 ## DO NOT EDIT!  Generated automatically from test/pow_rev.itl
 ## by the Interval Testing Framework for IEEE 1788.
-## https://github.com/nehmeier/ITF1788/tree/2a470183a9e0f89ca0473055147b340a7a715b8c
+## https://github.com/nehmeier/ITF1788/tree/635bff73cc64ff8aab0ff2031ee8a53980be0115
 ##
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ## 
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
diff --git a/octave-interval.metainfo.xml b/octave-interval.metainfo.xml
new file mode 100644
index 0000000..43fef70
--- /dev/null
+++ b/octave-interval.metainfo.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2016 Oliver Heimlich
+Copyright 2016 Rodéric Moitié
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without any warranty.
+-->
+<component type="addon">
+	<id>octave-interval</id>
+	<extends>www.octave.org-octave.desktop</extends>
+	<name>Interval</name>
+	<summary>Real-valued interval arithmetic</summary>
+	<summary xml:lang="de">Reellwertige Intervallarithmetik</summary>
+	<summary xml:lang="fr">Arithmétique d'intervalles à valeurs réelles</summary>
+	<description>
+		<p>The interval package for real-valued interval arithmetic allows one to evaluate functions over subsets of their domain.  All results are verified, because interval computations automatically keep track of any errors.</p>
+		<p>These concepts can be used to handle uncertainties, estimate arithmetic errors and produce reliable results.  Also it can be applied to computer-assisted proofs, constraint programming, and verified computing.</p>
+		<p>The implementation is based on interval boundaries represented by binary64 numbers and is conforming to IEEE Std 1788-2015, IEEE standard for interval arithmetic.</p>
+	</description>
+	<description xml:lang="de">
+		<p>Das Intervall-Paket für rellwertige Intervallarithmetik kann Funktionen über Teilmengen ihres Definitionsbereichs auszuwerten.  Alle Ergebnisse werden durch Rechnung mit Intervallschranken nachgewiesen, wobei sämtliche Fehler automatisch mitgeführt werden.</p>
+		<p>Mit diesen Konzepten lassen sich ungewisse Messwerte behandeln, arithmetische Fehler abschätzen und zuverlässige Ergebnisse erzeugen.  Es kann auch für rechnergestützte Beweise, Constraintprogrammierung oder verifiziertes Rechnen angewandt werden.</p>
+		<p>Die Intervallschranken werden im Zahlenformat binary64 geführt und die Umsetzung ist standardkonform zu IEEE Std 1788-2015, dem IEEE-Standard für Intervallarithmetik.</p>
+	</description>
+	<description xml:lang="fr">
+		<p>Le paquet arithmétique d'intervalles à valeurs réelles permet d'évaluer des fonctions sur des sous-ensembles de leurs domaines.  Tous les résultats sont garantis car les calculs par intervalles permettent un suivi automatique des erreurs.</p>
+		<p>Ces concepts peuvent être utilisés pour prendre en compte les incertitudes, estimer les erreurs arithmétiques, et générer des résultats fiables.  Ils peuvent également être appliqués à des preuves assistées par ordinateur, à la programmation par contraintes et à des calculs garantis.</p>
+		<p>Cette implantation est basée sur des bornes d'intervalles sous forme de nombres réels 64 bits et se conforme au standard IEEE 1788-2015, standard IEEE pour l'arithmétique d'intervalles.</p>
+	</description>
+	<keywords>
+		<keyword>interval arithmetic</keyword>
+		<keyword>interval analysis</keyword>
+		<keyword>interval computation</keyword>
+		<keyword>parameter estimation</keyword>
+		<keyword>rounding error</keyword>
+		<keyword>measurement error</keyword>
+		<keyword>numerical error</keyword>
+		<keyword>scientific computing</keyword>
+		<keyword>result verification</keyword>
+		<keyword>verified result</keyword>
+		<keyword>set arithmetic</keyword>
+		<keyword>finite precision</keyword>
+		<keyword>range</keyword>
+		<keyword>interval</keyword>
+		<keyword>tolerance</keyword>
+		<keyword>uncertainty</keyword>
+		<keyword>preimage</keyword>
+		<keyword>constraint</keyword>
+		<keyword>enclosure</keyword>
+		<keyword>bisection</keyword>
+	</keywords>
+	<url type="homepage">http://octave.sourceforge.net/interval/</url>
+	<url type="bugtracker">https://savannah.gnu.org/bugs/?group=octave</url>
+	<metadata_license>FSFAP</metadata_license>
+	<project_license>GPL-3.0+</project_license>
+	<developer_name>Octave-Forge Community</developer_name>
+	<update_contact>octave-maintainers at gnu.org</update_contact>
+</component>
diff --git a/src/Makefile b/src/Makefile
index 04b3880..071d1d7 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,6 +1,6 @@
 SHELL          = /bin/sh
 
-## Copyright 2015 Oliver Heimlich
+## Copyright 2015-2016 Oliver Heimlich
 ##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
@@ -18,6 +18,7 @@ SHELL          = /bin/sh
 OBJ            = mpfr_function_d.oct \
                  mpfr_linspace_d.oct \
                  mpfr_matrix_mul_d.oct \
+                 mpfr_matrix_sqr_d.oct \
                  mpfr_to_string_d.oct \
                  mpfr_vector_sum_d.oct \
                  mpfr_vector_dot_d.oct \
@@ -30,7 +31,7 @@ CFLAG_OPENMP   =$(findstring -fopenmp,$(shell $(MKOCTFILE) -p XTRA_CFLAGS))
 all: $(OBJ)
 
 ## GNU MPFR api oct-files
-mpfr_matrix_mul_d.oct: mpfr_%.oct: mpfr_%.cc mpfr_commons.cc
+mpfr_matrix_mul_d.oct mpfr_matrix_sqr_d.oct : mpfr_%.oct: mpfr_%.cc mpfr_commons.cc
 	$(MKOCTFILE)  -o $@ $(LDFLAGS_MPFR) $(CFLAG_OPENMP) $<
 mpfr_%.oct: mpfr_%.cc mpfr_commons.cc
 	$(MKOCTFILE)  -o $@ $(LDFLAGS_MPFR)  $<
diff --git a/src/__setround__.cc b/src/__setround__.cc
index f5142ce..6bee08e 100644
--- a/src/__setround__.cc
+++ b/src/__setround__.cc
@@ -1,8 +1,8 @@
 /*
   Copyright 2015 Kai T. Ohlhus (Original version for C++11)
-  Copyright 2015 Oliver Heimlich (Compatibility with C99 and different parameter
-                                  semantics for compatibility with the Octave
-                                  fenv package)
+  Copyright 2015-2016 Oliver Heimlich (Compatibility with C99 and different
+                                       parameter semantics for compatibility
+                                       with the Octave fenv package)
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
diff --git a/src/mpfr_commons.cc b/src/mpfr_commons.cc
index 0d30728..95f2d17 100644
--- a/src/mpfr_commons.cc
+++ b/src/mpfr_commons.cc
@@ -1,5 +1,5 @@
 /*
-  Copyright 2015 Oliver Heimlich
+  Copyright 2015-2016 Oliver Heimlich
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -37,3 +37,113 @@ mpfr_rnd_t parse_rounding_mode (const double octave_rounding_direction)
   
   return mp_rnd;
 }
+
+void exact_interval_dot_product (
+  mpfr_t accu_l, mpfr_t accu_u,    // Add result into the accu
+  const MArray <double> vector_xl, // Lower boundary of first parameter
+  const MArray <double> vector_xu, // Upper boundary of first parameter
+  const MArray <double> vector_yl, // Lower boundary of second parameter
+  const MArray <double> vector_yu) // Upper boundary of second parameter
+{
+  if (! vector_xl.is_vector () ||
+      ! vector_xu.is_vector () ||
+      ! vector_yl.is_vector () ||
+      ! vector_yu.is_vector ())
+    {
+      error ("dot product can only be computed over vectors");
+      return;
+    }
+
+  const octave_idx_type n = vector_xl.numel ();
+  if (n != vector_xu.numel () ||
+      n != vector_yl.numel () ||
+      n != vector_yu.numel ())
+    {
+      error ("vectors must be of equal size");
+      return;
+    }
+
+  if (mpfr_cmp (accu_l, accu_u) > 0)
+    // Accu is already [Empty]
+    return;
+
+  mpfr_t mp_addend_l, mp_addend_u, mp_temp;
+  mpfr_init2 (mp_addend_l, 2 * BINARY64_PRECISION + 1);
+  mpfr_init2 (mp_addend_u, 2 * BINARY64_PRECISION + 1);
+  mpfr_init2 (mp_temp,     2 * BINARY64_PRECISION + 1);
+  for (octave_idx_type i = 0; i < n; i++)
+    {
+      const double xl = vector_xl.elem (i);
+      const double xu = vector_xu.elem (i);
+      const double yl = vector_yl.elem (i);
+      const double yu = vector_yu.elem (i);
+    
+      if ((xl == INFINITY && xu == -INFINITY)
+          ||
+          (yl == INFINITY && yu == -INFINITY))
+        {
+          // [Empty] × Anything = [Empty]
+          // [Empty] + Anything = [Empty]
+          mpfr_set_inf (accu_l, +1);
+          mpfr_set_inf (accu_u, -1);
+          break;
+        }
+
+      if (mpfr_inf_p (accu_l) != 0 && mpfr_inf_p (accu_u) != 0)
+        // [Entire] + Anything = [Entire]
+        continue;
+
+      if ((xl == 0.0 && xu == 0.0)
+          ||
+          (yl == 0.0 && yu == 0.0))
+        // [0] × Anything = [0]
+        continue;
+
+      if ((xl == -INFINITY && xu == INFINITY)
+          ||
+          (yl == -INFINITY && yu == INFINITY))
+        {
+          // [Entire] × Anything = [Entire]
+          mpfr_set_inf (accu_l, -1);
+          mpfr_set_inf (accu_u, +1);
+          continue;
+        }
+
+      // Both factors can be multiplied within 107 bits exactly!
+      mpfr_set_d (mp_addend_l, xl, MPFR_RNDZ);
+      mpfr_mul_d (mp_addend_l, mp_addend_l, yl, MPFR_RNDZ);
+      mpfr_set (mp_addend_u, mp_addend_l, MPFR_RNDZ);
+
+      // We have to compute the remaining 3 Products and determine min/max
+      if (yl != yu)
+        {
+          mpfr_set_d (mp_temp, xl, MPFR_RNDZ);
+          mpfr_mul_d (mp_temp, mp_temp, yu, MPFR_RNDZ);
+          mpfr_min (mp_addend_l, mp_addend_l, mp_temp, MPFR_RNDZ);
+          mpfr_max (mp_addend_u, mp_addend_u, mp_temp, MPFR_RNDZ);
+        }
+      if (xl != xu)
+        {
+          mpfr_set_d (mp_temp, xu, MPFR_RNDZ);
+          mpfr_mul_d (mp_temp, mp_temp, yl, MPFR_RNDZ);
+          mpfr_min (mp_addend_l, mp_addend_l, mp_temp, MPFR_RNDZ);
+          mpfr_max (mp_addend_u, mp_addend_u, mp_temp, MPFR_RNDZ);
+        }
+      if (xl != xu || yl != yu)
+        {
+          mpfr_set_d (mp_temp, xu, MPFR_RNDZ);
+          mpfr_mul_d (mp_temp, mp_temp, yu, MPFR_RNDZ);
+          mpfr_min (mp_addend_l, mp_addend_l, mp_temp, MPFR_RNDZ);
+          mpfr_max (mp_addend_u, mp_addend_u, mp_temp, MPFR_RNDZ);
+        }
+
+      // Compute sums
+      if (mpfr_add (accu_l, accu_l, mp_addend_l, MPFR_RNDZ) != 0 ||
+          mpfr_add (accu_u, accu_u, mp_addend_u, MPFR_RNDZ) != 0)
+        error ("failed to compute exact dot product");
+    }
+
+  mpfr_clear (mp_addend_l);
+  mpfr_clear (mp_addend_u);
+  mpfr_clear (mp_temp);
+}
diff --git a/src/mpfr_function_d.cc b/src/mpfr_function_d.cc
index 9ec356b..237374b 100644
--- a/src/mpfr_function_d.cc
+++ b/src/mpfr_function_d.cc
@@ -1,5 +1,5 @@
 /*
-  Copyright 2015 Oliver Heimlich
+  Copyright 2015-2016 Oliver Heimlich
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -169,6 +169,25 @@ void nthroot (
   mpfr_clear (mp);
 }
 
+// Evaluate factorial
+void factorial (
+  Matrix &result,          // Result
+  const uint64NDArray arg, // Operand
+  const mpfr_rnd_t rnd)
+{
+  mpfr_t mp;
+  mpfr_init2 (mp, BINARY64_PRECISION);
+
+  const octave_idx_type n = arg.numel ();
+  for (octave_idx_type i = 0; i < n; i ++)
+    {
+      mpfr_fac_ui (mp, arg.elem (i), rnd);
+      result.elem (i) = mpfr_get_d (mp, rnd);
+    }
+
+  mpfr_clear (mp);
+}
+
 DEFUN_DLD (mpfr_function_d, args, nargout, 
   "-*- texinfo -*-\n"
   "@documentencoding UTF-8\n"
@@ -192,6 +211,7 @@ DEFUN_DLD (mpfr_function_d, args, nargout,
   "@defunx mpfr_function_d ('erfc', @var{R}, @var{X})\n"
   "@defunx mpfr_function_d ('exp', @var{R}, @var{X})\n"
   "@defunx mpfr_function_d ('expm1', @var{R}, @var{X})\n"
+  "@defunx mpfr_function_d ('factorial', @var{R}, @var{N})\n"
   "@defunx mpfr_function_d ('fma', @var{R}, @var{X}, @var{Y}, @var{Z})\n"
   "@defunx mpfr_function_d ('gamma', @var{R}, @var{X})\n"
   "@defunx mpfr_function_d ('gammaln', @var{R}, @var{X})\n"
@@ -325,6 +345,13 @@ DEFUN_DLD (mpfr_function_d, args, nargout,
           evaluate (arg1, rnd, &mpfr_exp);
         else if (function == "expm1")
           evaluate (arg1, rnd, &mpfr_expm1);
+        else if (function == "factorial")
+          {
+            const uint64NDArray argInt = args (2).uint64_array_value ();
+            if (error_state)
+              return octave_value_list ();
+            factorial (arg1, argInt, rnd);
+          }
         else if (function == "gamma")
           evaluate (arg1, rnd, &mpfr_gamma);
         else if (function == "gammaln")
diff --git a/src/mpfr_linspace_d.cc b/src/mpfr_linspace_d.cc
index f472a4c..e756e53 100644
--- a/src/mpfr_linspace_d.cc
+++ b/src/mpfr_linspace_d.cc
@@ -1,5 +1,5 @@
 /*
-  Copyright 2015 Oliver Heimlich
+  Copyright 2015-2016 Oliver Heimlich
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
diff --git a/src/mpfr_matrix_mul_d.cc b/src/mpfr_matrix_mul_d.cc
index e4f3cef..a345406 100644
--- a/src/mpfr_matrix_mul_d.cc
+++ b/src/mpfr_matrix_mul_d.cc
@@ -1,5 +1,5 @@
 /*
-  Copyright 2015 Oliver Heimlich
+  Copyright 2015-2016 Oliver Heimlich
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -34,120 +34,54 @@ std::pair <Matrix, Matrix> interval_matrix_mul (
       l != matrix_yu.rows ())
     error ("mpfr_matrix_mul_d: "
            "Matrix dimensions must agree");
-  
+
   Matrix result_l (dim_vector (n, m));
   Matrix result_u (dim_vector (n, m));
+
+  // Instead of two nested loops (for row = 1 : n / for col = 1 : m), we use
+  // a single loop, which can be parallelized more easily.
   OCTAVE_OMP_PRAGMA (omp parallel for)
-  for (octave_idx_type i = 0; i < n; i++)
+  for (octave_idx_type i = 0; i < n * m; i++)
     {
-      // Using accumulators instead of the (less accurate) mpfr_sum function
-      // saves us some computation time, because we do not have to instantiate
-      // so many mpfr_t values.
       mpfr_t accu_l, accu_u;
       mpfr_init2 (accu_l, BINARY64_ACCU_PRECISION);
       mpfr_init2 (accu_u, BINARY64_ACCU_PRECISION);
-      mpfr_t mp_addend_l, mp_addend_u, mp_temp;
-      mpfr_init2 (mp_addend_l, 2 * BINARY64_PRECISION + 1);
-      mpfr_init2 (mp_addend_u, 2 * BINARY64_PRECISION + 1);
-      mpfr_init2 (mp_temp,     2 * BINARY64_PRECISION + 1);
-      for (octave_idx_type j = 0; j < m; j++)
-        {
-          mpfr_set_zero (accu_l, 0);
-          mpfr_set_zero (accu_u, 0);
-          for (octave_idx_type k = 0; k < l; k++)
-            {
-              double xl, xu, yl, yu;
-              OCTAVE_OMP_PRAGMA (omp critical)
-              {
-                // Access to shared memory is critical
-                xl = matrix_xl.elem (i, k);
-                xu = matrix_xu.elem (i, k);
-                yl = matrix_yl.elem (k, j);
-                yu = matrix_yu.elem (k, j);
-              }
-            
-              if ((xl == INFINITY && xu == -INFINITY)
-                  ||
-                  (yl == INFINITY && yu == -INFINITY))
-                {
-                  // [Empty] × Anything = [Empty]
-                  // [Empty] + Anything = [Empty]
-                  mpfr_set_inf (accu_l, +1);
-                  mpfr_set_inf (accu_u, -1);
-                  break;
-                }
-              if (mpfr_inf_p (accu_l) != 0 && mpfr_inf_p (accu_u) != 0)
-                // [Entire] + Anything = [Entire]
-                continue;
-              if ((xl == 0.0 && xu == 0.0)
-                  ||
-                  (yl == 0.0 && yu == 0.0))
-                // [0] × Anything = [0]
-                continue;
-              if ((xl == -INFINITY && xu == INFINITY)
-                  ||
-                  (yl == -INFINITY && yu == INFINITY))
-                {
-                  // [Entire] × Anything = [Entire]
-                  mpfr_set_inf (accu_l, -1);
-                  mpfr_set_inf (accu_u, +1);
-                  continue;
-                }
-              
-              // Both factors can be multiplied within 107 bits exactly!
-              mpfr_set_d (mp_addend_l, xl, MPFR_RNDZ);
-              mpfr_mul_d (mp_addend_l, mp_addend_l, yl, MPFR_RNDZ);
-              mpfr_set (mp_addend_u, mp_addend_l, MPFR_RNDZ);
-              
-              // We have to compute the remaining 3 Products and
-              // determine min/max
-              if (yl != yu)
-                {
-                  mpfr_set_d (mp_temp, xl, MPFR_RNDZ);
-                  mpfr_mul_d (mp_temp, mp_temp, yu, MPFR_RNDZ);
-                  mpfr_min (mp_addend_l, mp_addend_l, mp_temp, MPFR_RNDZ);
-                  mpfr_max (mp_addend_u, mp_addend_u, mp_temp, MPFR_RNDZ);
-                }
-              if (xl != xu)
-                {
-                  mpfr_set_d (mp_temp, xu, MPFR_RNDZ);
-                  mpfr_mul_d (mp_temp, mp_temp, yl, MPFR_RNDZ);
-                  mpfr_min (mp_addend_l, mp_addend_l, mp_temp, MPFR_RNDZ);
-                  mpfr_max (mp_addend_u, mp_addend_u, mp_temp, MPFR_RNDZ);
-                }
-              if (xl != xu || yl != yu)
-                {
-                  mpfr_set_d (mp_temp, xu, MPFR_RNDZ);
-                  mpfr_mul_d (mp_temp, mp_temp, yu, MPFR_RNDZ);
-                  mpfr_min (mp_addend_l, mp_addend_l, mp_temp, MPFR_RNDZ);
-                  mpfr_max (mp_addend_u, mp_addend_u, mp_temp, MPFR_RNDZ);
-                }
-              
-              // Compute sums
-              if (mpfr_add (accu_l, accu_l, mp_addend_l, MPFR_RNDZ) != 0 ||
-                  mpfr_add (accu_u, accu_u, mp_addend_u, MPFR_RNDZ) != 0)
-                {
-                  OCTAVE_OMP_PRAGMA (omp critical)
-                  error ("mpfr_matrix_mul_d: "
-                         "Failed to compute exact matrix multiplication");
-                }
-            }
-          const double accu_l_d = mpfr_get_d (accu_l, MPFR_RNDD);
-          const double accu_u_d = mpfr_get_d (accu_u, MPFR_RNDU);
-          OCTAVE_OMP_PRAGMA (omp critical)
-          {
-            // Access to shared memory is critical
-            result_l.elem (i, j) = accu_l_d;
-            result_u.elem (i, j) = accu_u_d;
-          }
-        }
-      mpfr_clear (mp_addend_l);
-      mpfr_clear (mp_addend_u);
-      mpfr_clear (mp_temp);
+      mpfr_set_zero (accu_l, 0);
+      mpfr_set_zero (accu_u, 0);
+
+      const octave_idx_type row = i % n;
+      const octave_idx_type col = i / n;
+
+      RowVector xl;
+      RowVector xu;
+      ColumnVector yl;
+      ColumnVector yu;
+      OCTAVE_OMP_PRAGMA (omp critical)
+      {
+        // Access to shared memory is critical
+        xl = matrix_xl.row (row);
+        xu = matrix_xu.row (row);
+        yl = matrix_yl.column (col);
+        yu = matrix_yu.column (col);
+      }
+
+      exact_interval_dot_product (accu_l, accu_u,
+                                  xl, xu,
+                                  yl, yu);
+
+      const double accu_l_d = mpfr_get_d (accu_l, MPFR_RNDD);
+      const double accu_u_d = mpfr_get_d (accu_u, MPFR_RNDU);
+      OCTAVE_OMP_PRAGMA (omp critical)
+      {
+        // Access to shared memory is critical
+        result_l.elem (row, col) = accu_l_d;
+        result_u.elem (row, col) = accu_u_d;
+      }
+
       mpfr_clear (accu_l);
       mpfr_clear (accu_u);
     }
-    
+
   std::pair <Matrix, Matrix> result (result_l, result_u);
 
   return result;
diff --git a/src/mpfr_matrix_sqr_d.cc b/src/mpfr_matrix_sqr_d.cc
new file mode 100644
index 0000000..44f9324
--- /dev/null
+++ b/src/mpfr_matrix_sqr_d.cc
@@ -0,0 +1,337 @@
+/*
+  Copyright 2016 Oliver Heimlich
+  
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 3 of the License, or
+  (at your option) any later version.
+  
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+  
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <octave/oct.h>
+#include <octave/oct-openmp.h>
+#include <mpfr.h>
+#include "mpfr_commons.cc"
+
+std::pair <Matrix, Matrix> interval_matrix_sqr (
+  const Matrix matrix_xl, const Matrix matrix_xu)
+{
+  const octave_idx_type n = matrix_xl.rows ();
+  if (n != matrix_xl.columns ())
+    {
+      error ("mpfr_matrix_sqr_d: Matrix must be square");
+      return std::pair <Matrix, Matrix> (Matrix (), Matrix ());
+    }
+
+  Matrix result_l (dim_vector (n, n));
+  Matrix result_u (dim_vector (n, n));
+
+  OCTAVE_OMP_PRAGMA (omp parallel for)
+  for (octave_idx_type i = 0; i < n; i++)
+    {
+      mpfr_t accu_l, accu_u;
+      mpfr_t mp_temp1, mp_temp2;
+      mpfr_init2 (accu_l, BINARY64_ACCU_PRECISION);
+      mpfr_init2 (accu_u, BINARY64_ACCU_PRECISION);
+      mpfr_init2 (mp_temp1, BINARY64_ACCU_PRECISION);
+      mpfr_init2 (mp_temp2, BINARY64_ACCU_PRECISION);
+
+      RowVector xl;
+      RowVector xu;
+      OCTAVE_OMP_PRAGMA (omp critical)
+      {
+        // Access to shared memory is critical
+        xl = matrix_xl.row (i);
+        xu = matrix_xu.row (i);
+      }
+      
+      for (octave_idx_type j = 0; j < n; j++)
+        {
+          mpfr_set_zero (accu_l, 0);
+          mpfr_set_zero (accu_u, 0);
+
+          ColumnVector yl;
+          ColumnVector yu;
+          OCTAVE_OMP_PRAGMA (omp critical)
+          {
+            // Access to shared memory is critical
+            yl = matrix_xl.column (j);
+            yu = matrix_xu.column (j);
+          }
+          
+          // Each entry of the result is defined as
+          //   result(i,j) = sum[k != i,j] x(i,k)*x(k,j)
+          //                    + x(i,j)*(x(i,i), x(j,j))          for i != j
+          // or
+          //   result(i,i) = sum[k != i] x(i,k)*x(k,i) 
+          //                    + x(i,i)^2
+          //
+          // We compute result(i,:) by matrix multiplication of x(i,:) with y,
+          // where y is a matrix made from x such that no entry of x
+          // participates in each entry of the final result more than once.
+
+          // For i != j
+          // Combine x(i,j)*x(i,i) and x(j,j)*x(i,j) into
+          //    x(i,j)*(x(i,i)+x(j,j)),
+          // where x(i,j) would appear twice and introduce dependency errors
+          if (i != j)
+            {
+              // Compute x(i,j)*(x(i,i)+x(j,j)) in the accumulator exactly
+              if ((xl.elem (i) == INFINITY && xu.elem (i) == -INFINITY) ||
+                  (xl.elem (j) == INFINITY && xu.elem (j) == -INFINITY) ||
+                  (yl.elem (j) == INFINITY && yu.elem (j) == -INFINITY))
+                {
+                  // [Empty] interval detected
+                  mpfr_set_inf (accu_l, +1);
+                  mpfr_set_inf (accu_u, -1);
+                }
+              else
+                {
+                  // Part 1
+                  // x(i,i) + x(j,j)
+                  mpfr_set_d (accu_l, xl.elem (i), MPFR_RNDD);
+                  mpfr_set_d (accu_u, xu.elem (i), MPFR_RNDU);
+                  mpfr_add_d (accu_l, accu_l, yl.elem (j), MPFR_RNDD);
+                  mpfr_add_d (accu_u, accu_u, yu.elem (j), MPFR_RNDU);
+                  
+                  // Part 2
+                  // Multiply x(i,j) into the accumulator
+                  if ((xl.elem (j) == 0.0 && xu.elem (j) == 0.0)
+                      ||
+                      (mpfr_zero_p (accu_l) && mpfr_zero_p (accu_u)))
+                    {
+                      // Multiplication with zero detected
+                      mpfr_set_zero (accu_l, 0);
+                      mpfr_set_zero (accu_u, 0);
+                    }
+                  else
+                    {
+                      if ((xl.elem (j) == -INFINITY && xu.elem (j) == INFINITY)
+                          ||
+                          (mpfr_inf_p (accu_l) && mpfr_inf_p (accu_u)))
+                        {
+                          // Multiplication with [Entire] detected
+                          mpfr_set_inf (accu_l, -1);
+                          mpfr_set_inf (accu_u, +1);
+                        }
+                      else
+                        {
+                          if (mpfr_sgn (accu_l) >= 0)
+                            {
+                              if (xl.elem (j) >= 0.0)
+                                {
+                                  // non-negative × non-negative
+                                  mpfr_mul_d (accu_l, accu_l, xl.elem (j),
+                                              MPFR_RNDD);
+                                  mpfr_mul_d (accu_u, accu_u, xu.elem (j),
+                                              MPFR_RNDU);
+                                }
+                              else if (xu.elem (j) <= 0.0)
+                                {
+                                  // non-negative × non-positive
+                                  mpfr_swap (accu_l, accu_u);
+                                  mpfr_mul_d (accu_l, accu_l, xl.elem (j),
+                                              MPFR_RNDD);
+                                  mpfr_mul_d (accu_u, accu_u, xu.elem (j),
+                                              MPFR_RNDU);
+                                }
+                              else
+                                {
+                                  // non-negative × inner-zero
+                                  mpfr_set (accu_l, accu_u, MPFR_RNDZ);
+                                  mpfr_mul_d (accu_l, accu_l, xl.elem (j),
+                                              MPFR_RNDD);
+                                  mpfr_mul_d (accu_u, accu_u, xu.elem (j),
+                                              MPFR_RNDU);
+                                }
+                            }
+                          else if (mpfr_sgn (accu_u) <= 0)
+                            {
+                              if (xl.elem (j) >= 0.0)
+                                {
+                                  // non-positive × non-negative
+                                  mpfr_mul_d (accu_l, accu_l, xu.elem (j),
+                                              MPFR_RNDD);
+                                  mpfr_mul_d (accu_u, accu_u, xl.elem (j),
+                                              MPFR_RNDU);
+                                }
+                              else if (xu.elem (j) <= 0.0)
+                                {
+                                  // non-positive × non-positive
+                                  mpfr_swap (accu_l, accu_u);
+                                  mpfr_mul_d (accu_l, accu_l, xu.elem (j),
+                                              MPFR_RNDD);
+                                  mpfr_mul_d (accu_u, accu_u, xl.elem (j),
+                                              MPFR_RNDU);
+                                }
+                              else
+                                {
+                                  // non-positive × inner-zero
+                                  mpfr_set (accu_u, accu_l, MPFR_RNDZ);
+                                  mpfr_mul_d (accu_l, accu_l, xu.elem (j),
+                                              MPFR_RNDD);
+                                  mpfr_mul_d (accu_u, accu_u, xl.elem (j),
+                                              MPFR_RNDU);
+                                }
+                            }
+                          else
+                            {
+                              if (xl.elem (j) >= 0.0)
+                                {
+                                  // inner-zero × non-negative
+                                  mpfr_mul_d (accu_l, accu_l, xu.elem (j),
+                                              MPFR_RNDD);
+                                  mpfr_mul_d (accu_u, accu_u, xu.elem (j),
+                                              MPFR_RNDU);
+                                }
+                              else if (xu.elem (j) <= 0.0)
+                                {
+                                  // inner-zero × non-positive
+                                  mpfr_mul_d (accu_l, accu_l, xl.elem (j),
+                                              MPFR_RNDD);
+                                  mpfr_mul_d (accu_u, accu_u, xl.elem (j),
+                                              MPFR_RNDU);
+                                }
+                              else
+                                {
+                                  // inner-zero × inner-zero
+
+                                  // Lower bound
+                                  mpfr_mul_d (mp_temp1, accu_l, xu.elem (j),
+                                              MPFR_RNDD);
+                                  mpfr_mul_d (mp_temp2, accu_u, xl.elem (j),
+                                              MPFR_RNDD);
+                                  mpfr_min (mp_temp1, mp_temp1, mp_temp2,
+                                            MPFR_RNDD);
+
+                                  mpfr_swap (accu_l, mp_temp1);
+
+                                  // Upper bound
+                                  mpfr_mul_d (mp_temp1, mp_temp1, xl.elem (j),
+                                              MPFR_RNDU);
+                                  mpfr_mul_d (mp_temp2, accu_u, xu.elem (j),
+                                              MPFR_RNDU);
+                                  mpfr_max (accu_u, mp_temp1, mp_temp2,
+                                            MPFR_RNDU);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+          
+          // For i == j
+          // Make sure that x(i,i)^2 can be computed error free as
+          //    x(i,i)*x(i,i)
+          if (i == j)
+            {
+              if (xl.elem (i) < 0.0 && xu.elem (i) > 0.0)
+                {
+                  yl.elem (i) = 0.0;
+                  yu.elem (i) = std::max (std::abs (xl.elem (i)),
+                                          std::abs (xu.elem (i)));
+                }
+              exact_interval_dot_product (accu_l, accu_u,
+                                          yl.extract_n (i, 1),
+                                          yu.extract_n (i, 1),
+                                          yl.extract_n (i, 1),
+                                          yu.extract_n (i, 1));
+            }
+
+          // Elements i and j have already been computed in the accumulator
+          // Add remaining products for k != i, j to the accumulator
+          yl.elem (i) = 0.0;
+          yu.elem (i) = 0.0;
+          yl.elem (j) = 0.0;
+          yu.elem (j) = 0.0;
+          exact_interval_dot_product (accu_l, accu_u,
+                                      xl, xu,
+                                      yl, yu);
+
+          const double accu_l_d = mpfr_get_d (accu_l, MPFR_RNDD);
+          const double accu_u_d = mpfr_get_d (accu_u, MPFR_RNDU);
+          OCTAVE_OMP_PRAGMA (omp critical)
+          {
+            // Access to shared memory is critical
+            result_l.elem (i, j) = accu_l_d;
+            result_u.elem (i, j) = accu_u_d;
+          }
+        }
+
+      mpfr_clear (accu_l);
+      mpfr_clear (accu_u);
+      mpfr_clear (mp_temp1);
+      mpfr_clear (mp_temp2);
+    }
+
+  std::pair <Matrix, Matrix> result (result_l, result_u);
+
+  return result;
+}
+
+DEFUN_DLD (mpfr_matrix_sqr_d, args, nargout, 
+  "-*- texinfo -*-\n"
+  "@documentencoding UTF-8\n"
+  "@deftypefun {[@var{L}, @var{U}] =} mpfr_matrix_sqr_d (@var{XL}, @var{XU})\n"
+  "\n"
+  "Compute the lower and upper boundary of the matrix square of "
+  "interval matrix [@var{XL}, @var{XU}]."
+  "\n\n"
+  "The result is guaranteed to be tight.  That is, the matrix square is "
+  "evaluated with (virtually) infinite precision and the exact result is "
+  "approximated with binary64 numbers using directed rounding."
+  "\n\n"
+  "Unlike @code{@var{X} * @var{X}} this function avoids the dependency "
+  "problem during computation and produces a better enclosure.  The algorithm "
+  "has been implemented after “Feasible algorithm for computing the square of "
+  "an interval matrix” in O. Kosheleva, V. Kreinovich, G. Mayer, and "
+  "H. T. Nguyen (2005): Computing the cube of an interval matrix is NP-hard. "
+  "In SAC '05: Proc. of the 2005 ACM Symposium on Applied Computing, "
+  "pages 1449–1453, 2005."
+  "\n\n"
+  "@example\n"
+  "@group\n"
+  "m = magic (3);\n"
+  "[l, u] = mpfr_matrix_sqr_d (m, m + 1)\n"
+  "  @result{} l = \n"
+  "     91   67   67\n"
+  "     67   91   67\n"
+  "     67   67   91\n"
+  "    u = \n"
+  "     124   100   100\n"
+  "     100   124   100\n"
+  "     100   100   124\n"
+  "@end group\n"
+  "@end example\n"
+  "@seealso{mpower}\n"
+  "@end deftypefun"
+  )
+{
+  // Check call syntax
+  int nargin = args.length ();
+  if (nargin != 2)
+    {
+      print_usage ();
+      return octave_value_list ();
+    }
+
+  Matrix matrix_xl = args (0).matrix_value ();
+  Matrix matrix_xu = args (1).matrix_value ();
+  if (error_state)
+    return octave_value_list ();
+  
+  std::pair <Matrix, Matrix> result_d = 
+    interval_matrix_sqr (matrix_xl, matrix_xu);
+  octave_value_list result;
+  result (0) = result_d.first;
+  result (1) = result_d.second;
+  
+  return result;
+}
diff --git a/src/mpfr_to_string_d.cc b/src/mpfr_to_string_d.cc
index 8cf7cad..5686108 100644
--- a/src/mpfr_to_string_d.cc
+++ b/src/mpfr_to_string_d.cc
@@ -1,5 +1,5 @@
 /*
-  Copyright 2015 Oliver Heimlich
+  Copyright 2015-2016 Oliver Heimlich
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
diff --git a/src/mpfr_vector_dot_d.cc b/src/mpfr_vector_dot_d.cc
index 26b1dfe..8a63921 100644
--- a/src/mpfr_vector_dot_d.cc
+++ b/src/mpfr_vector_dot_d.cc
@@ -1,5 +1,5 @@
 /*
-  Copyright 2015 Oliver Heimlich
+  Copyright 2015-2016 Oliver Heimlich
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -35,97 +35,23 @@ std::pair <double, double> interval_vector_dot (
       vector_yl = Matrix (vector_xl.dims (), vector_yl.elem (0));
       vector_yu = Matrix (vector_xl.dims (), vector_yu.elem (0));
     }
-    
-  const octave_idx_type n = vector_xl.numel ();
-  // Using accumulators instead of the (less accurate) mpfr_sum function saves
-  // us some computation time, because we do not have to instantiate so many
-  // mpfr_t values.
+
   mpfr_t accu_l, accu_u;
   mpfr_init2 (accu_l, BINARY64_ACCU_PRECISION);
   mpfr_init2 (accu_u, BINARY64_ACCU_PRECISION);
   mpfr_set_zero (accu_l, 0);
   mpfr_set_zero (accu_u, 0);
-  mpfr_t mp_addend_l, mp_addend_u, mp_temp;
-  mpfr_init2 (mp_addend_l, 2 * BINARY64_PRECISION + 1);
-  mpfr_init2 (mp_addend_u, 2 * BINARY64_PRECISION + 1);
-  mpfr_init2 (mp_temp,     2 * BINARY64_PRECISION + 1);
-  for (octave_idx_type i = 0; i < n; i++)
-    {
-      const double xl = vector_xl.elem (i);
-      const double xu = vector_xu.elem (i);
-      const double yl = vector_yl.elem (i);
-      const double yu = vector_yu.elem (i);
-    
-      if ((xl == INFINITY && xu == -INFINITY)
-          ||
-          (yl == INFINITY && yu == -INFINITY))
-        {
-          // [Empty] × Anything = [Empty]
-          // [Empty] + Anything = [Empty]
-          mpfr_set_inf (accu_l, +1);
-          mpfr_set_inf (accu_u, -1);
-          break;
-        }
-      if (mpfr_inf_p (accu_l) != 0 && mpfr_inf_p (accu_u) != 0)
-        // [Entire] + Anything = [Entire]
-        continue;
-      if ((xl == 0.0 && xu == 0.0)
-          ||
-          (yl == 0.0 && yu == 0.0))
-        // [0] × Anything = [0]
-        continue;
-      if ((xl == -INFINITY && xu == INFINITY)
-          ||
-          (yl == -INFINITY && yu == INFINITY))
-        {
-          // [Entire] × Anything = [Entire]
-          mpfr_set_inf (accu_l, -1);
-          mpfr_set_inf (accu_u, +1);
-          continue;
-        }
-      
-      // Both factors can be multiplied within 107 bits exactly!
-      mpfr_set_d (mp_addend_l, xl, MPFR_RNDZ);
-      mpfr_mul_d (mp_addend_l, mp_addend_l, yl, MPFR_RNDZ);
-      mpfr_set (mp_addend_u, mp_addend_l, MPFR_RNDZ);
-      
-      // We have to compute the remaining 3 Products and determine min/max
-      if (yl != yu)
-        {
-          mpfr_set_d (mp_temp, xl, MPFR_RNDZ);
-          mpfr_mul_d (mp_temp, mp_temp, yu, MPFR_RNDZ);
-          mpfr_min (mp_addend_l, mp_addend_l, mp_temp, MPFR_RNDZ);
-          mpfr_max (mp_addend_u, mp_addend_u, mp_temp, MPFR_RNDZ);
-        }
-      if (xl != xu)
-        {
-          mpfr_set_d (mp_temp, xu, MPFR_RNDZ);
-          mpfr_mul_d (mp_temp, mp_temp, yl, MPFR_RNDZ);
-          mpfr_min (mp_addend_l, mp_addend_l, mp_temp, MPFR_RNDZ);
-          mpfr_max (mp_addend_u, mp_addend_u, mp_temp, MPFR_RNDZ);
-        }
-      if (xl != xu || yl != yu)
-        {
-          mpfr_set_d (mp_temp, xu, MPFR_RNDZ);
-          mpfr_mul_d (mp_temp, mp_temp, yu, MPFR_RNDZ);
-          mpfr_min (mp_addend_l, mp_addend_l, mp_temp, MPFR_RNDZ);
-          mpfr_max (mp_addend_u, mp_addend_u, mp_temp, MPFR_RNDZ);
-        }
-      
-      // Compute sums
-      if (mpfr_add (accu_l, accu_l, mp_addend_l, MPFR_RNDZ) != 0 ||
-          mpfr_add (accu_u, accu_u, mp_addend_u, MPFR_RNDZ) != 0)
-        error ("mpfr_vector_dot_d: Failed to compute exact dot product");
-    }
+
+  exact_interval_dot_product (accu_l, accu_u,
+                              vector_xl, vector_xu,
+                              vector_yl, vector_yu);
+
   std::pair <double, double> result (mpfr_get_d (accu_l, MPFR_RNDD),
                                      mpfr_get_d (accu_u, MPFR_RNDU));
 
-  mpfr_clear (mp_addend_l);
-  mpfr_clear (mp_addend_u);
-  mpfr_clear (mp_temp);
   mpfr_clear (accu_l);
   mpfr_clear (accu_u);
-  
+
   return result;
 }
 
diff --git a/src/mpfr_vector_sum_d.cc b/src/mpfr_vector_sum_d.cc
index a305026..10da660 100644
--- a/src/mpfr_vector_sum_d.cc
+++ b/src/mpfr_vector_sum_d.cc
@@ -1,5 +1,5 @@
 /*
-  Copyright 2015 Oliver Heimlich
+  Copyright 2015-2016 Oliver Heimlich
   
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
diff --git a/test/abs_rev.itl b/test/abs_rev.itl
index 0197b88..0acec02 100644
--- a/test/abs_rev.itl
+++ b/test/abs_rev.itl
@@ -1,5 +1,5 @@
 /*
-Copyright 2015 Oliver Heimlich
+Copyright 2015-2016 Oliver Heimlich
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/test/atan2.itl b/test/atan2.itl
index 35f839c..866d590 100644
--- a/test/atan2.itl
+++ b/test/atan2.itl
@@ -1,5 +1,5 @@
 /*
-Copyright 2015 Oliver Heimlich
+Copyright 2015-2016 Oliver Heimlich
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/test/c-xsc.itl b/test/c-xsc.itl
index a515022..3630d64 100644
--- a/test/c-xsc.itl
+++ b/test/c-xsc.itl
@@ -3,7 +3,7 @@ Copyright 1990-2000 Institut fuer Angewandte Mathematik,
                     Universitaet Karlsruhe, Germany
           2000-2014 Wiss. Rechnen/Softwaretechnologie
                     Universitaet Wuppertal, Germany   
-Copyright 2015 Oliver Heimlich
+Copyright 2015-2016 Oliver Heimlich
 
 Origin: unit tests in C-XSC version 2.5.4, Original license: LGPLv2+
 Converted into portable ITL format by Oliver Heimlich.
diff --git a/test/fi_lib.itl b/test/fi_lib.itl
index cfec287..93b5e6c 100644
--- a/test/fi_lib.itl
+++ b/test/fi_lib.itl
@@ -6,7 +6,7 @@ Copyright 1997-2000 Institut fuer Wissenschaftliches Rechnen
                     Universitaet Karlsruhe, Germany
           2000-2005 Wiss. Rechnen/Softwaretechnologie
                     Universitaet Wuppertal, Germany
-Copyright 2015 Oliver Heimlich
+Copyright 2015-2016 Oliver Heimlich
 
 Original authors: Werner Hofschuster and Walter Kraemer
                   (unit tests in FI_LIB version 1.2, original license: LGPLv2+)
diff --git a/test/libieeep1788_tests_bool.itl b/test/libieeep1788_tests_bool.itl
index afe59bd..1169285 100644
--- a/test/libieeep1788_tests_bool.itl
+++ b/test/libieeep1788_tests_bool.itl
@@ -1,6 +1,6 @@
 /*
-Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-Copyright 2015 Oliver Heimlich
+Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+Copyright 2015-2016 Oliver Heimlich
 
 Original author: Marco Nehmeier (unit tests in libieeep1788,
                  original license: Apache License 2.0)
diff --git a/test/libieeep1788_tests_cancel.itl b/test/libieeep1788_tests_cancel.itl
index 53c393d..cd62ea2 100644
--- a/test/libieeep1788_tests_cancel.itl
+++ b/test/libieeep1788_tests_cancel.itl
@@ -1,6 +1,6 @@
 /*
-Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-Copyright 2015 Oliver Heimlich
+Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+Copyright 2015-2016 Oliver Heimlich
 
 Original author: Marco Nehmeier (unit tests in libieeep1788,
                  original license: Apache License 2.0)
diff --git a/test/libieeep1788_tests_elem.itl b/test/libieeep1788_tests_elem.itl
index 053bf5c..962b7bc 100644
--- a/test/libieeep1788_tests_elem.itl
+++ b/test/libieeep1788_tests_elem.itl
@@ -1,6 +1,6 @@
 /*
-Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-Copyright 2015 Oliver Heimlich
+Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+Copyright 2015-2016 Oliver Heimlich
 
 Original author: Marco Nehmeier (unit tests in libieeep1788,
                  original license: Apache License 2.0)
diff --git a/test/libieeep1788_tests_mul_rev.itl b/test/libieeep1788_tests_mul_rev.itl
index 09ef292..b0efce3 100644
--- a/test/libieeep1788_tests_mul_rev.itl
+++ b/test/libieeep1788_tests_mul_rev.itl
@@ -1,6 +1,6 @@
 /*
-Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-Copyright 2015 Oliver Heimlich
+Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+Copyright 2015-2016 Oliver Heimlich
 
 Original author: Marco Nehmeier (unit tests in libieeep1788,
                  original license: Apache License 2.0)
diff --git a/test/libieeep1788_tests_num.itl b/test/libieeep1788_tests_num.itl
index 6c4b344..628df79 100644
--- a/test/libieeep1788_tests_num.itl
+++ b/test/libieeep1788_tests_num.itl
@@ -1,6 +1,6 @@
 /*
-Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-Copyright 2015 Oliver Heimlich
+Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+Copyright 2015-2016 Oliver Heimlich
 
 Original author: Marco Nehmeier (unit tests in libieeep1788,
                  original license: Apache License 2.0)
diff --git a/test/libieeep1788_tests_overlap.itl b/test/libieeep1788_tests_overlap.itl
index c08f5d2..a24187c 100644
--- a/test/libieeep1788_tests_overlap.itl
+++ b/test/libieeep1788_tests_overlap.itl
@@ -1,6 +1,6 @@
 /*
-Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-Copyright 2015 Oliver Heimlich
+Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+Copyright 2015-2016 Oliver Heimlich
 
 Original author: Marco Nehmeier (unit tests in libieeep1788,
                  original license: Apache License 2.0)
diff --git a/test/libieeep1788_tests_rec_bool.itl b/test/libieeep1788_tests_rec_bool.itl
index 14dbc5e..2964653 100644
--- a/test/libieeep1788_tests_rec_bool.itl
+++ b/test/libieeep1788_tests_rec_bool.itl
@@ -1,6 +1,6 @@
 /*
-Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-Copyright 2015 Oliver Heimlich
+Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+Copyright 2015-2016 Oliver Heimlich
 
 Original author: Marco Nehmeier (unit tests in libieeep1788,
                  original license: Apache License 2.0)
diff --git a/test/libieeep1788_tests_rev.itl b/test/libieeep1788_tests_rev.itl
index f09e6c6..7cf0946 100644
--- a/test/libieeep1788_tests_rev.itl
+++ b/test/libieeep1788_tests_rev.itl
@@ -1,6 +1,6 @@
 /*
-Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-Copyright 2015 Oliver Heimlich
+Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+Copyright 2015-2016 Oliver Heimlich
 
 Original author: Marco Nehmeier (unit tests in libieeep1788,
                  original license: Apache License 2.0)
diff --git a/test/libieeep1788_tests_set.itl b/test/libieeep1788_tests_set.itl
index c049fa4..15e8fc3 100644
--- a/test/libieeep1788_tests_set.itl
+++ b/test/libieeep1788_tests_set.itl
@@ -1,6 +1,6 @@
 /*
-Copyright 2013 - 2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
-Copyright 2015 Oliver Heimlich
+Copyright 2013-2015 Marco Nehmeier (nehmeier at informatik.uni-wuerzburg.de)
+Copyright 2015-2016 Oliver Heimlich
 
 Original author: Marco Nehmeier (unit tests in libieeep1788,
                  original license: Apache License 2.0)
diff --git a/test/mpfi.itl b/test/mpfi.itl
index 63e18e1..41ea302 100644
--- a/test/mpfi.itl
+++ b/test/mpfi.itl
@@ -1,9 +1,9 @@
 /*
-Copyright 2009–2012  Spaces project, Inria Lorraine
-                     and Salsa project, INRIA Rocquencourt,
-                     and Arenaire project, Inria Rhone-Alpes, France
-                     and Lab. ANO, USTL (Univ. of Lille),  France
-Copyright 2015 Oliver Heimlich
+Copyright 2009–2012 Spaces project, Inria Lorraine
+                    and Salsa project, INRIA Rocquencourt,
+                    and Arenaire project, Inria Rhone-Alpes, France
+                    and Lab. ANO, USTL (Univ. of Lille),  France
+Copyright 2015-2016 Oliver Heimlich
 
 Original authors: Philippe Theveny (Philippe.Theveny at ens-lyon.fr)
                   and Nathalie Revol (Nathalie.Revol at ens-lyon.fr)
diff --git a/test/pow_rev.itl b/test/pow_rev.itl
index d719620..598842b 100644
--- a/test/pow_rev.itl
+++ b/test/pow_rev.itl
@@ -1,5 +1,5 @@
 /*
-Copyright 2015 Oliver Heimlich
+Copyright 2015-2016 Oliver Heimlich
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by

-- 
Alioth's /home/groups/pkg-octave/bin/git-commit-notice on /srv/git.debian.org/git/pkg-octave/octave-interval.git



More information about the Pkg-octave-commit mailing list