changeset 26621:7bb23cecb928

maint: Merge stable to default.
author John W. Eaton <jwe@octave.org>
date Thu, 24 Jan 2019 20:20:02 +0000
parents c9e5a09af7af (diff) 82865ccb62c2 (current diff)
children 708d2db72e1c
files configure.ac
diffstat 265 files changed, 1277 insertions(+), 3910 deletions(-) [+]
line wrap: on
line diff
--- a/NEWS	Thu Jan 24 19:22:18 2019 +0000
+++ b/NEWS	Thu Jan 24 20:20:02 2019 +0000
@@ -1,303 +1,62 @@
-Summary of important user-visible changes for version 5 (yyyy-mm-dd):
---------------------------------------------------------------------
-
- ** The determination of an object's dimensions, size, and shape by the
-    functions ndims, rows, columns, isscalar, isvector, isrow, iscolumn,
-    ismatrix, and issquare now fully depends on the function size.
-    Thus, any user-defined object can ensure correct treatment by the
-    aforementioned functions by properly overloading the "size"
-    function.
-
- ** The function randi has been recoded to produce an unbiased (all
-    results are equally likely) sample of integers.  This may produce
-    different results in existing code.  If it is necessary to reproduce
-    the exact random integer sequence as in previous versions use
-
-      ri = imin + floor ((imax - imin + 1) * rand ());
-
- ** A new core function movfun will apply a function to a sliding
-    window of arbitrary size on a dataset and accumulate the results.
-    Many common cases have been implemented using the naming
-    scheme movXXX where "XXX" is the function that will be applied.
-    For example, the moving average over a dataset is movmean.
-    New moving window functions:
-
-    movfun   movslice
-    movmad   movmax   movmean   movmedian   movmin   movprod
-    movstd   movsum   movvar
-
- ** The functions issymmetric and ishermitian accept an option "nonskew"
-    or "skew" to calculate the symmetric or skew-symmetric property
-    of a matrix.  Performance has also been increased.
-
- ** The function isdefinite now returns true or false rather than
-    -1, 0, 1.  To test for a positive semi-definite matrix (old output
-    of 0) check whether the following two conditions hold:
-
-      isdefinite (A) => 0
-      isdefinite (A + 5*TOL, TOL) => 1
-
- ** The issorted function now uses a direction option of "ascend" or
-    "descend" to make it compatible with both the sort function and
-    with Matlab.  Change all uses of "ascending" and "descending" in
-    existing code to the new options.
-
- ** The strncmp and strncmpi functions now return true if the two input
-    strings match, even though the number of characters specified by N
-    exceeds the string length.  This behavior more closely matches
-    common sense and is Matlab compatible.  Example:
-
-      Octave 5   : strncmp ("abc", "abc", 100) => true
-      Previously : strncmp ("abc", "abc", 100) => false
-
- ** The intmax, intmin, and flintmax functions now accept a variable
-    as input.  This supports a common programming usage which is to
-    query the range of an existing variable.  Existing code can be
-    simplified by removing the call to "class" that was previously
-    required.  Example:
-
-                   x = int8 (3);
-      Octave 5   : range = [ intmin(x), intmax(x) ]
-      Previously : range = [ intmin(class(x)), intmax(class(x)) ]
-
- ** The ranks function has been recoded for performance and is now 25X
-    faster.  In addition, it now supports a third argument that
-    specifies how to resolve the ranking of tie values.
-
- ** The fsolve function has been tweaked to use larger step sizes when
-    calculating the Jacobian of a function with finite differences.
-    This leads to faster convergence.  The default solver options have
-    also changed to be Matlab compatible.  This *may* result in existing
-    code producing different results.
-
-          Option     |  New Default   |  Old Default
-      ------------------------------------------------
-        FinDiffType  |   "forward"    |   "central"
-        MaxFunEvals  | 100*length(x0) |     Inf
-        TolFun       |     1e-6       |     1e-7
-        TolX         |     1e-6       |     1e-7
-        Updating     |     "off"      |     "on"
-
- ** The fminsearch function has changed default solver options for
-    Matlab compatibility.  The accuracy option TolFun is now 1e-4 rather
-    than 1e-7.  This *may* result in existing code producing different
-    results.
-
- ** The fminbnd function has changed defaults for Matlab compatibility.
-    This *may* result in existing code producing different results.
-
-          Option     |  New Default   |  Old Default
-      ------------------------------------------------
-        MaxFunEvals  |      500       |     Inf
-        MaxIter      |      500       |     Inf
-        TolX         |     1e-4       |     1e-8
-
- ** The fminunc function has changed defaults for Matlab compatibility.
-    This *may* result in existing code producing different results.
-
-          Option     |  New Default   |  Old Default
-      ------------------------------------------------
-        FinDiffType  |   "forward"    |   "central"
-        MaxFunEvals  | 100*length(x0) |     Inf
-        TolX         |     1e-6       |     1e-7
-        TolFun       |     1e-6       |     1e-7
-
- ** Using "clear" with no arguments now removes only local variables
-    from the current workspace.  Global variables will no longer be
-    visible, but they continue to exist in the global workspace and
-    possibly other workspaces such as the base workspace.
-    This change was made for Matlab compatibility.
-
- ** The Octave plotting system now supports high resolution screens,
-    i.e, those with greater than 96 DPI which are referred to as
-    HiDPI/Retina monitors.
-
- ** Figure graphic objects have a new property "Number" which is
-    read-only and will return the handle (number) of the figure.
-    However, if the property "IntegerHandle" has been set to "off" then
-    the property will return an empty matrix ([]).
+Summary of important user-visible changes for version 6.0 (yyyy-mm-dd):
+----------------------------------------------------------------------
 
- ** Patch and surface graphic objects now use the "FaceNormals" property
-    for flat lighting.
-
- ** "FaceNormals" and "VertexNormals" for patch and surface graphic
-    objects are now calculated only when necessary to improve graphics
-    performance.  In order for any normals to be calculated the
-    "FaceLighting" property must be set to "flat" (FaceNormals) or
-    "gouraud" (VertexNormals), AND a light object must be present in the
-    axes.
-
- ** The "Margin" property of text() objects has a new default of 3
-    rather than 2.  This change was made for Matlab compatibility.
-
- ** Printing to raster formats (bitmaps like PNG or JPEG) now uses an
-    OpenGL-based method by default.  The print options "-opengl"
-    (raster) and "-painters" (vector) have been added ("qt" toolkit
-    only).  The figure property "renderer" specifies which renderer to
-    use.  When the property "renderermode" is "auto" Octave will select
-    -opengl for a raster output format and -painters for a vector output
-    format.
-
- ** A new print option "-RGBImage" has been added which captures the
-    pixels of a figure as an image.  This is similar to screen capture
-    tools, except that print formatting options can be used to, for
-    example, change the resolution or display the image in black and
-    white.
-
- ** Two new print options for page-based formats (PDF, PostScript) have
-    been added.  The "-fillpage" option will stretch the plot to occupy
-    the entire page with 0.25 inch margins all around.  The "-bestfit"
-    option will expand the plot to take up as much room as possible on
-    the page without distorting the original aspect ratio of the plot.
-
- ** Printing using the -dtiff output device will now create compressed
-    images using LZW compression.  This change was made for Matlab
-    compatibility.  To produce uncompressed images use the -dtiffn
-    device.
-
- ** A new printing device is available, -ddumb, which produces ASCII art
-    for plots.  This device is only available with the gnuplot toolkit.
-
- ** Printing to EPS files now uses a tight bounding box ("-tight"
-    argument to print) by default.  This makes more sense for EPS
-    files which are normally embedded within other documents, and is
-    Matlab compatible.  If necessary use the "-loose" option to
-    reproduce figures as they appeared in previous versions of Octave.
-
- ** Specifying legend position with a numeric argument is deprecated and
-    will be removed in Octave 7.0.  Use a string argument instead.
-
- ** It is now possible to use files and folders containing Unicode
-    characters in Windows.
-
- ** The environment variable used by mkoctfile for linker flags is now
-    LDFLAGS rather than LFLAGS.  LFLAGS is deprecated, and a warning
-    is emitted if is used, but it will continue to work until eventual
-    removal in Octave 7.0.
-
- ** The GUI requires Qt libraries.  The minimum Qt4 version supported is
-    Qt4.8.  Qt5 of any version is preferred.
+ ** New functions added in 6.0:
 
- ** The FFTW library is now required to perform FFT calculations.
-    The FFTPACK sources have been removed from Octave.
-
- ** The OSMesa library is no longer used.  To print invisible figures
-    when using OpenGL graphics, the Qt QOFFSCREENSURFACE feature must be
-    available and you must use the qt graphics toolkit.
-
- ** The str2func function no longer accepts a second "global" argument.
-    This argument was typically used to allow functions that accept
-    function names as arguments to avoid conflicts with subfunctions or
-    nested functions.  Instead, it's best to avoid this situation
-    entirely and require users to pass function handles rather than
-    function names.
-
- ** The path handling functions no longer perform variable or brace
-    expansion on path elements and Octave's load-path is no longer
-    subject to these expansions.
-
- ** New functions added in 5:
-
-      clearvars
-      isfile
-      isfolder
-      matlab.lang.makeUniqueStrings
-      matlab.lang.makeValidName
-      movegui
-      movfun
-      movie
-      movmad
-      movmax
-      movmean
-      movmedian
-      movmin
-      movprod
-      movslice
-      movstd
-      movsum
-      movvar
-      openfig
-      ordeig
-      savefig
-      uitable
-
- ** Legacy functions.
-
-    The following functions have been declared legacy functions which
-    means they are obsolete and should not be used in any new code.
-    Unlike deprecated functions, however, their removal from Octave has
-    not yet been scheduled.
-
-      Function             | Replacement
-      ---------------------|------------------
-      findstr              | strfind
-      flipdim              | flip
-      isdir                | isfolder or dir_in_loadpath
-      isequalwithequalnans | isequaln
-      isstr                | ischar
-      setstr               | char
-      strmatch             | strncmp or strcmp
-      strread              | textscan
-      textread             | textscan
+      lightangle
+      verLessThan
 
  ** Deprecated functions.
 
-    The following functions have been deprecated in Octave 5 and will
-    be removed from Octave 7 (or whatever version is the second major
-    release after 5):
+    The following functions have been deprecated in Octave 6.0 and will
+    be removed from Octave 8 (or whatever version is the second major
+    release after 6.0):
 
       Function               | Replacement
       -----------------------|------------------
       output_max_field_width | output_precision
 
- ** The following functions were deprecated in Octave 4.2 and have been
-    removed from Octave 5.
+ ** The following functions were deprecated in Octave 4.4 and have been
+    removed from Octave 6.0.
 
       Function             | Replacement
       ---------------------|------------------
-      bitmax               | flintmax
-      mahalanobis          | mahal in Octave Forge statistics pkg
-      md5sum               | hash
-      octave_config_info   | __octave_config_info__
-      onenormest           | normest1
-      sleep                | pause
-      usleep               | pause
-      wavread              | audioread
-      wavwrite             | audiowrite
+      chop                 | sprintf for visual results
+      desktop              | isguirunning
+      tmpnam               | tempname
+      toascii              | double
+      java2mat             | __java2mat__
 
  ** Deprecated graphics properties.
 
     The following properties or allowed corresponding values have been
-    deprecated in Octave 5 and will be removed from Octave 7 (or
-    whatever version is the second major release after 5):
+    deprecated in Octave 6.0 and will be removed from Octave 8 (or
+    whatever version is the second major release after 6.0):
 
       Object               | Property                | Value
       ---------------------|-------------------------|-------------------
-      text                 | fontangle               | "oblique"
-      uibuttongroup        | fontangle               | "oblique"
-      uicontrol            | fontangle               | "oblique"
-      uipanel              | fontangle               | "oblique"
-      uitable              | fontangle               | "oblique"
+
 
  ** The following properties or allowed corresponding values were
-    deprecated in Octave 4.2 and have been removed from Octave 5:
+    deprecated in Octave 4.4 and have been removed from Octave 6.0:
 
       Object               | Property                | Value
       ---------------------|-------------------------|-------------------
-      axes                 | xaxislocation           | "zero"
-                           | yaxislocation           | "zero"
-      hggroup              | erasemode               |
-      image                | erasemode               |
-      line                 | erasemode               |
-      patch                | erasemode               |
-      patch                | normalmode              |
-      surface              | erasemode               |
-      surface              | normalmode              |
-      text                 | erasemode               |
-
- ** The C++ function is_keyword has been deprecated in favor of
-    iskeyword.  The old function will be removed two versions after 5.
+      figure               | doublebuffer            |
+                           | mincolormap             |
+                           | wvisual                 |
+                           | wvisualmode             |
+                           | xdisplay                |
+                           | xvisual                 |
+                           | xvisualmode             |
+      axes                 | drawmode                |
+      annotation           | edgecolor ("rectangle") |
+      text                 | fontweight              | "demi" and "light"
+      uicontrol            | fontweight              | "demi" and "light"
+      uipanel              | fontweight              | "demi" and "light"
+      uibuttongroup        | fontweight              | "demi" and "light"
+      uitable              | fontweight              | "demi" and "light"
 
 ---------------------------------------------------------
 
-See NEWS.4 for old news.
+See NEWS.5 for old news.
--- a/configure.ac	Thu Jan 24 19:22:18 2019 +0000
+++ b/configure.ac	Thu Jan 24 20:20:02 2019 +0000
@@ -20,7 +20,7 @@
 
 ### Initialize Autoconf
 AC_PREREQ([2.65])
-AC_INIT([GNU Octave], [5.0.90], [https://octave.org/bugs.html], [octave],
+AC_INIT([GNU Octave], [6.0.0], [https://octave.org/bugs.html], [octave],
         [https://www.gnu.org/software/octave/])
 
 ### Declare version numbers
@@ -32,9 +32,9 @@
 ## explains how to update these numbers for release and development
 ## versions.
 
-OCTAVE_MAJOR_VERSION=5
+OCTAVE_MAJOR_VERSION=6
 OCTAVE_MINOR_VERSION=0
-OCTAVE_PATCH_VERSION=90
+OCTAVE_PATCH_VERSION=0
 
 dnl PACKAGE_VERSION is set by the AC_INIT VERSION argument.
 OCTAVE_VERSION="$PACKAGE_VERSION"
@@ -850,9 +850,7 @@
 RDYNAMIC_FLAG=
 DL_API_MSG=""
 dlopen_api=no
-shl_load_api=no
 loadlibrary_api=no
-dyld_api=no
 
 case $lt_cv_dlopen in
   dlopen)
@@ -862,24 +860,12 @@
       [Define to 1 if system has dlopen, dlsym, dlerror, and dlclose for dynamic linking.])
     OCTAVE_CXX_FLAG([-rdynamic], [RDYNAMIC_FLAG=-rdynamic])
   ;;
-  shl_load)
-    shl_load_api=yes
-    DL_API_MSG="shl_load"
-    AC_DEFINE(HAVE_SHL_LOAD_API, 1,
-      [Define to 1 if system has shl_load and shl_findsym for dynamic linking.])
-  ;;
   LoadLibrary)
     loadlibrary_api=yes
     DL_API_MSG="LoadLibrary"
     AC_DEFINE(HAVE_LOADLIBRARY_API, 1,
       [Define to 1 if system has LoadLibrary for dynamic linking.])
   ;;
-  dyld)
-    dyld_api=yes
-    DL_API_MSG="dyld"
-    AC_DEFINE(HAVE_DYLD_API, 1,
-      [Define to 1 if system has dyld for dynamic linking.])
-  ;;
   *)
     AC_MSG_ERROR([Octave requires some way to perform dynamic linking.])
   ;;
--- a/doc/interpreter/plot.txi	Thu Jan 24 19:22:18 2019 +0000
+++ b/doc/interpreter/plot.txi	Thu Jan 24 20:20:02 2019 +0000
@@ -459,6 +459,8 @@
 
 @DOCSTRING(camlight)
 
+@DOCSTRING(lightangle)
+
 @DOCSTRING(meshgrid)
 
 @DOCSTRING(ndgrid)
--- a/doc/interpreter/system.txi	Thu Jan 24 19:22:18 2019 +0000
+++ b/doc/interpreter/system.txi	Thu Jan 24 20:20:02 2019 +0000
@@ -533,6 +533,8 @@
 
 @DOCSTRING(compare_versions)
 
+@DOCSTRING(verLessThan)
+
 @DOCSTRING(license)
 
 @DOCSTRING(getrusage)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/NEWS.5	Thu Jan 24 20:20:02 2019 +0000
@@ -0,0 +1,303 @@
+Summary of important user-visible changes for version 5 (yyyy-mm-dd):
+--------------------------------------------------------------------
+
+ ** The determination of an object's dimensions, size, and shape by the
+    functions ndims, rows, columns, isscalar, isvector, isrow, iscolumn,
+    ismatrix, and issquare now fully depends on the function size.
+    Thus, any user-defined object can ensure correct treatment by the
+    aforementioned functions by properly overloading the "size"
+    function.
+
+ ** The function randi has been recoded to produce an unbiased (all
+    results are equally likely) sample of integers.  This may produce
+    different results in existing code.  If it is necessary to reproduce
+    the exact random integer sequence as in previous versions use
+
+      ri = imin + floor ((imax - imin + 1) * rand ());
+
+ ** A new core function movfun will apply a function to a sliding
+    window of arbitrary size on a dataset and accumulate the results.
+    Many common cases have been implemented using the naming
+    scheme movXXX where "XXX" is the function that will be applied.
+    For example, the moving average over a dataset is movmean.
+    New moving window functions:
+
+    movfun   movslice
+    movmad   movmax   movmean   movmedian   movmin   movprod
+    movstd   movsum   movvar
+
+ ** The functions issymmetric and ishermitian accept an option "nonskew"
+    or "skew" to calculate the symmetric or skew-symmetric property
+    of a matrix.  Performance has also been increased.
+
+ ** The function isdefinite now returns true or false rather than
+    -1, 0, 1.  To test for a positive semi-definite matrix (old output
+    of 0) check whether the following two conditions hold:
+
+      isdefinite (A) => 0
+      isdefinite (A + 5*TOL, TOL) => 1
+
+ ** The issorted function now uses a direction option of "ascend" or
+    "descend" to make it compatible with both the sort function and
+    with Matlab.  Change all uses of "ascending" and "descending" in
+    existing code to the new options.
+
+ ** The strncmp and strncmpi functions now return true if the two input
+    strings match, even though the number of characters specified by N
+    exceeds the string length.  This behavior more closely matches
+    common sense and is Matlab compatible.  Example:
+
+      Octave 5   : strncmp ("abc", "abc", 100) => true
+      Previously : strncmp ("abc", "abc", 100) => false
+
+ ** The intmax, intmin, and flintmax functions now accept a variable
+    as input.  This supports a common programming usage which is to
+    query the range of an existing variable.  Existing code can be
+    simplified by removing the call to "class" that was previously
+    required.  Example:
+
+                   x = int8 (3);
+      Octave 5   : range = [ intmin(x), intmax(x) ]
+      Previously : range = [ intmin(class(x)), intmax(class(x)) ]
+
+ ** The ranks function has been recoded for performance and is now 25X
+    faster.  In addition, it now supports a third argument that
+    specifies how to resolve the ranking of tie values.
+
+ ** The fsolve function has been tweaked to use larger step sizes when
+    calculating the Jacobian of a function with finite differences.
+    This leads to faster convergence.  The default solver options have
+    also changed to be Matlab compatible.  This *may* result in existing
+    code producing different results.
+
+          Option     |  New Default   |  Old Default
+      ------------------------------------------------
+        FinDiffType  |   "forward"    |   "central"
+        MaxFunEvals  | 100*length(x0) |     Inf
+        TolFun       |     1e-6       |     1e-7
+        TolX         |     1e-6       |     1e-7
+        Updating     |     "off"      |     "on"
+
+ ** The fminsearch function has changed default solver options for
+    Matlab compatibility.  The accuracy option TolFun is now 1e-4 rather
+    than 1e-7.  This *may* result in existing code producing different
+    results.
+
+ ** The fminbnd function has changed defaults for Matlab compatibility.
+    This *may* result in existing code producing different results.
+
+          Option     |  New Default   |  Old Default
+      ------------------------------------------------
+        MaxFunEvals  |      500       |     Inf
+        MaxIter      |      500       |     Inf
+        TolX         |     1e-4       |     1e-8
+
+ ** The fminunc function has changed defaults for Matlab compatibility.
+    This *may* result in existing code producing different results.
+
+          Option     |  New Default   |  Old Default
+      ------------------------------------------------
+        FinDiffType  |   "forward"    |   "central"
+        MaxFunEvals  | 100*length(x0) |     Inf
+        TolX         |     1e-6       |     1e-7
+        TolFun       |     1e-6       |     1e-7
+
+ ** Using "clear" with no arguments now removes only local variables
+    from the current workspace.  Global variables will no longer be
+    visible, but they continue to exist in the global workspace and
+    possibly other workspaces such as the base workspace.
+    This change was made for Matlab compatibility.
+
+ ** The Octave plotting system now supports high resolution screens,
+    i.e, those with greater than 96 DPI which are referred to as
+    HiDPI/Retina monitors.
+
+ ** Figure graphic objects have a new property "Number" which is
+    read-only and will return the handle (number) of the figure.
+    However, if the property "IntegerHandle" has been set to "off" then
+    the property will return an empty matrix ([]).
+
+ ** Patch and surface graphic objects now use the "FaceNormals" property
+    for flat lighting.
+
+ ** "FaceNormals" and "VertexNormals" for patch and surface graphic
+    objects are now calculated only when necessary to improve graphics
+    performance.  In order for any normals to be calculated the
+    "FaceLighting" property must be set to "flat" (FaceNormals) or
+    "gouraud" (VertexNormals), AND a light object must be present in the
+    axes.
+
+ ** The "Margin" property of text() objects has a new default of 3
+    rather than 2.  This change was made for Matlab compatibility.
+
+ ** Printing to raster formats (bitmaps like PNG or JPEG) now uses an
+    OpenGL-based method by default.  The print options "-opengl"
+    (raster) and "-painters" (vector) have been added ("qt" toolkit
+    only).  The figure property "renderer" specifies which renderer to
+    use.  When the property "renderermode" is "auto" Octave will select
+    -opengl for a raster output format and -painters for a vector output
+    format.
+
+ ** A new print option "-RGBImage" has been added which captures the
+    pixels of a figure as an image.  This is similar to screen capture
+    tools, except that print formatting options can be used to, for
+    example, change the resolution or display the image in black and
+    white.
+
+ ** Two new print options for page-based formats (PDF, PostScript) have
+    been added.  The "-fillpage" option will stretch the plot to occupy
+    the entire page with 0.25 inch margins all around.  The "-bestfit"
+    option will expand the plot to take up as much room as possible on
+    the page without distorting the original aspect ratio of the plot.
+
+ ** Printing using the -dtiff output device will now create compressed
+    images using LZW compression.  This change was made for Matlab
+    compatibility.  To produce uncompressed images use the -dtiffn
+    device.
+
+ ** A new printing device is available, -ddumb, which produces ASCII art
+    for plots.  This device is only available with the gnuplot toolkit.
+
+ ** Printing to EPS files now uses a tight bounding box ("-tight"
+    argument to print) by default.  This makes more sense for EPS
+    files which are normally embedded within other documents, and is
+    Matlab compatible.  If necessary use the "-loose" option to
+    reproduce figures as they appeared in previous versions of Octave.
+
+ ** Specifying legend position with a numeric argument is deprecated and
+    will be removed in Octave 7.0.  Use a string argument instead.
+
+ ** It is now possible to use files and folders containing Unicode
+    characters in Windows.
+
+ ** The environment variable used by mkoctfile for linker flags is now
+    LDFLAGS rather than LFLAGS.  LFLAGS is deprecated, and a warning
+    is emitted if is used, but it will continue to work until eventual
+    removal in Octave 7.0.
+
+ ** The GUI requires Qt libraries.  The minimum Qt4 version supported is
+    Qt4.8.  Qt5 of any version is preferred.
+
+ ** The FFTW library is now required to perform FFT calculations.
+    The FFTPACK sources have been removed from Octave.
+
+ ** The OSMesa library is no longer used.  To print invisible figures
+    when using OpenGL graphics, the Qt QOFFSCREENSURFACE feature must be
+    available and you must use the qt graphics toolkit.
+
+ ** The str2func function no longer accepts a second "global" argument.
+    This argument was typically used to allow functions that accept
+    function names as arguments to avoid conflicts with subfunctions or
+    nested functions.  Instead, it's best to avoid this situation
+    entirely and require users to pass function handles rather than
+    function names.
+
+ ** The path handling functions no longer perform variable or brace
+    expansion on path elements and Octave's load-path is no longer
+    subject to these expansions.
+
+ ** New functions added in 5:
+
+      clearvars
+      isfile
+      isfolder
+      matlab.lang.makeUniqueStrings
+      matlab.lang.makeValidName
+      movegui
+      movfun
+      movie
+      movmad
+      movmax
+      movmean
+      movmedian
+      movmin
+      movprod
+      movslice
+      movstd
+      movsum
+      movvar
+      openfig
+      ordeig
+      savefig
+      uitable
+
+ ** Legacy functions.
+
+    The following functions have been declared legacy functions which
+    means they are obsolete and should not be used in any new code.
+    Unlike deprecated functions, however, their removal from Octave has
+    not yet been scheduled.
+
+      Function             | Replacement
+      ---------------------|------------------
+      findstr              | strfind
+      flipdim              | flip
+      isdir                | isfolder or dir_in_loadpath
+      isequalwithequalnans | isequaln
+      isstr                | ischar
+      setstr               | char
+      strmatch             | strncmp or strcmp
+      strread              | textscan
+      textread             | textscan
+
+ ** Deprecated functions.
+
+    The following functions have been deprecated in Octave 5 and will
+    be removed from Octave 7 (or whatever version is the second major
+    release after 5):
+
+      Function               | Replacement
+      -----------------------|------------------
+      output_max_field_width | output_precision
+
+ ** The following functions were deprecated in Octave 4.2 and have been
+    removed from Octave 5.
+
+      Function             | Replacement
+      ---------------------|------------------
+      bitmax               | flintmax
+      mahalanobis          | mahal in Octave Forge statistics pkg
+      md5sum               | hash
+      octave_config_info   | __octave_config_info__
+      onenormest           | normest1
+      sleep                | pause
+      usleep               | pause
+      wavread              | audioread
+      wavwrite             | audiowrite
+
+ ** Deprecated graphics properties.
+
+    The following properties or allowed corresponding values have been
+    deprecated in Octave 5 and will be removed from Octave 7 (or
+    whatever version is the second major release after 5):
+
+      Object               | Property                | Value
+      ---------------------|-------------------------|-------------------
+      text                 | fontangle               | "oblique"
+      uibuttongroup        | fontangle               | "oblique"
+      uicontrol            | fontangle               | "oblique"
+      uipanel              | fontangle               | "oblique"
+      uitable              | fontangle               | "oblique"
+
+ ** The following properties or allowed corresponding values were
+    deprecated in Octave 4.2 and have been removed from Octave 5:
+
+      Object               | Property                | Value
+      ---------------------|-------------------------|-------------------
+      axes                 | xaxislocation           | "zero"
+                           | yaxislocation           | "zero"
+      hggroup              | erasemode               |
+      image                | erasemode               |
+      line                 | erasemode               |
+      patch                | erasemode               |
+      patch                | normalmode              |
+      surface              | erasemode               |
+      surface              | normalmode              |
+      text                 | erasemode               |
+
+ ** The C++ function is_keyword has been deprecated in favor of
+    iskeyword.  The old function will be removed two versions after 5.
+
+---------------------------------------------------------
+
+See NEWS.4 for old news.
--- a/etc/RELEASE.CHECKLIST	Thu Jan 24 19:22:18 2019 +0000
+++ b/etc/RELEASE.CHECKLIST	Thu Jan 24 20:20:02 2019 +0000
@@ -67,6 +67,10 @@
 #* Submit call for translations for GUI strings
 #: Completion Date:
 <!----------------------------------------------------------------------------->
+# Update shared library and oct file API version numbers
+#* Increment oct file API version number (configure.ac:OCTAVE_API_VERSION, increment number and drop "+" suffix)
+#* Increment libtool versioning (liboctave/module.mk:%canon_reldir%_%canon_reldir%_current, libinterp/module.mk:%canon_reldir%_liboctinterp_current, libgui/module.mk:%canon_reldir%_liboctgui_current)
+<!----------------------------------------------------------------------------->
 # Verify build process and create release candidates
 #* Update configure.ac with new version information
 #** Update AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION, OCTAVE_RELEASE_DATE
@@ -84,7 +88,6 @@
 # Final Release
 #* Update version information
 #** Update configure.ac (AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION, OCTAVE_RELEASE_DATE)
-#** Update libtool versioning (configure.ac:OCTAVE_API_VERSION, liboctave/module.mk:%canon_reldir%_%canon_reldir%_current, libinterp/module.mk:%canon_reldir%_liboctinterp_current, libgui/module.mk:%canon_reldir%_liboctgui_current)
 #** Update NEWS (final release date)
 #** Update CITATION (version, year, URL)
 #** Update org.octave.Octave.appdata.xml (version number and release date)
@@ -98,6 +101,7 @@
 <!----------------------------------------------------------------------------->
 # Post-Release
 #* Update configure.ac (AC_INIT, OCTAVE_MAJOR_VERSION, OCTAVE_MINOR_VERSION, OCTAVE_PATCH_VERSION) to next release cycle
+#* Update oct file API version number (configure.ac:OCTAVE_API_VERSION, add "+" suffix)
 #* Remove all deprecated functions (either OCTAVE_DEPRECATED in C++ or scripts/deprecated for m-files) scheduled for deletion in default branch
 #* Move NEWS file to backup in etc/NEWS.X
 #* Create new NEWS file
--- a/etc/icons/org.octave.Octave.appdata.xml	Thu Jan 24 19:22:18 2019 +0000
+++ b/etc/icons/org.octave.Octave.appdata.xml	Thu Jan 24 20:20:02 2019 +0000
@@ -44,6 +44,28 @@
       non-interactive programs. The Octave language is quite similar to
       Matlab so that most programs are easily portable.
     </p>
+    <p xml:lang="de">
+      GNU Octave ist eine höhere, interpretierte Programmiersprache, die
+      hauptsächlich für numerische Berechnungen gedacht ist. Sie bietet
+      Funktionen für die numerische Lösung linearer und nichtlinearer Probleme
+      und für die Durchführung anderer numerischer Experimente. Darüber hinaus
+      bietet es umfangreiche Grafikfunktionen zur Datenvisualisierung und
+      -manipulation. Octave wird normalerweise mittels einer interaktiven
+      Befehlszeile verwendet, kann aber auch zum Schreiben nicht interaktiver
+      Programme verwendet werden. Die Octave-Programmiersprache ist sehr
+      ähnlich zu Matlab, so dass die meisten Programme leicht übertragbar sind.
+    </p>
+    <p xml:lang="fr">
+      GNU Octave est un langage de programmation interprété, destiné
+      principalement au calcul numérique. Il fournit des fonctionnalités
+      pour la résolution de problèmes linéaires et non-linéaires, et pour toutes
+      sortes d'expériences numériques.  Il s'accompagne d'un système complet
+      de visualisation et de manipulation des données. Octave s’utilise
+      généralement via son environnement en lignes de commandes interactif,
+      mais il peut aussi être utilisé pour écrire des programmes non
+      interactifs. Le langage Octave est très similaire à Matlab de telle sorte
+      que les programmes Matlab sont très faciles à porter sous Octave.
+    </p>
     <p>
       Octave has extensive tools for solving common numerical linear algebra
       problems, finding the roots of nonlinear equations, integrating ordinary
@@ -53,6 +75,25 @@
       Octave's own language, or using dynamically loaded modules written in
       C++, C, Fortran, or other languages.
     </p>
+    <p xml:lang="de">
+      Octave verfügt über umfangreiche Werkzeuge zur Lösung gängiger
+      numerischer linearer Probleme der Algebra, zum Auffinden der Nullstellen
+      nichtlinearer Gleichungen, zur Integration gewöhnlicher Funktionen, zur
+      Manipulation von Polynomen und zur Integration gewöhnlicher
+      Differentialgleichungen und differential-algebraischer Gleichungen. Es
+      ist leicht erweiter- und anpassbar mittels benutzerdefinierter
+      Funktionen, die in Octaves eigener Programmiersprache geschrieben wurden,
+      oder über dynamisch geladene, in C++, C, Fortran oder anderen Sprachen
+      geschriebene Module.
+    </p>
+    <p xml:lang="fr">
+      Octave dispose de nombreux outils pour résoudre les problèmes classiques
+      d'algèbre linéaire, trouver les racines d'équations non-linéaires,
+      intégrer les fonctions ordinaires et les équations différentielles.
+      Il peut très facilement être étendu en définissant de nouvelles
+      fonctions écrites en langage Octave ou en utilisant des modules
+      chargés dynamiquement, écrits en C++, C, Fortran ou autres langages.
+    </p>
   </description>
 
   <screenshots>
--- a/etc/module.mk	Thu Jan 24 19:22:18 2019 +0000
+++ b/etc/module.mk	Thu Jan 24 20:20:02 2019 +0000
@@ -9,6 +9,7 @@
   %reldir%/NEWS.2 \
   %reldir%/NEWS.3 \
   %reldir%/NEWS.4 \
+  %reldir%/NEWS.5 \
   %reldir%/PROJECTS \
   %reldir%/gdbinit
 
--- a/examples/code/make_int.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/examples/code/make_int.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -12,7 +12,6 @@
 #include <octave/str-vec.h>
 
 #include <octave/defun-dld.h>
-#include <octave/errwarn.h>
 #include <octave/interpreter.h>
 #include <octave/ops.h>
 #include <octave/ov-base.h>
@@ -161,12 +160,7 @@
   const octave_integer& v1 = dynamic_cast<const octave_integer&> (a1);
   const octave_integer& v2 = dynamic_cast<const octave_integer&> (a2);
 
-  int d = v2.integer_value ();
-
-  if (d == 0)
-    warn_divide_by_zero ();
-
-  return new octave_integer (v1.integer_value () / d);
+  return new octave_integer (v1.integer_value () / v2.integer_value ());
 }
 
 
