changeset 34652:a3f3a128ab26 bytecode-interpreter

maint: Merge default to bytecode-interpreter
author Arun Giridhar <arungiridhar@gmail.com>
date Fri, 20 Jun 2025 15:56:18 -0400
parents 10eb80b58f1a 281bdeb70b42
children a54e055bb4ba
files configure.ac libinterp/corefcn/call-stack.cc libinterp/corefcn/cellfun.cc libinterp/corefcn/load-path.cc libinterp/corefcn/stack-frame.cc libinterp/corefcn/toplev.cc libinterp/corefcn/variables.cc libinterp/octave-value/ov-base-scalar.h libinterp/octave-value/ov-base.cc
diffstat 273 files changed, 799 insertions(+), 4750 deletions(-) [+]
line wrap: on
line diff
--- a/configure.ac
+++ b/configure.ac
@@ -1230,6 +1230,15 @@
 ## Check whether encoding of quiet NaN value is conformant to IEEE 754-2008
 OCTAVE_IEEE754_QNAN
 
+## Check whether quiet NaN values retain their payload on arithmetic operations
+OCTAVE_QNAN_WITH_PAYLOAD
+
+## Check if casting double precision NaN values to the type "char" results in 0
+OCTAVE_DOUBLE_QNAN_CHAR_0
+
+## Check if casting single precision NaN values to the type "char" results in 0
+OCTAVE_FLOAT_QNAN_CHAR_0
+
 ### Checks for functions and variables.
 
 dnl The list of functions is short because we use gnulib to guarantee
--- a/etc/NEWS.11.md
+++ b/etc/NEWS.11.md
@@ -28,6 +28,9 @@
   or permutation of the inputs for performance.  Now Octave automatically picks
   the fastest calculation order irrespective of the input orientation.
 
+- The `roots` function now accepts only a numeric argument.  Convert any
+  non-numeric input to a numeric value with `double()`.
+
 ### Graphical User Interface
 
 - The GUI now uses scalable SVG icons for beautiful display at any size.
--- a/examples/code/make_int.cc
+++ b/examples/code/make_int.cc
@@ -6,8 +6,8 @@
 #include <ostream>
 #include <string>
 
-#include <octave/lo-mappers.h>
 #include <octave/lo-utils.h>
+#include <octave/mappers.h>
 #include <octave/mx-base.h>
 #include <octave/str-vec.h>
 
--- a/libgui/src/m-editor/file-editor.cc
+++ b/libgui/src/m-editor/file-editor.cc
@@ -53,8 +53,8 @@
 #include "gui-settings.h"
 #include "main-window.h"
 
-#include "lo-sysdep.h"
 #include "oct-env.h"
+#include "oct-sysdep.h"
 
 #include "event-manager.h"
 #include "interpreter.h"
--- a/libgui/src/workspace-view.cc
+++ b/libgui/src/workspace-view.cc
@@ -75,6 +75,7 @@
   m_view->setContextMenuPolicy (Qt::CustomContextMenu);
   m_view->setShowGrid (false);
   (m_view->verticalHeader) ()->hide ();
+  m_view->verticalHeader ()->setMinimumSectionSize(1);  // allow smaller row sizes
   m_view->setAlternatingRowColors (true);
   m_view_previous_row_count = 0;
 
--- a/libinterp/build-env.h
+++ b/libinterp/build-env.h
@@ -31,7 +31,6 @@
 #include "oct-map.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(build_env)
 
 extern OCTINTERP_API octave_scalar_map features ();
--- a/libinterp/build-env.in.cc
+++ b/libinterp/build-env.in.cc
@@ -32,7 +32,6 @@
 #include "build-env.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(build_env)
 
 const char *AMD_CPPFLAGS = %OCTAVE_CONF_AMD_CPPFLAGS%;
--- a/libinterp/corefcn/__ftp__.cc
+++ b/libinterp/corefcn/__ftp__.cc
@@ -34,10 +34,10 @@
 #include "dir-ops.h"
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-sysdep.h"
+#include "glob-match.h"
 #include "oct-env.h"
 #include "oct-handle.h"
-#include "glob-match.h"
+#include "oct-sysdep.h"
 #include "url-transfer.h"
 
 #include "defun.h"
--- a/libinterp/corefcn/__magick_read__.cc
+++ b/libinterp/corefcn/__magick_read__.cc
@@ -28,8 +28,8 @@
 #endif
 
 #include "file-stat.h"
-#include "lo-sysdep.h"
 #include "oct-env.h"
+#include "oct-sysdep.h"
 #include "oct-time.h"
 
 #include "defun.h"
--- a/libinterp/corefcn/__pchip_deriv__.cc
+++ b/libinterp/corefcn/__pchip_deriv__.cc
@@ -27,7 +27,7 @@
 #  include "config.h"
 #endif
 
-#include "lo-slatec-proto.h"
+#include "slatec-proto.h"
 
 #include "defun.h"
 #include "error.h"
--- a/libinterp/corefcn/besselj.cc
+++ b/libinterp/corefcn/besselj.cc
@@ -27,7 +27,7 @@
 #  include "config.h"
 #endif
 
-#include "lo-specfun.h"
+#include "oct-specfun.h"
 #include "quit.h"
 
 #include "defun.h"
--- a/libinterp/corefcn/bsxfun.cc
+++ b/libinterp/corefcn/bsxfun.cc
@@ -31,7 +31,7 @@
 #include <string>
 #include <vector>
 
-#include "lo-mappers.h"
+#include "mappers.h"
 
 #include "defun.h"
 #include "interpreter.h"
--- a/libinterp/corefcn/call-stack.cc
+++ b/libinterp/corefcn/call-stack.cc
@@ -27,7 +27,7 @@
 #  include "config.h"
 #endif
 
-#include "lo-regexp.h"
+#include "oct-regexp.h"
 #include "str-vec.h"
 
 #include "builtin-defun-decls.h"
--- a/libinterp/corefcn/cellfun.cc
+++ b/libinterp/corefcn/cellfun.cc
@@ -27,12 +27,12 @@
 #  include "config.h"
 #endif
 
+#include <list>
+#include <memory>
 #include <string>
 #include <vector>
-#include <list>
-#include <memory>
-
-#include "lo-mappers.h"
+
+#include "mappers.h"
 #include "oct-locbuf.h"
 #include "oct-string.h"
 
--- a/libinterp/corefcn/colloc.cc
+++ b/libinterp/corefcn/colloc.cc
@@ -31,7 +31,7 @@
 #include <string>
 
 #include "CollocWt.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 
 #include "defun.h"
 #include "error.h"
--- a/libinterp/corefcn/dasrt.cc
+++ b/libinterp/corefcn/dasrt.cc
@@ -31,7 +31,7 @@
 #include <string>
 
 #include "DASRT.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 
 #include "defun.h"
 #include "error.h"
--- a/libinterp/corefcn/data.cc
+++ b/libinterp/corefcn/data.cc
@@ -5326,8 +5326,15 @@
 }
 
 /*
-%!assert (single (NA ("double")), NA ("single"))
-%!assert (double (NA ("single")), NA ("double"))
+%!testif HAVE_QNAN_WITH_PAYLOAD
+%! assert (single (NA ("double")), NA ("single"))
+%!testif HAVE_QNAN_WITH_PAYLOAD
+%! assert (double (NA ("single")), NA ("double"))
+// Duplicate from above.  Only for test statistics
+%!testif ; ! __have_feature__ ("QNAN_WITH_PAYLOAD") <59830>
+%! assert (single (NA ("double")), NA ("single"))
+%!testif ; ! __have_feature__ ("QNAN_WITH_PAYLOAD") <59830>
+%! assert (double (NA ("single")), NA ("double"))
 */
 
 DEFUN (false, args, ,
--- a/libinterp/corefcn/debug.cc
+++ b/libinterp/corefcn/debug.cc
@@ -46,7 +46,7 @@
 #include "input.h"
 #include "interpreter-private.h"
 #include "interpreter.h"
-#include "lo-sysdep.h"
+#include "oct-sysdep.h"
 #include "octave-preserve-stream-state.h"
 #include "ov-usr-fcn.h"
 #include "ov.h"
--- a/libinterp/corefcn/defaults.cc
+++ b/libinterp/corefcn/defaults.cc
@@ -48,7 +48,6 @@
 #include "default-defs.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(config)
 
 // Variables that name directories or files are substituted into source
--- a/libinterp/corefcn/defaults.h
+++ b/libinterp/corefcn/defaults.h
@@ -33,7 +33,6 @@
 #include "pathsearch.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(config)
 
 extern OCTINTERP_API std::string
--- a/libinterp/corefcn/dirfns.cc
+++ b/libinterp/corefcn/dirfns.cc
@@ -39,9 +39,9 @@
 #include "file-ops.h"
 #include "file-stat.h"
 #include "glob-match.h"
-#include "lo-sysdep.h"
 #include "oct-env.h"
 #include "oct-glob.h"
+#include "oct-sysdep.h"
 #include "pathsearch.h"
 #include "str-vec.h"
 
--- a/libinterp/corefcn/dlmread.cc
+++ b/libinterp/corefcn/dlmread.cc
@@ -38,7 +38,7 @@
 
 #include "file-ops.h"
 #include "lo-ieee.h"
-#include "lo-sysdep.h"
+#include "oct-sysdep.h"
 
 #include "defun.h"
 #include "interpreter.h"
--- a/libinterp/corefcn/dot.cc
+++ b/libinterp/corefcn/dot.cc
@@ -27,7 +27,7 @@
 #  include "config.h"
 #endif
 
-#include "lo-blas-proto.h"
+#include "blas-proto.h"
 #include "mx-base.h"
 
 #include "builtin-defun-decls.h"
--- a/libinterp/corefcn/ellipj.cc
+++ b/libinterp/corefcn/ellipj.cc
@@ -29,7 +29,7 @@
 
 #include "defun.h"
 #include "error.h"
-#include "lo-specfun.h"
+#include "oct-specfun.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
--- a/libinterp/corefcn/fcn-info.cc
+++ b/libinterp/corefcn/fcn-info.cc
@@ -29,8 +29,8 @@
 
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-sysdep.h"
 #include "oct-env.h"
+#include "oct-sysdep.h"
 
 #include "defun.h"
 #include "fcn-info.h"
--- a/libinterp/corefcn/fft.cc
+++ b/libinterp/corefcn/fft.cc
@@ -27,7 +27,7 @@
 #  include "config.h"
 #endif
 
-#include "lo-mappers.h"
+#include "mappers.h"
 
 #include "defun.h"
 #include "error.h"
--- a/libinterp/corefcn/fft2.cc
+++ b/libinterp/corefcn/fft2.cc
@@ -27,7 +27,7 @@
 #  include "config.h"
 #endif
 
-#include "lo-mappers.h"
+#include "mappers.h"
 
 #include "defun.h"
 #include "error.h"
--- a/libinterp/corefcn/fftn.cc
+++ b/libinterp/corefcn/fftn.cc
@@ -27,7 +27,7 @@
 #  include "config.h"
 #endif
 
-#include "lo-mappers.h"
+#include "mappers.h"
 
 #include "defun.h"
 #include "error.h"
--- a/libinterp/corefcn/file-io.cc
+++ b/libinterp/corefcn/file-io.cc
@@ -55,11 +55,11 @@
 #include "file-stat.h"
 #include "iconv-wrappers.h"
 #include "lo-ieee.h"
-#include "lo-sysdep.h"
 #include "localcharset-wrapper.h"
 #include "mkostemp-wrapper.h"
 #include "oct-env.h"
 #include "oct-locbuf.h"
+#include "oct-sysdep.h"
 #include "unistd-wrappers.h"
 
 #include "builtin-defun-decls.h"
--- a/libinterp/corefcn/gcd.cc
+++ b/libinterp/corefcn/gcd.cc
@@ -27,11 +27,11 @@
 #  include "config.h"
 #endif
 
+#include "CNDArray.h"
 #include "dNDArray.h"
-#include "CNDArray.h"
+#include "fCNDArray.h"
 #include "fNDArray.h"
-#include "fCNDArray.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "oct-binmap.h"
 
 #include "defun.h"
--- a/libinterp/corefcn/gl-render.cc
+++ b/libinterp/corefcn/gl-render.cc
@@ -36,7 +36,7 @@
 #  include <windows.h>
 #endif
 
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "oct-locbuf.h"
 
 #include "errwarn.h"
--- a/libinterp/corefcn/gl2ps-print.cc
+++ b/libinterp/corefcn/gl2ps-print.cc
@@ -41,9 +41,9 @@
 
 #include "file-ops.h"
 #include "filepos-wrappers.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-env.h"
 #include "oct-locbuf.h"
-#include "oct-env.h"
 #include "unistd-wrappers.h"
 #include "unistr-wrappers.h"
 #include "unwind-prot.h"
--- a/libinterp/corefcn/graphics.cc
+++ b/libinterp/corefcn/graphics.cc
@@ -44,8 +44,8 @@
 #include "cmd-edit.h"
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-sysdep.h"
 #include "oct-locbuf.h"
+#include "oct-sysdep.h"
 #include "oct-time.h"
 
 #include "builtin-defun-decls.h"
--- a/libinterp/corefcn/hash.cc
+++ b/libinterp/corefcn/hash.cc
@@ -42,7 +42,7 @@
 
 #include <string>
 
-#include "lo-hash.h"
+#include "oct-hash.h"
 
 #include "defun.h"
 #include "error.h"
--- a/libinterp/corefcn/help.cc
+++ b/libinterp/corefcn/help.cc
@@ -40,9 +40,9 @@
 #include "cmd-edit.h"
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-sysdep.h"
 #include "oct-env.h"
 #include "oct-locbuf.h"
+#include "oct-sysdep.h"
 #include "str-vec.h"
 
 #include "Cell.h"
--- a/libinterp/corefcn/interpreter.cc
+++ b/libinterp/corefcn/interpreter.cc
@@ -35,19 +35,19 @@
 #include <string>
 #include <thread>
 
+#include "blas-proto.h"
 #include "cmd-edit.h"
 #include "cmd-hist.h"
 #include "file-ops.h"
+#include "file-ops.h"
 #include "file-stat.h"
-#include "file-ops.h"
 #include "fpucw-wrappers.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
-#include "lo-sysdep.h"
 #include "oct-env.h"
+#include "oct-error.h"
+#include "oct-sysdep.h"
 #include "quit.h"
+#include "signal-wrappers.h"
 #include "str-vec.h"
-#include "signal-wrappers.h"
 #include "unistd-wrappers.h"
 
 #include "builtin-defun-decls.h"
--- a/libinterp/corefcn/load-path.cc
+++ b/libinterp/corefcn/load-path.cc
@@ -32,8 +32,8 @@
 
 #include "dir-ops.h"
 #include "file-ops.h"
-#include "lo-sysdep.h"
 #include "oct-env.h"
+#include "oct-sysdep.h"
 #include "pathsearch.h"
 #if ! defined (OCTAVE_USE_WINDOWS_API)
 #  include "file-stat.h"
--- a/libinterp/corefcn/load-save.cc
+++ b/libinterp/corefcn/load-save.cc
@@ -42,11 +42,11 @@
 #include "file-ops.h"
 #include "file-stat.h"
 #include "glob-match.h"
-#include "lo-mappers.h"
-#include "lo-sysdep.h"
 #include "mach-info.h"
+#include "mappers.h"
 #include "oct-env.h"
 #include "oct-locbuf.h"
+#include "oct-sysdep.h"
 #include "oct-time.h"
 #include "quit.h"
 #include "str-vec.h"
--- a/libinterp/corefcn/ls-hdf5.cc
+++ b/libinterp/corefcn/ls-hdf5.cc
@@ -42,13 +42,13 @@
 #include "data-conv.h"
 #include "file-ops.h"
 #include "glob-match.h"
-#include "lo-mappers.h"
 #include "mach-info.h"
+#include "mappers.h"
 #include "oct-env.h"
+#include "oct-locbuf.h"
 #include "oct-time.h"
 #include "quit.h"
 #include "str-vec.h"
-#include "oct-locbuf.h"
 
 #include "Cell.h"
 #include "defun.h"
--- a/libinterp/corefcn/ls-mat-ascii.cc
+++ b/libinterp/corefcn/ls-mat-ascii.cc
@@ -40,8 +40,8 @@
 #include "data-conv.h"
 #include "file-ops.h"
 #include "glob-match.h"
-#include "lo-mappers.h"
 #include "mach-info.h"
+#include "mappers.h"
 #include "oct-env.h"
 #include "oct-time.h"
 #include "quit.h"
--- a/libinterp/corefcn/ls-mat4.cc
+++ b/libinterp/corefcn/ls-mat4.cc
@@ -38,8 +38,8 @@
 #include "data-conv.h"
 #include "file-ops.h"
 #include "glob-match.h"
-#include "lo-mappers.h"
 #include "mach-info.h"
+#include "mappers.h"
 #include "oct-env.h"
 #include "oct-locbuf.h"
 #include "oct-time.h"
--- a/libinterp/corefcn/ls-mat5.cc
+++ b/libinterp/corefcn/ls-mat5.cc
@@ -43,11 +43,11 @@
 #include "file-ops.h"
 #include "file-stat.h"
 #include "glob-match.h"
-#include "lo-mappers.h"
-#include "lo-sysdep.h"
 #include "mach-info.h"
+#include "mappers.h"
 #include "oct-env.h"
 #include "oct-locbuf.h"
+#include "oct-sysdep.h"
 #include "oct-time.h"
 #include "quit.h"
 #include "str-vec.h"
@@ -2334,14 +2334,40 @@
 
   static octave_idx_type max_dim_val = std::numeric_limits<int32_t>::max ();
 
-  for (int i = 0; i < nd; i++)
+  // Strings need to be converted here (or dim-vector will be off).
+  charNDArray chm;
+  uint16_t *u16_str;
+  std::size_t n16_str;
+  bool conv_u16 = false;
+  if (tc.is_string ())
     {
-      if (dv(i) > max_dim_val)
+      chm = tc.char_array_value ();
+      u16_str = maybe_convert_to_u16 (chm, n16_str);
+
+      if (u16_str)
+        conv_u16 = true;
+    }
+
+
+  if (conv_u16)
+    {
+      if (n16_str > static_cast<std::size_t> (max_dim_val))
         {
           warn_dim_too_large (name);
           return true;  // skip to next
         }
     }
+  else
+    {
+      for (int i = 0; i < nd; i++)
+        {
+          if (dv(i) > max_dim_val)
+            {
+              warn_dim_too_large (name);
+              return true;  // skip to next
+            }
+        }
+    }
 
   if (tc.issparse ())
     {
@@ -2483,25 +2509,10 @@
 
   write_mat5_tag (os, miINT32, dim_len);
 
-  // Strings need to be converted here (or dim-vector will be off).
-  charNDArray chm;
-  uint16_t *u16_str;
-  std::size_t n16_str;
-  bool conv_u16 = false;
-  if (tc.is_string ())
-    {
-      chm = tc.char_array_value ();
-      u16_str = maybe_convert_to_u16 (chm, n16_str);
-
-      if (u16_str)
-        conv_u16 = true;
-    }
-
   if (conv_u16)
     {
-      int32_t n = 1;
-      os.write (reinterpret_cast<char *> (&n), 4);
-      os.write (reinterpret_cast<char *> (&n16_str), 4);
+      int32_t n[2] = {1, static_cast<int32_t> (n16_str)};
+      os.write (reinterpret_cast<char *> (&n), 8);
     }
   else
     for (int i = 0; i < nd; i++)
--- a/libinterp/corefcn/ls-oct-binary.cc
+++ b/libinterp/corefcn/ls-oct-binary.cc
@@ -35,8 +35,8 @@
 #include "data-conv.h"
 #include "file-ops.h"
 #include "glob-match.h"
-#include "lo-mappers.h"
 #include "mach-info.h"
+#include "mappers.h"
 #include "oct-env.h"
 #include "oct-locbuf.h"
 #include "oct-time.h"
--- a/libinterp/corefcn/ls-oct-text.cc
+++ b/libinterp/corefcn/ls-oct-text.cc
@@ -41,8 +41,8 @@
 #include "data-conv.h"
 #include "file-ops.h"
 #include "glob-match.h"
-#include "lo-mappers.h"
 #include "mach-info.h"
+#include "mappers.h"
 #include "oct-env.h"
 #include "oct-time.h"
 #include "quit.h"
--- a/libinterp/corefcn/lsode.cc
+++ b/libinterp/corefcn/lsode.cc
@@ -31,16 +31,16 @@
 #include <string>
 
 #include "LSODE.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 
 #include "defun.h"
 #include "error.h"
 #include "errwarn.h"
 #include "interpreter-private.h"
 #include "interpreter.h"
+#include "ov-cell.h"
+#include "ov-fcn.h"
 #include "ovl.h"
-#include "ov-fcn.h"
-#include "ov-cell.h"
 #include "pager.h"
 #include "pr-output.h"
 #include "unwind-prot.h"
--- a/libinterp/corefcn/mappers.cc
+++ b/libinterp/corefcn/mappers.cc
@@ -30,8 +30,8 @@
 #include <cctype>
 
 #include "lo-ieee.h"
-#include "lo-specfun.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-specfun.h"
 
 #include "defun.h"
 #include "error.h"
@@ -1483,10 +1483,21 @@
 
 %!assert (! isna (single (Inf)))
 %!assert (! isna (single (NaN)))
-%!assert (isna (single (NA)))
-%!assert (isna (single (rand (1,10))), false (1,10))
-%!assert (isna (single ([NaN -Inf -1 0 1 Inf NA])),
-%!        [false, false, false, false, false, false, true])
+%!testif HAVE_QNAN_WITH_PAYLOAD
+%! assert (isna (single (NA)))
+%!testif HAVE_QNAN_WITH_PAYLOAD
+%! assert (isna (single (rand (1,10))), false (1,10))
+%!testif HAVE_QNAN_WITH_PAYLOAD
+%! assert (isna (single ([NaN -Inf -1 0 1 Inf NA])),
+%!         [false, false, false, false, false, false, true])
+// Duplicate from above.  Only for test statistics
+%!testif ; ! __have_feature__ ("QNAN_WITH_PAYLOAD") <59830>
+%! assert (isna (single (NA)))
+%!testif ; ! __have_feature__ ("QNAN_WITH_PAYLOAD") <59830>
+%! assert (isna (single (rand (1,10))), false (1,10))
+%!testif ; ! __have_feature__ ("QNAN_WITH_PAYLOAD") <59830>
+%! assert (isna (single ([NaN -Inf -1 0 1 Inf NA])),
+%!         [false, false, false, false, false, false, true])
 
 %!error isna ()
 %!error isna (1, 2)
--- a/libinterp/corefcn/max.cc
+++ b/libinterp/corefcn/max.cc
@@ -30,7 +30,7 @@
 #include <cmath>
 
 #include "lo-ieee.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "dNDArray.h"
 #include "CNDArray.h"
 #include "quit.h"
--- a/libinterp/corefcn/oct-hist.cc
+++ b/libinterp/corefcn/oct-hist.cc
@@ -46,9 +46,9 @@
 
 #include "cmd-hist.h"
 #include "file-ops.h"
-#include "lo-mappers.h"
-#include "lo-sysdep.h"
+#include "mappers.h"
 #include "oct-env.h"
+#include "oct-sysdep.h"
 #include "oct-time.h"
 #include "str-vec.h"
 #include "unistd-wrappers.h"
--- a/libinterp/corefcn/oct-procbuf.cc
+++ b/libinterp/corefcn/oct-procbuf.cc
@@ -43,8 +43,8 @@
 #  include <unistd.h>
 #endif
 
-#include "lo-mappers.h"
 #include "lo-utils.h"
+#include "mappers.h"
 #include "oct-procbuf.h"
 #include "oct-syscalls.h"
 #include "sysdep.h"
--- a/libinterp/corefcn/oct-stream.cc
+++ b/libinterp/corefcn/oct-stream.cc
@@ -44,8 +44,8 @@
 #include "Cell.h"
 #include "byte-swap.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
 #include "lo-utils.h"
+#include "mappers.h"
 #include "oct-locbuf.h"
 #include "octave-preserve-stream-state.h"
 #include "quit.h"
--- a/libinterp/corefcn/ordqz.cc
+++ b/libinterp/corefcn/ordqz.cc
@@ -37,7 +37,7 @@
 #include <cmath>
 
 #include "f77-fcn.h"
-#include "lo-lapack-proto.h"
+#include "lapack-proto.h"
 #include "qr.h"
 #include "quit.h"
 
--- a/libinterp/corefcn/ordschur.cc
+++ b/libinterp/corefcn/ordschur.cc
@@ -27,9 +27,10 @@
 #  include "config.h"
 #endif
 
+#include "lapack-proto.h"
+
 #include "defun.h"
 #include "error.h"
-#include "lo-lapack-proto.h"
 #include "ovl.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
--- a/libinterp/corefcn/pr-output.cc
+++ b/libinterp/corefcn/pr-output.cc
@@ -40,8 +40,8 @@
 #include "Range.h"
 #include "cmd-edit.h"
 #include "dMatrix.h"
-#include "lo-mappers.h"
 #include "mach-info.h"
+#include "mappers.h"
 #include "oct-cmplx.h"
 #include "oct-string.h"
 #include "quit.h"
--- a/libinterp/corefcn/psi.cc
+++ b/libinterp/corefcn/psi.cc
@@ -27,14 +27,14 @@
 #  include "config.h"
 #endif
 
+#include "oct-specfun.h"
+
 #include "ov.h"
 #include "defun.h"
 #include "error.h"
 #include "dNDArray.h"
 #include "fNDArray.h"
 
-#include "lo-specfun.h"
-
 OCTAVE_BEGIN_NAMESPACE(octave)
 
 DEFUN (psi, args, ,
--- a/libinterp/corefcn/quad.cc
+++ b/libinterp/corefcn/quad.cc
@@ -30,16 +30,16 @@
 #include <string>
 
 #include "Quad.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 
 #include "defun.h"
 #include "error.h"
 #include "errwarn.h"
 #include "interpreter-private.h"
 #include "interpreter.h"
-#include "pager.h"
 #include "ov.h"
 #include "ovl.h"
+#include "pager.h"
 #include "unwind-prot.h"
 #include "utils.h"
 #include "variables.h"
--- a/libinterp/corefcn/qz.cc
+++ b/libinterp/corefcn/qz.cc
@@ -44,7 +44,7 @@
 #endif
 
 #include "f77-fcn.h"
-#include "lo-lapack-proto.h"
+#include "lapack-proto.h"
 #include "qr.h"
 #include "quit.h"
 
--- a/libinterp/corefcn/rand.cc
+++ b/libinterp/corefcn/rand.cc
@@ -31,7 +31,7 @@
 #include <string>
 
 #include "f77-fcn.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "oct-rand.h"
 #include "quit.h"
 
--- a/libinterp/corefcn/regexp.cc
+++ b/libinterp/corefcn/regexp.cc
@@ -32,7 +32,7 @@
 
 #include "oct-locbuf.h"
 #include "quit.h"
-#include "lo-regexp.h"
+#include "oct-regexp.h"
 #include "str-vec.h"
 
 #include "defun.h"
@@ -280,7 +280,7 @@
             // Both dollar sign (for capture buffer) and backslash are
             // passed through with their escape backslash.  The processing
             // for these must occur during the actual replacement operation
-            // in lo-regexp.cc.
+            // in oct-regexp.cc.
             case '$':  // pass dollar sign through with escape
               retval[i] = '\\'; retval[++i] = '$';
               break;
--- a/libinterp/corefcn/sqrtm.cc
+++ b/libinterp/corefcn/sqrtm.cc
@@ -27,10 +27,10 @@
 #  include "config.h"
 #endif
 
+#include "lo-ieee.h"
+#include "mappers.h"
+#include "oct-norm.h"
 #include "schur.h"
-#include "lo-ieee.h"
-#include "lo-mappers.h"
-#include "oct-norm.h"
 
 #include "defun.h"
 #include "error.h"
--- a/libinterp/corefcn/stack-frame.cc
+++ b/libinterp/corefcn/stack-frame.cc
@@ -29,8 +29,8 @@
 
 #include <iostream>
 
-#include "lo-regexp.h"
-#include "lo-sysdep.h"
+#include "oct-regexp.h"
+#include "oct-sysdep.h"
 #include "str-vec.h"
 
 #include "defun.h"
--- a/libinterp/corefcn/symscope.h
+++ b/libinterp/corefcn/symscope.h
@@ -36,8 +36,8 @@
 #include <string>
 
 #include "glob-match.h"
-#include "lo-regexp.h"
 #include "oct-refcount.h"
+#include "oct-regexp.h"
 
 class tree_argument_list;
 class octave_user_code;
--- a/libinterp/corefcn/symtab.h
+++ b/libinterp/corefcn/symtab.h
@@ -35,8 +35,8 @@
 #include <string>
 
 #include "glob-match.h"
-#include "lo-regexp.h"
 #include "oct-refcount.h"
+#include "oct-regexp.h"
 
 class tree_argument_list;
 class octave_user_function;
--- a/libinterp/corefcn/sysdep.cc
+++ b/libinterp/corefcn/sysdep.cc
@@ -63,10 +63,10 @@
 
 #include "cmd-edit.h"
 #include "file-ops.h"
-#include "lo-mappers.h"
-#include "lo-sysinfo.h"
 #include "mach-info.h"
+#include "mappers.h"
 #include "oct-env.h"
+#include "oct-sysinfo.h"
 #include "uniconv-wrappers.h"
 #include "unistd-wrappers.h"
 
--- a/libinterp/corefcn/sysdep.h
+++ b/libinterp/corefcn/sysdep.h
@@ -33,7 +33,7 @@
 #include <string>
 
 #include "lo-ieee.h"
-#include "lo-sysdep.h"
+#include "oct-sysdep.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
--- a/libinterp/corefcn/toplev.cc
+++ b/libinterp/corefcn/toplev.cc
@@ -41,7 +41,7 @@
 
 #include "async-system-wrapper.h"
 #include "child-list.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-fftw.h"
 #include "oct-locbuf.h"
 #include "oct-syscalls.h"
@@ -592,6 +592,9 @@
       config.assign ("words_little_endian",
                      octave_value (mach_info::words_little_endian ()));
 
+      config.assign ("nan_with_payload",
+                     octave_value (mach_info::nan_with_payload ()));
+
       config.assign ("build_environment", octave_value (build_env));
 
       config.assign ("build_features", octave_value (build_features));
--- a/libinterp/corefcn/url-handle-manager.h
+++ b/libinterp/corefcn/url-handle-manager.h
@@ -35,7 +35,7 @@
 #include <map>
 #include <set>
 
-#include "lo-mappers.h"
+#include "mappers.h"
 
 #include "oct-handle.h"
 #include "url-transfer.h"
--- a/libinterp/corefcn/urlwrite.cc
+++ b/libinterp/corefcn/urlwrite.cc
@@ -34,10 +34,10 @@
 #include "dir-ops.h"
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-sysdep.h"
+#include "glob-match.h"
 #include "oct-env.h"
 #include "oct-handle.h"
-#include "glob-match.h"
+#include "oct-sysdep.h"
 #include "url-transfer.h"
 
 #include "defun.h"
--- a/libinterp/corefcn/utils.cc
+++ b/libinterp/corefcn/utils.cc
@@ -38,14 +38,14 @@
 #include "dir-ops.h"
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-mappers.h"
-#include "lo-sysdep.h"
 #include "lo-utils.h"
+#include "mappers.h"
 #include "nanosleep-wrapper.h"
 #include "oct-cmplx.h"
 #include "oct-env.h"
 #include "oct-locbuf.h"
 #include "oct-string.h"
+#include "oct-sysdep.h"
 #include "pathsearch.h"
 #include "quit.h"
 #include "str-vec.h"
--- a/libinterp/corefcn/variables.cc
+++ b/libinterp/corefcn/variables.cc
@@ -39,7 +39,7 @@
 #include "oct-env.h"
 #include "file-ops.h"
 #include "glob-match.h"
-#include "lo-regexp.h"
+#include "oct-regexp.h"
 #include "str-vec.h"
 
 #include "Cell.h"
--- a/libinterp/dldfcn/gzip.cc
+++ b/libinterp/dldfcn/gzip.cc
@@ -64,8 +64,8 @@
 #include "file-ops.h"
 #include "file-stat.h"
 #include "glob-match.h"
-#include "lo-sysdep.h"
 #include "oct-env.h"
+#include "oct-sysdep.h"
 #include "str-vec.h"
 
 #include "Cell.h"
--- a/libinterp/mk-build-env-features.sh
+++ b/libinterp/mk-build-env-features.sh
@@ -44,7 +44,6 @@
 #include "ov.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(build_env)
 
     octave_scalar_map
--- a/libinterp/octave-value/ov-base-scalar.h
+++ b/libinterp/octave-value/ov-base-scalar.h
@@ -33,10 +33,10 @@
 #include <iosfwd>
 #include <string>
 
-#include "lo-mappers.h"
+#include "MatrixType.h"
 #include "lo-utils.h"
+#include "mappers.h"
 #include "str-vec.h"
-#include "MatrixType.h"
 
 #include "ov-base.h"
 #include "ov-typeinfo.h"
--- a/libinterp/octave-value/ov-base.cc
+++ b/libinterp/octave-value/ov-base.cc
@@ -32,7 +32,7 @@
 #include <ostream>
 
 #include "lo-ieee.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 
 #include "defun.h"
 #include "errwarn.h"
--- a/libinterp/octave-value/ov-class.cc
+++ b/libinterp/octave-value/ov-class.cc
@@ -33,8 +33,8 @@
 
 #include "Array-util.h"
 #include "byte-swap.h"
+#include "mappers.h"
 #include "oct-locbuf.h"
-#include "lo-mappers.h"
 
 #include "Cell.h"
 #include "defun.h"
--- a/libinterp/octave-value/ov-complex.cc
+++ b/libinterp/octave-value/ov-complex.cc
@@ -32,8 +32,8 @@
 #include <sstream>
 
 #include "lo-ieee.h"
-#include "lo-specfun.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-specfun.h"
 
 #include "mxarray.h"
 #include "ovl.h"
--- a/libinterp/octave-value/ov-cx-mat.cc
+++ b/libinterp/octave-value/ov-cx-mat.cc
@@ -37,11 +37,11 @@
 
 #include "data-conv.h"
 #include "lo-ieee.h"
-#include "lo-specfun.h"
-#include "lo-mappers.h"
+#include "mach-info.h"
+#include "mappers.h"
 #include "mx-base.h"
-#include "mach-info.h"
 #include "oct-locbuf.h"
+#include "oct-specfun.h"
 
 #include "errwarn.h"
 #include "mxarray.h"
@@ -244,7 +244,12 @@
       octave_idx_type nel = numel ();
 
       for (octave_idx_type i = 0; i < nel; i++)
-        retval.elem (i) = static_cast<char> (std::real (m_matrix.elem (i)));
+#if ! defined (HAVE_DOUBLE_QNAN_CHAR_0)
+        if (octave::math::isnan (std::real (m_matrix.elem (i))))
+          retval.elem (i) = 0.0;
+        else
+#endif
+          retval.elem (i) = static_cast<char> (std::real (m_matrix.elem (i)));
     }
 
   return retval;
--- a/libinterp/octave-value/ov-cx-sparse.cc
+++ b/libinterp/octave-value/ov-cx-sparse.cc
@@ -31,9 +31,9 @@
 #include <ostream>
 #include <vector>
 
-#include "lo-specfun.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "oct-locbuf.h"
+#include "oct-specfun.h"
 
 #include "mxarray.h"
 #include "errwarn.h"
--- a/libinterp/octave-value/ov-float.cc
+++ b/libinterp/octave-value/ov-float.cc
@@ -34,8 +34,8 @@
 
 #include "data-conv.h"
 #include "mach-info.h"
-#include "lo-specfun.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-specfun.h"
 
 #include "defun.h"
 #include "errwarn.h"
--- a/libinterp/octave-value/ov-float.h
+++ b/libinterp/octave-value/ov-float.h
@@ -33,7 +33,7 @@
 #include <iosfwd>
 #include <string>
 
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "lo-utils.h"
 #include "mx-base.h"
 #include "str-vec.h"
@@ -195,7 +195,12 @@
   char_array_value (bool = false) const
   {
     charNDArray retval (dim_vector (1, 1));
-    retval(0) = static_cast<char> (scalar);
+#if ! defined (HAVE_FLOAT_QNAN_CHAR_0)
+    if (octave::math::isnan (scalar))
+      retval(0) = 0.0;
+    else
+#endif
+      retval(0) = static_cast<char> (scalar);
     return retval;
   }
 
--- a/libinterp/octave-value/ov-flt-complex.cc
+++ b/libinterp/octave-value/ov-flt-complex.cc
@@ -31,8 +31,8 @@
 #include <ostream>
 
 #include "lo-ieee.h"
-#include "lo-specfun.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-specfun.h"
 
 #include "mxarray.h"
 #include "ovl.h"
--- a/libinterp/octave-value/ov-flt-cx-mat.cc
+++ b/libinterp/octave-value/ov-flt-cx-mat.cc
@@ -37,11 +37,11 @@
 
 #include "data-conv.h"
 #include "lo-ieee.h"
-#include "lo-specfun.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "mach-info.h"
 #include "mx-base.h"
-#include "mach-info.h"
 #include "oct-locbuf.h"
+#include "oct-specfun.h"
 
 #include "errwarn.h"
 #include "mxarray.h"
@@ -218,7 +218,12 @@
       octave_idx_type nel = numel ();
 
       for (octave_idx_type i = 0; i < nel; i++)
-        retval.elem (i) = static_cast<char> (std::real (m_matrix.elem (i)));
+#if ! defined (HAVE_FLOAT_QNAN_CHAR_0)
+        if (octave::math::isnan (std::real (m_matrix.elem (i))))
+          retval.elem (i) = 0.0;
+        else
+#endif
+          retval.elem (i) = static_cast<char> (std::real (m_matrix.elem (i)));
     }
 
   return retval;
--- a/libinterp/octave-value/ov-flt-re-mat.cc
+++ b/libinterp/octave-value/ov-flt-re-mat.cc
@@ -46,13 +46,13 @@
 
 #include "data-conv.h"
 #include "lo-ieee.h"
+#include "mappers.h"
 #include "lo-utils.h"
-#include "lo-specfun.h"
-#include "lo-mappers.h"
 #include "mach-info.h"
 #include "mx-base.h"
+#include "oct-locbuf.h"
+#include "oct-specfun.h"
 #include "quit.h"
-#include "oct-locbuf.h"
 
 #include "defun.h"
 #include "errwarn.h"
@@ -215,7 +215,12 @@
   octave_idx_type nel = numel ();
 
   for (octave_idx_type i = 0; i < nel; i++)
-    retval.elem (i) = static_cast<char> (m_matrix.elem (i));
+#if ! defined (HAVE_FLOAT_QNAN_CHAR_0)
+    if (octave::math::isnan (m_matrix.elem (i)))
+      retval.elem (i) = 0.0;
+    else
+#endif
+      retval.elem (i) = static_cast<char> (m_matrix.elem (i));
 
   return retval;
 }