@@ -175,12 +169,7 @@
   const octave_integer& v1 = dynamic_cast<const octave_integer&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return new octave_scalar (v1.double_value () / d);
+  return new octave_scalar (v1.double_value () / v2.double_value ());
 }
 
 DEFBINOP (ldiv, integer, integer)
@@ -188,12 +177,7 @@
   const octave_integer& v1 = dynamic_cast<const octave_integer&> (a1);
   const octave_integer& v2 = dynamic_cast<const octave_integer&> (a2);
 
-  int d = v1.integer_value ();
-
-  if (d == 0)
-    warn_divide_by_zero ();
-
-  return new octave_integer (v2.integer_value () / d);
+  return new octave_integer (v2.integer_value () / v1.integer_value ());
 }
 
 DEFBINOP_OP (lt, integer, integer, <)
@@ -210,12 +194,7 @@
   const octave_integer& v1 = dynamic_cast<const octave_integer&> (a1);
   const octave_integer& v2 = dynamic_cast<const octave_integer&> (a2);
 
-  int d = v2.integer_value ();
-
-  if (d == 0)
-    warn_divide_by_zero ();
-
-  return new octave_integer (v1.integer_value () / d);
+  return new octave_integer (v1.integer_value () / v2.integer_value ());
 }
 
 DEFBINOP (el_ldiv, integer, integer)
@@ -223,12 +202,7 @@
   const octave_integer& v1 = dynamic_cast<const octave_integer&> (a1);
   const octave_integer& v2 = dynamic_cast<const octave_integer&> (a2);
 
-  int d = v1.integer_value ();
-
-  if (d == 0)
-    warn_divide_by_zero ();
-
-  return new octave_integer (v2.integer_value () / d);
+  return new octave_integer (v2.integer_value () / v1.integer_value ());
 }
 
 DEFBINOP_OP (el_and, integer, integer, &&)
--- a/libgui/graphics/QtHandlesUtils.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libgui/graphics/QtHandlesUtils.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -113,8 +113,6 @@
       if (! mapsInitialized)
         {
           weightMap["normal"] = QFont::Normal;
-          weightMap["light"] = QFont::Light;
-          weightMap["demi"] = QFont::DemiBold;
           weightMap["bold"] = QFont::Bold;
 
           angleMap["normal"] = QFont::StyleNormal;
--- a/libgui/src/m-editor/file-editor-tab.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libgui/src/m-editor/file-editor-tab.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -618,9 +618,8 @@
     else
       {
         // Otherwise, delete the newly created lexer and
-        // use the old, exisiting one
-        if (lexer)
-          delete lexer;
+        // use the old, existing one.
+        delete lexer;
       }
   }
 
--- a/libgui/src/m-editor/file-editor.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libgui/src/m-editor/file-editor.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -444,12 +444,9 @@
     // pass a signal to.  Hence, functionality is here.
 
     file_editor_tab *fileEditorTab = new file_editor_tab (m_ced);
-    if (fileEditorTab)
-      {
-        add_file_editor_tab (fileEditorTab, "");  // new tab with empty title
-        fileEditorTab->new_file (commands);       // title is updated here
-        focus ();                                 // focus editor and new tab
-      }
+    add_file_editor_tab (fileEditorTab, "");  // new tab with empty title
+    fileEditorTab->new_file (commands);       // title is updated here
+    focus ();                                 // focus editor and new tab
   }
 
   void file_editor::request_close_file (bool)
@@ -1325,103 +1322,100 @@
             if (! fileEditorTab)
               fileEditorTab = new file_editor_tab ();
 
-            if (fileEditorTab)
+            fileEditorTab->set_encoding (encoding);
+            QString result = fileEditorTab->load_file (openFileName);
+            if (result == "")
               {
-                fileEditorTab->set_encoding (encoding);
-                QString result = fileEditorTab->load_file (openFileName);
-                if (result == "")
+                // Supply empty title then have the file_editor_tab update
+                // with full or short name.
+                if (! reusing)
+                  add_file_editor_tab (fileEditorTab, "", index);
+                fileEditorTab->update_window_title (false);
+                // file already loaded, add file to mru list here
+                QFileInfo file_info = QFileInfo (openFileName);
+                handle_mru_add_file (file_info.canonicalFilePath (),
+                                     encoding);
+
+                if (line > 0)
                   {
-                    // Supply empty title then have the file_editor_tab update
-                    // with full or short name.
-                    if (! reusing)
-                      add_file_editor_tab (fileEditorTab, "", index);
-                    fileEditorTab->update_window_title (false);
-                    // file already loaded, add file to mru list here
-                    QFileInfo file_info = QFileInfo (openFileName);
-                    handle_mru_add_file (file_info.canonicalFilePath (),
-                                         encoding);
-
-                    if (line > 0)
-                      {
-                        if (insert)
-                          emit fetab_goto_line (fileEditorTab, line);
-
-                        if (debug_pointer)
-                          emit fetab_insert_debugger_pointer (fileEditorTab,
-                                                              line);
-                        if (breakpoint_marker)
-                          emit fetab_do_breakpoint_marker (insert, fileEditorTab,
-                                                           line, cond);
-                      }
+                    if (insert)
+                      emit fetab_goto_line (fileEditorTab, line);
+
+                    if (debug_pointer)
+                      emit fetab_insert_debugger_pointer (fileEditorTab,
+                                                          line);
+                    if (breakpoint_marker)
+                      emit fetab_do_breakpoint_marker (insert, fileEditorTab,
+                                                       line, cond);
+                  }
+              }
+            else
+              {
+                delete fileEditorTab;
+                fileEditorTab = nullptr;
+
+                if (QFile::exists (openFileName))
+                  {
+                    // File not readable:
+                    // create a NonModal message about error.
+                    QMessageBox *msgBox
+                      = new QMessageBox (QMessageBox::Critical,
+                                         tr ("Octave Editor"),
+                                         tr ("Could not open file\n%1\nfor read: %2.").
+                                         arg (openFileName).arg (result),
+                                         QMessageBox::Ok, this);
+
+                    msgBox->setWindowModality (Qt::NonModal);
+                    msgBox->setAttribute (Qt::WA_DeleteOnClose);
+                    msgBox->show ();
                   }
                 else
                   {
-                    delete fileEditorTab;
-                    fileEditorTab = nullptr;
-
-                    if (QFile::exists (openFileName))
+                    // File does not exist, should it be created?
+                    bool create_file = true;
+                    QMessageBox *msgBox;
+
+                    if (! settings->value ("editor/create_new_file", false).toBool ())
                       {
-                        // File not readable:
-                        // create a NonModal message about error.
-                        QMessageBox *msgBox
-                          = new QMessageBox (QMessageBox::Critical,
-                                             tr ("Octave Editor"),
-                                             tr ("Could not open file\n%1\nfor read: %2.").
-                                             arg (openFileName).arg (result),
-                                             QMessageBox::Ok, this);
-
-                        msgBox->setWindowModality (Qt::NonModal);
-                        msgBox->setAttribute (Qt::WA_DeleteOnClose);
-                        msgBox->show ();
+                        msgBox = new QMessageBox (QMessageBox::Question,
+                                                  tr ("Octave Editor"),
+                                                  tr ("File\n%1\ndoes not exist. "
+                                                      "Do you want to create it?").arg (openFileName),
+                                                  QMessageBox::NoButton,nullptr);
+                        QPushButton *create_button =
+                          msgBox->addButton (tr ("Create"), QMessageBox::YesRole);
+                        msgBox->addButton (tr ("Cancel"), QMessageBox::RejectRole);
+                        msgBox->setDefaultButton (create_button);
+                        msgBox->exec ();
+
+                        QAbstractButton *clicked_button = msgBox->clickedButton ();
+                        if (clicked_button != create_button)
+                          create_file = false;
+
+                        delete msgBox;
                       }
-                    else
+
+                    if (create_file)
                       {
-                        // File does not exist, should it be created?
-                        bool create_file = true;
-                        QMessageBox *msgBox;
-
-                        if (! settings->value ("editor/create_new_file", false).toBool ())
+                        // create the file and call the editor again
+                        QFile file (openFileName);
+                        if (! file.open (QIODevice::WriteOnly))
                           {
-                            msgBox = new QMessageBox (QMessageBox::Question,
+                            // error opening the file
+                            msgBox = new QMessageBox (QMessageBox::Critical,
                                                       tr ("Octave Editor"),
-                                                      tr ("File\n%1\ndoes not exist. "
-                                                          "Do you want to create it?").arg (openFileName),
-                                                      QMessageBox::NoButton,nullptr);
-                            QPushButton *create_button =
-                              msgBox->addButton (tr ("Create"), QMessageBox::YesRole);
-                            msgBox->addButton (tr ("Cancel"), QMessageBox::RejectRole);
-                            msgBox->setDefaultButton (create_button);
-                            msgBox->exec ();
-
-                            QAbstractButton *clicked_button = msgBox->clickedButton ();
-                            if (clicked_button != create_button)
-                              create_file = false;
-
-                            delete msgBox;
+                                                      tr ("Could not open file\n%1\nfor write: %2.").
+                                                      arg (openFileName).arg (file.errorString ()),
+                                                      QMessageBox::Ok, this);
+
+                            msgBox->setWindowModality (Qt::NonModal);
+                            msgBox->setAttribute (Qt::WA_DeleteOnClose);
+                            msgBox->show ();
                           }
-
-                        if (create_file)
+                        else
                           {
-                            // create the file and call the editor again
-                            QFile file (openFileName);
-                            if (! file.open (QIODevice::WriteOnly))
-                              {
-                                // error opening the file
-                                msgBox = new QMessageBox (QMessageBox::Critical,
-                                                          tr ("Octave Editor"),
-                                                          tr ("Could not open file\n%1\nfor write: %2.").
-                                                          arg (openFileName).arg (file.errorString ()),
-                                                          QMessageBox::Ok, this);
-
-                                msgBox->setWindowModality (Qt::NonModal);
-                                msgBox->setAttribute (Qt::WA_DeleteOnClose);
-                                msgBox->show ();
-                              }
-                            else
-                              {
-                                file.close ();
-                                request_open_file (openFileName);
-                              }
+                            file.close ();
+                            request_open_file (openFileName);
                           }
                       }
                   }
--- a/libgui/src/resource-manager.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libgui/src/resource-manager.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -176,13 +176,6 @@
     if (! instance)
       instance = new resource_manager ();
 
-    if (! instance)
-      {
-        error ("unable to create resource_manager object!");
-
-        retval = false;
-      }
-
     return retval;
   }
 
@@ -294,8 +287,7 @@
     delete m_settings;
     m_settings = new QSettings (file, QSettings::IniFormat);
 
-    if (! (m_settings
-           && QFile::exists (m_settings->fileName ())
+    if (! (QFile::exists (m_settings->fileName ())
            && m_settings->isWritable ()
            && m_settings->status () == QSettings::NoError))
       {
--- a/libgui/src/shortcut-manager.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libgui/src/shortcut-manager.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -172,13 +172,6 @@
     if (! instance)
       instance = new shortcut_manager ();
 
-    if (! instance)
-      {
-        error ("unable to create shortcut_manager object!");
-
-        retval = false;
-      }
-
     return retval;
   }
 
@@ -695,19 +688,10 @@
 
         QSettings *osc_settings = new QSettings (file, QSettings::IniFormat);
 
-        if (! osc_settings)
-          {
-            qWarning () << tr ("Failed to open %1 as Octave shortcut file")
-                        .arg (file);
-            return false;
-          }
-        else
-          {
-            if (action == OSC_IMPORT)
-              import_shortcuts (osc_settings);   // import (special action)
-            else if (action == OSC_EXPORT)
-              do_write_shortcuts (osc_settings, false); // export, (save settings)
-          }
+        if (action == OSC_IMPORT)
+          import_shortcuts (osc_settings);   // import (special action)
+        else if (action == OSC_EXPORT)
+          do_write_shortcuts (osc_settings, false); // export, (save settings)
       }
     else
       {
--- a/libinterp/corefcn/__qp__.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/__qp__.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -89,15 +89,13 @@
 qp (const Matrix& H, const ColumnVector& q,
     const Matrix& Aeq, const ColumnVector& beq,
     const Matrix& Ain, const ColumnVector& bin,
-    int maxit,
+    int maxit, double rtol,
     ColumnVector& x, ColumnVector& lambda, int& iter)
 {
   int info = 0;
 
   iter = 0;
 
-  double rtol = sqrt (std::numeric_limits<double>::epsilon ());
-
   // Problem dimension.
   octave_idx_type n = x.numel ();
 
@@ -493,7 +491,7 @@
 Undocumented internal function.
 @end deftypefn */)
 {
-  if (args.length () != 8)
+  if (args.length () != 9)
     print_usage ();
 
   const ColumnVector x0  (args(0).vector_value ());
@@ -504,7 +502,8 @@
   const Matrix Ain       (args(5).matrix_value ());
   const ColumnVector bin (args(6).vector_value ());
   const int maxit        (args(7).int_value ());
-
+  const double rtol      (args(8).double_value());
+    
   int iter = 0;
 
   // Copy the initial guess into the working variable
@@ -513,7 +512,7 @@
   // Reordering the Lagrange multipliers
   ColumnVector lambda;
 
-  int info = qp (H, q, Aeq, beq, Ain, bin, maxit, x, lambda, iter);
+  int info = qp (H, q, Aeq, beq, Ain, bin, maxit, rtol, x, lambda, iter);
 
   return ovl (x, lambda, info, iter);
 }
--- a/libinterp/corefcn/call-stack.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/call-stack.h	Thu Jan 24 20:20:02 2019 +0000
@@ -293,11 +293,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::call_stack' instead")
-typedef octave::call_stack octave_call_stack;
-
 #endif
-
-#endif
--- a/libinterp/corefcn/defun-int.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/defun-int.h	Thu Jan 24 20:20:02 2019 +0000
@@ -80,41 +80,6 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::auto_shlib' instead")
-typedef octave::auto_shlib octave_auto_shlib;
-
-OCTAVE_DEPRECATED (4.4, "use 'tree_evaluator::isargout' instead")
-extern OCTINTERP_API bool
-defun_isargout (int, int);
-
-OCTAVE_DEPRECATED (4.4, "use 'tree_evaluator::isargout' instead")
-extern OCTINTERP_API void
-defun_isargout (int, int, bool *);
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::symbol_table::install_built_in_function' instead")
-extern OCTINTERP_API void
-install_builtin_function (octave_builtin::fcn f, const std::string& name,
-                          const std::string& file, const std::string& doc,
-                          bool can_hide_function = true);
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::symbol_table::install_built_in_function' instead")
-extern OCTINTERP_API void
-install_builtin_function (octave_builtin::meth m, const std::string& name,
-                          const std::string& file, const std::string& doc,
-                          bool can_hide_function = true);
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::symbol_table::alias_built_in_function' instead")
-extern OCTINTERP_API void
-alias_builtin (const std::string& alias, const std::string& name);
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::symbol_table::install_built_in_dispatch' instead")
-extern OCTINTERP_API void
-install_builtin_dispatch (const std::string& name, const std::string& klass);
-
-#endif
-
 #define FORWARD_DECLARE_FUNX(name)              \
   extern OCTAVE_EXPORT octave_value_list        \
   name (const octave_value_list&, int)
--- a/libinterp/corefcn/defun.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/defun.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -83,32 +83,6 @@
 // Install variables and functions in the symbol tables.
 
 void
-install_builtin_function (octave_builtin::fcn f, const std::string& name,
-                          const std::string& file, const std::string& doc,
-                          bool /* can_hide_function -- not yet implemented */)
-{
-  octave_value fcn (new octave_builtin (f, name, file, doc));
-
-  octave::symbol_table& symtab
-    = octave::__get_symbol_table__ ("install_builtin_function");
-
-  symtab.install_built_in_function (name, fcn);
-}
-
-void
-install_builtin_function (octave_builtin::meth m, const std::string& name,
-                          const std::string& file, const std::string& doc,
-                          bool /* can_hide_function -- not yet implemented */)
-{
-  octave_value fcn (new octave_builtin (m, name, file, doc));
-
-  octave::symbol_table& symtab
-    = octave::__get_symbol_table__ ("install_builtin_function");
-
-  symtab.install_built_in_function (name, fcn);
-}
-
-void
 install_dld_function (octave_dld_function::fcn f, const std::string& name,
                       const octave::dynamic_library& shl, const std::string& doc,
                       bool relative)
@@ -161,23 +135,6 @@
   symtab.install_built_in_function (name, fval);
 }
 
-void
-alias_builtin (const std::string& alias, const std::string& name)
-{
-  octave::symbol_table& symtab = octave::__get_symbol_table__ ("alias_builtin");
-
-  symtab.alias_built_in_function (alias, name);
-}
-
-void
-install_builtin_dispatch (const std::string& name, const std::string& klass)
-{
-  octave::symbol_table& symtab
-    = octave::__get_symbol_table__ ("install_builtin_dispatch");
-
-  symtab.install_built_in_dispatch (name, klass);
-}
-
 octave::dynamic_library
 get_current_shlib (void)
 {
@@ -205,19 +162,3 @@
 
   return retval;
 }
-
-bool
-defun_isargout (int nargout, int iout)
-{
-  octave::tree_evaluator& tw = octave::__get_evaluator__ ("defun_isargout");
-
-  return tw.isargout (nargout, iout);
-}
-
-void
-defun_isargout (int nargout, int nout, bool *isargout)
-{
-  octave::tree_evaluator& tw = octave::__get_evaluator__ ("defun_isargout");
-
-  return tw.isargout (nargout, nout, isargout);
-}
--- a/libinterp/corefcn/display.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/display.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -66,14 +66,9 @@
     if (! instance)
       {
         instance = new display_info (query);
-
-        if (instance)
-          singleton_cleanup_list::add (cleanup_instance);
+        singleton_cleanup_list::add (cleanup_instance);
       }
 
-    if (! instance)
-      error ("unable to create display_info object!");
-
     return retval;
   }
 }
--- a/libinterp/corefcn/dot.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/dot.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -26,8 +26,10 @@
 
 #include "lo-blas-proto.h"
 #include "mx-base.h"
+
+#include "builtin-defun-decls.h"
+#include "defun.h"
 #include "error.h"
-#include "defun.h"
 #include "parse.h"
 
 static void
@@ -75,11 +77,12 @@
 If the optional argument @var{dim} is given, calculate the dot products
 along this dimension.
 
-This is equivalent to
-@code{sum (conj (@var{X}) .* @var{Y}, @var{dim})},
-but avoids forming a temporary array and is faster.  When @var{X} and
-@var{Y} are column vectors, the result is equivalent to
-@code{@var{X}' * @var{Y}}.
+Implementation Note: This is equivalent to
+@code{sum (conj (@var{X}) .* @var{Y}, @var{dim})}, but avoids forming a
+temporary array and is faster.  When @var{X} and @var{Y} are column vectors,
+the result is equivalent to @code{@var{X}' * @var{Y}}.  Although, @code{dot}
+is defined for integer arrays, the output may differ from the expected result
+due to the limited range of integer objects.
 @seealso{cross, divergence}
 @end deftypefn */)
 {
@@ -177,11 +180,16 @@
   else
     {
       // Non-optimized evaluation.
+      // FIXME: This may *not* do what the user expects.
+      // It might be more useful to issue a warning, or even an error, instead
+      // of calculating possibly garbage results.
+      // Think of the dot product of two int8 vectors where the multiplications
+      // exceed intmax.
       octave_value_list tmp;
       tmp(1) = dim + 1;
       tmp(0) = do_binary_op (octave_value::op_el_mul, argx, argy);
 
-      tmp = octave::feval ("sum", tmp, 1);
+      tmp = Fsum (tmp, 1);
       if (! tmp.empty ())
         retval = tmp(0);
     }
@@ -204,17 +212,23 @@
 %! assert (dot (single (x), single (x)), single ([4, 20]));
 
 %!test
-%! x = int8 ([1 2]);
-%! y = int8 ([2 3]);
+%! x = int8 ([1, 2]);
+%! y = int8 ([2, 3]);
 %! assert (dot (x, y), 8);
 
 %!test
-%! x = int8 ([1 2; 3 4]);
-%! y = int8 ([5 6; 7 8]);
+%! x = int8 ([1, 2; 3, 4]);
+%! y = int8 ([5, 6; 7, 8]);
 %! assert (dot (x, y), [26 44]);
 %! assert (dot (x, y, 2), [17; 53]);
 %! assert (dot (x, y, 3), [5 12; 21 32]);
 
+## This is, perhaps, surprising.  Integer maximums and saturation mechanics
+## prevent accurate value from being calculated.
+%!test
+%! x = int8 ([127]);
+%! assert (dot (x, x), 127);
+
 ## Test input validation
 %!error dot ()
 %!error dot (1)
--- a/libinterp/corefcn/error.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/error.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -1819,7 +1819,7 @@
 
 /*
 %!test <*51997>
-%! id = "Octave:divide-by-zero";
+%! id = "Octave:logical-conversion";
 %! current = warning ("query", id);
 %! current_all = warning ();
 %! previous = warning (current_all);
--- a/libinterp/corefcn/errwarn.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/errwarn.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -324,12 +324,6 @@
 }
 
 void
-warn_divide_by_zero (void)
-{
-  warning_with_id ("Octave:divide-by-zero", "division by zero");
-}
-
-void
 warn_empty_arg (const char *name)
 {
   warning ("%s: argument is empty matrix", name);
--- a/libinterp/corefcn/errwarn.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/errwarn.h	Thu Jan 24 20:20:02 2019 +0000
@@ -164,9 +164,6 @@
                        const std::string& pkg = "Octave");
 
 OCTINTERP_API extern void
-warn_divide_by_zero (void);
-
-OCTINTERP_API extern void
 warn_empty_arg (const char *name);
 
 OCTINTERP_API extern void
@@ -185,4 +182,13 @@
 OCTINTERP_API extern void
 warn_wrong_type_arg (const char *name, const octave_value& tc);
 
+#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
+
+OCTAVE_DEPRECATED (6, "this function will be removed in a future version of Octave")
+inline void
+warn_divide_by_zero (void)
+{ }
+
 #endif
+
+#endif
--- a/libinterp/corefcn/event-queue.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/event-queue.h	Thu Jan 24 20:20:02 2019 +0000
@@ -122,14 +122,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::event_queue' instead")
-typedef octave::event_queue event_queue;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::event_queue_safe' instead")
-typedef octave::event_queue_safe event_queue_safe;
-
 #endif
-
-#endif
--- a/libinterp/corefcn/ft-text-renderer.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/ft-text-renderer.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -149,14 +149,9 @@
       if (! instance)
         {
           instance = new ft_manager ();
-
-          if (instance)
-            singleton_cleanup_list::add (cleanup_instance);
+          singleton_cleanup_list::add (cleanup_instance);
         }
 
-      if (! instance)
-        error ("unable to create ft_manager!");
-
       return retval;
     }
 
@@ -245,10 +240,6 @@
 
           if (weight == "bold")
             fc_weight = FC_WEIGHT_BOLD;
-          else if (weight == "light")
-            fc_weight = FC_WEIGHT_LIGHT;
-          else if (weight == "demi")
-            fc_weight = FC_WEIGHT_DEMIBOLD;
           else
             fc_weight = FC_WEIGHT_NORMAL;
 
--- a/libinterp/corefcn/graphics.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/graphics.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -5082,9 +5082,9 @@
 }
 
 /*
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("fltk", available_graphics_toolkits ()))
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("qt", available_graphics_toolkits ()))
 %! hf = figure ("visible", "off");
-%! graphics_toolkit (hf, "fltk");
+%! graphics_toolkit (hf, "qt");
 %! unwind_protect
 %!   subplot(2,1,1); plot(rand(10,1)); subplot(2,1,2); plot(rand(10,1));
 %!   hax = findall (gcf (), "type", "axes");
@@ -5102,9 +5102,9 @@
 %!   close (hf);
 %! end_unwind_protect
 
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("fltk", available_graphics_toolkits ()))
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("qt", available_graphics_toolkits ()))
 %! hf = figure ("visible", "off");
-%! graphics_toolkit (hf, "fltk");
+%! graphics_toolkit (hf, "qt");
 %! fpos = get (hf, "position");
 %! unwind_protect
 %!   plot (rand (3));
@@ -5122,9 +5122,9 @@
 %!   close (hf);
 %! end_unwind_protect
 
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("fltk", available_graphics_toolkits ()))
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("qt", available_graphics_toolkits ()))
 %! hf = figure ("visible", "off");
-%! graphics_toolkit (hf, "fltk");
+%! graphics_toolkit (hf, "qt");
 %! fpos = get (hf, "position");
 %! set (gca, "activepositionproperty", "position");
 %! unwind_protect
@@ -5283,8 +5283,6 @@
   // Note: dataspectratio (not mode) will be set through update_aspectratios
   dataaspectratiomode = "auto";
 
-  drawmode = "normal";
-
   fontangle = "normal";
   fontname = OCTAVE_DEFAULT_FONTNAME;
   fontsize = 10;
@@ -6116,7 +6114,9 @@
   Matrix bbox = get_boundingbox (true);
   Matrix ticklen = get_ticklength ().matrix_value ();
   ticklen(0) *= std::max (bbox(2), bbox(3));
-  ticklen(1) *= std::max (bbox(2), bbox(3));
+  // FIXME: This algorithm is not Matlab-compatible.  See bug #55483.
+  //        Scale the results of Octave's algorithm for better visuals.
+  ticklen(1) *= (0.76 * std::max (bbox(2), bbox(3)));
 
   xticklen = ticksign * (mode2D ? ticklen(0) : ticklen(1));
   yticklen = ticksign * (mode2D ? ticklen(0) : ticklen(1));
@@ -11219,9 +11219,7 @@
 gh_manager::create_instance (void)
 {
   instance = new gh_manager ();
-
-  if (instance)
-    singleton_cleanup_list::add (cleanup_instance);
+  singleton_cleanup_list::add (cleanup_instance);
 }
 
 graphics_handle
@@ -11834,8 +11832,9 @@
 %! setappdata (gcbf (), "cb_exec", [getappdata(gcbf (), "cb_exec") h]);
 %!endfunction
 %!
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("fltk", available_graphics_toolkits ()))
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("qt", available_graphics_toolkits ()))
 %! hf = figure ("visible", "off", "resizefcn", @cb);
+%! graphics_toolkit (hf, "qt");
 %! unwind_protect
 %!   ## Default
 %!   hui1 = uicontrol ("parent", hf, "interruptible", "on", "callback", @cb);
--- a/libinterp/corefcn/graphics.in.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/graphics.in.h	Thu Jan 24 20:20:02 2019 +0000
@@ -3187,16 +3187,6 @@
       any_property __zoom_mode__ h , Matrix ()
       double_property __device_pixel_ratio__ hU , 1.0
 
-      // Obsolete properties: doublebuffer, mincolormap, wvisual, wvisualmode,
-      //                      xdisplay, xvisual, xvisualmode
-      // FIXME: DEPRECATED: Remove in version 6.
-      bool_property doublebuffer hd , "on"
-      double_property mincolormap hd , 64
-      string_property wvisual hmd , ""
-      radio_property wvisualmode hd , "{auto}|manual"
-      string_property xdisplay hd , ""
-      string_property xvisual hmd , ""
-      radio_property xvisualmode hd , "{auto}|manual"
     END_PROPERTIES
 
   protected:
@@ -3637,7 +3627,6 @@
       array_property currentpoint , Matrix (2, 3, 0.0)
       row_vector_property dataaspectratio mu , Matrix (1, 3, 1.0)
       radio_property dataaspectratiomode u , "{auto}|manual"
-      radio_property drawmode hd , "{normal}|fast"
       radio_property fontangle u , "{normal}|italic"
       string_property fontname u , OCTAVE_DEFAULT_FONTNAME
       double_property fontsize u , 10
@@ -4363,7 +4352,7 @@
       string_property fontname u , OCTAVE_DEFAULT_FONTNAME
       double_property fontsize u , 10
       radio_property fontunits SU , "inches|centimeters|normalized|{points}|pixels"
-      radio_property fontweight u , "light|{normal}|demi|bold"
+      radio_property fontweight u , "{normal}|bold"
       radio_property horizontalalignment mu , "{left}|center|right"
       radio_property interpreter u , "{tex}|none|latex"
       radio_property linestyle , "{-}|--|:|-.|none"
@@ -4447,18 +4436,17 @@
     void update_color (void) { update_font (); update_text_extent (); }
     void update_fontname (void) { update_font (); update_text_extent (); }
     void update_fontsize (void) { update_font (); update_text_extent (); }
-    void update_fontangle (void) { update_font (); update_text_extent (); }
-
-    void update_fontweight (void)
+    void update_fontangle (void)
     {
       update_font ();
       update_text_extent ();
-      // FIXME: DEPRECATED: Remove warning with demi and light in version 6.
-      if (fontweight.is ("demi") || fontweight.is ("light"))
+      // FIXME: DEPRECATED: Remove warning for "oblique" in version 7.
+      if (fontangle.is ("oblique"))
         warning_with_id ("Octave:deprecated-property",
-                         "Setting 'fontweight' to '%s' is deprecated, \
-use 'normal' or 'bold'.", fontweight.current_value ().c_str ());
+                         "Setting 'fontangle' to '%s' is deprecated, \
+use 'italic' or 'normal'.", fontangle.current_value ().c_str ());
     }
+    void update_fontweight (void) { update_font (); update_text_extent (); }
 
     void update_interpreter (void) { update_text_extent (); }
     void update_horizontalalignment (void) { update_text_extent (); }
@@ -5464,7 +5452,7 @@
       string_property fontname u , OCTAVE_DEFAULT_FONTNAME
       double_property fontsize u , 10
       radio_property fontunits S , "inches|centimeters|normalized|{points}|pixels"
-      radio_property fontweight u , "light|{normal}|demi|bold"
+      radio_property fontweight u , "{normal}|bold"
       color_property foregroundcolor , color_values (0, 0, 0)
       radio_property horizontalalignment , "left|{center}|right"
       callback_property keypressfcn , Matrix ()
@@ -5507,17 +5495,16 @@
     void update_string (void) { update_text_extent (); }
     void update_fontname (void) { update_text_extent (); }
     void update_fontsize (void) { update_text_extent (); }
-    void update_fontangle (void) { update_text_extent (); }
-
-    void update_fontweight (void)
+    void update_fontangle (void)
     {
       update_text_extent ();
-      // FIXME: DEPRECATED: Remove warning with demi and light in version 6.
-      if (fontweight.is ("demi") || fontweight.is ("light"))
+      // FIXME: DEPRECATED: Remove warning for "oblique" in version 7.
+      if (fontangle.is ("oblique"))
         warning_with_id ("Octave:deprecated-property",
-                         "Setting 'fontweight' to '%s' is deprecated, \
-use 'normal' or 'bold'.", fontweight.current_value ().c_str ());
+                         "Setting 'fontangle' to '%s' is deprecated, \
+use 'italic' or 'normal'.", fontangle.current_value ().c_str ());
     }
+    void update_fontweight (void) { update_text_extent (); }
 
     void update_fontunits (const caseless_str& old_units);
 
@@ -5577,7 +5564,7 @@
       string_property fontname , OCTAVE_DEFAULT_FONTNAME
       double_property fontsize , 10
       radio_property fontunits S , "inches|centimeters|normalized|{points}|pixels"
-      radio_property fontweight u , "light|{normal}|demi|bold"
+      radio_property fontweight , "{normal}|bold"
       color_property foregroundcolor , color_values (0, 0, 0)
       color_property highlightcolor , color_values (1, 1, 1)
       array_property position S , default_panel_position ()
@@ -5610,15 +5597,7 @@
     // void update_fontname (void) { update_text_extent (); }
     // void update_fontsize (void) { update_text_extent (); }
     // void update_fontangle (void) { update_text_extent (); }
-
-    void update_fontweight (void)
-    {
-      // FIXME: DEPRECATED: Remove warning with demi and light in version 6.
-      if (fontweight.is ("demi") || fontweight.is ("light"))
-        warning_with_id ("Octave:deprecated-property",
-                         "Setting 'fontweight' to '%s' is deprecated, \
-use 'normal' or 'bold'.", fontweight.current_value ().c_str ());
-    }
+    // void update_fontweight (void) { update_fontweight (); }
 
     void update_units (const caseless_str& old_units);
     void update_fontunits (const caseless_str& old_units);
@@ -5677,7 +5656,7 @@
       string_property fontname , OCTAVE_DEFAULT_FONTNAME
       double_property fontsize , 10
       radio_property fontunits S , "inches|centimeters|normalized|{points}|pixels"
-      radio_property fontweight u , "light|{normal}|demi|bold"
+      radio_property fontweight , "{normal}|bold"
       color_property foregroundcolor , color_values (0, 0, 0)
       color_property highlightcolor , color_values (1, 1, 1)
       array_property position S , default_panel_position ()
@@ -5705,14 +5684,6 @@
     void update_units (const caseless_str& old_units);
     void update_fontunits (const caseless_str& old_units);
 
-    void update_fontweight (void)
-    {
-      // FIXME: DEPRECATED: Remove warning with demi and light in version 6.
-      if (fontweight.is ("demi") || fontweight.is ("light"))
-        warning_with_id ("Octave:deprecated-property",
-                         "Setting 'fontweight' to '%s' is deprecated, \
-use 'normal' or 'bold'.", fontweight.current_value ().c_str ());
-    }
   };
 
 private:
@@ -5779,7 +5750,7 @@
       string_property fontname u , OCTAVE_DEFAULT_FONTNAME
       double_property fontsize u , 10
       radio_property fontunits S , "inches|centimeters|normalized|{points}|pixels"
-      radio_property fontweight u , "light|{normal}|demi|bold"
+      radio_property fontweight u , "{normal}|bold"
       color_property foregroundcolor , color_values (0, 0, 0)
       callback_property keypressfcn , Matrix ()
       callback_property keyreleasefcn , Matrix ()
@@ -5813,18 +5784,16 @@
     void update_data (void) { update_table_extent (); }
     void update_fontname (void) { update_table_extent (); }
     void update_fontsize (void) { update_table_extent (); }
-    void update_fontangle (void) { update_table_extent (); }
-
-    void update_fontweight (void)
+    void update_fontangle (void)
     {
-      // FIXME: DEPRECATED: Remove warning with demi and light in version 6.
-      if (fontweight.is ("demi") || fontweight.is ("light"))
+      update_table_extent ();
+      // FIXME: DEPRECATED: Remove warning for "oblique" in version 7.
+      if (fontangle.is ("oblique"))
         warning_with_id ("Octave:deprecated-property",
-                         "Setting 'fontweight' to '%s' is deprecated, \
-use 'normal' or 'bold'.", fontweight.current_value ().c_str ());
-
-      update_table_extent ();
+                         "Setting 'fontangle' to '%s' is deprecated, \
+use 'italic' or 'normal'.", fontangle.current_value ().c_str ());
     }
+    void update_fontweight (void) { update_table_extent (); }
   };
 
 private:
--- a/libinterp/corefcn/interpreter.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/interpreter.h	Thu Jan 24 20:20:02 2019 +0000
@@ -340,29 +340,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::interpreter::recover_from_exception' instead")
-static inline void
-recover_from_exception (void)
-{
-  octave::interpreter::recover_from_exception ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::interpreter::add_atexit_function' instead")
-static inline void
-add_atexit_function (const std::string& fname)
-{
-  octave::interpreter::add_atexit_function (fname);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::interpreter::remove_atexit_function' instead")
-static inline bool
-remove_atexit_function (const std::string& fname)
-{
-  return octave::interpreter::remove_atexit_function (fname);
-}
-
 #endif
-
-#endif
--- a/libinterp/corefcn/oct-errno.in.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/oct-errno.in.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -296,14 +296,9 @@
   if (! instance)
     {
       instance = new octave_errno ();
-
-      if (instance)
-        singleton_cleanup_list::add (cleanup_instance);
+      singleton_cleanup_list::add (cleanup_instance);
     }
 
-  if (! instance)
-    error ("unable to create errno object!");
-
   return retval;
 }
 
--- a/libinterp/corefcn/oct-stream.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/oct-stream.h	Thu Jan 24 20:20:02 2019 +0000
@@ -461,17 +461,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::base_stream' instead")
-typedef octave::base_stream octave_base_stream;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::stream' instead")
-typedef octave::stream octave_stream;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::stream_list' instead")
-typedef octave::stream_list octave_stream_list;
-
 #endif
-
-#endif
--- a/libinterp/corefcn/pager.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/pager.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -426,13 +426,10 @@
       {
         m_external_pager = new oprocstream (pgr.c_str ());
 
-        if (m_external_pager)
-          {
-            octave::child_list& kids = m_interpreter.get_child_list ();
+        octave::child_list& kids = m_interpreter.get_child_list ();
 
-            kids.insert (m_external_pager->pid (),
-                         pager_event_handler);
-          }
+        kids.insert (m_external_pager->pid (),
+                     pager_event_handler);
       }
   }
 
--- a/libinterp/corefcn/pager.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/pager.h	Thu Jan 24 20:20:02 2019 +0000
@@ -307,29 +307,6 @@
   extern std::ostream& __diary__ (void);
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::diary_buf' instead")
-typedef octave::diary_buf octave_diary_buf;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::diary_stream' instead")
-typedef octave::diary_stream octave_diary_stream;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::pager_buf' instead")
-typedef octave::pager_buf octave_pager_buf;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::pager_stream' instead")
-typedef octave::pager_stream octave_pager_stream;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::flush_stdout' instead")
-static inline void
-flush_octave_stdout (void)
-{
-  return octave::flush_stdout ();
-}
-
-#endif
-
 #define octave_stdout (octave::__stdout__ ())
 
 #define octave_diary (octave::__diary__ ())
--- a/libinterp/corefcn/variables.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/variables.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -1512,130 +1512,6 @@
 
 // The following functions are deprecated.
 
-void
-mlock (void)
-{
-  octave::interpreter& interp = octave::__get_interpreter__ ("mlock");
-
-  interp.mlock ();
-}
-
-void
-munlock (const std::string& nm)
-{
-  octave::interpreter& interp = octave::__get_interpreter__ ("mlock");
-
-  return interp.munlock (nm);
-}
-
-bool
-mislocked (const std::string& nm)
-{
-  octave::interpreter& interp = octave::__get_interpreter__ ("mlock");
-
-  return interp.mislocked (nm);
-}
-
-void
-bind_ans (const octave_value& val, bool print)
-{
-  octave::tree_evaluator& tw = octave::__get_evaluator__ ("bind_ans");
-
-  tw.bind_ans (val, print);
-}
-
-void
-clear_mex_functions (void)
-{
-  octave::symbol_table& symtab =
-    octave::__get_symbol_table__ ("clear_mex_functions");
-
-  symtab.clear_mex_functions ();
-}
-
-void
-clear_function (const std::string& nm)
-{
-  octave::symbol_table& symtab = octave::__get_symbol_table__ ("clear_function");
-
-  symtab.clear_function (nm);
-}
-
-void
-clear_variable (const std::string& nm)
-{
-  octave::symbol_scope scope
-    = octave::__get_current_scope__ ("clear_variable");
-
-  if (scope)
-    scope.clear_variable (nm);
-}
-
-void
-clear_symbol (const std::string& nm)
-{
-  octave::symbol_table& symtab = octave::__get_symbol_table__ ("clear_symbol");
-
-  symtab.clear_symbol (nm);
-}
-
-octave_value
-lookup_function_handle (const std::string& nm)
-{
-  octave::symbol_scope scope
-    = octave::__get_current_scope__ ("lookup_function_handle");
-
-  octave_value val = scope ? scope.varval (nm) : octave_value ();
-
-  return val.is_function_handle () ? val : octave_value ();
-}
-
-octave_value
-get_global_value (const std::string& nm, bool silent)
-{
-  octave::symbol_table& symtab =
-    octave::__get_symbol_table__ ("get_global_value");
-
-  octave_value val = symtab.global_varval (nm);
-
-  if (val.is_undefined () && ! silent)
-    error ("get_global_value: undefined symbol '%s'", nm.c_str ());
-
-  return val;
-}
-
-void
-set_global_value (const std::string& nm, const octave_value& val)
-{
-  octave::symbol_table& symtab =
-    octave::__get_symbol_table__ ("set_global_value");
-
-  symtab.global_assign (nm, val);
-}
-
-octave_value
-get_top_level_value (const std::string& nm, bool silent)
-{
-  octave::symbol_table& symtab =
-    octave::__get_symbol_table__ ("get_top_level_value");
-
-  octave_value val = symtab.top_level_varval (nm);
-
-  if (val.is_undefined () && ! silent)
-    error ("get_top_level_value: undefined symbol '%s'", nm.c_str ());
-
-  return val;
-}
-
-void
-set_top_level_value (const std::string& nm, const octave_value& val)
-{
-  octave::symbol_table& symtab =
-    octave::__get_symbol_table__ ("set_top_level_value");
-
-  symtab.top_level_assign (nm, val);
-}
-
 string_vector
 get_struct_elts (const std::string& text)
 {
--- a/libinterp/corefcn/variables.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/corefcn/variables.h	Thu Jan 24 20:20:02 2019 +0000
@@ -111,50 +111,6 @@
 
 extern OCTINTERP_API void maybe_missing_function_hook (const std::string& name);
 
-OCTAVE_DEPRECATED (4.4, "use 'interpreter::mlock' instead")
-extern OCTINTERP_API void mlock (void);
-
-OCTAVE_DEPRECATED (4.4, "use 'interpreter::munlock' instead")
-extern OCTINTERP_API void munlock (const std::string&);
-
-OCTAVE_DEPRECATED (4.4, "use 'interpreter::mislocked' instead")
-extern OCTINTERP_API bool mislocked (const std::string&);
-
-OCTAVE_DEPRECATED (4.4, "use 'tree_evaluator::bind_ans' instead")
-extern OCTINTERP_API void bind_ans (const octave_value& val, bool print);
-
-OCTAVE_DEPRECATED (4.4, "use 'symbol_table::clear_mex_functions' instead")
-extern OCTINTERP_API void clear_mex_functions (void);
-
-OCTAVE_DEPRECATED (4.4, "use 'symbol_table::clear_function' instead")
-extern OCTINTERP_API void clear_function (const std::string& nm);
-
-OCTAVE_DEPRECATED (4.4, "use 'symbol_table::clear_variable' instead")
-extern OCTINTERP_API void clear_variable (const std::string& nm);
-
-OCTAVE_DEPRECATED (4.4, "use 'symbol_table::clear_symbol' instead")
-extern OCTINTERP_API void clear_symbol (const std::string& nm);
-
-OCTAVE_DEPRECATED (4.4, "use 'symbol_table::varval' instead")
-extern OCTINTERP_API octave_value
-lookup_function_handle (const std::string& nm);
-
-OCTAVE_DEPRECATED (4.4, "use 'symbol_table::global_varval' instead")
-extern OCTINTERP_API octave_value
-get_global_value (const std::string& nm, bool silent = false);
-
-OCTAVE_DEPRECATED (4.4, "use 'symbol_table::global_assign' instead")
-extern OCTINTERP_API void
-set_global_value (const std::string& nm, const octave_value& val);
-
-OCTAVE_DEPRECATED (4.4, "use 'symbol_table::top_level_varval' instead")
-extern OCTINTERP_API octave_value
-get_top_level_value (const std::string& nm, bool silent = false);
-
-OCTAVE_DEPRECATED (4.4, "use 'symbol_table::top_level_assign' instead")
-extern OCTINTERP_API void
-set_top_level_value (const std::string& nm, const octave_value& val);
-
 OCTAVE_DEPRECATED (5, "this function will be removed in a future version of Octave")
 extern OCTINTERP_API string_vector
 get_struct_elts (const std::string& text);
--- a/libinterp/dldfcn/__init_fltk__.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/dldfcn/__init_fltk__.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -1852,9 +1852,6 @@
     if (! instance)
       instance = new figure_manager ();
 
-    if (! instance)
-      error ("unable to create figure_manager object!");
-
     return retval;
   }
 
--- a/libinterp/dldfcn/audiodevinfo.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/dldfcn/audiodevinfo.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -2255,9 +2255,6 @@
 
   audioplayer *recorder = new audioplayer ();
 
-  if (! recorder)
-    error ("__player_audioplayer__: Couldn't instantiate new audioplayer");
-
   bool is_function = (args(0).is_string () || args(0).is_function_handle ()
                       || args(0).is_inline_function ());
 
--- a/libinterp/octave-value/ov-base-int.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-base-int.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -325,7 +325,7 @@
 
 template <typename T>
 bool
-octave_base_int_matrix<T>::save_binary (std::ostream& os, bool&)
+octave_base_int_matrix<T>::save_binary (std::ostream& os, bool)
 {
   dim_vector dv = this->dims ();
   if (dv.ndims () < 1)
@@ -691,7 +691,7 @@
 
 template <typename T>
 bool
-octave_base_int_scalar<T>::save_binary (std::ostream& os, bool&)
+octave_base_int_scalar<T>::save_binary (std::ostream& os, bool)
 {
   os.write (reinterpret_cast<char *> (&(this->scalar)), this->byte_size ());
   return true;
--- a/libinterp/octave-value/ov-base-int.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-base-int.h	Thu Jan 24 20:20:02 2019 +0000
@@ -91,7 +91,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool&);
+  bool save_binary (std::ostream& os, bool);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format);
@@ -156,7 +156,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool&);
+  bool save_binary (std::ostream& os, bool);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format);
--- a/libinterp/octave-value/ov-base-sparse.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-base-sparse.h	Thu Jan 24 20:20:02 2019 +0000
@@ -150,9 +150,6 @@
 
   bool is_true (void) const;
 
-  OCTAVE_DEPRECATED (4.4, "use 'nzmax' instead")
-  octave_idx_type capacity (void) const { return nzmax (); }
-
   bool print_as_scalar (void) const;
 
   void print (std::ostream& os, bool pr_as_read_syntax = false);
--- a/libinterp/octave-value/ov-base.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-base.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -941,7 +941,7 @@
 }
 
 bool
-octave_base_value::save_binary (std::ostream&, bool&)
+octave_base_value::save_binary (std::ostream&, bool)
 {
   err_wrong_type_arg ("octave_base_value::save_binary()", type_name ());
 }
--- a/libinterp/octave-value/ov-base.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-base.h	Thu Jan 24 20:20:02 2019 +0000
@@ -332,10 +332,6 @@
 
   virtual octave_idx_type numel (void) const { return dims ().numel (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'numel' instead")
-  virtual octave_idx_type capacity (void) const
-  { return numel (); }
-
   virtual size_t byte_size (void) const { return 0; }
 
   virtual octave_idx_type nnz (void) const;
@@ -676,7 +672,7 @@
 
   virtual bool load_ascii (std::istream& is);
 
-  virtual bool save_binary (std::ostream& os, bool& save_as_floats);
+  virtual bool save_binary (std::ostream& os, bool save_as_floats);
 
   virtual bool load_binary (std::istream& is, bool swap,
                             octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-bool-mat.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-bool-mat.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -343,7 +343,7 @@
 }
 
 bool
-octave_bool_matrix::save_binary (std::ostream& os, bool& /* save_as_floats */)
+octave_bool_matrix::save_binary (std::ostream& os, bool /* save_as_floats */)
 {
 
   dim_vector dv = dims ();
--- a/libinterp/octave-value/ov-bool-mat.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-bool-mat.h	Thu Jan 24 20:20:02 2019 +0000
@@ -213,7 +213,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-bool-sparse.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-bool-sparse.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -202,7 +202,7 @@
 }
 
 bool
-octave_sparse_bool_matrix::save_binary (std::ostream& os, bool&)
+octave_sparse_bool_matrix::save_binary (std::ostream& os, bool)
 {
   dim_vector dv = this->dims ();
   if (dv.ndims () < 1)
--- a/libinterp/octave-value/ov-bool-sparse.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-bool-sparse.h	Thu Jan 24 20:20:02 2019 +0000
@@ -132,7 +132,7 @@
 
   octave_value as_double (void) const;
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-bool.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-bool.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -203,7 +203,7 @@
 }
 
 bool
-octave_bool::save_binary (std::ostream& os, bool& /* save_as_floats */)
+octave_bool::save_binary (std::ostream& os, bool /* save_as_floats */)
 {
   char tmp = (scalar ? 1 : 0);
   os.write (reinterpret_cast<char *> (&tmp), 1);
--- a/libinterp/octave-value/ov-bool.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-bool.h	Thu Jan 24 20:20:02 2019 +0000
@@ -226,7 +226,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-cell.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-cell.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -887,7 +887,7 @@
 }
 
 bool
-octave_cell::save_binary (std::ostream& os, bool& save_as_floats)
+octave_cell::save_binary (std::ostream& os, bool save_as_floats)
 {
   dim_vector dv = dims ();
   if (dv.ndims () < 1)
--- a/libinterp/octave-value/ov-cell.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-cell.h	Thu Jan 24 20:20:02 2019 +0000
@@ -152,7 +152,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-class.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-class.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -1270,7 +1270,7 @@
 }
 
 bool
-octave_class::save_binary (std::ostream& os, bool& save_as_floats)
+octave_class::save_binary (std::ostream& os, bool save_as_floats)
 {
   int32_t classname_len = class_name ().length ();
 
--- a/libinterp/octave-value/ov-class.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-class.h	Thu Jan 24 20:20:02 2019 +0000
@@ -189,7 +189,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-complex.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-complex.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -324,7 +324,7 @@
 }
 
 bool
-octave_complex::save_binary (std::ostream& os, bool& /* save_as_floats */)
+octave_complex::save_binary (std::ostream& os, bool /* save_as_floats */)
 {
   char tmp = static_cast<char> (LS_DOUBLE);
   os.write (reinterpret_cast<char *> (&tmp), 1);
--- a/libinterp/octave-value/ov-complex.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-complex.h	Thu Jan 24 20:20:02 2019 +0000
@@ -169,7 +169,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-cx-diag.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-cx-diag.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -177,7 +177,7 @@
 }
 
 bool
-octave_complex_diag_matrix::save_binary (std::ostream& os, bool& save_as_floats)
+octave_complex_diag_matrix::save_binary (std::ostream& os, bool save_as_floats)
 {
 
   int32_t r = matrix.rows ();
--- a/libinterp/octave-value/ov-cx-diag.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-cx-diag.h	Thu Jan 24 20:20:02 2019 +0000
@@ -82,7 +82,7 @@
   octave_value as_double (void) const;
   octave_value as_single (void) const;
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-cx-mat.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-cx-mat.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -410,7 +410,7 @@
 }
 
 bool
-octave_complex_matrix::save_binary (std::ostream& os, bool& save_as_floats)
+octave_complex_matrix::save_binary (std::ostream& os, bool save_as_floats)
 {
   dim_vector dv = dims ();
   if (dv.ndims () < 1)
--- a/libinterp/octave-value/ov-cx-mat.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-cx-mat.h	Thu Jan 24 20:20:02 2019 +0000
@@ -153,7 +153,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-cx-sparse.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-cx-sparse.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -219,7 +219,7 @@
 
 bool
 octave_sparse_complex_matrix::save_binary (std::ostream& os,
-                                           bool& save_as_floats)
+                                           bool save_as_floats)
 {
   dim_vector dv = this->dims ();
   if (dv.ndims () < 1)
--- a/libinterp/octave-value/ov-cx-sparse.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-cx-sparse.h	Thu Jan 24 20:20:02 2019 +0000
@@ -138,7 +138,7 @@
   }
 #endif
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-fcn-handle.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-fcn-handle.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -535,7 +535,7 @@
 }
 
 bool
-octave_fcn_handle::save_binary (std::ostream& os, bool& save_as_floats)
+octave_fcn_handle::save_binary (std::ostream& os, bool save_as_floats)
 {
   if (nm == anonymous)
     {
--- a/libinterp/octave-value/ov-fcn-handle.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-fcn-handle.h	Thu Jan 24 20:20:02 2019 +0000
@@ -137,7 +137,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-fcn-inline.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-fcn-inline.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -201,7 +201,7 @@
 }
 
 bool
-octave_fcn_inline::save_binary (std::ostream& os, bool&)
+octave_fcn_inline::save_binary (std::ostream& os, bool)
 {
   int32_t tmp = ifargs.numel ();
   os.write (reinterpret_cast<char *> (&tmp), 4);
--- a/libinterp/octave-value/ov-fcn-inline.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-fcn-inline.h	Thu Jan 24 20:20:02 2019 +0000
@@ -74,7 +74,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-float.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-float.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -215,7 +215,7 @@
 }
 
 bool
-octave_float_scalar::save_binary (std::ostream& os, bool& /* save_as_floats */)
+octave_float_scalar::save_binary (std::ostream& os, bool /* save_as_floats */)
 {
   char tmp = LS_FLOAT;
   os.write (reinterpret_cast<char *> (&tmp), 1);
--- a/libinterp/octave-value/ov-float.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-float.h	Thu Jan 24 20:20:02 2019 +0000
@@ -241,7 +241,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-flt-complex.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-flt-complex.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -271,7 +271,7 @@
 }
 
 bool
-octave_float_complex::save_binary (std::ostream& os, bool& /* save_as_floats */)
+octave_float_complex::save_binary (std::ostream& os, bool /* save_as_floats */)
 {
   char tmp = static_cast<char> (LS_FLOAT);
   os.write (reinterpret_cast<char *> (&tmp), 1);
--- a/libinterp/octave-value/ov-flt-complex.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-flt-complex.h	Thu Jan 24 20:20:02 2019 +0000
@@ -165,7 +165,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-flt-cx-diag.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-flt-cx-diag.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -158,7 +158,7 @@
 
 bool
 octave_float_complex_diag_matrix::save_binary (std::ostream& os,
-                                               bool& /* save_as_floats */)
+                                               bool /* save_as_floats */)
 {
 
   int32_t r = matrix.rows ();
--- a/libinterp/octave-value/ov-flt-cx-diag.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-flt-cx-diag.h	Thu Jan 24 20:20:02 2019 +0000
@@ -80,7 +80,7 @@
   octave_value as_double (void) const;
   octave_value as_single (void) const;
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-flt-cx-mat.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-flt-cx-mat.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -384,7 +384,7 @@
 }
 
 bool
-octave_float_complex_matrix::save_binary (std::ostream& os, bool&)
+octave_float_complex_matrix::save_binary (std::ostream& os, bool)
 {
   dim_vector dv = dims ();
   if (dv.ndims () < 1)
--- a/libinterp/octave-value/ov-flt-cx-mat.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-flt-cx-mat.h	Thu Jan 24 20:20:02 2019 +0000
@@ -149,7 +149,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-flt-re-diag.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-flt-re-diag.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -176,7 +176,7 @@
 
 bool
 octave_float_diag_matrix::save_binary (std::ostream& os,
-                                       bool& /* save_as_floats*/)
+                                       bool /* save_as_floats*/)
 {
 
   int32_t r = matrix.rows ();
--- a/libinterp/octave-value/ov-flt-re-diag.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-flt-re-diag.h	Thu Jan 24 20:20:02 2019 +0000
@@ -90,7 +90,7 @@
   octave_value as_uint32 (void) const;
   octave_value as_uint64 (void) const;
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-flt-re-mat.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-flt-re-mat.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -461,7 +461,7 @@
 }
 
 bool
-octave_float_matrix::save_binary (std::ostream& os, bool&)
+octave_float_matrix::save_binary (std::ostream& os, bool)
 {
   dim_vector dv = dims ();
   if (dv.ndims () < 1)
--- a/libinterp/octave-value/ov-flt-re-mat.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-flt-re-mat.h	Thu Jan 24 20:20:02 2019 +0000
@@ -197,7 +197,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-java.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-java.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -2340,7 +2340,7 @@
 }
 
 bool
-octave_java::save_binary (std::ostream& /* os */, bool& /* save_as_floats */)
+octave_java::save_binary (std::ostream& /* os */, bool /* save_as_floats */)
 {
   warning ("save: unable to save java objects, skipping");
 
--- a/libinterp/octave-value/ov-java.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-java.h	Thu Jan 24 20:20:02 2019 +0000
@@ -81,7 +81,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-lazy-idx.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-lazy-idx.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -237,7 +237,7 @@
   return true;
 }
 
-bool octave_lazy_index::save_binary (std::ostream& os, bool& save_as_floats)
+bool octave_lazy_index::save_binary (std::ostream& os, bool save_as_floats)
 {
   return save_binary_data (os, make_value (), value_save_tag,
                            "", false, save_as_floats);
--- a/libinterp/octave-value/ov-lazy-idx.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-lazy-idx.h	Thu Jan 24 20:20:02 2019 +0000
@@ -209,7 +209,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-oncleanup.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-oncleanup.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -134,7 +134,7 @@
 
 bool
 octave_oncleanup::save_binary (std::ostream& /* os */,
-                               bool& /* save_as_floats */)
+                               bool /* save_as_floats */)
 {
   warning ("save: unable to save onCleanup variables, skipping");
 
--- a/libinterp/octave-value/ov-oncleanup.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-oncleanup.h	Thu Jan 24 20:20:02 2019 +0000
@@ -72,7 +72,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-perm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-perm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -368,7 +368,7 @@
 }
 
 bool
-octave_perm_matrix::save_binary (std::ostream& os, bool&)
+octave_perm_matrix::save_binary (std::ostream& os, bool)
 {
 
   int32_t sz = matrix.rows ();
--- a/libinterp/octave-value/ov-perm.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-perm.h	Thu Jan 24 20:20:02 2019 +0000
@@ -218,7 +218,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-range.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-range.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -566,7 +566,7 @@
 }
 
 bool
-octave_range::save_binary (std::ostream& os, bool& /* save_as_floats */)
+octave_range::save_binary (std::ostream& os, bool /* save_as_floats */)
 {
   char tmp = LS_DOUBLE;
   os.write (reinterpret_cast<char *> (&tmp), 1);
--- a/libinterp/octave-value/ov-range.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-range.h	Thu Jan 24 20:20:02 2019 +0000
@@ -279,7 +279,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-re-diag.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-re-diag.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -243,7 +243,7 @@
 }
 
 bool
-octave_diag_matrix::save_binary (std::ostream& os, bool& save_as_floats)
+octave_diag_matrix::save_binary (std::ostream& os, bool save_as_floats)
 {
 
   int32_t r = matrix.rows ();
--- a/libinterp/octave-value/ov-re-diag.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-re-diag.h	Thu Jan 24 20:20:02 2019 +0000
@@ -95,7 +95,7 @@
   octave_value as_uint32 (void) const;
   octave_value as_uint64 (void) const;
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-re-mat.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-re-mat.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -564,7 +564,7 @@
 }
 
 bool
-octave_matrix::save_binary (std::ostream& os, bool& save_as_floats)
+octave_matrix::save_binary (std::ostream& os, bool save_as_floats)
 {
 
   dim_vector dv = dims ();
--- a/libinterp/octave-value/ov-re-mat.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-re-mat.h	Thu Jan 24 20:20:02 2019 +0000
@@ -221,7 +221,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-re-sparse.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-re-sparse.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -244,7 +244,7 @@
 }
 
 bool
-octave_sparse_matrix::save_binary (std::ostream& os, bool& save_as_floats)
+octave_sparse_matrix::save_binary (std::ostream& os, bool save_as_floats)
 {
   dim_vector dv = this->dims ();
   if (dv.ndims () < 1)
--- a/libinterp/octave-value/ov-re-sparse.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-re-sparse.h	Thu Jan 24 20:20:02 2019 +0000
@@ -141,7 +141,7 @@
   { return os.write (matrix, block_size, output_type, skip, flt_fmt); }
 #endif
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-scalar.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-scalar.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -235,7 +235,7 @@
 }
 
 bool
-octave_scalar::save_binary (std::ostream& os, bool& /* save_as_floats */)
+octave_scalar::save_binary (std::ostream& os, bool /* save_as_floats */)
 {
   char tmp = LS_DOUBLE;
   os.write (reinterpret_cast<char *> (&tmp), 1);
--- a/libinterp/octave-value/ov-scalar.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-scalar.h	Thu Jan 24 20:20:02 2019 +0000
@@ -244,7 +244,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-str-mat.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-str-mat.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -456,7 +456,7 @@
 
 bool
 octave_char_matrix_str::save_binary (std::ostream& os,
-                                     bool& /* save_as_floats */)
+                                     bool /* save_as_floats */)
 {
   dim_vector dv = dims ();
   if (dv.ndims () < 1)
--- a/libinterp/octave-value/ov-str-mat.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-str-mat.h	Thu Jan 24 20:20:02 2019 +0000
@@ -153,7 +153,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-struct.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-struct.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -791,7 +791,7 @@
 }
 
 bool
-octave_struct::save_binary (std::ostream& os, bool& save_as_floats)
+octave_struct::save_binary (std::ostream& os, bool save_as_floats)
 {
   octave_map m = map_value ();
 
@@ -1451,7 +1451,7 @@
 }
 
 bool
-octave_scalar_struct::save_binary (std::ostream& os, bool& save_as_floats)
+octave_scalar_struct::save_binary (std::ostream& os, bool save_as_floats)
 {
   octave_map m = map_value ();
 
--- a/libinterp/octave-value/ov-struct.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-struct.h	Thu Jan 24 20:20:02 2019 +0000
@@ -138,7 +138,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
@@ -262,7 +262,7 @@
 
   bool load_ascii (std::istream& is);
 
-  bool save_binary (std::ostream& os, bool& save_as_floats);
+  bool save_binary (std::ostream& os, bool save_as_floats);
 
   bool load_binary (std::istream& is, bool swap,
                     octave::mach_info::float_format fmt);
--- a/libinterp/octave-value/ov-typeinfo.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-typeinfo.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -770,112 +770,6 @@
     return type_info.register_type (t_name, c_name, val);
   }
 
-  bool register_unary_class_op (octave_value::unary_op op,
-                                unary_class_op_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_unary_class_op");
-
-    return type_info.register_unary_class_op (op, f);
-  }
-
-  bool register_unary_op (octave_value::unary_op op,
-                          int t, unary_op_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_unary_op");
-
-    return type_info.register_unary_op (op, t, f);
-  }
-
-  bool register_non_const_unary_op (octave_value::unary_op op,
-                                    int t, non_const_unary_op_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_non_const_unary_op");
-
-    return type_info.register_non_const_unary_op (op, t, f);
-  }
-
-  bool register_binary_class_op (octave_value::binary_op op,
-                                 binary_class_op_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_binary_class_op");
-
-    return type_info.register_binary_class_op (op, f);
-  }
-
-  bool register_binary_op (octave_value::binary_op op,
-                           int t1, int t2, binary_op_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_binary_op");
-
-    return type_info.register_binary_op (op, t1, t2, f);
-  }
-
-  bool register_binary_class_op (octave_value::compound_binary_op op,
-                                 binary_class_op_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_binary_class_op");
-
-    return type_info.register_binary_class_op (op, f);
-  }
-
-  bool register_binary_op (octave_value::compound_binary_op op,
-                           int t1, int t2, binary_op_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_binary_op");
-
-    return type_info.register_binary_op (op, t1, t2, f);
-  }
-
-  bool register_cat_op (int t1, int t2, cat_op_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_cat_op");
-
-    return type_info.register_cat_op (t1, t2, f);
-  }
-
-  bool register_assign_op (octave_value::assign_op op,
-                           int t_lhs, int t_rhs, assign_op_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_assign_op");
-
-    return type_info.register_assign_op (op, t_lhs, t_rhs, f);
-  }
-
-  bool register_assignany_op (octave_value::assign_op op,
-                              int t_lhs, assignany_op_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_assignany_op");
-
-    return type_info.register_assignany_op (op, t_lhs, f);
-  }
-
-  bool register_pref_assign_conv (int t_lhs, int t_rhs, int t_result)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_pref_assign_conv");
-
-    return type_info.register_pref_assign_conv (t_lhs, t_rhs, t_result);
-  }
-
-  bool register_widening_op (int t, int t_result,
-                             octave_base_value::type_conv_fcn f)
-  {
-    octave::type_info& type_info
-      = octave::__get_type_info__ ("register_widening_op");
-
-    return type_info.register_widening_op (t, t_result, f);
-  }
-
   octave_value lookup_type (const std::string& nm)
   {
     octave::type_info& type_info
--- a/libinterp/octave-value/ov-typeinfo.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov-typeinfo.h	Thu Jan 24 20:20:02 2019 +0000
@@ -286,52 +286,6 @@
                             const std::string& c_name,
                             const octave_value& val);
 
-  OCTAVE_DEPRECATED(4.4, "use octave::type_info::register_unary_class_op instead")
-  extern bool register_unary_class_op (octave_value::unary_op op,
-                                       unary_class_op_fcn f);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_unary_op instead")
-  extern bool register_unary_op (octave_value::unary_op op,
-                                 int t, unary_op_fcn f);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_non_const_unary_op instead")
-  extern bool register_non_const_unary_op (octave_value::unary_op op,
-                                           int t, non_const_unary_op_fcn f);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_binary_class_op instead")
-  extern bool register_binary_class_op (octave_value::binary_op op,
-                                        binary_class_op_fcn f);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_binary_op instead")
-  extern bool register_binary_op (octave_value::binary_op op,
-                                  int t1, int t2, binary_op_fcn f);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_binary_class_op instead")
-  extern bool register_binary_class_op (octave_value::compound_binary_op op,
-                                        binary_class_op_fcn f);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_binary_op instead")
-  extern bool register_binary_op (octave_value::compound_binary_op op,
-                                  int t1, int t2, binary_op_fcn f);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_cat_op instead")
-  extern bool register_cat_op (int t1, int t2, cat_op_fcn f);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_assign_op instead")
-  extern bool register_assign_op (octave_value::assign_op op,
-                                  int t_lhs, int t_rhs, assign_op_fcn f);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_assignany_op instead")
-  extern bool register_assignany_op (octave_value::assign_op op,
-                                     int t_lhs, assignany_op_fcn f);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_pref_assign_conv instead")
-  extern bool register_pref_assign_conv (int t_lhs, int t_rhs, int t_result);
-
-  OCTAVE_DEPRECATED (4.4, "use octave::type_info::register_widening_op instead")
-  extern bool register_widening_op (int t, int t_result,
-                                    octave_base_value::type_conv_fcn f);
-
   extern octave_value lookup_type (const std::string& nm);
 
   extern unary_class_op_fcn lookup_unary_class_op (octave_value::unary_op op);
--- a/libinterp/octave-value/ov.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -1106,10 +1106,6 @@
   : rep (new octave_class (m, id, plist))
 { }
 
-octave_value::octave_value (const octave_value_list& l, bool)
-  : rep (new octave_cs_list (l))
-{ }
-
 octave_value::octave_value (const octave_value_list& l)
   : rep (new octave_cs_list (l))
 { }
--- a/libinterp/octave-value/ov.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave-value/ov.h	Thu Jan 24 20:20:02 2019 +0000
@@ -291,9 +291,6 @@
   octave_value (const octave_scalar_map& m, const std::string& id,
                 const std::list<std::string>& plist);
 
-  OCTAVE_DEPRECATED (4.4, "note: second argument is always ignored; use octave_value (const octave_value_list&) instead")
-  octave_value (const octave_value_list& m, bool);
-
   // This one is explicit because it can cause some trouble to
   // accidentally create a cs-list when one was not intended.
   explicit octave_value (const octave_value_list& m);