--- a/libinterp/octave-value/ov-java.cc
+++ b/libinterp/octave-value/ov-java.cc
@@ -38,30 +38,30 @@
 
 #include <algorithm>
 #include <array>
+#include <clocale>
 #include <fstream>
 #include <map>
 #include <string>
 #include <vector>
 
-#include <clocale>
+#include "cmd-edit.h"
+#include "file-ops.h"
+#include "file-stat.h"
+#include "fpucw-wrappers.h"
+#include "oct-env.h"
+#include "oct-shlib.h"
+#include "oct-sysdep.h"
 
 #include "Cell.h"
 #include "builtin-defun-decls.h"
-#include "cmd-edit.h"
 #include "defaults.h"
 #include "defun.h"
 #include "error.h"
 #include "errwarn.h"
-#include "file-ops.h"
-#include "file-stat.h"
-#include "fpucw-wrappers.h"
+#include "interpreter-private.h"
 #include "interpreter.h"
-#include "interpreter-private.h"
 #include "load-path.h"
-#include "lo-sysdep.h"
-#include "oct-env.h"
 #include "oct-process.h"
-#include "oct-shlib.h"
 #include "ov-java.h"
 #include "variables.h"
 
--- a/libinterp/octave-value/ov-legacy-range.h
+++ b/libinterp/octave-value/ov-legacy-range.h
@@ -34,7 +34,7 @@
 #include <memory>
 #include <string>
 
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "lo-utils.h"
 #include "mx-base.h"
 
--- a/libinterp/octave-value/ov-magic-int.cc
+++ b/libinterp/octave-value/ov-magic-int.cc
@@ -33,9 +33,9 @@
 #include "oct-inttypes-fwd.h"
 
 #include "data-conv.h"
+#include "mappers.h"
 #include "mach-info.h"
-#include "lo-specfun.h"
-#include "lo-mappers.h"
+#include "oct-specfun.h"
 
 #include "defun.h"
 #include "errwarn.h"
--- a/libinterp/octave-value/ov-range.h
+++ b/libinterp/octave-value/ov-range.h
@@ -37,7 +37,7 @@
 #include "Array.h"
 #include "Range.h"
 
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "lo-utils.h"
 #include "mx-base.h"
 #include "str-vec.h"
--- a/libinterp/octave-value/ov-re-mat.cc
+++ b/libinterp/octave-value/ov-re-mat.cc
@@ -35,24 +35,24 @@
 
 #include "dNDArray.h"
 #include "fNDArray.h"
-#include "int8NDArray.h"
 #include "int16NDArray.h"
 #include "int32NDArray.h"
 #include "int64NDArray.h"
-#include "uint8NDArray.h"
+#include "int8NDArray.h"
 #include "uint16NDArray.h"
 #include "uint32NDArray.h"
 #include "uint64NDArray.h"
+#include "uint8NDArray.h"
 
 #include "data-conv.h"
 #include "lo-ieee.h"
 #include "lo-utils.h"
-#include "lo-specfun.h"
-#include "lo-mappers.h"
 #include "mach-info.h"
+#include "mappers.h"
 #include "mx-base.h"
+#include "oct-locbuf.h"
+#include "oct-specfun.h"
 #include "quit.h"
-#include "oct-locbuf.h"
 
 #include "defun.h"
 #include "errwarn.h"
@@ -225,7 +225,12 @@
   octave_idx_type nel = numel ();
 
   for (octave_idx_type i = 0; i < nel; i++)
-    retval.elem (i) = static_cast<char> (m_matrix.elem (i));
+#if ! defined (HAVE_DOUBLE_QNAN_CHAR_0)
+    if (octave::math::isnan (m_matrix.elem (i)))
+      retval.elem (i) = 0.0;
+    else
+#endif
+      retval.elem (i) = static_cast<char> (m_matrix.elem (i));
 
   return retval;
 }
--- a/libinterp/octave-value/ov-re-sparse.cc
+++ b/libinterp/octave-value/ov-re-sparse.cc
@@ -32,9 +32,9 @@
 #include <ostream>
 #include <vector>
 
-#include "lo-specfun.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "oct-locbuf.h"
+#include "oct-specfun.h"
 
 #include "mxarray.h"
 #include "errwarn.h"
@@ -119,7 +119,12 @@
 
   for (octave_idx_type j = 0; j < nc; j++)
     for (octave_idx_type i = matrix.cidx (j); i < matrix.cidx (j+1); i++)
-      retval(matrix.ridx (i) + nr * j) = static_cast<char> (matrix.data (i));
+#if ! defined (HAVE_DOUBLE_QNAN_CHAR_0)
+      if (octave::math::isnan (matrix.data (i)))
+        retval(matrix.ridx (i) + nr * j) = 0.0;
+      else
+#endif
+        retval(matrix.ridx (i) + nr * j) = static_cast<char> (matrix.data (i));
 
   return retval;
 }
--- a/libinterp/octave-value/ov-scalar.cc
+++ b/libinterp/octave-value/ov-scalar.cc
@@ -34,8 +34,8 @@
 
 #include "data-conv.h"
 #include "mach-info.h"
-#include "lo-specfun.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-specfun.h"
 
 #include "defun.h"
 #include "errwarn.h"
--- a/libinterp/octave-value/ov-scalar.h
+++ b/libinterp/octave-value/ov-scalar.h
@@ -33,8 +33,8 @@
 #include <iosfwd>
 #include <string>
 
-#include "lo-mappers.h"
 #include "lo-utils.h"
+#include "mappers.h"
 #include "mx-base.h"
 #include "str-vec.h"
 
@@ -198,7 +198,12 @@
   char_array_value (bool = false) const
   {
     charNDArray retval (dim_vector (1, 1));
-    retval(0) = static_cast<char> (scalar);
+#if ! defined (HAVE_DOUBLE_QNAN_CHAR_0)
+    if (octave::math::isnan (scalar))
+      retval(0) = 0.0;
+    else
+#endif
+      retval(0) = static_cast<char> (scalar);
     return retval;
   }
 
--- a/libinterp/octave.cc
+++ b/libinterp/octave.cc
@@ -34,8 +34,8 @@
 
 #include "file-ops.h"
 #include "getopt-wrapper.h"
-#include "lo-error.h"
 #include "oct-env.h"
+#include "oct-error.h"
 #include "str-vec.h"
 
 #include "Cell.h"
--- a/libinterp/parse-tree/lex.ll
+++ b/libinterp/parse-tree/lex.ll
@@ -100,7 +100,7 @@
 #include <stack>
 
 #include "cmd-edit.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "quit.h"
 #include "unistd-wrappers.h"
 
--- a/libinterp/parse-tree/oct-parse.yy
+++ b/libinterp/parse-tree/oct-parse.yy
@@ -62,7 +62,7 @@
 #include "interpreter.h"
 #include "lex.h"
 #include "load-path.h"
-#include "lo-sysdep.h"
+#include "oct-sysdep.h"
 #include "oct-hist.h"
 #include "oct-map.h"
 #include "ov-classdef.h"
--- a/liboctave/array/Array-C.cc
+++ b/liboctave/array/Array-C.cc
@@ -29,8 +29,8 @@
 
 // Instantiate Arrays of Complex values.
 
+#include "mappers.h"
 #include "oct-cmplx.h"
-#include "lo-mappers.h"
 
 #define OCTAVE_EXTERN_TEMPLATE_ARRAY
 #include "Array-oct.h"
--- a/liboctave/array/Array-base.cc
+++ b/liboctave/array/Array-base.cc
@@ -33,10 +33,10 @@
 
 #include <ostream>
 
+#include "Array-oct.h"
 #include "Array-util.h"
-#include "Array-oct.h"
-#include "lo-error.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 
 // One dimensional array class.  Handles the reference counting for
--- a/liboctave/array/Array-base.h
+++ b/liboctave/array/Array-base.h
@@ -37,8 +37,8 @@
 #include "Array-fwd.h"
 #include "dim-vector.h"
 #include "idx-vector.h"
-#include "lo-error.h"
-#include "lo-traits.h"
+#include "oct-error.h"
+#include "oct-traits.h"
 #include "lo-utils.h"
 #include "oct-refcount.h"
 #include "oct-sort.h"
--- a/liboctave/array/Array-d.cc
+++ b/liboctave/array/Array-d.cc
@@ -29,7 +29,7 @@
 
 // Instantiate Arrays of double values.
 
-#include "lo-mappers.h"
+#include "mappers.h"
 #define OCTAVE_EXTERN_TEMPLATE_ARRAY
 #include "Array-oct.h"
 
--- a/liboctave/array/Array-f.cc
+++ b/liboctave/array/Array-f.cc
@@ -29,7 +29,7 @@
 
 // Instantiate Arrays of float values.
 
-#include "lo-mappers.h"
+#include "mappers.h"
 #define OCTAVE_EXTERN_TEMPLATE_ARRAY
 #include "Array-oct.h"
 
--- a/liboctave/array/Array-fC.cc
+++ b/liboctave/array/Array-fC.cc
@@ -29,8 +29,8 @@
 
 // Instantiate Arrays of FloatComplex values.
 
+#include "mappers.h"
 #include "oct-cmplx.h"
-#include "lo-mappers.h"
 
 #define OCTAVE_EXTERN_TEMPLATE_ARRAY
 #include "Array-oct.h"
--- a/liboctave/array/Array-util.cc
+++ b/liboctave/array/Array-util.cc
@@ -28,7 +28,7 @@
 #endif
 
 #include "Array-util.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 
 bool
--- a/liboctave/array/CColVector.cc
+++ b/liboctave/array/CColVector.cc
@@ -31,11 +31,11 @@
 #include <ostream>
 
 #include "Array-util.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "blas-proto.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // Complex Column Vector class
 
--- a/liboctave/array/CDiagMatrix.cc
+++ b/liboctave/array/CDiagMatrix.cc
@@ -30,11 +30,11 @@
 #include <ostream>
 
 #include "Array-util.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // Complex Diagonal Matrix class
 
--- a/liboctave/array/CMatrix.cc
+++ b/liboctave/array/CMatrix.cc
@@ -40,24 +40,24 @@
 #include "CNDArray.h"
 #include "CRowVector.h"
 #include "DET.h"
+#include "blas-proto.h"
 #include "boolMatrix.h"
 #include "chMatrix.h"
 #include "chol.h"
 #include "dDiagMatrix.h"
 #include "dMatrix.h"
 #include "dRowVector.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "lapack-proto.h"
 #include "lo-ieee.h"
-#include "lo-lapack-proto.h"
-#include "lo-mappers.h"
 #include "lo-utils.h"
+#include "mappers.h"
 #include "mx-cm-dm.h"
 #include "mx-cm-s.h"
 #include "mx-dm-cm.h"
 #include "mx-inlines.cc"
 #include "mx-op-defs.h"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 #include "oct-fftw.h"
 #include "oct-locbuf.h"
 #include "oct-norm.h"
--- a/liboctave/array/CNDArray.cc
+++ b/liboctave/array/CNDArray.cc
@@ -35,7 +35,7 @@
 #include "CNDArray.h"
 #include "f77-fcn.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "mx-base.h"
 #include "mx-cnda-s.h"
 #include "mx-op-defs.h"
--- a/liboctave/array/CRowVector.cc
+++ b/liboctave/array/CRowVector.cc
@@ -32,11 +32,11 @@
 #include <type_traits>
 
 #include "Array-util.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "blas-proto.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // Complex Row Vector class
 
--- a/liboctave/array/CSparse.cc
+++ b/liboctave/array/CSparse.cc
@@ -33,20 +33,20 @@
 #include <limits>
 #include <ostream>
 
+#include "dRowVector.h"
+#include "f77-fcn.h"
+#include "lapack-proto.h"
+#include "lo-ieee.h"
+#include "mappers.h"
+#include "mx-cm-s.h"
+#include "mx-cs-m.h"
+#include "mx-fcm-fs.h"
+#include "mx-fs-fcm.h"
+#include "mx-m-cs.h"
+#include "mx-s-cm.h"
+#include "oct-error.h"
+#include "oct-locbuf.h"
 #include "quit.h"
-#include "lo-error.h"
-#include "lo-ieee.h"
-#include "lo-mappers.h"
-#include "f77-fcn.h"
-#include "dRowVector.h"
-#include "lo-lapack-proto.h"
-#include "mx-m-cs.h"
-#include "mx-cs-m.h"
-#include "mx-cm-s.h"
-#include "mx-fcm-fs.h"
-#include "mx-s-cm.h"
-#include "mx-fs-fcm.h"
-#include "oct-locbuf.h"
 
 #include "dDiagMatrix.h"
 #include "CDiagMatrix.h"
--- a/liboctave/array/DiagArray2.cc
+++ b/liboctave/array/DiagArray2.cc
@@ -31,7 +31,7 @@
 
 #include "DiagArray2.h"
 
-#include "lo-error.h"
+#include "oct-error.h"
 
 template <typename T>
 DiagArray2<T>::DiagArray2 (const Array<T>& a, octave_idx_type r,
--- a/liboctave/array/MArray.cc
+++ b/liboctave/array/MArray.cc
@@ -29,7 +29,7 @@
 
 #include "MArray.h"
 #include "Array-util.h"
-#include "lo-error.h"
+#include "oct-error.h"
 
 template <typename T>
 class _idxadds_helper
--- a/liboctave/array/MDiagArray2.cc
+++ b/liboctave/array/MDiagArray2.cc
@@ -29,7 +29,7 @@
 
 #include "MDiagArray2.h"
 #include "Array-util.h"
-#include "lo-error.h"
+#include "oct-error.h"
 
 template <typename T>
 bool
--- a/liboctave/array/MSparse.h
+++ b/liboctave/array/MSparse.h
@@ -31,7 +31,7 @@
 #include "Array-util.h"
 #include "MArray.h"
 #include "Sparse.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "quit.h"
 
 
--- a/liboctave/array/Range.cc
+++ b/liboctave/array/Range.cc
@@ -35,9 +35,9 @@
 
 #include "Array-util.h"
 #include "Range.h"
-#include "lo-error.h"
-#include "lo-mappers.h"
 #include "lo-utils.h"
+#include "mappers.h"
+#include "oct-error.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
--- a/liboctave/array/Range.h
+++ b/liboctave/array/Range.h
@@ -34,7 +34,7 @@
 #include "Array-fwd.h"
 #include "dMatrix.h"
 #include "dim-vector.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-sort.h"
 #include "range-fwd.h"
 
--- a/liboctave/array/Sparse-C.cc
+++ b/liboctave/array/Sparse-C.cc
@@ -29,12 +29,12 @@
 
 // Instantiate Sparse matrix of complex values.
 
+#include "Array-oct.h"
+#include "Sparse.cc"
+#include "Sparse.h"
+#include "lo-ieee.h"
+#include "mappers.h"
 #include "oct-cmplx.h"
-#include "lo-mappers.h"
-#include "lo-ieee.h"
-#include "Array-oct.h"
-#include "Sparse.h"
-#include "Sparse.cc"
 
 
 static double
--- a/liboctave/array/Sparse-d.cc
+++ b/liboctave/array/Sparse-d.cc
@@ -29,10 +29,10 @@
 
 // Instantiate Sparse matrix of double values.
 
-#include "lo-mappers.h"
 #include "Array-oct.h"
+#include "Sparse.cc"
 #include "Sparse.h"
-#include "Sparse.cc"
+#include "mappers.h"
 
 template <>
 OCTAVE_API
--- a/liboctave/array/Sparse.cc
+++ b/liboctave/array/Sparse.cc
@@ -36,18 +36,18 @@
 #include <vector>
 
 #include "Array-oct.h"
+#include "Array-util.h"
 #include "MArray.h"
-#include "Array-util.h"
 #include "Range.h"
 #include "idx-vector.h"
-#include "lo-error.h"
+#include "oct-error.h"
+#include "oct-locbuf.h"
 #include "quit.h"
-#include "oct-locbuf.h"
 
 #include "Sparse.h"
+#include "mx-inlines.cc"
+#include "oct-spparms.h"
 #include "sparse-util.h"
-#include "oct-spparms.h"
-#include "mx-inlines.cc"
 
 #include "PermMatrix.h"
 
--- a/liboctave/array/boolMatrix.cc
+++ b/liboctave/array/boolMatrix.cc
@@ -31,10 +31,10 @@
 
 #include "Array-util.h"
 #include "boolMatrix.h"
-#include "lo-error.h"
-#include "str-vec.h"
 #include "mx-inlines.cc"
 #include "mx-op-defs.h"
+#include "oct-error.h"
+#include "str-vec.h"
 
 // boolMatrix class.
 
--- a/liboctave/array/boolSparse.cc
+++ b/liboctave/array/boolSparse.cc
@@ -31,9 +31,9 @@
 #include <ostream>
 #include <vector>
 
+#include "lo-ieee.h"
+#include "mappers.h"
 #include "quit.h"
-#include "lo-ieee.h"
-#include "lo-mappers.h"
 
 #include "boolSparse.h"
 #include "dSparse.h"
--- a/liboctave/array/chMatrix.cc
+++ b/liboctave/array/chMatrix.cc
@@ -32,11 +32,11 @@
 #include <ostream>
 #include <string>
 
-#include "lo-error.h"
-#include "str-vec.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "mx-op-defs.h"
+#include "oct-error.h"
+#include "str-vec.h"
 
 // charMatrix class.
 
--- a/liboctave/array/chNDArray.cc
+++ b/liboctave/array/chNDArray.cc
@@ -31,9 +31,9 @@
 
 #include "Array-util.h"
 #include "chNDArray.h"
+#include "lo-ieee.h"
+#include "mappers.h"
 #include "mx-base.h"
-#include "lo-ieee.h"
-#include "lo-mappers.h"
 #include "mx-op-defs.h"
 #include "str-vec.h"
 
--- a/liboctave/array/dColVector.cc
+++ b/liboctave/array/dColVector.cc
@@ -31,11 +31,11 @@
 #include <ostream>
 
 #include "Array-util.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "blas-proto.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // Column Vector class.
 
--- a/liboctave/array/dDiagMatrix.cc
+++ b/liboctave/array/dDiagMatrix.cc
@@ -30,10 +30,10 @@
 #include <ostream>
 
 #include "Array-util.h"
-#include "lo-error.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // Diagonal Matrix class.
 
--- a/liboctave/array/dMatrix.cc
+++ b/liboctave/array/dMatrix.cc
@@ -38,6 +38,7 @@
 #include "CMatrix.h"
 #include "DET.h"
 #include "PermMatrix.h"
+#include "blas-proto.h"
 #include "boolMatrix.h"
 #include "byte-swap.h"
 #include "chMatrix.h"
@@ -46,17 +47,16 @@
 #include "dDiagMatrix.h"
 #include "dMatrix.h"
 #include "dRowVector.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "lapack-proto.h"
 #include "lo-ieee.h"
-#include "lo-lapack-proto.h"
-#include "lo-mappers.h"
 #include "lo-utils.h"
+#include "mappers.h"
 #include "mx-dm-m.h"
 #include "mx-inlines.cc"
 #include "mx-m-dm.h"
 #include "mx-op-defs.h"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 #include "oct-fftw.h"
 #include "oct-locbuf.h"
 #include "oct-norm.h"
--- a/liboctave/array/dNDArray.cc
+++ b/liboctave/array/dNDArray.cc
@@ -34,11 +34,11 @@
 #include "Array-util.h"
 #include "dNDArray.h"
 #include "f77-fcn.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "mx-base.h"
 #include "mx-op-defs.h"
+#include "oct-error.h"
 #include "oct-fftw.h"
 #include "oct-locbuf.h"
 
--- a/liboctave/array/dRowVector.cc
+++ b/liboctave/array/dRowVector.cc
@@ -32,11 +32,11 @@
 #include <type_traits>
 
 #include "Array-util.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "blas-proto.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // Row Vector class.
 
--- a/liboctave/array/dSparse.cc
+++ b/liboctave/array/dSparse.cc
@@ -32,12 +32,12 @@
 #include <limits>
 #include <ostream>
 
+#include "dRowVector.h"
+#include "lapack-proto.h"
+#include "lo-ieee.h"
+#include "mappers.h"
+#include "oct-locbuf.h"
 #include "quit.h"
-#include "lo-ieee.h"
-#include "lo-lapack-proto.h"
-#include "lo-mappers.h"
-#include "dRowVector.h"
-#include "oct-locbuf.h"
 
 #include "dDiagMatrix.h"
 #include "CSparse.h"
--- a/liboctave/array/fCColVector.cc
+++ b/liboctave/array/fCColVector.cc
@@ -31,11 +31,11 @@
 #include <ostream>
 
 #include "Array-util.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "blas-proto.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // FloatComplex Column Vector class
 
--- a/liboctave/array/fCDiagMatrix.cc
+++ b/liboctave/array/fCDiagMatrix.cc
@@ -30,11 +30,11 @@
 #include <ostream>
 
 #include "Array-util.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // FloatComplex Diagonal Matrix class
 
--- a/liboctave/array/fCMatrix.cc
+++ b/liboctave/array/fCMatrix.cc
@@ -36,6 +36,7 @@
 
 #include "Array-util.h"
 #include "DET.h"
+#include "blas-proto.h"
 #include "boolMatrix.h"
 #include "chMatrix.h"
 #include "chol.h"
@@ -44,18 +45,17 @@
 #include "fCMatrix.h"
 #include "fCNDArray.h"
 #include "fCRowVector.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "lapack-proto.h"
 #include "lo-ieee.h"
-#include "lo-lapack-proto.h"
-#include "lo-mappers.h"
 #include "lo-utils.h"
+#include "mappers.h"
 #include "mx-fcm-fdm.h"
 #include "mx-fcm-fs.h"
 #include "mx-fdm-fcm.h"
 #include "mx-inlines.cc"
 #include "mx-op-defs.h"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 #include "oct-fftw.h"
 #include "oct-locbuf.h"
 #include "oct-norm.h"
--- a/liboctave/array/fCNDArray.cc
+++ b/liboctave/array/fCNDArray.cc
@@ -35,10 +35,10 @@
 #include "f77-fcn.h"
 #include "fCNDArray.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "mx-base.h"
+#include "mx-fcnda-fs.h"
 #include "mx-op-defs.h"
-#include "mx-fcnda-fs.h"
 #include "oct-fftw.h"
 #include "oct-locbuf.h"
 
--- a/liboctave/array/fCRowVector.cc
+++ b/liboctave/array/fCRowVector.cc
@@ -32,11 +32,11 @@
 #include <type_traits>
 
 #include "Array-util.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "blas-proto.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // FloatComplex Row Vector class
 
--- a/liboctave/array/fColVector.cc
+++ b/liboctave/array/fColVector.cc
@@ -31,11 +31,11 @@
 #include <ostream>
 
 #include "Array-util.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "blas-proto.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // Column Vector class.
 
--- a/liboctave/array/fDiagMatrix.cc
+++ b/liboctave/array/fDiagMatrix.cc
@@ -30,10 +30,10 @@
 #include <ostream>
 
 #include "Array-util.h"
-#include "lo-error.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // Diagonal Matrix class.
 
--- a/liboctave/array/fMatrix.cc
+++ b/liboctave/array/fMatrix.cc
@@ -36,6 +36,7 @@
 #include "Array-util.h"
 #include "DET.h"
 #include "PermMatrix.h"
+#include "blas-proto.h"
 #include "boolMatrix.h"
 #include "byte-swap.h"
 #include "chMatrix.h"
@@ -48,17 +49,16 @@
 #include "fMatrix.h"
 #include "fNDArray.h"
 #include "fRowVector.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "lapack-proto.h"
 #include "lo-ieee.h"
-#include "lo-lapack-proto.h"
-#include "lo-mappers.h"
 #include "lo-utils.h"
+#include "mappers.h"
 #include "mx-fdm-fm.h"
 #include "mx-fm-fdm.h"
 #include "mx-inlines.cc"
 #include "mx-op-defs.h"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 #include "oct-fftw.h"
 #include "oct-locbuf.h"
 #include "oct-norm.h"
--- a/liboctave/array/fNDArray.cc
+++ b/liboctave/array/fNDArray.cc
@@ -34,11 +34,11 @@
 #include "Array-util.h"
 #include "f77-fcn.h"
 #include "fNDArray.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "mx-base.h"
 #include "mx-op-defs.h"
+#include "oct-error.h"
 #include "oct-fftw.h"
 #include "oct-locbuf.h"
 
--- a/liboctave/array/fRowVector.cc
+++ b/liboctave/array/fRowVector.cc
@@ -32,11 +32,11 @@
 #include <type_traits>
 
 #include "Array-util.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
+#include "blas-proto.h"
 #include "mx-base.h"
 #include "mx-inlines.cc"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 
 // Row Vector class.
 
--- a/liboctave/array/idx-vector.cc
+++ b/liboctave/array/idx-vector.cc
@@ -32,15 +32,15 @@
 
 #include <ostream>
 
-#include "idx-vector.h"
 #include "Array-oct.h"
 #include "Array-util.h"
+#include "Range.h"
 #include "Sparse.h"
-#include "Range.h"
+#include "idx-vector.h"
 
+#include "mappers.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
-#include "lo-error.h"
-#include "lo-mappers.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
--- a/liboctave/array/idx-vector.h
+++ b/liboctave/array/idx-vector.h
@@ -35,11 +35,11 @@
 #include <memory>
 
 #include "Array-fwd.h"
+#include "Sparse-fwd.h"
 #include "dim-vector.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-inttypes.h"
 #include "oct-refcount.h"
-#include "Sparse-fwd.h"
 #include "range-fwd.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
--- a/liboctave/external/blas-xtra/xerbla.cc
+++ b/liboctave/external/blas-xtra/xerbla.cc
@@ -29,8 +29,8 @@
 
 #include <iostream>
 
+#include "blas-proto.h"
 #include "f77-fcn.h"
-#include "lo-blas-proto.h"
 
 typedef void (*xerbla_handler_fptr) (void);
 
--- a/liboctave/numeric/CollocWt.cc
+++ b/liboctave/numeric/CollocWt.cc
@@ -34,8 +34,8 @@
 
 #include "Array-oct.h"
 #include "CollocWt.h"
-#include "lo-error.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-error.h"
 
 // The following routines jcobi, dif, and dfopr are based on the code
 // found in Villadsen, J. and M. L. Michelsen, Solution of Differential
--- a/liboctave/numeric/DASPK.cc
+++ b/liboctave/numeric/DASPK.cc
@@ -33,7 +33,7 @@
 #include "DASPK.h"
 #include "dMatrix.h"
 #include "f77-fcn.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "quit.h"
 
 typedef F77_INT (*daspk_fcn_ptr) (const double&, const double *, const double *,
--- a/liboctave/numeric/DASRT.cc
+++ b/liboctave/numeric/DASRT.cc
@@ -32,7 +32,7 @@
 
 #include "DASRT.h"
 #include "f77-fcn.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "quit.h"
 
 typedef F77_INT (*dasrt_fcn_ptr) (const double&, const double *, const double *,
--- a/liboctave/numeric/DASSL.cc
+++ b/liboctave/numeric/DASSL.cc
@@ -33,7 +33,7 @@
 #include "DASSL.h"
 #include "dMatrix.h"
 #include "f77-fcn.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "quit.h"
 
 typedef F77_INT (*dassl_fcn_ptr) (const double&, const double *,
--- a/liboctave/numeric/DET.h
+++ b/liboctave/numeric/DET.h
@@ -30,7 +30,7 @@
 
 #include <cmath>
 
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "oct-cmplx.h"
 
 template <typename T>
--- a/liboctave/numeric/EIG.cc
+++ b/liboctave/numeric/EIG.cc
@@ -31,8 +31,8 @@
 #include "EIG.h"
 #include "dColVector.h"
 #include "dMatrix.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
+#include "lapack-proto.h"
+#include "oct-error.h"
 
 octave_idx_type
 EIG::init (const Matrix& a, bool calc_rev, bool calc_lev, bool balance)
--- a/liboctave/numeric/LSODE.cc
+++ b/liboctave/numeric/LSODE.cc
@@ -32,7 +32,7 @@
 
 #include "LSODE.h"
 #include "f77-fcn.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "quit.h"
 
 typedef F77_INT (*lsode_fcn_ptr) (const F77_INT&, const double&, double *,
--- a/liboctave/numeric/Quad.cc
+++ b/liboctave/numeric/Quad.cc
@@ -30,7 +30,7 @@
 #include "Array-oct.h"
 #include "Quad.h"
 #include "f77-fcn.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "quit.h"
 
 static integrand_fcn user_fcn;
--- a/liboctave/numeric/aepbalance.cc
+++ b/liboctave/numeric/aepbalance.cc
@@ -34,8 +34,8 @@
 #include "fCMatrix.h"
 #include "fColVector.h"
 #include "fMatrix.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
+#include "lapack-proto.h"
+#include "oct-error.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
--- a/liboctave/numeric/aepbalance.h
+++ b/liboctave/numeric/aepbalance.h
@@ -31,7 +31,6 @@
 #include <algorithm>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename MT>
copy from liboctave/numeric/lo-amos-proto.h
copy to liboctave/numeric/amos-proto.h
--- a/liboctave/numeric/lo-amos-proto.h
+++ b/liboctave/numeric/amos-proto.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_amos_proto_h)
-#define octave_lo_amos_proto_h 1
+#if ! defined (octave_amos_proto_h)
+#define octave_amos_proto_h 1
 
 #include "octave-config.h"
 
copy from liboctave/numeric/lo-arpack-proto.h
copy to liboctave/numeric/arpack-proto.h
--- a/liboctave/numeric/lo-arpack-proto.h
+++ b/liboctave/numeric/arpack-proto.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_arpack_proto_h)
-#define octave_lo_arpack_proto_h 1
+#if ! defined (octave_arpack_proto_h)
+#define octave_arpack_proto_h 1
 
 #include "octave-config.h"
 
copy from liboctave/numeric/lo-blas-proto.h
copy to liboctave/numeric/blas-proto.h
--- a/liboctave/numeric/lo-blas-proto.h
+++ b/liboctave/numeric/blas-proto.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_blas_proto_h)
-#define octave_lo_blas_proto_h 1
+#if ! defined (octave_blas_proto_h)
+#define octave_blas_proto_h 1
 
 #include "octave-config.h"
 
--- a/liboctave/numeric/bsxfun-defs.cc
+++ b/liboctave/numeric/bsxfun-defs.cc
@@ -32,8 +32,8 @@
 #include <algorithm>
 
 #include "dim-vector.h"
-#include "lo-error.h"
 #include "mx-inlines.cc"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 
 template <typename R, typename X, typename Y>
--- a/liboctave/numeric/bsxfun.h
+++ b/liboctave/numeric/bsxfun.h
@@ -32,7 +32,7 @@
 #include <string>
 
 #include "dim-vector.h"
-#include "lo-error.h"
+#include "oct-error.h"
 
 inline
 bool
--- a/liboctave/numeric/chol.cc
+++ b/liboctave/numeric/chol.cc
@@ -37,11 +37,11 @@
 #include "fCMatrix.h"
 #include "fColVector.h"
 #include "fMatrix.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
-#include "lo-qrupdate-proto.h"
+#include "lapack-proto.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 #include "oct-norm.h"
+#include "qrupdate-proto.h"
 
 #if ! defined (HAVE_QRUPDATE)
 #  include "qr.h"
--- a/liboctave/numeric/chol.h
+++ b/liboctave/numeric/chol.h
@@ -29,7 +29,6 @@
 #include "octave-config.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
--- a/liboctave/numeric/eigs-base.cc
+++ b/liboctave/numeric/eigs-base.cc
@@ -35,15 +35,15 @@
 #include "CSparse.h"
 #include "MatrixType.h"
 #include "PermMatrix.h"
+#include "arpack-proto.h"
+#include "blas-proto.h"
 #include "chol.h"
 #include "dSparse.h"
 #include "eigs-base.h"
-#include "lo-arpack-proto.h"
-#include "lo-blas-proto.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
 #include "lu.h"
 #include "mx-ops.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 #include "oct-rand.h"
 #include "sparse-chol.h"
--- a/liboctave/numeric/fEIG.cc
+++ b/liboctave/numeric/fEIG.cc
@@ -28,11 +28,11 @@
 #endif
 
 #include "Array-oct.h"
+#include "fColVector.h"
 #include "fEIG.h"
-#include "fColVector.h"
 #include "fMatrix.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
+#include "lapack-proto.h"
+#include "oct-error.h"
 
 octave_idx_type
 FloatEIG::init (const FloatMatrix& a, bool calc_rev, bool calc_lev,
--- a/liboctave/numeric/gepbalance.cc
+++ b/liboctave/numeric/gepbalance.cc
@@ -32,14 +32,13 @@
 #include "fCMatrix.h"
 #include "fMatrix.h"
 #include "gepbalance.h"
+#include "lapack-proto.h"
 #include "lo-array-errwarn.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 #include "quit.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <>
--- a/liboctave/numeric/gepbalance.h
+++ b/liboctave/numeric/gepbalance.h
@@ -31,7 +31,6 @@
 #include <string>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
--- a/liboctave/numeric/gsvd.cc
+++ b/liboctave/numeric/gsvd.cc
@@ -37,8 +37,8 @@
 #include "fDiagMatrix.h"
 #include "fMatrix.h"
 #include "gsvd.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
+#include "lapack-proto.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 #include "oct-shlib.h"
 
--- a/liboctave/numeric/gsvd.h
+++ b/liboctave/numeric/gsvd.h
@@ -29,7 +29,6 @@
 #include "octave-config.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
--- a/liboctave/numeric/hess.cc
+++ b/liboctave/numeric/hess.cc
@@ -33,11 +33,10 @@
 #include "fCMatrix.h"
 #include "fMatrix.h"
 #include "hess.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
+#include "lapack-proto.h"
+#include "oct-error.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <>
--- a/liboctave/numeric/hess.h
+++ b/liboctave/numeric/hess.h
@@ -31,7 +31,6 @@
 #include <iosfwd>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
copy from liboctave/numeric/lo-lapack-proto.h
copy to liboctave/numeric/lapack-proto.h
--- a/liboctave/numeric/lo-lapack-proto.h
+++ b/liboctave/numeric/lapack-proto.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_lapack_proto_h)
-#define octave_lo_lapack_proto_h 1
+#if ! defined (octave_lapack_proto_h)
+#define octave_lapack_proto_h 1
 
 #include "octave-config.h"
 
--- a/liboctave/numeric/lo-amos-proto.h
+++ b/liboctave/numeric/lo-amos-proto.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2016-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,102 +26,8 @@
 #if ! defined (octave_lo_amos_proto_h)
 #define octave_lo_amos_proto_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-amos-proto.h" is deprecated, use "amos-proto.h" instead'
 
-#include "f77-fcn.h"
-
-extern "C"
-{
-  // AIRY
-
-  F77_RET_T
-  F77_FUNC (cairy, CAIRY) (const F77_CMPLX *, const F77_INT&,
-                           const F77_INT&, F77_CMPLX *,
-                           F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zairy, ZAIRY) (const F77_DBLE&, const F77_DBLE&,
-                           const F77_INT&, const F77_INT&,
-                           F77_DBLE&, F77_DBLE&, F77_INT&,
-                           F77_INT&);
-
-  // BESH
-
-  F77_RET_T
-  F77_FUNC (cbesh, CBESH) (const F77_CMPLX *, const F77_REAL&,
-                           const F77_INT&, const F77_INT&,
-                           const F77_INT&, F77_CMPLX *,
-                           F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zbesh, ZBESH) (const F77_DBLE&, const F77_DBLE&, const F77_DBLE&,
-                           const F77_INT&, const F77_INT&,
-                           const F77_INT&, F77_DBLE *, F77_DBLE *,
-                           F77_INT&, F77_INT&);
-
-  // BESI
-
-  F77_RET_T
-  F77_FUNC (cbesi, CBESI) (const F77_CMPLX *, const F77_REAL&,
-                           const F77_INT&, const F77_INT&,
-                           F77_CMPLX *, F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zbesi, ZBESI) (const F77_DBLE&, const F77_DBLE&, const F77_DBLE&,
-                           const F77_INT&, const F77_INT&,
-                           F77_DBLE *, F77_DBLE *, F77_INT&,
-                           F77_INT&);
-
-  // BESJ
-
-  F77_RET_T
-  F77_FUNC (cbesj, CBESJ) (const F77_CMPLX *, const F77_REAL&,
-                           const F77_INT&, const F77_INT&,
-                           F77_CMPLX *, F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zbesj, ZBESJ) (const F77_DBLE&, const F77_DBLE&, const F77_DBLE&,
-                           const F77_INT&, const F77_INT&,
-                           F77_DBLE *, F77_DBLE *, F77_INT&,
-                           F77_INT&);
-
-  // BESK
-
-  F77_RET_T
-  F77_FUNC (cbesk, CBESK) (const F77_CMPLX *, const F77_REAL&,
-                           const F77_INT&, const F77_INT&,
-                           F77_CMPLX *, F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zbesk, ZBESK) (const F77_DBLE&, const F77_DBLE&, const F77_DBLE&,
-                           const F77_INT&, const F77_INT&,
-                           F77_DBLE *, F77_DBLE *, F77_INT&,
-                           F77_INT&);
-
-  // BESY
-
-  F77_RET_T
-  F77_FUNC (cbesy, CBESY) (const F77_CMPLX *, const F77_REAL&,
-                           const F77_INT&, const F77_INT&,
-                           F77_CMPLX *, F77_INT&,
-                           F77_CMPLX *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zbesy, ZBESY) (const F77_DBLE&, const F77_DBLE&, const F77_DBLE&,
-                           const F77_INT&, const F77_INT&,
-                           F77_DBLE *, F77_DBLE *, F77_INT&, F77_DBLE *,
-                           F77_DBLE *, F77_INT&);
-
-  // BIRY
-
-  F77_RET_T
-  F77_FUNC (cbiry, CBIRY) (const F77_CMPLX *, const F77_INT&, const F77_INT&,
-                           const F77_CMPLX *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zbiry, ZBIRY) (const F77_DBLE&, const F77_DBLE&,
-                           const F77_INT&, const F77_INT&,
-                           F77_DBLE&, F77_DBLE&, F77_INT&);
-}
+#include "amos-proto.h"
 
 #endif
--- a/liboctave/numeric/lo-arpack-proto.h
+++ b/liboctave/numeric/lo-arpack-proto.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2016-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,117 +26,8 @@
 #if ! defined (octave_lo_arpack_proto_h)
 #define octave_lo_arpack_proto_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-arpack-proto.h" is deprecated, use "arpack-proto.h" instead'
 
-#include "f77-fcn.h"
-
-extern "C"
-{
-
-#if defined (HAVE_ARPACK)
-
-  // NAUPD
-
-  F77_RET_T
-  F77_FUNC (dnaupd, DNAUPD) (F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_INT&, const F77_DBLE&,
-                             F77_DBLE *, const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT *,
-                             F77_INT *, F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (znaupd, ZNAUPD) (F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_DBLE&,
-                             F77_DBLE_CMPLX *, const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT *,
-                             F77_INT *, F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // NEUPD
-
-  F77_RET_T
-  F77_FUNC (dneupd, DNEUPD) (const F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_INT *, F77_DBLE *, F77_DBLE *,
-                             F77_DBLE *, const F77_INT&, const F77_DBLE&,
-                             const F77_DBLE&, F77_DBLE *,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_INT&, const F77_DBLE&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT *,
-                             F77_INT *, F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zneupd, ZNEUPD) (const F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_INT *, F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_DBLE_CMPLX *,
-                             F77_DBLE_CMPLX *,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_DBLE&,
-                             F77_DBLE_CMPLX *, const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT *,
-                             F77_INT *, F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // SAUPD
-
-  F77_RET_T
-  F77_FUNC (dsaupd, DSAUPD) (F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_DBLE&,
-                             F77_DBLE *, const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT *,
-                             F77_INT *, F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // SEUPD
-
-  F77_RET_T
-  F77_FUNC (dseupd, DSEUPD) (const F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_INT *, F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, const F77_DBLE&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_DBLE&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT *,
-                             F77_INT *, F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
+#include "arpack-proto.h"
 
 #endif
-
-}
-
-#endif
--- a/liboctave/numeric/lo-blas-proto.h
+++ b/liboctave/numeric/lo-blas-proto.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2016-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,211 +26,8 @@
 #if ! defined (octave_lo_blas_proto_h)
 #define octave_lo_blas_proto_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-blas-proto.h" is deprecated, use "blas-proto.h" instead'
 
-#include "f77-fcn.h"
-
-extern "C"
-{
-  // DOT (liboctave/external/blas-xtra)
-
-  F77_RET_T
-  F77_FUNC (xddot, XDDOT) (const F77_INT&, const F77_DBLE *,
-                           const F77_INT&, const F77_DBLE *,
-                           const F77_INT&, F77_DBLE&);
-
-  F77_RET_T
-  F77_FUNC (xsdot, XSDOT) (const F77_INT&, const F77_REAL *,
-                           const F77_INT&, const F77_REAL *,
-                           const F77_INT&, F77_REAL&);
-
-  // DOT3
-
-  F77_RET_T
-  F77_FUNC (ddot3, DDOT3) (const F77_INT&, const F77_INT&,
-                           const F77_INT&, const F77_DBLE *,
-                           const F77_DBLE *, F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (sdot3, SDOT3) (const F77_INT&, const F77_INT&,
-                           const F77_INT&, const F77_REAL *,
-                           const F77_REAL *, F77_REAL *);
-
-  // DOTC (liboctave/external/blas-xtra)
-
-  F77_RET_T
-  F77_FUNC (xcdotc, XCDOTC) (const F77_INT&, const F77_CMPLX *,
-                             const F77_INT&, const F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *);
-
-  F77_RET_T
-  F77_FUNC (xzdotc, XZDOTC) (const F77_INT&, const F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *);
-
-  // DOTC3
-
-  F77_RET_T
-  F77_FUNC (cdotc3, CDOTC3) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_CMPLX *,
-                             const F77_CMPLX *, F77_CMPLX *);
-
-  F77_RET_T
-  F77_FUNC (zdotc3, ZDOTC3) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_DBLE_CMPLX *,
-                             const F77_DBLE_CMPLX *, F77_DBLE_CMPLX *);
-
-  // DOTU (liboctave/external/blas-xtra)
-
-  F77_RET_T
-  F77_FUNC (xcdotu, XCDOTU) (const F77_INT&, const F77_CMPLX *,
-                             const F77_INT&, const F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *);
-
-  F77_RET_T
-  F77_FUNC (xzdotu, XZDOTU) (const F77_INT&, const F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *);
-
-  // GEMM
-
-  F77_RET_T
-  F77_FUNC (cgemm, CGEMM) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_INT&, const F77_CMPLX&,
-                           const F77_CMPLX *, const F77_INT&,
-                           const F77_CMPLX *, const F77_INT&,
-                           const F77_CMPLX&, F77_CMPLX *,
-                           const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgemm, DGEMM) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_INT&, const F77_DBLE&,
-                           const F77_DBLE *, const F77_INT&,
-                           const F77_DBLE *, const F77_INT&,
-                           const F77_DBLE&, F77_DBLE *,
-                           const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgemm, SGEMM) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_INT&, const F77_REAL&,
-                           const F77_REAL *, const F77_INT&,
-                           const F77_REAL *, const F77_INT&,
-                           const F77_REAL&, F77_REAL *,
-                           const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgemm, ZGEMM) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_INT&, const F77_DBLE_CMPLX&,
-                           const F77_DBLE_CMPLX *, const F77_INT&,
-                           const F77_DBLE_CMPLX *, const F77_INT&,
-                           const F77_DBLE_CMPLX&, F77_DBLE_CMPLX *,
-                           const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  // GEMV
-
-  F77_RET_T
-  F77_FUNC (cgemv, CGEMV) (F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_CMPLX&, const F77_CMPLX *,
-                           const F77_INT&, const F77_CMPLX *,
-                           const F77_INT&, const F77_CMPLX&,
-                           F77_CMPLX *, const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgemv, DGEMV) (F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_DBLE&, const F77_DBLE *,
-                           const F77_INT&, const F77_DBLE *,
-                           const F77_INT&, const F77_DBLE&,
-                           F77_DBLE *, const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgemv, SGEMV) (F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_REAL&, const F77_REAL *,
-                           const F77_INT&, const F77_REAL *,
-                           const F77_INT&, const F77_REAL&,
-                           F77_REAL *, const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgemv, ZGEMV) (F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_DBLE_CMPLX&, const F77_DBLE_CMPLX *,
-                           const F77_INT&, const F77_DBLE_CMPLX *,
-                           const F77_INT&, const F77_DBLE_CMPLX&,
-                           F77_DBLE_CMPLX *, const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL);
-
-  // MATM3
-
-  F77_RET_T
-  F77_FUNC (cmatm3, CMATM3) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_INT&,
-                             const F77_CMPLX *, const F77_CMPLX *,
-                             F77_CMPLX *);
-  F77_RET_T
-  F77_FUNC (dmatm3, DMATM3) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE *, const F77_DBLE *, F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (smatm3, SMATM3) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_INT&,
-                             const F77_REAL *, const F77_REAL *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zmatm3, ZMATM3) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE_CMPLX *, const F77_DBLE_CMPLX *,
-                             F77_DBLE_CMPLX *);
-
-  // XERBLA
-
-  OCTAVE_API
-  F77_RET_T
-  F77_FUNC (xerbla, XERBLA) (F77_CONST_CHAR_ARG_DECL, const F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // Declarations for the *axpy BLAS functions
-  // The *axpy functions are used by convolution.
-
-  F77_RET_T
-  F77_FUNC (daxpy, DAXPY) (const F77_INT&, const F77_DBLE&, const F77_DBLE *,
-                           const F77_INT&, F77_DBLE *, const F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (saxpy, SAXPY) (const F77_INT&, const F77_REAL&, const F77_REAL *,
-                           const F77_INT&, F77_REAL *, const F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zaxpy, ZAXPY) (const F77_INT&, const F77_DBLE_CMPLX&,
-                           const F77_DBLE_CMPLX *, const F77_INT&,
-                           F77_DBLE_CMPLX *, const F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (caxpy, CAXPY) (const F77_INT&, const F77_CMPLX&,
-                           const F77_CMPLX *, const F77_INT&,
-                           F77_CMPLX *, const F77_INT&);
-
-}
+#include "blas-proto.h"
 
 #endif
--- a/liboctave/numeric/lo-lapack-proto.h
+++ b/liboctave/numeric/lo-lapack-proto.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2016-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,2086 +26,8 @@
 #if ! defined (octave_lo_lapack_proto_h)
 #define octave_lo_lapack_proto_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-lapack-proto.h" is deprecated, use "lapack-proto.h" instead'
 
-#include "f77-fcn.h"
-#include "oct-cmplx.h"
-
-extern "C"
-{
-  // GBCON
-
-  F77_RET_T
-  F77_FUNC (dgbcon, DGBCON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, const F77_INT *,
-                             const F77_DBLE&, F77_DBLE&, F77_DBLE *,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgbcon, ZGBCON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_INT *,
-                             const F77_DBLE&, F77_DBLE&, F77_DBLE_CMPLX *,
-                             F77_DBLE *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GBTRF
-
-  F77_RET_T
-  F77_FUNC (dgbtrf, DGBTRF) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_INT *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zgbtrf, ZGBTRF) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_INT *, F77_INT&);
-
-  // GBTRS
-
-  F77_RET_T
-  F77_FUNC (dgbtrs, DGBTRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE *, const F77_INT&,
-                             const F77_INT *, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgbtrs, ZGBTRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE_CMPLX *, const F77_INT&,
-                             const F77_INT *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GEBAL
-
-  F77_RET_T
-  F77_FUNC (cgebal, CGEBAL) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_INT&,
-                             F77_INT&, F77_REAL *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgebal, DGEBAL) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&,
-                             F77_INT&, F77_DBLE *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgebal, SGEBAL) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&,
-                             F77_INT&, F77_REAL *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgebal, ZGEBAL) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&,
-                             F77_INT&, F77_DBLE *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GEBAK
-
-  F77_RET_T
-  F77_FUNC (cgebak, CGEBAK) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_REAL *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgebak, DGEBAK) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgebak, SGEBAK) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgebak, ZGEBAK) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_DBLE *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GECON
-
-  F77_RET_T
-  F77_FUNC (cgecon, CGECON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, const F77_REAL&, F77_REAL&,
-                             F77_CMPLX *, F77_REAL *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgecon, DGECON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, const F77_DBLE&, F77_DBLE&,
-                             F77_DBLE *, F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgecon, SGECON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, const F77_REAL&, F77_REAL&,
-                             F77_REAL *, F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgecon, ZGECON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_DBLE&, F77_DBLE&,
-                             F77_DBLE_CMPLX *, F77_DBLE *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GEHRD
-
-  F77_RET_T
-  F77_FUNC (cgehrd, CGEHRD) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *, F77_CMPLX *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dgehrd, DGEHRD) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sgehrd, SGEHRD) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *, F77_REAL *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zgehrd, ZGEHRD) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&);
-
-  // GEQP3
-
-  F77_RET_T
-  F77_FUNC (cgeqp3, CGEQP3) (const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_INT *, F77_CMPLX *, F77_CMPLX *,
-                             const F77_INT&, F77_REAL *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dgeqp3, DGEQP3) (const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_INT *, F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sgeqp3, SGEQP3) (const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_INT *, F77_REAL *, F77_REAL *,
-                             const F77_INT&, F77_INT&);
-  F77_RET_T
-  F77_FUNC (zgeqp3, ZGEQP3) (const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_INT *, F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE *, F77_INT&);
-
-  // GEQRF
-
-  F77_RET_T
-  F77_FUNC (cgeqrf, CGEQRF) (const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, F77_CMPLX *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dgeqrf, DGEQRF) (const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sgeqrf, SGEQRF) (const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, F77_REAL *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zgeqrf, ZGEQRF) (const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&);
-
-  // GELQF
-
-  F77_RET_T
-  F77_FUNC (cgelqf, CGELQF) (const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, F77_CMPLX *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dgelqf, DGELQF) (const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sgelqf, SGELQF) (const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, F77_REAL *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zgelqf, ZGELQF) (const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&);
-
-  // ORMLQ
-
-  F77_RET_T
-  F77_FUNC (cormlq, CORMLQ) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dormlq, DORMLQ) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sormlq, SORMLQ) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zormlq, ZORMLQ) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // ORMQR
-
-  F77_RET_T
-  F77_FUNC (cormqr, CORMQR) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dormqr, DORMQR) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sormqr, SORMQR) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zormqr, ZORMQR) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GESDD
-
-  F77_RET_T
-  F77_FUNC (cgesdd, CGESDD) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&, F77_REAL *,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&, F77_REAL *,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgesdd, DGESDD) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&, F77_DBLE *,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgesdd, SGESDD) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&, F77_REAL *,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgesdd, ZGESDD) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&, F77_DBLE *,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&, F77_DBLE *,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-  // GESVD
-
-  F77_RET_T
-  F77_FUNC (cgesvd, CGESVD) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&, F77_REAL *,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_REAL *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgesvd, DGESVD) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&, F77_DBLE *,
-                             F77_DBLE *, const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgesvd, SGESVD) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&, F77_REAL *,
-                             F77_REAL *, const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgesvd, ZGESVD) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE *, F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GEJSV
-
-  F77_RET_T
-  F77_FUNC (cgejsv, CGEJSV) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&, F77_REAL *,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_REAL *,  const F77_INT&,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgejsv, DGEJSV) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&, F77_DBLE *,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgejsv, SGEJSV) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&, F77_REAL *,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgejsv, ZGEJSV) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&, F77_DBLE *,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE *,       const F77_INT&,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GEESX
-
-  typedef F77_INT (*double_selector) (const F77_DBLE&, const F77_DBLE&);
-  typedef F77_INT (*float_selector) (const F77_REAL&, const F77_REAL&);
-  typedef F77_INT (*complex_selector) (const F77_DBLE_CMPLX&);
-  typedef F77_INT (*float_complex_selector) (const F77_CMPLX&);
-
-  F77_RET_T
-  F77_FUNC (cgeesx, CGEESX) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             float_complex_selector,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_INT&,
-                             F77_CMPLX *, F77_CMPLX *,
-                             const F77_INT&, F77_REAL&, F77_REAL&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_REAL *, F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgeesx, DGEESX) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             double_selector,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&,
-                             F77_DBLE *, F77_DBLE *, F77_DBLE *, const F77_INT&,
-                             F77_DBLE&, F77_DBLE&, F77_DBLE *, const F77_INT&,
-                             F77_INT *, const F77_INT&,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgeesx, SGEESX) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             float_selector,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&,
-                             F77_REAL *, F77_REAL *, F77_REAL *, const F77_INT&,
-                             F77_REAL&, F77_REAL&, F77_REAL *, const F77_INT&,
-                             F77_INT *, const F77_INT&,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgeesx, ZGEESX) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             complex_selector,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&,
-                             F77_DBLE_CMPLX *, F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE&, F77_DBLE&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE *,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GEEVX
-
-  F77_RET_T
-  F77_FUNC (cgeevx, CGEEVX) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_INT&,
-                             F77_INT&, F77_REAL *, F77_REAL&, F77_REAL *,
-                             F77_REAL *, F77_CMPLX *, const F77_INT&,
-                             F77_REAL *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgeevx, DGEEVX) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *, F77_DBLE *,
-                             F77_DBLE *, const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&,
-                             F77_INT&, F77_DBLE *, F77_DBLE&,
-                             F77_DBLE *, F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT *,
-                             F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgeevx, SGEEVX) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *, F77_REAL *, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&,
-                             F77_INT&, F77_REAL *, F77_REAL&, F77_REAL *,
-                             F77_REAL *, F77_REAL *, const F77_INT&,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgeevx, ZGEEVX) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             F77_DBLE_CMPLX *, const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&,
-                             F77_INT&, F77_DBLE *, F77_DBLE&,
-                             F77_DBLE *, F77_DBLE *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE *,
-                             F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GELSD
-
-  F77_RET_T
-  F77_FUNC (cgelsd, CGELSD) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_REAL *, F77_REAL&,
-                             F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_REAL *,
-                             F77_INT *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dgelsd, DGELSD) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *, F77_DBLE&,
-                             F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT *,
-                             F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sgelsd, SGELSD) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *, F77_REAL&,
-                             F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT *,
-                             F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zgelsd, ZGELSD) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE *, F77_DBLE&,
-                             F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE *,
-                             F77_INT *, F77_INT&);
-
-  // GELSY
-
-  F77_RET_T
-  F77_FUNC (cgelsy, CGELSY) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_INT *,
-                             F77_REAL&, F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_REAL *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dgelsy, DGELSY) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT *,
-                             F77_DBLE&, F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sgelsy, SGELSY) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT *,
-                             F77_REAL&, F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zgelsy, ZGELSY) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT *,
-                             F77_DBLE&, F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE *,
-                             F77_INT&);
-
-  // GETRF
-
-  F77_RET_T
-  F77_FUNC (cgetrf, CGETRF) (const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_INT *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dgetrf, DGETRF) (const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_INT *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sgetrf, SGETRF) (const F77_INT&,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&,
-                             F77_INT *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zgetrf, ZGETRF) (const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_INT *, F77_INT&);
-
-  // GETRI
-
-  F77_RET_T
-  F77_FUNC (cgetri, CGETRI) (const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, const F77_INT *,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dgetri, DGETRI) (const F77_INT&, F77_DBLE *,
-                             const F77_INT&, const F77_INT *,
-                             F77_DBLE *, const F77_INT&,
-                             F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sgetri, SGETRI) (const F77_INT&, F77_REAL *,
-                             const F77_INT&, const F77_INT *,
-                             F77_REAL *, const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zgetri, ZGETRI) (const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_INT *,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_INT&);
-
-  // GETRS
-
-  F77_RET_T
-  F77_FUNC (cgetrs, CGETRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             const F77_INT *, F77_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dgetrs, DGETRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE *, const F77_INT&,
-                             const F77_INT *, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sgetrs, SGETRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_REAL *, const F77_INT&,
-                             const F77_INT *, F77_REAL *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgetrs, ZGETRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             const F77_INT *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GGBAL
-
-  F77_RET_T
-  F77_FUNC (cggbal, CGGBAL) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N,
-                             F77_CMPLX *A, const F77_INT& LDA,
-                             F77_CMPLX *B, const F77_INT& LDB,
-                             F77_INT& ILO, F77_INT& IHI,
-                             F77_REAL *LSCALE, F77_REAL *RSCALE,
-                             F77_REAL *WORK, F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dggbal, DGGBAL) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N, F77_DBLE *A,
-                             const F77_INT& LDA, F77_DBLE *B,
-                             const F77_INT& LDB, F77_INT& ILO,
-                             F77_INT& IHI, F77_DBLE *LSCALE,
-                             F77_DBLE *RSCALE, F77_DBLE *WORK,
-                             F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sggbal, SGGBAL) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N, F77_REAL *A,
-                             const F77_INT& LDA, F77_REAL *B,
-                             const F77_INT& LDB,
-                             F77_INT& ILO, F77_INT& IHI,
-                             F77_REAL *LSCALE, F77_REAL *RSCALE,
-                             F77_REAL *WORK, F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zggbal, ZGGBAL) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N, F77_DBLE_CMPLX *A,
-                             const F77_INT& LDA, F77_DBLE_CMPLX *B,
-                             const F77_INT& LDB, F77_INT& ILO,
-                             F77_INT& IHI, F77_DBLE *LSCALE,
-                             F77_DBLE *RSCALE, F77_DBLE *WORK,
-                             F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GGBAK
-
-  F77_RET_T
-  F77_FUNC (dggbak, DGGBAK) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N,
-                             const F77_INT& ILO,
-                             const F77_INT& IHI,
-                             const F77_DBLE *LSCALE, const F77_DBLE *RSCALE,
-                             F77_INT& M, F77_DBLE *V,
-                             const F77_INT& LDV, F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sggbak, SGGBAK) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N,
-                             const F77_INT& ILO,
-                             const F77_INT& IHI,
-                             const F77_REAL *LSCALE, const F77_REAL *RSCALE,
-                             F77_INT& M, F77_REAL *V,
-                             const F77_INT& LDV, F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zggbak, ZGGBAK) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N,
-                             const F77_INT& ILO,
-                             const F77_INT& IHI,
-                             const F77_DBLE *LSCALE, const F77_DBLE *RSCALE,
-                             F77_INT& M, F77_DBLE_CMPLX *V,
-                             const F77_INT& LDV, F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GGEV
-
-  F77_RET_T
-  F77_FUNC (cggev, CGGEV) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, F77_CMPLX *,
-                           const F77_INT&, F77_CMPLX *,
-                           const F77_INT&, F77_CMPLX *,
-                           F77_CMPLX *, F77_CMPLX *,
-                           const F77_INT&, F77_CMPLX *,
-                           const F77_INT&, F77_CMPLX *,
-                           const F77_INT&, F77_REAL *, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dggev, DGGEV) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&,
-                           F77_DBLE *, const F77_INT&,
-                           F77_DBLE *, const F77_INT&,
-                           F77_DBLE *, F77_DBLE *, F77_DBLE *, F77_DBLE *,
-                           const F77_INT&, F77_DBLE *,
-                           const F77_INT&, F77_DBLE *,
-                           const F77_INT&, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sggev, SGGEV) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, F77_REAL *,
-                           const F77_INT&, F77_REAL *,
-                           const F77_INT&, F77_REAL *, F77_REAL *, F77_REAL *,
-                           F77_REAL *, const F77_INT&, F77_REAL *,
-                           const F77_INT&, F77_REAL *,
-                           const F77_INT&, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zggev, ZGGEV) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&,
-                           F77_DBLE_CMPLX *, const F77_INT&,
-                           F77_DBLE_CMPLX *, const F77_INT&,
-                           F77_DBLE_CMPLX *, F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                           const F77_INT&, F77_DBLE_CMPLX *,
-                           const F77_INT&, F77_DBLE_CMPLX *,
-                           const F77_INT&, F77_DBLE *, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  // GGHRD
-
-  F77_RET_T
-  F77_FUNC (dgghrd, DGGHRD) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N,
-                             const F77_INT& ILO,
-                             const F77_INT& IHI, F77_DBLE *A,
-                             const F77_INT& LDA, F77_DBLE *B,
-                             const F77_INT& LDB, F77_DBLE *Q,
-                             const F77_INT& LDQ, F77_DBLE *Z,
-                             const F77_INT& LDZ, F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgghrd, ZGGHRD) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N,
-                             const F77_INT& ILO,
-                             const F77_INT& IHI, F77_DBLE_CMPLX *A,
-                             const F77_INT& LDA, F77_DBLE_CMPLX *B,
-                             const F77_INT& LDB, F77_DBLE_CMPLX *Q,
-                             const F77_INT& LDQ, F77_DBLE_CMPLX *Z,
-                             const F77_INT& LDZ, F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // GGSVD
-
-  F77_RET_T
-  F77_FUNC (dggsvd, DGGSVD)
-  (F77_CONST_CHAR_ARG_DECL,   // JOBU
-   F77_CONST_CHAR_ARG_DECL,   // JOBV
-   F77_CONST_CHAR_ARG_DECL,   // JOBQ
-   const F77_INT&,            // M
-   const F77_INT&,            // N
-   const F77_INT&,            // P
-   F77_INT&,                  // K
-   F77_INT&,                  // L
-   F77_DBLE *,                // A(LDA,N)
-   const F77_INT&,            // LDA
-   F77_DBLE *,                // B(LDB,N)
-   const F77_INT&,            // LDB
-   F77_DBLE *,                // ALPHA(N)
-   F77_DBLE *,                // BETA(N)
-   F77_DBLE *,                // U(LDU,M)
-   const F77_INT&,            // LDU
-   F77_DBLE *,                // V(LDV,P)
-   const F77_INT&,            // LDV
-   F77_DBLE *,                // Q(LDQ,N)
-   const F77_INT&,            // LDQ
-   F77_DBLE *,                // WORK
-   F77_INT *,                 // IWORK(N)
-   F77_INT&                   // INFO
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sggsvd, SGGSVD)
-  (F77_CONST_CHAR_ARG_DECL,   // JOBU
-   F77_CONST_CHAR_ARG_DECL,   // JOBV
-   F77_CONST_CHAR_ARG_DECL,   // JOBQ
-   const F77_INT&,            // M
-   const F77_INT&,            // N
-   const F77_INT&,            // P
-   F77_INT&,                  // K
-   F77_INT&,                  // L
-   F77_REAL *,                // A
-   const F77_INT&,            // LDA
-   F77_REAL *,                // B
-   const F77_INT&,            // LDB
-   F77_REAL *,                // ALPHA
-   F77_REAL *,                // BETA
-   F77_REAL *,                // U
-   const F77_INT&,            // LDU
-   F77_REAL *,                // V
-   const F77_INT&,            // LDV
-   F77_REAL *,                // Q
-   const F77_INT&,            // LDQ
-   F77_REAL *,                // WORK
-   F77_INT *,                 // IWORK
-   F77_INT&                   // INFO
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zggsvd, ZGGSVD)
-  (F77_CONST_CHAR_ARG_DECL,   // JOBU
-   F77_CONST_CHAR_ARG_DECL,   // JOBV
-   F77_CONST_CHAR_ARG_DECL,   // JOBQ
-   const F77_INT&,            // M
-   const F77_INT&,            // N
-   const F77_INT&,            // P
-   F77_INT&,                  // K
-   F77_INT&,                  // L
-   F77_DBLE_CMPLX *,          // A(LDA,N)
-   const F77_INT&,            // LDA
-   F77_DBLE_CMPLX *,          // B(LDB,N)
-   const F77_INT&,            // LDB
-   F77_DBLE *,                // ALPHA(N)
-   F77_DBLE *,                // BETA(N)
-   F77_DBLE_CMPLX *,          // U(LDU,M)
-   const F77_INT&,            // LDU
-   F77_DBLE_CMPLX *,          // V(LDV,P)
-   const F77_INT&,            // LDV
-   F77_DBLE_CMPLX *,          // Q(LDQ,N)
-   const F77_INT&,            // LDQ
-   F77_DBLE_CMPLX *,          // WORK
-   F77_DBLE *,                // RWORK
-   F77_INT *,                 // IWORK(N)
-   F77_INT&                   // INFO
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (cggsvd, CGGSVD)
-  (F77_CONST_CHAR_ARG_DECL,   // JOBU
-   F77_CONST_CHAR_ARG_DECL,   // JOBV
-   F77_CONST_CHAR_ARG_DECL,   // JOBQ
-   const F77_INT&,            // M
-   const F77_INT&,            // N
-   const F77_INT&,            // P
-   F77_INT&,                  // K
-   F77_INT&,                  // L
-   F77_CMPLX *,               // A
-   const F77_INT&,            // LDA
-   F77_CMPLX *,               // B
-   const F77_INT&,            // LDB
-   F77_REAL *,                // ALPHA
-   F77_REAL *,                // BETA
-   F77_CMPLX *,               // U
-   const F77_INT&,            // LDU
-   F77_CMPLX *,               // V
-   const F77_INT&,            // LDV
-   F77_CMPLX *,               // Q
-   const F77_INT&,            // LDQ
-   F77_CMPLX *,               // WORK
-   F77_REAL *,                // RWORK
-   F77_INT *,                 // IWORK
-   F77_INT&                   // INFO
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL);
-
-  // GGSVD3
-
-  F77_RET_T
-  F77_FUNC (dggsvd3, DGGSVD3)
-  (F77_CONST_CHAR_ARG_DECL,   // JOBU
-   F77_CONST_CHAR_ARG_DECL,   // JOBV
-   F77_CONST_CHAR_ARG_DECL,   // JOBQ
-   const F77_INT&,            // M
-   const F77_INT&,            // N
-   const F77_INT&,            // P
-   F77_INT&,                  // K
-   F77_INT&,                  // L
-   F77_DBLE *,                // A(LDA,N)
-   const F77_INT&,            // LDA
-   F77_DBLE *,                // B(LDB,N)
-   const F77_INT&,            // LDB
-   F77_DBLE *,                // ALPHA(N)
-   F77_DBLE *,                // BETA(N)
-   F77_DBLE *,                // U(LDU,M)
-   const F77_INT&,            // LDU
-   F77_DBLE *,                // V(LDV,P)
-   const F77_INT&,            // LDV
-   F77_DBLE *,                // Q(LDQ,N)
-   const F77_INT&,            // LDQ
-   F77_DBLE *,                // WORK
-   const F77_INT&,            // LWORK
-   F77_INT *,                 // IWORK(N)
-   F77_INT&                   // INFO
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (sggsvd3, SGGSVD3)
-  (F77_CONST_CHAR_ARG_DECL,   // JOBU
-   F77_CONST_CHAR_ARG_DECL,   // JOBV
-   F77_CONST_CHAR_ARG_DECL,   // JOBQ
-   const F77_INT&,            // M
-   const F77_INT&,            // N
-   const F77_INT&,            // P
-   F77_INT&,                  // K
-   F77_INT&,                  // L
-   F77_REAL *,                // A
-   const F77_INT&,            // LDA
-   F77_REAL *,                // B
-   const F77_INT&,            // LDB
-   F77_REAL *,                // ALPHA
-   F77_REAL *,                // BETA
-   F77_REAL *,                // U
-   const F77_INT&,            // LDU
-   F77_REAL *,                // V
-   const F77_INT&,            // LDV
-   F77_REAL *,                // Q
-   const F77_INT&,            // LDQ
-   F77_REAL *,                // WORK
-   const F77_INT&,            // LWORK
-   F77_INT *,                 // IWORK
-   F77_INT&                   // INFO
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zggsvd3, ZGGSVD3)
-  (F77_CONST_CHAR_ARG_DECL,   // JOBU
-   F77_CONST_CHAR_ARG_DECL,   // JOBV
-   F77_CONST_CHAR_ARG_DECL,   // JOBQ
-   const F77_INT&,            // M
-   const F77_INT&,            // N
-   const F77_INT&,            // P
-   F77_INT&,                  // K
-   F77_INT&,                  // L
-   F77_DBLE_CMPLX *,          // A(LDA,N)
-   const F77_INT&,            // LDA
-   F77_DBLE_CMPLX *,          // B(LDB,N)
-   const F77_INT&,            // LDB
-   F77_DBLE *,                // ALPHA(N)
-   F77_DBLE *,                // BETA(N)
-   F77_DBLE_CMPLX *,          // U(LDU,M)
-   const F77_INT&,            // LDU
-   F77_DBLE_CMPLX *,          // V(LDV,P)
-   const F77_INT&,            // LDV
-   F77_DBLE_CMPLX *,          // Q(LDQ,N)
-   const F77_INT&,            // LDQ
-   F77_DBLE_CMPLX *,          // WORK
-   const F77_INT&,            // LWORK
-   F77_DBLE *,                // RWORK
-   F77_INT *,                 // IWORK(N)
-   F77_INT&                   // INFO
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (cggsvd3, CGGSVD3)
-  (F77_CONST_CHAR_ARG_DECL,   // JOBU
-   F77_CONST_CHAR_ARG_DECL,   // JOBV
-   F77_CONST_CHAR_ARG_DECL,   // JOBQ
-   const F77_INT&,            // M
-   const F77_INT&,            // N
-   const F77_INT&,            // P
-   F77_INT&,                  // K
-   F77_INT&,                  // L
-   F77_CMPLX *,               // A
-   const F77_INT&,            // LDA
-   F77_CMPLX *,               // B
-   const F77_INT&,            // LDB
-   F77_REAL *,                // ALPHA
-   F77_REAL *,                // BETA
-   F77_CMPLX *,               // U
-   const F77_INT&,            // LDU
-   F77_CMPLX *,               // V
-   const F77_INT&,            // LDV
-   F77_CMPLX *,               // Q
-   const F77_INT&,            // LDQ
-   F77_CMPLX *,               // WORK
-   const F77_INT&,            // LWORK
-   F77_REAL *,                // RWORK
-   F77_INT *,                 // IWORK
-   F77_INT&                   // INFO
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL
-   F77_CHAR_ARG_LEN_DECL);
-
-  // GTSV
-
-  F77_RET_T
-  F77_FUNC (dgtsv, DGTSV) (const F77_INT&, const F77_INT&,
-                           F77_DBLE *, F77_DBLE *, F77_DBLE *, F77_DBLE *,
-                           const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zgtsv, ZGTSV) (const F77_INT&, const F77_INT&,
-                           F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                           F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                           const F77_INT&, F77_INT&);
-
-  // GTTRF
-
-  F77_RET_T
-  F77_FUNC (dgttrf, DGTTRF) (const F77_INT&, F77_DBLE *, F77_DBLE *,
-                             F77_DBLE *, F77_DBLE *, F77_INT *,
-                             F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zgttrf, ZGTTRF) (const F77_INT&, F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             F77_DBLE_CMPLX *, F77_DBLE_CMPLX *, F77_INT *,
-                             F77_INT&);
-
-  // GTTRS
-
-  F77_RET_T
-  F77_FUNC (dgttrs, DGTTRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE *, const F77_DBLE *,
-                             const F77_DBLE *, const F77_DBLE *,
-                             const F77_INT *, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zgttrs, ZGTTRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE_CMPLX *, const F77_DBLE_CMPLX *,
-                             const F77_DBLE_CMPLX *, const F77_DBLE_CMPLX *,
-                             const F77_INT *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // HEEV
-
-  F77_RET_T
-  F77_FUNC (cheev, CHEEV) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, F77_CMPLX *,
-                           const F77_INT&, F77_REAL *, F77_CMPLX *,
-                           const F77_INT&, F77_REAL *, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zheev, ZHEEV) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, F77_DBLE_CMPLX *,
-                           const F77_INT&, F77_DBLE *,
-                           F77_DBLE_CMPLX *, const F77_INT&, F77_DBLE *,
-                           F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  // HEGV
-
-  F77_RET_T
-  F77_FUNC (chegv, CHEGV) (const F77_INT&,
-                           F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, F77_CMPLX *,
-                           const F77_INT&, F77_CMPLX *,
-                           const F77_INT&, F77_REAL *, F77_CMPLX *,
-                           const F77_INT&, F77_REAL *, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zhegv, ZHEGV) (const F77_INT&,
-                           F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, F77_DBLE_CMPLX *,
-                           const F77_INT&, F77_DBLE_CMPLX *,
-                           const F77_INT&, F77_DBLE *, F77_DBLE_CMPLX *,
-                           const F77_INT&, F77_DBLE *, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  // HERK
-
-  F77_RET_T
-  F77_FUNC (cherk, CHERK) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_REAL&, const F77_CMPLX *,
-                           const F77_INT&, const F77_REAL&,
-                           F77_CMPLX *, const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zherk, ZHERK) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_DBLE&, const F77_DBLE_CMPLX *,
-                           const F77_INT&, const F77_DBLE&, F77_DBLE_CMPLX *,
-                           const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  // HGEQZ
-
-  F77_RET_T
-  F77_FUNC (dhgeqz, DHGEQZ) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N,
-                             const F77_INT& ILO,
-                             const F77_INT& IHI,
-                             F77_DBLE *A, const F77_INT& LDA, F77_DBLE *B,
-                             const F77_INT& LDB, F77_DBLE *ALPHAR,
-                             F77_DBLE *ALPHAI, F77_DBLE *BETA, F77_DBLE *Q,
-                             const F77_INT& LDQ, F77_DBLE *Z,
-                             const F77_INT& LDZ, F77_DBLE *WORK,
-                             const F77_INT& LWORK,
-                             F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zhgeqz, ZHGEQZ) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT& N,
-                             const F77_INT& ILO,
-                             const F77_INT& IHI,
-                             F77_DBLE_CMPLX *A, const F77_INT& LDA,
-                             F77_DBLE_CMPLX *B, const F77_INT& LDB,
-                             F77_DBLE_CMPLX *ALPHA, F77_DBLE_CMPLX *BETA,
-                             F77_DBLE_CMPLX *CQ, const F77_INT& LDQ,
-                             F77_DBLE_CMPLX *CZ, const F77_INT& LDZ,
-                             F77_DBLE_CMPLX *WORK, const F77_INT& LWORK,
-                             F77_DBLE *RWORK, F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // LAENV (liboctave/external/lapack-xtra)
-
-  F77_RET_T
-  F77_FUNC (xilaenv, XILAENV) (const F77_INT&,
-                               F77_CONST_CHAR_ARG_DECL,
-                               F77_CONST_CHAR_ARG_DECL,
-                               const F77_INT&, const F77_INT&,
-                               const F77_INT&, const F77_INT&,
-                               F77_INT&
-                               F77_CHAR_ARG_LEN_DECL
-                               F77_CHAR_ARG_LEN_DECL);
-
-  // LAG2
-
-  F77_RET_T
-  F77_FUNC (dlag2, DLAG2) (const F77_DBLE *A, const F77_INT& LDA,
-                           const F77_DBLE *B, const F77_INT& LDB,
-                           const F77_DBLE& SAFMIN, F77_DBLE& SCALE1,
-                           F77_DBLE& SCALE2, F77_DBLE& WR1, F77_DBLE& WR2,
-                           F77_DBLE& WI);
-
-  // LAMCH (liboctave/external/lapack-xtra)
-
-  F77_RET_T
-  F77_FUNC (xdlamch, XDLAMCH) (F77_CONST_CHAR_ARG_DECL,
-                               F77_DBLE& retval
-                               F77_CHAR_ARG_LEN_DECL);
-
-  // LANGE (liboctave/external/lapack-xtra)
-
-  F77_RET_T
-  F77_FUNC (xclange, XCLANGE) (F77_CONST_CHAR_ARG_DECL,
-                               const F77_INT&, const F77_INT&,
-                               const F77_CMPLX *, const F77_INT&,
-                               F77_REAL *, F77_REAL&
-                               F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (xdlange, XDLANGE) (F77_CONST_CHAR_ARG_DECL,
-                               const F77_INT&, const F77_INT&,
-                               const F77_DBLE *, const F77_INT&,
-                               F77_DBLE *, F77_DBLE&
-                               F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (xslange, XSLANGE) (F77_CONST_CHAR_ARG_DECL,
-                               const F77_INT&,
-                               const F77_INT&, const F77_REAL *,
-                               const F77_INT&, F77_REAL *, F77_REAL&
-                               F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (xzlange, XZLANGE) (F77_CONST_CHAR_ARG_DECL,
-                               const F77_INT&, const F77_INT&,
-                               const F77_DBLE_CMPLX *, const F77_INT&,
-                               F77_DBLE *, F77_DBLE&
-                               F77_CHAR_ARG_LEN_DECL);
-  // LARTG
-
-  F77_RET_T
-  F77_FUNC (clartg, CLARTG) (const F77_CMPLX *, const F77_CMPLX *,
-                             F77_REAL&, F77_CMPLX *, F77_CMPLX *);
-
-  F77_RET_T
-  F77_FUNC (dlartg, DLARTG) (const F77_DBLE&, const F77_DBLE&, F77_DBLE&,
-                             F77_DBLE&, F77_DBLE&);
-
-  F77_RET_T
-  F77_FUNC (slartg, SLARTG) (const F77_REAL&, const F77_REAL&, F77_REAL&,
-                             F77_REAL&, F77_REAL&);
-
-  F77_RET_T
-  F77_FUNC (zlartg, ZLARTG) (const F77_DBLE_CMPLX *, const F77_DBLE_CMPLX *,
-                             F77_DBLE&,
-                             F77_DBLE_CMPLX *, F77_DBLE_CMPLX *);
-
-  // ORGHR
-
-  F77_RET_T
-  F77_FUNC (dorghr, DORGHR) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sorghr, SORGHR) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *, F77_REAL *,
-                             const F77_INT&, F77_INT&);
-
-  // ORGQR
-
-  F77_RET_T
-  F77_FUNC (dorgqr, DORGQR) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *, F77_DBLE *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sorgqr, SORGQR) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *, F77_REAL *,
-                             const F77_INT&, F77_INT&);
-
-  // PBCON
-
-  F77_RET_T
-  F77_FUNC (dpbcon, DPBCON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             const F77_DBLE&, F77_DBLE&, F77_DBLE *,
-                             F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zpbcon, ZPBCON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&, const F77_DBLE&,
-                             F77_DBLE&, F77_DBLE_CMPLX *, F77_DBLE *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // PBTRF
-
-  F77_RET_T
-  F77_FUNC (dpbtrf, DPBTRF) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zpbtrf, ZPBTRF) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // PBTRS
-
-  F77_RET_T
-  F77_FUNC (dpbtrs, DPBTRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zpbtrs, ZPBTRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // POCON
-
-  F77_RET_T
-  F77_FUNC (cpocon, CPOCON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, const F77_REAL&, F77_REAL&,
-                             F77_CMPLX *, F77_REAL *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dpocon, DPOCON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, const F77_DBLE&,
-                             F77_DBLE&, F77_DBLE *, F77_INT *,
-                             F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (spocon, SPOCON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, const F77_REAL&,
-                             F77_REAL&, F77_REAL *, F77_INT *,
-                             F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zpocon, ZPOCON) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_DBLE&,
-                             F77_DBLE&, F77_DBLE_CMPLX *, F77_DBLE *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // POTRF
-
-  F77_RET_T
-  F77_FUNC (cpotrf, CPOTRF) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dpotrf, DPOTRF) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (spotrf, SPOTRF) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zpotrf, ZPOTRF) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // POTRI
-
-  F77_RET_T
-  F77_FUNC (cpotri, CPOTRI) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dpotri, DPOTRI) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (spotri, SPOTRI) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zpotri, ZPOTRI) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // POTRS
-
-  F77_RET_T
-  F77_FUNC (spotrs, SPOTRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_REAL *, const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (cpotrs, CPOTRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&,
-                             const F77_INT&, const F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dpotrs, DPOTRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE *, const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zpotrs, ZPOTRS) (F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // PTSV
-
-  F77_RET_T
-  F77_FUNC (dptsv, DPTSV) (const F77_INT&, const F77_INT&,
-                           F77_DBLE *, F77_DBLE *, F77_DBLE *, const F77_INT&,
-                           F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zptsv, ZPTSV) (const F77_INT&, const F77_INT&,
-                           F77_DBLE *, F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                           const F77_INT&, F77_INT&);
-
-  // RSF2CSF (liboctave/external/lapack-xtra)
-
-  F77_RET_T
-  F77_FUNC (zrsf2csf, ZRSF2CSF) (const F77_INT&, F77_DBLE_CMPLX *,
-                                 F77_DBLE_CMPLX *, F77_DBLE *, F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (crsf2csf, CRSF2CSF) (const F77_INT&, F77_CMPLX *,
-                                 F77_CMPLX *, F77_REAL *, F77_REAL *);
-
-  // SYEV
-
-  F77_RET_T
-  F77_FUNC (dsyev, DSYEV) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, F77_DBLE *,
-                           const F77_INT&, F77_DBLE *, F77_DBLE *,
-                           const F77_INT&, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (ssyev, SSYEV) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, F77_REAL *,
-                           const F77_INT&, F77_REAL *, F77_REAL *,
-                           const F77_INT&, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  // SYGV
-
-  F77_RET_T
-  F77_FUNC (dsygv, DSYGV) (const F77_INT&,
-                           F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, F77_DBLE *,
-                           const F77_INT&, F77_DBLE *,
-                           const F77_INT&, F77_DBLE *, F77_DBLE *,
-                           const F77_INT&, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (ssygv, SSYGV) (const F77_INT&,
-                           F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, F77_REAL *,
-                           const F77_INT&, F77_REAL *,
-                           const F77_INT&, F77_REAL *, F77_REAL *,
-                           const F77_INT&, F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  // SYRK
-
-  F77_RET_T
-  F77_FUNC (csyrk, CSYRK) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_CMPLX&, const F77_CMPLX *,
-                           const F77_INT&, const F77_CMPLX&,
-                           F77_CMPLX *, const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dsyrk, DSYRK) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_DBLE&, const F77_DBLE *, const F77_INT&,
-                           const F77_DBLE&, F77_DBLE *, const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (ssyrk, SSYRK) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_REAL&, const F77_REAL *, const F77_INT&,
-                           const F77_REAL&, F77_REAL *, const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (zsyrk, ZSYRK) (F77_CONST_CHAR_ARG_DECL,
-                           F77_CONST_CHAR_ARG_DECL,
-                           const F77_INT&, const F77_INT&,
-                           const F77_DBLE_CMPLX&, const F77_DBLE_CMPLX *,
-                           const F77_INT&, const F77_DBLE_CMPLX&,
-                           F77_DBLE_CMPLX *, const F77_INT&
-                           F77_CHAR_ARG_LEN_DECL
-                           F77_CHAR_ARG_LEN_DECL);
-
-  // TGEVC
-
-  // Documentation for DTGEVC incorrectly states that VR, VL are
-  // complex*16; they are declared in DTGEVC as double precision
-  // (probably a cut and paste problem fro ZTGEVC).
-  F77_RET_T
-  F77_FUNC (dtgevc, DTGEVC) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_INT *SELECT,
-                             const F77_INT& N, F77_DBLE *A,
-                             const F77_INT& LDA, F77_DBLE *B,
-                             const F77_INT& LDB, F77_DBLE *VL,
-                             const F77_INT& LDVL, F77_DBLE *VR,
-                             const F77_INT& LDVR,
-                             const F77_INT& MM, F77_INT& M,
-                             F77_DBLE *WORK, F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (ztgevc, ZTGEVC) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_INT *SELECT,
-                             const F77_INT& N, const F77_DBLE_CMPLX *A,
-                             const F77_INT& LDA, const F77_DBLE_CMPLX *B,
-                             const F77_INT& LDB, F77_DBLE_CMPLX *xVL,
-                             const F77_INT& LDVL, F77_DBLE_CMPLX *xVR,
-                             const F77_INT& LDVR,
-                             const F77_INT& MM, F77_INT& M,
-                             F77_DBLE_CMPLX *CWORK, F77_DBLE *RWORK,
-                             F77_INT& INFO
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // TGSEN
-
-  F77_RET_T
-  F77_FUNC (dtgsen, DTGSEN) (const F77_INT& IJOB,
-                             const F77_LOGICAL& WANTQ,
-                             const F77_LOGICAL& WANTZ,
-                             const F77_LOGICAL *SELECT,
-                             const F77_INT& N,
-                             F77_DBLE *A,
-                             const F77_INT& LDA,
-                             F77_DBLE *B,
-                             const F77_INT& LDB,
-                             F77_DBLE *ALPHAR,
-                             F77_DBLE *ALPHAI,
-                             F77_DBLE *BETA,
-                             F77_DBLE *Q,
-                             const F77_INT& LDQ,
-                             F77_DBLE *Z,
-                             const F77_INT& LDZ,
-                             F77_INT& M,
-                             F77_DBLE& PL,
-                             F77_DBLE& PR,
-                             F77_DBLE *DIF,
-                             F77_DBLE *WORK,
-                             const F77_INT& LWORK,
-                             F77_INT *IWORK,
-                             const F77_INT& LIWORK,
-                             F77_INT& INFO);
-
-  F77_RET_T
-  F77_FUNC (ztgsen, ZTGSEN) (const F77_INT& IJOB,
-                             const F77_LOGICAL& WANTQ,
-                             const F77_LOGICAL& WANTZ,
-                             const F77_LOGICAL *SELECT,
-                             const F77_INT& N,
-                             F77_DBLE_CMPLX *A,
-                             const F77_INT& LDA,
-                             F77_DBLE_CMPLX *B,
-                             const F77_INT& LDB,
-                             F77_DBLE_CMPLX *ALPHA,
-                             F77_DBLE_CMPLX *BETA,
-                             F77_DBLE_CMPLX *Q,
-                             const F77_INT& LDQ,
-                             F77_DBLE_CMPLX *Z,
-                             const F77_INT& LDZ,
-                             F77_INT& M,
-                             F77_DBLE& PL,
-                             F77_DBLE& PR,
-                             F77_DBLE *DIF,
-                             F77_DBLE_CMPLX *WORK,
-                             const F77_INT& LWORK,
-                             F77_INT *IWORK,
-                             const F77_INT& LIWORK,
-                             F77_INT& INFO);
-
-  // TRCON
-
-  F77_RET_T
-  F77_FUNC (ctrcon, CTRCON) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_CMPLX *,
-                             const F77_INT&, F77_REAL&, F77_CMPLX *,
-                             F77_REAL *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dtrcon, DTRCON) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_DBLE *,
-                             const F77_INT&, F77_DBLE&,
-                             F77_DBLE *, F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-  F77_RET_T
-  F77_FUNC (strcon, STRCON) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_REAL *,
-                             const F77_INT&, F77_REAL&,
-                             F77_REAL *, F77_INT *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (ztrcon, ZTRCON) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE&,
-                             F77_DBLE_CMPLX *, F77_DBLE *, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // TRSEN
-
-  F77_RET_T
-  F77_FUNC (ctrsen, CTRSEN) (F77_CONST_CHAR_ARG_DECL, F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *, F77_INT&,
-                             F77_REAL&, F77_REAL&, F77_CMPLX *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dtrsen, DTRSEN) (F77_CONST_CHAR_ARG_DECL, F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT *, const F77_INT&,
-                             F77_DBLE *, const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *, F77_DBLE *,
-                             F77_INT&, F77_DBLE&, F77_DBLE&, F77_DBLE *,
-                             const F77_INT&, F77_INT *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (strsen, STRSEN) (F77_CONST_CHAR_ARG_DECL, F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT *, const F77_INT&,
-                             F77_REAL *, const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *, F77_REAL *,
-                             F77_INT&, F77_REAL&, F77_REAL&, F77_REAL *,
-                             const F77_INT&, F77_INT *,
-                             const F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (ztrsen, ZTRSEN) (F77_CONST_CHAR_ARG_DECL, F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, F77_INT&, F77_DBLE&,
-                             F77_DBLE&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&);
-
-  // TRSYL
-
-  F77_RET_T
-  F77_FUNC (ctrsyl, CTRSYL) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_CMPLX *,
-                             const F77_INT&, const F77_CMPLX *,
-                             const F77_INT&, const F77_CMPLX *,
-                             const F77_INT&, F77_REAL&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dtrsyl, DTRSYL) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_DBLE *,
-                             const F77_INT&, const F77_DBLE *,
-                             const F77_INT&, const F77_DBLE *,
-                             const F77_INT&, F77_DBLE&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (strsyl, STRSYL) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_REAL *,
-                             const F77_INT&, const F77_REAL *,
-                             const F77_INT&, const F77_REAL *,
-                             const F77_INT&, F77_REAL&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (ztrsyl, ZTRSYL) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, const F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // TRTRI
-
-  F77_RET_T
-  F77_FUNC (ctrtri, CTRTRI) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dtrtri, DTRTRI) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (strtri, STRTRI) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_REAL *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (ztrtri, ZTRTRI) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // TRTRS
-
-  F77_RET_T
-  F77_FUNC (ctrtrs, CTRTRS) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (dtrtrs, DTRTRS) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE *, const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (strtrs, STRTRS) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&,
-                             const F77_INT&, const F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  F77_RET_T
-  F77_FUNC (ztrtrs, ZTRTRS) (F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             F77_CONST_CHAR_ARG_DECL,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE_CMPLX *, const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL
-                             F77_CHAR_ARG_LEN_DECL);
-
-  // UNGHR
-
-  F77_RET_T
-  F77_FUNC (cunghr, CUNGHR) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zunghr, ZUNGHR) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&);
-  // UNGQR
-
-  F77_RET_T
-  F77_FUNC (cungqr, CUNGQR) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zungqr, ZUNGQR) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_INT&);
-}
+#include "lapack-proto.h"
 
 #endif