@@ -487,10 +484,6 @@
   octave_idx_type numel (void) const
   { return rep->numel (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'numel' instead")
-  octave_idx_type capacity (void) const
-  { return rep->numel (); }
-
   size_t byte_size (void) const
   { return rep->byte_size (); }
 
@@ -530,24 +523,12 @@
   bool isempty (void) const
   { return rep->isempty (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isempty' instead")
-  bool is_empty (void) const
-  { return rep->isempty (); }
-
   bool iscell (void) const
   { return rep->iscell (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'iscell' instead")
-  bool is_cell (void) const
-  { return rep->iscell (); }
-
   bool iscellstr (void) const
   { return rep->iscellstr (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'iscellstr' instead")
-  bool is_cellstr (void) const
-  { return rep->iscellstr (); }
-
   bool is_real_scalar (void) const
   { return rep->is_real_scalar (); }
 
@@ -590,10 +571,6 @@
   bool isstruct (void) const
   { return rep->isstruct (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isstruct' instead")
-  bool is_map (void) const
-  { return rep->isstruct (); }
-
   bool is_classdef_meta (void) const
   { return rep->is_classdef_meta (); }
 
@@ -609,17 +586,9 @@
   bool isobject (void) const
   { return rep->isobject (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isobject' instead")
-  bool is_object (void) const
-  { return rep->isobject (); }
-
   bool isjava (void) const
   { return rep->isjava (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isjava' instead")
-  bool is_java (void) const
-  { return rep->isjava (); }
-
   bool is_cs_list (void) const
   { return rep->is_cs_list (); }
 
@@ -629,10 +598,6 @@
   bool isnull (void) const
   { return rep->isnull (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isnull' instead")
-  bool is_null_value (void) const
-  { return rep->isnull (); }
-
   // Are any or all of the elements in this constant nonzero?
 
   octave_value all (int dim = 0) const
@@ -655,10 +620,6 @@
   bool isfloat (void) const
   { return rep->isfloat (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isfloat' instead")
-  bool is_float_type (void) const
-  { return rep->isfloat (); }
-
   // Integer types.
 
   bool is_int8_type (void) const
@@ -688,33 +649,17 @@
   bool isinteger (void) const
   { return rep->isinteger (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isinteger' instead")
-  bool is_integer_type (void) const
-  { return rep->isinteger (); }
-
   // Other type stuff.
 
   bool islogical (void) const
   { return rep->islogical (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'islogical' instead")
-  bool is_bool_type (void) const
-  { return rep->islogical (); }
-
   bool isreal (void) const
   { return rep->isreal (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isreal' instead")
-  bool is_real_type (void) const
-  { return rep->isreal (); }
-
   bool iscomplex (void) const
   { return rep->iscomplex (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'iscomplex' instead")
-  bool is_complex_type (void) const
-  { return rep->iscomplex (); }
-
   bool is_scalar_type (void) const
   { return rep->is_scalar_type (); }
 
@@ -724,17 +669,9 @@
   bool isnumeric (void) const
   { return rep->isnumeric (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isnumeric' instead")
-  bool is_numeric_type (void) const
-  { return rep->isnumeric (); }
-
   bool issparse (void) const
   { return rep->issparse (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'issparse' instead")
-  bool is_sparse_type (void) const
-  { return rep->issparse (); }
-
   // Does this constant correspond to a truth value?
 
   bool is_true (void) const
@@ -959,10 +896,6 @@
   string_vector string_vector_value (bool pad = false) const
   { return rep->string_vector_value (pad); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'string_vector_value' instead")
-  string_vector all_strings (bool pad = false) const
-  { return string_vector_value (pad); }
-
   Cell cell_value (void) const;
 
   Array<std::string> cellstr_value (void) const
@@ -1336,7 +1269,7 @@
 
   bool load_ascii (std::istream& is) { return rep->load_ascii (is); }
 
-  bool save_binary (std::ostream& os, bool& save_as_floats)
+  bool save_binary (std::ostream& os, bool save_as_floats)
   { return rep->save_binary (os, save_as_floats); }
 
   bool load_binary (std::istream& is, bool swap,
@@ -1381,10 +1314,6 @@
   sortmode issorted (sortmode mode = UNSORTED) const
   { return rep->issorted (mode); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'issorted' instead")
-  sortmode is_sorted (sortmode mode = UNSORTED) const
-  { return rep->issorted (mode); }
-
   Array<octave_idx_type> sort_rows_idx (sortmode mode = ASCENDING) const
   { return rep->sort_rows_idx (mode); }
 
--- a/libinterp/octave.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -396,28 +396,6 @@
   }
 }
 
-// embedded is int here because octave_main is extern "C".
-
-int
-octave_main (int argc, char **argv, int embedded)
-{
-  if (embedded)
-    {
-      if (argc > 0)
-        std::cerr << "warning: ignoring command line options for embedded octave\n";
-
-      static octave::interpreter embedded_interpreter;
-      return embedded_interpreter.execute ();
-    }
-  else
-    {
-      std::cerr << "warning: octave_main should only be used to create an embedded interpreter";
-
-      static octave::cli_application app (argc, argv);
-      return app.execute ();
-    }
-}
-
 DEFUN (isguirunning, args, ,
        doc: /* -*- texinfo -*-
 @deftypefn {} {} isguirunning ()
--- a/libinterp/octave.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/octave.h	Thu Jan 24 20:20:02 2019 +0000
@@ -25,8 +25,6 @@
 
 #include "octave-config.h"
 
-#if defined  (__cplusplus)
-
 #include <list>
 #include <string>
 
@@ -54,9 +52,6 @@
     bool debug_jit (void) const { return m_debug_jit; }
     bool echo_commands (void) const { return m_echo_commands; }
 
-    OCTAVE_DEPRECATED (4.4, "use 'gui' instead")
-    bool force_gui (void) const { return m_gui; }
-
     bool forced_interactive (void) const { return m_forced_interactive; }
     bool forced_line_editing (void) const { return m_forced_line_editing; }
     bool gui (void) const { return m_gui; }
@@ -64,9 +59,6 @@
     bool jit_compiler (void) const { return m_jit_compiler; }
     bool line_editing (void) const { return m_line_editing; }
 
-    OCTAVE_DEPRECATED (4.4, "use '! gui' instead")
-    bool no_gui (void) const { return ! gui (); }
-
     bool no_window_system (void) const { return m_no_window_system; }
     bool persist (void) const { return m_persist; }
     bool read_history_file (void) const { return m_read_history_file; }
@@ -90,9 +82,6 @@
     void debug_jit (bool arg) { m_debug_jit = arg; }
     void echo_commands (bool arg) { m_echo_commands = arg; }
 
-    OCTAVE_DEPRECATED (4.4, "use 'gui' instead")
-    void force_gui (bool arg) { m_gui = arg; }
-
     void forced_line_editing (bool arg) { m_forced_line_editing = arg; }
     void forced_interactive (bool arg) { m_forced_interactive = arg; }
     void gui (bool arg) { m_gui = arg; }
@@ -100,9 +89,6 @@
     void jit_compiler (bool arg) { m_jit_compiler = arg; }
     void line_editing (bool arg) { m_line_editing = arg; }
 
-    OCTAVE_DEPRECATED (4.4, "this has been removed and is the default now")
-    void no_gui (bool) { return; }
-
     void no_window_system (bool arg) { m_no_window_system = arg; }
     void persist (bool arg) { m_persist = arg; }
     void read_history_file (bool arg) { m_read_history_file = arg; }
@@ -386,16 +372,3 @@
 }
 
 #endif
-
-#if defined  (__cplusplus)
-extern "C" {
-#endif
-
-OCTAVE_DEPRECATED (4.4, "see the Octave documentation for other options")
-extern OCTINTERP_API int octave_main (int argc, char **argv, int embedded);
-
-#if defined  (__cplusplus)
-}
-#endif
-
-#endif
--- a/libinterp/operators/op-cm-cs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-cm-cs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-cx-mat.h"
@@ -47,12 +46,7 @@
     = dynamic_cast<const octave_complex_matrix&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.complex_array_value () / d);
+  return octave_value (v1.complex_array_value () / v2.complex_value ());
 }
 
 DEFBINOP_FN (pow, complex_matrix, complex, xpow)
@@ -93,12 +87,7 @@
     = dynamic_cast<const octave_complex_matrix&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.complex_array_value () / d);
+  return octave_value (v1.complex_array_value () / v2.complex_value ());
 }
 
 DEFNDBINOP_FN (el_pow, complex_matrix, complex, complex_array, complex,
--- a/libinterp/operators/op-cm-s.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-cm-s.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -27,7 +27,6 @@
 #include "mx-cm-s.h"
 #include "mx-cnda-s.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-cx-mat.h"
@@ -50,12 +49,7 @@
     = dynamic_cast<const octave_complex_matrix&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.complex_array_value () / d);
+  return octave_value (v1.complex_array_value () / v2.double_value ());
 }
 
 DEFBINOP_FN (pow, complex_matrix, scalar, xpow)
@@ -91,12 +85,7 @@
     = dynamic_cast<const octave_complex_matrix&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.complex_array_value () / d);
+  return octave_value (v1.complex_array_value () / v2.double_value ());
 }
 
 DEFNDBINOP_FN (el_pow, complex_matrix, scalar, complex_array, scalar, elem_xpow)
--- a/libinterp/operators/op-cm-scm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-cm-scm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -54,14 +53,7 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      Complex d = v2.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.complex_array_value () / d);
-    }
+    return octave_value (v1.complex_array_value () / v2.complex_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
--- a/libinterp/operators/op-cm-sm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-cm-sm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -54,14 +53,7 @@
     = dynamic_cast<const octave_sparse_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      double d = v2.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.complex_array_value () / d);
-    }
+    return octave_value (v1.complex_array_value () / v2.scalar_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
--- a/libinterp/operators/op-cs-cm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-cs-cm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-complex.h"
@@ -64,12 +63,7 @@
   const octave_complex_matrix& v2
     = dynamic_cast<const octave_complex_matrix&> (a2);
 
-  Complex d = v1.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.complex_array_value () / d);
+  return octave_value (v2.complex_array_value () / v1.complex_value ());
 }
 
 DEFNDCMPLXCMPOP_FN (lt, complex, complex_matrix, complex, complex_array,
@@ -97,12 +91,7 @@
   const octave_complex_matrix& v2
     = dynamic_cast<const octave_complex_matrix&> (a2);
 
-  Complex d = v1.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.complex_array_value () / d);
+  return octave_value (v2.complex_array_value () / v1.complex_value ());
 }
 
 DEFNDBINOP_FN (el_and, complex, complex_matrix, complex, complex_array,
--- a/libinterp/operators/op-cs-cs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-cs-cs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -26,7 +26,6 @@
 
 #include "Array-util.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-complex.h"
@@ -75,12 +74,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.complex_value () / d);
+  return octave_value (v1.complex_value () / v2.complex_value ());
 }
 
 DEFBINOP_FN (pow, complex, complex, xpow)
@@ -90,12 +84,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v1.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.complex_value () / d);
+  return octave_value (v2.complex_value () / v1.complex_value ());
 }
 
 DEFCMPLXCMPOP_OP (lt, complex, complex, <)
@@ -112,12 +101,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.complex_value () / d);
+  return octave_value (v1.complex_value () / v2.complex_value ());
 }
 
 DEFBINOP_FN (el_pow, complex, complex, xpow)
@@ -127,12 +111,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v1.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.complex_value () / d);
+  return octave_value (v2.complex_value () / v1.complex_value ());
 }
 
 DEFBINOP (el_and, complex, complex)
--- a/libinterp/operators/op-cs-m.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-cs-m.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -29,7 +29,6 @@
 #include "mx-cs-nda.h"
 #include "mx-nda-cs.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-complex.h"
@@ -68,12 +67,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_matrix& v2 = dynamic_cast<const octave_matrix&> (a2);
 
-  Complex d = v1.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.array_value () / d);
+  return octave_value (v2.array_value () / v1.complex_value ());
 }
 
 DEFNDCMPLXCMPOP_FN (lt, complex, matrix, complex, array, mx_el_lt)
@@ -92,12 +86,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_matrix& v2 = dynamic_cast<const octave_matrix&> (a2);
 
-  Complex d = v1.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.array_value () / d);
+  return octave_value (v2.array_value () / v1.complex_value ());
 }
 
 DEFNDBINOP_FN (el_and, complex, matrix, complex, array, mx_el_and)
--- a/libinterp/operators/op-cs-s.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-cs-s.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-complex.h"
@@ -46,12 +45,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.complex_value () / d);
+  return octave_value (v1.complex_value () / v2.double_value ());
 }
 
 DEFBINOP_FN (pow, complex, scalar, xpow)
@@ -61,12 +55,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  Complex d = v1.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.double_value () / d);
+  return octave_value (v2.double_value () / v1.complex_value ());
 }
 
 DEFCMPLXCMPOP_OP (lt, complex, scalar, <)
@@ -83,12 +72,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.complex_value () / d);
+  return octave_value (v1.complex_value () / v2.double_value ());
 }
 
 DEFBINOP_FN (el_pow, complex, scalar, xpow)
@@ -98,12 +82,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  Complex d = v1.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.double_value () / d);
+  return octave_value (v2.double_value () / v1.complex_value ());
 }
 
 DEFBINOP (el_and, complex, scalar)
--- a/libinterp/operators/op-cs-scm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-cs-scm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -51,14 +50,8 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      Complex d = v2.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (SparseComplexMatrix (1, 1, v1.complex_value () / d));
-    }
+    return octave_value (SparseComplexMatrix (1, 1, v1.complex_value ()
+                                                  / v2.complex_value ()));
   else
     {
       MatrixType typ = v2.matrix_type ();
@@ -84,12 +77,7 @@
   const octave_sparse_complex_matrix& v2
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
-  Complex d = v1.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.sparse_complex_matrix_value () / d);
+  return octave_value (v2.sparse_complex_matrix_value () / v1.complex_value ());
 }
 
 DEFBINOP_FN (lt, complex, sparse_complex_matrix, mx_el_lt)
@@ -110,15 +98,7 @@
   const octave_sparse_complex_matrix& v2
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
-  Complex d = v1.complex_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v2.sparse_complex_matrix_value () / d);
-
-  return retval;
+  return octave_value (v2.sparse_complex_matrix_value () / v1.complex_value ());
 }
 
 DEFBINOP_FN (el_and, complex, sparse_complex_matrix, mx_el_and)
--- a/libinterp/operators/op-cs-sm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-cs-sm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -52,14 +51,7 @@
   const octave_sparse_matrix& v2 = dynamic_cast<const octave_sparse_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      double d = v2.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (SparseComplexMatrix (1, 1, v1.complex_value () / d));
-    }
+    return octave_value (SparseComplexMatrix (1, 1, v1.complex_value () / v2.scalar_value ()));
   else
     {
       MatrixType typ = v2.matrix_type ();
@@ -83,15 +75,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_sparse_matrix& v2 = dynamic_cast<const octave_sparse_matrix&> (a2);
 
-  Complex d = v1.complex_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v2.sparse_matrix_value () / d);
-
-  return retval;
+  return octave_value (v2.sparse_matrix_value () / v1.complex_value ());
 }
 
 DEFBINOP_FN (lt, complex, sparse_matrix, mx_el_lt)
@@ -110,15 +94,7 @@
   const octave_complex& v1 = dynamic_cast<const octave_complex&> (a1);
   const octave_sparse_matrix& v2 = dynamic_cast<const octave_sparse_matrix&> (a2);
 
-  Complex d = v1.complex_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v2.sparse_matrix_value () / d);
-
-  return retval;
+  return octave_value (v2.sparse_matrix_value () / v1.complex_value ());
 }
 
 DEFBINOP_FN (el_and, complex, sparse_matrix, mx_el_and)
@@ -136,8 +112,7 @@
 {
   const octave_complex& v = dynamic_cast<const octave_complex&> (a);
 
-  return new octave_sparse_matrix
-         (SparseMatrix (v.matrix_value ()));
+  return new octave_sparse_matrix (SparseMatrix (v.matrix_value ()));
 }
 
 void
--- a/libinterp/operators/op-dm-scm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-dm-scm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -33,7 +33,6 @@
 #include "mx-m-cs.h"
 #include "mx-cs-m.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -372,14 +371,7 @@
   const octave_diag_matrix& v2 = dynamic_cast<const octave_diag_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      double d = v2.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.sparse_complex_matrix_value () / d);
-    }
+    return octave_value (v1.sparse_complex_matrix_value () / v2.scalar_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
@@ -396,14 +388,7 @@
     = dynamic_cast<const octave_complex_diag_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      std::complex<double> d = v2.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.sparse_matrix_value () / d);
-    }
+    return octave_value (v1.sparse_matrix_value () / v2.complex_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
@@ -420,14 +405,7 @@
     = dynamic_cast<const octave_complex_diag_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      std::complex<double> d = v2.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.sparse_complex_matrix_value () / d);
-    }
+    return octave_value (v1.sparse_complex_matrix_value () / v2.complex_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
--- a/libinterp/operators/op-dm-sm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-dm-sm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -136,14 +135,7 @@
   const octave_diag_matrix& v2 = dynamic_cast<const octave_diag_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      double d = v2.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.sparse_matrix_value () / d);
-    }
+    return octave_value (v1.sparse_matrix_value () / v2.scalar_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
--- a/libinterp/operators/op-dms-template.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-dms-template.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #endif
 
 #include "ops.h"
-#include "errwarn.h"
 #include "xpow.h"
 #include SINCLUDE
 #include MINCLUDE
@@ -48,22 +47,12 @@
 #define MATRIX_VALUE CONCAT2(MATRIXV, _value)
 #define SCALAR_VALUE CONCAT2(SCALARV, _value)
 
-template <typename T>
-static T
-gripe_if_zero (T x)
-{
-  if (x == T ())
-    warn_divide_by_zero ();
-
-  return x;
-}
-
 DEFBINOP (dmsdiv, MATRIX, SCALAR)
 {
   const OCTAVE_MATRIX& v1 = dynamic_cast<const OCTAVE_MATRIX&> (a1);
   const OCTAVE_SCALAR& v2 = dynamic_cast<const OCTAVE_SCALAR&> (a2);
 
-  return v1.MATRIX_VALUE () / gripe_if_zero (v2.SCALAR_VALUE ());
+  return v1.MATRIX_VALUE () / v2.SCALAR_VALUE ();
 }
 
 DEFBINOP (sdmldiv, SCALAR, MATRIX)
@@ -71,7 +60,7 @@
   const OCTAVE_SCALAR& v1 = dynamic_cast<const OCTAVE_SCALAR&> (a1);
   const OCTAVE_MATRIX& v2 = dynamic_cast<const OCTAVE_MATRIX&> (a2);
 
-  return v2.MATRIX_VALUE () / gripe_if_zero (v1.SCALAR_VALUE ());
+  return v2.MATRIX_VALUE () / v1.SCALAR_VALUE ();
 }
 
 DEFBINOP (dmspow, MATRIX, SCALAR)
--- a/libinterp/operators/op-fcm-fcs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fcm-fcs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-cx-mat.h"
@@ -52,12 +51,7 @@
   const octave_float_complex& v2
     = dynamic_cast<const octave_float_complex&> (a2);
 
-  FloatComplex d = v2.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_complex_array_value () / d);
+  return octave_value (v1.float_complex_array_value () / v2.float_complex_value ());
 }
 
 DEFBINOP_FN (pow, float_complex_matrix, float_complex, xpow)
@@ -101,12 +95,7 @@
   const octave_float_complex& v2
     = dynamic_cast<const octave_float_complex&> (a2);
 
-  FloatComplex d = v2.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_complex_array_value () / d);
+  return octave_value (v1.float_complex_array_value () / v2.float_complex_value ());
 }
 
 DEFNDBINOP_FN (el_pow, float_complex_matrix, float_complex,
--- a/libinterp/operators/op-fcm-fs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fcm-fs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -26,7 +26,6 @@
 
 #include "mx-fcnda-fs.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-cx-mat.h"
@@ -55,12 +54,7 @@
   const octave_float_scalar& v2
     = dynamic_cast<const octave_float_scalar&> (a2);
 
-  float d = v2.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_complex_array_value () / d);
+  return octave_value (v1.float_complex_array_value () / v2.float_value ());
 }
 
 DEFBINOP_FN (pow, float_complex_matrix, float_scalar, xpow)
@@ -105,12 +99,7 @@
   const octave_float_scalar& v2
     = dynamic_cast<const octave_float_scalar&> (a2);
 
-  float d = v2.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_complex_array_value () / d);
+  return octave_value (v1.float_complex_array_value () / v2.float_value ());
 }
 
 DEFNDBINOP_FN (el_pow, float_complex_matrix, float_scalar, float_complex_array,
--- a/libinterp/operators/op-fcs-fcm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fcs-fcm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-complex.h"
@@ -71,12 +70,7 @@
   const octave_float_complex_matrix& v2
     = dynamic_cast<const octave_float_complex_matrix&> (a2);
 
-  FloatComplex d = v1.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_complex_array_value () / d);
+  return octave_value (v2.float_complex_array_value () / v1.float_complex_value ());
 }
 
 DEFNDCMPLXCMPOP_FN (lt, float_complex, float_complex_matrix, float_complex,
@@ -106,12 +100,7 @@
   const octave_float_complex_matrix& v2
     = dynamic_cast<const octave_float_complex_matrix&> (a2);
 
-  FloatComplex d = v1.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_complex_array_value () / d);
+  return octave_value (v2.float_complex_array_value () / v1.float_complex_value ());
 }
 
 DEFNDBINOP_FN (el_and, float_complex, float_complex_matrix, float_complex,
--- a/libinterp/operators/op-fcs-fcs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fcs-fcs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-complex.h"
@@ -73,12 +72,7 @@
   const octave_float_complex& v1 = dynamic_cast<const octave_float_complex&> (a1);
   const octave_float_complex& v2 = dynamic_cast<const octave_float_complex&> (a2);
 
-  FloatComplex d = v2.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_complex_value () / d);
+  return octave_value (v1.float_complex_value () / v2.float_complex_value ());
 }
 
 DEFBINOP_FN (pow, float_complex, float_complex, xpow)
@@ -88,12 +82,7 @@
   const octave_float_complex& v1 = dynamic_cast<const octave_float_complex&> (a1);
   const octave_float_complex& v2 = dynamic_cast<const octave_float_complex&> (a2);
 
-  FloatComplex d = v1.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_complex_value () / d);
+  return octave_value (v2.float_complex_value () / v1.float_complex_value ());
 }
 
 DEFCMPLXCMPOP_OP (lt, float_complex, float_complex, <)
@@ -110,12 +99,7 @@
   const octave_float_complex& v1 = dynamic_cast<const octave_float_complex&> (a1);
   const octave_float_complex& v2 = dynamic_cast<const octave_float_complex&> (a2);
 
-  FloatComplex d = v2.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_complex_value () / d);
+  return octave_value (v1.float_complex_value () / v2.float_complex_value ());
 }
 
 DEFBINOP_FN (el_pow, float_complex, float_complex, xpow)
@@ -125,12 +109,7 @@
   const octave_float_complex& v1 = dynamic_cast<const octave_float_complex&> (a1);
   const octave_float_complex& v2 = dynamic_cast<const octave_float_complex&> (a2);
 
-  FloatComplex d = v1.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_complex_value () / d);
+  return octave_value (v2.float_complex_value () / v1.float_complex_value ());
 }
 
 DEFBINOP (el_and, float_complex, float_complex)
--- a/libinterp/operators/op-fcs-fm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fcs-fm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -27,7 +27,6 @@
 #include "mx-fcs-fnda.h"
 #include "mx-fnda-fcs.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-complex.h"
@@ -69,12 +68,7 @@
   const octave_float_complex& v1 = dynamic_cast<const octave_float_complex&> (a1);
   const octave_float_matrix& v2 = dynamic_cast<const octave_float_matrix&> (a2);
 
-  FloatComplex d = v1.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_array_value () / d);
+  return octave_value (v2.float_array_value () / v1.float_complex_value ());
 }
 
 DEFNDCMPLXCMPOP_FN (lt, float_complex, float_matrix, float_complex,
@@ -102,12 +96,7 @@
   const octave_float_complex& v1 = dynamic_cast<const octave_float_complex&> (a1);
   const octave_float_matrix& v2 = dynamic_cast<const octave_float_matrix&> (a2);
 
-  FloatComplex d = v1.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_array_value () / d);
+  return octave_value (v2.float_array_value () / v1.float_complex_value ());
 }
 
 DEFNDBINOP_FN (el_and, float_complex, float_matrix, float_complex,
--- a/libinterp/operators/op-fcs-fs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fcs-fs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-complex.h"
@@ -49,12 +48,7 @@
   const octave_float_complex& v1 = dynamic_cast<const octave_float_complex&> (a1);
   const octave_float_scalar& v2 = dynamic_cast<const octave_float_scalar&> (a2);
 
-  float d = v2.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_complex_value () / d);
+  return octave_value (v1.float_complex_value () / v2.float_value ());
 }
 
 DEFBINOP_FN (pow, float_complex, float_scalar, xpow)
@@ -64,12 +58,7 @@
   const octave_float_complex& v1 = dynamic_cast<const octave_float_complex&> (a1);
   const octave_float_scalar& v2 = dynamic_cast<const octave_float_scalar&> (a2);
 
-  FloatComplex d = v1.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_value () / d);
+  return octave_value (v2.float_value () / v1.float_complex_value ());
 }
 
 DEFCMPLXCMPOP_OP (lt, float_complex, float_scalar, <)
@@ -86,12 +75,7 @@
   const octave_float_complex& v1 = dynamic_cast<const octave_float_complex&> (a1);
   const octave_float_scalar& v2 = dynamic_cast<const octave_float_scalar&> (a2);
 
-  float d = v2.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_complex_value () / d);
+  return octave_value (v1.float_complex_value () / v2.float_value ());
 }
 
 DEFBINOP_FN (el_pow, float_complex, float_scalar, xpow)
@@ -101,12 +85,7 @@
   const octave_float_complex& v1 = dynamic_cast<const octave_float_complex&> (a1);
   const octave_float_scalar& v2 = dynamic_cast<const octave_float_scalar&> (a2);
 
-  FloatComplex d = v1.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_value () / d);
+  return octave_value (v2.float_value () / v1.float_complex_value ());
 }
 
 DEFBINOP (el_and, float_complex, float)
--- a/libinterp/operators/op-fm-fcs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fm-fcs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -29,7 +29,6 @@
 #include "mx-fnda-fcs.h"
 #include "mx-fcs-fnda.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-re-mat.h"
@@ -54,12 +53,7 @@
   const octave_float_matrix& v1 = dynamic_cast<const octave_float_matrix&> (a1);
   const octave_float_complex& v2 = dynamic_cast<const octave_float_complex&> (a2);
 
-  FloatComplex d = v2.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_array_value () / d);
+  return octave_value (v1.float_array_value () / v2.float_complex_value ());
 }
 
 DEFBINOP_FN (pow, float_matrix, float_complex, xpow)
@@ -100,12 +94,7 @@
   const octave_float_matrix& v1 = dynamic_cast<const octave_float_matrix&> (a1);
   const octave_float_complex& v2 = dynamic_cast<const octave_float_complex&> (a2);
 
-  FloatComplex d = v2.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_array_value () / d);
+  return octave_value (v1.float_array_value () / v2.float_complex_value ());
 }
 
 DEFNDBINOP_FN (el_pow, float_matrix, float_complex, float_array,
--- a/libinterp/operators/op-fm-fs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fm-fs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-flt-re-mat.h"
@@ -46,12 +45,7 @@
   const octave_float_matrix& v1 = dynamic_cast<const octave_float_matrix&> (a1);
   const octave_float_scalar& v2 = dynamic_cast<const octave_float_scalar&> (a2);
 
-  float d = v2.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_array_value () / d);
+  return octave_value (v1.float_array_value () / v2.float_value ());
 }
 
 DEFBINOP_FN (pow, float_matrix, float_scalar, xpow)
@@ -91,12 +85,7 @@
   const octave_float_matrix& v1 = dynamic_cast<const octave_float_matrix&> (a1);
   const octave_float_scalar& v2 = dynamic_cast<const octave_float_scalar&> (a2);
 
-  float d = v2.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_array_value () / d);
+  return octave_value (v1.float_array_value () / v2.float_value ());
 }
 
 DEFNDBINOP_FN (el_pow, float_matrix, float_scalar, float_array,
--- a/libinterp/operators/op-fs-fcm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fs-fcm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -29,7 +29,6 @@
 #include "mx-fs-fcnda.h"
 #include "mx-fcnda-fs.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-scalar.h"
@@ -77,12 +76,7 @@
   const octave_float_complex_matrix& v2
     = dynamic_cast<const octave_float_complex_matrix&> (a2);
 
-  float d = v1.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_complex_array_value () / d);
+  return octave_value (v2.float_complex_array_value () / v1.float_value ());
 }
 
 DEFNDCMPLXCMPOP_FN (lt, float_scalar, float_complex_matrix, float_scalar,
@@ -112,12 +106,7 @@
   const octave_float_complex_matrix& v2
     = dynamic_cast<const octave_float_complex_matrix&> (a2);
 
-  float d = v1.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_complex_array_value () / d);
+  return octave_value (v2.float_complex_array_value () / v1.float_value ());
 }
 
 DEFNDBINOP_FN (el_and, float_scalar, float_complex_matrix, float_scalar,
--- a/libinterp/operators/op-fs-fcs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fs-fcs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-scalar.h"
@@ -49,12 +48,7 @@
   const octave_float_scalar& v1 = dynamic_cast<const octave_float_scalar&> (a1);
   const octave_float_complex& v2 = dynamic_cast<const octave_float_complex&> (a2);
 
-  FloatComplex d = v2.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_value () / d);
+  return octave_value (v1.float_value () / v2.float_complex_value ());
 }
 
 DEFBINOP_FN (pow, float_scalar, float_complex, xpow)
@@ -64,12 +58,7 @@
   const octave_float_scalar& v1 = dynamic_cast<const octave_float_scalar&> (a1);
   const octave_float_complex& v2 = dynamic_cast<const octave_float_complex&> (a2);
 
-  float d = v1.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_complex_value () / d);
+  return octave_value (v2.float_complex_value () / v1.float_value ());
 }
 
 DEFCMPLXCMPOP_OP (lt, float_scalar, float_complex, <)
@@ -86,12 +75,7 @@
   const octave_float_scalar& v1 = dynamic_cast<const octave_float_scalar&> (a1);
   const octave_float_complex& v2 = dynamic_cast<const octave_float_complex&> (a2);
 
-  FloatComplex d = v2.float_complex_value ();
-
-  if (d == 0.0f)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_value () / d);
+  return octave_value (v1.float_value () / v2.float_complex_value ());
 }
 
 DEFBINOP_FN (el_pow, float_scalar, float_complex, xpow)
@@ -101,12 +85,7 @@
   const octave_float_scalar& v1 = dynamic_cast<const octave_float_scalar&> (a1);
   const octave_float_complex& v2 = dynamic_cast<const octave_float_complex&> (a2);
 
-  float d = v1.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_complex_value () / d);
+  return octave_value (v2.float_complex_value () / v1.float_value ());
 }
 
 DEFBINOP (el_and, float_scalar, float_complex)
--- a/libinterp/operators/op-fs-fm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fs-fm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-scalar.h"
@@ -64,12 +63,7 @@
   const octave_float_scalar& v1 = dynamic_cast<const octave_float_scalar&> (a1);
   const octave_float_matrix& v2 = dynamic_cast<const octave_float_matrix&> (a2);
 
-  float d = v1.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_array_value () / d);
+  return octave_value (v2.float_array_value () / v1.float_value ());
 }
 
 DEFNDBINOP_FN (lt, float_scalar, float_matrix, float_scalar,
@@ -97,12 +91,7 @@
   const octave_float_scalar& v1 = dynamic_cast<const octave_float_scalar&> (a1);
   const octave_float_matrix& v2 = dynamic_cast<const octave_float_matrix&> (a2);
 
-  float d = v1.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_array_value () / d);
+  return octave_value (v2.float_array_value () / v1.float_value ());
 }
 
 DEFNDBINOP_FN (el_and, float_scalar, float_matrix, float_scalar,
--- a/libinterp/operators/op-fs-fs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-fs-fs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -26,7 +26,6 @@
 
 #include "Array-util.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-scalar.h"
@@ -69,12 +68,7 @@
   const octave_float_scalar& v1 = dynamic_cast<const octave_float_scalar&> (a1);
   const octave_float_scalar& v2 = dynamic_cast<const octave_float_scalar&> (a2);
 
-  float d = v2.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_value () / d);
+  return octave_value (v1.float_value () / v2.float_value ());
 }
 
 DEFBINOP_FN (pow, float_scalar, float_scalar, xpow)
@@ -84,12 +78,7 @@
   const octave_float_scalar& v1 = dynamic_cast<const octave_float_scalar&> (a1);
   const octave_float_scalar& v2 = dynamic_cast<const octave_float_scalar&> (a2);
 
-  float d = v1.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_value () / d);
+  return octave_value (v2.float_value () / v1.float_value ());
 }
 
 DEFBINOP_OP (lt, float_scalar, float_scalar, <)
@@ -106,12 +95,7 @@
   const octave_float_scalar& v1 = dynamic_cast<const octave_float_scalar&> (a1);
   const octave_float_scalar& v2 = dynamic_cast<const octave_float_scalar&> (a2);
 
-  float d = v2.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.float_value () / d);
+  return octave_value (v1.float_value () / v2.float_value ());
 }
 
 DEFBINOP_FN (el_pow, float_scalar, float_scalar, xpow)
@@ -121,12 +105,7 @@
   const octave_float_scalar& v1 = dynamic_cast<const octave_float_scalar&> (a1);
   const octave_float_scalar& v2 = dynamic_cast<const octave_float_scalar&> (a2);
 
-  float d = v1.float_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.float_value () / d);
+  return octave_value (v2.float_value () / v1.float_value ());
 }
 
 DEFSCALARBOOLOP_OP (el_and, float_scalar, float_scalar, &&)
--- a/libinterp/operators/op-int.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-int.h	Thu Jan 24 20:20:02 2019 +0000
@@ -198,11 +198,7 @@
     const octave_ ## T1 ## scalar& v1 = dynamic_cast<const octave_ ## T1 ## scalar&> (a1); \
     const octave_ ## T2 ## scalar& v2 = dynamic_cast<const octave_ ## T2 ## scalar&> (a2); \
                                                                         \
-    if (! v2.T2 ## scalar_value ())                                     \
-      warn_divide_by_zero ();                                           \
-                                                                        \
-    octave_value retval = octave_value (v1.T1 ## scalar_value () / v2.T2 ## scalar_value ()); \
-    return retval;                                                      \
+    return octave_value (v1.T1 ## scalar_value () / v2.T2 ## scalar_value ()); \
   }                                                                     \
                                                                         \
   DEFINTBINOP_FN (PFX ## _pow, T1 ## scalar, T2 ## scalar, xpow, T3, ^) \
@@ -212,11 +208,7 @@
     const octave_ ## T1 ## scalar& v1 = dynamic_cast<const octave_ ## T1 ## scalar&> (a1); \
     const octave_ ## T2 ## scalar& v2 = dynamic_cast<const octave_ ## T2 ## scalar&> (a2); \
                                                                         \
-    if (! v1.T1 ## scalar_value ())                                     \
-      warn_divide_by_zero ();                                           \
-                                                                        \
-    octave_value retval = octave_value (v2.T2 ## scalar_value () / v1.T1 ## scalar_value ()); \
-    return retval;                                                      \
+    return octave_value (v2.T2 ## scalar_value () / v1.T1 ## scalar_value ()); \
   }                                                                     \
                                                                         \
   DEFINTBINOP_OP (PFX ## _el_mul, T1 ## scalar, T2 ## scalar, *, T3)    \
@@ -226,11 +218,7 @@
     const octave_ ## T1 ## scalar& v1 = dynamic_cast<const octave_ ## T1 ## scalar&> (a1); \
     const octave_ ## T2 ## scalar& v2 = dynamic_cast<const octave_ ## T2 ## scalar&> (a2); \
                                                                         \
-    if (! v2.T2 ## scalar_value ())                                     \
-      warn_divide_by_zero ();                                           \
-                                                                        \
-    octave_value retval = octave_value (v1.T1 ## scalar_value () / v2.T2 ## scalar_value ()); \
-    return retval;                                                      \
+    return octave_value (v1.T1 ## scalar_value () / v2.T2 ## scalar_value ()); \
   }                                                                     \
                                                                         \
   DEFINTBINOP_FN (PFX ## _el_pow, T1 ## scalar, T2 ## scalar, xpow, T3, .^) \
@@ -240,11 +228,7 @@
     const octave_ ## T1 ## scalar& v1 = dynamic_cast<const octave_ ## T1 ## scalar&> (a1); \
     const octave_ ## T2 ## scalar& v2 = dynamic_cast<const octave_ ## T2 ## scalar&> (a2); \
                                                                         \
-    if (! v1.T1 ## scalar_value ())                                     \
-      warn_divide_by_zero ();                                           \
-                                                                        \
-    octave_value retval = octave_value (v2.T2 ## scalar_value () / v1.T1 ## scalar_value ()); \
-    return retval;                                                      \
+    return octave_value (v2.T2 ## scalar_value () / v1.T1 ## scalar_value ()); \
   }
 
 #define OCTAVE_SS_INT_BOOL_OPS(PFX, T1, T2, Z1, Z2)                     \
@@ -347,11 +331,7 @@
    const octave_ ## TS ## scalar& v1 = dynamic_cast<const octave_ ## TS ## scalar&> (a1); \
    const octave_ ## TM ## matrix& v2 = dynamic_cast<const octave_ ## TM ## matrix&> (a2); \
                                                                         \
-   if (! v1.TS ## scalar_value ())                                      \
-     warn_divide_by_zero ();                                            \
-                                                                        \
-   octave_value retval = octave_value (v2.TM ## array_value () / v1.TS ## scalar_value ()); \
-   return retval;                                                       \
+   return octave_value (v2.TM ## array_value () / v1.TS ## scalar_value ()); \
    }                                                                    \
                                                                         \
   DEFINTNDBINOP_OP (PFX ## _el_mul, TS ## scalar, TM ## matrix, TS ## scalar, TM ## array, *, TI) \
@@ -371,11 +351,7 @@
    const octave_ ## TS ## scalar& v1 = dynamic_cast<const octave_ ## TS ## scalar&> (a1); \
    const octave_ ## TM ## matrix& v2 = dynamic_cast<const octave_ ## TM ## matrix&> (a2); \
                                                                         \
-   if (! v1.TS ## scalar_value ())                                      \
-     warn_divide_by_zero ();                                            \
-                                                                        \
-   octave_value retval = octave_value (v2.TM ## array_value () / v1.TS ## scalar_value ()); \
-   return retval;                                                       \
+   return octave_value (v2.TM ## array_value () / v1.TS ## scalar_value ()); \
    }
 
 #define OCTAVE_SM_INT_CMP_OPS(PFX, TS, TM)                              \
@@ -494,11 +470,7 @@
     const octave_ ## TM ## matrix& v1 = dynamic_cast<const octave_ ## TM ## matrix&> (a1); \
     const octave_ ## TS ## scalar& v2 = dynamic_cast<const octave_ ## TS ## scalar&> (a2); \
                                                                         \
-    if (! v2.TS ## scalar_value ())                                     \
-      warn_divide_by_zero ();                                           \
-                                                                        \
-    octave_value retval = octave_value (v1.TM ## array_value () / v2.TS ## scalar_value ()); \
-    return retval;                                                      \
+    return octave_value (v1.TM ## array_value () / v2.TS ## scalar_value ()); \
   }                                                                     \
                                                                         \
   /* DEFBINOP_FN (PFX ## _pow, TM ## matrix, TS ## scalar, xpow) */     \
@@ -521,11 +493,7 @@
     const octave_ ## TM ## matrix& v1 = dynamic_cast<const octave_ ## TM ## matrix&> (a1); \
     const octave_ ## TS ## scalar& v2 = dynamic_cast<const octave_ ## TS ## scalar&> (a2); \
                                                                         \
-    if (! v2.TS ## scalar_value ())                                     \
-      warn_divide_by_zero ();                                           \
-                                                                        \
-    octave_value retval = octave_value (v1.TM ## array_value () / v2.TS ## scalar_value ()); \
-    return retval;                                                      \
+    return octave_value (v1.TM ## array_value () / v2.TS ## scalar_value ()); \
   }                                                                     \
                                                                         \
   DEFINTNDBINOP_FN (PFX ## _el_pow, TM ## matrix, TS ## scalar, TM ## array, TS ## scalar, elem_xpow, TI, .^) \
--- a/libinterp/operators/op-m-cs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-m-cs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -29,7 +29,6 @@
 #include "mx-nda-cs.h"
 #include "mx-cs-nda.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-re-mat.h"
@@ -53,12 +52,7 @@
   const octave_matrix& v1 = dynamic_cast<const octave_matrix&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.array_value () / d);
+  return octave_value (v1.array_value () / v2.complex_value ());
 }
 
 DEFBINOP_FN (pow, matrix, complex, xpow)
@@ -92,12 +86,7 @@
   const octave_matrix& v1 = dynamic_cast<const octave_matrix&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.array_value () / d);
+  return octave_value (v1.array_value () / v2.complex_value ());
 }
 
 DEFNDBINOP_FN (el_pow, matrix, complex, array, complex, elem_xpow)
--- a/libinterp/operators/op-m-s.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-m-s.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-re-mat.h"
@@ -47,12 +46,7 @@
   const octave_matrix& v1 = dynamic_cast<const octave_matrix&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.array_value () / d);
+  return octave_value (v1.array_value () / v2.double_value ());
 }
 
 DEFBINOP_FN (pow, matrix, scalar, xpow)
@@ -86,12 +80,7 @@
   const octave_matrix& v1 = dynamic_cast<const octave_matrix&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.array_value () / d);
+  return octave_value (v1.array_value () / v2.double_value ());
 }
 
 DEFNDBINOP_FN (el_pow, matrix, scalar, array, scalar, elem_xpow)
--- a/libinterp/operators/op-m-scm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-m-scm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -54,14 +53,7 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      Complex d = v2.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.array_value () / d);
-    }
+    return octave_value (v1.array_value () / v2.complex_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
--- a/libinterp/operators/op-m-sm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-m-sm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -52,14 +51,7 @@
   const octave_sparse_matrix& v2 = dynamic_cast<const octave_sparse_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      double d = v2.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.array_value () / d);
-    }
+    return octave_value (v1.array_value () / v2.scalar_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
--- a/libinterp/operators/op-s-cm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-s-cm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -29,7 +29,6 @@
 #include "mx-s-cnda.h"
 #include "mx-cnda-s.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-scalar.h"
@@ -72,12 +71,7 @@
   const octave_complex_matrix& v2
     = dynamic_cast<const octave_complex_matrix&> (a2);
 
-  double d = v1.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.complex_array_value () / d);
+  return octave_value (v2.complex_array_value () / v1.double_value ());
 }
 
 DEFNDCMPLXCMPOP_FN (lt, scalar, complex_matrix, scalar, complex_array, mx_el_lt)
@@ -97,12 +91,7 @@
   const octave_complex_matrix& v2
     = dynamic_cast<const octave_complex_matrix&> (a2);
 
-  double d = v1.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.complex_array_value () / d);
+  return octave_value (v2.complex_array_value () / v1.double_value ());
 }
 
 DEFNDBINOP_FN (el_and, scalar, complex_matrix, scalar, complex_array, mx_el_and)
--- a/libinterp/operators/op-s-cs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-s-cs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-scalar.h"
@@ -48,12 +47,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.double_value () / d);
+  return octave_value (v1.double_value () / v2.complex_value ());
 }
 
 DEFBINOP_FN (pow, scalar, complex, xpow)
@@ -63,12 +57,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  double d = v1.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.complex_value () / d);
+  return octave_value (v2.complex_value () / v1.double_value ());
 }
 
 DEFCMPLXCMPOP_OP (lt, scalar, complex, <)
@@ -85,12 +74,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.double_value () / d);
+  return octave_value (v1.double_value () / v2.complex_value ());
 }
 
 DEFBINOP_FN (el_pow, scalar, complex, xpow)
@@ -100,12 +84,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  double d = v1.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.complex_value () / d);
+  return octave_value (v2.complex_value () / v1.double_value ());
 }
 
 DEFBINOP (el_and, scalar, complex)
--- a/libinterp/operators/op-s-m.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-s-m.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -24,7 +24,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-scalar.h"
@@ -64,12 +63,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_matrix& v2 = dynamic_cast<const octave_matrix&> (a2);
 
-  double d = v1.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.array_value () / d);
+  return octave_value (v2.array_value () / v1.double_value ());
 }
 
 DEFNDBINOP_FN (lt, scalar, matrix, scalar, array, mx_el_lt)
@@ -88,12 +82,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_matrix& v2 = dynamic_cast<const octave_matrix&> (a2);
 
-  double d = v1.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.array_value () / d);
+  return octave_value (v2.array_value () / v1.double_value ());
 }
 
 DEFNDBINOP_FN (el_and, scalar, matrix, scalar, array, mx_el_and)
--- a/libinterp/operators/op-s-s.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-s-s.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -26,7 +26,6 @@
 
 #include "Array-util.h"
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-scalar.h"
@@ -70,12 +69,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.double_value () / d);
+  return octave_value (v1.double_value () / v2.double_value ());
 }
 
 DEFBINOP_FN (pow, scalar, scalar, xpow)
@@ -85,12 +79,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v1.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.double_value () / d);
+  return octave_value (v2.double_value () / v1.double_value ());
 }
 
 DEFBINOP_OP (lt, scalar, scalar, <)
@@ -107,12 +96,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v1.double_value () / d);
+  return octave_value (v1.double_value () / v2.double_value ());
 }
 
 DEFBINOP_FN (el_pow, scalar, scalar, xpow)
@@ -122,12 +106,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v1.double_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  return octave_value (v2.double_value () / d);
+  return octave_value (v2.double_value () / v1.double_value ());
 }
 
 DEFSCALARBOOLOP_OP (el_and, scalar, scalar, &&)
--- a/libinterp/operators/op-s-scm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-s-scm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -54,14 +53,8 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      Complex d = v2.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (SparseComplexMatrix (1, 1, v1.scalar_value () / d));
-    }
+    return octave_value (SparseComplexMatrix (1, 1, v1.scalar_value ()
+                                                  / v2.complex_value ()));
   else
     {
       MatrixType typ = v2.matrix_type ();
@@ -87,15 +80,7 @@
   const octave_sparse_complex_matrix& v2
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
-  double d = v1.double_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v2.sparse_complex_matrix_value () / d);
-
-  return retval;
+  return octave_value (v2.sparse_complex_matrix_value () / v1.double_value ());
 }
 
 DEFBINOP_FN (lt, scalar, sparse_complex_matrix, mx_el_lt)
@@ -115,15 +100,7 @@
   const octave_sparse_complex_matrix& v2
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
-  double d = v1.double_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v2.sparse_complex_matrix_value () / d);
-
-  return retval;
+  return octave_value (v2.sparse_complex_matrix_value () / v1.double_value ());
 }
 
 DEFBINOP_FN (el_and, scalar, sparse_complex_matrix, mx_el_and)
--- a/libinterp/operators/op-s-sm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-s-sm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -49,14 +48,7 @@
   const octave_sparse_matrix& v2 = dynamic_cast<const octave_sparse_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      double d = v2.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (SparseMatrix (1, 1, v1.scalar_value () / d));
-    }
+    return octave_value (SparseMatrix (1, 1, v1.scalar_value () / v2.scalar_value ()));
   else
     {
       MatrixType typ = v2.matrix_type ();
@@ -80,15 +72,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_sparse_matrix& v2 = dynamic_cast<const octave_sparse_matrix&> (a2);
 
-  double d = v1.double_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v2.sparse_matrix_value () / d);
-
-  return retval;
+  return octave_value (v2.sparse_matrix_value () / v1.double_value ());
 }
 
 DEFBINOP_FN (lt, scalar, sparse_matrix, mx_el_lt)
@@ -107,15 +91,7 @@
   const octave_scalar& v1 = dynamic_cast<const octave_scalar&> (a1);
   const octave_sparse_matrix& v2 = dynamic_cast<const octave_sparse_matrix&> (a2);
 
-  double d = v1.double_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v2.sparse_matrix_value () / d);
-
-  return retval;
+  return octave_value (v2.sparse_matrix_value () / v1.double_value ());
 }
 
 DEFBINOP_FN (el_and, scalar, sparse_matrix, mx_el_and)
--- a/libinterp/operators/op-scm-cm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-scm-cm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -74,14 +73,7 @@
     = dynamic_cast<const octave_complex_matrix&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      Complex d = v1.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v2.complex_array_value () / d);
-    }
+    return octave_value (v2.complex_array_value () / v1.complex_value ());
   else
     {
       MatrixType typ = v1.matrix_type ();
--- a/libinterp/operators/op-scm-cs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-scm-cs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -50,15 +49,7 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v1.sparse_complex_matrix_value () / d);
-
-  return retval;
+  return octave_value (v1.sparse_complex_matrix_value () / v2.complex_value ());
 }
 
 DEFBINOP (pow, sparse_complex_matrix, complex)
@@ -76,14 +67,8 @@
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      Complex d = v1.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (SparseComplexMatrix (1, 1, v2.complex_value () / d));
-    }
+    return octave_value (SparseComplexMatrix (1, 1, v2.complex_value ()
+                                                  / v1.complex_value ()));
   else
     {
       MatrixType typ = v1.matrix_type ();
@@ -110,16 +95,7 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  octave_value retval;
-
-  Complex d = v2.complex_value ();
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v1.sparse_complex_matrix_value () / d);
-
-  return retval;
+  return octave_value (v1.sparse_complex_matrix_value () / v2.complex_value ());
 }
 
 DEFBINOP_FN (el_pow, sparse_complex_matrix, complex, elem_xpow)
--- a/libinterp/operators/op-scm-m.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-scm-m.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -73,14 +72,7 @@
   const octave_matrix& v2 = dynamic_cast<const octave_matrix&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      Complex d = v1.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v2.array_value () / d);
-    }
+    return octave_value (v2.array_value () / v1.complex_value ());
   else
     {
       MatrixType typ = v1.matrix_type ();
--- a/libinterp/operators/op-scm-s.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-scm-s.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -53,15 +52,7 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v1.sparse_complex_matrix_value () / d);
-
-  return retval;
+  return octave_value (v1.sparse_complex_matrix_value () / v2.double_value ());
 }
 
 DEFBINOP (pow, sparse_complex_matrix, scalar)
@@ -84,14 +75,8 @@
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      Complex d = v1.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (SparseComplexMatrix (1, 1, v2.scalar_value () / d));
-    }
+    return octave_value (SparseComplexMatrix (1, 1, v2.scalar_value ()
+                                                  / v1.complex_value ()));
   else
     {
       MatrixType typ = v1.matrix_type ();
@@ -118,15 +103,7 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v1.sparse_complex_matrix_value () / d);
-
-  return retval;
+  return octave_value (v1.sparse_complex_matrix_value () / v2.double_value ());
 }
 
 DEFBINOP_FN (el_pow, sparse_complex_matrix, scalar, elem_xpow)
--- a/libinterp/operators/op-scm-scm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-scm-scm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -34,15 +33,10 @@
 
 #include "sparse-xdiv.h"
 #include "sparse-xpow.h"
+#include "ov-cx-mat.h"
+#include "ov-cx-sparse.h"
 #include "ov-re-sparse.h"
-#include "ov-cx-sparse.h"
 
-#include "errwarn.h"
-#include "ovl.h"
-#include "ov.h"
-#include "ov-cx-mat.h"
-#include "ov-typeinfo.h"
-#include "ops.h"
 #include "xdiv.h"
 #include "xpow.h"
 
@@ -70,24 +64,6 @@
           v.matrix_type ().transpose ());
 }
 
-#if 0
-DEFUNOP (incr, sparse_complex_matrix)
-{
-  const octave_sparse_complex_matrix& v
-    = dynamic_cast<const octave_sparse_complex_matrix&> (a);
-
-  return octave_value (v.complex_matrix_value () .increment ());
-}
-
-DEFUNOP (decr, sparse_complex_matrix)
-{
-  const octave_sparse_complex_matrix& v
-    = dynamic_cast<const octave_sparse_complex_matrix&> (a);
-
-  return octave_value (v.complex_matrix_value () .decrement ());
-}
-#endif
-
 // complex matrix by complex matrix ops.
 
 DEFBINOP_OP (add, sparse_complex_matrix, sparse_complex_matrix, +)
@@ -103,14 +79,7 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      Complex d = v2.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.sparse_complex_matrix_value () / d);
-    }
+    return octave_value (v1.sparse_complex_matrix_value () / v2.complex_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
@@ -135,14 +104,7 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      Complex d = v1.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v2.sparse_complex_matrix_value () / d);
-    }
+    return octave_value (v2.sparse_complex_matrix_value () / v1.complex_value ());
   else
     {
       MatrixType typ = v1.matrix_type ();
@@ -196,11 +158,6 @@
   INSTALL_UNOP_TI (ti, op_transpose, octave_sparse_complex_matrix, transpose);
   INSTALL_UNOP_TI (ti, op_hermitian, octave_sparse_complex_matrix, hermitian);
 
-#if 0
-  INSTALL_NCUNOP_TI (ti, op_incr, octave_sparse_complex_matrix, incr);
-  INSTALL_NCUNOP_TI (ti, op_decr, octave_sparse_complex_matrix, decr);
-#endif
-
   INSTALL_BINOP_TI (ti, op_add, octave_sparse_complex_matrix,
                     octave_sparse_complex_matrix, add);
   INSTALL_BINOP_TI (ti, op_sub, octave_sparse_complex_matrix,
--- a/libinterp/operators/op-scm-sm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-scm-sm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -53,14 +52,7 @@
     = dynamic_cast<const octave_sparse_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      double d = v2.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.sparse_complex_matrix_value () / d);
-    }
+    return octave_value (v1.sparse_complex_matrix_value () / v2.scalar_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
@@ -85,14 +77,7 @@
     = dynamic_cast<const octave_sparse_matrix&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      Complex d = v1.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v2.sparse_matrix_value () / d);
-    }
+    return octave_value (v2.sparse_matrix_value () / v1.complex_value ());
   else
     {
       MatrixType typ = v1.matrix_type ();
--- a/libinterp/operators/op-sm-cm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-sm-cm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -74,14 +73,7 @@
     = dynamic_cast<const octave_complex_matrix&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      double d = v1.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v2.complex_array_value () / d);
-    }
+    return octave_value (v2.complex_array_value () / v1.scalar_value ());
   else
     {
       MatrixType typ = v1.matrix_type ();
--- a/libinterp/operators/op-sm-cs.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-sm-cs.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -51,15 +50,7 @@
   const octave_sparse_matrix& v1 = dynamic_cast<const octave_sparse_matrix&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v1.sparse_matrix_value () / d);
-
-  return retval;
+  return octave_value (v1.sparse_matrix_value () / v2.complex_value ());
 }
 
 DEFBINOP (pow, sparse_matrix, complex)
@@ -75,14 +66,8 @@
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      double d = v1.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (SparseComplexMatrix (1, 1, v2.complex_value () / d));
-    }
+    return octave_value (SparseComplexMatrix (1, 1, v2.complex_value ()
+                                                  / v1.scalar_value ()));
   else
     {
       MatrixType typ = v1.matrix_type ();
@@ -108,15 +93,7 @@
   const octave_sparse_matrix& v1 = dynamic_cast<const octave_sparse_matrix&> (a1);
   const octave_complex& v2 = dynamic_cast<const octave_complex&> (a2);
 
-  Complex d = v2.complex_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v1.sparse_matrix_value () / d);
-
-  return retval;
+  return octave_value (v1.sparse_matrix_value () / v2.complex_value ());
 }
 
 DEFBINOP_FN (el_pow, sparse_matrix, complex, elem_xpow)
--- a/libinterp/operators/op-sm-m.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-sm-m.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -69,14 +68,7 @@
   const octave_matrix& v2 = dynamic_cast<const octave_matrix&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      double d = v1.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v2.array_value () / d);
-    }
+    return octave_value (v2.array_value () / v1.scalar_value ());
   else
     {
       MatrixType typ = v1.matrix_type ();
--- a/libinterp/operators/op-sm-s.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-sm-s.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -48,15 +47,7 @@
   const octave_sparse_matrix& v1 = dynamic_cast<const octave_sparse_matrix&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v1.sparse_matrix_value () / d);
-
-  return retval;
+  return octave_value (v1.sparse_matrix_value () / v2.double_value ());
 }
 
 DEFBINOP (pow, sparse_matrix, scalar)
@@ -77,14 +68,7 @@
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      double d = v1.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (SparseMatrix(1, 1, v2.scalar_value () / d));
-    }
+    return octave_value (SparseMatrix(1, 1, v2.scalar_value () / v1.scalar_value ()));
   else
     {
       MatrixType typ = v1.matrix_type ();
@@ -110,15 +94,7 @@
   const octave_sparse_matrix& v1 = dynamic_cast<const octave_sparse_matrix&> (a1);
   const octave_scalar& v2 = dynamic_cast<const octave_scalar&> (a2);
 
-  double d = v2.double_value ();
-  octave_value retval;
-
-  if (d == 0.0)
-    warn_divide_by_zero ();
-
-  retval = octave_value (v1.sparse_matrix_value () / d);
-
-  return retval;
+  return octave_value (v1.sparse_matrix_value () / v2.double_value ());
 }
 
 DEFBINOP_FN (el_pow, sparse_matrix, scalar, elem_xpow)
--- a/libinterp/operators/op-sm-scm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-sm-scm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -53,14 +52,7 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      Complex d = v2.complex_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.sparse_matrix_value () / d);
-    }
+    return octave_value (v1.sparse_matrix_value () / v2.complex_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
@@ -85,14 +77,7 @@
     = dynamic_cast<const octave_sparse_complex_matrix&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      double d = v1.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v2.sparse_complex_matrix_value () / d);
-    }
+    return octave_value (v2.sparse_complex_matrix_value () / v1.scalar_value ());
   else
     {
       MatrixType typ = v1.matrix_type ();
--- a/libinterp/operators/op-sm-sm.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/operators/op-sm-sm.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -25,7 +25,6 @@
 #  include "config.h"
 #endif
 
-#include "errwarn.h"
 #include "ovl.h"
 #include "ov.h"
 #include "ov-typeinfo.h"
@@ -76,14 +75,7 @@
   const octave_sparse_matrix& v2 = dynamic_cast<const octave_sparse_matrix&> (a2);
 
   if (v2.rows () == 1 && v2.columns () == 1)
-    {
-      double d = v2.scalar_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v1.sparse_matrix_value () / d);
-    }
+    return octave_value (v1.sparse_matrix_value () / v2.scalar_value ());
   else
     {
       MatrixType typ = v2.matrix_type ();
@@ -106,14 +98,7 @@
   const octave_sparse_matrix& v2 = dynamic_cast<const octave_sparse_matrix&> (a2);
 
   if (v1.rows () == 1 && v1.columns () == 1)
-    {
-      double d = v1.double_value ();
-
-      if (d == 0.0)
-        warn_divide_by_zero ();
-
-      return octave_value (v2.sparse_matrix_value () / d);
-    }
+    return octave_value (v2.sparse_matrix_value () / v1.double_value ());
   else
     {
       MatrixType typ = v1.matrix_type ();
--- a/libinterp/parse-tree/bp-table.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/bp-table.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -274,7 +274,9 @@
       print_usage (who);
 
     // elements already processed
-    bool seen_in = false, seen_at = false, seen_if = false;
+    bool seen_in = false;
+    bool seen_at = false;
+    bool seen_if = false;
     int pos = 0;
     dbstop_args tok = dbstop_none;
     while (pos < nargin)
--- a/libinterp/parse-tree/comment-list.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/comment-list.h	Thu Jan 24 20:20:02 2019 +0000
@@ -102,14 +102,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::comment_list' instead")
-typedef octave::comment_list octave_comment_list;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::comment_elt' instead")
-typedef octave::comment_elt octave_comment_elt;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/jit-typeinfo.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/jit-typeinfo.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -386,10 +386,6 @@
   extern "C" Complex
   octave_jit_complex_div (Complex lhs, Complex rhs)
   {
-    // see src/OPERATORS/op-cs-cs.cc
-    if (rhs == 0.0)
-      warn_divide_by_zero ();
-
     return lhs / rhs;
   }
 
@@ -1355,10 +1351,6 @@
     add_binary_fcmp (m_scalar, octave_value::op_gt, llvm::CmpInst::FCMP_UGT);
     add_binary_fcmp (m_scalar, octave_value::op_ne, llvm::CmpInst::FCMP_UNE);
 
-    jit_function gripe_div0 = create_external (JIT_FN (warn_divide_by_zero),
-                                               nullptr);
-    gripe_div0.mark_can_error ();
-
     // divide is annoying because it might error
     fn = create_internal ("octave_jit_div_scalar_scalar", m_scalar, m_scalar,
                           m_scalar);
@@ -1376,7 +1368,6 @@
       m_builder.CreateCondBr (check, warn_block, normal_block);
 
       m_builder.SetInsertPoint (warn_block);
-      gripe_div0.call (m_builder);
       m_builder.CreateBr (normal_block);
 
       m_builder.SetInsertPoint (normal_block);
--- a/libinterp/parse-tree/oct-parse.yy	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/oct-parse.yy	Thu Jan 24 20:20:02 2019 +0000
@@ -3343,14 +3343,11 @@
       = new octave_user_function (m_lexer.m_symtab_context.curr_scope (),
                                   param_list, nullptr, body);
 
-    if (fcn)
-      {
-        comment_list *tc = m_lexer.m_comment_buf.get_comment ();
-
-        fcn->stash_trailing_comment (tc);
-        fcn->stash_fcn_end_location (end_fcn_stmt->line (),
-                                     end_fcn_stmt->column ());
-      }
+    comment_list *tc = m_lexer.m_comment_buf.get_comment ();
+
+    fcn->stash_trailing_comment (tc);
+    fcn->stash_fcn_end_location (end_fcn_stmt->line (),
+                                 end_fcn_stmt->column ());
 
     // If input is coming from a file, issue a warning if the name of
     // the file does not match the name of the function stated in the
@@ -5402,23 +5399,6 @@
   }
 }
 