--- a/liboctave/numeric/lo-mappers.h
+++ b/liboctave/numeric/lo-mappers.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 1996-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,443 +26,8 @@
 #if ! defined (octave_lo_mappers_h)
 #define octave_lo_mappers_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-mappers.h" is deprecated, use "mappers.h" instead'
 
-#include <cmath>
-
-#include <limits>
-
-#include "lo-ieee.h"
-#include "oct-cmplx.h"
-#include "oct-inttypes-fwd.h"
-
-OCTAVE_BEGIN_NAMESPACE(octave)
-
-OCTAVE_BEGIN_NAMESPACE(math)
-
-extern OCTAVE_API bool isna (double x);
-extern OCTAVE_API bool isna (float x);
-extern OCTAVE_API bool isna (const Complex& x);
-extern OCTAVE_API bool isna (const FloatComplex& x);
-
-extern OCTAVE_API bool is_NaN_or_NA (const Complex& x);
-extern OCTAVE_API bool is_NaN_or_NA (const FloatComplex& x);
-
-inline double copysign (double x, double y) { return std::copysign (x, y); }
-inline float copysign (float x, float y) { return std::copysignf (x, y); }
-
-inline double signbit (double x) { return std::signbit (x); }
-inline float signbit (float x) { return std::signbit (x); }
-
-// Test for negative sign.
-extern OCTAVE_API bool negative_sign (double x);
-extern OCTAVE_API bool negative_sign (float x);
-
-// Test for positive sign.
-inline bool positive_sign (double x) { return ! negative_sign (x); }
-inline bool positive_sign (float x) { return ! negative_sign (x); }
-
-extern OCTAVE_API Complex acos (const Complex& x);
-extern OCTAVE_API FloatComplex acos (const FloatComplex& x);
-
-extern OCTAVE_API Complex asin (const Complex& x);
-extern OCTAVE_API FloatComplex asin (const FloatComplex& x);
-
-inline Complex atan (const Complex& x) { return std::atan (x); }
-inline FloatComplex atan (const FloatComplex& x) { return std::atan (x); }
-
-// The C++ standard would normally return a std::complex value for conj
-// even when the input is fully real.  Octave overrides this.
-inline double conj (double x) { return x; }
-inline float conj (float x) { return x; }
-
-template <typename T>
-std::complex<T>
-conj (const std::complex<T>& x)
-{
-  return std::conj (x);
-}
-
-inline double log2 (double x) { return std::log2 (x); }
-inline float log2 (float x) { return std::log2f (x); }
-
-extern OCTAVE_API Complex log2 (const Complex& x);
-extern OCTAVE_API FloatComplex log2 (const FloatComplex& x);
-
-extern OCTAVE_API double log2 (double x, int& exp);
-extern OCTAVE_API float log2 (float x, int& exp);
-
-extern OCTAVE_API Complex log2 (const Complex& x, int& exp);
-extern OCTAVE_API FloatComplex log2 (const FloatComplex& x, int& exp);
-
-inline double exp2 (double x) { return std::exp2 (x); }
-inline float exp2 (float x) { return std::exp2f (x); }
-
-template <typename T>
-std::complex<T>
-ceil (const std::complex<T>& x)
-{
-  return std::complex<T> (std::ceil (std::real (x)),
-                          std::ceil (std::imag (x)));
-}
-
-template <typename T>
-std::complex<T>
-trunc (const std::complex<T>& x)
-{
-  return std::complex<T> (std::trunc (std::real (x)),
-                          std::trunc (std::imag (x)));
-}
-
-// Provide alias for trunc under the more familiar name of fix.
-inline double fix (double x) { return std::trunc (x); }
-inline float fix (float x) { return std::trunc (x); }
-
-template <typename T>
-std::complex<T>
-fix (const std::complex<T>& x)
-{
-  return trunc (x);
-}
-
-template <typename T>
-std::complex<T>
-floor (const std::complex<T>& x)
-{
-  return std::complex<T> (std::floor (std::real (x)),
-                          std::floor (std::imag (x)));
-}
-
-inline double round (double x) { return std::round (x); }
-inline float round (float x) { return std::roundf (x); }
-
-template <typename T>
-std::complex<T>
-round (const std::complex<T>& x)
-{
-  return std::complex<T> (round (std::real (x)), round (std::imag (x)));
-}
-
-inline double
-roundb (double x)
-{
-  double t = round (x);
-
-  if (fabs (x - t) == 0.5)
-    t = 2 * std::trunc (0.5 * t);
-
-  return t;
-}
-
-inline float
-roundb (float x)
-{
-  float t = round (x);
-
-  if (fabsf (x - t) == 0.5f)
-    t = 2 * std::trunc (0.5f * t);
-
-  return t;
-}
-
-template <typename T>
-std::complex<T>
-roundb (const std::complex<T>& x)
-{
-  return std::complex<T> (roundb (std::real (x)), roundb (std::imag (x)));
-}
-
-extern OCTAVE_API double frexp (double x, int *expptr);
-extern OCTAVE_API float frexp (float x, int *expptr);
-
-inline bool isnan (bool) { return false; }
-inline bool isnan (char) { return false; }
-
-inline bool isnan (double x) { return std::isnan (x); }
-inline bool isnan (float x) { return std::isnan (x); }
-
-// FIXME: Do we need the isnan overload for complex?
-template <typename T>
-bool
-isnan (const std::complex<T>& x)
-{
-  return (isnan (std::real (x)) || isnan (std::imag (x)));
-}
-
-inline bool isfinite (double x) { return std::isfinite (x); }
-inline bool isfinite (float x) { return std::isfinite (x); }
-
-// FIXME: Do we need isfinite overload for complex?
-template <typename T>
-bool
-isfinite (const std::complex<T>& x)
-{
-  return (isfinite (std::real (x)) && isfinite (std::imag (x)));
-}
-
-inline bool isinf (double x) { return std::isinf (x); }
-inline bool isinf (float x) { return std::isinf (x); }
-
-template <typename T>
-bool
-isinf (const octave_int<T>&)
-{
-  return false;
-}
-
-// FIXME: Do we need isinf overload for complex?
-template <typename T>
-bool
-isinf (const std::complex<T>& x)
-{
-  return (isinf (std::real (x)) || isinf (std::imag (x)));
-}
-
-// Some useful tests, that are commonly repeated.
-// Test for a finite integer.
-
-// FIXME: Benchmark whether trunc might be faster than round here.
-inline bool isinteger (double x) { return isfinite (x) && x == round (x); }
-inline bool isinteger (float x) { return isfinite (x) && x == round (x); }
-
-inline double
-signum (double x)
-{
-  double tmp = 0.0;
-
-  if (x < 0.0)
-    tmp = -1.0;
-  else if (x > 0.0)
-    tmp = 1.0;
-
-  return isnan (x) ? numeric_limits<double>::NaN () : tmp;
-}
-
-inline float
-signum (float x)
-{
-  float tmp = 0.0f;
-
-  if (x < 0.0f)
-    tmp = -1.0f;
-  else if (x > 0.0f)
-    tmp = 1.0f;
-
-  return isnan (x) ? numeric_limits<float>::NaN () : tmp;
-}
-
-template <typename T>
-std::complex<T>
-signum (const std::complex<T>& x)
-{
-  T tmp = abs (x);
-
-  return tmp == 0 ? 0.0 : x / tmp;
-}
-
-// Convert X to the nearest integer value.  Should not pass NaN to
-// this function.
-
-// For integer types?  Hmm.  Need to be sure T is an integer type...
-template <typename T>
-T
-x_nint (T x)
-{
-  return x;
-}
-
-template <>
-inline double x_nint (double x)
-{
-  return (isfinite (x) ? std::floor (x + 0.5) : x);
-}
-
-template <>
-inline float x_nint (float x)
-{
-  return (isfinite (x) ? std::floor (x + 0.5f) : x);
-}
-
-extern OCTAVE_API octave_idx_type nint_big (double x);
-extern OCTAVE_API octave_idx_type nint_big (float x);
-
-extern OCTAVE_API int nint (double x);
-extern OCTAVE_API int nint (float x);
-
-template <typename T>
-T
-mod (T x, T y)
-{
-  T retval;
-
-  if (y == 0)
-    retval = x;
-  else
-    {
-      T q = x / y;
-
-      if (x_nint (y) != y
-          && (std::abs ((q - x_nint (q)) / x_nint (q))
-              < std::numeric_limits<T>::epsilon ()))
-        retval = 0;
-      else
-        {
-          T n = std::floor (q);
-
-          // Prevent use of extra precision.
-          T tmp = y * n;
-
-          retval = x - tmp;
-        }
-    }
-
-  if (x != y && y != 0)
-    retval = copysign (retval, y);
-
-  return retval;
-}
-
-template <typename T>
-T
-rem (T x, T y)
-{
-  T retval;
-
-  if (y == 0)
-    retval = numeric_limits<T>::NaN ();
-  else
-    {
-      T q = x / y;
-
-      if (x_nint (y) != y
-          && (std::abs ((q - x_nint (q)) / x_nint (q))
-              < std::numeric_limits<T>::epsilon ()))
-        retval = 0;
-      else
-        {
-          T n = std::trunc (q);
-
-          // Prevent use of extra precision.
-          T tmp = y * n;
-
-          retval = x - tmp;
-        }
-    }
-
-  if (x != y && y != 0)
-    retval = copysign (retval, x);
-
-  return retval;
-}
-
-// Generic min, max definitions
-template <typename T>
-T
-min (T x, T y)
-{
-  return x <= y ? x : y;
-}
-
-template <typename T>
-T
-max (T x, T y)
-{
-  return x >= y ? x : y;
-}
-
-// This form is favorable.  GCC will translate (x <= y ? x : y) without a
-// jump, hence the only conditional jump involved will be the first
-// (isnan), infrequent and hence friendly to branch prediction.
-
-inline double
-min (double x, double y)
-{
-  return isnan (y) ? x : (x <= y ? x : y);
-}
-
-inline double
-max (double x, double y)
-{
-  return isnan (y) ? x : (x >= y ? x : y);
-}
-
-inline float
-min (float x, float y)
-{
-  return isnan (y) ? x : (x <= y ? x : y);
-}
-
-inline float
-max (float x, float y)
-{
-  return isnan (y) ? x : (x >= y ? x : y);
-}
-
-inline std::complex<double>
-min (const std::complex<double>& x, const std::complex<double>& y)
-{
-  return abs (x) <= abs (y) ? x : (isnan (x) ? x : y);
-}
-
-inline std::complex<float>
-min (const std::complex<float>& x, const std::complex<float>& y)
-{
-  return abs (x) <= abs (y) ? x : (isnan (x) ? x : y);
-}
-
-inline std::complex<double>
-max (const std::complex<double>& x, const std::complex<double>& y)
-{
-  return abs (x) >= abs (y) ? x : (isnan (x) ? x : y);
-}
-
-inline std::complex<float>
-max (const std::complex<float>& x, const std::complex<float>& y)
-{
-  return abs (x) >= abs (y) ? x : (isnan (x) ? x : y);
-}
-
-template <typename T>
-inline octave_int<T>
-min (const octave_int<T>& x, const octave_int<T>& y)
-{
-  return xmin (x, y);
-}
-
-template <typename T>
-inline octave_int<T>
-max (const octave_int<T>& x, const octave_int<T>& y)
-{
-  return xmax (x, y);
-}
-
-// These map reals to Complex.
-
-extern OCTAVE_API Complex rc_acos (double);
-extern OCTAVE_API FloatComplex rc_acos (float);
-
-extern OCTAVE_API Complex rc_acosh (double);
-extern OCTAVE_API FloatComplex rc_acosh (float);
-
-extern OCTAVE_API Complex rc_asin (double);
-extern OCTAVE_API FloatComplex rc_asin (float);
-
-extern OCTAVE_API Complex rc_atanh (double);
-extern OCTAVE_API FloatComplex rc_atanh (float);
-
-extern OCTAVE_API Complex rc_log (double);
-extern OCTAVE_API FloatComplex rc_log (float);
-
-extern OCTAVE_API Complex rc_log2 (double);
-extern OCTAVE_API FloatComplex rc_log2 (float);
-
-extern OCTAVE_API Complex rc_log10 (double);
-extern OCTAVE_API FloatComplex rc_log10 (float);
-
-extern OCTAVE_API Complex rc_sqrt (double);
-extern OCTAVE_API FloatComplex rc_sqrt (float);
-
-OCTAVE_END_NAMESPACE(math)
-OCTAVE_END_NAMESPACE(octave)
+#include "mappers.h"
 
 #endif