-octave_value_list
-eval_string (const std::string& str, bool silent, int& parse_status,
-             int nargout)
-{
-  octave::interpreter& interp = octave::__get_interpreter__ ("eval_string");
-
-  return interp.eval_string (str, silent, parse_status, nargout);
-}
-
-octave_value
-eval_string (const std::string& str, bool silent, int& parse_status)
-{
-  octave::interpreter& interp = octave::__get_interpreter__ ("eval_string");
-
-  return interp.eval_string (str, silent, parse_status);
-}
-
 DEFMETHOD (eval, interp, args, nargout,
            doc: /* -*- texinfo -*-
 @deftypefn  {} {} eval (@var{try})
--- a/libinterp/parse-tree/parse.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/parse.h	Thu Jan 24 20:20:02 2019 +0000
@@ -596,95 +596,4 @@
   cleanup_statement_list (tree_statement_list **lst);
 }
 
-OCTAVE_DEPRECATED (4.4, "use 'octave::interpreter::eval_string' instead")
-extern OCTINTERP_API octave_value_list
-eval_string (const std::string& str, bool silent, int& parse_status,
-             int nargout);
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::interpreter::eval_string' instead")
-extern OCTINTERP_API octave_value
-eval_string (const std::string& str, bool silent, int& parse_status);
-
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::get_help_from_file' instead")
-static inline std::string
-get_help_from_file (const std::string& nm, bool& symbol_found,
-                    std::string& file)
-{
-  return octave::get_help_from_file (nm, symbol_found, file);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::get_help_from_file' instead")
-static inline std::string
-get_help_from_file (const std::string& nm, bool& symbol_found)
-{
-  return octave::get_help_from_file (nm, symbol_found);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::lookup_autoload' instead")
-static inline std::string
-lookup_autoload (const std::string& nm)
-{
-  return octave::lookup_autoload (nm);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::autoloaded_functions' instead")
-static inline string_vector
-autoloaded_functions (void)
-{
-  return octave::autoloaded_functions ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::reverse_lookup_autoload' instead")
-static inline string_vector
-reverse_lookup_autoload (const std::string& nm)
-{
-  return octave::reverse_lookup_autoload (nm);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::source_file' instead")
-static inline void
-source_file (const std::string& file_name,
-             const std::string& context = "",
-             bool verbose = false, bool require_file = true,
-             const std::string& warn_for = "")
-{
-  octave::source_file (file_name, context, verbose, require_file, warn_for);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::feval' instead")
-static inline octave_value_list
-feval (const std::string& name,
-       const octave_value_list& args = octave_value_list (),
-       int nargout = 0)
-{
-  return octave::feval (name, args, nargout);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::feval' instead")
-static inline octave_value_list
-feval (octave_function *fcn,
-       const octave_value_list& args = octave_value_list (),
-       int nargout = 0)
-{
-  return octave::feval (fcn, args, nargout);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::feval' instead")
-static inline octave_value_list
-feval (const octave_value_list& args, int nargout = 0)
-{
-  return octave::feval (args, nargout);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::cleanup_statement_list' instead")
-static inline void
-cleanup_statement_list (octave::tree_statement_list **lst)
-{
-  octave::cleanup_statement_list (lst);
-}
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-array-list.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-array-list.h	Thu Jan 24 20:20:02 2019 +0000
@@ -85,11 +85,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_array_list' instead")
-typedef octave::tree_array_list tree_array_list;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-assign.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-assign.h	Thu Jan 24 20:20:02 2019 +0000
@@ -171,14 +171,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_simple_assignment' instead")
-typedef octave::tree_simple_assignment tree_simple_assignment;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_multi_assignment' instead")
-typedef octave::tree_multi_assignment tree_multi_assignment;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-binop.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-binop.h	Thu Jan 24 20:20:02 2019 +0000
@@ -185,14 +185,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_binary_expression' instead")
-typedef octave::tree_binary_expression tree_binary_expression;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_boolean_expression' instead")
-typedef octave::tree_boolean_expression tree_boolean_expression;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-bp.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-bp.h	Thu Jan 24 20:20:02 2019 +0000
@@ -175,11 +175,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_breakpoint' instead")
-typedef octave::tree_breakpoint tree_breakpoint;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-cbinop.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-cbinop.h	Thu Jan 24 20:20:02 2019 +0000
@@ -87,11 +87,4 @@
                                     = octave_value::unknown_binary_op);
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_compound_binary_expression' instead")
-typedef octave::tree_compound_binary_expression tree_compound_binary_expression;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-cell.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-cell.h	Thu Jan 24 20:20:02 2019 +0000
@@ -69,11 +69,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_cell' instead")
-typedef octave::tree_cell tree_cell;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-check.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-check.h	Thu Jan 24 20:20:02 2019 +0000
@@ -142,11 +142,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_checker' instead")
-typedef octave::tree_checker tree_checker;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-cmd.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-cmd.h	Thu Jan 24 20:20:02 2019 +0000
@@ -124,17 +124,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_command' instead")
-typedef octave::tree_command tree_command;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_no_op_command' instead")
-typedef octave::tree_no_op_command tree_no_op_command;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_function_def' instead")
-typedef octave::tree_function_def tree_function_def;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-colon.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-colon.h	Thu Jan 24 20:20:02 2019 +0000
@@ -109,11 +109,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_colon_expression' instead")
-typedef octave::tree_colon_expression tree_colon_expression;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-const.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-const.h	Thu Jan 24 20:20:02 2019 +0000
@@ -106,11 +106,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_constant' instead")
-typedef octave::tree_constant tree_constant;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-decl.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-decl.h	Thu Jan 24 20:20:02 2019 +0000
@@ -227,16 +227,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_decl_elt' instead")
-typedef octave::tree_decl_elt tree_decl_elt;
-
-// tree_decl_init_list is derived from a template.
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_decl_command' instead")
-typedef octave::tree_decl_command tree_decl_command;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-eval.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-eval.h	Thu Jan 24 20:20:02 2019 +0000
@@ -662,11 +662,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_evaluator' instead")
-typedef octave::tree_evaluator tree_evaluator;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-except.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-except.h	Thu Jan 24 20:20:02 2019 +0000
@@ -168,14 +168,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_try_catch_command' instead")
-typedef octave::tree_try_catch_command tree_try_catch_command;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_unwind_protect_command' instead")
-typedef octave::tree_unwind_protect_command tree_unwind_protect_command;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-exp.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-exp.h	Thu Jan 24 20:20:02 2019 +0000
@@ -158,11 +158,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_expression' instead")
-typedef octave::tree_expression tree_expression;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-fcn-handle.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-fcn-handle.h	Thu Jan 24 20:20:02 2019 +0000
@@ -155,14 +155,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_fcn_handle' instead")
-typedef octave::tree_fcn_handle tree_fcn_handle;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_anon_fcn_handle' instead")
-typedef octave::tree_anon_fcn_handle tree_anon_fcn_handle;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-funcall.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-funcall.h	Thu Jan 24 20:20:02 2019 +0000
@@ -88,11 +88,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_funcall' instead")
-typedef octave::tree_funcall tree_funcall;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-id.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-id.h	Thu Jan 24 20:20:02 2019 +0000
@@ -169,14 +169,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_identifier' instead")
-typedef octave::tree_identifier tree_identifier;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_black_hole' instead")
-typedef octave::tree_black_hole tree_black_hole;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-idx.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-idx.h	Thu Jan 24 20:20:02 2019 +0000
@@ -131,11 +131,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_index_expression' instead")
-typedef octave::tree_index_expression tree_index_expression;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-jump.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-jump.h	Thu Jan 24 20:20:02 2019 +0000
@@ -100,17 +100,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_break_command' instead")
-typedef octave::tree_break_command tree_break_command;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_continue_command' instead")
-typedef octave::tree_continue_command tree_continue_command;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_return_command' instead")
-typedef octave::tree_return_command tree_return_command;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-loop.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-loop.h	Thu Jan 24 20:20:02 2019 +0000
@@ -322,20 +322,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_while_command' instead")
-typedef octave::tree_while_command tree_while_command;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_do_until_command' instead")
-typedef octave::tree_do_until_command tree_do_until_command;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_simple_for_command' instead")
-typedef octave::tree_simple_for_command tree_simple_for_command;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_complex_for_command' instead")
-typedef octave::tree_complex_for_command tree_complex_for_command;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-mat.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-mat.h	Thu Jan 24 20:20:02 2019 +0000
@@ -78,25 +78,4 @@
   maybe_warn_string_concat (bool all_dq_strings_p, bool all_sq_strings_p);
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_matrix' instead")
-typedef octave::tree_matrix tree_matrix;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::get_concat_class' instead")
-static inline std::string
-get_concat_class (const std::string& c1, const std::string& c2)
-{
-  return octave::get_concat_class (c1, c2);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::maybe_warn_string_concat' instead")
-static inline void
-maybe_warn_string_concat (bool all_dq_strings_p, bool all_sq_strings_p)
-{
-  octave::maybe_warn_string_concat (all_dq_strings_p, all_sq_strings_p);
-}
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-pr-code.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-pr-code.h	Thu Jan 24 20:20:02 2019 +0000
@@ -196,11 +196,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_print_code' instead")
-typedef octave::tree_print_code tree_print_code;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-select.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-select.h	Thu Jan 24 20:20:02 2019 +0000
@@ -292,24 +292,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_if_clause' instead")
-typedef octave::tree_if_clause tree_if_clause;
-
-// tree_if_command_list is derived from a template.
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_if_command' instead")
-typedef octave::tree_if_command tree_if_command;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_switch_case' instead")
-typedef octave::tree_switch_case tree_switch_case;
-
-// tree_switch_case_list is derived from a template.
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_switch_command' instead")
-typedef octave::tree_switch_command tree_switch_command;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-stmt.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-stmt.h	Thu Jan 24 20:20:02 2019 +0000
@@ -207,14 +207,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_statement' instead")
-typedef octave::tree_statement tree_statement;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_statement_list' instead")
-typedef octave::tree_statement_list tree_statement_list;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-unop.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-unop.h	Thu Jan 24 20:20:02 2019 +0000
@@ -152,17 +152,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_unary_expression' instead")
-typedef octave::tree_unary_expression tree_unary_expression;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_prefix_expression' instead")
-typedef octave::tree_prefix_expression tree_prefix_expression;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_postfix_expression' instead")
-typedef octave::tree_postfix_expression tree_postfix_expression;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt-walk.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt-walk.h	Thu Jan 24 20:20:02 2019 +0000
@@ -295,11 +295,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree_walker' instead")
-typedef octave::tree_walker tree_walker;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/pt.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/pt.h	Thu Jan 24 20:20:02 2019 +0000
@@ -121,11 +121,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::tree' instead")
-typedef octave::tree tree;
-
 #endif
-
-#endif
--- a/libinterp/parse-tree/token.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/libinterp/parse-tree/token.h	Thu Jan 24 20:20:02 2019 +0000
@@ -201,11 +201,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::token' instead")
-typedef octave::token token;
-
 #endif
-
-#endif
--- a/liboctave/array/Array.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/Array.h	Thu Jan 24 20:20:02 2019 +0000
@@ -334,34 +334,6 @@
   void clear (octave_idx_type r, octave_idx_type c)
   { clear (dim_vector (r, c)); }
 
-  // Number of elements in the array.  These are all synonyms.
-  //@{
-  //! Number of elements in the array.
-  //! Synonymous with numel().
-  //! @note This method is deprecated in favour of numel().
-  OCTAVE_DEPRECATED (4.4, "use 'numel' instead")
-  octave_idx_type capacity (void) const { return numel (); }
-
-  //! Number of elements in the array.
-  //!
-  //! Synonymous with numel().
-  //! @note This method is deprecated in favour of numel().
-  //!
-  //! @note
-  //! This is @em not the same as @c %length() at the Octave interpreter.
-  //! At the Octave interpreter, the function @c %length() returns the
-  //! length of the greatest dimension.  This method returns the total
-  //! number of elements.
-
-  OCTAVE_DEPRECATED (4.4, "use 'numel' instead")
-  octave_idx_type length (void) const { return numel (); }
-
-  //! Number of elements in the array.
-  //! Synonymous with numel().
-  //! @note This method is deprecated in favour of numel().
-  OCTAVE_DEPRECATED (4.4, "use 'numel' instead")
-  octave_idx_type nelem (void) const { return numel (); }
-
   //! Number of elements in the array.
   octave_idx_type numel (void) const { return slice_len; }
   //@}
@@ -558,22 +530,10 @@
 
   bool issquare (void) const { return (dim1 () == dim2 ()); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'issquare' instead")
-  bool is_square (void) const
-  { return issquare (); }
-
   bool isempty (void) const { return numel () == 0; }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isempty' instead")
-  bool is_empty (void) const
-  { return isempty (); }
-
   bool isvector (void) const { return dimensions.isvector (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isvector' instead")
-  bool is_vector (void) const
-  { return isvector (); }
-
   bool is_nd_vector (void) const { return dimensions.is_nd_vector (); }
 
   Array<T> transpose (void) const;
@@ -712,10 +672,6 @@
   //! Ordering is auto-detected or can be specified.
   sortmode issorted (sortmode mode = UNSORTED) const;
 
-  OCTAVE_DEPRECATED (4.4, "use 'issorted' instead")
-  sortmode is_sorted (sortmode mode = UNSORTED) const
-  { return issorted (mode); }
-
   //! Sort by rows returns only indices.
   Array<octave_idx_type> sort_rows_idx (sortmode mode = ASCENDING) const;
 
--- a/liboctave/array/CMatrix.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/CMatrix.h	Thu Jan 24 20:20:02 2019 +0000
@@ -111,10 +111,6 @@
 
   bool ishermitian (void) const;
 
-  OCTAVE_DEPRECATED (4.4, "use 'ishermitian' instead")
-  bool is_hermitian (void) const
-  { return ishermitian (); }
-
   // destructive insert/delete/reorder operations
 
   ComplexMatrix& insert (const Matrix& a, octave_idx_type r, octave_idx_type c);
--- a/liboctave/array/CSparse.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/CSparse.h	Thu Jan 24 20:20:02 2019 +0000
@@ -113,10 +113,6 @@
 
   bool ishermitian (void) const;
 
-  OCTAVE_DEPRECATED (4.4, "use 'ishermitian' instead")
-  bool is_hermitian (void) const
-  { return ishermitian (); }
-
   SparseComplexMatrix max (int dim = -1) const;
   SparseComplexMatrix max (Array<octave_idx_type>& index, int dim = -1) const;
   SparseComplexMatrix min (int dim = -1) const;
--- a/liboctave/array/MatrixType.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/MatrixType.h	Thu Jan 24 20:20:02 2019 +0000
@@ -110,31 +110,15 @@
   bool isdiag (void) const
   { return (typ == Diagonal || typ == Permuted_Diagonal); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isdiag' instead")
-  bool is_diagonal (void) const
-  { return isdiag (); }
-
   bool istriu (void) const
   { return (typ == Upper || typ == Permuted_Upper); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'istriu' instead")
-  bool is_upper_triangular (void) const
-  { return istriu (); }
-
   bool istril (void) const
   { return (typ == Lower || typ == Permuted_Lower); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'istril' instead")
-  bool is_lower_triangular (void) const
-  { return istril (); }
-
   bool isbanded (void) const
   { return (typ == Banded || typ == Banded_Hermitian); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isbanded' instead")
-  bool is_banded (void) const
-  { return isbanded (); }
-
   bool is_tridiagonal (void) const
   { return (typ == Tridiagonal || typ == Tridiagonal_Hermitian); }
 
@@ -144,10 +128,6 @@
             || typ == Hermitian);
   }
 
-  OCTAVE_DEPRECATED (4.4, "use 'ishermitian' instead")
-  bool is_hermitian (void) const
-  { return ishermitian (); }
-
   bool is_rectangular (void) const { return (typ == Rectangular); }
 
   bool is_known (void) const { return (typ != Unknown); }
--- a/liboctave/array/PermMatrix.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/PermMatrix.h	Thu Jan 24 20:20:02 2019 +0000
@@ -60,9 +60,6 @@
   octave_idx_type length (void) const
   { return perm_length (); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'numel' instead")
-  octave_idx_type nelem (void) const { return numel (); }
-
   octave_idx_type numel (void) const { return dim1 () * dim2 (); }
 
   size_t byte_size (void) const
--- a/liboctave/array/Range.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/Range.h	Thu Jan 24 20:20:02 2019 +0000
@@ -80,9 +80,6 @@
 
   octave_idx_type numel (void) const { return rng_numel; }
 
-  OCTAVE_DEPRECATED (4.4, "use 'numel' instead")
-  octave_idx_type nelem (void) const { return numel (); }
-
   octave_idx_type rows (void) const { return 1; }
 
   octave_idx_type cols (void) const { return numel (); }
@@ -90,10 +87,6 @@
 
   bool isempty (void) const { return numel () == 0; }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isempty' instead")
-  bool is_empty (void) const
-  { return isempty (); }
-
   bool all_elements_are_ints (void) const;
 
   Matrix matrix_value (void) const;
@@ -112,10 +105,6 @@
 
   sortmode issorted (sortmode mode = ASCENDING) const;
 
-  OCTAVE_DEPRECATED (4.4, "use 'issorted' instead")
-  sortmode is_sorted (sortmode mode = ASCENDING) const
-  { return issorted (mode); }
-
   octave_idx_type nnz (void) const;
 
   // Support for single-index subscripting, without generating matrix cache.
--- a/liboctave/array/Sparse.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/Sparse.h	Thu Jan 24 20:20:02 2019 +0000
@@ -231,11 +231,6 @@
   //! This may differ from the actual number of elements, see nnz().
   octave_idx_type nzmax (void) const { return rep->length (); }
 
-  //! Amount of storage for nonzero elements.
-  //! Synonymous with nzmax().
-  OCTAVE_DEPRECATED (4.4, "use 'nzmax' instead")
-  octave_idx_type capacity (void) const { return nzmax (); }
-
   //! Actual number of nonzero terms.
   octave_idx_type nnz (void) const { return rep->nnz (); }
 
@@ -246,12 +241,6 @@
     return dimensions.safe_numel ();
   }
 
-  OCTAVE_DEPRECATED (4.4, "use 'nzmax' instead")
-  octave_idx_type nelem (void) const { return nzmax (); }
-
-  OCTAVE_DEPRECATED (4.4, "use 'numel' instead")
-  octave_idx_type length (void) const { return numel (); }
-
   octave_idx_type dim1 (void) const { return dimensions(0); }
   octave_idx_type dim2 (void) const { return dimensions(1); }
 
@@ -471,16 +460,8 @@
 
   bool issquare (void) const { return (dim1 () == dim2 ()); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'issquare' instead")
-  bool is_square (void) const
-  { return issquare (); }
-
   bool isempty (void) const { return (rows () < 1 || cols () < 1); }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isempty' instead")
-  bool is_empty (void) const
-  { return isempty (); }
-
   Sparse<T> transpose (void) const;
 
   T * data (void) { make_unique (); return rep->d; }
--- a/liboctave/array/boolNDArray.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/boolNDArray.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -67,21 +67,6 @@
   return do_mx_red_op<bool, bool> (*this, dim, mx_inline_any);
 }
 
-NDArray
-boolNDArray::sum (int dim) const
-{
-  // NOTE: going via octave_idx_type is typically faster even though it
-  // requires a conversion.
-  return do_mx_red_op<octave_idx_type, bool> (*this, dim, mx_inline_count);
-}
-
-NDArray
-boolNDArray::cumsum (int dim) const
-{
-  // In this case, it's better to sum directly to doubles.
-  return do_mx_cum_op<double , bool> (*this, dim, mx_inline_cumcount);
-}
-
 boolNDArray
 boolNDArray::concat (const boolNDArray& rb,
                      const Array<octave_idx_type>& ra_idx)
--- a/liboctave/array/boolNDArray.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/boolNDArray.h	Thu Jan 24 20:20:02 2019 +0000
@@ -68,12 +68,6 @@
   boolNDArray all (int dim = -1) const;
   boolNDArray any (int dim = -1) const;
 
-  OCTAVE_DEPRECATED (4.4, "convert to and operate on numeric type instead")
-  NDArray sum (int dim = -1) const;
-
-  OCTAVE_DEPRECATED (4.4, "convert to and operate on numeric type instead")
-  NDArray cumsum (int dim = -1) const;
-
   boolNDArray concat (const boolNDArray& rb,
                       const Array<octave_idx_type>& ra_idx);
 
--- a/liboctave/array/dMatrix.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/dMatrix.h	Thu Jan 24 20:20:02 2019 +0000
@@ -98,10 +98,6 @@
 
   bool issymmetric (void) const;
 
-  OCTAVE_DEPRECATED (4.4, "use 'issymmetric' instead")
-  bool is_symmetric (void) const
-  { return issymmetric (); }
-
   // destructive insert/delete/reorder operations
 
   Matrix& insert (const Matrix& a, octave_idx_type r, octave_idx_type c);
--- a/liboctave/array/dSparse.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/dSparse.h	Thu Jan 24 20:20:02 2019 +0000
@@ -102,10 +102,6 @@
 
   bool issymmetric (void) const;
 
-  OCTAVE_DEPRECATED (4.4, "use 'issymmetric' instead")
-  bool is_symmetric (void) const
-  { return issymmetric (); }
-
   SparseMatrix max (int dim = -1) const;
   SparseMatrix max (Array<octave_idx_type>& index, int dim = -1) const;
   SparseMatrix min (int dim = -1) const;
--- a/liboctave/array/dim-vector.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/dim-vector.h	Thu Jan 24 20:20:02 2019 +0000
@@ -424,10 +424,6 @@
     return (ndims () == 2 && (xelem (0) == 1 || xelem (1) == 1));
   }
 
-  OCTAVE_DEPRECATED (4.4, "use 'isvector' instead")
-  bool is_vector (void) const
-  { return isvector (); }
-
   bool is_nd_vector (void) const
   {
     int num_non_one = 0;
--- a/liboctave/array/fCMatrix.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/fCMatrix.h	Thu Jan 24 20:20:02 2019 +0000
@@ -116,10 +116,6 @@
 
   bool ishermitian (void) const;
 
-  OCTAVE_DEPRECATED (4.4, "use 'ishermitian' instead")
-  bool is_hermitian (void) const
-  { return ishermitian (); }
-
   // destructive insert/delete/reorder operations
 
   FloatComplexMatrix& insert (const FloatMatrix& a,
--- a/liboctave/array/fMatrix.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/fMatrix.h	Thu Jan 24 20:20:02 2019 +0000
@@ -98,10 +98,6 @@
 
   bool issymmetric (void) const;
 
-  OCTAVE_DEPRECATED (4.4, "use 'issymmetric' instead")
-  bool is_symmetric (void) const
-  { return issymmetric (); }
-
   // destructive insert/delete/reorder operations
 
   FloatMatrix& insert (const FloatMatrix& a,
--- a/liboctave/array/idx-vector.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/array/idx-vector.h	Thu Jan 24 20:20:02 2019 +0000
@@ -1023,10 +1023,6 @@
 
   bool isvector (void) const;
 
-  OCTAVE_DEPRECATED (4.4, "use 'isvector' instead")
-  bool is_vector (void) const
-  { return isvector (); }
-
   // FIXME: these are here for compatibility.  They should be removed
   // when no longer in use.
 
--- a/liboctave/numeric/chol.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/chol.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -71,7 +71,7 @@
                                v, n, info
                                F77_CHAR_ARG_LEN (1)));
 
-  // FIXME: Should we check info exit value and possible report an error?
+  // FIXME: Should we check info exit value and possibly report an error?
 
   // If someone thinks of a more graceful way of doing this
   // (or faster for that matter :-)), please let me know!
@@ -119,7 +119,7 @@
                                v, n, info
                                F77_CHAR_ARG_LEN (1)));
 
-  // FIXME: Should we check info exit value and possible report an error?
+  // FIXME: Should we check info exit value and possibly report an error?
 
   // If someone thinks of a more graceful way of doing this (or
   // faster for that matter :-)), please let me know!
--- a/liboctave/numeric/chol.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/chol.h	Thu Jan 24 20:20:02 2019 +0000
@@ -39,7 +39,7 @@
       typedef typename T::column_vector_type VT;
       typedef typename T::real_elt_type COND_T;
 
-      chol (void) : chol_mat (), xrcond (0) { }
+      chol (void) : chol_mat (), xrcond (0), is_upper (true) { }
 
       chol (const T& a, bool upper = true, bool calc_cond = false)
         : chol_mat (), xrcond (0)
@@ -55,7 +55,7 @@
       }
 
       chol (const chol& a)
-        : chol_mat (a.chol_mat), xrcond (a.xrcond) { }
+        : chol_mat (a.chol_mat), xrcond (a.xrcond), is_upper (a.is_upper) { }
 
       chol& operator = (const chol& a)
       {
@@ -63,6 +63,7 @@
           {
             chol_mat = a.chol_mat;
             xrcond = a.xrcond;
+            is_upper = a.is_upper;
           }
 
         return *this;
--- a/liboctave/numeric/lo-mappers.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/lo-mappers.h	Thu Jan 24 20:20:02 2019 +0000
@@ -39,20 +39,9 @@
   namespace math
   {
     extern OCTAVE_API bool isna (double x);
-    OCTAVE_DEPRECATED (4.4, "use 'math::isna' instead")
-    inline bool is_NA (double x) { return math::isna (x); }
-
     extern OCTAVE_API bool isna (float x);
-    OCTAVE_DEPRECATED (4.4, "use 'math::isna' instead")
-    inline bool is_NA (float x) { return math::isna (x); }
-
     extern OCTAVE_API bool isna (const Complex& x);
-    OCTAVE_DEPRECATED (4.4, "use 'math::isna' instead")
-    inline bool is_NA (const Complex& x) { return math::isna (x); }
-
     extern OCTAVE_API bool isna (const FloatComplex& x);
-    OCTAVE_DEPRECATED (4.4, "use 'math::isna' instead")
-    inline bool is_NA (const FloatComplex& x) { return math::isna (x); }
 
     extern OCTAVE_API bool is_NaN_or_NA (const Complex& x);
     extern OCTAVE_API bool is_NaN_or_NA (const FloatComplex& x);
@@ -209,19 +198,6 @@
       return (isfinite (std::real (x)) && isfinite (std::imag (x)));
     }
 
-    OCTAVE_DEPRECATED (4.4, "use 'math::isfinite' instead")
-    inline bool finite (double x) { return math::isfinite (x); }
-    OCTAVE_DEPRECATED (4.4, "use 'math::isfinite' instead")
-    inline bool finite (float x) { return math::isfinite (x); }
-
-    template <typename T>
-    OCTAVE_DEPRECATED (4.4, "use 'math::isfinite' instead")
-    bool
-    finite (const std::complex<T>& x)
-    {
-      return math::isfinite (x);
-    }
-
     inline bool isinf (double x) { return std::isinf (x); }
     inline bool isinf (float x) { return std::isinf (x); }
 
@@ -479,21 +455,4 @@
   }
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::math::isfinite' instead")
-inline bool xfinite (double x) { return octave::math::isfinite (x); }
-OCTAVE_DEPRECATED (4.4, "use 'octave::math::isfinite' instead")
-inline bool xfinite (float x) { return octave::math::isfinite (x); }
-
-template <typename T>
-OCTAVE_DEPRECATED (4.4, "use 'octave::math::isfinite' instead")
-bool
-xfinite (const std::complex<T>& x)
-{
-  return octave::math::isfinite (x);
-}
-
 #endif
-
-#endif
--- a/liboctave/numeric/oct-fftw.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/oct-fftw.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -112,15 +112,9 @@
     if (! instance)
       {
         instance = new fftw_planner ();
-
-        if (instance)
-          singleton_cleanup_list::add (cleanup_instance);
+        singleton_cleanup_list::add (cleanup_instance);
       }
 
-    if (! instance)
-      (*current_liboctave_error_handler)
-        ("unable to create fftw_planner object!");
-
     return retval;
   }
 
@@ -472,15 +466,9 @@
     if (! instance)
       {
         instance = new float_fftw_planner ();
-
-        if (instance)
-          singleton_cleanup_list::add (cleanup_instance);
+        singleton_cleanup_list::add (cleanup_instance);
       }
 
-    if (! instance)
-      (*current_liboctave_error_handler)
-        ("unable to create fftw_planner object!");
-
     return retval;
   }
 
--- a/liboctave/numeric/oct-fftw.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/oct-fftw.h	Thu Jan 24 20:20:02 2019 +0000
@@ -376,31 +376,4 @@
   extern OCTAVE_API std::string fftwf_version (void);
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::fftw_version' instead")
-static inline std::string
-octave_fftw_version (void)
-{
-  return octave::fftw_version ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::fftwf_version' instead")
-static inline std::string
-octave_fftwf_version (void)
-{
-  return octave::fftwf_version ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::fftw_planner' instead")
-typedef octave::fftw_planner octave_fftw_planner;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::float_fftw_planner' instead")
-typedef octave::float_fftw_planner octave_float_fftw_planner;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::fftw' instead")
-typedef octave::fftw octave_fftw;
-
 #endif
-
-#endif
--- a/liboctave/numeric/oct-rand.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/oct-rand.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -63,15 +63,9 @@
     if (! instance)
       {
         instance = new rand ();
-
-        if (instance)
-          singleton_cleanup_list::add (cleanup_instance);
+        singleton_cleanup_list::add (cleanup_instance);
       }
 
-    if (! instance)
-      (*current_liboctave_error_handler)
-        ("unable to create rand object!");
-
     return retval;
   }
 
--- a/liboctave/numeric/oct-rand.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/oct-rand.h	Thu Jan 24 20:20:02 2019 +0000
@@ -287,11 +287,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand' instead")
-typedef octave::rand octave_rand;
-
 #endif
-
-#endif
--- a/liboctave/numeric/oct-spparms.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/oct-spparms.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -43,15 +43,9 @@
   if (! instance)
     {
       instance = new octave_sparse_params ();
-
-      if (instance)
-        singleton_cleanup_list::add (cleanup_instance);
+      singleton_cleanup_list::add (cleanup_instance);
     }
 
-  if (! instance)
-    (*current_liboctave_error_handler)
-      ("unable to create octave_sparse_params object!");
-
   return retval;
 }
 
--- a/liboctave/numeric/randgamma.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/randgamma.h	Thu Jan 24 20:20:02 2019 +0000
@@ -44,32 +44,4 @@
   }
 }
 
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_gamma<double>' instead")
-inline double
-oct_randg (double a)
-{
-  return octave::rand_gamma (a);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_gamma<float>' instead")
-inline float
-oct_float_randg (float a)
-{
-  return octave::rand_gamma (a);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_gamma<double>' instead")
-inline void
-oct_fill_randg (double a, octave_idx_type n, double *p)
-{
-  octave::rand_gamma (a, n, p);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_gamma<float>' instead")
-inline void
-oct_fill_float_randg (float a, octave_idx_type n, float *p)
-{
-  octave::rand_gamma (a, n, p);
-}
-
 #endif
--- a/liboctave/numeric/randmtzig.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/randmtzig.h	Thu Jan 24 20:20:02 2019 +0000
@@ -115,123 +115,4 @@
   rand_exponential<float> (octave_idx_type n, float *p);
 }
 
-OCTAVE_DEPRECATED (4.4, "use 'octave::init_mersenne_twister' instead")
-inline void
-oct_init_by_entropy (void)
-{
-  octave::init_mersenne_twister ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::init_mersenne_twister' instead")
-inline void
-oct_init_by_int (const uint32_t seed)
-{
-  octave::init_mersenne_twister (seed);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::init_mersenne_twister' instead")
-inline void
-oct_init_by_array (const uint32_t *init_key, const int key_length)
-{
-  octave::init_mersenne_twister (init_key, key_length);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::set_mersenne_twister_state' instead")
-inline void
-oct_set_state (const uint32_t *save)
-{
-  octave::set_mersenne_twister_state (save);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::get_mersenne_twister_state' instead")
-inline void
-oct_get_state (uint32_t *save)
-{
-  octave::get_mersenne_twister_state (save);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_uniform<double>' instead")
-inline double
-oct_randu (void)
-{
-  return octave::rand_uniform<double> ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_normal<double>' instead")
-inline double
-oct_randn (void)
-{
-  return octave::rand_normal<double> ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_exponential<double>' instead")
-inline double
-oct_rande (void)
-{
-  return octave::rand_exponential<double> ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_uniform' instead")
-inline void
-oct_fill_randu (octave_idx_type n, double *p)
-{
-  octave::rand_uniform (n, p);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_normal' instead")
-inline void
-oct_fill_randn (octave_idx_type n, double *p)
-{
-  octave::rand_normal (n, p);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_exponential' instead")
-inline void
-oct_fill_rande (octave_idx_type n, double *p)
-{
-  octave::rand_exponential (n, p);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_uniform<float>' instead")
-inline float
-oct_float_randu (void)
-{
-  return octave::rand_uniform<float> ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_normal<float>' instead")
-inline float
-oct_float_randn (void)
-{
-  return octave::rand_normal<float> ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_exponential<float>' instead")
-inline float
-oct_float_rande (void)
-{
-  return octave::rand_exponential<float> ();
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_uniform' instead")
-inline void
-oct_fill_float_randu (octave_idx_type n, float *p)
-{
-  octave::rand_uniform (n, p);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_normal' instead")
-inline void
-oct_fill_float_randn (octave_idx_type n, float *p)
-{
-  octave::rand_normal (n, p);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_exponential' instead")
-inline void
-oct_fill_float_rande (octave_idx_type n, float *p)
-{
-  octave::rand_exponential (n, p);
-}
-
 #endif
--- a/liboctave/numeric/randpoisson.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/numeric/randpoisson.h	Thu Jan 24 20:20:02 2019 +0000
@@ -35,32 +35,4 @@
   template <typename T> T rand_poisson (T L);
 }
 
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_poisson<double>' instead")
-inline double
-oct_randp (double L)
-{
-  return octave::rand_poisson (L);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_poisson<double>' instead")
-inline void
-oct_fill_randp (double L, octave_idx_type n, double *p)
-{
-  octave::rand_poisson (L, n, p);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_poisson<float>' instead")
-inline float
-oct_float_randp (float L)
-{
-  return octave::rand_poisson (L);
-}
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::rand_poisson<float>' instead")
-inline void
-oct_fill_float_randp (float L, octave_idx_type n, float *p)
-{
-  octave::rand_poisson (L, n, p);
-}
-
 #endif
--- a/liboctave/system/mach-info.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/system/mach-info.h	Thu Jan 24 20:20:02 2019 +0000
@@ -53,45 +53,4 @@
   }
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-class oct_mach_info
-{
-public:
-
-  typedef octave::mach_info::float_format float_format;
-
-  OCTAVE_DEPRECATED (4.4, "use 'octave::mach_info::native_float_format' instead")
-  static float_format native_float_format (void)
-  {
-    return octave::mach_info::native_float_format ();
-  }
-
-  OCTAVE_DEPRECATED (4.4, "use 'octave::mach_info::words_big_endian' instead")
-  static bool words_big_endian (void)
-  {
-    return octave::mach_info::words_big_endian ();
-  }
-
-  OCTAVE_DEPRECATED (4.4, "use 'octave::mach_info::words_little_endian' instead")
-  static bool words_little_endian (void)
-  {
-    return octave::mach_info::words_little_endian ();
-  }
-
-  OCTAVE_DEPRECATED (4.4, "use 'octave::mach_info::string_to_float_format' instead")
-  static float_format string_to_float_format (const std::string& str)
-  {
-    return octave::mach_info::string_to_float_format (str);
-  }
-
-  OCTAVE_DEPRECATED (4.4, "use 'octave::mach_info::float_format_as_string' instead")
-  static std::string float_format_as_string (float_format ff)
-  {
-    return octave::mach_info::float_format_as_string (ff);
-  }
-};
-
 #endif
-
-#endif
--- a/liboctave/system/oct-env.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/system/oct-env.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -85,15 +85,9 @@
       if (! instance)
         {
           instance = new env ();
-
-          if (instance)
-            singleton_cleanup_list::add (cleanup_instance);
+          singleton_cleanup_list::add (cleanup_instance);
         }
 
-      if (! instance)
-        (*current_liboctave_error_handler)
-          ("unable to create current working directory object!");
-
       return retval;
     }
 
--- a/liboctave/util/action-container.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/util/action-container.h	Thu Jan 24 20:20:02 2019 +0000
@@ -225,11 +225,4 @@
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::action_container' instead")
-typedef octave::action_container action_container;
-
 #endif
-
-#endif
--- a/liboctave/util/f77-fcn.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/util/f77-fcn.h	Thu Jan 24 20:20:02 2019 +0000
@@ -45,9 +45,6 @@
 #  define F77_FCN(f, F) F77_FUNC (f, F)
 #endif
 
-OCTAVE_DEPRECATED (4.4, "this variable is obsolete and should not be needed")
-static const int f77_exception_encountered = 0;
-
 /*
 
 The following macros are used for handling Fortran <-> C calling
--- a/liboctave/util/oct-base64.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/util/oct-base64.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -92,23 +92,3 @@
     return retval;
   }
 }
-
-// Always define these functions.  The macro is intended to allow the
-// declarations to be hidden, not so that Octave will not provide the
-// functions if they are requested.
-
-// #if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-bool
-octave_base64_encode (const char *inc, const size_t inlen, char **out)
-{
-  return octave::base64_encode (inc, inlen, out);
-}
-
-Array<double>
-octave_base64_decode (const std::string& str)
-{
-  return octave::base64_decode (str);
-}
-
-// #endif
--- a/liboctave/util/oct-base64.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/util/oct-base64.h	Thu Jan 24 20:20:02 2019 +0000
@@ -38,16 +38,4 @@
   base64_decode (const std::string& str);
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::base_64_encode' instead")
-extern bool
-octave_base64_encode (const char *inc, const size_t inlen, char **out);
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::base_64_decode' instead")
-extern Array<double>
-octave_base64_decode (const std::string& str);
-
 #endif
-
-#endif
--- a/liboctave/util/oct-mutex.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/util/oct-mutex.h	Thu Jan 24 20:20:02 2019 +0000
@@ -152,26 +152,7 @@
     static void init (void);
 
     static bool is_thread (void);
-
-    OCTAVE_DEPRECATED (4.4, "use 'is_thread' instead")
-    static bool is_octave_thread (void) { return is_thread (); }
   };
 }
 
-#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::mutex' instead")
-typedef octave::mutex octave_mutex;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::base_mutex' instead")
-typedef octave::base_mutex octave_base_mutex;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::autolock' instead")
-typedef octave::autolock octave_autolock;
-
-OCTAVE_DEPRECATED (4.4, "use 'octave::thread' instead")
-typedef octave::thread octave_thread;
-
 #endif
-
-#endif
--- a/liboctave/util/oct-refcount.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/util/oct-refcount.h	Thu Jan 24 20:20:02 2019 +0000
@@ -122,7 +122,4 @@
   };
 }
 
-template <typename T>
-using octave_refcount OCTAVE_DEPRECATED (4.4, "use 'octave::refcount' instead") = octave::refcount<T>;
-
 #endif
--- a/liboctave/util/oct-shlib.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/util/oct-shlib.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -27,15 +27,6 @@
 
 #include <map>
 
-#if defined (HAVE_SHL_LOAD_API)
-#  include <cerrno>
-#  include <cstring>
-#endif
-
-#if defined (HAVE_DYLD_API)
-#  include <mach-o/dyld.h>
-#endif
-
 extern "C"
 {
 #if defined (HAVE_DLOPEN_API)
@@ -47,8 +38,6 @@
 extern void * dlsym (void *, const char *);
 extern int dlclose (void *);
 #  endif
-#elif defined (HAVE_SHL_LOAD_API)
-#  include <dl.h>
 #elif defined (HAVE_LOADLIBRARY_API)
 #  define WIN32_LEAN_AND_MEAN 1
 #  include <windows.h>
@@ -265,84 +254,6 @@
     return function;
   }
 
-#elif defined (HAVE_SHL_LOAD_API)
-
-  class
-  octave_shl_load_shlib : public dynamic_library::dynlib_rep
-  {
-  public:
-
-    octave_shl_load_shlib (const std::string& f);
-
-    // No copying!
-
-    octave_shl_load_shlib (const octave_shl_load_shlib&) = delete;
-
-    octave_shl_load_shlib& operator = (const octave_shl_load_shlib&) = delete;
-
-    ~octave_shl_load_shlib (void);
-
-    void * search (const std::string& name,
-                   dynamic_library::name_mangler mangler = 0);
-
-    bool is_open (void) const { return (search_all_loaded || library != 0); }
-
-  private:
-
-    shl_t library;
-  };
-
-  octave_shl_load_shlib::octave_shl_load_shlib (const std::string& f)
-    : dynamic_library::dynlib_rep (f), library (0)
-  {
-    file = f;
-
-    if (file.empty())
-      {
-        search_all_loaded = true;
-        return;
-      }
-
-    library = shl_load (file.c_str (), BIND_IMMEDIATE, 0L);
-
-    if (! library)
-      {
-        using namespace std;  // FIXME: Why have this line?
-        (*current_liboctave_error_handler) ("%s", std::strerror (errno));
-      }
-  }
-
-  octave_shl_load_shlib::~octave_shl_load_shlib (void)
-  {
-    if (library)
-      shl_unload (library);
-  }
-
-  void *
-  octave_shl_load_shlib::search (const std::string& name,
-                                 dynamic_library::name_mangler mangler)
-  {
-    void *function = nullptr;
-
-    if (! is_open ())
-      (*current_liboctave_error_handler)
-        ("shared library %s is not open", file.c_str ());
-
-    std::string sym_name = name;
-
-    if (mangler)
-      sym_name = mangler (name);
-
-    if (search_all_loaded)
-      int status = shl_findsym (nullptr, sym_name.c_str (),
-                                TYPE_UNDEFINED, &function);
-    else
-      int status = shl_findsym (&library, sym_name.c_str (),
-                                TYPE_UNDEFINED, &function);
-
-    return function;
-  }
-
 #elif defined (HAVE_LOADLIBRARY_API)
 
   class
@@ -503,108 +414,6 @@
     return function;
   }
 
-#elif defined (HAVE_DYLD_API)
-
-  class
-  octave_dyld_shlib : public dynamic_library::dynlib_rep
-  {
-  public:
-
-    octave_dyld_shlib (void);
-
-    // No copying!
-
-    octave_dyld_shlib (const octave_dyld_shlib&) = delete;
-
-    octave_dyld_shlib& operator = (const octave_dyld_shlib&) = delete;
-
-    ~octave_dyld_shlib (void);
-
-    void open (const std::string& f);
-
-    void * search (const std::string& name,
-                   dynamic_library::name_mangler mangler = nullptr);
-
-    void close (void);
-
-    bool is_open (void) const { return (search_all_loaded || handle != 0); }
-
-  private:
-
-    NSObjectFileImage img;
-    NSModule handle;
-  };
-
-  octave_dyld_shlib::octave_dyld_shlib (const std::string& f)
-    : dynamic_library::dynlib_rep (f), handle (0)
-  {
-    if (f.empty ())
-      (*current_liboctave_error_handler)
-        ("global search is not implemented for DYLD_API");
-
-    int returnCode = NSCreateObjectFileImageFromFile (file.c_str (), &img);
-
-    if (NSObjectFileImageSuccess != returnCode)
-      {
-        (*current_liboctave_error_handler)
-          ("got NSObjectFileImageReturnCode %d", returnCode);
-
-        // FIXME: should use NSLinkEditError () to get
-        //        more info on what went wrong.
-      }
-
-    handle = NSLinkModule (img, file.c_str (),
-                           (NSLINKMODULE_OPTION_RETURN_ON_ERROR
-                            | NSLINKMODULE_OPTION_PRIVATE));
-    if (! handle)
-      {
-        NSLinkEditErrors ler;
-        int lerno;
-        const char *file2;
-        const char *errstr = nullptr;
-
-        NSLinkEditError (&ler, &lerno, &file2, &errstr);
-
-        if (! errstr)
-          errstr = "unspecified error";
-
-        (*current_liboctave_error_handler) ("%s: %s", file.c_str (), errstr);
-      }
-  }
-
-  octave_dyld_shlib::~octave_dyld_shlib (void)
-  {
-    if (handle)
-      NSUnLinkModule (handle, NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES);
-
-    NSDestroyObjectFileImage (img);
-  }
-
-  void *
-  octave_dyld_shlib::search (const std::string& name,
-                             dynamic_library::name_mangler mangler)
-  {
-    void *function = nullptr;
-
-    if (! is_open ())
-      (*current_liboctave_error_handler)
-        ("bundle %s is not open", file.c_str ());
-
-    std::string sym_name = name;
-
-    if (mangler)
-      sym_name = mangler (name);
-
-    NSSymbol symbol = NSLookupSymbolInModule (handle, sym_name.c_str ());
-
-    if (symbol)
-      {
-        function = NSAddressOfSymbol (symbol);
-      }
-
-    return function;
-  }
-
 #endif
 
   dynamic_library::dynlib_rep *
@@ -612,12 +421,8 @@
   {
 #if defined (HAVE_DLOPEN_API)
     return new octave_dlopen_shlib (f);
-#elif defined (HAVE_SHL_LOAD_API)
-    return new octave_shl_load_shlib (f);
 #elif defined (HAVE_LOADLIBRARY_API)
     return new octave_w32_shlib (f);
-#elif defined (HAVE_DYLD_API)
-    return new octave_dyld_shlib (f);
 #else
     (*current_liboctave_error_handler)
       ("support for dynamically loaded libraries was unavailable or disabled when liboctave was built");
--- a/liboctave/util/oct-sort.h	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/util/oct-sort.h	Thu Jan 24 20:20:02 2019 +0000
@@ -124,10 +124,6 @@
   // Check whether an array is sorted.
   bool issorted (const T *data, octave_idx_type nel);
 
-  OCTAVE_DEPRECATED (4.4, "use 'issorted' instead")
-  bool is_sorted (const T *data, octave_idx_type nel)
-  { return issorted (data, nel); }
-
   // Sort a matrix by rows, return a permutation
   // vector.
   void sort_rows (const T *data, octave_idx_type *idx,
@@ -312,11 +308,6 @@
   bool issorted (const T *data, octave_idx_type nel, Comp comp);
 
   template <typename Comp>
-  OCTAVE_DEPRECATED (4.4, "use 'issorted' instead")
-  bool is_sorted (const T *data, octave_idx_type nel, Comp comp)
-  { return issorted (data, nel, comp); }
-
-  template <typename Comp>
   void sort_rows (const T *data, octave_idx_type *idx,
                   octave_idx_type rows, octave_idx_type cols,
                   Comp comp);
--- a/liboctave/util/singleton-cleanup.cc	Thu Jan 24 19:22:18 2019 +0000
+++ b/liboctave/util/singleton-cleanup.cc	Thu Jan 24 20:20:02 2019 +0000
@@ -45,9 +45,5 @@
   if (! instance)
     instance = new singleton_cleanup_list ();
 
-  if (! instance)
-    (*current_liboctave_error_handler)
-      ("unable to create singleton_cleanup_list object!");
-
   return retval;
 }
--- a/octave.doap	Thu Jan 24 19:22:18 2019 +0000
+++ b/octave.doap	Thu Jan 24 20:20:02 2019 +0000
@@ -3,10 +3,52 @@
          xmlns:foaf="http://xmlns.com/foaf/0.1/"
          xmlns="http://usefulinc.com/ns/doap#">
 
-  <name xml:lang="en">GNU Octave</name>
+  <name>GNU Octave</name>
   <shortname>octave</shortname>
 
-  <shortdesc xml:lang="en">Interactive programming environment for numerical computations</shortdesc>
+  <shortdesc>Interactive programming environment for numerical computations</shortdesc>
+  <shortdesc xml:lang="ca">Entorn de programació interactiva per a càlculs numèrics</shortdesc>
+  <shortdesc xml:lang="de">Interaktive Programmierumgebung für numerische Berechnungen</shortdesc>
+  <shortdesc xml:lang="es">Entorno de programación interactiva para cálculos numéricos</shortdesc>
+  <shortdesc xml:lang="fr">Environnement de programmation interactif pour le calcul numérique</shortdesc>
+  <shortdesc xml:lang="it">Ambiente di programmazione interattivo per il calcolo numerico</shortdesc>
+  <shortdesc xml:lang="ja">数値計算のための対話的なプログラミング環境</shortdesc>
+  <shortdesc xml:lang="nl">Interactieve programmeeromgeving voor numerieke berekeningen</shortdesc>
+  <shortdesc xml:lang="pt">Ambiente de programação interativo para computação numérica</shortdesc>
+  <shortdesc xml:lang="zh">数值计算交互式编程环境</shortdesc>
+
+  <description>
+    GNU Octave is a high-level interpreted language, primarily intended for
+    numerical computations. It provides capabilities for the numerical
+    solution of linear and nonlinear problems, and for performing other
+    numerical experiments. It also provides extensive graphics capabilities
+    for data visualization and manipulation. Octave is normally used through
+    its interactive command line interface, but it can also be used to write
+    non-interactive programs. The Octave language is quite similar to
+    Matlab so that most programs are easily portable.
+  </description>
+  <description xml:lang="de">
+    GNU Octave ist eine höhere, interpretierte Programmiersprache, die
+    hauptsächlich für numerische Berechnungen gedacht ist. Sie bietet
+    Funktionen für die numerische Lösung linearer und nichtlinearer Probleme
+    und für die Durchführung anderer numerischer Experimente. Darüber hinaus
+    bietet es umfangreiche Grafikfunktionen zur Datenvisualisierung und
+    -manipulation. Octave wird normalerweise mittels einer interaktiven
+    Befehlszeile verwendet, kann aber auch zum Schreiben nicht interaktiver
+    Programme verwendet werden. Die Octave-Programmiersprache ist sehr
+    ähnlich zu Matlab, so dass die meisten Programme leicht übertragbar sind.
+  </description>
+  <description xml:lang="fr">
+    GNU Octave est un langage de programmation interprété, destiné
+    principalement au calcul numérique. Il fournit des fonctionnalités
+    pour la résolution de problèmes linéaires et non-linéaires, et pour toutes
+    sortes d'expériences numériques.  Il s'accompagne d'un système complet
+    de visualisation et de manipulation des données. Octave s’utilise
+    généralement via son environnement en lignes de commandes interactif,
+    mais il peut aussi être utilisé pour écrire des programmes non
+    interactifs. Le langage Octave est très similaire à Matlab de telle sorte
+    que les programmes Matlab sont très faciles à porter sous Octave.
+  </description>
 
   <homepage rdf:resource="https://www.octave.org" />
   <license rdf:resource="https://www.gnu.org/licenses/gpl-3.0.txt" />
--- a/scripts/deprecated/chop.m	Thu Jan 24 19:22:18 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-## Copyright (C) 2010-2019 John W. Eaton
-##
-## This file is part of Octave.
-##
-## Octave 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.
-##
-## Octave 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 Octave; see the file COPYING.  If not, see
-## <https://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {} {} chop (@var{x}, @var{ndigits}, @var{base})
-##
-## @code{chop} is deprecated and will be removed in Octave version 6.
-##
-## Truncate elements of @var{x} to a length of @var{ndigits} such that the
-## resulting numbers are exactly divisible by @var{base}.
-##
-## If @var{base} is not specified it defaults to 10.
-##
-## @example
-## @group
-## format long
-## chop (-pi, 5, 10)
-##    @result{} -3.14200000000000
-## chop (-pi, 5, 5)
-##    @result{} -3.14150000000000
-## @end group
-## @end example
-## @end deftypefn
-
-## Deprecated in version 4.4
-
-function retval = chop (x, ndigits, base = 10)
-
-  persistent warned = false;
-  if (! warned)
-    warned = true;
-    warning ("Octave:deprecated-function",
-             "chop is obsolete and will be removed from a future version of Octave");
-  endif
-
-  if (nargin == 2 || nargin == 3)
-    tmp = abs (x);
-
-    ## Avoid computing log (0).
-    tmp(x == 0) = 1;
-
-    ## Digits to the left of the decimal.
-    tmp = floor (log10 (tmp) + 1);
-
-    ## The expression
-    ##
-    ##   round (x .* inflate)
-    ##
-    ## produces an integer that contains the digits we want to keep.
-    ## Multiplying by deflate puts the decimal back where it belngs.
-    ##
-    ## Further scaling and rounding with the base factor produces a
-    ## value with ndigits exactly divisible by base.  We skip that step
-    ## unless base was explicitly provided.
-
-    inflate = 10 .^ (ndigits - tmp);
-    deflate = 1 ./ inflate;
-    if (nargin == 2)
-      retval = deflate .* round (x .* inflate);
-    else
-      retval = base .* deflate .* round (round (x .* inflate) ./ base);
-    endif
-  else
-    print_usage ();
-  endif
-
-endfunction
-
-
-## First test is necessary to provoke 1-time legacy warning
-%!test
-%! warning ("off", "Octave:deprecated-function", "local");
-%! chop (0, 1);
-
-%!assert (chop (e, 3), 2.72)
-%!assert (chop (e, 4), 2.718)
-%!assert (chop (e, 4, 5), 2.72)
-%!assert (chop (e, 4, 7), 2.716)
-%!assert (chop (-e, 3), -2.72)
-%!assert (chop (-e, 4), -2.718)
-%!assert (chop (-e, 4, 5), -2.72)
-%!assert (chop (-e, 4, 7), -2.716)
-%!assert (chop (hilb (3), 3), [1,.5,.333;.5,.333,.25;.333,.25,.2])
-%!assert (chop (hilb (3), 2, 7), [.7,.49,.35;.49,.35,.28;.35,.28,.21], 2*eps)
--- a/scripts/deprecated/comma.m	Thu Jan 24 19:22:18 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-## Copyright (C) 1995-2019 John W. Eaton
-##
-## This file is part of Octave.
-##
-## Octave 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.
-##
-## Octave 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 Octave; see the file COPYING.  If not, see
-## <https://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {} {} ,
-## Array index, function argument, or command separator.
-## @seealso{semicolon}
-## @end deftypefn
-
-
-## Mark file as being tested.  No real test needed for a documentation .m file
-%!assert (1)
--- a/scripts/deprecated/desktop.m	Thu Jan 24 19:22:18 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-## Copyright (C) 2013-2019 John W. Eaton
-##
-## This file is part of Octave.
-##
-## Octave 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.
-##
-## Octave 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 Octave; see the file COPYING.  If not, see
-## <https://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {} {@var{used} =} desktop ("-inuse")
-##
-## @code{desktop} is deprecated and will be removed in Octave version 6.
-## Use @code{isguirunning} for the equivalent functionality.
-##
-## Return true if the desktop (GUI) is currently in use.
-## @seealso{isguirunning}
-## @end deftypefn
-
-## Deprecated in version 4.4
-
-function retval = desktop (arg)
-
-  persistent warned = false;
-  if (! warned)
-    warned = true;
-    warning ("Octave:deprecated-function",
-             "desktop is obsolete and will be removed from a future version of Octave, please use isguirunning instead");
-  endif
-
-  if (nargin == 0)
-    if (isguirunning ())
-      return;  # desktop() is a NOP when GUI running
-    else
-      print_usage ();
-    endif
-  elseif (nargin > 1)
-    error ('desktop: only one argument, "-inuse", is allowed');
-  endif
-
-  switch (tolower (arg))
-    case "-inuse"
-      retval = isguirunning ();
-    otherwise
-      print_usage ();
-  endswitch
-
-endfunction
-
-
-## Test input validation
-%!error <only one argument, "-inuse", is allowed> desktop (1,2)
-%!error desktop ("-invalid_option")
--- a/scripts/deprecated/java2mat.m	Thu Jan 24 19:22:18 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-## Copyright (C) 2018-2019 John W. Eaton
-##
-## This file is part of Octave.
-##
-## Octave 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.
-##
-## Octave 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 Octave; see the file COPYING.  If not, see
-## <https://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {} {} java2mat (@var{javaobj})
-## @code{java2mat} is deprecated and will be removed in Octave version 6.
-##
-## For the next two releases, use @code{__java2mat__} if necessary, and file
-## a bug report explaining your programming use of @code{java2mat} and how it
-## can't be done with other Octave functions.
-## @end deftypefn
-
-function retval = java2mat (varargin)
-
-  persistent warned = false;
-  if (! warned)
-    warned = true;
-    warning ("Octave:deprecated-function",
-             "java2mat is obsolete and will be removed from a future version of Octave");
-  endif
-
-  retval = __java2mat__ (varargin{:});
-
-endfunction
-
-
-## No tests needed for alias.
-%!assert (1)
--- a/scripts/deprecated/module.mk	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/deprecated/module.mk	Thu Jan 24 20:20:02 2019 +0000
@@ -1,15 +1,7 @@
 FCN_FILE_DIRS += scripts/deprecated
 
 %canon_reldir%_FCN_FILES = \
-  %reldir%/chop.m \
-  %reldir%/comma.m \
-  %reldir%/desktop.m \
-  %reldir%/java2mat.m \
-  %reldir%/output_max_field_width.m \
-  %reldir%/paren.m \
-  %reldir%/semicolon.m \
-  %reldir%/tmpnam.m \
-  %reldir%/toascii.m
+  %reldir%/output_max_field_width.m
 
 %canon_reldir%dir = $(fcnfiledir)/deprecated
 
--- a/scripts/deprecated/paren.m	Thu Jan 24 19:22:18 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-## Copyright (C) 1996-2019 John W. Eaton
-##
-## This file is part of Octave.
-##
-## Octave 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.
-##
-## Octave 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 Octave; see the file COPYING.  If not, see
-## <https://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn  {} {} (
-## @deftypefnx {} {} )
-## Array index or function argument delimeter.
-## @end deftypefn
-
-
-## Mark file as being tested.  No real test needed for a documentation .m file
-%!assert (1)
--- a/scripts/deprecated/semicolon.m	Thu Jan 24 19:22:18 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-## Copyright (C) 1995-2019 John W. Eaton
-##
-## This file is part of Octave.
-##
-## Octave 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.
-##
-## Octave 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 Octave; see the file COPYING.  If not, see
-## <https://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {} {} ;
-## Array row or command separator.
-## @seealso{comma}
-## @end deftypefn
-
-
-## Mark file as being tested.  No real test needed for a documentation .m file
-%!assert (1)
--- a/scripts/deprecated/tmpnam.m	Thu Jan 24 19:22:18 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-## Copyright (C) 2003-2019 John W. Eaton
-##
-## This file is part of Octave.
-##
-## Octave 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.
-##
-## Octave 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 Octave; see the file COPYING.  If not, see
-## <https://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn  {} {@var{fname} =} tmpnam ()
-## @deftypefnx {} {@var{fname} =} tmpnam (@var{dir})
-## @deftypefnx {} {@var{fname} =} tmpnam (@var{dir}, @var{prefix})
-## @code{tmpnam} is deprecated and will be removed in Octave version 6.
-## Use @code{tempname} instead.
-##
-## Return a unique temporary filename as a string.
-##
-## If @var{prefix} is omitted, a value of @qcode{"oct-"} is used.
-##
-## If @var{dir} is also omitted, the default directory for temporary files
-## (@code{P_tmpdir} is used.  If @var{dir} is provided, it must exist,
-## otherwise the default directory for temporary files is used.
-##
-## Programming Note: Because the named file is not opened by @code{tmpnam},
-## it is possible, though relatively unlikely, that it will not be available
-## by the time your program attempts to open it.  If this is a concern,
-## see @code{tmpfile}.  The functions @code{tmpnam} and @code{tempname} are
-## equivalent with the latter provided for @sc{matlab} compatibility.
-##
-## @strong{Caution}: @code{tmpnam} will be removed in Octave version 6, or
-## whatever the version number is two releases from 4.4. Use the equivalent
-## @code{tempname} in all new code.
-## @seealso{tempname, mkstemp, tempdir, P_tmpdir, tmpfile}
-## @end deftypefn
-
-function filename = tmpnam (varargin)
-
-  persistent warned = false;
-  if (! warned)
-    warned = true;
-    warning ("Octave:deprecated-function",
-             "tmpnam is obsolete and will be removed from a future version of Octave, please use tempname instead");
-  endif
-
-  filename = tempname (varargin{:});
-
-endfunction
-
-
-## No tests needed for alias.
-%!assert (1)
--- a/scripts/deprecated/toascii.m	Thu Jan 24 19:22:18 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-## Copyright (C) 2018-2019 Rik Wehbring
-##
-## This file is part of Octave.
-##
-## Octave 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.
-##
-## Octave 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 Octave; see the file COPYING.  If not, see
-## <https://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {} {} toascii (@var{str})
-##
-## @code{toascii} is deprecated and will be removed in Octave version 6.
-## Use @code{double} instead.
-##
-## Return ASCII representation of @var{str} in a matrix.
-##
-## For example:
-##
-## @example
-## @group
-## toascii ("ASCII"
-##      @result{} [ 65, 83, 67, 73, 73 ]
-## @end group
-##
-## @end example
-## @seealso{double, char}
-## @end deftypefn
-
-## FIXME: DEPRECATED: Remove in version 6.
-
-function retval = toascii (str)
-
-  persistent warned = false;
-  if (! warned)
-    warned = true;
-    warning ("Octave:deprecated-function",
-             "toascii is obsolete and will be removed from a future version of Octave, please use double instead");
-  endif
-
-  if (nargin != 1)
-    print_usage ();
-  endif
-
-  if (iscell (str))
-    retval = cellfun (@(x) bitand (double (x), 0x7F), str, "uniformoutput", 0);
-  else
-    retval = bitand (double (str), 0x7F);  # Restrict to 7-bit ASCII
-  endif
-
-endfunction
-
-
-## First test is necessary to provoke 1-time legacy warning
-%!test
-%! warning ("off", "Octave:deprecated-function", "local");
-%! toascii ("");
-
-%!assert (toascii (char (0:127)), 0:127)
-%!assert (toascii (" ":"@"), 32:64)
-%!assert (toascii ("A":"Z"), 65:90)
-%!assert (toascii ("[":"`"), 91:96)
-%!assert (toascii ("a":"z"), 97:122)
-%!assert (toascii ("{":"~"), 123:126)
-
-%!error toascii ()
-%!error toascii (1, 2)
--- a/scripts/general/quadgk.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/general/quadgk.m	Thu Jan 24 20:20:02 2019 +0000
@@ -318,10 +318,6 @@
   endwhile
   subs = [subs(1:end-1), subs(2:end)];
 
-  ## Singularity will cause divide by zero warnings.
-  ## Turn off warning locally for quadgk function only.
-  warning ("off", "Octave:divide-by-zero", "local");
-
   warn_id = "Octave:quadgk:warning-termination";
 
   if (issingle)
--- a/scripts/general/quadv.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/general/quadv.m	Thu Jan 24 20:20:02 2019 +0000
@@ -152,18 +152,14 @@
 %!assert (quadv (@sin, 0, pi), 2, 1e-6)
 
 ## Test weak singularities at the edge
-%!test
-%! warning ("off", "Octave:divide-by-zero", "local");
-%! assert (quadv (@(x) 1 ./ sqrt (x), 0, 1), 2, 2e-6);
+%!assert (quadv (@(x) 1 ./ sqrt (x), 0, 1), 2, 2e-6);
 
 ## Test vector-valued functions
 %!assert (quadv (@(x) [(sin (x)), (sin (2 * x))], 0, pi), [2, 0], 1e-6)
 
 ## Test matrix-valued functions
-%!test
-%! warning ("off", "Octave:divide-by-zero", "local");
-%! assert (quadv (@(x) [ x,x,x; x,1./sqrt(x),x; x,x,x ], 0, 1),
-%!         [0.5,0.5,0.5; 0.5,2,0.5; 0.5,0.5,0.5], 2e-6);
+%!assert (quadv (@(x) [ x,x,x; x,1./sqrt(x),x; x,x,x ], 0, 1),
+%!        [0.5,0.5,0.5; 0.5,2,0.5; 0.5,0.5,0.5], 2e-6);
 
 ## Test input validation
 %!error quadv ()
--- a/scripts/gui/uimenu.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/gui/uimenu.m	Thu Jan 24 20:20:02 2019 +0000
@@ -106,8 +106,8 @@
 %! uimenu (f, 'label', 'Close', 'accelerator', 'q', 'callback', 'close (gcf)');
 %! uimenu (e, 'label', 'Toggle &Grid', 'accelerator', 'g', 'callback', 'grid (gca)');
 
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("fltk", available_graphics_toolkits ()))
-%! toolkit = graphics_toolkit ("fltk");
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("qt", available_graphics_toolkits ()))
+%! toolkit = graphics_toolkit ("qt");
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   ui = uimenu ("label", "mylabel");
@@ -116,15 +116,15 @@
 %!   assert (get (ui, "checked"), "off");
 %!   assert (get (ui, "separator"), "off");
 %!   assert (get (ui, "enable"), "on");
-%!   assert (get (ui, "position"), 0);
+%!   assert (get (ui, "position"), 4);
 %! unwind_protect_cleanup
 %!   close (hf);
 %!   graphics_toolkit (toolkit);
 %! end_unwind_protect
 
 ## check for top level menus file and edit
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("fltk", available_graphics_toolkits ()))
-%! toolkit = graphics_toolkit ("fltk");
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("qt", available_graphics_toolkits ()))
+%! toolkit = graphics_toolkit ("qt");
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   uif = findall (hf, "label", "&file");
@@ -136,8 +136,8 @@
 %!   graphics_toolkit (toolkit);
 %! end_unwind_protect
 
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("fltk", available_graphics_toolkits ()))
-%! toolkit = graphics_toolkit ("fltk");
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("qt", available_graphics_toolkits ()))
+%! toolkit = graphics_toolkit ("qt");
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   uie = findall (hf, "label", "&edit");
--- a/scripts/help/__unimplemented__.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/help/__unimplemented__.m	Thu Jan 24 20:20:02 2019 +0000
@@ -1328,7 +1328,6 @@
   "varfun",
   "vartype",
   "verctrl",
-  "verLessThan",
   "vertexAttachments",
   "vertexNormal",
   "VideoReader",
--- a/scripts/help/warning_ids.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/help/warning_ids.m	Thu Jan 24 20:20:02 2019 +0000
@@ -158,11 +158,6 @@
 ## is obsolete and scheduled for removal from Octave.
 ## By default, the @code{Octave:deprecated-property} warning is enabled.
 ##
-## @item Octave:divide-by-zero
-## If the @code{Octave:divide-by-zero} warning is enabled, a
-## warning is issued when Octave encounters a division by zero.
-## By default, the @code{Octave:divide-by-zero} warning is enabled.
-##
 ## @item Octave:eigs:UnconvergedEigenvalues
 ## If the @code{Octave:eigs:UnconvergedEigenvalues} warning is enabled then
 ## the eigs function will issue a warning if the number of calculated
--- a/scripts/linear-algebra/ishermitian.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/linear-algebra/ishermitian.m	Thu Jan 24 20:20:02 2019 +0000
@@ -82,7 +82,7 @@
   if (strcmp (skewopt, "nonskew"))
     if (tol == 0)
       ## check for exact symmetry
-      retval = ! any ((A != A')(:));
+      retval = full (! any ((A != A')(:)));
     else
       if (islogical (A))
         ## Hack to allow norm to work.  Choose single to minimize memory.
@@ -94,7 +94,7 @@
   else
     ## skew-Hermitian
     if (tol == 0)
-      retval = ! any ((A != -A')(:));
+      retval = full (! any ((A != -A')(:)));
     else
       if (islogical (A))
         ## Hack to allow norm to work.  Choose single to minimize memory.
@@ -114,7 +114,7 @@
 %!assert (ishermitian ([1, 2; 2, 1]))
 %!assert (ishermitian ([1, 2.1; 2, 1.1], 0.2))
 %!assert (ishermitian ([1, -2i; 2i, 1]))
-%!assert (ishermitian (speye (100)))
+%!assert (ishermitian (speye (100)), true)  # Return full logical value.
 %!assert (ishermitian (logical (eye (2))))
 %!assert (! ishermitian (logical ([1 1; 0 1])))
 %!assert (ishermitian (logical ([1 1; 0 1]), 0.5))
--- a/scripts/linear-algebra/issymmetric.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/linear-algebra/issymmetric.m	Thu Jan 24 20:20:02 2019 +0000
@@ -81,7 +81,7 @@
   if (strcmp (skewopt, "nonskew"))
     if (tol == 0)
       ## check for exact symmetry
-      retval = ! any ((A != A.')(:));
+      retval = full (! any ((A != A.')(:)));
     else
       if (islogical (A))
         ## Hack to allow norm to work.  Choose single to minimize memory.
@@ -93,7 +93,7 @@
   else
     ## skew symmetry
     if (tol == 0)
-      retval = ! any ((A != -A.')(:));
+      retval = full (! any ((A != -A.')(:)));
     else
       if (islogical (A))
         ## Hack to allow norm to work.  Choose single to minimize memory.
@@ -113,7 +113,7 @@
 %!assert (issymmetric ([1, 2; 2, 1]))
 %!assert (issymmetric ([1, 2.1; 2, 1.1], 0.2))
 %!assert (issymmetric ([1, 2i; 2i, 1]))
-%!assert (issymmetric (speye (100)))
+%!assert (issymmetric (speye (100)), true)  # Return full logical value.
 %!assert (issymmetric (logical (eye (2))))
 %!assert (! issymmetric (logical ([1 1; 0 1])))
 %!assert (issymmetric (logical ([1 1; 0 1]), 0.5))
--- a/scripts/miscellaneous/module.mk	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/miscellaneous/module.mk	Thu Jan 24 20:20:02 2019 +0000
@@ -78,6 +78,7 @@
   %reldir%/unzip.m \
   %reldir%/validateattributes.m \
   %reldir%/ver.m \
+  %reldir%/verLessThan.m \
   %reldir%/version.m \
   %reldir%/what.m \
   %reldir%/zip.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/miscellaneous/verLessThan.m	Thu Jan 24 20:20:02 2019 +0000
@@ -0,0 +1,80 @@
+## Copyright (C) 2019 Andrew Janke
+##
+## This file is part of Octave.
+##
+## Octave 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.
+##
+## Octave 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 Octave; see the file COPYING.  If not, see
+## <https://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn {} {} verLessThan (@var{package}, @var{version})
+## Return true if the installed version of the package is less than
+## @var{version}.
+##
+## @var{package} is the name of the package to check.  Use @qcode{"Octave"} as
+## the @var{package} to check the version of Octave itself.
+##
+## @var{version} is the version to compare it to.  A version is a string in the
+## format accepted by @code{compare_versions}: an arbitrarily long string
+## composed of numeric and period characters, possibly followed by an arbitrary
+## string (e.g., @qcode{"1.2.3"}, @qcode{"0.3"}, @qcode{"0.1.2+"}, or
+## @qcode{"1.2.3.4-test1"}).
+##
+## Examples:
+##
+## @example
+## @group
+## tf = verLessThan ("Octave", "5.0.0")
+## tf = verLessThan ("io", "2.4.12")
+##
+## if (! verLessThan ("Octave", "5.0.0"))
+##   ## ... use new Octave 5.0 features ...
+## endif
+## @end group
+## @end example
+##
+## @seealso{compare_versions, version, ver, pkg}
+## @end deftypefn
+
+function retval = verLessThan (package, version)
+
+  if (nargin != 2)
+    print_usage ();
+  endif
+
+  if (! ischar (package) || rows (package) != 1)
+    error ("verLessThan: PACKAGE must be a string");
+  endif
+
+  v = ver ();
+  idx = find (strcmpi (package, {v.Name}));
+  if (isempty (idx))
+    error ('verLessThan: package "%s" is not installed', package);
+  endif
+
+  retval = compare_versions (v(idx).Version, version, "<");
+
+endfunction
+
+
+%!assert (! verLessThan ("Octave", "3.0.0"))
+%!assert (verLessThan ("Octave", "99.9.9"))
+
+## Test input validation
+%!error verLessThan ()
+%!error verLessThan ("a")
+%!error verLessThan ("a", "1", "b")
+%!error <package "no-such-package" is not installed>
+%! verLessThan ("no-such-package", "1.1.1")
+%!error <compare_versions: version numbers V1 and V2 must be strings>
+%! verLessThan ("Octave", 4.1)
--- a/scripts/optimization/qp.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/optimization/qp.m	Thu Jan 24 20:20:02 2019 +0000
@@ -69,18 +69,19 @@
 ## the number of constraints.  The algorithm is faster if the initial guess is
 ## feasible.
 ##
-## @table @var
-## @item options
-## An optional structure containing the following parameter(s) used to define
-## the behavior of the solver.  Missing elements in the structure take on
-## default values, so you only need to set the elements that you wish to
-## change from the default.
+## @var{options} is a structure specifying additional parameters which
+## control the algorithm.  Currently, @code{qp} recognizes these options:
+## @qcode{"MaxIter"}, @qcode{"TolX"}.
 ##
-## @table @code
-## @item MaxIter (default: 200)
-## Maximum number of iterations.
-## @end table
-## @end table
+## @qcode{"MaxIter"} proscribes the maximum number of algorithm iterations
+## before optimization is halted.  The default value is 200.
+## The value must be a positive integer.
+##
+## @qcode{"TolX"} specifies the termination tolerance for the unknown variables
+## @var{x}.  The default is @code{sqrt (eps)} or approximately 1e-8.
+##
+## On return, @var{x} is the location of the minimum and @var{fval} contains
+## the value of the objective function at @var{x}.
 ##
 ## @table @var
 ## @item info
@@ -112,6 +113,7 @@
 ## @end table
 ## @end table
 ## @end table
+## @seealso{sqp}
 ## @end deftypefn
 
 ## PKG_ADD: ## Discard result to avoid polluting workspace with ans at startup.
@@ -120,7 +122,7 @@
 function [x, obj, INFO, lambda] = qp (x0, H, varargin)
 
   if (nargin == 1 && ischar (x0) && strcmp (x0, "defaults"))
-    x = struct ("MaxIter", 200);
+    x = struct ("MaxIter", 200, "TolX", sqrt (eps));
     return;
   endif
 
@@ -169,6 +171,7 @@
   endif
 
   maxit = optimget (options, "MaxIter", 200);
+  tol = optimget (options, "TolX", sqrt (eps));
 
   ## Validate the quadratic penalty.
   if (! issquare (H))
@@ -243,7 +246,7 @@
     endif
 
     if (! isempty (lb) && ! isempty (ub))
-      rtol = sqrt (eps);
+      rtol = tol;
       for i = 1:n
         if (abs (lb (i) - ub(i)) < rtol*(1 + max (abs (lb(i) + ub(i)))))
           ## These are actually an equality constraint
@@ -291,7 +294,7 @@
       endif
 
       if (! isempty (A_lb) && ! isempty (A_ub))
-        rtol = sqrt (eps);
+        rtol = tol;
         for i = 1:dimA_in
           if (abs (A_lb(i) - A_ub(i))
               < rtol*(1 + max (abs (A_lb(i) + A_ub(i)))))
@@ -331,7 +334,7 @@
       || isa (A, "single") || isa (b, "single"))
     rtol = sqrt (eps ("single"));
   else
-    rtol = sqrt (eps);
+    rtol = tol;
   endif
 
   eq_infeasible = (n_eq > 0 && norm (A*x0-b) > rtol*(1+abs (b)));
@@ -407,10 +410,10 @@
       x0 = xbar;
     endif
   endif
-
+  
   if (info == 0)
     ## The initial (or computed) guess is feasible.  Call the solver.
-    [x, lambda, info, iter] = __qp__ (x0, H, q, A, b, Ain, bin, maxit);
+    [x, lambda, info, iter] = __qp__ (x0, H, q, A, b, Ain, bin, maxit, rtol);
   else
     iter = 0;
     x = x0;
--- a/scripts/optimization/sqp.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/optimization/sqp.m	Thu Jan 24 20:20:02 2019 +0000
@@ -417,7 +417,7 @@
 
     old_lambda = lambda;
     [p, obj_qp, INFO, lambda] = qp (x, B, c, F, g, [], [], d, C,
-                                    Inf (size (d)));
+                                    Inf (size (d)), struct ("TolX", tol));
 
     info = INFO.info;
 
--- a/scripts/pkg/pkg.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/pkg/pkg.m	Thu Jan 24 20:20:02 2019 +0000
@@ -417,21 +417,55 @@
         else
           ## If files do not exist, maybe they are not local files.
           ## Try to download them.
-          external_files_mask = cellfun (@(x) isempty (glob (x)), files);
-          if (any (external_files_mask))
+          not_local_files = cellfun (@(x) isempty (glob (x)), files);
+          if (any (not_local_files))
             [success, msg] = mkdir (tmp_dir);
             if (success != 1)
               error ("pkg: failed to create temporary directory: %s", msg);
             endif
 
-            for file_idx = find (external_files_mask)
-
-              [~, fname, fext] = fileparts (files{file_idx});
-              local_files{end+1} = fullfile (tmp_dir, [fname fext]);
-              [~, success, msg] = urlwrite (files{file_idx}, local_files{end});
-              if (success != 1)
-                error ("pkg: failed to read package '%s': %s",
-                       files{file_idx}, msg);
+            for file = files(not_local_files)
+              file = file{1};
+              [~, fname, fext] = fileparts (file);
+              tmp_file = fullfile (tmp_dir, [fname fext]);
+              local_files{end+1} = tmp_file;
+              looks_like_url = regexp (file, '^\w+://');
+              if (looks_like_url)
+                [~, success, msg] = urlwrite (file, local_files{end});
+                if (success != 1)
+                  error ("pkg: failed downloading '%s': %s", file, msg);
+                endif
+                ## Verify that download is a tarball,
+                ## to protect against ISP DNS hijacking.
+                ## FIXME: Need a test which does not rely on external OS.
+                #{
+                if (isunix ())
+                  [ok, file_descr] = ...
+                    system (sprintf ('file "%s" | cut -d ":" -f 2', ...
+                                     local_files{end}));
+                  if (! ok)
+                    if (strfind (file_descr, "HTML"))
+                      error (["pkg: Invalid package file downloaded from " ...
+                              "%s\n" ...
+                              "File is HTML, not a tar archive."], ...
+                             file);
+                    endif
+                  else
+                    ## Ignore: maybe something went wrong with the "file" call.
+                  endif
+                endif
+                #}
+              else
+                looks_like_pkg_name = regexp (file, '^[\w-]+$');
+                if (looks_like_pkg_name)
+                  error (["pkg: file not found: %s.\n" ...
+                          "This looks like an Octave Forge package name." ...
+                          "  Did you mean:\n" ...
+                          "       pkg install -forge %s"], ...
+                         file, file);
+                else
+                  error ("pkg: file not found: %s", file);
+                endif
               endif
               files{file_idx} = local_files{end};
 
--- a/scripts/plot/appearance/annotation.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/appearance/annotation.m	Thu Jan 24 20:20:02 2019 +0000
@@ -480,13 +480,12 @@
 
       hr = patch (x, y, "parent", h);
 
-      ## FIXME: DEPRECATED: Remove warn state switching in version 6.
-      old_warn_state = warning ("off", "Octave:deprecated-property");
       propnames = rectprops ("names");
+      ## FIXME: Remove in Octave 6
+      propnames(strcmp ("edgecolor", propnames)) = [];
       for ii = 1:numel (propnames)
         update_rect (h, {}, propnames{ii}, hr, objtype);
       endfor
-      warning (old_warn_state);
 
       rectmenu (hui, h);
       set (hr, "uicontextmenu", hui);
--- a/scripts/plot/draw/ezplot3.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/draw/ezplot3.m	Thu Jan 24 20:20:02 2019 +0000
@@ -77,11 +77,11 @@
 %! fx = @(t) cos (t);
 %! fy = @(t) sin (t);
 %! fz = @(t) t;
-%! ezplot3 (fx, fy, fz, [0, 10*pi], 100);
+%! ezplot3 (fx, fy, fz, [0, 10*pi]);
 
 %!demo
 %! clf;
 %! fx = @(t) cos (t);
 %! fy = @(t) sin (t);
 %! fz = @(t) t;
-%! ezplot3 (fx, fy, fz, [0, 5*pi], 100, "animate");
+%! ezplot3 (fx, fy, fz, [0, 5*pi], "animate");
--- a/scripts/plot/draw/light.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/draw/light.m	Thu Jan 24 20:20:02 2019 +0000
@@ -198,7 +198,8 @@
 %! ## Diffuse and specular reflection
 %! clf;
 %! h_axes = axes ();
-%! [x,y,z] = meshgrid (-.2:0.04:.2, -.2:0.04:.2, -.2:0.04:.2);
+%! rng = linspace (-0.2, +0.2, 12);
+%! [x,y,z] = meshgrid (rng);
 %! val = (x.^2 + y.^2 + z.^2);
 %!
 %! fv = isosurface (x, y, z, val, .039);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/plot/draw/lightangle.m	Thu Jan 24 20:20:02 2019 +0000
@@ -0,0 +1,167 @@
+## Copyright (C) 2019 Guillaume Flandin
+##
+## This file is part of Octave.
+##
+## Octave 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.
+##
+## Octave 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 Octave; see the file COPYING.  If not, see
+## <https://www.gnu.org/licenses/>.
+
+## -*- texinfo -*-
+## @deftypefn  {} {} lightangle (@var{az}, @var{el})
+## @deftypefnx {} {} lightangle (@var{hax}, @var{az}, @var{el})
+## @deftypefnx {} {} lightangle (@var{hl}, @var{az}, @var{el})
+## @deftypefnx {} {@var{hl} =} lightangle (@dots{})
+## @deftypefnx {} {[@var{az}, @var{el}] =} lightangle (@var{hl})
+## Add a light object to the current axes using spherical coordinates.
+##
+## The light position is specified by an azimuthal rotation @var{az} and an
+## elevation angle @var{el}, both in degrees.
+##
+## If the first argument @var{hax} is an axes handle, then create a new light
+## object in this axes, rather than the current axes returned by @code{gca}.
+##
+## If the first argument @var{hl} is a handle to a light object, then act on
+## this light object rather than creating a new object.
+##
+## The optional return value @var{hl} is a graphics handle to the light object.
+##
+## Example:
+##
+## Add a light object to a plot
+##
+## @example
+## @group
+## @c doctest: +SKIP
+## clf;
+## sphere (36);
+## lightangle (45, 30);
+## @end group
+## @end example
+##
+## @seealso{light, view, camlight}
+## @end deftypefn
+
+function varargout = lightangle (varargin)
+
+  if (nargin == 0 || nargin > 3 || nargout > 2 || (nargin > 1 && nargout > 1))
+    print_usage ();
+  endif
+
+  hl = hax = az = el = [];
+
+  if (nargin == 1)
+    hl = varargin{1};
+    if (! isscalar (hl) || ! isgraphics (hl, "light"))
+      error ("lightangle: HL must be a handle to a light object");
+    endif
+  elseif (nargin == 2)
+    az = varargin{1};
+    el = varargin{2};
+  elseif (nargin == 3)
+    h = varargin{1};
+    if (isscalar (h) && isaxes (h))
+      hax = h;
+    elseif (isscalar (h) && isgraphics (h, "light"))
+      hl = h;
+    else
+      error ("lightangle: H must be a handle to an axes or light object");
+    endif
+    az = varargin{2};
+    el = varargin{3};
+  endif
+
+  if (nargin == 1)
+    pos = get (hl, "Position");
+    [az, el] = cart2sph (pos(1), pos(2), pos(3));
+    az = rad2deg (az) + 90;  # see view.m
+    el = rad2deg (el);
+    varargout = { az, el };
+    return;
+  endif  
+
+  if (! isscalar (az) || ! isnumeric (az)
+      || ! isscalar (el) || ! isnumeric (el))
+    error ("lightangle: AZ and EL must be numeric scalars");
+  endif
+
+  if (! isempty (hl))
+    hax = ancestor (hl, "axes");
+  endif
+
+  if (isempty (hax))
+    hax = gca ();
+  endif
+
+  if (isempty (hl))
+    hl = light (hax);
+  endif
+
+  pos = get (hl, "Position");
+
+  az = deg2rad (az - 90);
+  el = deg2rad (el);
+
+  if (strcmp (get (hl, "Style"), "local"))
+    pos -= get (hax, "CameraTarget");
+  endif 
+
+  pos = sph2cart (az, el, norm (pos));
+
+  if (strcmp (get (hl, "Style"), "local"))
+    pos += get (hax, "CameraTarget");
+  endif
+
+  set (hl, "Position", pos);
+
+  if (nargout == 1)
+    varargout = { hl };
+  endif
+
+endfunction
+
+
+%!demo
+%! clf;
+%! sphere (36);
+%! lightangle (45, 30);
+
+%!test
+%! hf = figure ("visible", "off");
+%! unwind_protect
+%!   sphere (24);
+%!   hl = lightangle (45, 20);
+%!   assert (isgraphics (hl, "light"));
+%!   [az, el] = lightangle (hl);
+%!   assert ([45, 20], [az, el], -20*eps);
+%!   lightangle (hl, 90, 45);
+%!   [az, el] = lightangle (hl);
+%!   assert ([90, 45], [az, el], -20*eps);
+%!   pos = get (hl, "Position");
+%!   assert ([1, 0, 1], pos, -20*eps);
+%!   hl = lightangle (gca (), 45, 20);
+%!   assert (isgraphics (hl, "light"));
+%! unwind_protect_cleanup
+%!   close (hf);
+%! end_unwind_protect
+
+## Test input validation
+%!error <Invalid call> lightangle ()
+%!error <Invalid call> lightangle (1, 2, 3, 4)
+%!error <Invalid call> [a, b] = lightangle (45, 30)
+%!error <Invalid call> [a, b, c] = lightangle (45, 30)
+%!error <HL must be a handle to a light object> lightangle (0)
+%!error <H must be a handle to an axes or light object> lightangle (0, 90, 45)
+%!error <AZ and EL must be numeric scalars> lightangle ([1 2], 0) 
+%!error <AZ and EL must be numeric scalars> lightangle ({1}, 0) 
+%!error <AZ and EL must be numeric scalars> lightangle (0, [1 2]) 
+%!error <AZ and EL must be numeric scalars> lightangle (0, {1}) 
--- a/scripts/plot/draw/module.mk	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/draw/module.mk	Thu Jan 24 20:20:02 2019 +0000
@@ -54,6 +54,7 @@
   %reldir%/isonormals.m \
   %reldir%/isosurface.m \
   %reldir%/light.m \
+  %reldir%/lightangle.m \
   %reldir%/line.m \
   %reldir%/loglog.m \
   %reldir%/loglogerr.m \
--- a/scripts/plot/draw/plotyy.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/draw/plotyy.m	Thu Jan 24 20:20:02 2019 +0000
@@ -288,8 +288,9 @@
 %! xlabel ("X");
 %! ylabel (ax(1), "Axis 1");
 %! ylabel (ax(2), "Axis 2");
-%! lcolor = get (gca, "ColorOrder")(1,:);
-%! rcolor = get (gca, "ColorOrder")(2,:);
+%! colororder = get (gca, "ColorOrder");
+%! lcolor = colororder(1,:);
+%! rcolor = colororder(2,:);
 %! text (0.5, 0.5, "Left Axis", ...
 %!       "color", lcolor, "horizontalalignment", "center", "parent", ax(1));
 %! text (4.5, 80, "Right Axis", ...
--- a/scripts/plot/draw/polar.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/draw/polar.m	Thu Jan 24 20:20:02 2019 +0000
@@ -335,7 +335,7 @@
 
   lprops = {"linestyle", get(hax, "gridlinestyle"), ...
             "linewidth", get(hax, "linewidth"), ...
-            "color", get(hax, "xcolor")};
+            "color", min(5.8167 * get(hax, "xcolor"), 1)};
   ## "fontunits" should be first because it affects "fontsize" property.
   tprops(1:2:12) = {"fontunits", "fontangle", "fontname", "fontsize", ...
                     "fontweight", "ticklabelinterpreter"};
--- a/scripts/plot/draw/private/__bar__.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/draw/private/__bar__.m	Thu Jan 24 20:20:02 2019 +0000
@@ -220,7 +220,7 @@
         else
           set (hax, "clim", [0 1], "ylimmode", "manual");
         endif
-        set (hax, "box", "on");
+        set (hax, "box", "on", "layer", "top");
       endif
     unwind_protect_cleanup
       if (! isempty (oldfig))
--- a/scripts/plot/draw/private/__stem__.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/draw/private/__stem__.m	Thu Jan 24 20:20:02 2019 +0000
@@ -173,9 +173,13 @@
         set (h, args{:});
     endif
 
-    if (! strcmp (hold_state, "add") && have_z)
-      set (hax, "view", [-37.5 30],
-                "xgrid", "on", "ygrid", "on", "zgrid", "on");
+    if (! strcmp (hold_state, "add"))
+      if (! have_z)
+        set (hax, "box", "on");
+      else
+        set (hax, "view", [-37.5 30],
+                  "xgrid", "on", "ygrid", "on", "zgrid", "on");
+      endif
     endif
     set (hax, "nextplot", hold_state);
 
--- a/scripts/plot/util/allchild.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/util/allchild.m	Thu Jan 24 20:20:02 2019 +0000
@@ -48,8 +48,8 @@
 endfunction
 
 
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("fltk", available_graphics_toolkits ()))
-%! toolkit = graphics_toolkit ("fltk");
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("qt", available_graphics_toolkits ()))
+%! toolkit = graphics_toolkit ("qt");
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   l = line;
--- a/scripts/plot/util/copyobj.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/util/copyobj.m	Thu Jan 24 20:20:02 2019 +0000
@@ -132,7 +132,7 @@
 %! scrn = get (0, "screensize");
 %! set (hobj, "position", [scrn(3)/2-pos(3)-10, scrn(4)/2-pos(4)/2, pos(3:4)]);
 %! drawnow ();
-%! hnew = copyobj (hobj);
+%! hnew = copyobj (hobj, groot);
 %! drawnow ();
 %! set (hnew, "name", "Copyobj");
 %! drawnow ();
@@ -162,7 +162,7 @@
 %! scrn = get (0, "screensize");
 %! set (hobj, "position", [scrn(3)/2-pos(3)-10, scrn(4)/2-pos(4)/2, pos(3:4)]);
 %! drawnow ();
-%! hnew = copyobj (hobj);
+%! hnew = copyobj (hobj, groot);
 %! drawnow ();
 %! set (hnew, "name", "Copyobj");
 %! drawnow ();
@@ -179,8 +179,9 @@
 %! xlabel ("X");
 %! ylabel (ax(1), "Axis 1");
 %! ylabel (ax(2), "Axis 2");
-%! lcolor = get (gca, "ColorOrder")(1,:);
-%! rcolor = get (gca, "ColorOrder")(2,:);
+%! colororder = get (gca, "ColorOrder");
+%! lcolor = colororder(1,:);
+%! rcolor = colororder(2,:);
 %! text (0.5, 0.5, "Left Axis", ...
 %!       "color", lcolor, "horizontalalignment", "center", "parent", ax(1));
 %! text (4.5, 80, "Right Axis", ...
@@ -191,7 +192,7 @@
 %! scrn = get (0, "screensize");
 %! set (hobj, "position", [scrn(3)/2-pos(3)-10, scrn(4)/2-pos(4)/2, pos(3:4)]);
 %! drawnow ();
-%! hnew = copyobj (hobj);
+%! hnew = copyobj (hobj, groot);
 %! drawnow ();
 %! set (hnew, "name", "Copyobj");
 %! drawnow ();
--- a/scripts/plot/util/findall.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/util/findall.m	Thu Jan 24 20:20:02 2019 +0000
@@ -50,8 +50,8 @@
 endfunction
 
 
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("fltk", available_graphics_toolkits ()))
-%! toolkit = graphics_toolkit ("fltk");
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("qt", available_graphics_toolkits ()))
+%! toolkit = graphics_toolkit ("qt");
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   h = findall (hf);
--- a/scripts/plot/util/graphics_toolkit.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/plot/util/graphics_toolkit.m	Thu Jan 24 20:20:02 2019 +0000
@@ -102,23 +102,22 @@
 
 endfunction
 
-
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("fltk", available_graphics_toolkits ()))
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("qt", available_graphics_toolkits ()))
 %! unwind_protect
 %!   hf = figure ("visible", "off");
 %!   toolkit = graphics_toolkit ();
 %!   assert (get (0, "defaultfigure__graphics_toolkit__"), toolkit);
-%!   graphics_toolkit (hf, "fltk");
-%!   assert (graphics_toolkit (hf), "fltk");
+%!   graphics_toolkit (hf, "qt");
+%!   assert (graphics_toolkit (hf), "qt");
 %! unwind_protect_cleanup
 %!   close (hf);
 %! end_unwind_protect
 
-%!testif HAVE_OPENGL, HAVE_FLTK; have_window_system () && any (strcmp ("gnuplot", available_graphics_toolkits ())) && any (strcmp ("fltk", available_graphics_toolkits ()))
+%!testif HAVE_OPENGL, HAVE_QT; have_window_system () && any (strcmp ("gnuplot", available_graphics_toolkits ())) && any (strcmp ("qt", available_graphics_toolkits ()))
 %! old_toolkit = graphics_toolkit ();
 %! switch (old_toolkit)
 %!   case {"gnuplot"}
-%!     new_toolkit = "fltk";
+%!     new_toolkit = "qt";
 %!   otherwise
 %!     new_toolkit = "gnuplot";
 %! endswitch
--- a/scripts/statistics/kurtosis.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/statistics/kurtosis.m	Thu Jan 24 20:20:02 2019 +0000
@@ -153,9 +153,8 @@
 %!assert (kurtosis (single ([1:5 10])), single (2.9786513), eps ("single"))
 %!assert (kurtosis (single ([1 2]), 0), single (NaN))
 
-## Verify no "divide-by-zero" warnings
+## Verify no warnings
 %!test
-%! warning ("on", "Octave:divide-by-zero", "local");
 %! lastwarn ("");  # clear last warning
 %! kurtosis (1);
 %! assert (lastwarn (), "");
--- a/scripts/statistics/mean.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/statistics/mean.m	Thu Jan 24 20:20:02 2019 +0000
@@ -142,10 +142,6 @@
       print_usage ();
   endswitch
 
-  ## FIXME: Delete this when the "divide-by-zero" warning is
-  ##        removed in Octave 6.0.
-  warning ("off", "Octave:divide-by-zero", "local");
-
   ## The actual mean computation
   n = size (x, dim);
   switch (mean_type)
--- a/scripts/statistics/skewness.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/statistics/skewness.m	Thu Jan 24 20:20:02 2019 +0000
@@ -152,9 +152,8 @@
 %!assert (skewness (single ([1:5 10])), single (1.0513283), eps ("single"))
 %!assert (skewness (single ([1 2]), 0), single (NaN))
 
-## Verify no "divide-by-zero" warnings
+## Verify no warnings
 %!test
-%! warning ("on", "Octave:divide-by-zero", "local");
 %! lastwarn ("");  # clear last warning
 %! skewness (1);
 %! assert (lastwarn (), "");
--- a/scripts/testfun/assert.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/testfun/assert.m	Thu Jan 24 20:20:02 2019 +0000
@@ -225,7 +225,7 @@
             err.observed{end+1} = "O";
             err.expected{end+1} = "E";
             err.reason{end+1} = ["Class " class(cond) " != " class(expected)];
-          elseif (isnumeric (cond))
+          elseif (isnumeric (cond) || islogical (cond))
             if (issparse (cond) != issparse (expected))
               err.index{end+1} = "()";
               err.observed{end+1} = "O";
--- a/scripts/testfun/private/dump_demos.m	Thu Jan 24 19:22:18 2019 +0000
+++ b/scripts/testfun/private/dump_demos.m	Thu Jan 24 20:20:02 2019 +0000
@@ -76,13 +76,79 @@
   fprintf (fid, "%% DO NOT EDIT!  Generated automatically by dump_demos.m\n");
   fprintf (fid, "function %s ()\n", funcname);
   fprintf (fid, "set (0, 'DefaultAxesColorOrder', ...\n");
-  fprintf (fid, "  [ 0.00000   0.00000   1.00000 ;\n");
-  fprintf (fid, "    0.00000   0.50000   0.00000 ;\n");
-  fprintf (fid, "    1.00000   0.00000   0.00000 ;\n");
-  fprintf (fid, "    0.00000   0.75000   0.75000 ;\n");
-  fprintf (fid, "    0.75000   0.00000   0.75000 ;\n");
-  fprintf (fid, "    0.75000   0.75000   0.00000 ;\n");
-  fprintf (fid, "    0.25000   0.25000   0.25000 ]);\n");
+  fprintf (fid, "  [ 0.00000   0.44700   0.74100 ;\n");
+  fprintf (fid, "    0.85000   0.32500   0.09800 ;\n");
+  fprintf (fid, "    0.92900   0.69400   0.12500 ;\n");
+  fprintf (fid, "    0.49400   0.18400   0.55600 ;\n");
+  fprintf (fid, "    0.46600   0.67400   0.18800 ;\n");
+  fprintf (fid, "    0.30100   0.74500   0.93300 ;\n");
+  fprintf (fid, "    0.63500   0.07800   0.18400 ]);\n");
+  fprintf (fid, "set (0, 'DefaultFigureColorMap', ...\n");
+  fprintf (fid, "  [ 0.2670040   0.0048743   0.3294152 ;\n");
+  fprintf (fid, "    0.2726517   0.0258457   0.3533673 ;\n");
+  fprintf (fid, "    0.2771063   0.0509139   0.3762361 ;\n");
+  fprintf (fid, "    0.2803562   0.0742015   0.3979015 ;\n");
+  fprintf (fid, "    0.2823900   0.0959536   0.4182508 ;\n");
+  fprintf (fid, "    0.2832046   0.1168933   0.4371789 ;\n");
+  fprintf (fid, "    0.2828093   0.1373502   0.4545959 ;\n");
+  fprintf (fid, "    0.2812308   0.1574799   0.4704339 ;\n");
+  fprintf (fid, "    0.2785162   0.1773480   0.4846539 ;\n");
+  fprintf (fid, "    0.2747355   0.1969692   0.4972505 ;\n");
+  fprintf (fid, "    0.2699818   0.2163303   0.5082545 ;\n");
+  fprintf (fid, "    0.2643686   0.2354047   0.5177319 ;\n");
+  fprintf (fid, "    0.2580262   0.2541617   0.5257802 ;\n");
+  fprintf (fid, "    0.2510987   0.2725732   0.5325222 ;\n");
+  fprintf (fid, "    0.2437329   0.2906195   0.5380971 ;\n");
+  fprintf (fid, "    0.2360733   0.3082910   0.5426518 ;\n");
+  fprintf (fid, "    0.2282632   0.3255865   0.5463354 ;\n");
+  fprintf (fid, "    0.2204250   0.3425172   0.5492871 ;\n");
+  fprintf (fid, "    0.2126666   0.3591022   0.5516350 ;\n");
+  fprintf (fid, "    0.2050791   0.3753661   0.5534932 ;\n");
+  fprintf (fid, "    0.1977219   0.3913409   0.5549535 ;\n");
+  fprintf (fid, "    0.1906314   0.4070615   0.5560891 ;\n");
+  fprintf (fid, "    0.1838194   0.4225638   0.5569522 ;\n");
+  fprintf (fid, "    0.1772724   0.4378855   0.5575761 ;\n");
+  fprintf (fid, "    0.1709575   0.4530630   0.5579740 ;\n");
+  fprintf (fid, "    0.1648329   0.4681295   0.5581427 ;\n");
+  fprintf (fid, "    0.1588454   0.4831171   0.5580587 ;\n");
+  fprintf (fid, "    0.1529512   0.4980530   0.5576847 ;\n");
+  fprintf (fid, "    0.1471316   0.5129595   0.5569733 ;\n");
+  fprintf (fid, "    0.1414022   0.5278543   0.5558645 ;\n");
+  fprintf (fid, "    0.1358330   0.5427501   0.5542887 ;\n");
+  fprintf (fid, "    0.1305821   0.5576525   0.5521757 ;\n");
+  fprintf (fid, "    0.1258984   0.5725631   0.5494454 ;\n");
+  fprintf (fid, "    0.1221631   0.5874763   0.5460234 ;\n");
+  fprintf (fid, "    0.1198724   0.6023824   0.5418306 ;\n");
+  fprintf (fid, "    0.1196266   0.6172658   0.5367956 ;\n");
+  fprintf (fid, "    0.1220459   0.6321070   0.5308480 ;\n");
+  fprintf (fid, "    0.1276677   0.6468818   0.5239242 ;\n");
+  fprintf (fid, "    0.1368349   0.6615629   0.5159668 ;\n");
+  fprintf (fid, "    0.1496433   0.6761197   0.5069243 ;\n");
+  fprintf (fid, "    0.1659673   0.6905190   0.4967519 ;\n");
+  fprintf (fid, "    0.1855384   0.7047252   0.4854121 ;\n");
+  fprintf (fid, "    0.2080305   0.7187010   0.4728733 ;\n");
+  fprintf (fid, "    0.2331273   0.7324064   0.4591059 ;\n");
+  fprintf (fid, "    0.2605315   0.7458020   0.4440959 ;\n");
+  fprintf (fid, "    0.2900007   0.7588465   0.4278259 ;\n");
+  fprintf (fid, "    0.3213300   0.7714979   0.4102927 ;\n");
+  fprintf (fid, "    0.3543553   0.7837140   0.3914876 ;\n");
+  fprintf (fid, "    0.3889303   0.7954531   0.3714207 ;\n");
+  fprintf (fid, "    0.4249331   0.8066739   0.3500988 ;\n");
+  fprintf (fid, "    0.4622468   0.8173376   0.3275447 ;\n");
+  fprintf (fid, "    0.5007536   0.8274091   0.3037990 ;\n");
+  fprintf (fid, "    0.5403370   0.8368582   0.2789167 ;\n");
+  fprintf (fid, "    0.5808612   0.8456634   0.2530009 ;\n");
+  fprintf (fid, "    0.6221708   0.8538156   0.2262237 ;\n");
+  fprintf (fid, "    0.6640873   0.8613210   0.1988794 ;\n");
+  fprintf (fid, "    0.7064038   0.8682063   0.1714949 ;\n");
+  fprintf (fid, "    0.7488853   0.8745222   0.1450376 ;\n");
+  fprintf (fid, "    0.7912731   0.8803462   0.1212910 ;\n");
+  fprintf (fid, "    0.8333021   0.8857801   0.1033262 ;\n");
+  fprintf (fid, "    0.8747175   0.8909453   0.0953508 ;\n");
+  fprintf (fid, "    0.9152963   0.8959735   0.1004700 ;\n");
+  fprintf (fid, "    0.9548396   0.9010058   0.1178764 ;\n");
+  fprintf (fid, "    0.9932479   0.9061566   0.1439362 ]);\n");
+
   fprintf (fid, "close all\n");
   fprintf (fid, "more off\n");
   fprintf (fid, "diary diary.log\n");
--- a/test/deprecate-props.tst	Thu Jan 24 19:22:18 2019 +0000
+++ b/test/deprecate-props.tst	Thu Jan 24 20:20:02 2019 +0000
@@ -31,62 +31,24 @@
 %!  endif
 %!endfunction
 
-## annotation rectangle "edgecolor" deprecated in 4.4, remove from version 6.
-%!test
-%! hf = figure ("visible", "off");
-%! unwind_protect
-%!   ha = annotation ("rectangle");
-%!   testprop (ha, "edgecolor", "6.0");
-%! unwind_protect_cleanup
-%!   close (hf);
-%! end_unwind_protect
-
-## figure "doublebuffer, mincolormap, wvisual, wvisualmode, xdisplay,
-## xvisual, xvisualmode" deprecated in 4.4, remove from version 6.
-%!test
-%! hf = figure ("visible", "off");
-%! unwind_protect
-%!   testprop (hf, "doublebuffer", "6.0");
-%!   testprop (hf, "mincolormap", "6.0");
-%!   testprop (hf, "wvisual", "6.0");
-%!   testprop (hf, "wvisualmode", "6.0");
-%!   testprop (hf, "xdisplay", "6.0");
-%!   testprop (hf, "xvisual", "6.0");
-%!   testprop (hf, "xvisualmode", "6.0");
-%! unwind_protect_cleanup
-%!   close (hf)
-%! end_unwind_protect
-
-## axes "drawmode" deprecated in 4.4, remove from version 6.
-%!test
-%! hf = figure ("visible", "off");
-%! unwind_protect
-%!   hax = axes ();
-%!   testprop (hax, "drawmode", "6.0");
-%! unwind_protect_cleanup
-%!   close (hf);
-%! end_unwind_protect
-
-## text/uicontrol/uipanel/uibuttongroup  "demi" and "light" values for
-## "fontweight" property are deprecated in 4.4, remove from version 6:
-##   * remove "demi" and "light" options in graphics.in.h,
-##   QtHandlesUtils.cc and ft-text-renderer.cc
-##   * remove warnings from update_fontweight in graphics.in.h
+## text/uicontrol/uipanel/uibuttongroup/uitable  "oblique" value for
+## "fontangle" property was deprecated in 5.0, remove from version 7:
+##   * remove "oblique" options in graphics.in.h, QtHandlesUtils.cc, 
+##     and ft-text-renderer.cc
+##   * remove warnings from update_fontangle in graphics.in.h
 %!test
 %! hf = figure ("visible", "off");
 %! unwind_protect
 %!   ht = text ();
-%!   testprop (ht, "fontweight", "6.0", "demi");
-%!   testprop (ht, "fontweight", "6.0", "light");
+%!   testprop (ht, "fontangle", "7.0", "oblique");
 %!   hui = uicontrol ();
-%!   testprop (hui, "fontweight", "6.0", "demi");
-%!   testprop (hui, "fontweight", "6.0", "light");
+%!   testprop (hui, "fontangle", "7.0", "oblique");
 %!   hui = uipanel ();
-%!   testprop (hui, "fontweight", "6.0", "demi");
-%!   testprop (hui, "fontweight", "6.0", "light");
+%!   testprop (hui, "fontangle", "7.0", "oblique");
 %!   hui = uibuttongroup ();
-%!   testprop (hui, "fontweight", "6.0", "demi");
-%!   testprop (hui, "fontweight", "6.0", "light");
+%!   testprop (hui, "fontangle", "7.0", "oblique");
+%!   hui = uitable ();
+%!   testprop (hui, "fontangle", "7.0", "oblique");
 %! unwind_protect_cleanup
 %!   close (hf);
 %! end_unwind_protect
--- a/test/jit.tst	Thu Jan 24 19:22:18 2019 +0000
+++ b/test/jit.tst	Thu Jan 24 20:20:02 2019 +0000
@@ -377,15 +377,11 @@
 %! assert (jit_failcnt, 0);
 
 %!function test_divide ()
-%! state = warning ("query", "Octave:divide-by-zero").state;
 %! unwind_protect
-%!   warning ("error", "Octave:divide-by-zero");
 %!   for i=1:1e5
 %!     a = 1;
 %!     a / 0;
 %!   endfor
-%! unwind_protect_cleanup
-%!   warning (state, "Octave:divide-by-zero");
 %! end_unwind_protect
 %!endfunction
 
--- a/test/mk-sparse-tst.sh	Thu Jan 24 19:22:18 2019 +0000
+++ b/test/mk-sparse-tst.sh	Thu Jan 24 20:20:02 2019 +0000
@@ -209,12 +209,7 @@
 %!assert (nnz (sparse (1,1,0)), 0)
 %!assert (nnz (sparse (eye (3))*0), 0)
 %!assert (nnz (sparse (eye (3))-sparse (eye (3))), 0)
-
-%!test
-%! wdbz = warning ("query", "Octave:divide-by-zero");
-%! warning ("off", "Octave:divide-by-zero");
-%! assert (full (sparse (eye (3))/0), full (eye (3)/0));
-%! warning (wdbz.state, "Octave:divide-by-zero");
+%!assert (full (sparse (eye (3))/0), full (eye (3)/0));
 
 EOF
 }
--- a/test/prefer.tst	Thu Jan 24 19:22:18 2019 +0000
+++ b/test/prefer.tst	Thu Jan 24 20:20:02 2019 +0000
@@ -176,15 +176,9 @@
 %! warning (watv.state, "Octave:assign-as-truth-value");
 
 %!test
-%! wdbz = warning ("query", "Octave:divide-by-zero");
-%! warning ("off", "Octave:divide-by-zero");
 %! assert (isinf (1/0));
-%! warning (wdbz.state, "Octave:divide-by-zero");
 
 %!test
-%! wdbz = warning ("query", "Octave:divide-by-zero");
-%! warning ("on", "Octave:divide-by-zero");
 %! a = 1;
 %! b = 0;
-%! fail ("isinf (a/b);", "warning", "division by zero");
-%! warning (wdbz.state, "Octave:divide-by-zero");
+%! assert (isinf (a/b));