--- a/liboctave/numeric/lo-qrupdate-proto.h
+++ b/liboctave/numeric/lo-qrupdate-proto.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2016-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,359 +26,8 @@
 #if ! defined (octave_lo_qrupdate_proto_h)
 #define octave_lo_qrupdate_proto_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-qrupdate-proto.h" is deprecated, use "qrupdate-proto.h" instead'
 
-#include "f77-fcn.h"
-
-extern "C"
-{
-
-#if defined (HAVE_QRUPDATE)
-
-  // CH1DN
-
-  F77_RET_T
-  F77_FUNC (cch1dn, CCH1DN) (const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             F77_REAL *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dch1dn, DCH1DN) (const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             F77_DBLE *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (sch1dn, SCH1DN) (const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             F77_REAL *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zch1dn, ZCH1DN) (const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             F77_DBLE *, F77_INT&);
-
-  // CH1UP
-
-  F77_RET_T
-  F77_FUNC (cch1up, CCH1UP) (const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (dch1up, DCH1UP) (const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *, F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (sch1up, SCH1UP) (const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zch1up, ZCH1UP) (const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *, F77_DBLE *);
-
-  // CHDEX
-
-  F77_RET_T
-  F77_FUNC (dchdex, DCHDEX) (const F77_INT&, F77_DBLE *,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (schdex, SCHDEX) (const F77_INT&, F77_REAL *,
-                             const F77_INT&, const F77_INT&,
-                             F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (cchdex, CCHDEX) (const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zchdex, ZCHDEX) (const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *);
-
-  // CHINX
-
-  F77_RET_T
-  F77_FUNC (cchinx, CCHINX) (const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, F77_REAL *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dchinx, DCHINX) (const F77_INT&, F77_DBLE *,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *, F77_DBLE *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (schinx, SCHINX) (const F77_INT&, F77_REAL *,
-                             const F77_INT&, const F77_INT&,
-                             F77_REAL *, F77_REAL *, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (zchinx, ZCHINX) (const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, F77_DBLE *, F77_INT&);
-
-  // CHSHX
-
-  F77_RET_T
-  F77_FUNC (cchshx, CCHSHX) (const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (dchshx, DCHSHX) (const F77_INT&, F77_DBLE *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (schshx, SCHSHX) (const F77_INT&, F77_REAL *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zchshx, ZCHSHX) (const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *, F77_DBLE *);
-
-  // QR1UP
-
-  F77_RET_T
-  F77_FUNC (cqr1up, CQR1UP) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             F77_CMPLX *, F77_CMPLX *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (dqr1up, DQR1UP) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *, F77_DBLE *, F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (sqr1up, SQR1UP) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *, F77_REAL *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zqr1up, ZQR1UP) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             F77_DBLE_CMPLX *, F77_DBLE_CMPLX *, F77_DBLE *);
-
-  // QRDEC
-
-  F77_RET_T
-  F77_FUNC (cqrdec, CQRDEC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (dqrdec, DQRDEC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (sqrdec, SQRDEC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, const F77_INT&,
-                             F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zqrdec, ZQRDEC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE *);
-
-  // QRDER
-
-  F77_RET_T
-  F77_FUNC (cqrder, CQRDER) (const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (dqrder, DQRDER) (const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             const F77_INT&, F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (sqrder, SQRDER) (const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             const F77_INT&, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zqrder, ZQRDER) (const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *, F77_DBLE *);
-
-  // QRINC
-
-  F77_RET_T
-  F77_FUNC (cqrinc, CQRINC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_CMPLX *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (dqrinc, DQRINC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE *, F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (sqrinc, SQRINC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_REAL *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zqrinc, ZQRINC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_DBLE_CMPLX *, F77_DBLE *);
-
-  // QRINR
-
-  F77_RET_T
-  F77_FUNC (cqrinr, CQRINR) (const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             const F77_INT&, const F77_CMPLX *,
-                             F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (dqrinr, DQRINR) (const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             const F77_INT&, const F77_DBLE *,
-                             F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (sqrinr, SQRINR) (const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             const F77_INT&, const F77_REAL *,
-                             F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zqrinr, ZQRINR) (const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             const F77_INT&, const F77_DBLE_CMPLX *,
-                             F77_DBLE *);
-
-  // QRSHC
-
-  F77_RET_T
-  F77_FUNC (cqrshc, CQRSHC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, F77_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&,
-                             F77_CMPLX *, F77_REAL *);
-  F77_RET_T
-  F77_FUNC (dqrshc, DQRSHC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, F77_DBLE *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&,
-                             F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (sqrshc, SQRSHC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, F77_REAL *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&,
-                             F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zqrshc, ZQRSHC) (const F77_INT&, const F77_INT&,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, F77_DBLE_CMPLX *,
-                             const F77_INT&, const F77_INT&,
-                             const F77_INT&,
-                             F77_DBLE_CMPLX *, F77_DBLE *);
+#include "qrupdate-proto.h"
 
 #endif
-
-#if defined (HAVE_QRUPDATE_LUU)
-
-  // LU1UP
-
-  F77_RET_T
-  F77_FUNC (clu1up, CLU1UP) (const F77_INT&, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, const F77_INT&,
-                             F77_CMPLX *, F77_CMPLX *);
-
-  F77_RET_T
-  F77_FUNC (dlu1up, DLU1UP) (const F77_INT&, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, const F77_INT&,
-                             F77_DBLE *, F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (slu1up, SLU1UP) (const F77_INT&, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, const F77_INT&,
-                             F77_REAL *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zlu1up, ZLU1UP) (const F77_INT&, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, const F77_INT&,
-                             F77_DBLE_CMPLX *, F77_DBLE_CMPLX *);
-
-  // LUP1UP
-
-  F77_RET_T
-  F77_FUNC (clup1up, CLUP1UP) (const F77_INT&, const F77_INT&,
-                               F77_CMPLX *, const F77_INT&,
-                               F77_CMPLX *, const F77_INT&,
-                               F77_INT *, const F77_CMPLX *,
-                               const F77_CMPLX *, F77_CMPLX *);
-  F77_RET_T
-  F77_FUNC (dlup1up, DLUP1UP) (const F77_INT&, const F77_INT&,
-                               F77_DBLE *, const F77_INT&,
-                               F77_DBLE *, const F77_INT&,
-                               F77_INT *, const F77_DBLE *,
-                               const F77_DBLE *, F77_DBLE *);
-
-  F77_RET_T
-  F77_FUNC (slup1up, SLUP1UP) (const F77_INT&, const F77_INT&,
-                               F77_REAL *, const F77_INT&,
-                               F77_REAL *, const F77_INT&,
-                               F77_INT *, const F77_REAL *,
-                               const F77_REAL *, F77_REAL *);
-
-  F77_RET_T
-  F77_FUNC (zlup1up, ZLUP1UP) (const F77_INT&, const F77_INT&,
-                               F77_DBLE_CMPLX *, const F77_INT&,
-                               F77_DBLE_CMPLX *, const F77_INT&,
-                               F77_INT *, const F77_DBLE_CMPLX *,
-                               const F77_DBLE_CMPLX *, F77_DBLE_CMPLX *);
-
-#endif
-
-}
-
-#endif
--- a/liboctave/numeric/lo-ranlib-proto.h
+++ b/liboctave/numeric/lo-ranlib-proto.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2016-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,53 +26,8 @@
 #if ! defined (octave_lo_ranlib_proto_h)
 #define octave_lo_ranlib_proto_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-ranlib-proto.h" is deprecated, use "ranlib-proto.h" instead'
 
-#include "f77-fcn.h"
-
-extern "C"
-{
-  F77_RET_T
-  F77_FUNC (dgenexp, DGENEXP) (const F77_DBLE&, F77_DBLE&);
-
-  F77_RET_T
-  F77_FUNC (dgengam, DGENGAM) (const F77_DBLE&, const F77_DBLE&, F77_DBLE&);
-
-  F77_RET_T
-  F77_FUNC (dgennor, DGENNOR) (const F77_DBLE&, const F77_DBLE&, F77_DBLE&);
-
-  F77_RET_T
-  F77_FUNC (dgenunf, DGENUNF) (const F77_DBLE&, const F77_DBLE&, F77_DBLE&);
-
-  F77_RET_T
-  F77_FUNC (dignpoi, DIGNPOI) (const F77_DBLE&, F77_DBLE&);
-
-  F77_RET_T
-  F77_FUNC (fgenexp, FGENEXP) (const F77_REAL&, F77_REAL&);
-
-  F77_RET_T
-  F77_FUNC (fgengam, FGENGAM) (const F77_REAL&, const F77_REAL&, F77_REAL&);
-
-  F77_RET_T
-  F77_FUNC (fgennor, FGENNOR) (const F77_REAL&, const F77_REAL&, F77_REAL&);
-
-  F77_RET_T
-  F77_FUNC (fgenunf, FGENUNF) (const F77_REAL&, const F77_REAL&, F77_REAL&);
-
-  F77_RET_T
-  F77_FUNC (fignpoi, FIGNPOI) (const F77_REAL&, F77_REAL&);
-
-  F77_RET_T
-  F77_FUNC (getsd, GETSD) (F77_INT4&, F77_INT4&);
-
-  F77_RET_T
-  F77_FUNC (setall, SETALL) (const F77_INT4&, const F77_INT4&);
-
-  F77_RET_T
-  F77_FUNC (setcgn, SETCGN) (const F77_INT4&);
-
-  F77_RET_T
-  F77_FUNC (setsd, SETSD) (const F77_INT4&, const F77_INT4&);
-}
+#include "ranlib-proto.h"
 
 #endif
--- a/liboctave/numeric/lo-slatec-proto.h
+++ b/liboctave/numeric/lo-slatec-proto.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2016-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,37 +26,8 @@
 #if ! defined (octave_lo_slatec_proto_h)
 #define octave_lo_slatec_proto_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-slatec-proto.h" is deprecated, use "slatec-proto.h" instead'
 
-#include "f77-fcn.h"
-
-extern "C"
-{
-  // PCHIM
-
-  F77_RET_T
-  F77_FUNC (dpchim, DPCHIM) (const F77_INT& n, const F77_DBLE *x,
-                             const F77_DBLE *f, F77_DBLE *d,
-                             const F77_INT& incfd,
-                             F77_INT& ierr);
-
-  F77_RET_T
-  F77_FUNC (pchim, PCHIM) (const F77_INT& n, const F77_REAL *x,
-                           const F77_REAL *f, F77_REAL *d,
-                           const F77_INT& incfd,
-                           F77_INT& ierr);
-
-  // PSIFN
-
-  F77_RET_T
-  F77_FUNC (psifn, PSIFN) (const F77_REAL&, const F77_INT&,
-                           const F77_INT&, const F77_INT&,
-                           F77_REAL&, F77_INT&, F77_INT&);
-
-  F77_RET_T
-  F77_FUNC (dpsifn, DPSIFN) (const F77_DBLE&, const F77_INT&,
-                             const F77_INT&, const F77_INT&,
-                             F77_DBLE&, F77_INT&, F77_INT&);
-}
+#include "slatec-proto.h"
 
 #endif
--- a/liboctave/numeric/lo-specfun.h
+++ b/liboctave/numeric/lo-specfun.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 1996-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,335 +26,8 @@
 #if ! defined (octave_lo_specfun_h)
 #define octave_lo_specfun_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-specfun.h" is deprecated, use "oct-specfun.h" instead'
 
-#include "mx-fwd.h"
-
-#include "Array-oct.h"
-#include "oct-cmplx.h"
-
-OCTAVE_BEGIN_NAMESPACE(octave)
-
-OCTAVE_BEGIN_NAMESPACE(math)
-
-inline double acosh (double x) { return std::acosh (x); }
-inline float acosh (float x) { return std::acoshf (x); }
-inline Complex acosh (const Complex& x) { return std::acosh (x); }
-inline FloatComplex acosh (const FloatComplex& x) { return std::acosh (x); }
-
-extern OCTAVE_API Complex airy (const Complex& z, bool deriv, bool scaled,
-                                octave_idx_type& ierr);
-extern OCTAVE_API ComplexMatrix airy (const ComplexMatrix& z, bool deriv,
-                                      bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray airy (const ComplexNDArray& z, bool deriv,
-                                       bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplex airy (const FloatComplex& z, bool deriv,
-                                     bool scaled, octave_idx_type& ierr);
-extern OCTAVE_API FloatComplexMatrix airy (const FloatComplexMatrix& z,
-                                           bool deriv, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray airy (const FloatComplexNDArray& z,
-                                            bool deriv, bool scaled, Array<octave_idx_type>& ierr);
-
-inline double asinh (double x) { return std::asinh (x); }
-inline float asinh (float x) { return std::asinhf (x); }
-inline Complex asinh (const Complex& x) { return std::asinh (x); }
-inline FloatComplex asinh (const FloatComplex& x) { return std::asinh (x); }
-
-inline double atanh (double x) { return std::atanh (x); }
-inline float atanh (float x) { return std::atanhf (x); }
-inline Complex atanh (const Complex& x) { return std::atanh (x); }
-inline FloatComplex atanh (const FloatComplex& x) { return std::atanh (x); }
-
-extern OCTAVE_API Complex besselj (double alpha, const Complex& x, bool scaled,
-                                   octave_idx_type& ierr);
-extern OCTAVE_API Complex bessely (double alpha, const Complex& x, bool scaled,
-                                   octave_idx_type& ierr);
-extern OCTAVE_API Complex besseli (double alpha, const Complex& x, bool scaled,
-                                   octave_idx_type& ierr);
-extern OCTAVE_API Complex besselk (double alpha, const Complex& x, bool scaled,
-                                   octave_idx_type& ierr);
-extern OCTAVE_API Complex besselh1 (double alpha, const Complex& x, bool scaled,
-                                    octave_idx_type& ierr);
-extern OCTAVE_API Complex besselh2 (double alpha, const Complex& x, bool scaled,
-                                    octave_idx_type& ierr);
-
-extern OCTAVE_API ComplexMatrix besselj (double alpha, const ComplexMatrix& x,
-                                         bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix bessely (double alpha, const ComplexMatrix& x,
-                                         bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besseli (double alpha, const ComplexMatrix& x,
-                                         bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselk (double alpha, const ComplexMatrix& x,
-                                         bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselh1 (double alpha, const ComplexMatrix& x,
-                                          bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselh2 (double alpha, const ComplexMatrix& x,
-                                          bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API ComplexMatrix besselj (const Matrix& alpha, const Complex& x,
-                                         bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix bessely (const Matrix& alpha, const Complex& x,
-                                         bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besseli (const Matrix& alpha, const Complex& x,
-                                         bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselk (const Matrix& alpha, const Complex& x,
-                                         bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselh1 (const Matrix& alpha, const Complex& x,
-                                          bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselh2 (const Matrix& alpha, const Complex& x,
-                                          bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API ComplexMatrix besselj (const Matrix& alpha,
-                                         const ComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix bessely (const Matrix& alpha,
-                                         const ComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besseli (const Matrix& alpha,
-                                         const ComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselk (const Matrix& alpha,
-                                         const ComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselh1 (const Matrix& alpha,
-                                          const ComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselh2 (const Matrix& alpha,
-                                          const ComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API ComplexNDArray besselj (double alpha, const ComplexNDArray& x,
-                                          bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray bessely (double alpha, const ComplexNDArray& x,
-                                          bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besseli (double alpha, const ComplexNDArray& x,
-                                          bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besselk (double alpha, const ComplexNDArray& x,
-                                          bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besselh1 (double alpha,
-                                           const ComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besselh2 (double alpha,
-                                           const ComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API ComplexNDArray besselj (const NDArray& alpha,
-                                          const Complex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray bessely (const NDArray& alpha,
-                                          const Complex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besseli (const NDArray& alpha,
-                                          const Complex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besselk (const NDArray& alpha,
-                                          const Complex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besselh1 (const NDArray& alpha,
-                                           const Complex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besselh2 (const NDArray& alpha,
-                                           const Complex& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API ComplexNDArray besselj (const NDArray& alpha,
-                                          const ComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray bessely (const NDArray& alpha,
-                                          const ComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besseli (const NDArray& alpha,
-                                          const ComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besselk (const NDArray& alpha,
-                                          const ComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besselh1 (const NDArray& alpha,
-                                           const ComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray besselh2 (const NDArray& alpha,
-                                           const ComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API ComplexMatrix besselj (const RowVector& alpha,
-                                         const ComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix bessely (const RowVector& alpha,
-                                         const ComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besseli (const RowVector& alpha,
-                                         const ComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselk (const RowVector& alpha,
-                                         const ComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselh1 (const RowVector& alpha,
-                                          const ComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexMatrix besselh2 (const RowVector& alpha,
-                                          const ComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API FloatComplex besselj (float alpha, const FloatComplex& x,
-                                        bool scaled, octave_idx_type& ierr);
-extern OCTAVE_API FloatComplex bessely (float alpha, const FloatComplex& x,
-                                        bool scaled, octave_idx_type& ierr);
-extern OCTAVE_API FloatComplex besseli (float alpha, const FloatComplex& x,
-                                        bool scaled, octave_idx_type& ierr);
-extern OCTAVE_API FloatComplex besselk (float alpha, const FloatComplex& x,
-                                        bool scaled, octave_idx_type& ierr);
-extern OCTAVE_API FloatComplex besselh1 (float alpha, const FloatComplex& x,
-                                         bool scaled, octave_idx_type& ierr);
-extern OCTAVE_API FloatComplex besselh2 (float alpha, const FloatComplex& x,
-                                         bool scaled, octave_idx_type& ierr);
-
-extern OCTAVE_API FloatComplexMatrix besselj (float alpha,
-                                              const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix bessely (float alpha,
-                                              const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besseli (float alpha,
-                                              const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselk (float alpha,
-                                              const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselh1 (float alpha,
-                                               const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselh2 (float alpha,
-                                               const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API FloatComplexMatrix besselj (const FloatMatrix& alpha,
-                                              const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix bessely (const FloatMatrix& alpha,
-                                              const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besseli (const FloatMatrix& alpha,
-                                              const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselk (const FloatMatrix& alpha,
-                                              const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselh1 (const FloatMatrix& alpha,
-                                               const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselh2 (const FloatMatrix& alpha,
-                                               const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API FloatComplexMatrix besselj (const FloatMatrix& alpha,
-                                              const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix bessely (const FloatMatrix& alpha,
-                                              const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besseli (const FloatMatrix& alpha,
-                                              const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselk (const FloatMatrix& alpha,
-                                              const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselh1 (const FloatMatrix& alpha,
-                                               const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselh2 (const FloatMatrix& alpha,
-                                               const FloatComplexMatrix& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API FloatComplexNDArray besselj (float alpha,
-                                               const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray bessely (float alpha,
-                                               const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besseli (float alpha,
-                                               const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besselk (float alpha,
-                                               const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besselh1 (float alpha,
-                                                const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besselh2 (float alpha,
-                                                const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API FloatComplexNDArray besselj (const FloatNDArray& alpha,
-                                               const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray bessely (const FloatNDArray& alpha,
-                                               const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besseli (const FloatNDArray& alpha,
-                                               const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besselk (const FloatNDArray& alpha,
-                                               const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besselh1 (const FloatNDArray& alpha,
-                                                const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besselh2 (const FloatNDArray& alpha,
-                                                const FloatComplex& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API FloatComplexNDArray besselj (const FloatNDArray& alpha,
-                                               const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray bessely (const FloatNDArray& alpha,
-                                               const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besseli (const FloatNDArray& alpha,
-                                               const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besselk (const FloatNDArray& alpha,
-                                               const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besselh1 (const FloatNDArray& alpha,
-                                                const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray besselh2 (const FloatNDArray& alpha,
-                                                const FloatComplexNDArray& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API FloatComplexMatrix besselj (const FloatRowVector& alpha,
-                                              const FloatComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix bessely (const FloatRowVector& alpha,
-                                              const FloatComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besseli (const FloatRowVector& alpha,
-                                              const FloatComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselk (const FloatRowVector& alpha,
-                                              const FloatComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselh1 (const FloatRowVector& alpha,
-                                               const FloatComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexMatrix besselh2 (const FloatRowVector& alpha,
-                                               const FloatComplexColumnVector& x, bool scaled, Array<octave_idx_type>& ierr);
-
-extern OCTAVE_API Complex biry (const Complex& z, bool deriv, bool scaled,
-                                octave_idx_type& ierr);
-extern OCTAVE_API ComplexMatrix biry (const ComplexMatrix& z, bool deriv,
-                                      bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API ComplexNDArray biry (const ComplexNDArray& z, bool deriv,
-                                       bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplex biry (const FloatComplex& z, bool deriv,
-                                     bool scaled, octave_idx_type& ierr);
-extern OCTAVE_API FloatComplexMatrix biry (const FloatComplexMatrix& z,
-                                           bool deriv, bool scaled, Array<octave_idx_type>& ierr);
-extern OCTAVE_API FloatComplexNDArray biry (const FloatComplexNDArray& z,
-                                            bool deriv, bool scaled, Array<octave_idx_type>& ierr);
-
-inline double cbrt (double x) { return std::cbrt (x); }
-inline float cbrt (float x) { return std::cbrtf (x); }
-
-extern OCTAVE_API double dawson (double x);
-extern OCTAVE_API float dawson (float x);
-extern OCTAVE_API Complex dawson (const Complex& x);
-extern OCTAVE_API FloatComplex dawson (const FloatComplex& x);
-
-extern OCTAVE_API void ellipj (double u, double m, double& sn, double& cn,
-                               double& dn, double& err);
-extern OCTAVE_API void ellipj (const Complex& u, double m, Complex& sn,
-                               Complex& cn, Complex& dn, double& err);
-
-inline double erf (double x) { return std::erf (x); }
-inline float erf (float x) { return std::erff (x); }
-extern OCTAVE_API Complex erf (const Complex& x);
-extern OCTAVE_API FloatComplex erf (const FloatComplex& x);
-
-inline double erfc (double x) { return std::erfc (x); }
-inline float erfc (float x) { return std::erfcf (x); }
-extern OCTAVE_API Complex erfc (const Complex& x);
-extern OCTAVE_API FloatComplex erfc (const FloatComplex& x);
-
-extern OCTAVE_API double erfcinv (double x);
-extern OCTAVE_API float erfcinv (float x);
-
-extern OCTAVE_API double erfcx (double x);
-extern OCTAVE_API float erfcx (float x);
-extern OCTAVE_API Complex erfcx (const Complex& x);
-extern OCTAVE_API FloatComplex erfcx (const FloatComplex& x);
-
-extern OCTAVE_API double erfi (double x);
-extern OCTAVE_API float erfi (float x);
-extern OCTAVE_API Complex erfi (const Complex& x);
-extern OCTAVE_API FloatComplex erfi (const FloatComplex& x);
-
-extern OCTAVE_API double erfinv (double x);
-extern OCTAVE_API float erfinv (float x);
-
-inline double expm1 (double x) { return std::expm1 (x); }
-inline float expm1 (float x) { return std::expm1f (x); }
-extern OCTAVE_API Complex expm1 (const Complex& x);
-extern OCTAVE_API FloatComplex expm1 (const FloatComplex& x);
-
-extern OCTAVE_API double gamma (double x);
-extern OCTAVE_API float gamma (float x);
-
-inline double lgamma (double x) { return std::lgamma (x); }
-inline float lgamma (float x) { return std::lgammaf (x); }
-
-inline double log1p (double x) { return std::log1p (x); }
-inline float log1p (float x) { return std::log1pf (x); }
-extern OCTAVE_API Complex log1p (const Complex& x);
-extern OCTAVE_API FloatComplex log1p (const FloatComplex& x);
-
-extern OCTAVE_API double psi (double x);
-extern OCTAVE_API float psi (float x);
-extern OCTAVE_API Complex psi (const Complex& x);
-extern OCTAVE_API FloatComplex psi (const FloatComplex& x);
-extern OCTAVE_API double psi (octave_idx_type n, double z);
-extern OCTAVE_API float psi (octave_idx_type n, float z);
-
-extern OCTAVE_API Complex rc_lgamma (double x);
-extern OCTAVE_API FloatComplex rc_lgamma (float x);
-
-extern OCTAVE_API Complex rc_log1p (double x);
-extern OCTAVE_API FloatComplex rc_log1p (float x);
-
-OCTAVE_END_NAMESPACE(math)
-OCTAVE_END_NAMESPACE(octave)
+#include "oct-specfun.h"
 
 #endif
--- a/liboctave/numeric/lu.cc
+++ b/liboctave/numeric/lu.cc
@@ -38,14 +38,13 @@
 #include "fCMatrix.h"
 #include "fColVector.h"
 #include "fMatrix.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
-#include "lo-qrupdate-proto.h"
+#include "lapack-proto.h"
 #include "lu.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
+#include "qrupdate-proto.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 // FIXME: PermMatrix::col_perm_vec returns Array<octave_idx_type>
--- a/liboctave/numeric/lu.h
+++ b/liboctave/numeric/lu.h
@@ -33,7 +33,6 @@
 #include "Array-oct.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
rename from liboctave/numeric/lo-mappers.cc
rename to liboctave/numeric/mappers.cc
--- a/liboctave/numeric/lo-mappers.cc
+++ b/liboctave/numeric/mappers.cc
@@ -27,20 +27,19 @@
 #  include "config.h"
 #endif
 
-#include "lo-mappers.h"
-#include "lo-specfun.h"
+#include "mappers.h"
 #include "math-wrappers.h"
+#include "oct-specfun.h"
 
 // FIXME: We used to have this situation:
 //
 //   Functions that forward to gnulib belong here so we can keep
-//   gnulib:: out of lo-mappers.h.
+//   gnulib:: out of mappers.h.
 //
 // but now we just use std:: and explicit wrappers in C++ code so maybe
 // some of the forwarding functions can be defined inline here.
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 bool
copy from liboctave/numeric/lo-mappers.h
copy to liboctave/numeric/mappers.h
--- a/liboctave/numeric/lo-mappers.h
+++ b/liboctave/numeric/mappers.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_mappers_h)
-#define octave_lo_mappers_h 1
+#if ! defined (octave_oct_mappers_h)
+#define octave_oct_mappers_h 1
 
 #include "octave-config.h"
 
@@ -37,7 +37,6 @@
 #include "oct-inttypes-fwd.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 extern OCTAVE_API bool isna (double x);
--- a/liboctave/numeric/module.mk
+++ b/liboctave/numeric/module.mk
@@ -18,7 +18,6 @@
   %reldir%/DASSL.h \
   %reldir%/DET.h \
   %reldir%/EIG.h \
-  %reldir%/gsvd.h \
   %reldir%/LSODE.h \
   %reldir%/ODE.h \
   %reldir%/ODEFunc.h \
@@ -26,15 +25,20 @@
   %reldir%/ODESFunc.h \
   %reldir%/Quad.h \
   %reldir%/aepbalance.h \
+  %reldir%/amos-proto.h \
+  %reldir%/arpack-proto.h \
   %reldir%/base-dae.h \
   %reldir%/base-de.h \
+  %reldir%/blas-proto.h \
   %reldir%/bsxfun-decl.h \
   %reldir%/bsxfun.h \
   %reldir%/chol.h \
   %reldir%/eigs-base.h \
   %reldir%/fEIG.h \
   %reldir%/gepbalance.h \
+  %reldir%/gsvd.h \
   %reldir%/hess.h \
+  %reldir%/lapack-proto.h \
   %reldir%/lo-amos-proto.h \
   %reldir%/lo-arpack-proto.h \
   %reldir%/lo-blas-proto.h \
@@ -45,17 +49,22 @@
   %reldir%/lo-slatec-proto.h \
   %reldir%/lo-specfun.h \
   %reldir%/lu.h \
+  %reldir%/mappers.h \
   %reldir%/oct-convn.h \
   %reldir%/oct-fftw.h \
   %reldir%/oct-norm.h \
   %reldir%/oct-rand.h \
+  %reldir%/oct-specfun.h \
   %reldir%/oct-spparms.h \
   %reldir%/qr.h \
   %reldir%/qrp.h \
+  %reldir%/qrupdate-proto.h \
   %reldir%/randgamma.h \
   %reldir%/randmtzig.h \
   %reldir%/randpoisson.h \
+  %reldir%/ranlib-proto.h \
   %reldir%/schur.h \
+  %reldir%/slatec-proto.h \
   %reldir%/sparse-chol.h \
   %reldir%/sparse-dmsolve.h \
   %reldir%/sparse-lu.h \
@@ -78,13 +87,13 @@
   %reldir%/fEIG.cc \
   %reldir%/gepbalance.cc \
   %reldir%/hess.cc \
-  %reldir%/lo-mappers.cc \
-  %reldir%/lo-specfun.cc \
   %reldir%/lu.cc \
+  %reldir%/mappers.cc \
   %reldir%/oct-convn.cc \
   %reldir%/oct-fftw.cc \
   %reldir%/oct-norm.cc \
   %reldir%/oct-rand.cc \
+  %reldir%/oct-specfun.cc \
   %reldir%/oct-spparms.cc \
   %reldir%/qr.cc \
   %reldir%/qrp.cc \
--- a/liboctave/numeric/oct-convn.cc
+++ b/liboctave/numeric/oct-convn.cc
@@ -35,6 +35,7 @@
 #include "CNDArray.h"
 #include "CRowVector.h"
 #include "MArray.h"
+#include "blas-proto.h"
 #include "dColVector.h"
 #include "dMatrix.h"
 #include "dNDArray.h"
@@ -48,7 +49,6 @@
 #include "fMatrix.h"
 #include "fNDArray.h"
 #include "fRowVector.h"
-#include "lo-blas-proto.h"
 #include "oct-convn.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
--- a/liboctave/numeric/oct-fftw.cc
+++ b/liboctave/numeric/oct-fftw.cc
@@ -31,7 +31,7 @@
 #  include <fftw3.h>
 #endif
 
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-fftw.h"
 #include "oct-locbuf.h"
 #include "quit.h"
--- a/liboctave/numeric/oct-norm.cc
+++ b/liboctave/numeric/oct-norm.cc
@@ -51,14 +51,14 @@
 #include "fDiagMatrix.h"
 #include "fMatrix.h"
 #include "fRowVector.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "mx-cm-s.h"
 #include "mx-fcm-fs.h"
 #include "mx-fs-fcm.h"
 #include "mx-s-cm.h"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 #include "oct-norm.h"
 #include "quit.h"
 #include "svd.h"
--- a/liboctave/numeric/oct-rand.cc
+++ b/liboctave/numeric/oct-rand.cc
@@ -31,11 +31,10 @@
 
 #include <limits>
 
-#include "lo-error.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
-#include "lo-ranlib-proto.h"
 #include "mach-info.h"
+#include "mappers.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 #include "oct-rand.h"
 #include "oct-time.h"
@@ -43,6 +42,7 @@
 #include "randgamma.h"
 #include "randmtzig.h"
 #include "randpoisson.h"
+#include "ranlib-proto.h"
 #include "singleton-cleanup.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
rename from liboctave/numeric/lo-specfun.cc
rename to liboctave/numeric/oct-specfun.cc
--- a/liboctave/numeric/lo-specfun.cc
+++ b/liboctave/numeric/oct-specfun.cc
@@ -37,6 +37,7 @@
 #include "CMatrix.h"
 #include "CNDArray.h"
 #include "Faddeeva.hh"
+#include "amos-proto.h"
 #include "dMatrix.h"
 #include "dNDArray.h"
 #include "dRowVector.h"
@@ -47,16 +48,14 @@
 #include "fMatrix.h"
 #include "fNDArray.h"
 #include "fRowVector.h"
-#include "lo-amos-proto.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
-#include "lo-slatec-proto.h"
-#include "lo-specfun.h"
+#include "mappers.h"
 #include "mx-inlines.cc"
+#include "oct-error.h"
+#include "oct-specfun.h"
+#include "slatec-proto.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 static inline Complex
copy from liboctave/numeric/lo-specfun.h
copy to liboctave/numeric/oct-specfun.h
--- a/liboctave/numeric/lo-specfun.h
+++ b/liboctave/numeric/oct-specfun.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_specfun_h)
-#define octave_lo_specfun_h 1
+#if ! defined (octave_oct_specfun_h)
+#define octave_oct_specfun_h 1
 
 #include "octave-config.h"
 
@@ -34,7 +34,6 @@
 #include "oct-cmplx.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 inline double acosh (double x) { return std::acosh (x); }
--- a/liboctave/numeric/oct-spparms.cc
+++ b/liboctave/numeric/oct-spparms.cc
@@ -30,8 +30,8 @@
 #include <ostream>
 
 #include "Array-oct.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
+#include "oct-error.h"
 #include "oct-spparms.h"
 #include "singleton-cleanup.h"
 
--- a/liboctave/numeric/qr.cc
+++ b/liboctave/numeric/qr.cc
@@ -42,16 +42,15 @@
 #include "fColVector.h"
 #include "fMatrix.h"
 #include "fRowVector.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
-#include "lo-qrupdate-proto.h"
+#include "lapack-proto.h"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 #include "oct-sort.h"
 #include "qr.h"
+#include "qrupdate-proto.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
--- a/liboctave/numeric/qr.h
+++ b/liboctave/numeric/qr.h
@@ -31,7 +31,6 @@
 #include "Array-fwd.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
--- a/liboctave/numeric/qrp.cc
+++ b/liboctave/numeric/qrp.cc
@@ -37,12 +37,11 @@
 #include "fCMatrix.h"
 #include "fMatrix.h"
 #include "fRowVector.h"
-#include "lo-lapack-proto.h"
+#include "lapack-proto.h"
 #include "oct-locbuf.h"
 #include "qrp.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 // Specialization.
--- a/liboctave/numeric/qrp.h
+++ b/liboctave/numeric/qrp.h
@@ -32,7 +32,6 @@
 #include "qr.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
copy from liboctave/numeric/lo-qrupdate-proto.h
copy to liboctave/numeric/qrupdate-proto.h
--- a/liboctave/numeric/lo-qrupdate-proto.h
+++ b/liboctave/numeric/qrupdate-proto.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_qrupdate_proto_h)
-#define octave_lo_qrupdate_proto_h 1
+#if ! defined (octave_qrupdate_proto_h)
+#define octave_qrupdate_proto_h 1
 
 #include "octave-config.h"
 
--- a/liboctave/numeric/randgamma.cc
+++ b/liboctave/numeric/randgamma.cc
@@ -87,7 +87,7 @@
 #include <cmath>
 
 #include "lo-ieee.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "randgamma.h"
 #include "randmtzig.h"
 
--- a/liboctave/numeric/randpoisson.cc
+++ b/liboctave/numeric/randpoisson.cc
@@ -34,9 +34,9 @@
 #include <cstddef>
 
 #include "f77-fcn.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-error.h"
 #include "randmtzig.h"
 #include "randpoisson.h"
 
copy from liboctave/numeric/lo-ranlib-proto.h
copy to liboctave/numeric/ranlib-proto.h
--- a/liboctave/numeric/lo-ranlib-proto.h
+++ b/liboctave/numeric/ranlib-proto.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_ranlib_proto_h)
-#define octave_lo_ranlib_proto_h 1
+#if ! defined (octave_ranlib_proto_h)
+#define octave_ranlib_proto_h 1
 
 #include "octave-config.h"
 
--- a/liboctave/numeric/schur.cc
+++ b/liboctave/numeric/schur.cc
@@ -32,13 +32,12 @@
 #include "dMatrix.h"
 #include "fCMatrix.h"
 #include "fMatrix.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
+#include "lapack-proto.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 #include "schur.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 // For real types.
--- a/liboctave/numeric/schur.h
+++ b/liboctave/numeric/schur.h
@@ -38,7 +38,6 @@
 #include "fMatrix.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
copy from liboctave/numeric/lo-slatec-proto.h
copy to liboctave/numeric/slatec-proto.h
--- a/liboctave/numeric/lo-slatec-proto.h
+++ b/liboctave/numeric/slatec-proto.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_slatec_proto_h)
-#define octave_lo_slatec_proto_h 1
+#if ! defined (octave_slatec_proto_h)
+#define octave_slatec_proto_h 1
 
 #include "octave-config.h"
 
--- a/liboctave/numeric/sparse-chol.cc
+++ b/liboctave/numeric/sparse-chol.cc
@@ -33,8 +33,8 @@
 #include "MatrixType.h"
 #include "dRowVector.h"
 #include "dSparse.h"
-#include "lo-error.h"
 #include "oct-cmplx.h"
+#include "oct-error.h"
 #include "oct-sparse.h"
 #include "oct-spparms.h"
 #include "quit.h"
@@ -42,7 +42,6 @@
 #include "sparse-util.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename chol_type>
--- a/liboctave/numeric/sparse-chol.h
+++ b/liboctave/numeric/sparse-chol.h
@@ -35,7 +35,6 @@
 #include "CSparse.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 // If the sparse matrix classes become templated on the element type
--- a/liboctave/numeric/sparse-dmsolve.cc
+++ b/liboctave/numeric/sparse-dmsolve.cc
@@ -35,7 +35,7 @@
 #include "MSparse.h"
 #include "MatrixType.h"
 #include "dSparse.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-inttypes-fwd.h"
 #include "oct-locbuf.h"
 #include "oct-sort.h"
--- a/liboctave/numeric/sparse-lu.cc
+++ b/liboctave/numeric/sparse-lu.cc
@@ -30,15 +30,14 @@
 #include "CSparse.h"
 #include "PermMatrix.h"
 #include "dSparse.h"
-#include "lo-error.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 #include "oct-sparse.h"
 #include "oct-spparms.h"
 #include "sparse-lu.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 // Wrappers for SuiteSparse (formerly UMFPACK) functions that have
--- a/liboctave/numeric/sparse-lu.h
+++ b/liboctave/numeric/sparse-lu.h
@@ -35,7 +35,6 @@
 #include "dSparse.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 // If the sparse matrix classes become templated on the element type
--- a/liboctave/numeric/sparse-qr.cc
+++ b/liboctave/numeric/sparse-qr.cc
@@ -33,14 +33,13 @@
 #include "dColVector.h"
 #include "dMatrix.h"
 #include "dSparse.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 #include "oct-sparse.h"
 #include "quit.h"
 #include "sparse-qr.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 #if defined (HAVE_CXSPARSE)
--- a/liboctave/numeric/sparse-qr.h
+++ b/liboctave/numeric/sparse-qr.h
@@ -35,7 +35,6 @@
 #include "mx-fwd.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 // If the sparse matrix classes become templated on the element type
--- a/liboctave/numeric/svd.cc
+++ b/liboctave/numeric/svd.cc
@@ -36,8 +36,8 @@
 #include "fCMatrix.h"
 #include "fDiagMatrix.h"
 #include "fMatrix.h"
-#include "lo-error.h"
-#include "lo-lapack-proto.h"
+#include "lapack-proto.h"
+#include "oct-error.h"
 #include "svd.h"
 
 // class to compute optimal work space size (lwork) for DGEJSV and SGEJSV
@@ -300,7 +300,6 @@
 }
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
--- a/liboctave/numeric/svd.h
+++ b/liboctave/numeric/svd.h
@@ -31,7 +31,6 @@
 #include <vector>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
--- a/liboctave/system/dir-ops.cc
+++ b/liboctave/system/dir-ops.cc
@@ -42,12 +42,11 @@
 
 #include "dir-ops.h"
 #include "file-ops.h"
-#include "lo-error.h"
-#include "lo-sysdep.h"
+#include "oct-error.h"
+#include "oct-sysdep.h"
 #include "str-vec.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 bool
--- a/liboctave/system/dir-ops.h
+++ b/liboctave/system/dir-ops.h
@@ -33,7 +33,6 @@
 #include "str-vec.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 class OCTAVE_API dir_entry
--- a/liboctave/system/file-ops.cc
+++ b/liboctave/system/file-ops.cc
@@ -48,10 +48,10 @@
 #include "file-ops.h"
 #include "file-stat.h"
 #include "gen-tempname-wrapper.h"
-#include "lo-sysdep.h"
 #include "oct-env.h"
 #include "oct-locbuf.h"
 #include "oct-password.h"
+#include "oct-sysdep.h"
 #include "quit.h"
 #include "stat-wrappers.h"
 #include "str-vec.h"
@@ -216,7 +216,6 @@
 }
 
 OCTAVE_BEGIN_NAMESPACE(sys)
-
 OCTAVE_BEGIN_NAMESPACE(file_ops)
 
 char dev_sep_char ()
--- a/liboctave/system/file-ops.h
+++ b/liboctave/system/file-ops.h
@@ -35,7 +35,6 @@
 #include "str-vec.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 OCTAVE_BEGIN_NAMESPACE(file_ops)
--- a/liboctave/system/file-stat.cc
+++ b/liboctave/system/file-stat.cc
@@ -37,12 +37,11 @@
 #include "strmode-wrapper.h"
 
 #if defined (OCTAVE_USE_WINDOWS_API)
-#  include "lo-regexp.h"
 #  include "oct-env.h"
+#  include "oct-regexp.h"
 #endif
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 // FIXME: the is_* and mode_as_string functions are only valid
--- a/liboctave/system/file-stat.h
+++ b/liboctave/system/file-stat.h
@@ -35,7 +35,6 @@
 #include <sys/types.h>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 class OCTAVE_API base_file_stat
--- a/liboctave/system/lo-sysdep.h
+++ b/liboctave/system/lo-sysdep.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 1996-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,81 +26,8 @@
 #if ! defined (octave_lo_sysdep_h)
 #define octave_lo_sysdep_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-sysdep.h" is deprecated, use "oct-sysdep.h" instead'
 
-#include <fstream>
-#include <string>
-
-#include <sys/types.h>
-
-#include "lo-ieee.h"
-
-class string_vector;
-
-OCTAVE_BEGIN_NAMESPACE(octave)
-
-OCTAVE_BEGIN_NAMESPACE(sys)
-
-extern OCTAVE_API int system (const std::string& cmd_str);
-
-extern OCTAVE_API std::string getcwd ();
-
-extern OCTAVE_API int chdir (const std::string&);
-
-extern OCTAVE_API bool
-get_dirlist (const std::string& dirname, string_vector& dirlist,
-             std::string& msg);
-
-extern OCTAVE_API bool
-file_exists (const std::string& filename, bool is_dir = true);
-
-extern OCTAVE_API bool
-file_exists (const std::string& filename, bool is_dir, std::string& msg);
-
-extern OCTAVE_API bool dir_exists (const std::string& dirname);
-
-extern OCTAVE_API bool
-dir_exists (const std::string& dirname, std::string& msg);
-
-extern OCTAVE_API bool
-same_file (const std::string& f, const std::string& g);
-
-extern OCTAVE_API std::FILE *
-fopen (const std::string& name, const std::string& mode);
-
-extern OCTAVE_API std::FILE *
-fopen_tmp (const std::string& name, const std::string& mode);
-
-extern OCTAVE_API std::fstream
-fstream (const std::string& name,
-         const std::ios::openmode mode = std::ios::in | std::ios::out);
-
-extern OCTAVE_API std::ifstream
-ifstream (const std::string& name,
-          const std::ios::openmode mode = std::ios::in);
-
-extern OCTAVE_API std::ofstream
-ofstream (const std::string& name,
-          const std::ios::openmode mode = std::ios::out);
-
-extern OCTAVE_API void
-putenv_wrapper (const std::string& name, const std::string& value);
-
-extern OCTAVE_API std::string getenv_wrapper (const std::string&);
-
-extern OCTAVE_API bool isenv_wrapper (const std::string&);
-
-extern OCTAVE_API int unsetenv_wrapper (const std::string&);
-
-extern OCTAVE_API std::wstring u8_to_wstring (const std::string&);
-
-extern OCTAVE_API std::string u8_from_wstring (const std::wstring&);
-
-extern OCTAVE_API std::string
-get_ASCII_filename (const std::string& long_file_name,
-                    const bool allow_locale = false);
-
-OCTAVE_END_NAMESPACE(sys)
-OCTAVE_END_NAMESPACE(octave)
+#include "oct-sysdep.h"
 
 #endif
--- a/liboctave/system/lo-sysinfo.h
+++ b/liboctave/system/lo-sysinfo.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2018-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,19 +26,8 @@
 #if ! defined (octave_lo_sysinfo_h)
 #define octave_lo_sysinfo_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-sysinfo.h" is deprecated, use "oct-sysinfo.h" instead'
 
-#include <string>
-
-OCTAVE_BEGIN_NAMESPACE(octave)
-
-OCTAVE_BEGIN_NAMESPACE(sys)
-
-extern OCTAVE_API std::string blas_version ();
-
-extern OCTAVE_API std::string lapack_version ();
-
-OCTAVE_END_NAMESPACE(sys)
-OCTAVE_END_NAMESPACE(octave)
+#include "oct-sysinfo.h"
 
 #endif
--- a/liboctave/system/mach-info.cc
+++ b/liboctave/system/mach-info.cc
@@ -28,8 +28,8 @@
 #endif
 
 #include "f77-fcn.h"
-#include "lo-error.h"
 #include "mach-info.h"
+#include "oct-error.h"
 
 extern "C"
 {
@@ -39,7 +39,6 @@
 }
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(mach_info)
 
 static float_format get_float_format ()
@@ -87,6 +86,16 @@
   return little_endian;
 }
 
+bool
+nan_with_payload ()
+{
+#if defined (HAVE_QNAN_WITH_PAYLOAD)
+  return 1;
+#else
+  return 0;
+#endif
+}
+
 float_format
 string_to_float_format (const std::string& s)
 {
--- a/liboctave/system/mach-info.h
+++ b/liboctave/system/mach-info.h
@@ -31,7 +31,6 @@
 #include <string>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(mach_info)
 
 enum float_format
@@ -50,6 +49,8 @@
 
 OCTAVE_API bool words_little_endian ();
 
+OCTAVE_API bool nan_with_payload ();
+
 OCTAVE_API float_format string_to_float_format (const std::string&);
 
 OCTAVE_API std::string float_format_as_string (float_format);
--- a/liboctave/system/module.mk
+++ b/liboctave/system/module.mk
@@ -10,6 +10,8 @@
   %reldir%/oct-group.h \
   %reldir%/oct-password.h \
   %reldir%/oct-syscalls.h \
+  %reldir%/oct-sysdep.h \
+  %reldir%/oct-sysinfo.h \
   %reldir%/oct-time.h \
   %reldir%/oct-uname.h
 
@@ -19,13 +21,13 @@
   %reldir%/dir-ops.cc \
   %reldir%/file-ops.cc \
   %reldir%/file-stat.cc \
-  %reldir%/lo-sysdep.cc \
-  %reldir%/lo-sysinfo.cc \
   %reldir%/mach-info.cc \
   %reldir%/oct-env.cc \
   %reldir%/oct-group.cc \
   %reldir%/oct-password.cc \
   %reldir%/oct-syscalls.cc \
+  %reldir%/oct-sysdep.cc \
+  %reldir%/oct-sysinfo.cc \
   %reldir%/oct-time.cc \
   %reldir%/oct-uname.cc
 
--- a/liboctave/system/oct-env.cc
+++ b/liboctave/system/oct-env.cc
@@ -50,12 +50,12 @@
 #include <string>
 
 #include "file-ops.h"
-#include "lo-error.h"
-#include "lo-sysdep.h"
 #include "lo-utils.h"
 #include "oct-env.h"
+#include "oct-error.h"
 #include "oct-password.h"
 #include "oct-syscalls.h"
+#include "oct-sysdep.h"
 #include "set-program-name-wrapper.h"
 #include "singleton-cleanup.h"
 #include "unistd-wrappers.h"
@@ -66,7 +66,6 @@
 #endif
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 env::env ()
--- a/liboctave/system/oct-env.h
+++ b/liboctave/system/oct-env.h
@@ -31,7 +31,6 @@
 #include <string>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 class OCTAVE_API env
--- a/liboctave/system/oct-group.cc
+++ b/liboctave/system/oct-group.cc
@@ -33,7 +33,7 @@
 #  include <grp.h>
 #endif
 
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-group.h"
 #include "str-vec.h"
 
@@ -48,7 +48,6 @@
 }
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 std::string
--- a/liboctave/system/oct-group.h
+++ b/liboctave/system/oct-group.h
@@ -35,7 +35,6 @@
 #include "str-vec.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 class OCTAVE_API group
--- a/liboctave/system/oct-password.cc
+++ b/liboctave/system/oct-password.cc
@@ -29,7 +29,7 @@
 
 #include <sys/types.h>
 
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-password.h"
 #include "pwd-wrappers.h"
 
@@ -44,7 +44,6 @@
 }
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 std::string
--- a/liboctave/system/oct-password.h
+++ b/liboctave/system/oct-password.h
@@ -33,7 +33,6 @@
 #include <sys/types.h>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 class OCTAVE_API password
--- a/liboctave/system/oct-syscalls.cc
+++ b/liboctave/system/oct-syscalls.cc
@@ -33,8 +33,8 @@
 
 #include "fcntl-wrappers.h"
 #include "lo-utils.h"
-#include "lo-sysdep.h"
 #include "oct-syscalls.h"
+#include "oct-sysdep.h"
 #include "octave-popen2.h"
 #include "signal-wrappers.h"
 #include "str-vec.h"
@@ -45,7 +45,6 @@
   nm ": not supported on this system"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 int
--- a/liboctave/system/oct-syscalls.h
+++ b/liboctave/system/oct-syscalls.h
@@ -35,7 +35,6 @@
 #include <sys/types.h>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 extern OCTAVE_API int dup2 (int, int);
rename from liboctave/system/lo-sysdep.cc
rename to liboctave/system/oct-sysdep.cc
--- a/liboctave/system/lo-sysdep.cc
+++ b/liboctave/system/oct-sysdep.cc
@@ -34,9 +34,9 @@
 #include "dir-ops.h"
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-error.h"
-#include "lo-sysdep.h"
 #include "localcharset-wrapper.h"
+#include "oct-error.h"
+#include "oct-sysdep.h"
 #include "putenv-wrapper.h"
 #include "unistd-wrappers.h"
 #include "unsetenv-wrapper.h"
@@ -46,14 +46,13 @@
 #  include <wchar.h>
 
 #  include "filepos-wrappers.h"
-#  include "lo-hash.h"
+#  include "oct-hash.h"
 #  include "oct-locbuf.h"
 #  include "uniconv-wrappers.h"
 #  include "unwind-prot.h"
 #endif
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 int
copy from liboctave/system/lo-sysdep.h
copy to liboctave/system/oct-sysdep.h
--- a/liboctave/system/lo-sysdep.h
+++ b/liboctave/system/oct-sysdep.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_sysdep_h)
-#define octave_lo_sysdep_h 1
+#if ! defined (octave_oct_sysdep_h)
+#define octave_oct_sysdep_h 1
 
 #include "octave-config.h"
 
@@ -38,7 +38,6 @@
 class string_vector;
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 extern OCTAVE_API int system (const std::string& cmd_str);
rename from liboctave/system/lo-sysinfo.cc
rename to liboctave/system/oct-sysinfo.cc
--- a/liboctave/system/lo-sysinfo.cc
+++ b/liboctave/system/oct-sysinfo.cc
@@ -31,15 +31,14 @@
 #include <string>
 
 #include "f77-fcn.h"
-#include "lo-sysinfo.h"
 #include "oct-shlib.h"
+#include "oct-sysinfo.h"
 
 // Hack to stringize macro results.
 #define xSTRINGIZE(x) #x
 #define STRINGIZE(x) xSTRINGIZE(x)
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 std::string blas_version ()
copy from liboctave/system/lo-sysinfo.h
copy to liboctave/system/oct-sysinfo.h
--- a/liboctave/system/lo-sysinfo.h
+++ b/liboctave/system/oct-sysinfo.h
@@ -23,15 +23,14 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_sysinfo_h)
-#define octave_lo_sysinfo_h 1
+#if ! defined (octave_oct_sysinfo_h)
+#define octave_oct_sysinfo_h 1
 
 #include "octave-config.h"
 
 #include <string>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 extern OCTAVE_API std::string blas_version ();
--- a/liboctave/system/oct-time.cc
+++ b/liboctave/system/oct-time.cc
@@ -40,10 +40,10 @@
 #  include "file-stat.h"
 #endif
 
-#include "lo-error.h"
 #include "lo-utils.h"
-#include "lo-sysdep.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
+#include "oct-sysdep.h"
 #include "oct-time.h"
 #include "octave-preserve-stream-state.h"
 #include "strftime-wrapper.h"
@@ -51,7 +51,6 @@
 #include "time-wrappers.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 time::time (double d)
--- a/liboctave/system/oct-time.h
+++ b/liboctave/system/oct-time.h
@@ -43,7 +43,6 @@
 }
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 class base_tm;
--- a/liboctave/system/oct-uname.cc
+++ b/liboctave/system/oct-uname.cc
@@ -34,7 +34,6 @@
 #include "uname-wrapper.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 void
--- a/liboctave/system/oct-uname.h
+++ b/liboctave/system/oct-uname.h
@@ -31,7 +31,6 @@
 #include <string>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 class OCTAVE_API uname
--- a/liboctave/util/action-container.h
+++ b/liboctave/util/action-container.h
@@ -39,7 +39,6 @@
 // FIXME: is there a better name for this class?
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(util)
 
 template <typename T>
--- a/liboctave/util/cmd-edit.cc
+++ b/liboctave/util/cmd-edit.cc
@@ -36,11 +36,11 @@
 #include "cmd-hist.h"
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-error.h"
-#include "lo-sysdep.h"
 #include "lo-utils.h"
 #include "oct-env.h"
+#include "oct-error.h"
 #include "oct-mutex.h"
+#include "oct-sysdep.h"
 #include "oct-time.h"
 #include "quit.h"
 #include "singleton-cleanup.h"
--- a/liboctave/util/cmd-hist.cc
+++ b/liboctave/util/cmd-hist.cc
@@ -36,8 +36,8 @@
 #include "cmd-edit.h"
 #include "cmd-hist.h"
 #include "file-ops.h"
-#include "lo-error.h"
-#include "lo-sysdep.h"
+#include "oct-error.h"
+#include "oct-sysdep.h"
 #include "singleton-cleanup.h"
 #include "str-vec.h"
 
--- a/liboctave/util/data-conv.cc
+++ b/liboctave/util/data-conv.cc
@@ -37,8 +37,8 @@
 
 #include "byte-swap.h"
 #include "data-conv.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
 
 // FIXME: Almost all platform-dependent sizes such as "short" are now defined
--- a/liboctave/util/f77-fcn.c
+++ b/liboctave/util/f77-fcn.c
@@ -31,8 +31,8 @@
 #include <string.h>
 
 #include "f77-fcn.h"
+#include "oct-error.h"
 #include "quit.h"
-#include "lo-error.h"
 
 /* All the STOP statements in the Fortran routines have been replaced
    with a call to XSTOPX.
--- a/liboctave/util/f77-fcn.h
+++ b/liboctave/util/f77-fcn.h
@@ -28,7 +28,7 @@
 
 #include "octave-config.h"
 
-#include "lo-error.h"
+#include "oct-error.h"
 #include "quit.h"
 
 #if defined (__cplusplus)
--- a/liboctave/util/file-info.cc
+++ b/liboctave/util/file-info.cc
@@ -32,8 +32,8 @@
 
 #include "file-info.h"
 #include "file-stat.h"
-#include "lo-error.h"
-#include "lo-sysdep.h"
+#include "oct-error.h"
+#include "oct-sysdep.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
--- a/liboctave/util/kpse.cc
+++ b/liboctave/util/kpse.cc
@@ -45,9 +45,9 @@
 #include "file-ops.h"
 #include "file-stat.h"
 #include "kpse.h"
-#include "lo-sysdep.h"
 #include "oct-env.h"
 #include "oct-password.h"
+#include "oct-sysdep.h"
 #include "oct-time.h"
 #include "pathsearch.h"
 #include "unistd-wrappers.h"
--- a/liboctave/util/lo-array-errwarn.cc
+++ b/liboctave/util/lo-array-errwarn.cc
@@ -34,7 +34,7 @@
 #include <sstream>
 
 #include "lo-array-errwarn.h"
-#include "lo-error.h"
+#include "oct-error.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
 
--- a/liboctave/util/lo-error.c
+++ b/liboctave/util/lo-error.c
@@ -31,7 +31,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "lo-error.h"
+#include "oct-error.h"
 
 /* Having this file in this directory is a kluge to avoid unresolved
    symbol errors when creating shared versions of liboctave. */
--- a/liboctave/util/lo-error.h
+++ b/liboctave/util/lo-error.h
@@ -26,85 +26,8 @@
 #if ! defined (octave_lo_error_h)
 #define octave_lo_error_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-error.h" is deprecated, use "oct-error.h" instead'
 
-#if defined (__cplusplus)
-extern "C" {
-#endif
-
-OCTAVE_NORETURN extern OCTAVE_API void
-liboctave_fatal (const char *fmt, ...);
-
-OCTAVE_NORETURN extern OCTAVE_API void
-liboctave_fatal_with_id (const char *id, const char *fmt, ...);
-
-extern OCTAVE_API void
-liboctave_warning (const char *fmt, ...);
-
-extern OCTAVE_API void
-liboctave_warning_with_id (const char *id, const char *fmt, ...);
-
-typedef void (*liboctave_error_handler) (const char *, ...);
-
-typedef void (*liboctave_error_with_id_handler) (const char *, const char *, ...);
-
-typedef void (*liboctave_warning_handler) (const char *, ...);
-
-typedef void (*liboctave_warning_with_id_handler) (const char *, const char *, ...);
-
-/* Would be nice to make these pointers private, but we want to share
-   them among all the liboctave classes. */
-OCTAVE_FORMAT_PRINTF (1, 2)
-OCTAVE_NORETURN extern OCTAVE_API liboctave_error_handler
-  current_liboctave_error_handler;
-
-OCTAVE_FORMAT_PRINTF (2, 3)
-OCTAVE_NORETURN extern OCTAVE_API liboctave_error_with_id_handler
-  current_liboctave_error_with_id_handler;
-
-OCTAVE_FORMAT_PRINTF (1, 2)
-extern OCTAVE_API liboctave_warning_handler current_liboctave_warning_handler;
-
-OCTAVE_FORMAT_PRINTF (2, 3)
-extern OCTAVE_API liboctave_warning_with_id_handler
-  current_liboctave_warning_with_id_handler;
-
-extern OCTAVE_API void
-set_liboctave_error_handler (OCTAVE_NORETURN liboctave_error_handler f);
-
-extern OCTAVE_API void
-set_liboctave_error_with_id_handler (OCTAVE_NORETURN liboctave_error_with_id_handler f);
-
-extern OCTAVE_API void
-set_liboctave_warning_handler (liboctave_warning_handler f);
-
-extern OCTAVE_API void
-set_liboctave_warning_with_id_handler (liboctave_warning_with_id_handler f);
-
-// To allow the __FILE__ and __LINE__ macros to work as expected, the
-// liboctave_panic_impossible, liboctave_panic_if, and
-// liboctave_panic_unless symbols must be defined as macros.
-
-#if defined (NDEBUG)
-
-#  define liboctave_panic_impossible() do { } while (0)
-
-#  define liboctave_panic_if(cond) do { } while (0)
-
-#  define liboctave_panic_unless(cond) do { } while (0)
-
-#else
-
-#  define liboctave_panic_impossible() (*current_liboctave_error_handler) ("impossible state reached in file '%s' at line %d", __FILE__, __LINE__)
-
-#  define liboctave_panic_if(cond) do { if (cond) liboctave_panic_impossible (); } while (0)
-
-#  define liboctave_panic_unless(cond) liboctave_panic_if (! (cond))
+#include "oct-error.h"
 
 #endif
-
-#if defined (__cplusplus)
-}
-#endif
-
-#endif
--- a/liboctave/util/lo-hash.h
+++ b/liboctave/util/lo-hash.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2016-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,41 +26,8 @@
 #if ! defined (octave_lo_hash_h)
 #define octave_lo_hash_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-hash.h" is deprecated, use "oct-hash.h" instead'
 
-#include <string>
-
-OCTAVE_BEGIN_NAMESPACE(octave)
-
-OCTAVE_BEGIN_NAMESPACE(crypto)
-
-typedef void *(hash_fptr) (const char *buffer, std::size_t len, void *res);
-
-OCTAVE_API std::string
-hash (hash_fptr hash_fcn, const std::string& str, int result_buf_len);
-
-OCTAVE_API int md2_digest_size ();
-OCTAVE_API int md4_digest_size ();
-OCTAVE_API int md5_digest_size ();
-OCTAVE_API int sha1_digest_size ();
-OCTAVE_API int sha224_digest_size ();
-OCTAVE_API int sha256_digest_size ();
-OCTAVE_API int sha384_digest_size ();
-OCTAVE_API int sha512_digest_size ();
-
-OCTAVE_API std::string md2_hash (const std::string& str);
-OCTAVE_API std::string md4_hash (const std::string& str);
-OCTAVE_API std::string md5_hash (const std::string& str);
-OCTAVE_API std::string sha1_hash (const std::string& str);
-OCTAVE_API std::string sha224_hash (const std::string& str);
-OCTAVE_API std::string sha256_hash (const std::string& str);
-OCTAVE_API std::string sha384_hash (const std::string& str);
-OCTAVE_API std::string sha512_hash (const std::string& str);
-
-OCTAVE_API std::string
-hash (const std::string& hash_type, const std::string& str);
-
-OCTAVE_END_NAMESPACE(crypto)
-OCTAVE_END_NAMESPACE(octave)
+#include "oct-hash.h"
 
 #endif
--- a/liboctave/util/lo-ieee.cc
+++ b/liboctave/util/lo-ieee.cc
@@ -32,9 +32,9 @@
 
 #include <limits>
 
-#include "lo-error.h"
 #include "lo-ieee.h"
 #include "mach-info.h"
+#include "oct-error.h"
 
 static double lo_inf;
 static double lo_nan;
--- a/liboctave/util/lo-regexp.h
+++ b/liboctave/util/lo-regexp.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2005-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,214 +26,8 @@
 #if ! defined (octave_lo_regexp_h)
 #define octave_lo_regexp_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-regexp.h" is deprecated, use "oct-regexp.h" instead'
 
-#include <list>
-#include <sstream>
-#include <string>
-
-#include "Array-oct.h"
-#include "Matrix.h"
-#include "str-vec.h"
-
-OCTAVE_BEGIN_NAMESPACE(octave)
-
-class OCTAVE_API regexp
-{
-public:
-
-  class opts;
-  class match_data;
-
-  regexp (const std::string& pat = "",
-          const regexp::opts& opt = regexp::opts (),
-          const std::string& w = "regexp")
-    : m_pattern (pat), m_options (opt), m_code (nullptr), m_named_pats (),
-      m_names (0), m_named_idx (), m_who (w)
-  {
-    compile_internal ();
-  }
-
-  regexp (const regexp&) = default;
-
-  regexp& operator = (const regexp& rx) = default;
-
-  ~regexp () { free (); }
-
-  void compile (const std::string& pat,
-                const regexp::opts& opt = regexp::opts ())
-  {
-    m_pattern = pat;
-    m_options = opt;
-    compile_internal ();
-  }
-
-  match_data match (const std::string& buffer) const;
-
-  bool is_match (const std::string& buffer) const;
-
-  Array<bool> is_match (const string_vector& buffer) const;
-
-  std::string replace (const std::string& buffer,
-                       const std::string& replacement) const;
-
-  static match_data
-  match (const std::string& pat, const std::string& buffer,
-         const regexp::opts& opt = regexp::opts (),
-         const std::string& who = "regexp")
-  {
-    regexp rx (pat, opt, who);
-
-    return rx.match (buffer);
-  }
-
-  static bool
-  is_match (const std::string& pat, const std::string& buffer,
-            const regexp::opts& opt = regexp::opts (),
-            const std::string& who = "regexp")
-  {
-    regexp rx (pat, opt, who);
-
-    return rx.is_match (buffer);
-  }
-
-  static Array<bool>
-  is_match (const std::string& pat, const string_vector& buffer,
-            const regexp::opts& opt = regexp::opts (),
-            const std::string& who = "regexp")
-  {
-    regexp rx (pat, opt, who);
-
-    return rx.is_match (buffer);
-  }
-
-  static std::string
-  replace (const std::string& pat, const std::string& buffer,
-           const std::string& replacement,
-           const regexp::opts& opt = regexp::opts (),
-           const std::string& who = "regexp")
-  {
-    regexp rx (pat, opt, who);
-
-    return rx.replace (buffer, replacement);
-  }
-
-  class opts
-  {
-  public:
-
-    opts ()
-      : m_case_insensitive (false), m_dotexceptnewline (false),
-        m_emptymatch (false), m_freespacing (false), m_lineanchors (false),
-        m_once (false) { }
-
-    opts (const opts&) = default;
-
-    opts& operator = (const opts&) = default;
-
-    ~opts () = default;
-
-    void case_insensitive (bool val) { m_case_insensitive = val; }
-    void dotexceptnewline (bool val) { m_dotexceptnewline = val; }
-    void emptymatch (bool val) { m_emptymatch = val; }
-    void freespacing (bool val) { m_freespacing = val; }
-    void lineanchors (bool val) { m_lineanchors = val; }
-    void once (bool val) { m_once = val; }
-
-    bool case_insensitive () const { return m_case_insensitive; }
-    bool dotexceptnewline () const { return m_dotexceptnewline; }
-    bool emptymatch () const { return m_emptymatch; }
-    bool freespacing () const { return m_freespacing; }
-    bool lineanchors () const { return m_lineanchors; }
-    bool once () const { return m_once; }
-
-  private:
-
-    bool m_case_insensitive;
-    bool m_dotexceptnewline;
-    bool m_emptymatch;
-    bool m_freespacing;
-    bool m_lineanchors;
-    bool m_once;
-  };
-
-  class match_element
-  {
-  public:
-
-    match_element () = delete;
-
-    match_element (const string_vector& nt, const string_vector& t,
-                   const std::string& ms, const Matrix& te,
-                   double s, double e)
-      : m_match_string (ms), m_named_tokens (nt), m_tokens (t),
-        m_token_extents (te), m_start (s), m_end (e)
-    { }
-
-    OCTAVE_DEFAULT_COPY_MOVE_DELETE (match_element)
-
-    std::string match_string () const { return m_match_string; }
-    string_vector named_tokens () const { return m_named_tokens; }
-    string_vector tokens () const { return m_tokens; }
-    Matrix token_extents () const { return m_token_extents; }
-    double start () const { return m_start; }
-    double end () const { return m_end; }
-
-  private:
-
-    std::string m_match_string;
-    string_vector m_named_tokens;
-    string_vector m_tokens;
-    Matrix m_token_extents;
-
-    // FIXME: Are these values declared as double because that's what
-    // Octave interpreter functions will store?  Should they be int or
-    // size_t instead?
-    double m_start;
-    double m_end;
-  };
-
-  class match_data : public std::list<match_element>
-  {
-  public:
-
-    match_data ()
-      : std::list<match_element> (), m_named_pats ()
-    { }
-
-    match_data (const std::list<match_element>& l, const string_vector& np)
-      : std::list<match_element> (l), m_named_pats (np)
-    { }
-
-    OCTAVE_DEFAULT_COPY_MOVE_DELETE (match_data)
-
-    string_vector named_patterns () const { return m_named_pats; }
-
-  private:
-
-    string_vector m_named_pats;
-  };
-
-private:
-
-  // The pattern we've been asked to match.
-  std::string m_pattern;
-
-  opts m_options;
-
-  // Internal data describing the regular expression.
-  void *m_code;
-
-  string_vector m_named_pats;
-  int m_names;
-  Array<int> m_named_idx;
-  std::string m_who;
-
-  void free ();
-
-  void compile_internal ();
-};
-
-OCTAVE_END_NAMESPACE(octave)
+#include "oct-regexp.h"
 
 #endif
--- a/liboctave/util/lo-traits.h
+++ b/liboctave/util/lo-traits.h
@@ -1,6 +1,6 @@
 ////////////////////////////////////////////////////////////////////////
 //
-// Copyright (C) 2009-2025 The Octave Project Developers
+// Copyright (C) 2025 The Octave Project Developers
 //
 // See the file COPYRIGHT.md in the top-level directory of this
 // distribution or <https://octave.org/copyright/>.
@@ -26,133 +26,8 @@
 #if ! defined (octave_lo_traits_h)
 #define octave_lo_traits_h 1
 
-#include "octave-config.h"
+#warning 'header file "lo-traits.h" is deprecated, use "oct-traits.h" instead'
 
-// Ideas for these classes taken from C++ Templates, The Complete
-// Guide by David Vandevoorde and Nicolai M. Josuttis, Addison-Wesley
-// (2003).
-
-// Select a type based on the value of a constant expression.
-
-template <bool cond, typename T1, typename T2>
-class if_then_else;
-
-template <typename T1, typename T2>
-class if_then_else<true, T1, T2>
-{
-public:
-
-  typedef T1 result;
-};
-
-template <typename T1, typename T2>
-class if_then_else<false, T1, T2>
-{
-public:
-
-  typedef T2 result;
-};
-
-// Determine whether two types are equal.
-template <typename T1, typename T2>
-class equal_types
-{
-public:
-
-  static const bool value = false;
-};
-
-template <typename T>
-class equal_types <T, T>
-{
-public:
-
-  static const bool value = true;
-};
-
-// Determine whether a type is an instance of a template.
-
-template <template <typename> class Template, typename T>
-class is_instance
-{
-public:
-
-  static const bool value = false;
-};
-
-template <template <typename> class Template, typename T>
-class is_instance <Template, Template<T>>
-{
-public:
-
-  static const bool value = true;
-};
-
-// Determine whether a template parameter is a class type.
-
-template <typename T1>
-class is_class_type
-{
-private:
-
-  typedef char one;
-  typedef struct { char c[2]; } two;
-
-  // Classes can have pointers to members.
-  template <typename T2> static one is_class_type_test (int T2::*);
-
-  // Catch everything else.
-  template <typename T2> static two is_class_type_test (...);
-
-public:
-
-  enum { yes = sizeof (is_class_type_test<T1> (0)) == 1 };
-  enum { no = ! yes };
-};
-
-// Define typename ref_param<T>::type as T const& if T is a class
-// type.  Otherwise, define it to be T.
-
-template <typename T>
-class ref_param
-{
-public:
-
-  typedef typename if_then_else<is_class_type<T>::no, T, T const&>::result type;
-};
-
-// Will turn TemplatedClass<T> to T, leave T otherwise.
-// Useful for stripping wrapper classes, like octave_int.
-
-template <template <typename> class TemplatedClass, typename T>
-class strip_template_param
-{
-public:
-  typedef T type;
-};
-
-template <template <typename> class TemplatedClass, typename T>
-class strip_template_param<TemplatedClass, TemplatedClass<T>>
-{
-public:
-  typedef T type;
-};
-
-// Will turn TemplatedClass<T> to TemplatedClass<S>, T to S otherwise.
-// Useful for generic promotions.
-
-template <template <typename> class TemplatedClass, typename T, typename S>
-class subst_template_param
-{
-public:
-  typedef S type;
-};
-
-template <template <typename> class TemplatedClass, typename T, typename S>
-class subst_template_param<TemplatedClass, TemplatedClass<T>, S>
-{
-public:
-  typedef TemplatedClass<S> type;
-};
+#include "oct-traits.h"
 
 #endif
--- a/liboctave/util/lo-utils.cc
+++ b/liboctave/util/lo-utils.cc
@@ -39,10 +39,10 @@
 #include "quit.h"
 
 #include "intprops-wrappers.h"
-#include "lo-error.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
 #include "lo-utils.h"
+#include "mappers.h"
+#include "oct-error.h"
 #include "oct-inttypes.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
--- a/liboctave/util/module.mk
+++ b/liboctave/util/module.mk
@@ -22,17 +22,21 @@
   %reldir%/oct-base64.h \
   %reldir%/oct-binmap.h \
   %reldir%/oct-cmplx.h \
+  %reldir%/oct-error.h \
   %reldir%/oct-glob.h \
+  %reldir%/oct-hash.h \
   %reldir%/oct-inttypes-fwd.h \
   %reldir%/oct-inttypes.h \
   %reldir%/oct-locbuf.h \
   %reldir%/oct-mutex.h \
+  %reldir%/oct-regexp.h \
   %reldir%/oct-refcount.h \
   %reldir%/oct-rl-edit.h \
   %reldir%/oct-rl-hist.h \
   %reldir%/oct-shlib.h \
   %reldir%/oct-sort.h \
   %reldir%/oct-string.h \
+  %reldir%/oct-traits.h \
   %reldir%/pathsearch.h \
   %reldir%/singleton-cleanup.h \
   %reldir%/sparse-util.h \
@@ -66,17 +70,17 @@
   %reldir%/glob-match.cc \
   %reldir%/kpse.cc \
   %reldir%/lo-array-errwarn.cc \
-  %reldir%/lo-hash.cc \
   %reldir%/lo-ieee.cc \
-  %reldir%/lo-regexp.cc \
   %reldir%/lo-utils.cc \
   %reldir%/quit.cc \
   %reldir%/oct-atomic.c \
   %reldir%/oct-base64.cc \
   %reldir%/oct-cmplx.cc \
   %reldir%/oct-glob.cc \
+  %reldir%/oct-hash.cc \
   %reldir%/oct-inttypes.cc \
   %reldir%/oct-mutex.cc \
+  %reldir%/oct-regexp.cc \
   %reldir%/oct-shlib.cc \
   %reldir%/oct-sparse.cc \
   %reldir%/oct-string.cc \
copy from liboctave/util/lo-error.h
copy to liboctave/util/oct-error.h
--- a/liboctave/util/lo-error.h
+++ b/liboctave/util/oct-error.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_error_h)
-#define octave_lo_error_h 1
+#if ! defined (octave_oct_error_h)
+#define octave_oct_error_h 1
 
 #include "octave-config.h"
 
--- a/liboctave/util/oct-glob.cc
+++ b/liboctave/util/oct-glob.cc
@@ -32,10 +32,10 @@
 
 #include "glob-wrappers.h"
 
-#include "oct-glob.h"
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-sysdep.h"
+#include "oct-glob.h"
+#include "oct-sysdep.h"
 #include "unwind-prot.h"
 
 #if defined (OCTAVE_USE_WINDOWS_API)
@@ -51,7 +51,6 @@
 // which is not what we want...
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 bool
--- a/liboctave/util/oct-glob.h
+++ b/liboctave/util/oct-glob.h
@@ -31,7 +31,6 @@
 #include "str-vec.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(sys)
 
 extern OCTAVE_API bool
rename from liboctave/util/lo-hash.cc
rename to liboctave/util/oct-hash.cc
--- a/liboctave/util/lo-hash.cc
+++ b/liboctave/util/oct-hash.cc
@@ -33,12 +33,11 @@
 #include <string>
 
 #include "hash-wrappers.h"
-#include "lo-error.h"
-#include "lo-hash.h"
+#include "oct-error.h"
+#include "oct-hash.h"
 #include "oct-locbuf.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(crypto)
 
 std::string
copy from liboctave/util/lo-hash.h
copy to liboctave/util/oct-hash.h
--- a/liboctave/util/lo-hash.h
+++ b/liboctave/util/oct-hash.h
@@ -23,15 +23,14 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_hash_h)
-#define octave_lo_hash_h 1
+#if ! defined (octave_oct_hash_h)
+#define octave_oct_hash_h 1
 
 #include "octave-config.h"
 
 #include <string>
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(crypto)
 
 typedef void *(hash_fptr) (const char *buffer, std::size_t len, void *res);
--- a/liboctave/util/oct-inttypes.cc
+++ b/liboctave/util/oct-inttypes.cc
@@ -28,7 +28,7 @@
 #endif
 
 #include "fpucw-wrappers.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-inttypes.h"
 
 template <typename T>
--- a/liboctave/util/oct-inttypes.h
+++ b/liboctave/util/oct-inttypes.h
@@ -34,14 +34,13 @@
 #include <iosfwd>
 #include <limits>
 
-#include "lo-mappers.h"
-#include "lo-traits.h"
+#include "mappers.h"
 #include "oct-inttypes-fwd.h"
+#include "oct-traits.h"
 
 #if defined (OCTAVE_INT_USE_LONG_DOUBLE)
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 inline long double round (long double x)
@@ -927,7 +926,6 @@
 // No mixed integer binary operations!
 
 OCTAVE_BEGIN_NAMESPACE(octave)
-
 OCTAVE_BEGIN_NAMESPACE(math)
 
 template <typename T>
--- a/liboctave/util/oct-mutex.cc
+++ b/liboctave/util/oct-mutex.cc
@@ -27,8 +27,8 @@
 #  include "config.h"
 #endif
 
+#include "oct-error.h"
 #include "oct-mutex.h"
-#include "lo-error.h"
 
 #if defined (OCTAVE_USE_WINDOWS_API)
 #  include <windows.h>
rename from liboctave/util/lo-regexp.cc
rename to liboctave/util/oct-regexp.cc
--- a/liboctave/util/lo-regexp.cc
+++ b/liboctave/util/oct-regexp.cc
@@ -48,10 +48,10 @@
 #endif
 
 #include "Matrix.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-locbuf.h"
+#include "oct-regexp.h"
 #include "quit.h"
-#include "lo-regexp.h"
 #include "str-vec.h"
 #include "unistr-wrappers.h"
 #include "unwind-prot.h"
copy from liboctave/util/lo-regexp.h
copy to liboctave/util/oct-regexp.h
--- a/liboctave/util/lo-regexp.h
+++ b/liboctave/util/oct-regexp.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_regexp_h)
-#define octave_lo_regexp_h 1
+#if ! defined (octave_oct_regexp_h)
+#define octave_oct_regexp_h 1
 
 #include "octave-config.h"
 
--- a/liboctave/util/oct-shlib.cc
+++ b/liboctave/util/oct-shlib.cc
@@ -50,12 +50,12 @@
 
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-shlib.h"
 #include "str-vec.h"
 
 #if defined (HAVE_LOADLIBRARY_API)
-#  include "lo-sysdep.h"
+#  include "oct-sysdep.h"
 #endif
 
 OCTAVE_BEGIN_NAMESPACE(octave)
--- a/liboctave/util/oct-sort.cc
+++ b/liboctave/util/oct-sort.cc
@@ -111,11 +111,11 @@
 #include <cstring>
 #include <stack>
 
-#include "lo-error.h"
-#include "lo-mappers.h"
+#include "mappers.h"
+#include "oct-error.h"
+#include "oct-locbuf.h"
+#include "oct-sort.h"
 #include "quit.h"
-#include "oct-sort.h"
-#include "oct-locbuf.h"
 
 template <typename T>
 octave_sort<T>::octave_sort () :
--- a/liboctave/util/oct-sort.h
+++ b/liboctave/util/oct-sort.h
@@ -91,7 +91,7 @@
 
 #include <functional>
 
-#include "lo-traits.h"
+#include "oct-traits.h"
 
 // Enum for type of sort function
 enum sortmode { UNSORTED = 0, ASCENDING, DESCENDING };
--- a/liboctave/util/oct-sparse.cc
+++ b/liboctave/util/oct-sparse.cc
@@ -27,7 +27,7 @@
 #  include "config.h"
 #endif
 
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-sparse.h"
 
 #if (defined (HAVE_AMD) || defined (HAVE_CCOLAMD)               \
--- a/liboctave/util/oct-string.cc
+++ b/liboctave/util/oct-string.cc
@@ -39,7 +39,7 @@
 #include "Array-oct.h"
 #include "iconv-wrappers.h"
 #include "lo-ieee.h"
-#include "lo-mappers.h"
+#include "mappers.h"
 #include "oct-locbuf.h"
 #include "uniconv-wrappers.h"
 #include "unistr-wrappers.h"
copy from liboctave/util/lo-traits.h
copy to liboctave/util/oct-traits.h
--- a/liboctave/util/lo-traits.h
+++ b/liboctave/util/oct-traits.h
@@ -23,8 +23,8 @@
 //
 ////////////////////////////////////////////////////////////////////////
 
-#if ! defined (octave_lo_traits_h)
-#define octave_lo_traits_h 1
+#if ! defined (octave_oct_traits_h)
+#define octave_oct_traits_h 1
 
 #include "octave-config.h"
 
--- a/liboctave/util/pathsearch.cc
+++ b/liboctave/util/pathsearch.cc
@@ -32,9 +32,9 @@
 #include <string>
 
 #include "kpse.h"
-#include "lo-error.h"
 #include "lo-utils.h"
 #include "oct-env.h"
+#include "oct-error.h"
 #include "pathsearch.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
--- a/liboctave/util/singleton-cleanup.cc
+++ b/liboctave/util/singleton-cleanup.cc
@@ -27,7 +27,7 @@
 #  include "config.h"
 #endif
 
-#include "lo-error.h"
+#include "oct-error.h"
 #include "singleton-cleanup.h"
 
 singleton_cleanup_list *singleton_cleanup_list::s_instance = nullptr;
--- a/liboctave/util/sparse-util.cc
+++ b/liboctave/util/sparse-util.cc
@@ -31,7 +31,7 @@
 #include <cstdarg>
 #include <cstdio>
 
-#include "lo-error.h"
+#include "oct-error.h"
 #include "oct-sparse.h"
 #include "sparse-util.h"
 
--- a/liboctave/util/unwind-prot.cc
+++ b/liboctave/util/unwind-prot.cc
@@ -27,7 +27,7 @@
 #  include "config.h"
 #endif
 
-#include "lo-error.h"
+#include "oct-error.h"
 #include "unwind-prot.h"
 
 OCTAVE_BEGIN_NAMESPACE(octave)
--- a/liboctave/util/url-transfer.cc
+++ b/liboctave/util/url-transfer.cc
@@ -34,8 +34,8 @@
 #include "dir-ops.h"
 #include "file-ops.h"
 #include "file-stat.h"
-#include "lo-sysdep.h"
 #include "oct-env.h"
+#include "oct-sysdep.h"
 #include "unwind-prot.h"
 #include "url-transfer.h"
 #include "version.h"
--- a/m4/acinclude.m4
+++ b/m4/acinclude.m4
@@ -1587,8 +1587,9 @@
     save_LIBS="$LIBS"
     LIBS="$LIBS $OPENGL_LIBS"
     AC_CACHE_CHECK([for glBlendFuncSeparate],
-      [octave_cv_func_glblendfuncseparate],
-      [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+      [octave_cv_func_glblendfuncseparate],[
+      AC_LANG_PUSH(C++)
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 #if defined (HAVE_WINDOWS_H)
 # include <windows.h>
 #endif
@@ -1610,7 +1611,16 @@
         glBlendFuncSeparate (sfactor, dfactor, salpha, dalpha);
         ]])],
         octave_cv_func_glblendfuncseparate=yes,
-        [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+        octave_cv_func_glblendfuncseparate=no)
+      AC_LANG_POP(C++)
+      ])
+    if test $octave_cv_func_glblendfuncseparate = yes; then
+      AC_DEFINE(HAVE_GLBLENDFUNCSEPARATE, 1, [Define to 1 if glBlendFuncSeparate can be used directly.])
+    else
+      AC_CACHE_CHECK([for glBlendFuncSeparate with GL_GLEXT_PROTOTYPES],
+        [octave_cv_func_glblendfuncseparate_as_ext],[
+        AC_LANG_PUSH(C++)
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 #define GL_GLEXT_PROTOTYPES 1
 #if defined (HAVE_WINDOWS_H)
 # include <windows.h>
@@ -1632,15 +1642,15 @@
           GLenum dalpha=0;
           glBlendFuncSeparate (sfactor, dfactor, salpha, dalpha);
           ]])],
-          [AC_DEFINE(GL_GLEXT_PROTOTYPES, 1, [Define to 1 to enable OpenGL extensions in headers.])
-          octave_cv_func_glblendfuncseparate=yes],
-          octave_cv_func_glblendfuncseparate=no)
+          octave_cv_func_glblendfuncseparate_as_ext=yes,
+          octave_cv_func_glblendfuncseparate_as_ext=no)
         ])
-      ])
+      if test $octave_cv_func_glblendfuncseparate_as_ext = yes; then
+        AC_DEFINE(HAVE_GLBLENDFUNCSEPARATE, 1, [Define to 1 if glBlendFuncSeparate can be used directly.])
+        AC_DEFINE(GL_GLEXT_PROTOTYPES, 1, [Define to 1 to enable OpenGL extensions in headers.])
+      fi
+    fi
     LIBS="$save_LIBS"
-    if test $octave_cv_func_glblendfuncseparate = yes; then
-      AC_DEFINE(HAVE_GLBLENDFUNCSEPARATE, 1, [Define to 1 if glBlendFuncSeparate can be used directly.])
-    fi
   fi
 ])
 dnl
@@ -3238,7 +3248,7 @@
           /* When cross-compiling, only test whether MIPS is the target
            * architecture.
            * FIXME: Add more conditions as needed.  */
-          #if defined (__mips__)
+          #if defined (__mips__) || defined (mips) || defined (__mips) || defined (__MIPS__)
           #  error "quiet NaN on MIPS is not conformant to IEEE 754-2008"
           #endif
         ]])],
@@ -3253,6 +3263,178 @@
   fi
 ])
 dnl
+dnl Check if the payload of quiet NaN values is retained on arithmetic
+dnl operations.  That is needed for consistent NA handling.
+dnl
+AC_DEFUN([OCTAVE_QNAN_WITH_PAYLOAD], [
+  AC_CACHE_CHECK([whether quiet NaN values retain payload on arithmetic operations],
+    [octave_cv_qnan_with_payload],
+    [AC_LANG_PUSH(C)
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -O0"
+    AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+        #include <math.h>
+        #include <stdint.h>
+        #include <string.h>
+        ]], [[
+        /* Quiet NaNs retain the "payload" (i.e., the value of the mantissa)
+         * when performing arithmetic operations.  That is not the case for
+         * some architectures, e.g., RISC-V.  */
+
+        #if defined (HAVE_IEEE754_QNAN)
+        #  define LO_IEEE_NA_HW 0x7FF840F4
+        #else
+        #  define LO_IEEE_NA_HW 0x7FF040F4
+        #endif
+        #define LO_IEEE_NA_LW 0x40000000
+        uint32_t word_NA[2];
+        double oct_NA;
+        uint64_t bits_NA;
+        uint64_t bits_NA_1;
+
+        /* Check whether platform is Big Endian */
+        union
+        {
+          long l;
+          char c[sizeof (long)];
+        } u;
+        u.l = 1;
+
+        /* value used as NA in Octave */
+        if (u.c[sizeof (long) - 1] == 1)
+          {
+            /* Big Endian */
+            word_NA[0] = LO_IEEE_NA_HW;
+            word_NA[1] = LO_IEEE_NA_LW;
+          }
+        else
+          {
+            /* Little Endian */
+            word_NA[1] = LO_IEEE_NA_HW;
+            word_NA[0] = LO_IEEE_NA_LW;
+          }
+
+        memcpy (&oct_NA, &word_NA, sizeof (oct_NA));
+
+        memcpy (&bits_NA, &oct_NA, sizeof (oct_NA));
+        oct_NA += 1.0;
+        memcpy (&bits_NA_1, &oct_NA, sizeof (oct_NA));
+        if (bits_NA == bits_NA_1)
+          /* payload of quiet NaN was retained */
+          return 0;
+        else
+          /* payload of quiet NaN was not retained */
+          return 1;
+      ]])],
+      octave_cv_qnan_with_payload=yes,
+      octave_cv_qnan_with_payload=no,
+      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+          ]], [[
+          /* When cross-compiling, only test whether the target architecture is
+           * RISC-V.
+           * FIXME: Add more conditions as needed.  */
+          #if defined(__riscv)
+          #  error "quiet NaN values do not retain the payload on arithmetic operations"
+          #endif
+        ]])],
+        octave_cv_qnan_with_payload=yes,
+        octave_cv_qnan_with_payload=no)
+    ])
+    CFLAGS="$save_CFLAGS"
+    AC_LANG_POP(C)
+  ])
+  if test $octave_cv_qnan_with_payload = yes; then
+    AC_DEFINE(HAVE_QNAN_WITH_PAYLOAD, 1,
+      [Define to 1 if quiet NaN values retain their payload on arithmetic operations.])
+  fi
+])
+dnl
+dnl Check whether casting double precision NaN values to the type "char"
+dnl results in 0.
+dnl
+AC_DEFUN([OCTAVE_DOUBLE_QNAN_CHAR_0], [
+  AC_CACHE_CHECK([whether double precision NaN values convert to char 0],
+    [octave_cv_double_qnan_char_0],
+    [AC_LANG_PUSH(C)
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -O0"
+    AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+        #include <math.h>
+        ]], [[
+        /* Octave expects that NaN values convert to 0 when casting to char.
+         * That is not the case for some architectures, e.g., RISC-V.  */
+        double qNaN = NAN;  // quiet NaN
+        if ((char) qNaN == 0)
+          return 0;
+        else
+          return 1;
+      ]])],
+      octave_cv_double_qnan_char_0=yes,
+      octave_cv_double_qnan_char_0=no,
+      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+          ]], [[
+          /* When cross-compiling, only test whether target architecture is
+           * RISC-V.
+           * FIXME: Add more conditions as needed.  */
+          #if defined(__riscv)
+          #  error "double NaN do not static cast to char 0"
+          #endif
+        ]])],
+        octave_cv_double_qnan_char_0=yes,
+        octave_cv_double_qnan_char_0=no)
+    ])
+    CFLAGS="$save_CFLAGS"
+    AC_LANG_POP(C)
+  ])
+  if test $octave_cv_double_qnan_char_0 = yes; then
+    AC_DEFINE(HAVE_DOUBLE_QNAN_CHAR_0, 1,
+      [Define to 1 if double precision NaN values convert to char 0.])
+  fi
+])
+dnl
+dnl Check whether casting double precision NaN values to the type "char"
+dnl results in 0.
+dnl
+AC_DEFUN([OCTAVE_FLOAT_QNAN_CHAR_0], [
+  AC_CACHE_CHECK([whether single precision NaN values convert to char 0],
+    [octave_cv_float_qnan_char_0],
+    [AC_LANG_PUSH(C)
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -O0"
+    AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+        #include <math.h>
+        ]], [[
+        /* Octave expects that NaN values convert to 0 when casting to char.
+         * That is not the case for some architectures, e.g., RISC-V.  */
+        float qNaN = NAN;  // quiet NaN
+        if ((char) qNaN == 0)
+          return 0;
+        else
+          return 1;
+      ]])],
+      octave_cv_float_qnan_char_0=yes,
+      octave_cv_float_qnan_char_0=no,
+      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+          ]], [[
+          /* When cross-compiling, only test whether target architecture is
+           * RISC-V.
+           * FIXME: Add more conditions as needed.  */
+          #if defined(__riscv)
+          #  error "float NaN do not static cast to char 0"
+          #endif
+        ]])],
+        octave_cv_float_qnan_char_0=yes,
+        octave_cv_float_qnan_char_0=no)
+    ])
+    CFLAGS="$save_CFLAGS"
+    AC_LANG_POP(C)
+  ])
+  if test $octave_cv_float_qnan_char_0 = yes; then
+    AC_DEFINE(HAVE_FLOAT_QNAN_CHAR_0, 1,
+      [Define to 1 if single precision NaN values convert to char 0.])
+  fi
+])
+dnl
 dnl Check for ar.
 dnl
 AC_DEFUN([OCTAVE_PROG_AR], [
--- a/scripts/general/interpn.m
+++ b/scripts/general/interpn.m
@@ -361,7 +361,22 @@
 
 ## Test that interpolating a complex matrix is equivalent to interpolating its
 ## real and imaginary parts separately.
-%!test <*61907>
+%!testif HAVE_QNAN_WITH_PAYLOAD <*61907>
+%! yi = [0.5, 1.5]';
+%! xi = [2.5, 3.5];
+%! zi = [2.25, 4.75];
+%! rand ("state", 1340640850);
+%! v = rand (4, 3, 5) + 1i * rand (4, 3, 5);
+%! for method = {"nearest", "linear", "spline"}
+%!   vi_complex = interpn (v, yi, xi, zi, method{1});
+%!   vi_real = interpn (real (v), yi, xi, zi, method{1});
+%!   vi_imag = interpn (imag (v), yi, xi, zi, method{1});
+%!   assert (real (vi_complex), vi_real, 2*eps);
+%!   assert (imag (vi_complex), vi_imag, 2*eps);
+%! endfor
+
+## Duplicate from above.  Only for test statistics
+%!testif ; ! __have_feature__ ("QNAN_WITH_PAYLOAD") <59830>
 %! yi = [0.5, 1.5]';
 %! xi = [2.5, 3.5];
 %! zi = [2.25, 4.75];
--- a/scripts/polynomial/roots.m
+++ b/scripts/polynomial/roots.m
@@ -84,10 +84,12 @@
 
 function r = roots (c)
 
-  if (nargin < 1 || (! isvector (c) && ! isempty (c)))
+  if (nargin < 1)
     print_usage ();
+  elseif (! isnumeric (c) || (! isvector (c) && ! isempty (c)))
+    error ("roots: C must be a numeric vector");
   elseif (any (! isfinite (c)))
-    error ("roots: inputs must not contain Inf or NaN");
+    error ("roots: C must not contain Inf or NaN");
   endif
 
   c = c(:);
@@ -136,6 +138,7 @@
 %!assert (roots ([1e-200, -1e200 * 1i, 1]), -1e-200 * 1i)
 
 %!error <Invalid call> roots ()
-%!error roots ([1, 2; 3, 4])
-%!error <inputs must not contain Inf or NaN> roots ([1 Inf 1])
-%!error <inputs must not contain Inf or NaN> roots ([1 NaN 1])
+%!error <C must be a numeric> roots ('ABC')
+%!error <C must be a .* vector> roots ([1, 2; 3, 4])
+%!error <C must not contain Inf or NaN> roots ([1 Inf 1])
+%!error <C must not contain Inf or NaN> roots ([1 NaN 1])