changeset 32660:f53ac65ffba6

maint: New method rwdata() as clearer alternative to fortran_vec(). * etc/NEWS.10.md: Announce new method and recommend its use in future code. * doc/interpreter/external.txi: Update Octave manual to use rwdata. * liboctave/array/Array.h (rwdata): New function prototype. * liboctave/array/Array.h (fortran_vec): Make inline function that calls rwdata(). * liboctave/array/DiagArray2.h (rwdata): New function prototype. * liboctave/array/DiagArray2.h (fortran_vec): Make inline function that calls rwdata(). * examples/code/fortrandemo.cc, libgui/graphics/QtHandlesUtils.cc, libinterp/corefcn/Cell.cc, libinterp/corefcn/__dsearchn__.cc, libinterp/corefcn/__ichol__.cc, libinterp/corefcn/__ilu__.cc, libinterp/corefcn/__lin_interpn__.cc, libinterp/corefcn/__magick_read__.cc, libinterp/corefcn/__pchip_deriv__.cc, libinterp/corefcn/amd.cc, libinterp/corefcn/data.cc, libinterp/corefcn/dot.cc, libinterp/corefcn/ellipj.cc, libinterp/corefcn/filter.cc, libinterp/corefcn/gcd.cc, libinterp/corefcn/gl-render.cc, libinterp/corefcn/graphics.cc, libinterp/corefcn/graphics.in.h, libinterp/corefcn/kron.cc, libinterp/corefcn/ls-mat4.cc, libinterp/corefcn/ls-mat5.cc, libinterp/corefcn/mex.cc, libinterp/corefcn/oct-map.cc, libinterp/corefcn/oct-stream.cc, libinterp/corefcn/ordqz.cc, libinterp/corefcn/ordschur.cc, libinterp/corefcn/perms.cc, libinterp/corefcn/psi.cc, libinterp/corefcn/quadcc.cc, libinterp/corefcn/qz.cc, libinterp/corefcn/rand.cc, libinterp/corefcn/sqrtm.cc, libinterp/corefcn/strfind.cc, libinterp/corefcn/symrcm.cc, libinterp/corefcn/tril.cc, libinterp/corefcn/typecast.cc, libinterp/corefcn/xdiv.cc, libinterp/dldfcn/__delaunayn__.cc, libinterp/dldfcn/__glpk__.cc, libinterp/dldfcn/__ode15__.cc, libinterp/dldfcn/__voronoi__.cc, libinterp/dldfcn/audioread.cc, libinterp/dldfcn/convhulln.cc, libinterp/octave-value/ov-base-int.cc, libinterp/octave-value/ov-bool-mat.cc, libinterp/octave-value/ov-ch-mat.cc, libinterp/octave-value/ov-cx-diag.cc, libinterp/octave-value/ov-cx-mat.cc, libinterp/octave-value/ov-flt-cx-diag.cc, libinterp/octave-value/ov-flt-cx-mat.cc, libinterp/octave-value/ov-flt-re-diag.cc, libinterp/octave-value/ov-flt-re-mat.cc, libinterp/octave-value/ov-intx.h, libinterp/octave-value/ov-java.cc, libinterp/octave-value/ov-perm.cc, libinterp/octave-value/ov-re-diag.cc, libinterp/octave-value/ov-re-mat.cc, libinterp/octave-value/ov-str-mat.cc, liboctave/array/Array-base.cc, liboctave/array/Array-util.cc, liboctave/array/CColVector.cc, liboctave/array/CDiagMatrix.cc, liboctave/array/CMatrix.cc, liboctave/array/CNDArray.cc, liboctave/array/CRowVector.cc, liboctave/array/CSparse.cc, liboctave/array/DiagArray2.h, liboctave/array/MArray.cc, liboctave/array/PermMatrix.cc, liboctave/array/Range.h, liboctave/array/Sparse.cc, liboctave/array/boolSparse.cc, liboctave/array/dColVector.cc, liboctave/array/dDiagMatrix.cc, liboctave/array/dMatrix.cc, liboctave/array/dNDArray.cc, liboctave/array/dRowVector.cc, liboctave/array/dSparse.cc, liboctave/array/fCColVector.cc, liboctave/array/fCDiagMatrix.cc, liboctave/array/fCMatrix.cc, liboctave/array/fCNDArray.cc, liboctave/array/fCRowVector.cc, liboctave/array/fColVector.cc, liboctave/array/fMatrix.cc, liboctave/array/fNDArray.cc, liboctave/array/fRowVector.cc, liboctave/array/idx-vector.cc, liboctave/numeric/CollocWt.cc, liboctave/numeric/DASPK.cc, liboctave/numeric/DASRT.cc, liboctave/numeric/DASSL.cc, liboctave/numeric/EIG.cc, liboctave/numeric/LSODE.cc, liboctave/numeric/Quad.cc, liboctave/numeric/aepbalance.cc, liboctave/numeric/bsxfun-defs.cc, liboctave/numeric/chol.cc, liboctave/numeric/eigs-base.cc, liboctave/numeric/fEIG.cc, liboctave/numeric/gepbalance.cc, liboctave/numeric/gsvd.cc, liboctave/numeric/hess.cc, liboctave/numeric/lu.cc, liboctave/numeric/oct-convn.cc, liboctave/numeric/oct-rand.cc, liboctave/numeric/qr.cc, liboctave/numeric/qrp.cc, liboctave/numeric/schur.cc, liboctave/numeric/sparse-dmsolve.cc, liboctave/numeric/sparse-lu.cc, liboctave/numeric/sparse-qr.cc, liboctave/numeric/svd.cc, liboctave/operators/mx-inlines.cc, liboctave/operators/mx-op-defs.h, liboctave/util/oct-base64.cc, liboctave/util/oct-binmap.h, liboctave/util/str-vec.cc: Replace calls to fortran_vec() with calls to rwdata().
author Rik <rik@octave.org>
date Wed, 27 Dec 2023 16:55:14 -0800
parents 71a23564ceca
children 5354533c9287 f8e766a30c38
files doc/interpreter/external.txi etc/NEWS.10.md examples/code/fortrandemo.cc libgui/graphics/QtHandlesUtils.cc libinterp/corefcn/Cell.cc libinterp/corefcn/__dsearchn__.cc libinterp/corefcn/__ichol__.cc libinterp/corefcn/__ilu__.cc libinterp/corefcn/__lin_interpn__.cc libinterp/corefcn/__magick_read__.cc libinterp/corefcn/__pchip_deriv__.cc libinterp/corefcn/amd.cc libinterp/corefcn/data.cc libinterp/corefcn/dot.cc libinterp/corefcn/ellipj.cc libinterp/corefcn/filter.cc libinterp/corefcn/gcd.cc libinterp/corefcn/gl-render.cc libinterp/corefcn/graphics.cc libinterp/corefcn/graphics.in.h libinterp/corefcn/kron.cc libinterp/corefcn/ls-mat4.cc libinterp/corefcn/ls-mat5.cc libinterp/corefcn/mex.cc libinterp/corefcn/oct-map.cc libinterp/corefcn/oct-stream.cc libinterp/corefcn/ordqz.cc libinterp/corefcn/ordschur.cc libinterp/corefcn/perms.cc libinterp/corefcn/psi.cc libinterp/corefcn/quadcc.cc libinterp/corefcn/qz.cc libinterp/corefcn/rand.cc libinterp/corefcn/sqrtm.cc libinterp/corefcn/strfind.cc libinterp/corefcn/symrcm.cc libinterp/corefcn/tril.cc libinterp/corefcn/typecast.cc libinterp/corefcn/xdiv.cc libinterp/dldfcn/__delaunayn__.cc libinterp/dldfcn/__glpk__.cc libinterp/dldfcn/__ode15__.cc libinterp/dldfcn/__voronoi__.cc libinterp/dldfcn/audioread.cc libinterp/dldfcn/convhulln.cc libinterp/octave-value/ov-base-int.cc libinterp/octave-value/ov-bool-mat.cc libinterp/octave-value/ov-ch-mat.cc libinterp/octave-value/ov-cx-diag.cc libinterp/octave-value/ov-cx-mat.cc libinterp/octave-value/ov-flt-cx-diag.cc libinterp/octave-value/ov-flt-cx-mat.cc libinterp/octave-value/ov-flt-re-diag.cc libinterp/octave-value/ov-flt-re-mat.cc libinterp/octave-value/ov-intx.h libinterp/octave-value/ov-java.cc libinterp/octave-value/ov-perm.cc libinterp/octave-value/ov-re-diag.cc libinterp/octave-value/ov-re-mat.cc libinterp/octave-value/ov-str-mat.cc liboctave/array/Array-base.cc liboctave/array/Array-util.cc liboctave/array/Array.h liboctave/array/CColVector.cc liboctave/array/CDiagMatrix.cc liboctave/array/CMatrix.cc liboctave/array/CNDArray.cc liboctave/array/CRowVector.cc liboctave/array/CSparse.cc liboctave/array/DiagArray2.h liboctave/array/MArray.cc liboctave/array/PermMatrix.cc liboctave/array/Range.h liboctave/array/Sparse.cc liboctave/array/boolSparse.cc liboctave/array/dColVector.cc liboctave/array/dDiagMatrix.cc liboctave/array/dMatrix.cc liboctave/array/dNDArray.cc liboctave/array/dRowVector.cc liboctave/array/dSparse.cc liboctave/array/fCColVector.cc liboctave/array/fCDiagMatrix.cc liboctave/array/fCMatrix.cc liboctave/array/fCNDArray.cc liboctave/array/fCRowVector.cc liboctave/array/fColVector.cc liboctave/array/fMatrix.cc liboctave/array/fNDArray.cc liboctave/array/fRowVector.cc liboctave/array/idx-vector.cc liboctave/numeric/CollocWt.cc liboctave/numeric/DASPK.cc liboctave/numeric/DASRT.cc liboctave/numeric/DASSL.cc liboctave/numeric/EIG.cc liboctave/numeric/LSODE.cc liboctave/numeric/Quad.cc liboctave/numeric/aepbalance.cc liboctave/numeric/bsxfun-defs.cc liboctave/numeric/chol.cc liboctave/numeric/eigs-base.cc liboctave/numeric/fEIG.cc liboctave/numeric/gepbalance.cc liboctave/numeric/gsvd.cc liboctave/numeric/hess.cc liboctave/numeric/lu.cc liboctave/numeric/oct-convn.cc liboctave/numeric/oct-rand.cc liboctave/numeric/qr.cc liboctave/numeric/qrp.cc liboctave/numeric/schur.cc liboctave/numeric/sparse-dmsolve.cc liboctave/numeric/sparse-lu.cc liboctave/numeric/sparse-qr.cc liboctave/numeric/svd.cc liboctave/operators/mx-inlines.cc liboctave/operators/mx-op-defs.h liboctave/util/oct-base64.cc liboctave/util/oct-binmap.h liboctave/util/str-vec.cc
diffstat 121 files changed, 1371 insertions(+), 1357 deletions(-) [+]
line wrap: on
line diff
--- a/doc/interpreter/external.txi	Wed Dec 27 14:29:02 2023 -0800
+++ b/doc/interpreter/external.txi	Wed Dec 27 16:55:14 2023 -0800
@@ -310,7 +310,7 @@
 
 Note that these functions do significant error checking and so in some
 circumstances the user might prefer to access the data of the array or matrix
-directly through the @code{fortran_vec} method discussed below.
+directly through the @code{rwdata} method discussed below.
 
 @deftypefn {Method} {octave_idx_type} numel () const
 The total number of elements in the matrix or array.
@@ -336,7 +336,7 @@
 of rows and columns in the matrix.
 @end deftypefn
 
-@deftypefn {Method} {T*} fortran_vec ()
+@deftypefn {Method} {T *} rwdata ()
 This method returns a pointer to the underlying data of the matrix or array so
 that it can be manipulated directly, either within Octave or by an external
 library.
@@ -646,7 +646,7 @@
 @end example
 
 Finally, because the sparse types aren't represented by a contiguous block of
-memory, the @nospell{@code{fortran_vec}} method of @code{Array<T>} is not
+memory, the @nospell{@code{rwdata}} method of @code{Array<T>} is not
 available.  It is, however, replaced by three separate methods @code{ridx},
 @code{cidx}, and @code{data}, that access the raw compressed column format that
 Octave sparse matrices are stored in.  These methods can be used in a manner
@@ -1149,7 +1149,7 @@
 The disadvantage of this is that if the foreign code allocates any memory
 internally, then this memory might be lost during an interrupt, without being
 deallocated.  Therefore, ideally Octave itself should allocate any memory that
-is needed by the foreign code, with either the @nospell{@code{fortran_vec}}
+is needed by the foreign code, with either the @nospell{@code{rwdata}}
 method or the @w{@code{OCTAVE_LOCAL_BUFFER}} macro.
 
 The Octave @code{unwind_protect} mechanism (@ref{The unwind_protect Statement})
--- a/etc/NEWS.10.md	Wed Dec 27 14:29:02 2023 -0800
+++ b/etc/NEWS.10.md	Wed Dec 27 16:55:14 2023 -0800
@@ -44,6 +44,12 @@
         symbol_record::mark_as_variable       | symbol_record::mark_variable
         symbol_record::unmark_as_variable     | symbol_record::unmark_variable
 
+- A new method `rwdata ()` provides direct read/write access (a pointer) to the
+data in a liboctave `Array` object (or its derived classes such as `Matrix`).
+Historically, the method `fortran_vec ()` provided this access, but the name
+is unclear, and it is recommended to use `rwdata ()` in any new code.  There
+are no plans to deprecate `fortran_vec`.
+
 The following features were deprecated in Octave 8 and have been removed
 from Octave 10.
 
--- a/examples/code/fortrandemo.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/examples/code/fortrandemo.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -15,7 +15,7 @@
 
   NDArray a = args(0).array_value ();
 
-  double *av = a.fortran_vec ();
+  double *av = a.rwdata ();
   octave_idx_type na = a.numel ();
 
   OCTAVE_LOCAL_BUFFER (char, ctmp, 128);
--- a/libgui/graphics/QtHandlesUtils.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libgui/graphics/QtHandlesUtils.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -160,7 +160,7 @@
   toRgb (const QColor& c)
   {
     Matrix rgb (1, 3);
-    double *rgbData = rgb.fortran_vec ();
+    double *rgbData = rgb.rwdata ();
 
 #if HAVE_QCOLOR_FLOAT_TYPE
     float tmp[3];
--- a/libinterp/corefcn/Cell.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/Cell.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -72,7 +72,7 @@
     {
       resize (dim_vector (n, 1));
 
-      octave_value *dst = fortran_vec ();
+      octave_value *dst = rwdata ();
       auto p = sl.begin ();
 
       for (octave_idx_type i = 0; i < n; i++)
@@ -85,7 +85,7 @@
 {
   octave_idx_type n = sa.numel ();
 
-  octave_value *dst = fortran_vec ();
+  octave_value *dst = rwdata ();
   const std::string *src = sa.data ();
 
   for (octave_idx_type i = 0; i < n; i++)
@@ -344,7 +344,7 @@
 Cell::map (ctype_mapper fcn) const
 {
   Cell retval (dims ());
-  octave_value *r = retval.fortran_vec ();
+  octave_value *r = retval.rwdata ();
 
   const octave_value *p = data ();
 
--- a/libinterp/corefcn/__dsearchn__.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/__dsearchn__.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -57,9 +57,9 @@
   octave_idx_type nxi = xi.columns ();
 
   ColumnVector idx (nxi);
-  double *pidx = idx.fortran_vec ();
+  double *pidx = idx.rwdata ();
   ColumnVector dist (nxi);
-  double *pdist = dist.fortran_vec ();
+  double *pdist = dist.rwdata ();
 
 #define DIST(dd, y, yi, m)                      \
   dd = 0.0;                                     \
--- a/libinterp/corefcn/__ichol__.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/__ichol__.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -254,11 +254,11 @@
   max_len = sm.nnz ();
   max_len += (0.1 * max_len) > n ? 0.1 * max_len : n;
   Array <octave_idx_type> cidx_out_l (dim_vector (n + 1, 1));
-  octave_idx_type *cidx_l = cidx_out_l.fortran_vec ();
+  octave_idx_type *cidx_l = cidx_out_l.rwdata ();
   Array <octave_idx_type> ridx_out_l (dim_vector (max_len, 1));
-  octave_idx_type *ridx_l = ridx_out_l.fortran_vec ();
+  octave_idx_type *ridx_l = ridx_out_l.rwdata ();
   Array <T> data_out_l (dim_vector (max_len, 1));
-  T *data_l = data_out_l.fortran_vec ();
+  T *data_l = data_out_l.rwdata ();
 
   // Working arrays
   OCTAVE_LOCAL_BUFFER (T, w_data, n);
@@ -332,9 +332,9 @@
         {
           max_len += (0.1 * max_len) > n ? 0.1 * max_len : n;
           data_out_l.resize (dim_vector (max_len, 1));
-          data_l = data_out_l.fortran_vec ();
+          data_l = data_out_l.rwdata ();
           ridx_out_l.resize (dim_vector (max_len, 1));
-          ridx_l = ridx_out_l.fortran_vec ();
+          ridx_l = ridx_out_l.rwdata ();
         }
 
       // The sorting of the nonzero elements of the working column can be
@@ -445,7 +445,7 @@
       RowVector sm_col_norms = xcolnorms (sm_l, 1);
       ichol_t <SparseMatrix,
               double, ichol_mult_real, ichol_checkpivot_real>
-              (sm_l, L, sm_col_norms.fortran_vec (), droptol, michol);
+              (sm_l, L, sm_col_norms.rwdata (), droptol, michol);
 
       return ovl (L);
     }
@@ -457,7 +457,7 @@
       Array <Complex> cols_norm = xcolnorms (sm_l, 1);
       ichol_t <SparseComplexMatrix,
               Complex, ichol_mult_complex, ichol_checkpivot_complex>
-              (sm_l, L, cols_norm.fortran_vec (),
+              (sm_l, L, cols_norm.rwdata (),
                Complex (droptol), michol);
 
       return ovl (L);
--- a/libinterp/corefcn/__ilu__.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/__ilu__.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -220,15 +220,15 @@
 
   // L output arrays
   Array <octave_idx_type> ridx_out_l (dim_vector (max_len_l, 1));
-  octave_idx_type *ridx_l = ridx_out_l.fortran_vec ();
+  octave_idx_type *ridx_l = ridx_out_l.rwdata ();
   Array <T> data_out_l (dim_vector (max_len_l, 1));
-  T *data_l = data_out_l.fortran_vec ();
+  T *data_l = data_out_l.rwdata ();
 
   // U output arrays
   Array <octave_idx_type> ridx_out_u (dim_vector (max_len_u, 1));
-  octave_idx_type *ridx_u = ridx_out_u.fortran_vec ();
+  octave_idx_type *ridx_u = ridx_out_u.rwdata ();
   Array <T> data_out_u (dim_vector (max_len_u, 1));
-  T *data_u = data_out_u.fortran_vec ();
+  T *data_u = data_out_u.rwdata ();
 
   // Working arrays
   OCTAVE_LOCAL_BUFFER (octave_idx_type, cidx_l, n + 1);
@@ -293,18 +293,18 @@
         {
           max_len_u += (0.1 * max_len_u) > n ? 0.1 * max_len_u : n;
           data_out_u.resize (dim_vector (max_len_u, 1));
-          data_u = data_out_u.fortran_vec ();
+          data_u = data_out_u.rwdata ();
           ridx_out_u.resize (dim_vector (max_len_u, 1));
-          ridx_u = ridx_out_u.fortran_vec ();
+          ridx_u = ridx_out_u.rwdata ();
         }
 
       if ((max_len_l - total_len_l) < n)
         {
           max_len_l += (0.1 * max_len_l) > n ? 0.1 * max_len_l : n;
           data_out_l.resize (dim_vector (max_len_l, 1));
-          data_l = data_out_l.fortran_vec ();
+          data_l = data_out_l.rwdata ();
           ridx_out_l.resize (dim_vector (max_len_l, 1));
-          ridx_l = ridx_out_l.fortran_vec ();
+          ridx_l = ridx_out_l.rwdata ();
         }
 
       // Expand the working row into the U output data structures
@@ -487,8 +487,8 @@
       RowVector sm_col_norms = xcolnorms (sm);
       ColumnVector sm_row_norms = xrownorms (sm);
       ilu_crout <SparseMatrix, double> (sm_l, sm_u, L, U,
-                                        sm_col_norms.fortran_vec (),
-                                        sm_row_norms.fortran_vec (),
+                                        sm_col_norms.rwdata (),
+                                        sm_row_norms.rwdata (),
                                         droptol, milu);
 
       SparseMatrix speye (DiagMatrix (L.cols (), L.cols (), 1.0));
@@ -505,8 +505,8 @@
       Array<Complex> rows_norm = xrownorms (sm);
 
       ilu_crout <SparseComplexMatrix, Complex> (sm_l, sm_u, L, U,
-          cols_norm.fortran_vec (),
-          rows_norm.fortran_vec (),
+          cols_norm.rwdata (),
+          rows_norm.rwdata (),
           Complex (droptol), milu);
 
       SparseMatrix speye (DiagMatrix (L.cols (), L.cols (), 1.0));
@@ -563,19 +563,19 @@
 
   // Extract pointers to the arrays for faster access inside loops
   Array <octave_idx_type> cidx_out_l (dim_vector (n + 1, 1));
-  octave_idx_type *cidx_l = cidx_out_l.fortran_vec ();
+  octave_idx_type *cidx_l = cidx_out_l.rwdata ();
   Array <octave_idx_type> ridx_out_l (dim_vector (max_len_l, 1));
-  octave_idx_type *ridx_l = ridx_out_l.fortran_vec ();
+  octave_idx_type *ridx_l = ridx_out_l.rwdata ();
   Array <T> data_out_l (dim_vector (max_len_l, 1));
-  T *data_l = data_out_l.fortran_vec ();
+  T *data_l = data_out_l.rwdata ();
 
   // Data for U
   Array <octave_idx_type> cidx_out_u (dim_vector (n + 1, 1));
-  octave_idx_type *cidx_u = cidx_out_u.fortran_vec ();
+  octave_idx_type *cidx_u = cidx_out_u.rwdata ();
   Array <octave_idx_type> ridx_out_u (dim_vector (max_len_u, 1));
-  octave_idx_type *ridx_u = ridx_out_u.fortran_vec ();
+  octave_idx_type *ridx_u = ridx_out_u.rwdata ();
   Array <T> data_out_u (dim_vector (max_len_u, 1));
-  T *data_u = data_out_u.fortran_vec ();
+  T *data_u = data_out_u.rwdata ();
 
   // Working arrays and permutation arrays
   octave_idx_type w_len_u, w_len_l;
@@ -585,7 +585,7 @@
   std::set <octave_idx_type>::iterator it, it2;
   OCTAVE_LOCAL_BUFFER (T, w_data, n);
   OCTAVE_LOCAL_BUFFER (octave_idx_type, iperm, n);
-  octave_idx_type *perm = perm_vec.fortran_vec ();
+  octave_idx_type *perm = perm_vec.rwdata ();
   OCTAVE_LOCAL_BUFFER (octave_idx_type, uptr, n);
 
   // Initialize working and permutation arrays
@@ -770,18 +770,18 @@
         {
           max_len_u += (0.1 * max_len_u) > n ? 0.1 * max_len_u : n;
           data_out_u.resize (dim_vector (max_len_u, 1));
-          data_u = data_out_u.fortran_vec ();
+          data_u = data_out_u.rwdata ();
           ridx_out_u.resize (dim_vector (max_len_u, 1));
-          ridx_u = ridx_out_u.fortran_vec ();
+          ridx_u = ridx_out_u.rwdata ();
         }
 
       if ((max_len_l - total_len_l) < n)
         {
           max_len_l += (0.1 * max_len_l) > n ? 0.1 * max_len_l : n;
           data_out_l.resize (dim_vector (max_len_l, 1));
-          data_l = data_out_l.fortran_vec ();
+          data_l = data_out_l.rwdata ();
           ridx_out_l.resize (dim_vector (max_len_l, 1));
-          ridx_l = ridx_out_l.fortran_vec ();
+          ridx_l = ridx_out_l.rwdata ();
         }
 
       // Expand working vector into U.
@@ -935,7 +935,7 @@
       Array <octave_idx_type> perm (dim_vector (sm.cols (), 1));
 
       ilu_tp <SparseMatrix, double> (sm, L, U, nnz_u, nnz_l,
-                                     rc_norm.fortran_vec (),
+                                     rc_norm.rwdata (),
                                      perm, droptol, thresh, milu, udiag);
 
       SparseMatrix speye (DiagMatrix (L.cols (), L.cols (), 1.0));
@@ -976,7 +976,7 @@
       Array <octave_idx_type> perm (dim_vector (sm.cols (), 1));
 
       ilu_tp <SparseComplexMatrix, Complex>
-      (sm, L, U, nnz_u, nnz_l, rc_norm.fortran_vec (), perm,
+      (sm, L, U, nnz_u, nnz_l, rc_norm.rwdata (), perm,
        Complex (droptol), Complex (thresh), milu, udiag);
 
       SparseMatrix speye (DiagMatrix (L.cols (), L.cols (), 1.0));
--- a/libinterp/corefcn/__lin_interpn__.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/__lin_interpn__.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -212,7 +212,7 @@
   OCTAVE_LOCAL_BUFFER (octave_idx_type, scale, n);
 
   const DT *v = V.data ();
-  DT *vi = Vi.fortran_vec ();
+  DT *vi = Vi.rwdata ();
   octave_idx_type Ni = Vi.numel ();
 
   // offset in memory of each dimension
--- a/libinterp/corefcn/__magick_read__.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/__magick_read__.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -300,7 +300,7 @@
   const octave_idx_type def_elem = frameidx(0);
 
   T img       = T (dim_vector (nRows, nCols, 1, nFrames));
-  P *img_fvec = img.fortran_vec ();
+  P *img_fvec = img.rwdata ();
 
   const octave_idx_type row_start = region.row_start ();
   const octave_idx_type col_start = region.col_start ();
@@ -358,7 +358,7 @@
               const double *amap_fvec = amap.data ();
 
               NDArray alpha (dim_vector (nRows, nCols, 1, nFrames));
-              double *alpha_fvec = alpha.fortran_vec ();
+              double *alpha_fvec = alpha.rwdata ();
 
               // GraphicsMagick stores the alpha values inverted, i.e.,
               // 1 for transparent and 0 for opaque so we fix that here.
@@ -526,7 +526,7 @@
     case Magick::GrayscaleType:         // Grayscale image
       {
         img = T (dim_vector (nRows, nCols, 1, nFrames));
-        P *img_fvec = img.fortran_vec ();
+        P *img_fvec = img.rwdata ();
 
         octave_idx_type idx = 0;
         for (octave_idx_type frame = 0; frame < nFrames; frame++)
@@ -554,8 +554,8 @@
       {
         img = T (dim_vector (nRows, nCols, 1, nFrames));
         T alpha (dim_vector (nRows, nCols, 1, nFrames));
-        P *img_fvec = img.fortran_vec ();
-        P *a_fvec   = alpha.fortran_vec ();
+        P *img_fvec = img.rwdata ();
+        P *a_fvec   = alpha.rwdata ();
 
         octave_idx_type idx = 0;
         for (octave_idx_type frame = 0; frame < nFrames; frame++)
@@ -586,7 +586,7 @@
     case Magick::TrueColorType:         // Truecolor image
       {
         img = T (dim_vector (nRows, nCols, 3, nFrames));
-        P *img_fvec = img.fortran_vec ();
+        P *img_fvec = img.rwdata ();
 
         const octave_idx_type frame_stride = color_stride * 3;
         for (octave_idx_type frame = 0; frame < nFrames; frame++)
@@ -624,8 +624,8 @@
       {
         img = T (dim_vector (nRows, nCols, 3, nFrames));
         T alpha (dim_vector (nRows, nCols, 1, nFrames));
-        P *img_fvec = img.fortran_vec ();
-        P *a_fvec   = alpha.fortran_vec ();
+        P *img_fvec = img.rwdata ();
+        P *a_fvec   = alpha.rwdata ();
 
         const octave_idx_type frame_stride = color_stride * 3;
 
@@ -667,7 +667,7 @@
     case Magick::ColorSeparationType:  // Cyan/Magenta/Yellow/Black (CMYK) image
       {
         img = T (dim_vector (nRows, nCols, 4, nFrames));
-        P *img_fvec = img.fortran_vec ();
+        P *img_fvec = img.rwdata ();
 
         const octave_idx_type frame_stride = color_stride * 4;
         for (octave_idx_type frame = 0; frame < nFrames; frame++)
@@ -707,8 +707,8 @@
       {
         img = T (dim_vector (nRows, nCols, 4, nFrames));
         T alpha (dim_vector (nRows, nCols, 1, nFrames));
-        P *img_fvec = img.fortran_vec ();
-        P *a_fvec   = alpha.fortran_vec ();
+        P *img_fvec = img.rwdata ();
+        P *a_fvec   = alpha.rwdata ();
 
         const octave_idx_type frame_stride = color_stride * 4;
 
@@ -968,7 +968,7 @@
   typedef typename T::element_type P;
   uint32NDArray out (img.dims ());
 
-  octave_uint32 *out_fvec = out.fortran_vec ();
+  octave_uint32 *out_fvec = out.rwdata ();
   const P       *img_fvec = img.data ();
 
   const octave_uint32 max = octave_uint32::max ();
@@ -2089,7 +2089,7 @@
         // be all zeros.  So rather than send a matrix of zeros, we will
         // check for that, and send an empty vector instead.
         RowVector chromaticities (8);
-        double *chroma_fvec = chromaticities.fortran_vec ();
+        double *chroma_fvec = chromaticities.rwdata ();
         img.chromaWhitePoint    (&chroma_fvec[0], &chroma_fvec[1]);
         img.chromaRedPrimary    (&chroma_fvec[2], &chroma_fvec[3]);
         img.chromaGreenPrimary  (&chroma_fvec[4], &chroma_fvec[5]);
--- a/libinterp/corefcn/__pchip_deriv__.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/__pchip_deriv__.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -82,7 +82,7 @@
                 {
                   F77_XFCN (pchim, PCHIM, (nx, xvec.data (),
                                            reinterpret_cast<float const *> (ymat.data ()) + k * inc,
-                                           reinterpret_cast<float *> (dmat.fortran_vec ()) + k * inc,
+                                           reinterpret_cast<float *> (dmat.rwdata ()) + k * inc,
                                            incfd, ierr));
 
                   if (ierr < 0)
@@ -91,7 +91,7 @@
 
                   F77_XFCN (pchim, PCHIM, (nx, xvec.data (),
                                            reinterpret_cast<float const *> (ymat.data ()) + 1 + k * inc,
-                                           reinterpret_cast<float *> (dmat.fortran_vec ()) + 1 + k * inc,
+                                           reinterpret_cast<float *> (dmat.rwdata ()) + 1 + k * inc,
                                            incfd, ierr));
 
                   if (ierr < 0)
@@ -124,7 +124,7 @@
                 {
                   F77_XFCN (pchim, PCHIM, (nx, xvec.data (),
                                            ymat.data () + k * inc,
-                                           dmat.fortran_vec () + k * inc,
+                                           dmat.rwdata () + k * inc,
                                            incfd, ierr));
 
                   k++;
@@ -165,7 +165,7 @@
                 {
                   F77_XFCN (dpchim, DPCHIM, (nx, xvec.data (),
                                              reinterpret_cast<double const *> (ymat.data ()) + k * inc,
-                                             reinterpret_cast<double *> (dmat.fortran_vec ()) + k * inc,
+                                             reinterpret_cast<double *> (dmat.rwdata ()) + k * inc,
                                              incfd, ierr));
 
                   if (ierr < 0)
@@ -174,7 +174,7 @@
 
                   F77_XFCN (dpchim, DPCHIM, (nx, xvec.data (),
                                              reinterpret_cast<double const *> (ymat.data ()) + 1 + k * inc,
-                                             reinterpret_cast<double *> (dmat.fortran_vec ()) + 1 + k * inc,
+                                             reinterpret_cast<double *> (dmat.rwdata ()) + 1 + k * inc,
                                              incfd, ierr));
 
                   if (ierr < 0)
@@ -207,7 +207,7 @@
                 {
                   F77_XFCN (dpchim, DPCHIM, (nx, xvec.data (),
                                              ymat.data () + k * inc,
-                                             dmat.fortran_vec () + k * inc,
+                                             dmat.rwdata () + k * inc,
                                              incfd, ierr));
                   k++;
 
--- a/libinterp/corefcn/amd.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/amd.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -147,7 +147,7 @@
 
   OCTAVE_LOCAL_BUFFER (suitesparse_integer, P, n_col);
   Matrix xinfo (AMD_INFO, 1);
-  double *Info = xinfo.fortran_vec ();
+  double *Info = xinfo.rwdata ();
 
   // FIXME: how can we manage the memory allocation of amd
   //        in a cleaner manner?
--- a/libinterp/corefcn/data.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/data.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -7970,7 +7970,7 @@
   if ((! tscl && tval.dims () != dv) || (! fscl && fval.dims () != dv))
     error ("merge: MASK, TVAL, and FVAL dimensions must match");
 
-  T *rv = retval.fortran_vec ();
+  T *rv = retval.rwdata ();
   octave_idx_type n = retval.numel ();
 
   const T *tv = tval.data ();
@@ -8351,7 +8351,7 @@
     }
 
   retval.clear (1, l);
-  T *dest = retval.fortran_vec ();
+  T *dest = retval.rwdata ();
   l = 0;
   for (octave_idx_type i = 0; i < n; i++)
     {
--- a/libinterp/corefcn/dot.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/dot.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -144,7 +144,7 @@
 
           F77_XFCN (cdotc3, CDOTC3, (m, n, k,
                                      F77_CONST_CMPLX_ARG (x.data ()), F77_CONST_CMPLX_ARG (y.data ()),
-                                     F77_CMPLX_ARG (z.fortran_vec ())));
+                                     F77_CMPLX_ARG (z.rwdata ())));
           retval = z;
         }
       else
@@ -156,7 +156,7 @@
 
           F77_XFCN (zdotc3, ZDOTC3, (m, n, k,
                                      F77_CONST_DBLE_CMPLX_ARG (x.data ()), F77_CONST_DBLE_CMPLX_ARG (y.data ()),
-                                     F77_DBLE_CMPLX_ARG (z.fortran_vec ())));
+                                     F77_DBLE_CMPLX_ARG (z.rwdata ())));
           retval = z;
         }
     }
@@ -170,7 +170,7 @@
           FloatNDArray z (dimz);
 
           F77_XFCN (sdot3, SDOT3, (m, n, k, x.data (), y.data (),
-                                   z.fortran_vec ()));
+                                   z.rwdata ()));
           retval = z;
         }
       else
@@ -181,7 +181,7 @@
           NDArray z (dimz);
 
           F77_XFCN (ddot3, DDOT3, (m, n, k, x.data (), y.data (),
-                                   z.fortran_vec ()));
+                                   z.rwdata ()));
           retval = z;
         }
     }
@@ -263,7 +263,7 @@
   F77_XFCN (cmatm3, CMATM3, (m, n, k, np,
                              F77_CONST_CMPLX_ARG (x.data ()),
                              F77_CONST_CMPLX_ARG (y.data ()),
-                             F77_CMPLX_ARG (z.fortran_vec ())));
+                             F77_CMPLX_ARG (z.rwdata ())));
 }
 
 template <>
@@ -275,7 +275,7 @@
   F77_XFCN (zmatm3, ZMATM3, (m, n, k, np,
                              F77_CONST_DBLE_CMPLX_ARG (x.data ()),
                              F77_CONST_DBLE_CMPLX_ARG (y.data ()),
-                             F77_DBLE_CMPLX_ARG (z.fortran_vec ())));
+                             F77_DBLE_CMPLX_ARG (z.rwdata ())));
 }
 
 template <>
@@ -285,7 +285,7 @@
 {
   F77_XFCN (smatm3, SMATM3, (m, n, k, np,
                              x.data (), y.data (),
-                             z.fortran_vec ()));
+                             z.rwdata ()));
 }
 
 template <>
@@ -295,7 +295,7 @@
 {
   F77_XFCN (dmatm3, DMATM3, (m, n, k, np,
                              x.data (), y.data (),
-                             z.fortran_vec ()));
+                             z.rwdata ()));
 }
 
 static void
--- a/libinterp/corefcn/ellipj.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/ellipj.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -123,10 +123,10 @@
           NDArray err (sz_u);
 
           const Complex *pu = u.data ();
-          Complex *psn = sn.fortran_vec ();
-          Complex *pcn = cn.fortran_vec ();
-          Complex *pdn = dn.fortran_vec ();
-          double *perr = err.fortran_vec ();
+          Complex *psn = sn.rwdata ();
+          Complex *pcn = cn.rwdata ();
+          Complex *pdn = dn.rwdata ();
+          double *perr = err.rwdata ();
           octave_idx_type nel = u.numel ();
 
           for (octave_idx_type i = 0; i < nel; i++)
@@ -153,10 +153,10 @@
               NDArray err (sz_m);
 
               const double *pm = m.data ();
-              double *psn = sn.fortran_vec ();
-              double *pcn = cn.fortran_vec ();
-              double *pdn = dn.fortran_vec ();
-              double *perr = err.fortran_vec ();
+              double *psn = sn.rwdata ();
+              double *pcn = cn.rwdata ();
+              double *pdn = dn.rwdata ();
+              double *perr = err.rwdata ();
               octave_idx_type nel = m.numel ();
 
               for (octave_idx_type i = 0; i < nel; i++)
@@ -173,10 +173,10 @@
               NDArray err (sz_m);
 
               const double *pm = m.data ();
-              Complex *psn = sn.fortran_vec ();
-              Complex *pcn = cn.fortran_vec ();
-              Complex *pdn = dn.fortran_vec ();
-              double *perr = err.fortran_vec ();
+              Complex *psn = sn.rwdata ();
+              Complex *pcn = cn.rwdata ();
+              Complex *pdn = dn.rwdata ();
+              double *perr = err.rwdata ();
               octave_idx_type nel = m.numel ();
 
               for (octave_idx_type i = 0; i < nel; i++)
@@ -222,10 +222,10 @@
 
                   const double *pu = u.data ();
                   const double *pm = m.data ();
-                  double *psn = sn.fortran_vec ();
-                  double *pcn = cn.fortran_vec ();
-                  double *pdn = dn.fortran_vec ();
-                  double *perr = err.fortran_vec ();
+                  double *psn = sn.rwdata ();
+                  double *pcn = cn.rwdata ();
+                  double *pdn = dn.rwdata ();
+                  double *perr = err.rwdata ();
                   octave_idx_type nel = m.numel ();
 
                   for (octave_idx_type i = 0; i < nel; i++)
@@ -270,10 +270,10 @@
 
                   const Complex *pu = u.data ();
                   const double  *pm = m.data ();
-                  Complex *psn = sn.fortran_vec ();
-                  Complex *pcn = cn.fortran_vec ();
-                  Complex *pdn = dn.fortran_vec ();
-                  double *perr = err.fortran_vec ();
+                  Complex *psn = sn.rwdata ();
+                  Complex *pcn = cn.rwdata ();
+                  Complex *pdn = dn.rwdata ();
+                  double *perr = err.rwdata ();
                   octave_idx_type nel = m.numel ();
 
                   for (octave_idx_type i = 0; i < nel; i++)
--- a/libinterp/corefcn/filter.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/filter.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -164,8 +164,8 @@
       // is common to both branches can be pulled out here without affecting
       // correctness or speed.
 
-      T *py = y.fortran_vec ();
-      T *psi = si.fortran_vec ();
+      T *py = y.rwdata ();
+      T *psi = si.rwdata ();
       const T *pb = b.data ();
       const T *px = x.data ();
       psi += si_offset;
--- a/libinterp/corefcn/gcd.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/gcd.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -351,9 +351,9 @@
       bool inca = aa.numel () != 1;
       bool incb = bb.numel () != 1;
 
-      T *gptr = gg.fortran_vec ();
-      T *xptr = xx.fortran_vec ();
-      T *yptr = yy.fortran_vec ();
+      T *gptr = gg.rwdata ();
+      T *xptr = xx.rwdata ();
+      T *yptr = yy.rwdata ();
 
       octave_idx_type n = gg.numel ();
       for (octave_idx_type i = 0; i < n; i++)
--- a/libinterp/corefcn/gl-render.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/gl-render.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -1222,7 +1222,7 @@
   uint8NDArray pix(dim_vector (3, width, height), 0);
 
   m_glfcns.glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE,
-                        pix.fortran_vec ());
+                        pix.rwdata ());
 
   // Permute and flip data
   Array<octave_idx_type> perm (dim_vector (3, 1));
@@ -3461,7 +3461,7 @@
                       vertex_data::vertex_data_rep *vv
                         = vdata[i+j*fr].get_rep ();
 
-                      tess.add_vertex (vv->m_coords.fortran_vec (), vv);
+                      tess.add_vertex (vv->m_coords.rwdata (), vv);
                     }
 
                   if (count_f(i) > 0)
@@ -3501,7 +3501,7 @@
                             }
                         }
 
-                      tess.add_vertex (vv->m_coords.fortran_vec (), vv);
+                      tess.add_vertex (vv->m_coords.rwdata (), vv);
                     }
 
                   tess.end_contour ();
@@ -3631,7 +3631,7 @@
                     {
                       vertex_data::vertex_data_rep *vv
                         = vdata[i+j*fr].get_rep ();
-                      tess.add_vertex (vv->m_coords.fortran_vec (), vv);
+                      tess.add_vertex (vv->m_coords.rwdata (), vv);
                     }
 
                   tess.end_contour ();
--- a/libinterp/corefcn/graphics.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/graphics.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -408,7 +408,7 @@
   // It would be nice if Matrix had a ctor allowing to do the
   // following without a copy
   Matrix cmap (256, 3, 0.0);
-  std::copy (cmapv, cmapv + (256*3), cmap.fortran_vec ());
+  std::copy (cmapv, cmapv + (256*3), cmap.rwdata ());
   return cmap;
 }
 
@@ -1222,7 +1222,7 @@
   octave_idx_type lda = a.numel () / static_cast<octave_idx_type> (3);
   octave_idx_type nc = cmap.rows ();
 
-  double *av = a.fortran_vec ();
+  double *av = a.rwdata ();
   const double *cmapv = cmap.data ();
 
   double clim_0 = clim(0);
@@ -5760,7 +5760,7 @@
   };
   Matrix m (4, 8);
 
-  memcpy (m.fortran_vec (), data, sizeof (double)*32);
+  memcpy (m.rwdata (), data, sizeof (double)*32);
 
   return m;
 }
@@ -5770,7 +5770,7 @@
 {
   ColumnVector retval (4, 1.0);
 
-  memcpy (retval.fortran_vec (), m.data (), sizeof (double)*3);
+  memcpy (retval.rwdata (), m.data (), sizeof (double)*3);
 
   return retval;
 }
--- a/libinterp/corefcn/graphics.in.h	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/graphics.in.h	Wed Dec 27 16:55:14 2023 -0800
@@ -127,7 +127,7 @@
   {
     Matrix retval (m.rows (), m.cols ());
 
-    do_scale (m.data (), retval.fortran_vec (), m.numel ());
+    do_scale (m.data (), retval.rwdata (), m.numel ());
 
     return retval;
   }
@@ -136,7 +136,7 @@
   {
     NDArray retval (m.dims ());
 
-    do_scale (m.data (), retval.fortran_vec (), m.numel ());
+    do_scale (m.data (), retval.rwdata (), m.numel ());
 
     return retval;
   }
@@ -168,7 +168,7 @@
   {
     Matrix retval (m.rows (), m.cols ());
 
-    do_scale (m.data (), retval.fortran_vec (), m.numel ());
+    do_scale (m.data (), retval.rwdata (), m.numel ());
 
     return retval;
   }
@@ -177,7 +177,7 @@
   {
     NDArray retval (m.dims ());
 
-    do_scale (m.data (), retval.fortran_vec (), m.numel ());
+    do_scale (m.data (), retval.rwdata (), m.numel ());
 
     return retval;
   }
--- a/libinterp/corefcn/kron.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/kron.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -64,7 +64,7 @@
   octave_idx_type ncb = b.cols ();
 
   MArray<T> c (dim_vector (nra*nrb, nca*ncb));
-  T *cv = c.fortran_vec ();
+  T *cv = c.rwdata ();
 
   for (octave_idx_type ja = 0; ja < nca; ja++)
     {
--- a/libinterp/corefcn/ls-mat4.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/ls-mat4.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -340,7 +340,7 @@
             for (octave_idx_type i = 0; i < nr - 1; i++)
               c.xelem (i) = dtmp[i] - 1;
             nc_new = dtmp[nr - 1];
-            read_mat_binary_data (is, data.fortran_vec (), prec, nr - 1,
+            read_mat_binary_data (is, data.rwdata (), prec, nr - 1,
                                   swap, flt_fmt);
             read_mat_binary_data (is, dtmp, prec, 1, swap, flt_fmt);
 
@@ -353,7 +353,7 @@
       {
         Matrix re (nr, nc);
 
-        read_mat_binary_data (is, re.fortran_vec (), prec, dlen, swap, flt_fmt);
+        read_mat_binary_data (is, re.rwdata (), prec, dlen, swap, flt_fmt);
 
         if (! is)
           error ("load: reading matrix data for '%s'", name);
@@ -362,7 +362,7 @@
           {
             Matrix im (nr, nc);
 
-            read_mat_binary_data (is, im.fortran_vec (), prec, dlen, swap,
+            read_mat_binary_data (is, im.rwdata (), prec, dlen, swap,
                                   flt_fmt);
 
             if (! is)
--- a/libinterp/corefcn/ls-mat5.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/ls-mat5.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -382,7 +382,7 @@
                                                                         \
     octave_idx_type n = re.numel ();                                    \
     tmp_pos = is.tellg ();                                              \
-    read_mat5_integer_data (is, re.fortran_vec (), n, swap,             \
+    read_mat5_integer_data (is, re.rwdata (), n, swap,             \
                             static_cast<enum mat5_data_type> (type));   \
                                                                         \
     if (! is)                                                           \
@@ -401,7 +401,7 @@
                  retval.c_str ());                                      \
                                                                         \
         n = im.numel ();                                                \
-        read_mat5_binary_data (is, im.fortran_vec (), n, swap,          \
+        read_mat5_binary_data (is, im.rwdata (), n, swap,          \
                                static_cast<enum mat5_data_type> (type), flt_fmt); \
                                                                         \
         if (! is)                                                       \
@@ -808,7 +808,7 @@
         if (imag)
           {
             re = NDArray (dim_vector (nnz, 1));
-            data = re.fortran_vec ();
+            data = re.rwdata ();
           }
 
         tmp_pos = is.tellg ();
@@ -832,7 +832,7 @@
               error ("load: reading sparse matrix data for '%s'",
                      retval.c_str ());
 
-            read_mat5_binary_data (is, im.fortran_vec (), nnz, swap,
+            read_mat5_binary_data (is, im.rwdata (), nnz, swap,
                                    static_cast<enum mat5_data_type> (type),
                                    flt_fmt);
 
@@ -1325,7 +1325,7 @@
 
         octave_idx_type n = re.numel ();
         tmp_pos = is.tellg ();
-        read_mat5_binary_data (is, re.fortran_vec (), n, swap,
+        read_mat5_binary_data (is, re.rwdata (), n, swap,
                                static_cast<enum mat5_data_type> (type),
                                flt_fmt);
 
@@ -1345,7 +1345,7 @@
               error ("load: reading matrix data for '%s'", retval.c_str ());
 
             n = im.numel ();
-            read_mat5_binary_data (is, im.fortran_vec (), n, swap,
+            read_mat5_binary_data (is, im.rwdata (), n, swap,
                                    static_cast<enum mat5_data_type> (type),
                                    flt_fmt);
 
@@ -1382,7 +1382,7 @@
 
         octave_idx_type n = re.numel ();
         tmp_pos = is.tellg ();
-        read_mat5_binary_data (is, re.fortran_vec (), n, swap,
+        read_mat5_binary_data (is, re.rwdata (), n, swap,
                                static_cast<enum mat5_data_type> (type),
                                flt_fmt);
 
@@ -1415,7 +1415,7 @@
               error ("load: reading matrix data for '%s'", retval.c_str ());
 
             n = im.numel ();
-            read_mat5_binary_data (is, im.fortran_vec (), n, swap,
+            read_mat5_binary_data (is, im.rwdata (), n, swap,
                                    static_cast<enum mat5_data_type> (type),
                                    flt_fmt);
 
--- a/libinterp/corefcn/mex.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/mex.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -1955,7 +1955,7 @@
 
     Array<ELT_T> val (dv);
 
-    ELT_T *ptr = val.fortran_vec ();
+    ELT_T *ptr = val.rwdata ();
 
     mwSize nel = get_number_of_elements ();
 
@@ -1981,7 +1981,7 @@
 
     ARRAY_T val (dv);
 
-    ARRAY_ELT_T *ptr = val.fortran_vec ();
+    ARRAY_ELT_T *ptr = val.rwdata ();
 
     mwSize nel = get_number_of_elements ();
 
@@ -2244,7 +2244,7 @@
 
     Array<std::complex<T>> val (dv);
 
-    std::complex<T> *ptr = val.fortran_vec ();
+    std::complex<T> *ptr = val.rwdata ();
 
     T *ppi = static_cast<T *> (m_pi);
 
@@ -2834,7 +2834,7 @@
       {
         Cell c (dv);
 
-        octave_value *p = c.fortran_vec ();
+        octave_value *p = c.rwdata ();
 
         mwIndex k = 0;
         for (mwIndex j = i; j < ntot; j += m_nfields)
@@ -2931,7 +2931,7 @@
 
     mwSize nel = get_number_of_elements ();
 
-    octave_value *p = c.fortran_vec ();
+    octave_value *p = c.rwdata ();
 
     for (mwIndex i = 0; i < nel; i++)
       p[i] = mxArray::as_octave_value (m_data[i]);
--- a/libinterp/corefcn/oct-map.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/oct-map.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -151,7 +151,7 @@
   if (perm.numel () != n)
     perm.clear (1, n);
 
-  return equal_up_to_order (other, perm.fortran_vec ());
+  return equal_up_to_order (other, perm.rwdata ());
 }
 
 string_vector
--- a/libinterp/corefcn/oct-stream.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/oct-stream.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -4447,7 +4447,7 @@
       else
         mval.resize (max_size, 1, 0.0);
 
-      data = mval.fortran_vec ();
+      data = mval.rwdata ();
     }
 
   if (! discard)
@@ -4687,7 +4687,7 @@
                       else                                              \
                         mval.resize (max_size, 1, 0.0);                 \
                                                                         \
-                      data = mval.fortran_vec ();                       \
+                      data = mval.rwdata ();                       \
                     }                                                   \
                                                                         \
                   data[data_index++] = static_cast<unsigned char>       \
@@ -4789,7 +4789,7 @@
       max_size = 32;
     }
 
-  double *data = mval.fortran_vec ();
+  double *data = mval.rwdata ();
 
   if (isp)
     {
@@ -4851,7 +4851,7 @@
                   else
                     mval.resize (max_size, 1, 0.0);
 
-                  data = mval.fortran_vec ();
+                  data = mval.rwdata ();
                 }
 
               std::string fmt = elt->text;
@@ -6400,7 +6400,7 @@
 
   DST_T conv (dim_vector (nr, nc));
 
-  dst_elt_type *conv_data = conv.fortran_vec ();
+  dst_elt_type *conv_data = conv.rwdata ();
 
   octave_idx_type j = 0;
 
--- a/libinterp/corefcn/ordqz.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/ordqz.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -345,18 +345,18 @@
 
       F77_XFCN (ztgsen, ZTGSEN,
                 (ijob, wantq, wantz,
-                 select.fortran_vec (), nn,
-                 F77_DBLE_CMPLX_ARG (caa.fortran_vec ()), nn,
-                 F77_DBLE_CMPLX_ARG (cbb.fortran_vec ()), nn,
-                 F77_DBLE_CMPLX_ARG (alpha.fortran_vec ()),
-                 F77_DBLE_CMPLX_ARG (beta.fortran_vec ()),
-                 F77_DBLE_CMPLX_ARG (cqq.fortran_vec ()), nn,
-                 F77_DBLE_CMPLX_ARG (czz.fortran_vec ()), nn,
+                 select.rwdata (), nn,
+                 F77_DBLE_CMPLX_ARG (caa.rwdata ()), nn,
+                 F77_DBLE_CMPLX_ARG (cbb.rwdata ()), nn,
+                 F77_DBLE_CMPLX_ARG (alpha.rwdata ()),
+                 F77_DBLE_CMPLX_ARG (beta.rwdata ()),
+                 F77_DBLE_CMPLX_ARG (cqq.rwdata ()), nn,
+                 F77_DBLE_CMPLX_ARG (czz.rwdata ()), nn,
                  mm,
                  pl, pr,
                  nullptr,
-                 F77_DBLE_CMPLX_ARG (work3.fortran_vec ()), lrwork3,
-                 iwork.fortran_vec (), liwork,
+                 F77_DBLE_CMPLX_ARG (work3.rwdata ()), lrwork3,
+                 iwork.rwdata (), liwork,
                  info));
       if (info != 0)
         error_with_id ("Octave:ordqz:ztgsen_failed",
@@ -395,8 +395,8 @@
               F77_INT ihi = 2;
               F77_INT lwork = 4;
               F77_INT info = 0;
-              double *aa_vec = aa.fortran_vec ();
-              double *bb_vec = bb.fortran_vec ();
+              double *aa_vec = aa.rwdata ();
+              double *bb_vec = bb.rwdata ();
 
               F77_XFCN (dhgeqz, DHGEQZ,
                         (F77_CONST_CHAR_ARG2 (&qz_job, 1),
@@ -466,19 +466,19 @@
 
       F77_XFCN (dtgsen, DTGSEN,
                 (ijob, wantq, wantz,
-                 select.fortran_vec (), nn,
-                 aa.fortran_vec (), nn,
-                 bb.fortran_vec (), nn,
-                 alphar.fortran_vec (),
-                 alphai.fortran_vec (),
-                 beta.fortran_vec (),
-                 qq.fortran_vec (), nn,
-                 zz.fortran_vec (), nn,
+                 select.rwdata (), nn,
+                 aa.rwdata (), nn,
+                 bb.rwdata (), nn,
+                 alphar.rwdata (),
+                 alphai.rwdata (),
+                 beta.rwdata (),
+                 qq.rwdata (), nn,
+                 zz.rwdata (), nn,
                  mm,
                  pl, pr,
                  nullptr,
-                 rwork3.fortran_vec (), lrwork3,
-                 iwork.fortran_vec (), liwork,
+                 rwork3.rwdata (), lrwork3,
+                 iwork.rwdata (), liwork,
                  info));
       if (info != 0)
         error("ordqz: failed to reorder eigenvalues");
--- a/libinterp/corefcn/ordschur.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/ordschur.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -130,10 +130,10 @@
 
           F77_XFCN (ztrsen, ztrsen,
                     (F77_CONST_CHAR_ARG ("N"), F77_CONST_CHAR_ARG ("V"),
-                     sel.data (), n, F77_DBLE_CMPLX_ARG (S.fortran_vec ()), n,
-                     F77_DBLE_CMPLX_ARG (U.fortran_vec ()), n,
-                     F77_DBLE_CMPLX_ARG (w.fortran_vec ()), m, cond1, cond2,
-                     F77_DBLE_CMPLX_ARG (work.fortran_vec ()), n,
+                     sel.data (), n, F77_DBLE_CMPLX_ARG (S.rwdata ()), n,
+                     F77_DBLE_CMPLX_ARG (U.rwdata ()), n,
+                     F77_DBLE_CMPLX_ARG (w.rwdata ()), m, cond1, cond2,
+                     F77_DBLE_CMPLX_ARG (work.rwdata ()), n,
                      info));
 
           PREPARE_OUTPUT()
@@ -146,9 +146,9 @@
 
           F77_XFCN (dtrsen, dtrsen,
                     (F77_CONST_CHAR_ARG ("N"), F77_CONST_CHAR_ARG ("V"),
-                     sel.data (), n, S.fortran_vec (), n, U.fortran_vec (), n,
-                     w.fortran_vec (), wi.fortran_vec (), m, cond1, cond2,
-                     work.fortran_vec (), n, iwork.fortran_vec (), n, info));
+                     sel.data (), n, S.rwdata (), n, U.rwdata (), n,
+                     w.rwdata (), wi.rwdata (), m, cond1, cond2,
+                     work.rwdata (), n, iwork.rwdata (), n, info));
 
           PREPARE_OUTPUT ()
         }
@@ -161,10 +161,10 @@
 
           F77_XFCN (ctrsen, ctrsen,
                     (F77_CONST_CHAR_ARG ("N"), F77_CONST_CHAR_ARG ("V"),
-                     sel.data (), n, F77_CMPLX_ARG (S.fortran_vec ()), n,
-                     F77_CMPLX_ARG (U.fortran_vec ()), n,
-                     F77_CMPLX_ARG (w.fortran_vec ()), m, cond1, cond2,
-                     F77_CMPLX_ARG (work.fortran_vec ()), n,
+                     sel.data (), n, F77_CMPLX_ARG (S.rwdata ()), n,
+                     F77_CMPLX_ARG (U.rwdata ()), n,
+                     F77_CMPLX_ARG (w.rwdata ()), m, cond1, cond2,
+                     F77_CMPLX_ARG (work.rwdata ()), n,
                      info));
 
           PREPARE_OUTPUT ()
@@ -177,9 +177,9 @@
 
           F77_XFCN (strsen, strsen,
                     (F77_CONST_CHAR_ARG ("N"), F77_CONST_CHAR_ARG ("V"),
-                     sel.data (), n, S.fortran_vec (), n, U.fortran_vec (), n,
-                     w.fortran_vec (), wi.fortran_vec (), m, cond1, cond2,
-                     work.fortran_vec (), n, iwork.fortran_vec (), n, info));
+                     sel.data (), n, S.rwdata (), n, U.rwdata (), n,
+                     w.rwdata (), wi.rwdata (), m, cond1, cond2,
+                     work.rwdata (), n, iwork.rwdata (), n, info));
 
           PREPARE_OUTPUT ()
         }
--- a/libinterp/corefcn/perms.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/perms.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -101,7 +101,7 @@
   // Set up result array
   octave_idx_type n = static_cast<octave_idx_type> (nr);
   Array<T> res (dim_vector (n, m));
-  T *Res = res.fortran_vec ();
+  T *Res = res.rwdata ();
 
   // Do the actual job
   octave_idx_type i = 0;
@@ -165,7 +165,7 @@
   // Set up result array
   octave_idx_type n = static_cast<octave_idx_type> (nr);
   Array<T> res (dim_vector (n, m));
-  T *Res = res.fortran_vec ();
+  T *Res = res.rwdata ();
 
   // Do the actual job
   octave_idx_type i = 0;
--- a/libinterp/corefcn/psi.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/psi.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -93,7 +93,7 @@
           A ## NDArray psi_z (z.dims ());                       \
                                                                 \
           const E *zv = z.data ();                              \
-          E *psi_zv = psi_z.fortran_vec ();                     \
+          E *psi_zv = psi_z.rwdata ();                     \
           const octave_idx_type n = z.numel ();                 \
           for (octave_idx_type i = 0; i < n; i++)               \
             *psi_zv++ = math::psi (*zv++);              \
@@ -130,7 +130,7 @@
           A ## NDArray psi_z (z.dims ());                               \
                                                                         \
           const E *zv = z.data ();                                      \
-          E *psi_zv = psi_z.fortran_vec ();                             \
+          E *psi_zv = psi_z.rwdata ();                             \
           const octave_idx_type n = z.numel ();                         \
           for (octave_idx_type i = 0; i < n; i++)                       \
             {                                                           \
--- a/libinterp/corefcn/quadcc.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/quadcc.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -1672,7 +1672,7 @@
     {
       // Intervals around singularities.
       NDArray arr = args(4).array_value ();
-      sing = arr.fortran_vec ();
+      sing = arr.rwdata ();
       iivals[0] = a;
       std::copy_n (sing, nivals-1, iivals+1);
       iivals[nivals] = b;
--- a/libinterp/corefcn/qz.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/qz.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -219,8 +219,8 @@
   // Initialize Q, Z to identity matrix if either is needed
   if (comp_q == 'V' || comp_z == 'V')
     {
-      double *QQptr = QQ.fortran_vec ();
-      double *ZZptr = ZZ.fortran_vec ();
+      double *QQptr = QQ.rwdata ();
+      double *ZZptr = ZZ.rwdata ();
       std::fill_n (QQptr, QQ.numel (), 0.0);
       std::fill_n (ZZptr, ZZ.numel (), 0.0);
       for (F77_INT i = 0; i < nn; i++)
@@ -254,10 +254,10 @@
 
       F77_XFCN (zggbal, ZGGBAL,
                 (F77_CONST_CHAR_ARG2 (&bal_job, 1),
-                 nn, F77_DBLE_CMPLX_ARG (caa.fortran_vec ()), nn,
-                 F77_DBLE_CMPLX_ARG (cbb.fortran_vec ()),
-                 nn, ilo, ihi, lscale.fortran_vec (),
-                 rscale.fortran_vec (), work.fortran_vec (), info
+                 nn, F77_DBLE_CMPLX_ARG (caa.rwdata ()), nn,
+                 F77_DBLE_CMPLX_ARG (cbb.rwdata ()),
+                 nn, ilo, ihi, lscale.rwdata (),
+                 rscale.rwdata (), work.rwdata (), info
                  F77_CHAR_ARG_LEN (1)));
     }
   else
@@ -269,9 +269,9 @@
 
       F77_XFCN (dggbal, DGGBAL,
                 (F77_CONST_CHAR_ARG2 (&bal_job, 1),
-                 nn, aa.fortran_vec (), nn, bb.fortran_vec (),
-                 nn, ilo, ihi, lscale.fortran_vec (),
-                 rscale.fortran_vec (), work.fortran_vec (), info
+                 nn, aa.rwdata (), nn, bb.rwdata (),
+                 nn, ilo, ihi, lscale.rwdata (),
+                 rscale.rwdata (), work.rwdata (), info
                  F77_CHAR_ARG_LEN (1)));
     }
 
@@ -294,10 +294,10 @@
       F77_XFCN (zgghrd, ZGGHRD,
                 (F77_CONST_CHAR_ARG2 (&comp_q, 1),
                  F77_CONST_CHAR_ARG2 (&comp_z, 1),
-                 nn, ilo, ihi, F77_DBLE_CMPLX_ARG (caa.fortran_vec ()),
-                 nn, F77_DBLE_CMPLX_ARG (cbb.fortran_vec ()), nn,
-                 F77_DBLE_CMPLX_ARG (CQ.fortran_vec ()), nn,
-                 F77_DBLE_CMPLX_ARG (CZ.fortran_vec ()), nn, info
+                 nn, ilo, ihi, F77_DBLE_CMPLX_ARG (caa.rwdata ()),
+                 nn, F77_DBLE_CMPLX_ARG (cbb.rwdata ()), nn,
+                 F77_DBLE_CMPLX_ARG (CQ.rwdata ()), nn,
+                 F77_DBLE_CMPLX_ARG (CZ.rwdata ()), nn, info
                  F77_CHAR_ARG_LEN (1)
                  F77_CHAR_ARG_LEN (1)));
 
@@ -308,14 +308,14 @@
                  F77_CONST_CHAR_ARG2 (&comp_q, 1),
                  F77_CONST_CHAR_ARG2 (&comp_z, 1),
                  nn, ilo, ihi,
-                 F77_DBLE_CMPLX_ARG (caa.fortran_vec ()), nn,
-                 F77_DBLE_CMPLX_ARG (cbb.fortran_vec ()), nn,
-                 F77_DBLE_CMPLX_ARG (xalpha.fortran_vec ()),
-                 F77_DBLE_CMPLX_ARG (xbeta.fortran_vec ()),
-                 F77_DBLE_CMPLX_ARG (CQ.fortran_vec ()), nn,
-                 F77_DBLE_CMPLX_ARG (CZ.fortran_vec ()), nn,
-                 F77_DBLE_CMPLX_ARG (cwork.fortran_vec ()), nn,
-                 rwork.fortran_vec (), info
+                 F77_DBLE_CMPLX_ARG (caa.rwdata ()), nn,
+                 F77_DBLE_CMPLX_ARG (cbb.rwdata ()), nn,
+                 F77_DBLE_CMPLX_ARG (xalpha.rwdata ()),
+                 F77_DBLE_CMPLX_ARG (xbeta.rwdata ()),
+                 F77_DBLE_CMPLX_ARG (CQ.rwdata ()), nn,
+                 F77_DBLE_CMPLX_ARG (CZ.rwdata ()), nn,
+                 F77_DBLE_CMPLX_ARG (cwork.rwdata ()), nn,
+                 rwork.rwdata (), info
                  F77_CHAR_ARG_LEN (1)
                  F77_CHAR_ARG_LEN (1)
                  F77_CHAR_ARG_LEN (1)));
@@ -327,7 +327,7 @@
                     (F77_CONST_CHAR_ARG2 (&bal_job, 1),
                      F77_CONST_CHAR_ARG2 ("L", 1),
                      nn, ilo, ihi, lscale.data (), rscale.data (),
-                     nn, F77_DBLE_CMPLX_ARG (CQ.fortran_vec ()), nn, info
+                     nn, F77_DBLE_CMPLX_ARG (CQ.rwdata ()), nn, info
                      F77_CHAR_ARG_LEN (1)
                      F77_CHAR_ARG_LEN (1)));
         }
@@ -339,7 +339,7 @@
                     (F77_CONST_CHAR_ARG2 (&bal_job, 1),
                      F77_CONST_CHAR_ARG2 ("R", 1),
                      nn, ilo, ihi, lscale.data (), rscale.data (),
-                     nn, F77_DBLE_CMPLX_ARG (CZ.fortran_vec ()), nn, info
+                     nn, F77_DBLE_CMPLX_ARG (CZ.rwdata ()), nn, info
                      F77_CHAR_ARG_LEN (1)
                      F77_CHAR_ARG_LEN (1)));
         }
@@ -391,9 +391,9 @@
       F77_XFCN (dgghrd, DGGHRD,
                 (F77_CONST_CHAR_ARG2 (&comp_q, 1),
                  F77_CONST_CHAR_ARG2 (&comp_z, 1),
-                 nn, ilo, ihi, aa.fortran_vec (),
-                 nn, bb.fortran_vec (), nn, QQ.fortran_vec (), nn,
-                 ZZ.fortran_vec (), nn, info
+                 nn, ilo, ihi, aa.rwdata (),
+                 nn, bb.rwdata (), nn, QQ.rwdata (), nn,
+                 ZZ.rwdata (), nn, info
                  F77_CHAR_ARG_LEN (1)
                  F77_CHAR_ARG_LEN (1)));
 
@@ -405,10 +405,10 @@
                 (F77_CONST_CHAR_ARG2 (&qz_job, 1),
                  F77_CONST_CHAR_ARG2 (&comp_q, 1),
                  F77_CONST_CHAR_ARG2 (&comp_z, 1),
-                 nn, ilo, ihi, aa.fortran_vec (), nn, bb.fortran_vec (),
-                 nn, alphar.fortran_vec (), alphai.fortran_vec (),
-                 betar.fortran_vec (), QQ.fortran_vec (), nn,
-                 ZZ.fortran_vec (), nn, work.fortran_vec (), nn, info
+                 nn, ilo, ihi, aa.rwdata (), nn, bb.rwdata (),
+                 nn, alphar.rwdata (), alphai.rwdata (),
+                 betar.rwdata (), QQ.rwdata (), nn,
+                 ZZ.rwdata (), nn, work.rwdata (), nn, info
                  F77_CHAR_ARG_LEN (1)
                  F77_CHAR_ARG_LEN (1)
                  F77_CHAR_ARG_LEN (1)));
@@ -419,7 +419,7 @@
                     (F77_CONST_CHAR_ARG2 (&bal_job, 1),
                      F77_CONST_CHAR_ARG2 ("L", 1),
                      nn, ilo, ihi, lscale.data (), rscale.data (),
-                     nn, QQ.fortran_vec (), nn, info
+                     nn, QQ.rwdata (), nn, info
                      F77_CHAR_ARG_LEN (1)
                      F77_CHAR_ARG_LEN (1)));
 
@@ -436,7 +436,7 @@
                     (F77_CONST_CHAR_ARG2 (&bal_job, 1),
                      F77_CONST_CHAR_ARG2 ("R", 1),
                      nn, ilo, ihi, lscale.data (), rscale.data (),
-                     nn, ZZ.fortran_vec (), nn, info
+                     nn, ZZ.rwdata (), nn, info
                      F77_CHAR_ARG_LEN (1)
                      F77_CHAR_ARG_LEN (1)));
 
@@ -469,12 +469,12 @@
           F77_XFCN (ztgevc, ZTGEVC,
                     (F77_CONST_CHAR_ARG2 (&side, 1),
                      F77_CONST_CHAR_ARG2 (&howmany, 1),
-                     select, nn, F77_DBLE_CMPLX_ARG (caa.fortran_vec ()), nn,
-                     F77_DBLE_CMPLX_ARG (cbb.fortran_vec ()),
-                     nn, F77_DBLE_CMPLX_ARG (CVL.fortran_vec ()), nn,
-                     F77_DBLE_CMPLX_ARG (CVR.fortran_vec ()), nn, nn,
-                     m, F77_DBLE_CMPLX_ARG (cwork2.fortran_vec ()),
-                     rwork2.fortran_vec (), info
+                     select, nn, F77_DBLE_CMPLX_ARG (caa.rwdata ()), nn,
+                     F77_DBLE_CMPLX_ARG (cbb.rwdata ()),
+                     nn, F77_DBLE_CMPLX_ARG (CVL.rwdata ()), nn,
+                     F77_DBLE_CMPLX_ARG (CVR.rwdata ()), nn, nn,
+                     m, F77_DBLE_CMPLX_ARG (cwork2.rwdata ()),
+                     rwork2.rwdata (), info
                      F77_CHAR_ARG_LEN (1)
                      F77_CHAR_ARG_LEN (1)));
         }
@@ -491,9 +491,9 @@
           F77_XFCN (dtgevc, DTGEVC,
                     (F77_CONST_CHAR_ARG2 (&side, 1),
                      F77_CONST_CHAR_ARG2 (&howmany, 1),
-                     select, nn, aa.fortran_vec (), nn, bb.fortran_vec (),
-                     nn, VL.fortran_vec (), nn, VR.fortran_vec (), nn, nn,
-                     m, work.fortran_vec (), info
+                     select, nn, aa.rwdata (), nn, bb.rwdata (),
+                     nn, VL.rwdata (), nn, VR.rwdata (), nn, nn,
+                     m, work.rwdata (), info
                      F77_CHAR_ARG_LEN (1)
                      F77_CHAR_ARG_LEN (1)));
         }
--- a/libinterp/corefcn/rand.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/rand.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -318,7 +318,7 @@
 
               octave_idx_type len = a.numel ();
               FloatNDArray m (dims);
-              float *v = m.fortran_vec ();
+              float *v = m.rwdata ();
 
               for (octave_idx_type i = 0; i < len; i++)
                 v[i] = rand::float_scalar (a(i));
@@ -342,7 +342,7 @@
 
               octave_idx_type len = a.numel ();
               NDArray m (dims);
-              double *v = m.fortran_vec ();
+              double *v = m.rwdata ();
 
               for (octave_idx_type i = 0; i < len; i++)
                 v[i] = rand::scalar (a(i));
@@ -1144,7 +1144,7 @@
 
   // Generate random numbers.
   NDArray r = rand::nd_array (dim_vector (1, m));
-  double *rvec = r.fortran_vec ();
+  double *rvec = r.rwdata ();
 
   octave_idx_type idx_len = (short_shuffle ? m : n);
   Array<octave_idx_type> idx;
@@ -1161,7 +1161,7 @@
       idx = Array<octave_idx_type> (dim_vector (1, idx_len));
     }
 
-  octave_idx_type *ivec = idx.fortran_vec ();
+  octave_idx_type *ivec = idx.rwdata ();
 
   for (octave_idx_type i = 0; i < idx_len; i++)
     ivec[i] = i;
--- a/libinterp/corefcn/sqrtm.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/sqrtm.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -68,7 +68,7 @@
   // given in Higham's paper.
 
   const octave_idx_type n = T.rows ();
-  element_type *Tp = T.fortran_vec ();
+  element_type *Tp = T.rwdata ();
   for (octave_idx_type j = 0; j < n; j++)
     {
       element_type *colj = Tp + n*j;
--- a/libinterp/corefcn/strfind.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/strfind.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -365,7 +365,7 @@
               ret.clear (dim_vector (1, retsiz));
               const char *src = str.data ();
               const char *reps = rep.data ();
-              char *dest = ret.fortran_vec ();
+              char *dest = ret.rwdata ();
 
               octave_idx_type k = 0;
               for (octave_idx_type i = 0; i < nidx; i++)
--- a/libinterp/corefcn/symrcm.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/symrcm.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -206,7 +206,7 @@
 
   OCTAVE_LOCAL_BUFFER (CMK_Node, Q, N+1);
   boolNDArray btmp (dim_vector (1, N), false);
-  bool *visit = btmp.fortran_vec ();
+  bool *visit = btmp.rwdata ();
 
   octave_idx_type qh = 0;
   octave_idx_type qt = 0;
@@ -512,7 +512,7 @@
   // that have degree==0 and build a CC of the graph.
 
   boolNDArray btmp (dim_vector (1, N), false);
-  bool *visit = btmp.fortran_vec ();
+  bool *visit = btmp.rwdata ();
 
   octave_quit ();
 
--- a/libinterp/corefcn/tril.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/tril.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -57,7 +57,7 @@
       octave_idx_type j2 = std::min (std::max (zero, nr + k), nc);
       octave_idx_type n = j1 * nr + ((j2 - j1) * (nr-(j1-k) + nr-(j2-1-k))) / 2;
       Array<T> r (dim_vector (n, 1));
-      T *rvec = r.fortran_vec ();
+      T *rvec = r.rwdata ();
       for (octave_idx_type j = 0; j < nc; j++)
         {
           octave_idx_type ii = std::min (std::max (zero, j - k), nr);
@@ -70,7 +70,7 @@
   else
     {
       Array<T> r (a.dims ());
-      T *rvec = r.fortran_vec ();
+      T *rvec = r.rwdata ();
       for (octave_idx_type j = 0; j < nc; j++)
         {
           octave_idx_type ii = std::min (std::max (zero, j - k), nr);
@@ -100,7 +100,7 @@
       octave_idx_type n
         = ((j2 - j1) * ((j1+1-k) + (j2-k))) / 2 + (nc - j2) * nr;
       Array<T> r (dim_vector (n, 1));
-      T *rvec = r.fortran_vec ();
+      T *rvec = r.rwdata ();
       for (octave_idx_type j = 0; j < nc; j++)
         {
           octave_idx_type ii = std::min (std::max (zero, j + 1 - k), nr);
@@ -113,7 +113,7 @@
   else
     {
       Array<T> r (a.dims ());
-      T *rvec = r.fortran_vec ();
+      T *rvec = r.rwdata ();
       for (octave_idx_type j = 0; j < nc; j++)
         {
           octave_idx_type ii = std::min (std::max (zero, j + 1 - k), nr);
--- a/libinterp/corefcn/typecast.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/typecast.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -81,7 +81,7 @@
     error ("typecast: incorrect number of input values to make output value");
 
   ArrayType retval (get_vec_dims (old_dims, n));
-  T *dest = retval.fortran_vec ();
+  T *dest = retval.rwdata ();
   std::memcpy (dest, data, n * sizeof (T));
 
   return retval;
@@ -100,7 +100,7 @@
     error ("typecast: incorrect number of input values to make output value");
 
   ArrayType retval (get_vec_dims (old_dims, n));
-  VT *dest = reinterpret_cast<VT *> (retval.fortran_vec ());
+  VT *dest = reinterpret_cast<VT *> (retval.rwdata ());
   std::memcpy (dest, data, n * sizeof (VT));
 
   return retval;
@@ -323,7 +323,7 @@
   ArrayType retval (get_vec_dims (bitp.dims (), n));
 
   const bool *bits = bitp.data ();
-  char *packed = reinterpret_cast<char *> (retval.fortran_vec ());
+  char *packed = reinterpret_cast<char *> (retval.rwdata ());
 
   octave_idx_type m = n * sizeof (T);
 
@@ -471,7 +471,7 @@
   boolNDArray retval (get_vec_dims (array.dims (), n));
 
   const char *packed = reinterpret_cast<const char *> (array.data ());
-  bool *bits = retval.fortran_vec ();
+  bool *bits = retval.rwdata ();
 
   octave_idx_type m = n / std::numeric_limits<unsigned char>::digits;
 
--- a/libinterp/corefcn/xdiv.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/corefcn/xdiv.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -713,7 +713,7 @@
   typedef typename MT::element_type T;
   const T *aa = a.data ();
   const S *dd = d.data ();
-  T *xx = x.fortran_vec ();
+  T *xx = x.rwdata ();
 
   for (octave_idx_type j = 0; j < l; j++)
     {
@@ -797,7 +797,7 @@
   typedef typename MT::element_type T;
   const T *aa = a.data ();
   const S *dd = d.data ();
-  T *xx = x.fortran_vec ();
+  T *xx = x.rwdata ();
 
   for (octave_idx_type j = 0; j < n; j++)
     {
@@ -878,7 +878,7 @@
   typedef typename MT::element_type T;
   const T *aa = a.data ();
   const S *dd = d.data ();
-  T *xx = x.fortran_vec ();
+  T *xx = x.rwdata ();
 
   for (octave_idx_type i = 0; i < lk; i++)
     xx[i] = (dd[i] != S () ? aa[i] / dd[i] : T ());
@@ -953,7 +953,7 @@
   typedef typename MT::element_type T;
   const T *aa = a.data ();
   const S *dd = d.data ();
-  T *xx = x.fortran_vec ();
+  T *xx = x.rwdata ();
 
   for (octave_idx_type i = 0; i < lk; i++)
     xx[i] = (dd[i] != S () ? aa[i] / dd[i] : T ());
--- a/libinterp/dldfcn/__delaunayn__.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/dldfcn/__delaunayn__.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -155,7 +155,7 @@
   if (n > dim + 1)
     {
       p = p.transpose ();
-      double *pt_array = p.fortran_vec ();
+      double *pt_array = p.rwdata ();
       boolT ismalloc = false;
 
       std::string cmd = "qhull d " + options;
--- a/libinterp/dldfcn/__glpk__.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/dldfcn/__glpk__.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -356,7 +356,7 @@
 
   Matrix C = args(0).xmatrix_value ("__glpk__: invalid value of C");
 
-  double *c = C.fortran_vec ();
+  double *c = C.rwdata ();
   Array<int> rn;
   Array<int> cn;
   ColumnVector a;
@@ -417,7 +417,7 @@
   //             for each constraint in the constraint matrix.
   Matrix B = args(2).xmatrix_value ("__glpk__: invalid value of B");
 
-  double *b = B.fortran_vec ();
+  double *b = B.rwdata ();
 
   // 4th Input.  An array of length mrowsc containing the lower
   //             bound on each of the variables.
@@ -426,7 +426,7 @@
   if (LB.numel () < mrowsc)
     error ("__glpk__: invalid dimensions for LB");
 
-  double *lb = LB.fortran_vec ();
+  double *lb = LB.rwdata ();
 
   // LB argument, default: Free
   Array<int> freeLB (dim_vector (mrowsc, 1));
@@ -448,7 +448,7 @@
   if (UB.numel () < mrowsc)
     error ("__glpk__: invalid dimensions for UB");
 
-  double *ub = UB.fortran_vec ();
+  double *ub = UB.rwdata ();
 
   Array<int> freeUB (dim_vector (mrowsc, 1));
   for (int i = 0; i < mrowsc; i++)
@@ -466,7 +466,7 @@
   //             in the constraint matrix.
   charMatrix CTYPE = args(5).xchar_matrix_value ("__glpk__: invalid value of CTYPE");
 
-  char *ctype = CTYPE.fortran_vec ();
+  char *ctype = CTYPE.rwdata ();
 
   // 7th Input.  A column array containing the types of the variables.
   charMatrix VTYPE = args(6).xchar_matrix_value ("__glpk__: invalid value of VARTYPE");
@@ -611,13 +611,13 @@
   double time = 0.0;
   int status = -1;
 
-  int errnum = glpk (sense, mrowsc, mrowsA, c, nz, rn.fortran_vec (),
-                     cn.fortran_vec (), a.fortran_vec (), b, ctype,
-                     freeLB.fortran_vec (), lb, freeUB.fortran_vec (),
-                     ub, vartype.fortran_vec (), isMIP, lpsolver,
-                     save_pb, scale, par, xmin.fortran_vec (), fmin,
-                     status, lambda.fortran_vec (),
-                     redcosts.fortran_vec (), time);
+  int errnum = glpk (sense, mrowsc, mrowsA, c, nz, rn.rwdata (),
+                     cn.rwdata (), a.rwdata (), b, ctype,
+                     freeLB.rwdata (), lb, freeUB.rwdata (),
+                     ub, vartype.rwdata (), isMIP, lpsolver,
+                     save_pb, scale, par, xmin.rwdata (), fmin,
+                     status, lambda.rwdata (),
+                     redcosts.rwdata (), time);
 
   octave_scalar_map extra;
 
--- a/libinterp/dldfcn/__ode15__.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/dldfcn/__ode15__.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -495,8 +495,8 @@
     jac = (*m_jacdcell) (m_dfdy, m_dfdyp, cj);
 
   octave_f77_int_type num_jac = to_f77_int (jac.numel ());
-  std::copy (jac.fortran_vec (),
-             jac.fortran_vec () + num_jac,
+  std::copy (jac.rwdata (),
+             jac.rwdata () + num_jac,
              SUNDenseMatrix_Data (JJ));
 }
 
--- a/libinterp/dldfcn/__voronoi__.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/dldfcn/__voronoi__.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -164,7 +164,7 @@
 
   std::string cmd = "qhull v" + options;
 
-  int exitcode = qh_new_qhull (qh, dim, num_points, points.fortran_vec (),
+  int exitcode = qh_new_qhull (qh, dim, num_points, points.rwdata (),
                                ismalloc, &cmd[0], outfile, errfile);
 
   unwind_action free_memory ([qh] () { free_qhull_memory (qh); });
--- a/libinterp/dldfcn/audioread.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/dldfcn/audioread.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -128,7 +128,7 @@
 
   Matrix audio (items, info.channels);
 
-  double *paudio = audio.fortran_vec ();
+  double *paudio = audio.rwdata ();
 
   data += start * info.channels;
 
--- a/libinterp/dldfcn/convhulln.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/dldfcn/convhulln.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -178,7 +178,7 @@
 
   std::string cmd = "qhull" + options;
 
-  int exitcode = qh_new_qhull (qh, dim, num_points, points.fortran_vec (),
+  int exitcode = qh_new_qhull (qh, dim, num_points, points.rwdata (),
                                ismalloc, &cmd[0], outfile, errfile);
 
   unwind_action free_memory ([qh] () { free_qhull_memory (qh); });
--- a/libinterp/octave-value/ov-base-int.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-base-int.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -394,7 +394,7 @@
 
   T m (dv);
 
-  if (! is.read (reinterpret_cast<char *> (m.fortran_vec ()), m.byte_size ()))
+  if (! is.read (reinterpret_cast<char *> (m.rwdata ()), m.byte_size ()))
     return false;
 
   if (swap)
@@ -537,7 +537,7 @@
 
   T m (dv);
   if (H5Dread (data_hid, save_type_hid, octave_H5S_ALL, octave_H5S_ALL,
-               octave_H5P_DEFAULT, m.fortran_vec ()) >= 0)
+               octave_H5P_DEFAULT, m.rwdata ()) >= 0)
     {
       retval = true;
       this->m_matrix = m;
--- a/libinterp/octave-value/ov-bool-mat.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-bool-mat.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -414,7 +414,7 @@
   if (! is.read (htmp, nel))
     return false;
   boolNDArray m(dv);
-  bool *mtmp = m.fortran_vec ();
+  bool *mtmp = m.rwdata ();
   for (octave_idx_type i = 0; i < nel; i++)
     mtmp[i] = (htmp[i] ? 1 : 0);
   m_matrix = m;
--- a/libinterp/octave-value/ov-ch-mat.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-ch-mat.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -324,7 +324,7 @@
         std::size_t output_length = in_m.numel ();                             \
         charNDArray ch_array = charNDArray (in_m.dims ());                     \
         const uint8_t *in = reinterpret_cast<const uint8_t *> (in_m.data ());  \
-        uint8_t *buf = reinterpret_cast<uint8_t *> (ch_array.fortran_vec ());  \
+        uint8_t *buf = reinterpret_cast<uint8_t *> (ch_array.rwdata ());  \
         U8_FCN (in, m_matrix.numel (), nullptr, buf, &output_length);          \
         if (output_length != static_cast<std::size_t> (m_matrix.numel ()))     \
           {                                                                    \
--- a/libinterp/octave-value/ov-cx-diag.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-cx-diag.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -231,7 +231,7 @@
     }
 
   ComplexDiagMatrix m (r, c);
-  Complex *im = m.fortran_vec ();
+  Complex *im = m.rwdata ();
   octave_idx_type len = m.length ();
   read_doubles (is, reinterpret_cast<double *> (im),
                 static_cast<save_type> (tmp), 2 * len, swap, fmt);
--- a/libinterp/octave-value/ov-cx-mat.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-cx-mat.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -505,7 +505,7 @@
         return false;
 
       ComplexNDArray m(dv);
-      Complex *im = m.fortran_vec ();
+      Complex *im = m.rwdata ();
       read_doubles (is, reinterpret_cast<double *> (im),
                     static_cast<save_type> (tmp), 2 * dv.numel (), swap, fmt);
 
@@ -525,7 +525,7 @@
       if (! is.read (reinterpret_cast<char *> (&tmp), 1))
         return false;
       ComplexMatrix m (nr, nc);
-      Complex *im = m.fortran_vec ();
+      Complex *im = m.rwdata ();
       octave_idx_type len = static_cast<octave_idx_type> (nr) * nc;
       read_doubles (is, reinterpret_cast<double *> (im),
                     static_cast<save_type> (tmp), 2*len, swap, fmt);
@@ -703,7 +703,7 @@
     }
 
   ComplexNDArray m (dv);
-  Complex *reim = m.fortran_vec ();
+  Complex *reim = m.rwdata ();
   if (H5Dread (data_hid, complex_type, octave_H5S_ALL, octave_H5S_ALL,
                octave_H5P_DEFAULT, reim)
       >= 0)
--- a/libinterp/octave-value/ov-flt-cx-diag.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-flt-cx-diag.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -200,7 +200,7 @@
     }
 
   FloatComplexDiagMatrix m (r, c);
-  FloatComplex *re = m.fortran_vec ();
+  FloatComplex *re = m.rwdata ();
   octave_idx_type len = m.length ();
   read_floats (is, reinterpret_cast<float *> (re),
                static_cast<save_type> (tmp), 2 * len, swap, fmt);
--- a/libinterp/octave-value/ov-flt-cx-mat.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-flt-cx-mat.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -470,7 +470,7 @@
         return false;
 
       FloatComplexNDArray m(dv);
-      FloatComplex *im = m.fortran_vec ();
+      FloatComplex *im = m.rwdata ();
       read_floats (is, reinterpret_cast<float *> (im),
                    static_cast<save_type> (tmp), 2 * dv.numel (), swap, fmt);
 
@@ -490,7 +490,7 @@
       if (! is.read (reinterpret_cast<char *> (&tmp), 1))
         return false;
       FloatComplexMatrix m (nr, nc);
-      FloatComplex *im = m.fortran_vec ();
+      FloatComplex *im = m.rwdata ();
       octave_idx_type len = static_cast<octave_idx_type> (nr) * nc;
       read_floats (is, reinterpret_cast<float *> (im),
                    static_cast<save_type> (tmp), 2*len, swap, fmt);
@@ -656,7 +656,7 @@
     }
 
   FloatComplexNDArray m (dv);
-  FloatComplex *reim = m.fortran_vec ();
+  FloatComplex *reim = m.rwdata ();
   if (H5Dread (data_hid, complex_type, octave_H5S_ALL, octave_H5S_ALL,
                octave_H5P_DEFAULT, reim)
       >= 0)
--- a/libinterp/octave-value/ov-flt-re-diag.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-flt-re-diag.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -218,7 +218,7 @@
     }
 
   FloatDiagMatrix m (r, c);
-  float *re = m.fortran_vec ();
+  float *re = m.rwdata ();
   octave_idx_type len = m.length ();
   read_floats (is, re, static_cast<save_type> (tmp), len, swap, fmt);
 
--- a/libinterp/octave-value/ov-flt-re-mat.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-flt-re-mat.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -545,7 +545,7 @@
         return false;
 
       FloatNDArray m(dv);
-      float *re = m.fortran_vec ();
+      float *re = m.rwdata ();
       read_floats (is, re, static_cast<save_type> (tmp), dv.numel (),
                    swap, fmt);
 
@@ -565,7 +565,7 @@
       if (! is.read (reinterpret_cast<char *> (&tmp), 1))
         return false;
       FloatMatrix m (nr, nc);
-      float *re = m.fortran_vec ();
+      float *re = m.rwdata ();
       octave_idx_type len = static_cast<octave_idx_type> (nr) * nc;
       read_floats (is, re, static_cast<save_type> (tmp), len, swap, fmt);
 
@@ -698,7 +698,7 @@
     }
 
   FloatNDArray m (dv);
-  float *re = m.fortran_vec ();
+  float *re = m.rwdata ();
   if (H5Dread (data_hid, H5T_NATIVE_FLOAT, octave_H5S_ALL, octave_H5S_ALL,
                octave_H5P_DEFAULT, re) >= 0)
     {
--- a/libinterp/octave-value/ov-intx.h	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-intx.h	Wed Dec 27 16:55:14 2023 -0800
@@ -149,7 +149,7 @@
       error ("invalid conversion of %s to Matrix", type_name ().c_str ());
 
     retval = Matrix (dv(0), dv(1));
-    double *vec = retval.fortran_vec ();
+    double *vec = retval.rwdata ();
     octave_idx_type nel = m_matrix.numel ();
     for (octave_idx_type i = 0; i < nel; i++)
       vec[i] = m_matrix(i).double_value ();
@@ -166,7 +166,7 @@
       error ("invalid conversion of %s to FloatMatrix", type_name ().c_str ());
 
     retval = FloatMatrix (dv(0), dv(1));
-    float *vec = retval.fortran_vec ();
+    float *vec = retval.rwdata ();
     octave_idx_type nel = m_matrix.numel ();
     for (octave_idx_type i = 0; i < nel; i++)
       vec[i] = m_matrix(i).float_value ();
@@ -183,7 +183,7 @@
       error ("invalid conversion of %s to Matrix", type_name ().c_str ());
 
     retval = ComplexMatrix (dv(0), dv(1));
-    Complex *vec = retval.fortran_vec ();
+    Complex *vec = retval.rwdata ();
     octave_idx_type nel = m_matrix.numel ();
     for (octave_idx_type i = 0; i < nel; i++)
       vec[i] = Complex (m_matrix(i).double_value ());
@@ -200,7 +200,7 @@
       error ("invalid conversion of %s to FloatMatrix", type_name ().c_str ());
 
     retval = FloatComplexMatrix (dv(0), dv(1));
-    FloatComplex *vec = retval.fortran_vec ();
+    FloatComplex *vec = retval.rwdata ();
     octave_idx_type nel = m_matrix.numel ();
     for (octave_idx_type i = 0; i < nel; i++)
       vec[i] = FloatComplex (m_matrix(i).float_value ());
@@ -212,7 +212,7 @@
   array_value (bool = false) const
   {
     NDArray retval (m_matrix.dims ());
-    double *vec = retval.fortran_vec ();
+    double *vec = retval.rwdata ();
     octave_idx_type nel = m_matrix.numel ();
     for (octave_idx_type i = 0; i < nel; i++)
       vec[i] = m_matrix(i).double_value ();
@@ -223,7 +223,7 @@
   float_array_value (bool = false) const
   {
     FloatNDArray retval (m_matrix.dims ());
-    float *vec = retval.fortran_vec ();
+    float *vec = retval.rwdata ();
     octave_idx_type nel = m_matrix.numel ();
     for (octave_idx_type i = 0; i < nel; i++)
       vec[i] = m_matrix(i).float_value ();
@@ -234,7 +234,7 @@
   complex_array_value (bool = false) const
   {
     ComplexNDArray retval (m_matrix.dims ());
-    Complex *vec = retval.fortran_vec ();
+    Complex *vec = retval.rwdata ();
     octave_idx_type nel = m_matrix.numel ();
     for (octave_idx_type i = 0; i < nel; i++)
       vec[i] = Complex (m_matrix(i).double_value ());
@@ -245,7 +245,7 @@
   float_complex_array_value (bool = false) const
   {
     FloatComplexNDArray retval (m_matrix.dims ());
-    FloatComplex *vec = retval.fortran_vec ();
+    FloatComplex *vec = retval.rwdata ();
     octave_idx_type nel = m_matrix.numel ();
     for (octave_idx_type i = 0; i < nel; i++)
       vec[i] = FloatComplex (m_matrix(i).float_value ());
@@ -262,7 +262,7 @@
     if (warn && m_matrix.any_element_not_one_or_zero ())
       warn_logical_conversion ();
 
-    bool *vec = retval.fortran_vec ();
+    bool *vec = retval.rwdata ();
     for (octave_idx_type i = 0; i < nel; i++)
       vec[i] = m_matrix(i).bool_value ();
 
@@ -276,7 +276,7 @@
 
     octave_idx_type nel = numel ();
 
-    char *vec = retval.fortran_vec ();
+    char *vec = retval.rwdata ();
     for (octave_idx_type i = 0; i < nel; i++)
       vec[i] = m_matrix(i).char_value ();
 
--- a/libinterp/octave-value/ov-java.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-java.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -1443,7 +1443,7 @@
           const JAVA_TYPE ## Array jarr = reinterpret_cast<JAVA_TYPE ## Array> (jobj); \
           const jsize len = jni_env->GetArrayLength (jarr); \
           OCTAVE_ID ## NDArray d (dim_vector (len, 1)); \
-          JAVA_TYPE *buffer = reinterpret_cast<JAVA_TYPE *> (d.fortran_vec ()); \
+          JAVA_TYPE *buffer = reinterpret_cast<JAVA_TYPE *> (d.rwdata ()); \
           jni_env->Get ## JAVA_TYPE_CAP ## ArrayRegion (jarr, 0, len, buffer); \
           retval = d; \
           break; \
@@ -1496,7 +1496,7 @@
                                        (jni_env->CallObjectMethod (jobj,
                                            mID)));
                   jni_env->GetDoubleArrayRegion (dv, 0, m.numel (),
-                                                 m.fortran_vec ());
+                                                 m.rwdata ());
                   retval = m;
                   break;
                 }
@@ -1512,7 +1512,7 @@
                                              mID)));
                       jni_env->GetByteArrayRegion (dv, 0, m.numel (),
                                                    reinterpret_cast<jbyte *>
-                                                   (m.fortran_vec ()));
+                                                   (m.rwdata ()));
                       retval = m;
                       break;
                     }
@@ -1526,7 +1526,7 @@
                                              mID)));
                       jni_env->GetByteArrayRegion (dv, 0, m.numel (),
                                                    reinterpret_cast<jbyte *>
-                                                   (m.fortran_vec ()));
+                                                   (m.rwdata ()));
                       retval = m;
                       break;
                     }
@@ -1543,7 +1543,7 @@
                                             mID)));
                       jni_env->GetIntArrayRegion (dv, 0, m.numel (),
                                                   reinterpret_cast<jint *>
-                                                  (m.fortran_vec ()));
+                                                  (m.rwdata ()));
                       retval = m;
                       break;
                     }
@@ -1557,7 +1557,7 @@
                                             mID)));
                       jni_env->GetIntArrayRegion (dv, 0, m.numel (),
                                                   reinterpret_cast<jint *>
-                                                  (m.fortran_vec ()));
+                                                  (m.rwdata ()));
                       retval = m;
                       break;
                     }
@@ -1612,7 +1612,7 @@
                 {
                   Matrix m (1, len);
                   jni_env->GetDoubleArrayRegion (jarr, 0, len,
-                                                 m.fortran_vec ());
+                                                 m.rwdata ());
                   retval = m;
                 }
               else
@@ -1647,7 +1647,7 @@
                           m.resize (cols, rows);
                         }
                       jni_env->GetDoubleArrayRegion
-                      (row, 0, cols, m.fortran_vec () + r * cols);
+                      (row, 0, cols, m.rwdata () + r * cols);
                     }
                   retval = m.transpose ();
                 }
@@ -1825,7 +1825,7 @@
     {
       Matrix m = val.matrix_value ();
       jdoubleArray dv = jni_env->NewDoubleArray (m.numel ());
-      jni_env->SetDoubleArrayRegion (dv, 0, m.numel (), m.fortran_vec ());
+      jni_env->SetDoubleArrayRegion (dv, 0, m.numel (), m.rwdata ());
       jobj = dv;
       jcls = jni_env->GetObjectClass (jobj);
     }
@@ -1849,7 +1849,7 @@
           NDArray m = val.array_value ();
           jdoubleArray_ref dv (jni_env, jni_env->NewDoubleArray (m.numel ()));
           jni_env->SetDoubleArrayRegion (jdoubleArray (dv), 0, m.numel (),
-                                         m.fortran_vec ());
+                                         m.rwdata ());
           jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([D[I)V");
           jobj = jni_env->NewObject (jclass (mcls), mID, jdoubleArray (dv),
                                      jintArray (iv));
@@ -1861,7 +1861,7 @@
           jbyteArray_ref bv (jni_env, jni_env->NewByteArray (m.numel ()));
           jni_env->SetByteArrayRegion (jbyteArray (bv), 0, m.numel (),
                                        reinterpret_cast<jbyte *>
-                                       (m.fortran_vec ()));
+                                       (m.rwdata ()));
           jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([B[I)V");
           jobj = jni_env->NewObject
                  (jclass (mcls), mID, jbyteArray (bv), jintArray (iv));
@@ -1873,7 +1873,7 @@
           jbyteArray_ref bv (jni_env, jni_env->NewByteArray (m.numel ()));
           jni_env->SetByteArrayRegion (jbyteArray (bv), 0, m.numel (),
                                        reinterpret_cast<jbyte *>
-                                       (m.fortran_vec ()));
+                                       (m.rwdata ()));
           jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([B[I)V");
           jobj = jni_env->NewObject
                  (jclass (mcls), mID, jbyteArray (bv), jintArray (iv));
@@ -1885,7 +1885,7 @@
           jintArray_ref v (jni_env, jni_env->NewIntArray (m.numel ()));
           jni_env->SetIntArrayRegion (jintArray (v), 0, m.numel (),
                                       reinterpret_cast<jint *>
-                                      (m.fortran_vec ()));
+                                      (m.rwdata ()));
           jmethodID mID = jni_env->GetMethodID (mcls, "<init>", "([I[I)V");
           jobj = jni_env->NewObject
                  (jclass (mcls), mID, jintArray (v), jintArray (iv));
--- a/libinterp/octave-value/ov-perm.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-perm.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -397,7 +397,7 @@
 
   MArray<octave_idx_type> m (dim_vector (sz, 1));
 
-  if (! is.read (reinterpret_cast<char *> (m.fortran_vec ()), m.byte_size ()))
+  if (! is.read (reinterpret_cast<char *> (m.rwdata ()), m.byte_size ()))
     return false;
 
   if (swap)
--- a/libinterp/octave-value/ov-re-diag.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-re-diag.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -296,7 +296,7 @@
     }
 
   DiagMatrix m (r, c);
-  double *re = m.fortran_vec ();
+  double *re = m.rwdata ();
   octave_idx_type len = m.length ();
   read_doubles (is, re, static_cast<save_type> (tmp), len, swap, fmt);
 
--- a/libinterp/octave-value/ov-re-mat.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-re-mat.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -659,7 +659,7 @@
         return false;
 
       NDArray m(dv);
-      double *re = m.fortran_vec ();
+      double *re = m.rwdata ();
       read_doubles (is, re, static_cast<save_type> (tmp), dv.numel (),
                     swap, fmt);
 
@@ -679,7 +679,7 @@
       if (! is.read (reinterpret_cast<char *> (&tmp), 1))
         return false;
       Matrix m (nr, nc);
-      double *re = m.fortran_vec ();
+      double *re = m.rwdata ();
       octave_idx_type len = static_cast<octave_idx_type> (nr) * nc;
       read_doubles (is, re, static_cast<save_type> (tmp), len, swap, fmt);
 
@@ -825,7 +825,7 @@
     }
 
   NDArray m (dv);
-  double *re = m.fortran_vec ();
+  double *re = m.rwdata ();
   if (H5Dread (data_hid, H5T_NATIVE_DOUBLE, octave_H5S_ALL, octave_H5S_ALL,
                octave_H5P_DEFAULT, re) >= 0)
     {
--- a/libinterp/octave-value/ov-str-mat.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/libinterp/octave-value/ov-str-mat.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -391,7 +391,7 @@
         m_matrix = tmp;
       else
         {
-          char *ftmp = tmp.fortran_vec ();
+          char *ftmp = tmp.rwdata ();
 
           octave::skip_preceeding_newline (is);
 
@@ -423,7 +423,7 @@
           // buffer so that we can properly handle
           // embedded NUL characters.
           charMatrix tmp (1, len);
-          char *ptmp = tmp.fortran_vec ();
+          char *ptmp = tmp.rwdata ();
 
           if (len > 0 && ! is.read (ptmp, len))
             error ("load: failed to load string constant");
@@ -451,7 +451,7 @@
           // Use this instead of a C-style character buffer so
           // that we can properly handle embedded NUL characters.
           charMatrix tmp (1, len);
-          char *ptmp = tmp.fortran_vec ();
+          char *ptmp = tmp.rwdata ();
 
           if (len > 0 && ! is.read (ptmp, len))
             error ("load: failed to load string constant");
@@ -529,7 +529,7 @@
         }
 
       charNDArray m(dv);
-      char *tmp = m.fortran_vec ();
+      char *tmp = m.rwdata ();
       is.read (tmp, dv.numel ());
 
       if (! is)
@@ -549,7 +549,7 @@
           if (swap)
             swap_bytes<4> (&len);
           charMatrix btmp (1, len);
-          char *pbtmp = btmp.fortran_vec ();
+          char *pbtmp = btmp.rwdata ();
           if (! is.read (pbtmp, len))
             return false;
           if (len > max_len)
@@ -680,7 +680,7 @@
         }
 
       charNDArray m (dv);
-      char *str = m.fortran_vec ();
+      char *str = m.rwdata ();
       if (H5Dread (data_hid, H5T_NATIVE_CHAR, octave_H5S_ALL, octave_H5S_ALL,
                    octave_H5P_DEFAULT, str) >= 0)
         {
--- a/liboctave/array/Array-base.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/Array-base.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -508,7 +508,7 @@
   if (numel () > 0)
     {
       rec_permute_helper rh (dv, perm_vec);
-      rh.permute (data (), retval.fortran_vec ());
+      rh.permute (data (), retval.rwdata ());
     }
 
   return retval;
@@ -765,7 +765,7 @@
           retval = Array<T, Alloc> (result_dims);
 
           if (idx_len != 0)
-            i.index (data (), n, retval.fortran_vec ());
+            i.index (data (), n, retval.rwdata ());
         }
     }
 
@@ -811,7 +811,7 @@
               // Don't use resize to avoid useless initialization for POD types.
               retval = Array<T, Alloc> (dim_vector (il, jl));
 
-              ii.index (data (), n, retval.fortran_vec ());
+              ii.index (data (), n, retval.rwdata ());
             }
         }
       else
@@ -820,7 +820,7 @@
           retval = Array<T, Alloc> (dim_vector (il, jl));
 
           const T *src = data ();
-          T *dest = retval.fortran_vec ();
+          T *dest = retval.rwdata ();
 
           for (octave_idx_type k = 0; k < jl; k++)
             dest += i.index (src + r * j.xelem (k), r, dest);
@@ -884,7 +884,7 @@
               retval = Array<T, Alloc> (rdv);
 
               // Do it.
-              rh.index (data (), retval.fortran_vec ());
+              rh.index (data (), retval.rwdata ());
             }
         }
     }
@@ -954,7 +954,7 @@
           static const octave_idx_type MAX_STACK_CHUNK = 1024;
           octave_idx_type nn = n + std::min (nx, MAX_STACK_CHUNK);
           Array<T, Alloc> tmp (Array<T, Alloc> (dim_vector (nn, 1)), dv, 0, n);
-          T *dest = tmp.fortran_vec ();
+          T *dest = tmp.rwdata ();
 
           std::copy_n (data (), nx, dest);
           dest[nx] = rfv;
@@ -965,7 +965,7 @@
   else if (n != nx)
     {
       Array<T, Alloc> tmp = Array<T, Alloc> (dv);
-      T *dest = tmp.fortran_vec ();
+      T *dest = tmp.rwdata ();
 
       octave_idx_type n0 = std::min (n, nx);
       octave_idx_type n1 = n - n0;
@@ -988,7 +988,7 @@
   if (r != rx || c != cx)
     {
       Array<T, Alloc> tmp = Array<T, Alloc> (dim_vector (r, c));
-      T *dest = tmp.fortran_vec ();
+      T *dest = tmp.rwdata ();
 
       octave_idx_type r0 = std::min (r, rx);
       octave_idx_type r1 = r - r0;
@@ -1035,7 +1035,7 @@
       rec_resize_helper rh (dv, m_dimensions.redim (dvl));
 
       // Do it.
-      rh.resize_fill (data (), tmp.fortran_vec (), rfv);
+      rh.resize_fill (data (), tmp.rwdata (), rfv);
       *this = tmp;
     }
 }
@@ -1163,9 +1163,9 @@
   else
     {
       if (rhl == 1)
-        i.fill (rhs(0), n, fortran_vec ());
+        i.fill (rhs(0), n, rwdata ());
       else
-        i.assign (rhs.data (), n, fortran_vec ());
+        i.assign (rhs.data (), n, rwdata ());
     }
 }
 
@@ -1243,7 +1243,7 @@
           octave::idx_vector ii (i);
 
           const T *src = rhs.data ();
-          T *dest = fortran_vec ();
+          T *dest = rwdata ();
 
           // Try reduction first.
           if (ii.maybe_reduce (r, j, c))
@@ -1367,9 +1367,9 @@
 
               // Do it.
               if (isfill)
-                rh.fill (rhs(0), fortran_vec ());
+                rh.fill (rhs(0), rwdata ());
               else
-                rh.assign (rhs.data (), fortran_vec ());
+                rh.assign (rhs.data (), rwdata ());
             }
         }
       else
@@ -1429,7 +1429,7 @@
           octave_idx_type m = n + l - u;
           Array<T, Alloc> tmp (dim_vector (col_vec ? m : 1, ! col_vec ? m : 1));
           const T *src = data ();
-          T *dest = tmp.fortran_vec ();
+          T *dest = tmp.rwdata ();
           std::copy_n (src, l, dest);
           std::copy (src + u, src + n, dest + l);
           *this = tmp;
@@ -1482,7 +1482,7 @@
           // Special case deleting a contiguous range.
           Array<T, Alloc> tmp = Array<T, Alloc> (rdv);
           const T *src = data ();
-          T *dest = tmp.fortran_vec ();
+          T *dest = tmp.rwdata ();
           l *= dl; u *= dl; n *= dl;
           for (octave_idx_type k = 0; k < du; k++)
             {
@@ -1633,7 +1633,7 @@
 
       // Reuse the implementation used for permuting.
 
-      rec_permute_helper::blk_trans (data (), result.fortran_vec (), nr, nc);
+      rec_permute_helper::blk_trans (data (), result.rwdata (), nr, nc);
 
       return result;
     }
@@ -1761,7 +1761,7 @@
 
 template <typename T, typename Alloc>
 T *
-Array<T, Alloc>::fortran_vec ()
+Array<T, Alloc>::rwdata ()
 {
   make_unique ();
 
@@ -1800,7 +1800,7 @@
   for (int i = 0; i < dim; i++)
     stride *= dv(i);
 
-  T *v = m.fortran_vec ();
+  T *v = m.rwdata ();
   const T *ov = data ();
 
   octave_sort<T> lsort;
@@ -1913,13 +1913,13 @@
   for (int i = 0; i < dim; i++)
     stride *= dv(i);
 
-  T *v = m.fortran_vec ();
+  T *v = m.rwdata ();
   const T *ov = data ();
 
   octave_sort<T> lsort;
 
   sidx = Array<octave_idx_type> (dv);
-  octave_idx_type *vi = sidx.fortran_vec ();
+  octave_idx_type *vi = sidx.rwdata ();
 
   if (mode != UNSORTED)
     lsort.set_compare (mode);
@@ -2087,7 +2087,7 @@
 
   idx = Array<octave_idx_type> (dim_vector (r, 1));
 
-  lsort.sort_rows (data (), idx.fortran_vec (), r, c);
+  lsort.sort_rows (data (), idx.rwdata (), r, c);
 
   return idx;
 }
@@ -2211,9 +2211,9 @@
 
   if (vmode != UNSORTED)
     lsort.lookup_sorted (data (), n, values.data (), nval,
-                         idx.fortran_vec (), vmode != mode);
+                         idx.rwdata (), vmode != mode);
   else
-    lsort.lookup (data (), n, values.data (), nval, idx.fortran_vec ());
+    lsort.lookup (data (), n, values.data (), nval, idx.rwdata ());
 
   return idx;
 }
@@ -2250,7 +2250,7 @@
         cnt += src[i] != zero;
 
       retval.clear (cnt, 1);
-      octave_idx_type *dest = retval.fortran_vec ();
+      octave_idx_type *dest = retval.rwdata ();
       for (octave_idx_type i = 0; i < nel; i++)
         if (src[i] != zero) *dest++ = i;
     }
@@ -2275,7 +2275,7 @@
             }
           if (k < n)
             retval.resize2 (k, 1);
-          octave_idx_type *rdata = retval.fortran_vec ();
+          octave_idx_type *rdata = retval.rwdata ();
           std::reverse (rdata, rdata + k);
         }
       else
@@ -2400,7 +2400,7 @@
   for (int i = 0; i < dim; i++)
     stride *= dv(i);
 
-  T *v = m.fortran_vec ();
+  T *v = m.rwdata ();
   const T *ov = data ();
 
   OCTAVE_LOCAL_BUFFER (T, buf, ns);
--- a/liboctave/array/Array-util.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/Array-util.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -574,7 +574,7 @@
           // Initialized inside the loop so that each call to
           // idx_vector::loop operates from the beginning of IDX_VEC.
 
-          octave_idx_type *idx_vec = idx.fortran_vec ();
+          octave_idx_type *idx_vec = idx.rwdata ();
 
           if (i < len - 1)
             {
--- a/liboctave/array/Array.h	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/Array.h	Wed Dec 27 16:55:14 2023 -0800
@@ -155,8 +155,8 @@
       std::copy_n (d, len, m_data);
     }
 
-    // Use new instead of setting data to 0 so that fortran_vec and
-    // data always return valid addresses, even for zero-size arrays.
+    // Use new instead of setting data to 0 so that rwdata() and data()
+    // always return valid addresses, even for zero-size arrays.
 
     ArrayRep ()
       : Alloc (), m_data (allocate (0)), m_len (0), m_count (1) { }
@@ -658,10 +658,17 @@
   OCTARRAY_API Array<T, Alloc> transpose () const;
   OCTARRAY_API Array<T, Alloc> hermitian (T (*fcn) (const T&) = nullptr) const;
 
+  // Use for direct read-only access to Array data.
   OCTARRAY_OVERRIDABLE_FUNC_API const T * data () const
   { return m_slice_data; }
 
-  OCTARRAY_API T * fortran_vec ();
+  // Use for direct read-write access to Array data.
+  OCTARRAY_API T * rwdata ();
+
+  // Alias for direct read-write access to Array data.
+  // FIXME: It is recommended to use rwdata() in future code for clarity.
+  inline OCTARRAY_API T * fortran_vec ()
+  { return rwdata (); }
 
   OCTARRAY_OVERRIDABLE_FUNC_API bool is_shared () const
   { return m_rep->m_count > 1; }
@@ -861,7 +868,7 @@
     const T *m = data ();
 
     Array<U, A> result (dims ());
-    U *p = result.fortran_vec ();
+    U *p = result.rwdata ();
 
     octave_idx_type i;
     for (i = 0; i < len - 3; i += 4)
--- a/liboctave/array/CColVector.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/CColVector.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -262,7 +262,7 @@
   if (len == 0)
     return *this;
 
-  Complex *d = fortran_vec (); // Ensures only one reference to my privates!
+  Complex *d = rwdata (); // Ensures only one reference to my privates!
 
   mx_inline_add2 (len, d, a.data ());
   return *this;
@@ -281,7 +281,7 @@
   if (len == 0)
     return *this;
 
-  Complex *d = fortran_vec (); // Ensures only one reference to my privates!
+  Complex *d = rwdata (); // Ensures only one reference to my privates!
 
   mx_inline_sub2 (len, d, a.data ());
   return *this;
@@ -317,7 +317,7 @@
         retval.fill (0.0);
       else
         {
-          Complex *y = retval.fortran_vec ();
+          Complex *y = retval.rwdata ();
 
           F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
                                    nr, nc, 1.0,
--- a/liboctave/array/CDiagMatrix.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/CDiagMatrix.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -345,7 +345,7 @@
   else if (z_count > 0)
     {
       info = -1;
-      element_type *data = retval.fortran_vec ();
+      element_type *data = retval.rwdata ();
       std::fill (data, data + len, octave::numeric_limits<double>::Inf ());
     }
 
@@ -396,7 +396,7 @@
   if (r == 0 || c == 0)
     return *this;
 
-  Complex *d = fortran_vec (); // Ensures only one reference to my privates!
+  Complex *d = rwdata (); // Ensures only one reference to my privates!
 
   mx_inline_add2 (length (), d, a.data ());
   return *this;
--- a/liboctave/array/CMatrix.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/CMatrix.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -789,7 +789,7 @@
   char uplo = (typ == MatrixType::Lower ? 'L' : 'U');
   char udiag = 'N';
   retval = *this;
-  Complex *tmp_data = retval.fortran_vec ();
+  Complex *tmp_data = retval.rwdata ();
 
   F77_INT tmp_info = 0;
 
@@ -845,10 +845,10 @@
     (*current_liboctave_error_handler) ("inverse requires square matrix");
 
   Array<F77_INT> ipvt (dim_vector (nr, 1));
-  F77_INT *pipvt = ipvt.fortran_vec ();
+  F77_INT *pipvt = ipvt.rwdata ();
 
   retval = *this;
-  Complex *tmp_data = retval.fortran_vec ();
+  Complex *tmp_data = retval.rwdata ();
 
   Array<Complex> z (dim_vector (1, 1));
   F77_INT lwork = -1;
@@ -858,13 +858,13 @@
   F77_INT tmp_info = 0;
 
   F77_XFCN (zgetri, ZGETRI, (nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, pipvt,
-                             F77_DBLE_CMPLX_ARG (z.fortran_vec ()), lwork,
+                             F77_DBLE_CMPLX_ARG (z.rwdata ()), lwork,
                              tmp_info));
 
   lwork = static_cast<F77_INT> (std::real (z(0)));
   lwork = (lwork < 2 * nc ? 2 * nc : lwork);
   z.resize (dim_vector (lwork, 1));
-  Complex *pz = z.fortran_vec ();
+  Complex *pz = z.rwdata ();
 
   info = 0;
   tmp_info = 0;
@@ -899,7 +899,7 @@
           // Now calculate the condition number for non-singular matrix.
           char job = '1';
           Array<double> rz (dim_vector (2 * nc, 1));
-          double *prz = rz.fortran_vec ();
+          double *prz = rz.rwdata ();
           F77_XFCN (zgecon, ZGECON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                      nc, F77_DBLE_CMPLX_ARG (tmp_data), nr,
                                      anorm, rcon, F77_DBLE_CMPLX_ARG (pz), prz,
@@ -1063,7 +1063,7 @@
     }
 
   const Complex *in (data ());
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::fft (in, out, npts, nsamples);
 
@@ -1092,7 +1092,7 @@
     }
 
   const Complex *in (data ());
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::ifft (in, out, npts, nsamples);
 
@@ -1106,7 +1106,7 @@
 
   ComplexMatrix retval (rows (), cols ());
   const Complex *in (data ());
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::fftNd (in, out, 2, dv);
 
@@ -1120,7 +1120,7 @@
 
   ComplexMatrix retval (rows (), cols ());
   const Complex *in (data ());
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::ifftNd (in, out, 2, dv);
 
@@ -1225,7 +1225,7 @@
   else if (typ == MatrixType::Hermitian)
     {
       ComplexMatrix atmp = *this;
-      Complex *tmp_data = atmp.fortran_vec ();
+      Complex *tmp_data = atmp.rwdata ();
 
       double anorm;
       if (calc_cond)
@@ -1251,9 +1251,9 @@
           if (calc_cond)
             {
               Array<Complex> z (dim_vector (2 * nc, 1));
-              Complex *pz = z.fortran_vec ();
+              Complex *pz = z.rwdata ();
               Array<double> rz (dim_vector (nc, 1));
-              double *prz = rz.fortran_vec ();
+              double *prz = rz.rwdata ();
 
               F77_XFCN (zpocon, ZPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                          nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm,
@@ -1278,10 +1278,10 @@
   if (typ == MatrixType::Full)
     {
       Array<F77_INT> ipvt (dim_vector (nr, 1));
-      F77_INT *pipvt = ipvt.fortran_vec ();
+      F77_INT *pipvt = ipvt.rwdata ();
 
       ComplexMatrix atmp = *this;
-      Complex *tmp_data = atmp.fortran_vec ();
+      Complex *tmp_data = atmp.rwdata ();
 
       info = 0;
 
@@ -1315,9 +1315,9 @@
               // Now calc the condition number for non-singular matrix.
               char job = '1';
               Array<Complex> z (dim_vector (2 * nc, 1));
-              Complex *pz = z.fortran_vec ();
+              Complex *pz = z.rwdata ();
               Array<double> rz (dim_vector (2 * nc, 1));
-              double *prz = rz.fortran_vec ();
+              double *prz = rz.rwdata ();
 
               F77_XFCN (zgecon, ZGECON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                          nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm,
@@ -1382,9 +1382,9 @@
           char dia = 'N';
 
           Array<Complex> z (dim_vector (2 * nc, 1));
-          Complex *pz = z.fortran_vec ();
+          Complex *pz = z.rwdata ();
           Array<double> rz (dim_vector (nc, 1));
-          double *prz = rz.fortran_vec ();
+          double *prz = rz.rwdata ();
 
           F77_XFCN (ztrcon, ZTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1410,9 +1410,9 @@
           char dia = 'N';
 
           Array<Complex> z (dim_vector (2 * nc, 1));
-          Complex *pz = z.fortran_vec ();
+          Complex *pz = z.rwdata ();
           Array<double> rz (dim_vector (nc, 1));
-          double *prz = rz.fortran_vec ();
+          double *prz = rz.rwdata ();
 
           F77_XFCN (ztrcon, ZTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1439,7 +1439,7 @@
               char job = 'L';
 
               ComplexMatrix atmp = *this;
-              Complex *tmp_data = atmp.fortran_vec ();
+              Complex *tmp_data = atmp.rwdata ();
 
               anorm = norm1 (atmp);
 
@@ -1457,9 +1457,9 @@
               else
                 {
                   Array<Complex> z (dim_vector (2 * nc, 1));
-                  Complex *pz = z.fortran_vec ();
+                  Complex *pz = z.rwdata ();
                   Array<double> rz (dim_vector (nc, 1));
-                  double *prz = rz.fortran_vec ();
+                  double *prz = rz.rwdata ();
 
                   F77_XFCN (zpocon, ZPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm,
@@ -1476,18 +1476,18 @@
               F77_INT info = 0;
 
               ComplexMatrix atmp = *this;
-              Complex *tmp_data = atmp.fortran_vec ();
+              Complex *tmp_data = atmp.rwdata ();
 
               Array<F77_INT> ipvt (dim_vector (nr, 1));
-              F77_INT *pipvt = ipvt.fortran_vec ();
+              F77_INT *pipvt = ipvt.rwdata ();
 
               if (anorm < 0.0)
                 anorm = norm1 (atmp);
 
               Array<Complex> z (dim_vector (2 * nc, 1));
-              Complex *pz = z.fortran_vec ();
+              Complex *pz = z.rwdata ();
               Array<double> rz (dim_vector (2 * nc, 1));
-              double *prz = rz.fortran_vec ();
+              double *prz = rz.rwdata ();
 
               // Work around bug #45577, LAPACK crashes Octave if norm is NaN
               if (octave::math::isnan (anorm))
@@ -1559,7 +1559,7 @@
       const Complex *tmp_data = data ();
 
       retval = b;
-      Complex *result = retval.fortran_vec ();
+      Complex *result = retval.rwdata ();
 
       char uplo = 'U';
       char trans = get_blas_char (transt);
@@ -1585,9 +1585,9 @@
           dia = 'N';
 
           Array<Complex> z (dim_vector (2 * nc, 1));
-          Complex *pz = z.fortran_vec ();
+          Complex *pz = z.rwdata ();
           Array<double> rz (dim_vector (nc, 1));
-          double *prz = rz.fortran_vec ();
+          double *prz = rz.rwdata ();
 
           F77_XFCN (ztrcon, ZTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1657,7 +1657,7 @@
       const Complex *tmp_data = data ();
 
       retval = b;
-      Complex *result = retval.fortran_vec ();
+      Complex *result = retval.rwdata ();
 
       char uplo = 'L';
       char trans = get_blas_char (transt);
@@ -1683,9 +1683,9 @@
           dia = 'N';
 
           Array<Complex> z (dim_vector (2 * nc, 1));
-          Complex *pz = z.fortran_vec ();
+          Complex *pz = z.rwdata ();
           Array<double> rz (dim_vector (nc, 1));
-          double *prz = rz.fortran_vec ();
+          double *prz = rz.rwdata ();
 
           F77_XFCN (ztrcon, ZTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1751,7 +1751,7 @@
           char job = 'L';
 
           ComplexMatrix atmp = *this;
-          Complex *tmp_data = atmp.fortran_vec ();
+          Complex *tmp_data = atmp.rwdata ();
 
           // The norm of the matrix for later use when determining rcon.
           if (calc_cond)
@@ -1779,9 +1779,9 @@
               if (calc_cond)
                 {
                   Array<Complex> z (dim_vector (2 * nc, 1));
-                  Complex *pz = z.fortran_vec ();
+                  Complex *pz = z.rwdata ();
                   Array<double> rz (dim_vector (nc, 1));
-                  double *prz = rz.fortran_vec ();
+                  double *prz = rz.rwdata ();
 
                   F77_XFCN (zpocon, ZPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm,
@@ -1809,7 +1809,7 @@
               if (info == 0)
                 {
                   retval = b;
-                  Complex *result = retval.fortran_vec ();
+                  Complex *result = retval.rwdata ();
 
                   F77_XFCN (zpotrs, ZPOTRS, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, b_nc, F77_DBLE_CMPLX_ARG (tmp_data), nr,
@@ -1831,15 +1831,15 @@
           info = 0;
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           ComplexMatrix atmp = *this;
-          Complex *tmp_data = atmp.fortran_vec ();
+          Complex *tmp_data = atmp.rwdata ();
 
           Array<Complex> z (dim_vector (2 * nc, 1));
-          Complex *pz = z.fortran_vec ();
+          Complex *pz = z.rwdata ();
           Array<double> rz (dim_vector (2 * nc, 1));
-          double *prz = rz.fortran_vec ();
+          double *prz = rz.rwdata ();
 
           // Calculate the norm of the matrix, for later use.
           if (calc_cond && anorm < 0.0)
@@ -1902,7 +1902,7 @@
               if (info == 0)
                 {
                   retval = b;
-                  Complex *result = retval.fortran_vec ();
+                  Complex *result = retval.rwdata ();
 
                   char job = 'N';
                   F77_XFCN (zgetrs, ZGETRS, (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -2310,11 +2310,11 @@
         retval = b;
 
       ComplexMatrix atmp = *this;
-      Complex *tmp_data = atmp.fortran_vec ();
-
-      Complex *pretval = retval.fortran_vec ();
+      Complex *tmp_data = atmp.rwdata ();
+
+      Complex *pretval = retval.rwdata ();
       Array<double> s (dim_vector (minmn, 1));
-      double *ps = s.fortran_vec ();
+      double *ps = s.rwdata ();
 
       // Ask ZGELSD what the dimension of WORK should be.
       F77_INT lwork = -1;
@@ -2353,20 +2353,20 @@
       if (lrwork < 1)
         lrwork = 1;
       Array<double> rwork (dim_vector (lrwork, 1));
-      double *prwork = rwork.fortran_vec ();
+      double *prwork = rwork.rwdata ();
 
       F77_INT liwork = 3 * minmn * nlvl + 11 * minmn;
       if (liwork < 1)
         liwork = 1;
       Array<F77_INT> iwork (dim_vector (liwork, 1));
-      F77_INT *piwork = iwork.fortran_vec ();
+      F77_INT *piwork = iwork.rwdata ();
 
       F77_INT tmp_info = 0;
       F77_INT tmp_rank = 0;
 
       F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, F77_DBLE_CMPLX_ARG (tmp_data), m,
                                  F77_DBLE_CMPLX_ARG (pretval), maxmn,
-                                 ps, rcon, tmp_rank, F77_DBLE_CMPLX_ARG (work.fortran_vec ()),
+                                 ps, rcon, tmp_rank, F77_DBLE_CMPLX_ARG (work.rwdata ()),
                                  lwork, prwork, piwork, tmp_info));
 
       info = tmp_info;
@@ -2423,7 +2423,7 @@
           F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, F77_DBLE_CMPLX_ARG (tmp_data),
                                      m, F77_DBLE_CMPLX_ARG (pretval),
                                      maxmn, ps, rcon, tmp_rank,
-                                     F77_DBLE_CMPLX_ARG (work.fortran_vec ()),
+                                     F77_DBLE_CMPLX_ARG (work.rwdata ()),
                                      lwork, prwork, piwork, tmp_info));
 
           info = tmp_info;
@@ -2536,11 +2536,11 @@
         retval = b;
 
       ComplexMatrix atmp = *this;
-      Complex *tmp_data = atmp.fortran_vec ();
-
-      Complex *pretval = retval.fortran_vec ();
+      Complex *tmp_data = atmp.rwdata ();
+
+      Complex *pretval = retval.rwdata ();
       Array<double> s (dim_vector (minmn, 1));
-      double *ps = s.fortran_vec ();
+      double *ps = s.rwdata ();
 
       // Ask ZGELSD what the dimension of WORK should be.
       F77_INT lwork = -1;
@@ -2570,20 +2570,20 @@
       if (lrwork < 1)
         lrwork = 1;
       Array<double> rwork (dim_vector (lrwork, 1));
-      double *prwork = rwork.fortran_vec ();
+      double *prwork = rwork.rwdata ();
 
       F77_INT liwork = 3 * minmn * nlvl + 11 * minmn;
       if (liwork < 1)
         liwork = 1;
       Array<F77_INT> iwork (dim_vector (liwork, 1));
-      F77_INT *piwork = iwork.fortran_vec ();
+      F77_INT *piwork = iwork.rwdata ();
 
       F77_INT tmp_info = 0;
       F77_INT tmp_rank = 0;
 
       F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, F77_DBLE_CMPLX_ARG (tmp_data), m,
                                  F77_DBLE_CMPLX_ARG (pretval), maxmn,
-                                 ps, rcon, tmp_rank, F77_DBLE_CMPLX_ARG (work.fortran_vec ()),
+                                 ps, rcon, tmp_rank, F77_DBLE_CMPLX_ARG (work.rwdata ()),
                                  lwork, prwork, piwork, tmp_info));
 
       info = tmp_info;
@@ -2597,7 +2597,7 @@
       F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, F77_DBLE_CMPLX_ARG (tmp_data), m,
                                  F77_DBLE_CMPLX_ARG (pretval),
                                  maxmn, ps, rcon, tmp_rank,
-                                 F77_DBLE_CMPLX_ARG (work.fortran_vec ()), lwork,
+                                 F77_DBLE_CMPLX_ARG (work.rwdata ()), lwork,
                                  prwork, piwork, tmp_info));
 
       info = tmp_info;
@@ -2645,7 +2645,7 @@
       F77_INT a_len = octave::to_f77_int (a.numel ());
 
       retval = ComplexMatrix (len, a_len);
-      Complex *c = retval.fortran_vec ();
+      Complex *c = retval.rwdata ();
 
       F77_XFCN (zgemm, ZGEMM, (F77_CONST_CHAR_ARG2 ("N", 1),
                                F77_CONST_CHAR_ARG2 ("N", 1),
@@ -2749,7 +2749,7 @@
   if (nr == 0 || nc == 0)
     return *this;
 
-  Complex *d = fortran_vec (); // Ensures only one reference to my privates!
+  Complex *d = rwdata (); // Ensures only one reference to my privates!
 
   mx_inline_add2 (numel (), d, a.data ());
   return *this;
@@ -2770,7 +2770,7 @@
   if (nr == 0 || nc == 0)
     return *this;
 
-  Complex *d = fortran_vec (); // Ensures only one reference to my privates!
+  Complex *d = rwdata (); // Ensures only one reference to my privates!
 
   mx_inline_sub2 (numel (), d, a.data ());
   return *this;
@@ -3275,9 +3275,9 @@
   double scale;
   F77_INT info;
 
-  Complex *pa = sch_a.fortran_vec ();
-  Complex *pb = sch_b.fortran_vec ();
-  Complex *px = cx.fortran_vec ();
+  Complex *pa = sch_a.rwdata ();
+  Complex *pb = sch_b.rwdata ();
+  Complex *px = cx.rwdata ();
 
   F77_XFCN (ztrsyl, ZTRSYL, (F77_CONST_CHAR_ARG2 ("N", 1),
                              F77_CONST_CHAR_ARG2 ("N", 1),
@@ -3374,7 +3374,7 @@
       // use the result matrix before zeroing the elements.
 
       retval = ComplexMatrix (a_nr, b_nc, 0.0);
-      Complex *c = retval.fortran_vec ();
+      Complex *c = retval.rwdata ();
 
       const char ctra = get_blas_trans_arg (tra, cja);
       if (cja || cjb)
@@ -3412,7 +3412,7 @@
       F77_INT tdb = octave::to_f77_int (b.cols ());
 
       retval = ComplexMatrix (a_nr, b_nc, 0.0);
-      Complex *c = retval.fortran_vec ();
+      Complex *c = retval.rwdata ();
 
       if (b_nc == 1 && a_nr == 1)
         {
--- a/liboctave/array/CNDArray.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/CNDArray.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -75,7 +75,7 @@
 
   const Complex *in (data ());
   ComplexNDArray retval (dv);
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   // Need to be careful here about the distance between fft's
   for (octave_idx_type k = 0; k < nloop; k++)
@@ -106,7 +106,7 @@
 
   const Complex *in (data ());
   ComplexNDArray retval (dv);
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   // Need to be careful here about the distance between fft's
   for (octave_idx_type k = 0; k < nloop; k++)
@@ -126,7 +126,7 @@
   dim_vector dv2 (dv(0), dv(1));
   const Complex *in = data ();
   ComplexNDArray retval (dv);
-  Complex *out = retval.fortran_vec ();
+  Complex *out = retval.rwdata ();
   octave_idx_type howmany = numel () / dv(0) / dv(1);
   octave_idx_type dist = dv(0) * dv(1);
 
@@ -146,7 +146,7 @@
   dim_vector dv2 (dv(0), dv(1));
   const Complex *in = data ();
   ComplexNDArray retval (dv);
-  Complex *out = retval.fortran_vec ();
+  Complex *out = retval.rwdata ();
   octave_idx_type howmany = numel () / dv(0) / dv(1);
   octave_idx_type dist = dv(0) * dv(1);
 
@@ -164,7 +164,7 @@
 
   const Complex *in (data ());
   ComplexNDArray retval (dv);
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::fftNd (in, out, rank, dv);
 
@@ -179,7 +179,7 @@
 
   const Complex *in (data ());
   ComplexNDArray retval (dv);
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::ifftNd (in, out, rank, dv);
 
--- a/liboctave/array/CRowVector.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/CRowVector.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -253,7 +253,7 @@
   if (len == 0)
     return *this;
 
-  Complex *d = fortran_vec (); // Ensures only one reference to my privates!
+  Complex *d = rwdata (); // Ensures only one reference to my privates!
 
   mx_inline_add2 (len, d, a.data ());
   return *this;
@@ -272,7 +272,7 @@
   if (len == 0)
     return *this;
 
-  Complex *d = fortran_vec (); // Ensures only one reference to my privates!
+  Complex *d = rwdata (); // Ensures only one reference to my privates!
 
   mx_inline_sub2 (len, d, a.data ());
   return *this;
@@ -302,7 +302,7 @@
       F77_INT ld = a_nr;
 
       retval.resize (a_nc);
-      Complex *y = retval.fortran_vec ();
+      Complex *y = retval.rwdata ();
 
       F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
                                a_nr, a_nc, 1.0, F77_CONST_DBLE_CMPLX_ARG (a.data ()),
--- a/liboctave/array/CSparse.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/CSparse.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -1103,7 +1103,7 @@
 
       // Setup the control parameters
       Matrix Control (UMFPACK_CONTROL, 1);
-      double *control = Control.fortran_vec ();
+      double *control = Control.rwdata ();
       UMFPACK_ZNAME (defaults) (control);
 
       double tmp = octave::sparse_params::get_key ("spumoni");
@@ -1139,7 +1139,7 @@
 
       void *Symbolic;
       Matrix Info (1, UMFPACK_INFO);
-      double *info = Info.fortran_vec ();
+      double *info = Info.rwdata ();
       int status = UMFPACK_ZNAME (qsymbolic) (nr, nc,
                                               octave::to_suitesparse_intptr (Ap),
                                               octave::to_suitesparse_intptr (Ai),
@@ -3709,7 +3709,7 @@
           F77_INT b_nc = octave::to_f77_int (b.cols ());
 
           retval = ComplexMatrix (b);
-          Complex *result = retval.fortran_vec ();
+          Complex *result = retval.rwdata ();
 
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
@@ -3775,7 +3775,7 @@
           F77_INT b_nc = octave::to_f77_int (b.cols ());
 
           retval = ComplexMatrix (b);
-          Complex *result = retval.fortran_vec ();
+          Complex *result = retval.rwdata ();
 
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
@@ -3847,7 +3847,7 @@
           OCTAVE_LOCAL_BUFFER (Complex, D, nr);
           OCTAVE_LOCAL_BUFFER (Complex, DL, nr - 1);
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           if (mattype.is_dense ())
             {
@@ -4042,7 +4042,7 @@
           rcond = 1.;
 
           retval = ComplexMatrix (b);
-          Complex *result = retval.fortran_vec ();
+          Complex *result = retval.rwdata ();
 
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
@@ -4108,7 +4108,7 @@
           rcond = 1.;
 
           retval = ComplexMatrix (b);
-          Complex *result = retval.fortran_vec ();
+          Complex *result = retval.rwdata ();
 
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
@@ -4178,7 +4178,7 @@
           OCTAVE_LOCAL_BUFFER (Complex, D, nr);
           OCTAVE_LOCAL_BUFFER (Complex, DL, nr - 1);
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           if (mattype.is_dense ())
             {
@@ -4346,7 +4346,7 @@
           F77_INT n_lower = octave::to_f77_int (mattype.nlower ());
           F77_INT ldm = n_lower + 1;
           ComplexMatrix m_band (ldm, nc);
-          Complex *tmp_data = m_band.fortran_vec ();
+          Complex *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -4395,9 +4395,9 @@
               if (calc_cond)
                 {
                   Array<Complex> z (dim_vector (2 * nr, 1));
-                  Complex *pz = z.fortran_vec ();
+                  Complex *pz = z.rwdata ();
                   Array<double> iz (dim_vector (nr, 1));
-                  double *piz = iz.fortran_vec ();
+                  double *piz = iz.rwdata ();
 
                   F77_XFCN (zpbcon, ZPBCON,
                             (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -4431,7 +4431,7 @@
               if (err == 0)
                 {
                   retval = ComplexMatrix (b);
-                  Complex *result = retval.fortran_vec ();
+                  Complex *result = retval.rwdata ();
 
                   F77_INT b_nr = octave::to_f77_int (b.rows ());
                   F77_INT b_nc = octave::to_f77_int (b.cols ());
@@ -4463,7 +4463,7 @@
           F77_INT ldm = n_upper + 2 * n_lower + 1;
 
           ComplexMatrix m_band (ldm, nc);
-          Complex *tmp_data = m_band.fortran_vec ();
+          Complex *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -4493,7 +4493,7 @@
             }
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
@@ -4526,9 +4526,9 @@
                 {
                   char job = '1';
                   Array<Complex> z (dim_vector (2 * nr, 1));
-                  Complex *pz = z.fortran_vec ();
+                  Complex *pz = z.rwdata ();
                   Array<double> iz (dim_vector (nr, 1));
-                  double *piz = iz.fortran_vec ();
+                  double *piz = iz.rwdata ();
 
                   F77_INT tmp_nc = octave::to_f77_int (nc);
 
@@ -4564,7 +4564,7 @@
               if (err == 0)
                 {
                   retval = ComplexMatrix (b);
-                  Complex *result = retval.fortran_vec ();
+                  Complex *result = retval.rwdata ();
 
                   F77_INT b_nr = octave::to_f77_int (b.rows ());
                   F77_INT b_nc = octave::to_f77_int (b.cols ());
@@ -4617,7 +4617,7 @@
           F77_INT ldm = n_lower + 1;
 
           ComplexMatrix m_band (ldm, nc);
-          Complex *tmp_data = m_band.fortran_vec ();
+          Complex *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -4664,9 +4664,9 @@
               if (calc_cond)
                 {
                   Array<Complex> z (dim_vector (2 * nr, 1));
-                  Complex *pz = z.fortran_vec ();
+                  Complex *pz = z.rwdata ();
                   Array<double> iz (dim_vector (nr, 1));
-                  double *piz = iz.fortran_vec ();
+                  double *piz = iz.rwdata ();
 
                   F77_XFCN (zpbcon, ZPBCON,
                             (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -4767,7 +4767,7 @@
           F77_INT ldm = n_upper + 2 * n_lower + 1;
 
           ComplexMatrix m_band (ldm, nc);
-          Complex *tmp_data = m_band.fortran_vec ();
+          Complex *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -4797,7 +4797,7 @@
             }
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
@@ -4828,9 +4828,9 @@
                 {
                   char job = '1';
                   Array<Complex> z (dim_vector (2 * nr, 1));
-                  Complex *pz = z.fortran_vec ();
+                  Complex *pz = z.rwdata ();
                   Array<double> iz (dim_vector (nr, 1));
-                  double *piz = iz.fortran_vec ();
+                  double *piz = iz.rwdata ();
 
                   F77_INT tmp_nc = octave::to_f77_int (nc);
 
@@ -4956,7 +4956,7 @@
           F77_INT ldm = n_lower + 1;
 
           ComplexMatrix m_band (ldm, nc);
-          Complex *tmp_data = m_band.fortran_vec ();
+          Complex *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -5005,9 +5005,9 @@
               if (calc_cond)
                 {
                   Array<Complex> z (dim_vector (2 * nr, 1));
-                  Complex *pz = z.fortran_vec ();
+                  Complex *pz = z.rwdata ();
                   Array<double> iz (dim_vector (nr, 1));
-                  double *piz = iz.fortran_vec ();
+                  double *piz = iz.rwdata ();
 
                   F77_XFCN (zpbcon, ZPBCON,
                             (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -5043,7 +5043,7 @@
                   F77_INT b_nr = octave::to_f77_int (b.rows ());
                   F77_INT b_nc = octave::to_f77_int (b.cols ());
                   retval = ComplexMatrix (b);
-                  Complex *result = retval.fortran_vec ();
+                  Complex *result = retval.rwdata ();
 
                   F77_XFCN (zpbtrs, ZPBTRS,
                             (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -5072,7 +5072,7 @@
           F77_INT ldm = n_upper + 2 * n_lower + 1;
 
           ComplexMatrix m_band (ldm, nc);
-          Complex *tmp_data = m_band.fortran_vec ();
+          Complex *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -5102,7 +5102,7 @@
             }
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
@@ -5133,9 +5133,9 @@
                 {
                   char job = '1';
                   Array<Complex> z (dim_vector (2 * nr, 1));
-                  Complex *pz = z.fortran_vec ();
+                  Complex *pz = z.rwdata ();
                   Array<double> iz (dim_vector (nr, 1));
-                  double *piz = iz.fortran_vec ();
+                  double *piz = iz.rwdata ();
 
                   F77_INT tmp_nc = octave::to_f77_int (nc);
 
@@ -5174,7 +5174,7 @@
                   F77_INT b_nr = octave::to_f77_int (b.rows ());
                   F77_INT b_nc = octave::to_f77_int (b.cols ());
                   retval = ComplexMatrix (b);
-                  Complex *result = retval.fortran_vec ();
+                  Complex *result = retval.rwdata ();
 
                   F77_XFCN (zgbtrs, ZGBTRS,
                             (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -5223,7 +5223,7 @@
           F77_INT ldm = n_lower + 1;
 
           ComplexMatrix m_band (ldm, nc);
-          Complex *tmp_data = m_band.fortran_vec ();
+          Complex *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -5273,9 +5273,9 @@
               if (calc_cond)
                 {
                   Array<Complex> z (dim_vector (2 * nr, 1));
-                  Complex *pz = z.fortran_vec ();
+                  Complex *pz = z.rwdata ();
                   Array<double> iz (dim_vector (nr, 1));
-                  double *piz = iz.fortran_vec ();
+                  double *piz = iz.rwdata ();
 
                   F77_XFCN (zpbcon, ZPBCON,
                             (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -5380,7 +5380,7 @@
           F77_INT ldm = n_upper + 2 * n_lower + 1;
 
           ComplexMatrix m_band (ldm, nc);
-          Complex *tmp_data = m_band.fortran_vec ();
+          Complex *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -5410,7 +5410,7 @@
             }
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
@@ -5441,9 +5441,9 @@
                 {
                   char job = '1';
                   Array<Complex> z (dim_vector (2 * nr, 1));
-                  Complex *pz = z.fortran_vec ();
+                  Complex *pz = z.rwdata ();
                   Array<double> iz (dim_vector (nr, 1));
-                  double *piz = iz.fortran_vec ();
+                  double *piz = iz.rwdata ();
 
                   F77_INT tmp_nc = octave::to_f77_int (nc);
 
@@ -5554,7 +5554,7 @@
 
   // Setup the control parameters
   Control = Matrix (UMFPACK_CONTROL, 1);
-  double *control = Control.fortran_vec ();
+  double *control = Control.rwdata ();
   UMFPACK_ZNAME (defaults) (control);
 
   double tmp = octave::sparse_params::get_key ("spumoni");
@@ -5588,7 +5588,7 @@
 
   void *Symbolic;
   Info = Matrix (1, UMFPACK_INFO);
-  double *info = Info.fortran_vec ();
+  double *info = Info.rwdata ();
   int status = UMFPACK_ZNAME (qsymbolic) (nr, nc,
                                           octave::to_suitesparse_intptr (Ap),
                                           octave::to_suitesparse_intptr (Ai),
@@ -5829,8 +5829,8 @@
               octave_idx_type b_nr = b.rows ();
               octave_idx_type b_nc = b.cols ();
               int status = 0;
-              double *control = Control.fortran_vec ();
-              double *info = Info.fortran_vec ();
+              double *control = Control.rwdata ();
+              double *info = Info.rwdata ();
               const octave_idx_type *Ap = cidx ();
               const octave_idx_type *Ai = ridx ();
               const Complex *Ax = data ();
@@ -5843,7 +5843,7 @@
               OCTAVE_LOCAL_BUFFER (Complex, Bz, b_nr);
 #endif
               retval.resize (b_nr, b_nc);
-              Complex *Xx = retval.fortran_vec ();
+              Complex *Xx = retval.rwdata ();
 
               for (octave_idx_type j = 0, iidx = 0; j < b_nc; j++, iidx += b_nr)
                 {
@@ -6086,8 +6086,8 @@
               octave_idx_type b_nr = b.rows ();
               octave_idx_type b_nc = b.cols ();
               int status = 0;
-              double *control = Control.fortran_vec ();
-              double *info = Info.fortran_vec ();
+              double *control = Control.rwdata ();
+              double *info = Info.rwdata ();
               const octave_idx_type *Ap = cidx ();
               const octave_idx_type *Ai = ridx ();
               const Complex *Ax = data ();
@@ -6360,15 +6360,15 @@
               octave_idx_type b_nr = b.rows ();
               octave_idx_type b_nc = b.cols ();
               int status = 0;
-              double *control = Control.fortran_vec ();
-              double *info = Info.fortran_vec ();
+              double *control = Control.rwdata ();
+              double *info = Info.rwdata ();
               const octave_idx_type *Ap = cidx ();
               const octave_idx_type *Ai = ridx ();
               const Complex *Ax = data ();
               const Complex *Bx = b.data ();
 
               retval.resize (b_nr, b_nc);
-              Complex *Xx = retval.fortran_vec ();
+              Complex *Xx = retval.rwdata ();
 
               for (octave_idx_type j = 0, iidx = 0; j < b_nc; j++, iidx += b_nr)
                 {
@@ -6596,8 +6596,8 @@
               octave_idx_type b_nr = b.rows ();
               octave_idx_type b_nc = b.cols ();
               int status = 0;
-              double *control = Control.fortran_vec ();
-              double *info = Info.fortran_vec ();
+              double *control = Control.rwdata ();
+              double *info = Info.rwdata ();
               const octave_idx_type *Ap = cidx ();
               const octave_idx_type *Ai = ridx ();
               const Complex *Ax = data ();
--- a/liboctave/array/DiagArray2.h	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/DiagArray2.h	Wed Dec 27 16:55:14 2023 -0800
@@ -166,7 +166,8 @@
 
   const T * data () const { return Array<T>::data (); }
 
-  T * fortran_vec () { return Array<T>::fortran_vec (); }
+  T * rwdata () { return Array<T>::rwdata (); }
+  inline T * fortran_vec () { return rwdata (); }
 
   void print_info (std::ostream& os, const std::string& prefix) const
   { Array<T>::print_info (os, prefix); }
--- a/liboctave/array/MArray.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/MArray.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -74,7 +74,7 @@
   octave_quit ();
 
   octave_idx_type len = idx.length (n);
-  idx.loop (len, _idxadds_helper<T> (this->fortran_vec (), val));
+  idx.loop (len, _idxadds_helper<T> (this->rwdata (), val));
 }
 
 template <typename T>
@@ -92,7 +92,7 @@
   octave_quit ();
 
   octave_idx_type len = std::min (idx.length (n), vals.numel ());
-  idx.loop (len, _idxadda_helper<T> (this->fortran_vec (), vals.data ()));
+  idx.loop (len, _idxadda_helper<T> (this->rwdata (), vals.data ()));
 }
 
 template <typename T, T op (typename ref_param<T>::type,
@@ -125,7 +125,7 @@
   octave_quit ();
 
   octave_idx_type len = std::min (idx.length (n), vals.numel ());
-  idx.loop (len, _idxbinop_helper<T, octave::math::min> (this->fortran_vec (),
+  idx.loop (len, _idxbinop_helper<T, octave::math::min> (this->rwdata (),
                                                          vals.data ()));
 }
 
@@ -144,7 +144,7 @@
   octave_quit ();
 
   octave_idx_type len = std::min (idx.length (n), vals.numel ());
-  idx.loop (len, _idxbinop_helper<T, octave::math::max> (this->fortran_vec (),
+  idx.loop (len, _idxbinop_helper<T, octave::math::max> (this->rwdata (),
                                                          vals.data ()));
 }
 
@@ -180,7 +180,7 @@
   if (ddv != sdv)
     (*current_liboctave_error_handler) ("accumdim: dimension mismatch");
 
-  T *dst = Array<T>::fortran_vec ();
+  T *dst = Array<T>::rwdata ();
   const T *src = vals.data ();
   octave_idx_type len = idx.length (ns);
 
--- a/liboctave/array/PermMatrix.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/PermMatrix.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -169,7 +169,7 @@
 
   const octave_idx_type *p = data ();
   Array<octave_idx_type> res_pvec (dim_vector (n, 1), -1);
-  octave_idx_type *q = res_pvec.fortran_vec ();
+  octave_idx_type *q = res_pvec.rwdata ();
 
   for (octave_idx_type ics = 0; ics < n; ics++)
     {
--- a/liboctave/array/Range.h	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/Range.h	Wed Dec 27 16:55:14 2023 -0800
@@ -249,7 +249,7 @@
         // Loop over all values in IDX, executing the lambda
         // expression for each index value.
 
-        T *array = retval.fortran_vec ();
+        T *array = retval.rwdata ();
 
         idx.loop (n, [=, &array] (octave_idx_type i)
         {
--- a/liboctave/array/Sparse.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/Sparse.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -1998,10 +1998,10 @@
               // Disassembly our matrix...
               Array<octave_idx_type> new_ri (dim_vector (new_nz, 1));
               Array<T> new_data (dim_vector (new_nz, 1));
-              std::copy_n (tmp.ridx (), nz, new_ri.fortran_vec ());
-              std::copy_n (tmp.data (), nz, new_data.fortran_vec ());
+              std::copy_n (tmp.ridx (), nz, new_ri.rwdata ());
+              std::copy_n (tmp.data (), nz, new_data.rwdata ());
               // ... insert new data (densified) ...
-              idx.copy_data (new_ri.fortran_vec () + nz);
+              idx.copy_data (new_ri.rwdata () + nz);
               new_data.assign (octave::idx_vector (nz, new_nz), rhs.array_value ());
               // ... reassembly.
               *this = Sparse<T, Alloc> (new_data, new_ri, 0, nr, nc, false);
--- a/liboctave/array/boolSparse.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/boolSparse.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -178,7 +178,7 @@
       else
         {
           Array<octave_idx_type> tmp (dim_vector (nz, 1));
-          std::copy_n (ridx (), nz, tmp.fortran_vec ());
+          std::copy_n (ridx (), nz, tmp.rwdata ());
           retval = Sparse<bool> (Array<bool> (dim_vector (1, 1), true),
                                  octave::idx_vector (tmp),
                                  octave::idx_vector (0), nr, 1, false);
@@ -228,7 +228,7 @@
       else
         {
           Array<octave_idx_type> tmp (dim_vector (nz, 1));
-          std::copy_n (ridx (), nz, tmp.fortran_vec ());
+          std::copy_n (ridx (), nz, tmp.rwdata ());
           retval = Sparse<double> (Array<double> (dim_vector (1, 1), 1.0),
                                    octave::idx_vector (tmp),
                                    octave::idx_vector (0), nr, 1);
--- a/liboctave/array/dColVector.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/dColVector.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -196,7 +196,7 @@
         retval.fill (0.0);
       else
         {
-          double *y = retval.fortran_vec ();
+          double *y = retval.rwdata ();
 
           F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
                                    nr, nc, 1.0, m.data (), nr,
--- a/liboctave/array/dDiagMatrix.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/dDiagMatrix.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -268,7 +268,7 @@
   else if (z_count > 0)
     {
       info = -1;
-      element_type *data = retval.fortran_vec ();
+      element_type *data = retval.rwdata ();
       std::fill (data, data + len, octave::numeric_limits<double>::Inf ());
     }
 
--- a/liboctave/array/dMatrix.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/dMatrix.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -503,7 +503,7 @@
   char uplo = (typ == MatrixType::Lower ? 'L' : 'U');
   char udiag = 'N';
   retval = *this;
-  double *tmp_data = retval.fortran_vec ();
+  double *tmp_data = retval.rwdata ();
 
   F77_INT tmp_info = 0;
 
@@ -559,10 +559,10 @@
     (*current_liboctave_error_handler) ("inverse requires square matrix");
 
   Array<F77_INT> ipvt (dim_vector (nr, 1));
-  F77_INT *pipvt = ipvt.fortran_vec ();
+  F77_INT *pipvt = ipvt.rwdata ();
 
   retval = *this;
-  double *tmp_data = retval.fortran_vec ();
+  double *tmp_data = retval.rwdata ();
 
   Array<double> z (dim_vector (1, 1));
   F77_INT lwork = -1;
@@ -571,12 +571,12 @@
 
   // Query the optimum work array size.
   F77_XFCN (dgetri, DGETRI, (nc, tmp_data, nr, pipvt,
-                             z.fortran_vec (), lwork, tmp_info));
+                             z.rwdata (), lwork, tmp_info));
 
   lwork = static_cast<F77_INT> (z(0));
   lwork = (lwork < 4 * nc ? 4 * nc : lwork);
   z.resize (dim_vector (lwork, 1));
-  double *pz = z.fortran_vec ();
+  double *pz = z.rwdata ();
 
   info = 0;
   tmp_info = 0;
@@ -605,7 +605,7 @@
           // Now calculate the condition number for non-singular matrix.
           char job = '1';
           Array<F77_INT> iz (dim_vector (nc, 1));
-          F77_INT *piz = iz.fortran_vec ();
+          F77_INT *piz = iz.rwdata ();
           F77_XFCN (dgecon, DGECON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                      nc, tmp_data, nr, anorm,
                                      rcon, pz, piz, dgecon_info
@@ -752,7 +752,7 @@
     }
 
   const double *in (data ());
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::fft (in, out, npts, nsamples);
 
@@ -782,7 +782,7 @@
 
   ComplexMatrix tmp (*this);
   const Complex *in (tmp.data ());
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::ifft (in, out, npts, nsamples);
 
@@ -796,7 +796,7 @@
 
   const double *in = data ();
   ComplexMatrix retval (rows (), cols ());
-  octave::fftw::fftNd (in, retval.fortran_vec (), 2, dv);
+  octave::fftw::fftNd (in, retval.rwdata (), 2, dv);
 
   return retval;
 }
@@ -807,7 +807,7 @@
   dim_vector dv (rows (), cols ());
 
   ComplexMatrix retval (*this);
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::ifftNd (out, out, 2, dv);
 
@@ -909,7 +909,7 @@
   else if (typ == MatrixType::Hermitian)
     {
       Matrix atmp = *this;
-      double *tmp_data = atmp.fortran_vec ();
+      double *tmp_data = atmp.rwdata ();
 
       // Calculate the norm of the matrix for later use when determining rcon.
       double anorm;
@@ -936,9 +936,9 @@
           if (calc_cond)
             {
               Array<double> z (dim_vector (3 * nc, 1));
-              double *pz = z.fortran_vec ();
+              double *pz = z.rwdata ();
               Array<F77_INT> iz (dim_vector (nc, 1));
-              F77_INT *piz = iz.fortran_vec ();
+              F77_INT *piz = iz.rwdata ();
 
               F77_XFCN (dpocon, DPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                          nr, tmp_data, nr, anorm,
@@ -963,10 +963,10 @@
   if (typ == MatrixType::Full)
     {
       Array<F77_INT> ipvt (dim_vector (nr, 1));
-      F77_INT *pipvt = ipvt.fortran_vec ();
+      F77_INT *pipvt = ipvt.rwdata ();
 
       Matrix atmp = *this;
-      double *tmp_data = atmp.fortran_vec ();
+      double *tmp_data = atmp.rwdata ();
 
       info = 0;
       F77_INT tmp_info = 0;
@@ -994,9 +994,9 @@
               // Now calc the condition number for non-singular matrix.
               char job = '1';
               Array<double> z (dim_vector (4 * nc, 1));
-              double *pz = z.fortran_vec ();
+              double *pz = z.rwdata ();
               Array<F77_INT> iz (dim_vector (nc, 1));
-              F77_INT *piz = iz.fortran_vec ();
+              F77_INT *piz = iz.rwdata ();
 
               F77_XFCN (dgecon, DGECON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                          nc, tmp_data, nr, anorm,
@@ -1061,9 +1061,9 @@
           char dia = 'N';
 
           Array<double> z (dim_vector (3 * nc, 1));
-          double *pz = z.fortran_vec ();
+          double *pz = z.rwdata ();
           Array<F77_INT> iz (dim_vector (nc, 1));
-          F77_INT *piz = iz.fortran_vec ();
+          F77_INT *piz = iz.rwdata ();
 
           F77_XFCN (dtrcon, DTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1089,9 +1089,9 @@
           char dia = 'N';
 
           Array<double> z (dim_vector (3 * nc, 1));
-          double *pz = z.fortran_vec ();
+          double *pz = z.rwdata ();
           Array<F77_INT> iz (dim_vector (nc, 1));
-          F77_INT *piz = iz.fortran_vec ();
+          F77_INT *piz = iz.rwdata ();
 
           F77_XFCN (dtrcon, DTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1118,7 +1118,7 @@
               char job = 'L';
 
               Matrix atmp = *this;
-              double *tmp_data = atmp.fortran_vec ();
+              double *tmp_data = atmp.rwdata ();
 
               anorm = norm1 (atmp);
 
@@ -1135,9 +1135,9 @@
               else
                 {
                   Array<double> z (dim_vector (3 * nc, 1));
-                  double *pz = z.fortran_vec ();
+                  double *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nc, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_XFCN (dpocon, DPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, tmp_data, nr, anorm,
@@ -1154,18 +1154,18 @@
               F77_INT info = 0;
 
               Matrix atmp = *this;
-              double *tmp_data = atmp.fortran_vec ();
+              double *tmp_data = atmp.rwdata ();
 
               Array<F77_INT> ipvt (dim_vector (nr, 1));
-              F77_INT *pipvt = ipvt.fortran_vec ();
+              F77_INT *pipvt = ipvt.rwdata ();
 
               if (anorm < 0.0)
                 anorm = norm1 (atmp);
 
               Array<double> z (dim_vector (4 * nc, 1));
-              double *pz = z.fortran_vec ();
+              double *pz = z.rwdata ();
               Array<F77_INT> iz (dim_vector (nc, 1));
-              F77_INT *piz = iz.fortran_vec ();
+              F77_INT *piz = iz.rwdata ();
 
               F77_XFCN (dgetrf, DGETRF, (nr, nr, tmp_data, nr, pipvt, info));
 
@@ -1230,7 +1230,7 @@
       const double *tmp_data = data ();
 
       retval = b;
-      double *result = retval.fortran_vec ();
+      double *result = retval.rwdata ();
 
       char uplo = 'U';
       char trans = get_blas_char (transt);
@@ -1256,9 +1256,9 @@
           dia = 'N';
 
           Array<double> z (dim_vector (3 * nc, 1));
-          double *pz = z.fortran_vec ();
+          double *pz = z.rwdata ();
           Array<F77_INT> iz (dim_vector (nc, 1));
-          F77_INT *piz = iz.fortran_vec ();
+          F77_INT *piz = iz.rwdata ();
 
           F77_XFCN (dtrcon, DTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1328,7 +1328,7 @@
       const double *tmp_data = data ();
 
       retval = b;
-      double *result = retval.fortran_vec ();
+      double *result = retval.rwdata ();
 
       char uplo = 'L';
       char trans = get_blas_char (transt);
@@ -1354,9 +1354,9 @@
           dia = 'N';
 
           Array<double> z (dim_vector (3 * nc, 1));
-          double *pz = z.fortran_vec ();
+          double *pz = z.rwdata ();
           Array<F77_INT> iz (dim_vector (nc, 1));
-          F77_INT *piz = iz.fortran_vec ();
+          F77_INT *piz = iz.rwdata ();
 
           F77_XFCN (dtrcon, DTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1418,7 +1418,7 @@
           char job = 'L';
 
           Matrix atmp = *this;
-          double *tmp_data = atmp.fortran_vec ();
+          double *tmp_data = atmp.rwdata ();
 
           // The norm of the matrix for later use when determining rcon.
           if (calc_cond)
@@ -1446,9 +1446,9 @@
               if (calc_cond)
                 {
                   Array<double> z (dim_vector (3 * nc, 1));
-                  double *pz = z.fortran_vec ();
+                  double *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nc, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_XFCN (dpocon, DPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, tmp_data, nr, anorm,
@@ -1476,7 +1476,7 @@
               if (info == 0)
                 {
                   retval = b;
-                  double *result = retval.fortran_vec ();
+                  double *result = retval.rwdata ();
 
                   F77_INT b_nr = octave::to_f77_int (b.rows ());
                   F77_INT b_nc = octave::to_f77_int (b.cols ());
@@ -1501,18 +1501,18 @@
           info = 0;
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           Matrix atmp = *this;
-          double *tmp_data = atmp.fortran_vec ();
+          double *tmp_data = atmp.rwdata ();
 
           if (calc_cond && anorm < 0.0)
             anorm = norm1 (atmp);
 
           Array<double> z (dim_vector (4 * nc, 1));
-          double *pz = z.fortran_vec ();
+          double *pz = z.rwdata ();
           Array<F77_INT> iz (dim_vector (nc, 1));
-          F77_INT *piz = iz.fortran_vec ();
+          F77_INT *piz = iz.rwdata ();
 
           F77_INT tmp_info = 0;
 
@@ -1563,7 +1563,7 @@
               if (info == 0)
                 {
                   retval = b;
-                  double *result = retval.fortran_vec ();
+                  double *result = retval.rwdata ();
 
                   F77_INT b_nr = octave::to_f77_int (b.rows ());
                   F77_INT b_nc = octave::to_f77_int (b.cols ());
@@ -1675,7 +1675,7 @@
   octave_idx_type nel = m*n;
   Matrix retval (m, 2*n);
   const Complex *cmd = cm.data ();
-  double *rd = retval.fortran_vec ();
+  double *rd = retval.rwdata ();
   for (octave_idx_type i = 0; i < nel; i++)
     {
       rd[i] = std::real (cmd[i]);
@@ -1692,7 +1692,7 @@
   octave_idx_type nel = m*n;
   ComplexMatrix retval (m, n);
   const double *smd = sm.data ();
-  Complex *rd = retval.fortran_vec ();
+  Complex *rd = retval.rwdata ();
   for (octave_idx_type i = 0; i < nel; i++)
     rd[i] = Complex (smd[i], smd[nel+i]);
   return retval;
@@ -1959,11 +1959,11 @@
         retval = b;
 
       Matrix atmp = *this;
-      double *tmp_data = atmp.fortran_vec ();
-
-      double *pretval = retval.fortran_vec ();
+      double *tmp_data = atmp.rwdata ();
+
+      double *pretval = retval.rwdata ();
       Array<double> s (dim_vector (minmn, 1));
-      double *ps = s.fortran_vec ();
+      double *ps = s.rwdata ();
 
       // Ask DGELSD what the dimension of WORK should be.
       F77_INT lwork = -1;
@@ -1998,13 +1998,13 @@
       if (liwork < 1)
         liwork = 1;
       Array<F77_INT> iwork (dim_vector (liwork, 1));
-      F77_INT *piwork = iwork.fortran_vec ();
+      F77_INT *piwork = iwork.rwdata ();
 
       F77_INT tmp_info = 0;
       F77_INT tmp_rank = 0;
 
       F77_XFCN (dgelsd, DGELSD, (m, n, nrhs, tmp_data, m, pretval, maxmn,
-                                 ps, rcon, tmp_rank, work.fortran_vec (),
+                                 ps, rcon, tmp_rank, work.rwdata (),
                                  lwork, piwork, tmp_info));
 
       info = tmp_info;
@@ -2066,7 +2066,7 @@
         {
           F77_XFCN (dgelsd, DGELSD, (m, n, nrhs, tmp_data, m, pretval,
                                      maxmn, ps, rcon, tmp_rank,
-                                     work.fortran_vec (), lwork,
+                                     work.rwdata (), lwork,
                                      piwork, tmp_info));
 
           info = tmp_info;
@@ -2181,11 +2181,11 @@
         retval = b;
 
       Matrix atmp = *this;
-      double *tmp_data = atmp.fortran_vec ();
-
-      double *pretval = retval.fortran_vec ();
+      double *tmp_data = atmp.rwdata ();
+
+      double *pretval = retval.rwdata ();
       Array<double> s (dim_vector (minmn, 1));
-      double *ps = s.fortran_vec ();
+      double *ps = s.rwdata ();
 
       // Ask DGELSD what the dimension of WORK should be.
       F77_INT lwork = -1;
@@ -2213,13 +2213,13 @@
       if (liwork < 1)
         liwork = 1;
       Array<F77_INT> iwork (dim_vector (liwork, 1));
-      F77_INT *piwork = iwork.fortran_vec ();
+      F77_INT *piwork = iwork.rwdata ();
 
       F77_INT tmp_info = 0;
       F77_INT tmp_rank = 0;
 
       F77_XFCN (dgelsd, DGELSD, (m, n, nrhs, tmp_data, m, pretval, maxmn,
-                                 ps, rcon, tmp_rank, work.fortran_vec (),
+                                 ps, rcon, tmp_rank, work.rwdata (),
                                  lwork, piwork, tmp_info));
 
       info = tmp_info;
@@ -2230,7 +2230,7 @@
 
       F77_XFCN (dgelsd, DGELSD, (m, n, nrhs, tmp_data, m, pretval,
                                  maxmn, ps, rcon, tmp_rank,
-                                 work.fortran_vec (), lwork,
+                                 work.rwdata (), lwork,
                                  piwork, tmp_info));
 
       info = tmp_info;
@@ -2338,7 +2338,7 @@
       F77_INT a_len = octave::to_f77_int (a.numel ());
 
       retval = Matrix (len, a_len);
-      double *c = retval.fortran_vec ();
+      double *c = retval.rwdata ();
 
       F77_XFCN (dgemm, DGEMM, (F77_CONST_CHAR_ARG2 ("N", 1),
                                F77_CONST_CHAR_ARG2 ("N", 1),
@@ -2730,9 +2730,9 @@
   double scale;
   F77_INT info;
 
-  double *pa = sch_a.fortran_vec ();
-  double *pb = sch_b.fortran_vec ();
-  double *px = cx.fortran_vec ();
+  double *pa = sch_a.rwdata ();
+  double *pb = sch_b.rwdata ();
+  double *px = cx.rwdata ();
 
   F77_XFCN (dtrsyl, DTRSYL, (F77_CONST_CHAR_ARG2 ("N", 1),
                              F77_CONST_CHAR_ARG2 ("N", 1),
@@ -2807,7 +2807,7 @@
       F77_INT lda = octave::to_f77_int (a.rows ());
 
       retval = Matrix (a_nr, b_nc);
-      double *c = retval.fortran_vec ();
+      double *c = retval.rwdata ();
 
       const char ctra = get_blas_trans_arg (tra);
       F77_XFCN (dsyrk, DSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
@@ -2829,7 +2829,7 @@
       F77_INT tdb = octave::to_f77_int (b.cols ());
 
       retval = Matrix (a_nr, b_nc);
-      double *c = retval.fortran_vec ();
+      double *c = retval.rwdata ();
 
       if (b_nc == 1)
         {
--- a/liboctave/array/dNDArray.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/dNDArray.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -49,7 +49,7 @@
 {
   const octave_idx_type *pa = a.data ();
   resize (a.dims ());
-  double *ptmp = fortran_vec ();
+  double *ptmp = rwdata ();
   if (negative_to_nan)
     {
       double nan_val = lo_ieee_nan_value ();
@@ -117,7 +117,7 @@
 
   const double *in (data ());
   ComplexNDArray retval (dv);
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   // Need to be careful here about the distance between fft's
   for (octave_idx_type k = 0; k < nloop; k++)
@@ -147,7 +147,7 @@
   octave_idx_type dist = (stride == 1 ? n : 1);
 
   ComplexNDArray retval (*this);
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   // Need to be careful here about the distance between fft's
   for (octave_idx_type k = 0; k < nloop; k++)
@@ -167,7 +167,7 @@
   dim_vector dv2 (dv(0), dv(1));
   const double *in = data ();
   ComplexNDArray retval (dv);
-  Complex *out = retval.fortran_vec ();
+  Complex *out = retval.rwdata ();
   octave_idx_type howmany = numel () / dv(0) / dv(1);
   octave_idx_type dist = dv(0) * dv(1);
 
@@ -186,7 +186,7 @@
 
   dim_vector dv2 (dv(0), dv(1));
   ComplexNDArray retval (*this);
-  Complex *out = retval.fortran_vec ();
+  Complex *out = retval.rwdata ();
   octave_idx_type howmany = numel () / dv(0) / dv(1);
   octave_idx_type dist = dv(0) * dv(1);
 
@@ -204,7 +204,7 @@
 
   const double *in (data ());
   ComplexNDArray retval (dv);
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::fftNd (in, out, rank, dv);
 
@@ -218,9 +218,9 @@
   int rank = dv.ndims ();
 
   ComplexNDArray tmp (*this);
-  Complex *in (tmp.fortran_vec ());
+  Complex *in (tmp.rwdata ());
   ComplexNDArray retval (dv);
-  Complex *out (retval.fortran_vec ());
+  Complex *out (retval.rwdata ());
 
   octave::fftw::ifftNd (in, out, rank, dv);
 
--- a/liboctave/array/dRowVector.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/dRowVector.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -190,7 +190,7 @@
       F77_INT ld = a_nr;
 
       retval.resize (a_nc);
-      double *y = retval.fortran_vec ();
+      double *y = retval.rwdata ();
 
       F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
                                a_nr, a_nc, 1.0, a.data (),
--- a/liboctave/array/dSparse.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/dSparse.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -1043,7 +1043,7 @@
 
       // Setup the control parameters
       Matrix Control (UMFPACK_CONTROL, 1);
-      double *control = Control.fortran_vec ();
+      double *control = Control.rwdata ();
       UMFPACK_DNAME (defaults) (control);
 
       double tmp = octave::sparse_params::get_key ("spumoni");
@@ -1078,7 +1078,7 @@
 
       void *Symbolic;
       Matrix Info (1, UMFPACK_INFO);
-      double *info = Info.fortran_vec ();
+      double *info = Info.rwdata ();
       int status = UMFPACK_DNAME (qsymbolic) (nr, nc,
                                               octave::to_suitesparse_intptr (Ap),
                                               octave::to_suitesparse_intptr (Ai),
@@ -3656,7 +3656,7 @@
           F77_INT b_nc = octave::to_f77_int (b.cols ());
 
           retval = b;
-          double *result = retval.fortran_vec ();
+          double *result = retval.rwdata ();
 
           F77_INT tmp_err = 0;
 
@@ -3721,7 +3721,7 @@
           F77_INT b_nc = octave::to_f77_int (b.cols ());
 
           retval = b;
-          double *result = retval.fortran_vec ();
+          double *result = retval.rwdata ();
 
           F77_INT tmp_err = 0;
 
@@ -3789,7 +3789,7 @@
           OCTAVE_LOCAL_BUFFER (double, D, nr);
           OCTAVE_LOCAL_BUFFER (double, DL, nr - 1);
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           if (mattype.is_dense ())
             {
@@ -3978,7 +3978,7 @@
           rcond = 1.;
 
           retval = b;
-          Complex *result = retval.fortran_vec ();
+          Complex *result = retval.rwdata ();
 
           F77_INT tmp_err = 0;
 
@@ -4044,7 +4044,7 @@
           rcond = 1.;
 
           retval = b;
-          Complex *result = retval.fortran_vec ();
+          Complex *result = retval.rwdata ();
 
           F77_INT tmp_err = 0;
 
@@ -4113,7 +4113,7 @@
           OCTAVE_LOCAL_BUFFER (double, D, nr);
           OCTAVE_LOCAL_BUFFER (double, DL, nr - 1);
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           if (mattype.is_dense ())
             {
@@ -4296,7 +4296,7 @@
           F77_INT n_lower = octave::to_f77_int (mattype.nlower ());
           F77_INT ldm = n_lower + 1;
           Matrix m_band (ldm, nc);
-          double *tmp_data = m_band.fortran_vec ();
+          double *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -4345,9 +4345,9 @@
               if (calc_cond)
                 {
                   Array<double> z (dim_vector (3 * nr, 1));
-                  double *pz = z.fortran_vec ();
+                  double *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nr, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_XFCN (dpbcon, DPBCON,
                             (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -4381,7 +4381,7 @@
               if (err == 0)
                 {
                   retval = b;
-                  double *result = retval.fortran_vec ();
+                  double *result = retval.rwdata ();
 
                   F77_INT b_nr = octave::to_f77_int (b.rows ());
                   F77_INT b_nc = octave::to_f77_int (b.cols ());
@@ -4413,7 +4413,7 @@
           F77_INT ldm = n_upper + 2 * n_lower + 1;
 
           Matrix m_band (ldm, nc);
-          double *tmp_data = m_band.fortran_vec ();
+          double *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -4445,7 +4445,7 @@
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           F77_INT tmp_err = 0;
 
@@ -4475,9 +4475,9 @@
                 {
                   char job = '1';
                   Array<double> z (dim_vector (3 * nr, 1));
-                  double *pz = z.fortran_vec ();
+                  double *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nr, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_INT tmp_nc = octave::to_f77_int (nc);
 
@@ -4513,7 +4513,7 @@
               if (err == 0)
                 {
                   retval = b;
-                  double *result = retval.fortran_vec ();
+                  double *result = retval.rwdata ();
 
                   F77_INT b_nr = octave::to_f77_int (b.rows ());
                   F77_INT b_nc = octave::to_f77_int (b.cols ());
@@ -4566,7 +4566,7 @@
           F77_INT ldm = octave::to_f77_int (n_lower + 1);
 
           Matrix m_band (ldm, nc);
-          double *tmp_data = m_band.fortran_vec ();
+          double *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -4613,9 +4613,9 @@
               if (calc_cond)
                 {
                   Array<double> z (dim_vector (3 * nr, 1));
-                  double *pz = z.fortran_vec ();
+                  double *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nr, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_XFCN (dpbcon, DPBCON,
                             (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -4716,7 +4716,7 @@
           F77_INT ldm = octave::to_f77_int (n_upper + 2 * n_lower + 1);
 
           Matrix m_band (ldm, nc);
-          double *tmp_data = m_band.fortran_vec ();
+          double *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -4749,7 +4749,7 @@
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           F77_INT tmp_err = 0;
 
@@ -4777,9 +4777,9 @@
                 {
                   char job = '1';
                   Array<double> z (dim_vector (3 * nr, 1));
-                  double *pz = z.fortran_vec ();
+                  double *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nr, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_INT tmp_nc = octave::to_f77_int (nc);
 
@@ -4906,7 +4906,7 @@
           F77_INT ldm = n_lower + 1;
 
           Matrix m_band (ldm, nc);
-          double *tmp_data = m_band.fortran_vec ();
+          double *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -4955,9 +4955,9 @@
               if (calc_cond)
                 {
                   Array<double> z (dim_vector (3 * nr, 1));
-                  double *pz = z.fortran_vec ();
+                  double *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nr, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_XFCN (dpbcon, DPBCON,
                             (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -5056,7 +5056,7 @@
           F77_INT ldm = n_upper + 2 * n_lower + 1;
 
           Matrix m_band (ldm, nc);
-          double *tmp_data = m_band.fortran_vec ();
+          double *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -5089,7 +5089,7 @@
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           F77_INT tmp_err = 0;
 
@@ -5117,9 +5117,9 @@
                 {
                   char job = '1';
                   Array<double> z (dim_vector (3 * nr, 1));
-                  double *pz = z.fortran_vec ();
+                  double *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nr, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_INT tmp_nc = octave::to_f77_int (nc);
 
@@ -5230,7 +5230,7 @@
           F77_INT ldm = n_lower + 1;
 
           Matrix m_band (ldm, nc);
-          double *tmp_data = m_band.fortran_vec ();
+          double *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -5280,9 +5280,9 @@
               if (calc_cond)
                 {
                   Array<double> z (dim_vector (3 * nr, 1));
-                  double *pz = z.fortran_vec ();
+                  double *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nr, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_XFCN (dpbcon, DPBCON,
                             (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -5410,7 +5410,7 @@
           F77_INT ldm = n_upper + 2 * n_lower + 1;
 
           Matrix m_band (ldm, nc);
-          double *tmp_data = m_band.fortran_vec ();
+          double *tmp_data = m_band.rwdata ();
 
           if (! mattype.is_dense ())
             {
@@ -5443,7 +5443,7 @@
           F77_INT tmp_nr = octave::to_f77_int (nr);
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           F77_INT tmp_err = 0;
 
@@ -5471,9 +5471,9 @@
                 {
                   char job = '1';
                   Array<double> z (dim_vector (3 * nr, 1));
-                  double *pz = z.fortran_vec ();
+                  double *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nr, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_INT tmp_nc = octave::to_f77_int (nc);
 
@@ -5598,7 +5598,7 @@
 
   // Setup the control parameters
   Control = Matrix (UMFPACK_CONTROL, 1);
-  double *control = Control.fortran_vec ();
+  double *control = Control.rwdata ();
   UMFPACK_DNAME (defaults) (control);
 
   double tmp = octave::sparse_params::get_key ("spumoni");
@@ -5631,7 +5631,7 @@
 
   void *Symbolic;
   Info = Matrix (1, UMFPACK_INFO);
-  double *info = Info.fortran_vec ();
+  double *info = Info.rwdata ();
   int status = UMFPACK_DNAME (qsymbolic) (nr, nc,
                                           octave::to_suitesparse_intptr (Ap),
                                           octave::to_suitesparse_intptr (Ai),
@@ -5870,12 +5870,12 @@
               Control (UMFPACK_IRSTEP) = 1;
               const double *Bx = b.data ();
               retval.resize (b.rows (), b.cols ());
-              double *result = retval.fortran_vec ();
+              double *result = retval.rwdata ();
               octave_idx_type b_nr = b.rows ();
               octave_idx_type b_nc = b.cols ();
               int status = 0;
-              double *control = Control.fortran_vec ();
-              double *info = Info.fortran_vec ();
+              double *control = Control.rwdata ();
+              double *info = Info.rwdata ();
               const octave_idx_type *Ap = cidx ();
               const octave_idx_type *Ai = ridx ();
               const double *Ax = data ();
@@ -6100,8 +6100,8 @@
               octave_idx_type b_nr = b.rows ();
               octave_idx_type b_nc = b.cols ();
               int status = 0;
-              double *control = Control.fortran_vec ();
-              double *info = Info.fortran_vec ();
+              double *control = Control.rwdata ();
+              double *info = Info.rwdata ();
               const octave_idx_type *Ap = cidx ();
               const octave_idx_type *Ai = ridx ();
               const double *Ax = data ();
@@ -6345,8 +6345,8 @@
               octave_idx_type b_nr = b.rows ();
               octave_idx_type b_nc = b.cols ();
               int status = 0;
-              double *control = Control.fortran_vec ();
-              double *info = Info.fortran_vec ();
+              double *control = Control.rwdata ();
+              double *info = Info.rwdata ();
               const octave_idx_type *Ap = cidx ();
               const octave_idx_type *Ai = ridx ();
               const double *Ax = data ();
@@ -6595,8 +6595,8 @@
               octave_idx_type b_nr = b.rows ();
               octave_idx_type b_nc = b.cols ();
               int status = 0;
-              double *control = Control.fortran_vec ();
-              double *info = Info.fortran_vec ();
+              double *control = Control.rwdata ();
+              double *info = Info.rwdata ();
               const octave_idx_type *Ap = cidx ();
               const octave_idx_type *Ai = ridx ();
               const double *Ax = data ();
--- a/liboctave/array/fCColVector.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/fCColVector.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -265,7 +265,7 @@
   if (len == 0)
     return *this;
 
-  FloatComplex *d = fortran_vec (); // Ensures only 1 reference to my privates!
+  FloatComplex *d = rwdata (); // Ensures only 1 reference to my privates!
 
   mx_inline_add2 (len, d, a.data ());
   return *this;
@@ -284,7 +284,7 @@
   if (len == 0)
     return *this;
 
-  FloatComplex *d = fortran_vec (); // Ensures only 1 reference to my privates!
+  FloatComplex *d = rwdata (); // Ensures only 1 reference to my privates!
 
   mx_inline_sub2 (len, d, a.data ());
   return *this;
@@ -320,7 +320,7 @@
         retval.fill (0.0);
       else
         {
-          FloatComplex *y = retval.fortran_vec ();
+          FloatComplex *y = retval.rwdata ();
 
           F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
                                    nr, nc, 1.0f, F77_CONST_CMPLX_ARG (m.data ()), nr,
--- a/liboctave/array/fCDiagMatrix.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/fCDiagMatrix.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -380,7 +380,7 @@
   if (r == 0 || c == 0)
     return *this;
 
-  FloatComplex *d = fortran_vec (); // Ensures only 1 reference to my privates!
+  FloatComplex *d = rwdata (); // Ensures only 1 reference to my privates!
 
   mx_inline_add2 (length (), d, a.data ());
   return *this;
--- a/liboctave/array/fCMatrix.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/fCMatrix.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -792,7 +792,7 @@
   char uplo = (typ == MatrixType::Lower ? 'L' : 'U');
   char udiag = 'N';
   retval = *this;
-  FloatComplex *tmp_data = retval.fortran_vec ();
+  FloatComplex *tmp_data = retval.rwdata ();
 
   F77_INT tmp_info = 0;
 
@@ -848,10 +848,10 @@
     (*current_liboctave_error_handler) ("inverse requires square matrix");
 
   Array<F77_INT> ipvt (dim_vector (nr, 1));
-  F77_INT *pipvt = ipvt.fortran_vec ();
+  F77_INT *pipvt = ipvt.rwdata ();
 
   retval = *this;
-  FloatComplex *tmp_data = retval.fortran_vec ();
+  FloatComplex *tmp_data = retval.rwdata ();
 
   Array<FloatComplex> z (dim_vector (1, 1));
   F77_INT lwork = -1;
@@ -861,13 +861,13 @@
   F77_INT tmp_info = 0;
 
   F77_XFCN (cgetri, CGETRI, (nc, F77_CMPLX_ARG (tmp_data), nr, pipvt,
-                             F77_CMPLX_ARG (z.fortran_vec ()), lwork,
+                             F77_CMPLX_ARG (z.rwdata ()), lwork,
                              tmp_info));
 
   lwork = static_cast<F77_INT> (std::real (z(0)));
   lwork = (lwork < 2 * nc ? 2 * nc : lwork);
   z.resize (dim_vector (lwork, 1));
-  FloatComplex *pz = z.fortran_vec ();
+  FloatComplex *pz = z.rwdata ();
 
   info = 0;
   tmp_info = 0;
@@ -902,7 +902,7 @@
           // Now calculate the condition number for non-singular matrix.
           char job = '1';
           Array<float> rz (dim_vector (2 * nc, 1));
-          float *prz = rz.fortran_vec ();
+          float *prz = rz.rwdata ();
           F77_XFCN (cgecon, CGECON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                      nc, F77_CMPLX_ARG (tmp_data), nr, anorm,
                                      rcon, F77_CMPLX_ARG (pz), prz, cgecon_info
@@ -1066,7 +1066,7 @@
     }
 
   const FloatComplex *in (data ());
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::fft (in, out, npts, nsamples);
 
@@ -1095,7 +1095,7 @@
     }
 
   const FloatComplex *in (data ());
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::ifft (in, out, npts, nsamples);
 
@@ -1109,7 +1109,7 @@
 
   FloatComplexMatrix retval (rows (), cols ());
   const FloatComplex *in (data ());
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::fftNd (in, out, 2, dv);
 
@@ -1123,7 +1123,7 @@
 
   FloatComplexMatrix retval (rows (), cols ());
   const FloatComplex *in (data ());
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::ifftNd (in, out, 2, dv);
 
@@ -1228,7 +1228,7 @@
   else if (typ == MatrixType::Hermitian)
     {
       FloatComplexMatrix atmp = *this;
-      FloatComplex *tmp_data = atmp.fortran_vec ();
+      FloatComplex *tmp_data = atmp.rwdata ();
 
       float anorm;
       if (calc_cond)
@@ -1254,9 +1254,9 @@
           if (calc_cond)
             {
               Array<FloatComplex> z (dim_vector (2 * nc, 1));
-              FloatComplex *pz = z.fortran_vec ();
+              FloatComplex *pz = z.rwdata ();
               Array<float> rz (dim_vector (nc, 1));
-              float *prz = rz.fortran_vec ();
+              float *prz = rz.rwdata ();
 
               F77_XFCN (cpocon, CPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                          nr, F77_CMPLX_ARG (tmp_data), nr, anorm,
@@ -1281,10 +1281,10 @@
   if (typ == MatrixType::Full)
     {
       Array<F77_INT> ipvt (dim_vector (nr, 1));
-      F77_INT *pipvt = ipvt.fortran_vec ();
+      F77_INT *pipvt = ipvt.rwdata ();
 
       FloatComplexMatrix atmp = *this;
-      FloatComplex *tmp_data = atmp.fortran_vec ();
+      FloatComplex *tmp_data = atmp.rwdata ();
 
       info = 0;
 
@@ -1318,9 +1318,9 @@
               // Now calc the condition number for non-singular matrix.
               char job = '1';
               Array<FloatComplex> z (dim_vector (2 * nc, 1));
-              FloatComplex *pz = z.fortran_vec ();
+              FloatComplex *pz = z.rwdata ();
               Array<float> rz (dim_vector (2 * nc, 1));
-              float *prz = rz.fortran_vec ();
+              float *prz = rz.rwdata ();
 
               F77_XFCN (cgecon, CGECON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                          nc, F77_CMPLX_ARG (tmp_data), nr, anorm,
@@ -1385,9 +1385,9 @@
           char dia = 'N';
 
           Array<FloatComplex> z (dim_vector (2 * nc, 1));
-          FloatComplex *pz = z.fortran_vec ();
+          FloatComplex *pz = z.rwdata ();
           Array<float> rz (dim_vector (nc, 1));
-          float *prz = rz.fortran_vec ();
+          float *prz = rz.rwdata ();
 
           F77_XFCN (ctrcon, CTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1413,9 +1413,9 @@
           char dia = 'N';
 
           Array<FloatComplex> z (dim_vector (2 * nc, 1));
-          FloatComplex *pz = z.fortran_vec ();
+          FloatComplex *pz = z.rwdata ();
           Array<float> rz (dim_vector (nc, 1));
-          float *prz = rz.fortran_vec ();
+          float *prz = rz.rwdata ();
 
           F77_XFCN (ctrcon, CTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1442,7 +1442,7 @@
               char job = 'L';
 
               FloatComplexMatrix atmp = *this;
-              FloatComplex *tmp_data = atmp.fortran_vec ();
+              FloatComplex *tmp_data = atmp.rwdata ();
 
               anorm = norm1 (atmp);
 
@@ -1460,9 +1460,9 @@
               else
                 {
                   Array<FloatComplex> z (dim_vector (2 * nc, 1));
-                  FloatComplex *pz = z.fortran_vec ();
+                  FloatComplex *pz = z.rwdata ();
                   Array<float> rz (dim_vector (nc, 1));
-                  float *prz = rz.fortran_vec ();
+                  float *prz = rz.rwdata ();
 
                   F77_XFCN (cpocon, CPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, F77_CMPLX_ARG (tmp_data), nr, anorm,
@@ -1479,18 +1479,18 @@
               F77_INT info = 0;
 
               FloatComplexMatrix atmp = *this;
-              FloatComplex *tmp_data = atmp.fortran_vec ();
+              FloatComplex *tmp_data = atmp.rwdata ();
 
               Array<F77_INT> ipvt (dim_vector (nr, 1));
-              F77_INT *pipvt = ipvt.fortran_vec ();
+              F77_INT *pipvt = ipvt.rwdata ();
 
               if (anorm < 0.0)
                 anorm = norm1 (atmp);
 
               Array<FloatComplex> z (dim_vector (2 * nc, 1));
-              FloatComplex *pz = z.fortran_vec ();
+              FloatComplex *pz = z.rwdata ();
               Array<float> rz (dim_vector (2 * nc, 1));
-              float *prz = rz.fortran_vec ();
+              float *prz = rz.rwdata ();
 
               // Work around bug #45577, LAPACK crashes Octave if norm is NaN
               if (octave::math::isnan (anorm))
@@ -1561,7 +1561,7 @@
               const FloatComplex *tmp_data = data ();
 
               retval = b;
-              FloatComplex *result = retval.fortran_vec ();
+              FloatComplex *result = retval.rwdata ();
 
               char uplo = 'U';
               char trans = get_blas_char (transt);
@@ -1587,9 +1587,9 @@
                   dia = 'N';
 
                   Array<FloatComplex> z (dim_vector (2 * nc, 1));
-                  FloatComplex *pz = z.fortran_vec ();
+                  FloatComplex *pz = z.rwdata ();
                   Array<float> rz (dim_vector (nc, 1));
-                  float *prz = rz.fortran_vec ();
+                  float *prz = rz.rwdata ();
 
                   F77_XFCN (ctrcon, CTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                              F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1663,7 +1663,7 @@
               const FloatComplex *tmp_data = data ();
 
               retval = b;
-              FloatComplex *result = retval.fortran_vec ();
+              FloatComplex *result = retval.rwdata ();
 
               char uplo = 'L';
               char trans = get_blas_char (transt);
@@ -1689,9 +1689,9 @@
                   dia = 'N';
 
                   Array<FloatComplex> z (dim_vector (2 * nc, 1));
-                  FloatComplex *pz = z.fortran_vec ();
+                  FloatComplex *pz = z.rwdata ();
                   Array<float> rz (dim_vector (nc, 1));
-                  float *prz = rz.fortran_vec ();
+                  float *prz = rz.rwdata ();
 
                   F77_XFCN (ctrcon, CTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                              F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1761,7 +1761,7 @@
           char job = 'L';
 
           FloatComplexMatrix atmp = *this;
-          FloatComplex *tmp_data = atmp.fortran_vec ();
+          FloatComplex *tmp_data = atmp.rwdata ();
 
           // The norm of the matrix for later use when determining rcon.
           if (calc_cond)
@@ -1789,9 +1789,9 @@
               if (calc_cond)
                 {
                   Array<FloatComplex> z (dim_vector (2 * nc, 1));
-                  FloatComplex *pz = z.fortran_vec ();
+                  FloatComplex *pz = z.rwdata ();
                   Array<float> rz (dim_vector (nc, 1));
-                  float *prz = rz.fortran_vec ();
+                  float *prz = rz.rwdata ();
 
                   F77_XFCN (cpocon, CPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, F77_CMPLX_ARG (tmp_data), nr, anorm,
@@ -1819,7 +1819,7 @@
               if (info == 0)
                 {
                   retval = b;
-                  FloatComplex *result = retval.fortran_vec ();
+                  FloatComplex *result = retval.rwdata ();
 
                   F77_XFCN (cpotrs, CPOTRS, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, b_nc, F77_CMPLX_ARG (tmp_data), nr,
@@ -1841,15 +1841,15 @@
           info = 0;
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           FloatComplexMatrix atmp = *this;
-          FloatComplex *tmp_data = atmp.fortran_vec ();
+          FloatComplex *tmp_data = atmp.rwdata ();
 
           Array<FloatComplex> z (dim_vector (2 * nc, 1));
-          FloatComplex *pz = z.fortran_vec ();
+          FloatComplex *pz = z.rwdata ();
           Array<float> rz (dim_vector (2 * nc, 1));
-          float *prz = rz.fortran_vec ();
+          float *prz = rz.rwdata ();
 
           // Calculate the norm of the matrix, for later use.
           if (calc_cond && anorm < 0.0)
@@ -1912,7 +1912,7 @@
               if (info == 0)
                 {
                   retval = b;
-                  FloatComplex *result = retval.fortran_vec ();
+                  FloatComplex *result = retval.rwdata ();
 
                   char job = 'N';
                   F77_XFCN (cgetrs, CGETRS, (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -2336,11 +2336,11 @@
         retval = b;
 
       FloatComplexMatrix atmp = *this;
-      FloatComplex *tmp_data = atmp.fortran_vec ();
-
-      FloatComplex *pretval = retval.fortran_vec ();
+      FloatComplex *tmp_data = atmp.rwdata ();
+
+      FloatComplex *pretval = retval.rwdata ();
       Array<float> s (dim_vector (minmn, 1));
-      float *ps = s.fortran_vec ();
+      float *ps = s.rwdata ();
 
       // Ask ZGELSD what the dimension of WORK should be.
       F77_INT lwork = -1;
@@ -2379,20 +2379,20 @@
       if (lrwork < 1)
         lrwork = 1;
       Array<float> rwork (dim_vector (lrwork, 1));
-      float *prwork = rwork.fortran_vec ();
+      float *prwork = rwork.rwdata ();
 
       F77_INT liwork = 3 * minmn * nlvl + 11 * minmn;
       if (liwork < 1)
         liwork = 1;
       Array<F77_INT> iwork (dim_vector (liwork, 1));
-      F77_INT *piwork = iwork.fortran_vec ();
+      F77_INT *piwork = iwork.rwdata ();
 
       F77_INT tmp_info = 0;
       F77_INT tmp_rank = 0;
 
       F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, F77_CMPLX_ARG (tmp_data), m,
                                  F77_CMPLX_ARG (pretval), maxmn,
-                                 ps, rcon, tmp_rank, F77_CMPLX_ARG (work.fortran_vec ()),
+                                 ps, rcon, tmp_rank, F77_CMPLX_ARG (work.rwdata ()),
                                  lwork, prwork, piwork, tmp_info));
 
       info = tmp_info;
@@ -2449,7 +2449,7 @@
           F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, F77_CMPLX_ARG (tmp_data),
                                      m, F77_CMPLX_ARG (pretval),
                                      maxmn, ps, rcon, tmp_rank,
-                                     F77_CMPLX_ARG (work.fortran_vec ()),
+                                     F77_CMPLX_ARG (work.rwdata ()),
                                      lwork, prwork, piwork, tmp_info));
 
           info = tmp_info;
@@ -2565,11 +2565,11 @@
         retval = b;
 
       FloatComplexMatrix atmp = *this;
-      FloatComplex *tmp_data = atmp.fortran_vec ();
-
-      FloatComplex *pretval = retval.fortran_vec ();
+      FloatComplex *tmp_data = atmp.rwdata ();
+
+      FloatComplex *pretval = retval.rwdata ();
       Array<float> s (dim_vector (minmn, 1));
-      float *ps = s.fortran_vec ();
+      float *ps = s.rwdata ();
 
       // Ask ZGELSD what the dimension of WORK should be.
       F77_INT lwork = -1;
@@ -2599,20 +2599,20 @@
       if (lrwork < 1)
         lrwork = 1;
       Array<float> rwork (dim_vector (lrwork, 1));
-      float *prwork = rwork.fortran_vec ();
+      float *prwork = rwork.rwdata ();
 
       F77_INT liwork = 3 * minmn * nlvl + 11 * minmn;
       if (liwork < 1)
         liwork = 1;
       Array<F77_INT> iwork (dim_vector (liwork, 1));
-      F77_INT *piwork = iwork.fortran_vec ();
+      F77_INT *piwork = iwork.rwdata ();
 
       F77_INT tmp_info = 0;
       F77_INT tmp_rank = 0;
 
       F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, F77_CMPLX_ARG (tmp_data), m,
                                  F77_CMPLX_ARG (pretval), maxmn,
-                                 ps, rcon, tmp_rank, F77_CMPLX_ARG (work.fortran_vec ()),
+                                 ps, rcon, tmp_rank, F77_CMPLX_ARG (work.rwdata ()),
                                  lwork, prwork, piwork, tmp_info));
 
       info = tmp_info;
@@ -2626,7 +2626,7 @@
       F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, F77_CMPLX_ARG (tmp_data), m,
                                  F77_CMPLX_ARG (pretval),
                                  maxmn, ps, rcon, tmp_rank,
-                                 F77_CMPLX_ARG (work.fortran_vec ()), lwork,
+                                 F77_CMPLX_ARG (work.rwdata ()), lwork,
                                  prwork, piwork, tmp_info));
 
       info = tmp_info;
@@ -2674,7 +2674,7 @@
       F77_INT a_len = octave::to_f77_int (a.numel ());
 
       retval = FloatComplexMatrix (len, a_len);
-      FloatComplex *c = retval.fortran_vec ();
+      FloatComplex *c = retval.rwdata ();
 
       F77_XFCN (cgemm, CGEMM, (F77_CONST_CHAR_ARG2 ("N", 1),
                                F77_CONST_CHAR_ARG2 ("N", 1),
@@ -2778,7 +2778,7 @@
   if (nr == 0 || nc == 0)
     return *this;
 
-  FloatComplex *d = fortran_vec (); // Ensures only 1 reference to my privates!
+  FloatComplex *d = rwdata (); // Ensures only 1 reference to my privates!
 
   mx_inline_add2 (numel (), d, a.data ());
   return *this;
@@ -2799,7 +2799,7 @@
   if (nr == 0 || nc == 0)
     return *this;
 
-  FloatComplex *d = fortran_vec (); // Ensures only 1 reference to my privates!
+  FloatComplex *d = rwdata (); // Ensures only 1 reference to my privates!
 
   mx_inline_sub2 (numel (), d, a.data ());
   return *this;
@@ -3307,9 +3307,9 @@
   float scale;
   F77_INT info;
 
-  FloatComplex *pa = sch_a.fortran_vec ();
-  FloatComplex *pb = sch_b.fortran_vec ();
-  FloatComplex *px = cx.fortran_vec ();
+  FloatComplex *pa = sch_a.rwdata ();
+  FloatComplex *pb = sch_b.rwdata ();
+  FloatComplex *px = cx.rwdata ();
 
   F77_XFCN (ctrsyl, CTRSYL, (F77_CONST_CHAR_ARG2 ("N", 1),
                              F77_CONST_CHAR_ARG2 ("N", 1),
@@ -3406,7 +3406,7 @@
       // use the result matrix before zeroing the elements.
 
       retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
-      FloatComplex *c = retval.fortran_vec ();
+      FloatComplex *c = retval.rwdata ();
 
       const char ctra = get_blas_trans_arg (tra, cja);
       if (cja || cjb)
@@ -3444,7 +3444,7 @@
       F77_INT tdb = octave::to_f77_int (b.cols ());
 
       retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
-      FloatComplex *c = retval.fortran_vec ();
+      FloatComplex *c = retval.rwdata ();
 
       if (b_nc == 1 && a_nr == 1)
         {
--- a/liboctave/array/fCNDArray.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/fCNDArray.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -75,7 +75,7 @@
 
   const FloatComplex *in (data ());
   FloatComplexNDArray retval (dv);
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   // Need to be careful here about the distance between fft's
   for (octave_idx_type k = 0; k < nloop; k++)
@@ -106,7 +106,7 @@
 
   const FloatComplex *in (data ());
   FloatComplexNDArray retval (dv);
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   // Need to be careful here about the distance between fft's
   for (octave_idx_type k = 0; k < nloop; k++)
@@ -126,7 +126,7 @@
   dim_vector dv2 (dv(0), dv(1));
   const FloatComplex *in = data ();
   FloatComplexNDArray retval (dv);
-  FloatComplex *out = retval.fortran_vec ();
+  FloatComplex *out = retval.rwdata ();
   octave_idx_type howmany = numel () / dv(0) / dv(1);
   octave_idx_type dist = dv(0) * dv(1);
 
@@ -146,7 +146,7 @@
   dim_vector dv2 (dv(0), dv(1));
   const FloatComplex *in = data ();
   FloatComplexNDArray retval (dv);
-  FloatComplex *out = retval.fortran_vec ();
+  FloatComplex *out = retval.rwdata ();
   octave_idx_type howmany = numel () / dv(0) / dv(1);
   octave_idx_type dist = dv(0) * dv(1);
 
@@ -164,7 +164,7 @@
 
   const FloatComplex *in (data ());
   FloatComplexNDArray retval (dv);
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::fftNd (in, out, rank, dv);
 
@@ -179,7 +179,7 @@
 
   const FloatComplex *in (data ());
   FloatComplexNDArray retval (dv);
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::ifftNd (in, out, rank, dv);
 
--- a/liboctave/array/fCRowVector.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/fCRowVector.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -254,7 +254,7 @@
   if (len == 0)
     return *this;
 
-  FloatComplex *d = fortran_vec (); // Ensures only 1 reference to my privates!
+  FloatComplex *d = rwdata (); // Ensures only 1 reference to my privates!
 
   mx_inline_add2 (len, d, a.data ());
   return *this;
@@ -273,7 +273,7 @@
   if (len == 0)
     return *this;
 
-  FloatComplex *d = fortran_vec (); // Ensures only 1 reference to my privates!
+  FloatComplex *d = rwdata (); // Ensures only 1 reference to my privates!
 
   mx_inline_sub2 (len, d, a.data ());
   return *this;
@@ -303,7 +303,7 @@
       F77_INT ld = a_nr;
 
       retval.resize (a_nc);
-      FloatComplex *y = retval.fortran_vec ();
+      FloatComplex *y = retval.rwdata ();
 
       F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
                                a_nr, a_nc, 1.0, F77_CONST_CMPLX_ARG (a.data ()),
--- a/liboctave/array/fColVector.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/fColVector.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -196,7 +196,7 @@
         retval.fill (0.0);
       else
         {
-          float *y = retval.fortran_vec ();
+          float *y = retval.rwdata ();
 
           F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
                                    nr, nc, 1.0f, m.data (), nr,
--- a/liboctave/array/fMatrix.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/fMatrix.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -509,7 +509,7 @@
   char uplo = (typ == MatrixType::Lower ? 'L' : 'U');
   char udiag = 'N';
   retval = *this;
-  float *tmp_data = retval.fortran_vec ();
+  float *tmp_data = retval.rwdata ();
 
   F77_INT tmp_info = 0;
 
@@ -565,10 +565,10 @@
     (*current_liboctave_error_handler) ("inverse requires square matrix");
 
   Array<F77_INT> ipvt (dim_vector (nr, 1));
-  F77_INT *pipvt = ipvt.fortran_vec ();
+  F77_INT *pipvt = ipvt.rwdata ();
 
   retval = *this;
-  float *tmp_data = retval.fortran_vec ();
+  float *tmp_data = retval.rwdata ();
 
   Array<float> z (dim_vector (1, 1));
   F77_INT lwork = -1;
@@ -577,12 +577,12 @@
 
   // Query the optimum work array size.
   F77_XFCN (sgetri, SGETRI, (nc, tmp_data, nr, pipvt,
-                             z.fortran_vec (), lwork, tmp_info));
+                             z.rwdata (), lwork, tmp_info));
 
   lwork = static_cast<F77_INT> (z(0));
   lwork = (lwork < 4 * nc ? 4 * nc : lwork);
   z.resize (dim_vector (lwork, 1));
-  float *pz = z.fortran_vec ();
+  float *pz = z.rwdata ();
 
   info = 0;
   tmp_info = 0;
@@ -611,7 +611,7 @@
           // Now calculate the condition number for non-singular matrix.
           char job = '1';
           Array<F77_INT> iz (dim_vector (nc, 1));
-          F77_INT *piz = iz.fortran_vec ();
+          F77_INT *piz = iz.rwdata ();
           F77_XFCN (sgecon, SGECON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                      nc, tmp_data, nr, anorm,
                                      rcon, pz, piz, sgecon_info
@@ -758,7 +758,7 @@
     }
 
   const float *in (data ());
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::fft (in, out, npts, nsamples);
 
@@ -787,8 +787,8 @@
     }
 
   FloatComplexMatrix tmp (*this);
-  FloatComplex *in (tmp.fortran_vec ());
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *in (tmp.rwdata ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::ifft (in, out, npts, nsamples);
 
@@ -802,7 +802,7 @@
 
   const float *in = data ();
   FloatComplexMatrix retval (rows (), cols ());
-  octave::fftw::fftNd (in, retval.fortran_vec (), 2, dv);
+  octave::fftw::fftNd (in, retval.rwdata (), 2, dv);
 
   return retval;
 }
@@ -813,7 +813,7 @@
   dim_vector dv (rows (), cols ());
 
   FloatComplexMatrix retval (*this);
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::ifftNd (out, out, 2, dv);
 
@@ -918,7 +918,7 @@
   else if (typ == MatrixType::Hermitian)
     {
       FloatMatrix atmp = *this;
-      float *tmp_data = atmp.fortran_vec ();
+      float *tmp_data = atmp.rwdata ();
 
       // Calculate the norm of the matrix for later use when determining rcon.
       float anorm;
@@ -945,9 +945,9 @@
           if (calc_cond)
             {
               Array<float> z (dim_vector (3 * nc, 1));
-              float *pz = z.fortran_vec ();
+              float *pz = z.rwdata ();
               Array<F77_INT> iz (dim_vector (nc, 1));
-              F77_INT *piz = iz.fortran_vec ();
+              F77_INT *piz = iz.rwdata ();
 
               F77_XFCN (spocon, SPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                          nr, tmp_data, nr, anorm,
@@ -972,10 +972,10 @@
   if (typ == MatrixType::Full)
     {
       Array<F77_INT> ipvt (dim_vector (nr, 1));
-      F77_INT *pipvt = ipvt.fortran_vec ();
+      F77_INT *pipvt = ipvt.rwdata ();
 
       FloatMatrix atmp = *this;
-      float *tmp_data = atmp.fortran_vec ();
+      float *tmp_data = atmp.rwdata ();
 
       info = 0;
       F77_INT tmp_info = 0;
@@ -1003,9 +1003,9 @@
               // Now calc the condition number for non-singular matrix.
               char job = '1';
               Array<float> z (dim_vector (4 * nc, 1));
-              float *pz = z.fortran_vec ();
+              float *pz = z.rwdata ();
               Array<F77_INT> iz (dim_vector (nc, 1));
-              F77_INT *piz = iz.fortran_vec ();
+              F77_INT *piz = iz.rwdata ();
 
               F77_XFCN (sgecon, SGECON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                          nc, tmp_data, nr, anorm,
@@ -1070,9 +1070,9 @@
           char dia = 'N';
 
           Array<float> z (dim_vector (3 * nc, 1));
-          float *pz = z.fortran_vec ();
+          float *pz = z.rwdata ();
           Array<F77_INT> iz (dim_vector (nc, 1));
-          F77_INT *piz = iz.fortran_vec ();
+          F77_INT *piz = iz.rwdata ();
 
           F77_XFCN (strcon, STRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1098,9 +1098,9 @@
           char dia = 'N';
 
           Array<float> z (dim_vector (3 * nc, 1));
-          float *pz = z.fortran_vec ();
+          float *pz = z.rwdata ();
           Array<F77_INT> iz (dim_vector (nc, 1));
-          F77_INT *piz = iz.fortran_vec ();
+          F77_INT *piz = iz.rwdata ();
 
           F77_XFCN (strcon, STRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                      F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1127,7 +1127,7 @@
               char job = 'L';
 
               FloatMatrix atmp = *this;
-              float *tmp_data = atmp.fortran_vec ();
+              float *tmp_data = atmp.rwdata ();
 
               anorm = norm1 (atmp);
 
@@ -1144,9 +1144,9 @@
               else
                 {
                   Array<float> z (dim_vector (3 * nc, 1));
-                  float *pz = z.fortran_vec ();
+                  float *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nc, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_XFCN (spocon, SPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, tmp_data, nr, anorm,
@@ -1163,18 +1163,18 @@
               F77_INT info = 0;
 
               FloatMatrix atmp = *this;
-              float *tmp_data = atmp.fortran_vec ();
+              float *tmp_data = atmp.rwdata ();
 
               Array<F77_INT> ipvt (dim_vector (nr, 1));
-              F77_INT *pipvt = ipvt.fortran_vec ();
+              F77_INT *pipvt = ipvt.rwdata ();
 
               if (anorm < 0.0)
                 anorm = norm1 (atmp);
 
               Array<float> z (dim_vector (4 * nc, 1));
-              float *pz = z.fortran_vec ();
+              float *pz = z.rwdata ();
               Array<F77_INT> iz (dim_vector (nc, 1));
-              F77_INT *piz = iz.fortran_vec ();
+              F77_INT *piz = iz.rwdata ();
 
               F77_XFCN (sgetrf, SGETRF, (nr, nr, tmp_data, nr, pipvt, info));
 
@@ -1240,7 +1240,7 @@
               const float *tmp_data = data ();
 
               retval = b;
-              float *result = retval.fortran_vec ();
+              float *result = retval.rwdata ();
 
               char uplo = 'U';
               char trans = get_blas_char (transt);
@@ -1266,9 +1266,9 @@
                   dia = 'N';
 
                   Array<float> z (dim_vector (3 * nc, 1));
-                  float *pz = z.fortran_vec ();
+                  float *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nc, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_XFCN (strcon, STRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                              F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1343,7 +1343,7 @@
               const float *tmp_data = data ();
 
               retval = b;
-              float *result = retval.fortran_vec ();
+              float *result = retval.rwdata ();
 
               char uplo = 'L';
               char trans = get_blas_char (transt);
@@ -1369,9 +1369,9 @@
                   dia = 'N';
 
                   Array<float> z (dim_vector (3 * nc, 1));
-                  float *pz = z.fortran_vec ();
+                  float *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nc, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_XFCN (strcon, STRCON, (F77_CONST_CHAR_ARG2 (&norm, 1),
                                              F77_CONST_CHAR_ARG2 (&uplo, 1),
@@ -1441,7 +1441,7 @@
           char job = 'L';
 
           FloatMatrix atmp = *this;
-          float *tmp_data = atmp.fortran_vec ();
+          float *tmp_data = atmp.rwdata ();
 
           // The norm of the matrix for later use when determining rcon.
           if (calc_cond)
@@ -1469,9 +1469,9 @@
               if (calc_cond)
                 {
                   Array<float> z (dim_vector (3 * nc, 1));
-                  float *pz = z.fortran_vec ();
+                  float *pz = z.rwdata ();
                   Array<F77_INT> iz (dim_vector (nc, 1));
-                  F77_INT *piz = iz.fortran_vec ();
+                  F77_INT *piz = iz.rwdata ();
 
                   F77_XFCN (spocon, SPOCON, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, tmp_data, nr, anorm,
@@ -1499,7 +1499,7 @@
               if (info == 0)
                 {
                   retval = b;
-                  float *result = retval.fortran_vec ();
+                  float *result = retval.rwdata ();
 
                   F77_XFCN (spotrs, SPOTRS, (F77_CONST_CHAR_ARG2 (&job, 1),
                                              nr, b_nc, tmp_data, nr,
@@ -1521,18 +1521,18 @@
           info = 0;
 
           Array<F77_INT> ipvt (dim_vector (nr, 1));
-          F77_INT *pipvt = ipvt.fortran_vec ();
+          F77_INT *pipvt = ipvt.rwdata ();
 
           FloatMatrix atmp = *this;
-          float *tmp_data = atmp.fortran_vec ();
+          float *tmp_data = atmp.rwdata ();
 
           if (calc_cond && anorm < 0.0)
             anorm = norm1 (atmp);
 
           Array<float> z (dim_vector (4 * nc, 1));
-          float *pz = z.fortran_vec ();
+          float *pz = z.rwdata ();
           Array<F77_INT> iz (dim_vector (nc, 1));
-          F77_INT *piz = iz.fortran_vec ();
+          F77_INT *piz = iz.rwdata ();
 
           F77_INT tmp_info = 0;
 
@@ -1583,7 +1583,7 @@
               if (info == 0)
                 {
                   retval = b;
-                  float *result = retval.fortran_vec ();
+                  float *result = retval.rwdata ();
 
                   char job = 'N';
                   F77_XFCN (sgetrs, SGETRS, (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -1694,7 +1694,7 @@
   octave_idx_type nel = m*n;
   FloatMatrix retval (m, 2*n);
   const FloatComplex *cmd = cm.data ();
-  float *rd = retval.fortran_vec ();
+  float *rd = retval.rwdata ();
   for (octave_idx_type i = 0; i < nel; i++)
     {
       rd[i] = std::real (cmd[i]);
@@ -1711,7 +1711,7 @@
   octave_idx_type nel = m*n;
   FloatComplexMatrix retval (m, n);
   const float *smd = sm.data ();
-  FloatComplex *rd = retval.fortran_vec ();
+  FloatComplex *rd = retval.rwdata ();
   for (octave_idx_type i = 0; i < nel; i++)
     rd[i] = FloatComplex (smd[i], smd[nel+i]);
   return retval;
@@ -1985,11 +1985,11 @@
         retval = b;
 
       FloatMatrix atmp = *this;
-      float *tmp_data = atmp.fortran_vec ();
-
-      float *pretval = retval.fortran_vec ();
+      float *tmp_data = atmp.rwdata ();
+
+      float *pretval = retval.rwdata ();
       Array<float> s (dim_vector (minmn, 1));
-      float *ps = s.fortran_vec ();
+      float *ps = s.rwdata ();
 
       // Ask DGELSD what the dimension of WORK should be.
       F77_INT lwork = -1;
@@ -2024,13 +2024,13 @@
       if (liwork < 1)
         liwork = 1;
       Array<F77_INT> iwork (dim_vector (liwork, 1));
-      F77_INT *piwork = iwork.fortran_vec ();
+      F77_INT *piwork = iwork.rwdata ();
 
       F77_INT tmp_info = 0;
       F77_INT tmp_rank = 0;
 
       F77_XFCN (sgelsd, SGELSD, (m, n, nrhs, tmp_data, m, pretval, maxmn,
-                                 ps, rcon, tmp_rank, work.fortran_vec (),
+                                 ps, rcon, tmp_rank, work.rwdata (),
                                  lwork, piwork, tmp_info));
 
       info = tmp_info;
@@ -2093,7 +2093,7 @@
         {
           F77_XFCN (sgelsd, SGELSD, (m, n, nrhs, tmp_data, m, pretval,
                                      maxmn, ps, rcon, tmp_rank,
-                                     work.fortran_vec (), lwork,
+                                     work.rwdata (), lwork,
                                      piwork, tmp_info));
 
           info = tmp_info;
@@ -2206,11 +2206,11 @@
         retval = b;
 
       FloatMatrix atmp = *this;
-      float *tmp_data = atmp.fortran_vec ();
-
-      float *pretval = retval.fortran_vec ();
+      float *tmp_data = atmp.rwdata ();
+
+      float *pretval = retval.rwdata ();
       Array<float> s (dim_vector (minmn, 1));
-      float *ps = s.fortran_vec ();
+      float *ps = s.rwdata ();
 
       // Ask DGELSD what the dimension of WORK should be.
       F77_INT lwork = -1;
@@ -2238,13 +2238,13 @@
       if (liwork < 1)
         liwork = 1;
       Array<F77_INT> iwork (dim_vector (liwork, 1));
-      F77_INT *piwork = iwork.fortran_vec ();
+      F77_INT *piwork = iwork.rwdata ();
 
       F77_INT tmp_info = 0;
       F77_INT tmp_rank = 0;
 
       F77_XFCN (sgelsd, SGELSD, (m, n, nrhs, tmp_data, m, pretval, maxmn,
-                                 ps, rcon, tmp_rank, work.fortran_vec (),
+                                 ps, rcon, tmp_rank, work.rwdata (),
                                  lwork, piwork, tmp_info));
 
       info = tmp_info;
@@ -2255,7 +2255,7 @@
 
       F77_XFCN (sgelsd, SGELSD, (m, n, nrhs, tmp_data, m, pretval,
                                  maxmn, ps, rcon, tmp_rank,
-                                 work.fortran_vec (), lwork,
+                                 work.rwdata (), lwork,
                                  piwork, tmp_info));
 
       info = tmp_info;
@@ -2362,7 +2362,7 @@
       F77_INT a_len = octave::to_f77_int (a.numel ());
 
       retval = FloatMatrix (len, a_len);
-      float *c = retval.fortran_vec ();
+      float *c = retval.rwdata ();
 
       F77_XFCN (sgemm, SGEMM, (F77_CONST_CHAR_ARG2 ("N", 1),
                                F77_CONST_CHAR_ARG2 ("N", 1),
@@ -2741,9 +2741,9 @@
   float scale;
   F77_INT info;
 
-  float *pa = sch_a.fortran_vec ();
-  float *pb = sch_b.fortran_vec ();
-  float *px = cx.fortran_vec ();
+  float *pa = sch_a.rwdata ();
+  float *pb = sch_b.rwdata ();
+  float *px = cx.rwdata ();
 
   F77_XFCN (strsyl, STRSYL, (F77_CONST_CHAR_ARG2 ("N", 1),
                              F77_CONST_CHAR_ARG2 ("N", 1),
@@ -2813,7 +2813,7 @@
       F77_INT lda = octave::to_f77_int (a.rows ());
 
       retval = FloatMatrix (a_nr, b_nc);
-      float *c = retval.fortran_vec ();
+      float *c = retval.rwdata ();
 
       const char ctra = get_blas_trans_arg (tra);
       F77_XFCN (ssyrk, SSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
@@ -2835,7 +2835,7 @@
       F77_INT tdb = octave::to_f77_int (b.cols ());
 
       retval = FloatMatrix (a_nr, b_nc);
-      float *c = retval.fortran_vec ();
+      float *c = retval.rwdata ();
 
       if (b_nc == 1)
         {
--- a/liboctave/array/fNDArray.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/fNDArray.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -75,7 +75,7 @@
 
   const float *in (data ());
   FloatComplexNDArray retval (dv);
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   // Need to be careful here about the distance between fft's
   for (octave_idx_type k = 0; k < nloop; k++)
@@ -105,7 +105,7 @@
   octave_idx_type dist = (stride == 1 ? n : 1);
 
   FloatComplexNDArray retval (*this);
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   // Need to be careful here about the distance between fft's
   for (octave_idx_type k = 0; k < nloop; k++)
@@ -125,7 +125,7 @@
   dim_vector dv2 (dv(0), dv(1));
   const float *in = data ();
   FloatComplexNDArray retval (dv);
-  FloatComplex *out = retval.fortran_vec ();
+  FloatComplex *out = retval.rwdata ();
   octave_idx_type howmany = numel () / dv(0) / dv(1);
   octave_idx_type dist = dv(0) * dv(1);
 
@@ -144,7 +144,7 @@
 
   dim_vector dv2 (dv(0), dv(1));
   FloatComplexNDArray retval (*this);
-  FloatComplex *out = retval.fortran_vec ();
+  FloatComplex *out = retval.rwdata ();
   octave_idx_type howmany = numel () / dv(0) / dv(1);
   octave_idx_type dist = dv(0) * dv(1);
 
@@ -162,7 +162,7 @@
 
   const float *in (data ());
   FloatComplexNDArray retval (dv);
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::fftNd (in, out, rank, dv);
 
@@ -176,9 +176,9 @@
   int rank = dv.ndims ();
 
   FloatComplexNDArray tmp (*this);
-  FloatComplex *in (tmp.fortran_vec ());
+  FloatComplex *in (tmp.rwdata ());
   FloatComplexNDArray retval (dv);
-  FloatComplex *out (retval.fortran_vec ());
+  FloatComplex *out (retval.rwdata ());
 
   octave::fftw::ifftNd (in, out, rank, dv);
 
--- a/liboctave/array/fRowVector.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/fRowVector.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -190,7 +190,7 @@
       F77_INT ld = a_nr;
 
       retval.resize (a_nc);
-      float *y = retval.fortran_vec ();
+      float *y = retval.rwdata ();
 
       F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
                                a_nr, a_nc, 1.0, a.data (),
--- a/liboctave/array/idx-vector.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/array/idx-vector.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -536,7 +536,7 @@
     {
       // Use standard sort via octave_sort.
       idx.clear (m_orig_dims);
-      octave_idx_type *idx_data = idx.fortran_vec ();
+      octave_idx_type *idx_data = idx.rwdata ();
       for (octave_idx_type i = 0; i < m_len; i++)
         idx_data[i] = i;
 
@@ -557,7 +557,7 @@
         cnt[m_data[i]]++;
 
       idx.clear (m_orig_dims);
-      octave_idx_type *idx_data = idx.fortran_vec ();
+      octave_idx_type *idx_data = idx.rwdata ();
 
       octave_idx_type *new_data = new octave_idx_type [m_len];
       new_rep->m_data = new_data;
@@ -617,12 +617,12 @@
 
       if (m_data)
         {
-          std::memcpy (retval.fortran_vec (), m_data, m_len* sizeof (octave_idx_type));
+          std::memcpy (retval.rwdata (), m_data, m_len* sizeof (octave_idx_type));
           // Delete the old copy and share the m_data instead to save memory.
           delete [] m_data;
         }
 
-      m_data = retval.fortran_vec ();
+      m_data = retval.rwdata ();
       m_aowner = new Array<octave_idx_type> (retval);
 
       return retval;
@@ -1108,7 +1108,7 @@
       octave_idx_type m_ext = r->extent (0);
       Array<bool> mask (dim_vector (n, 1));
       const bool *m_data = r->get_data ();
-      bool *ndata = mask.fortran_vec ();
+      bool *ndata = mask.rwdata ();
       for (octave_idx_type i = 0; i < m_ext; i++)
         ndata[i] = ! m_data[i];
       std::fill_n (ndata + m_ext, n - m_ext, true);
@@ -1117,7 +1117,7 @@
   else
     {
       Array<bool> mask (dim_vector (n, 1), true);
-      fill (false, length (n), mask.fortran_vec ());
+      fill (false, length (n), mask.rwdata ());
       retval = idx_vector (mask);
     }
 
--- a/liboctave/numeric/CollocWt.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/CollocWt.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -426,23 +426,23 @@
     return;
 
   Array<double> dif1 (dim_vector (nt, 1));
-  double *pdif1 = dif1.fortran_vec ();
+  double *pdif1 = dif1.rwdata ();
 
   Array<double> dif2 (dim_vector (nt, 1));
-  double *pdif2 = dif2.fortran_vec ();
+  double *pdif2 = dif2.rwdata ();
 
   Array<double> dif3 (dim_vector (nt, 1));
-  double *pdif3 = dif3.fortran_vec ();
+  double *pdif3 = dif3.rwdata ();
 
   Array<double> vect (dim_vector (nt, 1));
-  double *pvect = vect.fortran_vec ();
+  double *pvect = vect.rwdata ();
 
   m_r.resize (nt, 1);
   m_q.resize (nt, 1);
   m_A.resize (nt, nt);
   m_B.resize (nt, nt);
 
-  double *pr = m_r.fortran_vec ();
+  double *pr = m_r.rwdata ();
 
   // Compute roots.
 
@@ -479,7 +479,7 @@
   // Gaussian quadrature weights.
 
   id = 3;
-  double *pq = m_q.fortran_vec ();
+  double *pq = m_q.rwdata ();
   dfopr (m_n, m_inc_left, m_inc_right, id, id, pdif1, pdif2, pdif3, pr, pq);
 
   m_initialized = 1;
--- a/liboctave/numeric/DASPK.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/DASPK.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -455,16 +455,16 @@
       m_restart = false;
     }
 
-  double *px = m_x.fortran_vec ();
-  double *pxdot = m_xdot.fortran_vec ();
+  double *px = m_x.rwdata ();
+  double *pxdot = m_xdot.rwdata ();
 
-  F77_INT *pinfo = m_info.fortran_vec ();
+  F77_INT *pinfo = m_info.rwdata ();
 
-  double *prel_tol = m_rel_tol.fortran_vec ();
-  double *pabs_tol = m_abs_tol.fortran_vec ();
+  double *prel_tol = m_rel_tol.rwdata ();
+  double *pabs_tol = m_abs_tol.rwdata ();
 
-  double *prwork = m_rwork.fortran_vec ();
-  F77_INT *piwork = m_iwork.fortran_vec ();
+  double *prwork = m_rwork.rwdata ();
+  F77_INT *piwork = m_iwork.rwdata ();
 
   double *dummy = nullptr;
   F77_INT *idummy = nullptr;
--- a/liboctave/numeric/DASRT.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/DASRT.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -297,18 +297,18 @@
       DASRT_options::m_reset = false;
     }
 
-  double *px = m_x.fortran_vec ();
-  double *pxdot = m_xdot.fortran_vec ();
+  double *px = m_x.rwdata ();
+  double *pxdot = m_xdot.rwdata ();
 
-  F77_INT *pinfo = m_info.fortran_vec ();
+  F77_INT *pinfo = m_info.rwdata ();
 
-  double *prel_tol = m_rel_tol.fortran_vec ();
-  double *pabs_tol = m_abs_tol.fortran_vec ();
+  double *prel_tol = m_rel_tol.rwdata ();
+  double *pabs_tol = m_abs_tol.rwdata ();
 
-  double *prwork = m_rwork.fortran_vec ();
-  F77_INT *piwork = m_iwork.fortran_vec ();
+  double *prwork = m_rwork.rwdata ();
+  F77_INT *piwork = m_iwork.rwdata ();
 
-  F77_INT *pjroot = m_jroot.fortran_vec ();
+  F77_INT *pjroot = m_jroot.rwdata ();
 
   double *dummy = nullptr;
   F77_INT *idummy = nullptr;
--- a/liboctave/numeric/DASSL.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/DASSL.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -272,16 +272,16 @@
       DASSL_options::m_reset = false;
     }
 
-  double *px = m_x.fortran_vec ();
-  double *pxdot = m_xdot.fortran_vec ();
+  double *px = m_x.rwdata ();
+  double *pxdot = m_xdot.rwdata ();
 
-  F77_INT *pinfo = m_info.fortran_vec ();
+  F77_INT *pinfo = m_info.rwdata ();
 
-  double *prel_tol = m_rel_tol.fortran_vec ();
-  double *pabs_tol = m_abs_tol.fortran_vec ();
+  double *prel_tol = m_rel_tol.rwdata ();
+  double *pabs_tol = m_abs_tol.rwdata ();
 
-  double *prwork = m_rwork.fortran_vec ();
-  F77_INT *piwork = m_iwork.fortran_vec ();
+  double *prwork = m_rwork.rwdata ();
+  F77_INT *piwork = m_iwork.rwdata ();
 
   double *dummy = nullptr;
   F77_INT *idummy = nullptr;
--- a/liboctave/numeric/EIG.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/EIG.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -53,21 +53,21 @@
   F77_INT info = 0;
 
   Matrix atmp = a;
-  double *tmp_data = atmp.fortran_vec ();
+  double *tmp_data = atmp.rwdata ();
 
   Array<double> wr (dim_vector (n, 1));
-  double *pwr = wr.fortran_vec ();
+  double *pwr = wr.rwdata ();
 
   Array<double> wi (dim_vector (n, 1));
-  double *pwi = wi.fortran_vec ();
+  double *pwi = wi.rwdata ();
 
   F77_INT tnvr = (calc_rev ? n : 0);
   Matrix vr (tnvr, tnvr);
-  double *pvr = vr.fortran_vec ();
+  double *pvr = vr.rwdata ();
 
   F77_INT tnvl = (calc_lev ? n : 0);
   Matrix vl (tnvl, tnvl);
-  double *pvl = vl.fortran_vec ();
+  double *pvl = vl.rwdata ();
 
   F77_INT lwork = -1;
   double dummy_work;
@@ -76,15 +76,15 @@
   F77_INT ihi;
 
   Array<double> scale (dim_vector (n, 1));
-  double *pscale = scale.fortran_vec ();
+  double *pscale = scale.rwdata ();
 
   double abnrm;
 
   Array<double> rconde (dim_vector (n, 1));
-  double *prconde = rconde.fortran_vec ();
+  double *prconde = rconde.rwdata ();
 
   Array<double> rcondv (dim_vector (n, 1));
-  double *prcondv = rcondv.fortran_vec ();
+  double *prcondv = rcondv.rwdata ();
 
   F77_INT dummy_iwork;
 
@@ -106,7 +106,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work);
   Array<double> work (dim_vector (lwork, 1));
-  double *pwork = work.fortran_vec ();
+  double *pwork = work.rwdata ();
 
   F77_XFCN (dgeevx, DGEEVX, (F77_CONST_CHAR_ARG2 (balance ? "B" : "N", 1),
                              F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
@@ -186,10 +186,10 @@
   F77_INT info = 0;
 
   Matrix atmp = a;
-  double *tmp_data = atmp.fortran_vec ();
+  double *tmp_data = atmp.rwdata ();
 
   ColumnVector wr (n);
-  double *pwr = wr.fortran_vec ();
+  double *pwr = wr.rwdata ();
 
   F77_INT lwork = -1;
   double dummy_work;
@@ -205,7 +205,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work);
   Array<double> work (dim_vector (lwork, 1));
-  double *pwork = work.fortran_vec ();
+  double *pwork = work.rwdata ();
 
   F77_XFCN (dsyev, DSYEV, (F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
@@ -245,39 +245,39 @@
   F77_INT info = 0;
 
   ComplexMatrix atmp = a;
-  Complex *tmp_data = atmp.fortran_vec ();
+  Complex *tmp_data = atmp.rwdata ();
 
   ComplexColumnVector wr (n);
-  Complex *pw = wr.fortran_vec ();
+  Complex *pw = wr.rwdata ();
 
   F77_INT nvr = (calc_rev ? n : 0);
   ComplexMatrix vrtmp (nvr, nvr);
-  Complex *pvr = vrtmp.fortran_vec ();
+  Complex *pvr = vrtmp.rwdata ();
 
   F77_INT nvl = (calc_lev ? n : 0);
   ComplexMatrix vltmp (nvl, nvl);
-  Complex *pvl = vltmp.fortran_vec ();
+  Complex *pvl = vltmp.rwdata ();
 
   F77_INT lwork = -1;
   Complex dummy_work;
 
   F77_INT lrwork = 2*n;
   Array<double> rwork (dim_vector (lrwork, 1));
-  double *prwork = rwork.fortran_vec ();
+  double *prwork = rwork.rwdata ();
 
   F77_INT ilo;
   F77_INT ihi;
 
   Array<double> scale (dim_vector (n, 1));
-  double *pscale = scale.fortran_vec ();
+  double *pscale = scale.rwdata ();
 
   double abnrm;
 
   Array<double> rconde (dim_vector (n, 1));
-  double *prconde = rconde.fortran_vec ();
+  double *prconde = rconde.rwdata ();
 
   Array<double> rcondv (dim_vector (n, 1));
-  double *prcondv = rcondv.fortran_vec ();
+  double *prcondv = rcondv.rwdata ();
 
   F77_XFCN (zgeevx, ZGEEVX, (F77_CONST_CHAR_ARG2 (balance ? "B" : "N", 1),
                              F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
@@ -299,7 +299,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work.real ());
   Array<Complex> work (dim_vector (lwork, 1));
-  Complex *pwork = work.fortran_vec ();
+  Complex *pwork = work.rwdata ();
 
   F77_XFCN (zgeevx, ZGEEVX, (F77_CONST_CHAR_ARG2 (balance ? "B" : "N", 1),
                              F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
@@ -340,17 +340,17 @@
   F77_INT info = 0;
 
   ComplexMatrix atmp = a;
-  Complex *tmp_data = atmp.fortran_vec ();
+  Complex *tmp_data = atmp.rwdata ();
 
   ColumnVector wr (n);
-  double *pwr = wr.fortran_vec ();
+  double *pwr = wr.rwdata ();
 
   F77_INT lwork = -1;
   Complex dummy_work;
 
   F77_INT lrwork = 3*n;
   Array<double> rwork (dim_vector (lrwork, 1));
-  double *prwork = rwork.fortran_vec ();
+  double *prwork = rwork.rwdata ();
 
   F77_XFCN (zheev, ZHEEV, (F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
@@ -365,7 +365,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work.real ());
   Array<Complex> work (dim_vector (lwork, 1));
-  Complex *pwork = work.fortran_vec ();
+  Complex *pwork = work.rwdata ();
 
   F77_XFCN (zheev, ZHEEV, (F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
@@ -410,7 +410,7 @@
   F77_INT info = 0;
 
   Matrix tmp = b;
-  double *tmp_data = tmp.fortran_vec ();
+  double *tmp_data = tmp.rwdata ();
 
   if (! force_qz)
     {
@@ -424,27 +424,27 @@
     }
 
   Matrix atmp = a;
-  double *atmp_data = atmp.fortran_vec ();
+  double *atmp_data = atmp.rwdata ();
 
   Matrix btmp = b;
-  double *btmp_data = btmp.fortran_vec ();
+  double *btmp_data = btmp.rwdata ();
 
   Array<double> ar (dim_vector (n, 1));
-  double *par = ar.fortran_vec ();
+  double *par = ar.rwdata ();
 
   Array<double> ai (dim_vector (n, 1));
-  double *pai = ai.fortran_vec ();
+  double *pai = ai.rwdata ();
 
   Array<double> beta (dim_vector (n, 1));
-  double *pbeta = beta.fortran_vec ();
+  double *pbeta = beta.rwdata ();
 
   F77_INT tnvr = (calc_rev ? n : 0);
   Matrix vr (tnvr, tnvr);
-  double *pvr = vr.fortran_vec ();
+  double *pvr = vr.rwdata ();
 
   F77_INT tnvl = (calc_lev ? n : 0);
   Matrix vl (tnvl, tnvl);
-  double *pvl = vl.fortran_vec ();
+  double *pvl = vl.rwdata ();
 
   F77_INT lwork = -1;
   double dummy_work;
@@ -463,7 +463,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work);
   Array<double> work (dim_vector (lwork, 1));
-  double *pwork = work.fortran_vec ();
+  double *pwork = work.rwdata ();
 
   F77_XFCN (dggev, DGGEV, (F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
@@ -547,13 +547,13 @@
   F77_INT info = 0;
 
   Matrix atmp = a;
-  double *atmp_data = atmp.fortran_vec ();
+  double *atmp_data = atmp.rwdata ();
 
   Matrix btmp = b;
-  double *btmp_data = btmp.fortran_vec ();
+  double *btmp_data = btmp.rwdata ();
 
   ColumnVector wr (n);
-  double *pwr = wr.fortran_vec ();
+  double *pwr = wr.rwdata ();
 
   F77_INT lwork = -1;
   double dummy_work;
@@ -571,7 +571,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work);
   Array<double> work (dim_vector (lwork, 1));
-  double *pwork = work.fortran_vec ();
+  double *pwork = work.rwdata ();
 
   F77_XFCN (dsygv, DSYGV, (1, F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
@@ -617,7 +617,7 @@
   F77_INT info = 0;
 
   ComplexMatrix tmp = b;
-  Complex *tmp_data = tmp.fortran_vec ();
+  Complex *tmp_data = tmp.rwdata ();
 
   if (! force_qz)
     {
@@ -631,31 +631,31 @@
     }
 
   ComplexMatrix atmp = a;
-  Complex *atmp_data = atmp.fortran_vec ();
+  Complex *atmp_data = atmp.rwdata ();
 
   ComplexMatrix btmp = b;
-  Complex *btmp_data = btmp.fortran_vec ();
+  Complex *btmp_data = btmp.rwdata ();
 
   ComplexColumnVector alpha (n);
-  Complex *palpha = alpha.fortran_vec ();
+  Complex *palpha = alpha.rwdata ();
 
   ComplexColumnVector beta (n);
-  Complex *pbeta = beta.fortran_vec ();
+  Complex *pbeta = beta.rwdata ();
 
   F77_INT nvr = (calc_rev ? n : 0);
   ComplexMatrix vrtmp (nvr, nvr);
-  Complex *pvr = vrtmp.fortran_vec ();
+  Complex *pvr = vrtmp.rwdata ();
 
   F77_INT nvl = (calc_lev ? n : 0);
   ComplexMatrix vltmp (nvl, nvl);
-  Complex *pvl = vltmp.fortran_vec ();
+  Complex *pvl = vltmp.rwdata ();
 
   F77_INT lwork = -1;
   Complex dummy_work;
 
   F77_INT lrwork = 8*n;
   Array<double> rwork (dim_vector (lrwork, 1));
-  double *prwork = rwork.fortran_vec ();
+  double *prwork = rwork.rwdata ();
 
   F77_XFCN (zggev, ZGGEV, (F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
@@ -675,7 +675,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work.real ());
   Array<Complex> work (dim_vector (lwork, 1));
-  Complex *pwork = work.fortran_vec ();
+  Complex *pwork = work.rwdata ();
 
   F77_XFCN (zggev, ZGGEV, (F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
@@ -725,20 +725,20 @@
   F77_INT info = 0;
 
   ComplexMatrix atmp = a;
-  Complex *atmp_data = atmp.fortran_vec ();
+  Complex *atmp_data = atmp.rwdata ();
 
   ComplexMatrix btmp = b;
-  Complex *btmp_data = btmp.fortran_vec ();
+  Complex *btmp_data = btmp.rwdata ();
 
   ColumnVector wr (n);
-  double *pwr = wr.fortran_vec ();
+  double *pwr = wr.rwdata ();
 
   F77_INT lwork = -1;
   Complex dummy_work;
 
   F77_INT lrwork = 3*n;
   Array<double> rwork (dim_vector (lrwork, 1));
-  double *prwork = rwork.fortran_vec ();
+  double *prwork = rwork.rwdata ();
 
   F77_XFCN (zhegv, ZHEGV, (1, F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
@@ -754,7 +754,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work.real ());
   Array<Complex> work (dim_vector (lwork, 1));
-  Complex *pwork = work.fortran_vec ();
+  Complex *pwork = work.rwdata ();
 
   F77_XFCN (zhegv, ZHEGV, (1, F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
--- a/liboctave/numeric/LSODE.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/LSODE.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -301,12 +301,12 @@
       LSODE_options::m_reset = false;
     }
 
-  double *px = m_x.fortran_vec ();
+  double *px = m_x.rwdata ();
 
-  double *pabs_tol = m_abs_tol.fortran_vec ();
+  double *pabs_tol = m_abs_tol.rwdata ();
 
-  F77_INT *piwork = m_iwork.fortran_vec ();
-  double *prwork = m_rwork.fortran_vec ();
+  F77_INT *piwork = m_iwork.rwdata ();
+  double *prwork = m_rwork.rwdata ();
 
   F77_INT tmp_istate = octave::to_f77_int (m_istate);
 
--- a/liboctave/numeric/Quad.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/Quad.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -97,16 +97,16 @@
                        double& abserr)
 {
   F77_INT npts = octave::to_f77_int (m_singularities.numel () + 2);
-  double *points = m_singularities.fortran_vec ();
+  double *points = m_singularities.rwdata ();
   double result = 0.0;
 
   F77_INT leniw = 183*npts - 122;
   Array<F77_INT> iwork (dim_vector (leniw, 1));
-  F77_INT *piwork = iwork.fortran_vec ();
+  F77_INT *piwork = iwork.rwdata ();
 
   F77_INT lenw = 2*leniw - npts;
   Array<double> work (dim_vector (lenw, 1));
-  double *pwork = work.fortran_vec ();
+  double *pwork = work.rwdata ();
 
   user_fcn = m_f;
   F77_INT last;
@@ -147,11 +147,11 @@
 
   F77_INT leniw = 128;
   Array<F77_INT> iwork (dim_vector (leniw, 1));
-  F77_INT *piwork = iwork.fortran_vec ();
+  F77_INT *piwork = iwork.rwdata ();
 
   F77_INT lenw = 8*leniw;
   Array<double> work (dim_vector (lenw, 1));
-  double *pwork = work.fortran_vec ();
+  double *pwork = work.rwdata ();
 
   user_fcn = m_f;
   F77_INT last;
@@ -214,16 +214,16 @@
                             float& abserr)
 {
   F77_INT npts = octave::to_f77_int (m_singularities.numel () + 2);
-  float *points = m_singularities.fortran_vec ();
+  float *points = m_singularities.rwdata ();
   float result = 0.0;
 
   F77_INT leniw = 183*npts - 122;
   Array<F77_INT> iwork (dim_vector (leniw, 1));
-  F77_INT *piwork = iwork.fortran_vec ();
+  F77_INT *piwork = iwork.rwdata ();
 
   F77_INT lenw = 2*leniw - npts;
   Array<float> work (dim_vector (lenw, 1));
-  float *pwork = work.fortran_vec ();
+  float *pwork = work.rwdata ();
 
   float_user_fcn = m_ff;
   F77_INT last;
@@ -264,11 +264,11 @@
 
   F77_INT leniw = 128;
   Array<F77_INT> iwork (dim_vector (leniw, 1));
-  F77_INT *piwork = iwork.fortran_vec ();
+  F77_INT *piwork = iwork.rwdata ();
 
   F77_INT lenw = 8*leniw;
   Array<float> work (dim_vector (lenw, 1));
-  float *pwork = work.fortran_vec ();
+  float *pwork = work.rwdata ();
 
   float_user_fcn = m_ff;
   F77_INT last;
--- a/liboctave/numeric/aepbalance.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/aepbalance.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -64,8 +64,8 @@
   F77_INT info, t_ilo, t_ihi;
 
   F77_XFCN (dgebal, DGEBAL, (F77_CONST_CHAR_ARG2 (&m_job, 1), n,
-                             m_balanced_mat.fortran_vec (), n,
-                             t_ilo, t_ihi, m_scale.fortran_vec (), info
+                             m_balanced_mat.rwdata (), n,
+                             t_ilo, t_ihi, m_scale.rwdata (), info
                              F77_CHAR_ARG_LEN (1)));
 
   m_ilo = t_ilo;
@@ -91,7 +91,7 @@
   F77_XFCN (dgebak, DGEBAK, (F77_CONST_CHAR_ARG2 (&m_job, 1),
                              F77_CONST_CHAR_ARG2 (&side, 1),
                              n, t_ilo, t_ihi, m_scale.data (), n,
-                             balancing_mat.fortran_vec (), n, info
+                             balancing_mat.rwdata (), n, info
                              F77_CHAR_ARG_LEN (1)
                              F77_CHAR_ARG_LEN (1)));
 
@@ -116,8 +116,8 @@
   F77_INT info, t_ilo, t_ihi;
 
   F77_XFCN (sgebal, SGEBAL, (F77_CONST_CHAR_ARG2 (&m_job, 1), n,
-                             m_balanced_mat.fortran_vec (), n, t_ilo,
-                             t_ihi, m_scale.fortran_vec (), info
+                             m_balanced_mat.rwdata (), n, t_ilo,
+                             t_ihi, m_scale.rwdata (), info
                              F77_CHAR_ARG_LEN (1)));
 
   m_ilo = t_ilo;
@@ -143,7 +143,7 @@
   F77_XFCN (sgebak, SGEBAK, (F77_CONST_CHAR_ARG2 (&m_job, 1),
                              F77_CONST_CHAR_ARG2 (&side, 1),
                              n, t_ilo, t_ihi, m_scale.data (), n,
-                             balancing_mat.fortran_vec (), n, info
+                             balancing_mat.rwdata (), n, info
                              F77_CHAR_ARG_LEN (1)
                              F77_CHAR_ARG_LEN (1)));
 
@@ -169,8 +169,8 @@
 
   F77_XFCN (zgebal, ZGEBAL,
             (F77_CONST_CHAR_ARG2 (&m_job, 1), n,
-             F77_DBLE_CMPLX_ARG (m_balanced_mat.fortran_vec ()),
-             n, t_ilo, t_ihi, m_scale.fortran_vec (), info
+             F77_DBLE_CMPLX_ARG (m_balanced_mat.rwdata ()),
+             n, t_ilo, t_ihi, m_scale.rwdata (), info
              F77_CHAR_ARG_LEN (1)));
 
   m_ilo = t_ilo;
@@ -197,7 +197,7 @@
             (F77_CONST_CHAR_ARG2 (&m_job, 1),
              F77_CONST_CHAR_ARG2 (&side, 1),
              n, t_ilo, t_ihi, m_scale.data (), n,
-             F77_DBLE_CMPLX_ARG (balancing_mat.fortran_vec ()),
+             F77_DBLE_CMPLX_ARG (balancing_mat.rwdata ()),
              n, info
              F77_CHAR_ARG_LEN (1)
              F77_CHAR_ARG_LEN (1)));
@@ -223,8 +223,8 @@
   F77_INT info, t_ilo, t_ihi;
 
   F77_XFCN (cgebal, CGEBAL, (F77_CONST_CHAR_ARG2 (&m_job, 1), n,
-                             F77_CMPLX_ARG (m_balanced_mat.fortran_vec ()),
-                             n, t_ilo, t_ihi, m_scale.fortran_vec (), info
+                             F77_CMPLX_ARG (m_balanced_mat.rwdata ()),
+                             n, t_ilo, t_ihi, m_scale.rwdata (), info
                              F77_CHAR_ARG_LEN (1)));
 
   m_ilo = t_ilo;
@@ -250,7 +250,7 @@
   F77_XFCN (cgebak, CGEBAK, (F77_CONST_CHAR_ARG2 (&m_job, 1),
                              F77_CONST_CHAR_ARG2 (&side, 1),
                              n, t_ilo, t_ihi, m_scale.data (), n,
-                             F77_CMPLX_ARG (balancing_mat.fortran_vec ()),
+                             F77_CMPLX_ARG (balancing_mat.rwdata ()),
                              n, info
                              F77_CHAR_ARG_LEN (1)
                              F77_CHAR_ARG_LEN (1)));
--- a/liboctave/numeric/bsxfun-defs.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/bsxfun-defs.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -68,7 +68,7 @@
 
   const X *xvec = x.data ();
   const Y *yvec = y.data ();
-  R *rvec = retval.fortran_vec ();
+  R *rvec = retval.rwdata ();
 
   // Fold the common leading dimensions.
   octave_idx_type start, ldr = 1;
@@ -149,7 +149,7 @@
   dvx = dvx.redim (nd);
 
   const X *xvec = x.data ();
-  R *rvec = r.fortran_vec ();
+  R *rvec = r.rwdata ();
 
   // Fold the common leading dimensions.
   octave_idx_type start, ldr = 1;
--- a/liboctave/numeric/chol.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/chol.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -64,7 +64,7 @@
   F77_INT info;
 
   Matrix tmp = r;
-  double *v = tmp.fortran_vec ();
+  double *v = tmp.rwdata ();
 
   if (is_upper)
     F77_XFCN (dpotri, DPOTRI, (F77_CONST_CHAR_ARG2 ("U", 1), n,
@@ -112,7 +112,7 @@
   F77_INT info;
 
   FloatMatrix tmp = r;
-  float *v = tmp.fortran_vec ();
+  float *v = tmp.rwdata ();
 
   if (is_upper)
     F77_XFCN (spotri, SPOTRI, (F77_CONST_CHAR_ARG2 ("U", 1), n,
@@ -163,11 +163,11 @@
 
   if (is_upper)
     F77_XFCN (zpotri, ZPOTRI, (F77_CONST_CHAR_ARG2 ("U", 1), n,
-                               F77_DBLE_CMPLX_ARG (tmp.fortran_vec ()), n, info
+                               F77_DBLE_CMPLX_ARG (tmp.rwdata ()), n, info
                                F77_CHAR_ARG_LEN (1)));
   else
     F77_XFCN (zpotri, ZPOTRI, (F77_CONST_CHAR_ARG2 ("L", 1), n,
-                               F77_DBLE_CMPLX_ARG (tmp.fortran_vec ()), n, info
+                               F77_DBLE_CMPLX_ARG (tmp.rwdata ()), n, info
                                F77_CHAR_ARG_LEN (1)));
 
   // If someone thinks of a more graceful way of doing this (or
@@ -208,11 +208,11 @@
 
   if (is_upper)
     F77_XFCN (cpotri, CPOTRI, (F77_CONST_CHAR_ARG2 ("U", 1), n,
-                               F77_CMPLX_ARG (tmp.fortran_vec ()), n, info
+                               F77_CMPLX_ARG (tmp.rwdata ()), n, info
                                F77_CHAR_ARG_LEN (1)));
   else
     F77_XFCN (cpotri, CPOTRI, (F77_CONST_CHAR_ARG2 ("L", 1), n,
-                               F77_CMPLX_ARG (tmp.fortran_vec ()), n, info
+                               F77_CMPLX_ARG (tmp.rwdata ()), n, info
                                F77_CHAR_ARG_LEN (1)));
 
   // If someone thinks of a more graceful way of doing this (or
@@ -437,7 +437,7 @@
         for (octave_idx_type i = j; i < n; i++)
           m_chol_mat.xelem (i, j) = a(i, j);
       }
-  double *h = m_chol_mat.fortran_vec ();
+  double *h = m_chol_mat.rwdata ();
 
   // Calculate the norm of the matrix, for later use.
   double anorm = 0;
@@ -460,7 +460,7 @@
 
       // Now calculate the condition number for non-singular matrix.
       Array<double> z (dim_vector (3*n, 1));
-      double *pz = z.fortran_vec ();
+      double *pz = z.rwdata ();
       OCTAVE_LOCAL_BUFFER (F77_INT, iz, n);
       if (m_is_upper)
         F77_XFCN (dpocon, DPOCON, (F77_CONST_CHAR_ARG2 ("U", 1), n, h,
@@ -493,8 +493,8 @@
 
   OCTAVE_LOCAL_BUFFER (double, w, n);
 
-  F77_XFCN (dch1up, DCH1UP, (n, m_chol_mat.fortran_vec (), n,
-                             utmp.fortran_vec (), w));
+  F77_XFCN (dch1up, DCH1UP, (n, m_chol_mat.rwdata (), n,
+                             utmp.rwdata (), w));
 }
 
 template <>
@@ -512,8 +512,8 @@
 
   OCTAVE_LOCAL_BUFFER (double, w, n);
 
-  F77_XFCN (dch1dn, DCH1DN, (n, m_chol_mat.fortran_vec (), n,
-                             utmp.fortran_vec (), w, info));
+  F77_XFCN (dch1dn, DCH1DN, (n, m_chol_mat.rwdata (), n,
+                             utmp.rwdata (), w, info));
 
   return info;
 }
@@ -539,8 +539,8 @@
   m_chol_mat.resize (n+1, n+1);
   F77_INT ldcm = to_f77_int (m_chol_mat.rows ());
 
-  F77_XFCN (dchinx, DCHINX, (n, m_chol_mat.fortran_vec (), ldcm,
-                             j + 1, utmp.fortran_vec (), w, info));
+  F77_XFCN (dchinx, DCHINX, (n, m_chol_mat.rwdata (), ldcm,
+                             j + 1, utmp.rwdata (), w, info));
 
   return info;
 }
@@ -557,7 +557,7 @@
 
   OCTAVE_LOCAL_BUFFER (double, w, n);
 
-  F77_XFCN (dchdex, DCHDEX, (n, m_chol_mat.fortran_vec (), n, j + 1, w));
+  F77_XFCN (dchdex, DCHDEX, (n, m_chol_mat.rwdata (), n, j + 1, w));
 
   m_chol_mat.resize (n-1, n-1);
 }
@@ -575,7 +575,7 @@
 
   OCTAVE_LOCAL_BUFFER (double, w, 2*n);
 
-  F77_XFCN (dchshx, DCHSHX, (n, m_chol_mat.fortran_vec (), n,
+  F77_XFCN (dchshx, DCHSHX, (n, m_chol_mat.rwdata (), n,
                              i + 1, j + 1, w));
 }
 
@@ -613,7 +613,7 @@
         for (octave_idx_type i = j; i < n; i++)
           m_chol_mat.xelem (i, j) = a(i, j);
       }
-  float *h = m_chol_mat.fortran_vec ();
+  float *h = m_chol_mat.rwdata ();
 
   // Calculate the norm of the matrix, for later use.
   float anorm = 0;
@@ -636,7 +636,7 @@
 
       // Now calculate the condition number for non-singular matrix.
       Array<float> z (dim_vector (3*n, 1));
-      float *pz = z.fortran_vec ();
+      float *pz = z.rwdata ();
       OCTAVE_LOCAL_BUFFER (F77_INT, iz, n);
       if (m_is_upper)
         F77_XFCN (spocon, SPOCON, (F77_CONST_CHAR_ARG2 ("U", 1), n, h,
@@ -669,8 +669,8 @@
 
   OCTAVE_LOCAL_BUFFER (float, w, n);
 
-  F77_XFCN (sch1up, SCH1UP, (n, m_chol_mat.fortran_vec (), n,
-                             utmp.fortran_vec (), w));
+  F77_XFCN (sch1up, SCH1UP, (n, m_chol_mat.rwdata (), n,
+                             utmp.rwdata (), w));
 }
 
 template <>
@@ -688,8 +688,8 @@
 
   OCTAVE_LOCAL_BUFFER (float, w, n);
 
-  F77_XFCN (sch1dn, SCH1DN, (n, m_chol_mat.fortran_vec (), n,
-                             utmp.fortran_vec (), w, info));
+  F77_XFCN (sch1dn, SCH1DN, (n, m_chol_mat.rwdata (), n,
+                             utmp.rwdata (), w, info));
 
   return info;
 }
@@ -716,8 +716,8 @@
   m_chol_mat.resize (n+1, n+1);
   F77_INT ldcm = to_f77_int (m_chol_mat.rows ());
 
-  F77_XFCN (schinx, SCHINX, (n, m_chol_mat.fortran_vec (), ldcm,
-                             j + 1, utmp.fortran_vec (), w, info));
+  F77_XFCN (schinx, SCHINX, (n, m_chol_mat.rwdata (), ldcm,
+                             j + 1, utmp.rwdata (), w, info));
 
   return info;
 }
@@ -734,7 +734,7 @@
 
   OCTAVE_LOCAL_BUFFER (float, w, n);
 
-  F77_XFCN (schdex, SCHDEX, (n, m_chol_mat.fortran_vec (), n,
+  F77_XFCN (schdex, SCHDEX, (n, m_chol_mat.rwdata (), n,
                              j + 1, w));
 
   m_chol_mat.resize (n-1, n-1);
@@ -753,7 +753,7 @@
 
   OCTAVE_LOCAL_BUFFER (float, w, 2*n);
 
-  F77_XFCN (schshx, SCHSHX, (n, m_chol_mat.fortran_vec (), n,
+  F77_XFCN (schshx, SCHSHX, (n, m_chol_mat.rwdata (), n,
                              i + 1, j + 1, w));
 }
 
@@ -791,7 +791,7 @@
         for (octave_idx_type i = j; i < n; i++)
           m_chol_mat.xelem (i, j) = a(i, j);
       }
-  Complex *h = m_chol_mat.fortran_vec ();
+  Complex *h = m_chol_mat.rwdata ();
 
   // Calculate the norm of the matrix, for later use.
   double anorm = 0;
@@ -816,9 +816,9 @@
 
       // Now calculate the condition number for non-singular matrix.
       Array<Complex> z (dim_vector (2*n, 1));
-      Complex *pz = z.fortran_vec ();
+      Complex *pz = z.rwdata ();
       Array<double> rz (dim_vector (n, 1));
-      double *prz = rz.fortran_vec ();
+      double *prz = rz.rwdata ();
       F77_XFCN (zpocon, ZPOCON, (F77_CONST_CHAR_ARG2 ("U", 1), n,
                                  F77_DBLE_CMPLX_ARG (h), n, anorm, m_rcond,
                                  F77_DBLE_CMPLX_ARG (pz), prz, zpocon_info
@@ -847,9 +847,9 @@
   OCTAVE_LOCAL_BUFFER (double, rw, n);
 
   F77_XFCN (zch1up, ZCH1UP, (n,
-                             F77_DBLE_CMPLX_ARG (m_chol_mat.fortran_vec ()),
+                             F77_DBLE_CMPLX_ARG (m_chol_mat.rwdata ()),
                              n,
-                             F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()),
+                             F77_DBLE_CMPLX_ARG (utmp.rwdata ()),
                              rw));
 }
 
@@ -869,9 +869,9 @@
   OCTAVE_LOCAL_BUFFER (double, rw, n);
 
   F77_XFCN (zch1dn, ZCH1DN, (n,
-                             F77_DBLE_CMPLX_ARG (m_chol_mat.fortran_vec ()),
+                             F77_DBLE_CMPLX_ARG (m_chol_mat.rwdata ()),
                              n,
-                             F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()),
+                             F77_DBLE_CMPLX_ARG (utmp.rwdata ()),
                              rw, info));
 
   return info;
@@ -900,9 +900,9 @@
   F77_INT ldcm = to_f77_int (m_chol_mat.rows ());
 
   F77_XFCN (zchinx, ZCHINX, (n,
-                             F77_DBLE_CMPLX_ARG (m_chol_mat.fortran_vec ()),
+                             F77_DBLE_CMPLX_ARG (m_chol_mat.rwdata ()),
                              ldcm, j + 1,
-                             F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()),
+                             F77_DBLE_CMPLX_ARG (utmp.rwdata ()),
                              rw, info));
 
   return info;
@@ -921,7 +921,7 @@
   OCTAVE_LOCAL_BUFFER (double, rw, n);
 
   F77_XFCN (zchdex, ZCHDEX, (n,
-                             F77_DBLE_CMPLX_ARG (m_chol_mat.fortran_vec ()),
+                             F77_DBLE_CMPLX_ARG (m_chol_mat.rwdata ()),
                              n, j + 1, rw));
 
   m_chol_mat.resize (n-1, n-1);
@@ -943,7 +943,7 @@
   OCTAVE_LOCAL_BUFFER (double, rw, n);
 
   F77_XFCN (zchshx, ZCHSHX, (n,
-                             F77_DBLE_CMPLX_ARG (m_chol_mat.fortran_vec ()),
+                             F77_DBLE_CMPLX_ARG (m_chol_mat.rwdata ()),
                              n, i + 1, j + 1,
                              F77_DBLE_CMPLX_ARG (w), rw));
 }
@@ -983,7 +983,7 @@
         for (octave_idx_type i = j; i < n; i++)
           m_chol_mat.xelem (i, j) = a(i, j);
       }
-  FloatComplex *h = m_chol_mat.fortran_vec ();
+  FloatComplex *h = m_chol_mat.rwdata ();
 
   // Calculate the norm of the matrix, for later use.
   float anorm = 0;
@@ -1008,9 +1008,9 @@
 
       // Now calculate the condition number for non-singular matrix.
       Array<FloatComplex> z (dim_vector (2*n, 1));
-      FloatComplex *pz = z.fortran_vec ();
+      FloatComplex *pz = z.rwdata ();
       Array<float> rz (dim_vector (n, 1));
-      float *prz = rz.fortran_vec ();
+      float *prz = rz.rwdata ();
       F77_XFCN (cpocon, CPOCON, (F77_CONST_CHAR_ARG2 ("U", 1), n,
                                  F77_CMPLX_ARG (h), n, anorm, m_rcond,
                                  F77_CMPLX_ARG (pz), prz, cpocon_info
@@ -1038,8 +1038,8 @@
 
   OCTAVE_LOCAL_BUFFER (float, rw, n);
 
-  F77_XFCN (cch1up, CCH1UP, (n, F77_CMPLX_ARG (m_chol_mat.fortran_vec ()),
-                             n, F77_CMPLX_ARG (utmp.fortran_vec ()), rw));
+  F77_XFCN (cch1up, CCH1UP, (n, F77_CMPLX_ARG (m_chol_mat.rwdata ()),
+                             n, F77_CMPLX_ARG (utmp.rwdata ()), rw));
 }
 
 template <>
@@ -1057,8 +1057,8 @@
 
   OCTAVE_LOCAL_BUFFER (float, rw, n);
 
-  F77_XFCN (cch1dn, CCH1DN, (n, F77_CMPLX_ARG (m_chol_mat.fortran_vec ()),
-                             n, F77_CMPLX_ARG (utmp.fortran_vec ()),
+  F77_XFCN (cch1dn, CCH1DN, (n, F77_CMPLX_ARG (m_chol_mat.rwdata ()),
+                             n, F77_CMPLX_ARG (utmp.rwdata ()),
                              rw, info));
 
   return info;
@@ -1086,9 +1086,9 @@
   m_chol_mat.resize (n+1, n+1);
   F77_INT ldcm = to_f77_int (m_chol_mat.rows ());
 
-  F77_XFCN (cchinx, CCHINX, (n, F77_CMPLX_ARG (m_chol_mat.fortran_vec ()),
+  F77_XFCN (cchinx, CCHINX, (n, F77_CMPLX_ARG (m_chol_mat.rwdata ()),
                              ldcm, j + 1,
-                             F77_CMPLX_ARG (utmp.fortran_vec ()),
+                             F77_CMPLX_ARG (utmp.rwdata ()),
                              rw, info));
 
   return info;
@@ -1106,7 +1106,7 @@
 
   OCTAVE_LOCAL_BUFFER (float, rw, n);
 
-  F77_XFCN (cchdex, CCHDEX, (n, F77_CMPLX_ARG (m_chol_mat.fortran_vec ()),
+  F77_XFCN (cchdex, CCHDEX, (n, F77_CMPLX_ARG (m_chol_mat.rwdata ()),
                              n, j + 1, rw));
 
   m_chol_mat.resize (n-1, n-1);
@@ -1127,7 +1127,7 @@
   OCTAVE_LOCAL_BUFFER (FloatComplex, w, n);
   OCTAVE_LOCAL_BUFFER (float, rw, n);
 
-  F77_XFCN (cchshx, CCHSHX, (n, F77_CMPLX_ARG (m_chol_mat.fortran_vec ()),
+  F77_XFCN (cchshx, CCHSHX, (n, F77_CMPLX_ARG (m_chol_mat.rwdata ()),
                              n, i + 1, j + 1, F77_CMPLX_ARG (w), rw));
 }
 
--- a/liboctave/numeric/eigs-base.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/eigs-base.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -538,7 +538,7 @@
             {
               Matrix tmp = sigma * b.transpose () * b;
               const double *pB = permB.data ();
-              double *p = AminusSigmaB.fortran_vec ();
+              double *p = AminusSigmaB.rwdata ();
 
               if (permB.numel ())
                 {
@@ -557,7 +557,7 @@
         }
       else
         {
-          double *p = AminusSigmaB.fortran_vec ();
+          double *p = AminusSigmaB.rwdata ();
 
           for (octave_idx_type i = 0; i < n; i++)
             p[i*(n+1)] -= sigma;
@@ -720,7 +720,7 @@
             {
               ComplexMatrix tmp = sigma * b.hermitian () * b;
               const double *pB = permB.data ();
-              Complex *p = AminusSigmaB.fortran_vec ();
+              Complex *p = AminusSigmaB.rwdata ();
 
               if (permB.numel ())
                 {
@@ -739,7 +739,7 @@
         }
       else
         {
-          Complex *p = AminusSigmaB.fortran_vec ();
+          Complex *p = AminusSigmaB.rwdata ();
 
           for (octave_idx_type i = 0; i < n; i++)
             p[i*(n+1)] -= sigma;
@@ -892,7 +892,7 @@
     }
 
   Array<F77_INT> ip (dim_vector (11, 1));
-  F77_INT *iparam = ip.fortran_vec ();
+  F77_INT *iparam = ip.rwdata ();
 
   ip(0) = 1; //ishift
   ip(1) = 0;   // ip(1) not referenced
@@ -908,7 +908,7 @@
   // ip(7) to ip(10) return values
 
   Array<F77_INT> iptr (dim_vector (14, 1));
-  F77_INT *ipntr = iptr.fortran_vec ();
+  F77_INT *ipntr = iptr.rwdata ();
 
   F77_INT ido = 0;
   int iter = 0;
@@ -917,7 +917,7 @@
   OCTAVE_LOCAL_BUFFER (double, v, n * p);
   OCTAVE_LOCAL_BUFFER (double, workl, lwork);
   OCTAVE_LOCAL_BUFFER (double, workd, 3 * n);
-  double *presid = resid.fortran_vec ();
+  double *presid = resid.rwdata ();
 
   do
     {
@@ -1000,13 +1000,13 @@
   // is just workspace for ARPACK, so use int type to
   // avoid problems.
   Array<F77_INT> s (dim_vector (p, 1));
-  F77_INT *sel = s.fortran_vec ();
+  F77_INT *sel = s.rwdata ();
 
   eig_vec.resize (n, k);
-  double *z = eig_vec.fortran_vec ();
+  double *z = eig_vec.rwdata ();
 
   eig_val.resize (k);
-  double *d = eig_val.fortran_vec ();
+  double *d = eig_val.rwdata ();
 
   F77_FUNC (dseupd, DSEUPD)
   (rvec, F77_CONST_CHAR_ARG2 ("A", 1), sel, d, z, n, sigma,
@@ -1159,7 +1159,7 @@
     bmat = 'G';
 
   Array<F77_INT> ip (dim_vector (11, 1));
-  F77_INT *iparam = ip.fortran_vec ();
+  F77_INT *iparam = ip.rwdata ();
 
   ip(0) = 1; //ishift
   ip(1) = 0;   // ip(1) not referenced
@@ -1175,7 +1175,7 @@
   // ip(7) to ip(10) return values
 
   Array<F77_INT> iptr (dim_vector (14, 1));
-  F77_INT *ipntr = iptr.fortran_vec ();
+  F77_INT *ipntr = iptr.rwdata ();
 
   F77_INT ido = 0;
   int iter = 0;
@@ -1193,7 +1193,7 @@
   OCTAVE_LOCAL_BUFFER (double, v, n * p);
   OCTAVE_LOCAL_BUFFER (double, workl, lwork);
   OCTAVE_LOCAL_BUFFER (double, workd, 3 * n);
-  double *presid = resid.fortran_vec ();
+  double *presid = resid.rwdata ();
 
   do
     {
@@ -1312,13 +1312,13 @@
   // is just workspace for ARPACK, so use int type to
   // avoid problems.
   Array<F77_INT> s (dim_vector (p, 1));
-  F77_INT *sel = s.fortran_vec ();
+  F77_INT *sel = s.rwdata ();
 
   eig_vec.resize (n, k);
-  double *z = eig_vec.fortran_vec ();
+  double *z = eig_vec.rwdata ();
 
   eig_val.resize (k);
-  double *d = eig_val.fortran_vec ();
+  double *d = eig_val.rwdata ();
 
   F77_FUNC (dseupd, DSEUPD)
   (rvec, F77_CONST_CHAR_ARG2 ("A", 1), sel, d, z, n, sigma,
@@ -1512,7 +1512,7 @@
     }
 
   Array<F77_INT> ip (dim_vector (11, 1));
-  F77_INT *iparam = ip.fortran_vec ();
+  F77_INT *iparam = ip.rwdata ();
 
   ip(0) = 1; //ishift
   ip(1) = 0;   // ip(1) not referenced
@@ -1528,7 +1528,7 @@
   // ip(7) to ip(10) return values
 
   Array<F77_INT> iptr (dim_vector (14, 1));
-  F77_INT *ipntr = iptr.fortran_vec ();
+  F77_INT *ipntr = iptr.rwdata ();
 
   F77_INT ido = 0;
   int iter = 0;
@@ -1537,7 +1537,7 @@
   OCTAVE_LOCAL_BUFFER (double, v, n * p);
   OCTAVE_LOCAL_BUFFER (double, workl, lwork);
   OCTAVE_LOCAL_BUFFER (double, workd, 3 * n);
-  double *presid = resid.fortran_vec ();
+  double *presid = resid.rwdata ();
 
   do
     {
@@ -1685,13 +1685,13 @@
   // is just workspace for ARPACK, so use int type to
   // avoid problems.
   Array<F77_INT> s (dim_vector (p, 1));
-  F77_INT *sel = s.fortran_vec ();
+  F77_INT *sel = s.rwdata ();
 
   eig_vec.resize (n, k);
-  double *z = eig_vec.fortran_vec ();
+  double *z = eig_vec.rwdata ();
 
   eig_val.resize (k);
-  double *d = eig_val.fortran_vec ();
+  double *d = eig_val.rwdata ();
 
   F77_FUNC (dseupd, DSEUPD)
   (rvec, F77_CONST_CHAR_ARG2 ("A", 1), sel, d, z, n, sigma,
@@ -1869,7 +1869,7 @@
     }
 
   Array<F77_INT> ip (dim_vector (11, 1));
-  F77_INT *iparam = ip.fortran_vec ();
+  F77_INT *iparam = ip.rwdata ();
 
   ip(0) = 1; //ishift
   ip(1) = 0;   // ip(1) not referenced
@@ -1885,7 +1885,7 @@
   // ip(7) to ip(10) return values
 
   Array<F77_INT> iptr (dim_vector (14, 1));
-  F77_INT *ipntr = iptr.fortran_vec ();
+  F77_INT *ipntr = iptr.rwdata ();
 
   F77_INT ido = 0;
   int iter = 0;
@@ -1894,7 +1894,7 @@
   OCTAVE_LOCAL_BUFFER (double, v, n * (p + 1));
   OCTAVE_LOCAL_BUFFER (double, workl, lwork + 1);
   OCTAVE_LOCAL_BUFFER (double, workd, 3 * n + 1);
-  double *presid = resid.fortran_vec ();
+  double *presid = resid.rwdata ();
 
   do
     {
@@ -1981,7 +1981,7 @@
   // is just workspace for ARPACK, so use int type to
   // avoid problems.
   Array<F77_INT> s (dim_vector (p, 1));
-  F77_INT *sel = s.fortran_vec ();
+  F77_INT *sel = s.rwdata ();
 
   // FIXME: initialize eig_vec2 to zero; apparently dneupd can skip
   // the assignment to elements of Z that represent imaginary parts.
@@ -1991,7 +1991,7 @@
   //   [vecs, vals, f] = eigs (A, 1)
 
   Matrix eig_vec2 (n, k + 1, 0.0);
-  double *z = eig_vec2.fortran_vec ();
+  double *z = eig_vec2.rwdata ();
 
   OCTAVE_LOCAL_BUFFER (double, dr, k + 1);
   OCTAVE_LOCAL_BUFFER (double, di, k + 1);
@@ -2013,7 +2013,7 @@
     k = ip(4);
 
   eig_val.resize (k);
-  Complex *d = eig_val.fortran_vec ();
+  Complex *d = eig_val.rwdata ();
 
   if (info2 == 0)
     {
@@ -2196,7 +2196,7 @@
     bmat = 'G';
 
   Array<F77_INT> ip (dim_vector (11, 1));
-  F77_INT *iparam = ip.fortran_vec ();
+  F77_INT *iparam = ip.rwdata ();
 
   ip(0) = 1; //ishift
   ip(1) = 0;   // ip(1) not referenced
@@ -2212,7 +2212,7 @@
   // ip(7) to ip(10) return values
 
   Array<F77_INT> iptr (dim_vector (14, 1));
-  F77_INT *ipntr = iptr.fortran_vec ();
+  F77_INT *ipntr = iptr.rwdata ();
 
   F77_INT ido = 0;
   int iter = 0;
@@ -2230,7 +2230,7 @@
   OCTAVE_LOCAL_BUFFER (double, v, n * (p + 1));
   OCTAVE_LOCAL_BUFFER (double, workl, lwork + 1);
   OCTAVE_LOCAL_BUFFER (double, workd, 3 * n + 1);
-  double *presid = resid.fortran_vec ();
+  double *presid = resid.rwdata ();
 
   do
     {
@@ -2354,7 +2354,7 @@
   // is just workspace for ARPACK, so use int type to
   // avoid problems.
   Array<F77_INT> s (dim_vector (p, 1));
-  F77_INT *sel = s.fortran_vec ();
+  F77_INT *sel = s.rwdata ();
 
   // FIXME: initialize eig_vec2 to zero; apparently dneupd can skip
   // the assignment to elements of Z that represent imaginary parts.
@@ -2364,7 +2364,7 @@
   //   [vecs, vals, f] = eigs (A, 1)
 
   Matrix eig_vec2 (n, k + 1, 0.0);
-  double *z = eig_vec2.fortran_vec ();
+  double *z = eig_vec2.rwdata ();
 
   OCTAVE_LOCAL_BUFFER (double, dr, k + 1);
   OCTAVE_LOCAL_BUFFER (double, di, k + 1);
@@ -2386,7 +2386,7 @@
     k = ip(4);
 
   eig_val.resize (k);
-  Complex *d = eig_val.fortran_vec ();
+  Complex *d = eig_val.rwdata ();
 
   if (info2 == 0)
     {
@@ -2617,7 +2617,7 @@
     }
 
   Array<F77_INT> ip (dim_vector (11, 1));
-  F77_INT *iparam = ip.fortran_vec ();
+  F77_INT *iparam = ip.rwdata ();
 
   ip(0) = 1; //ishift
   ip(1) = 0;   // ip(1) not referenced
@@ -2633,7 +2633,7 @@
   // ip(7) to ip(10) return values
 
   Array<F77_INT> iptr (dim_vector (14, 1));
-  F77_INT *ipntr = iptr.fortran_vec ();
+  F77_INT *ipntr = iptr.rwdata ();
 
   F77_INT ido = 0;
   int iter = 0;
@@ -2642,7 +2642,7 @@
   OCTAVE_LOCAL_BUFFER (double, v, n * (p + 1));
   OCTAVE_LOCAL_BUFFER (double, workl, lwork + 1);
   OCTAVE_LOCAL_BUFFER (double, workd, 3 * n + 1);
-  double *presid = resid.fortran_vec ();
+  double *presid = resid.rwdata ();
 
   do
     {
@@ -2794,7 +2794,7 @@
   // is just workspace for ARPACK, so use int type to
   // avoid problems.
   Array<F77_INT> s (dim_vector (p, 1));
-  F77_INT *sel = s.fortran_vec ();
+  F77_INT *sel = s.rwdata ();
 
   // FIXME: initialize eig_vec2 to zero; apparently dneupd can skip
   // the assignment to elements of Z that represent imaginary parts.
@@ -2804,7 +2804,7 @@
   //   [vecs, vals, f] = eigs (A, 1)
 
   Matrix eig_vec2 (n, k + 1, 0.0);
-  double *z = eig_vec2.fortran_vec ();
+  double *z = eig_vec2.rwdata ();
 
   OCTAVE_LOCAL_BUFFER (double, dr, k + 1);
   OCTAVE_LOCAL_BUFFER (double, di, k + 1);
@@ -2826,7 +2826,7 @@
     k = ip(4);
 
   eig_val.resize (k);
-  Complex *d = eig_val.fortran_vec ();
+  Complex *d = eig_val.rwdata ();
 
   if (info2 == 0)
     {
@@ -3038,7 +3038,7 @@
     }
 
   Array<F77_INT> ip (dim_vector (11, 1));
-  F77_INT *iparam = ip.fortran_vec ();
+  F77_INT *iparam = ip.rwdata ();
 
   ip(0) = 1; //ishift
   ip(1) = 0;   // ip(1) not referenced
@@ -3054,7 +3054,7 @@
   // ip(7) to ip(10) return values
 
   Array<F77_INT> iptr (dim_vector (14, 1));
-  F77_INT *ipntr = iptr.fortran_vec ();
+  F77_INT *ipntr = iptr.rwdata ();
 
   F77_INT ido = 0;
   int iter = 0;
@@ -3064,7 +3064,7 @@
   OCTAVE_LOCAL_BUFFER (Complex, workl, lwork);
   OCTAVE_LOCAL_BUFFER (Complex, workd, 3 * n);
   OCTAVE_LOCAL_BUFFER (double, rwork, p);
-  Complex *presid = cresid.fortran_vec ();
+  Complex *presid = cresid.rwdata ();
 
   do
     {
@@ -3147,13 +3147,13 @@
   // is just workspace for ARPACK, so use int type to
   // avoid problems.
   Array<F77_INT> s (dim_vector (p, 1));
-  F77_INT *sel = s.fortran_vec ();
+  F77_INT *sel = s.rwdata ();
 
   eig_vec.resize (n, k);
-  Complex *z = eig_vec.fortran_vec ();
+  Complex *z = eig_vec.rwdata ();
 
   eig_val.resize (k+1);
-  Complex *d = eig_val.fortran_vec ();
+  Complex *d = eig_val.rwdata ();
 
   OCTAVE_LOCAL_BUFFER (Complex, workev, 2 * p);
 
@@ -3317,7 +3317,7 @@
     bmat = 'G';
 
   Array<F77_INT> ip (dim_vector (11, 1));
-  F77_INT *iparam = ip.fortran_vec ();
+  F77_INT *iparam = ip.rwdata ();
 
   ip(0) = 1; //ishift
   ip(1) = 0;   // ip(1) not referenced
@@ -3333,7 +3333,7 @@
   // ip(7) to ip(10) return values
 
   Array<F77_INT> iptr (dim_vector (14, 1));
-  F77_INT *ipntr = iptr.fortran_vec ();
+  F77_INT *ipntr = iptr.rwdata ();
 
   F77_INT ido = 0;
   int iter = 0;
@@ -3352,7 +3352,7 @@
   OCTAVE_LOCAL_BUFFER (Complex, workl, lwork);
   OCTAVE_LOCAL_BUFFER (Complex, workd, 3 * n);
   OCTAVE_LOCAL_BUFFER (double, rwork, p);
-  Complex *presid = cresid.fortran_vec ();
+  Complex *presid = cresid.rwdata ();
 
   do
     {
@@ -3473,13 +3473,13 @@
   // is just workspace for ARPACK, so use int type to
   // avoid problems.
   Array<F77_INT> s (dim_vector (p, 1));
-  F77_INT *sel = s.fortran_vec ();
+  F77_INT *sel = s.rwdata ();
 
   eig_vec.resize (n, k);
-  Complex *z = eig_vec.fortran_vec ();
+  Complex *z = eig_vec.rwdata ();
 
   eig_val.resize (k+1);
-  Complex *d = eig_val.fortran_vec ();
+  Complex *d = eig_val.rwdata ();
 
   OCTAVE_LOCAL_BUFFER (Complex, workev, 2 * p);
 
@@ -3688,7 +3688,7 @@
     }
 
   Array<F77_INT> ip (dim_vector (11, 1));
-  F77_INT *iparam = ip.fortran_vec ();
+  F77_INT *iparam = ip.rwdata ();
 
   ip(0) = 1; //ishift
   ip(1) = 0;   // ip(1) not referenced
@@ -3704,7 +3704,7 @@
   // ip(7) to ip(10) return values
 
   Array<F77_INT> iptr (dim_vector (14, 1));
-  F77_INT *ipntr = iptr.fortran_vec ();
+  F77_INT *ipntr = iptr.rwdata ();
 
   F77_INT ido = 0;
   int iter = 0;
@@ -3714,7 +3714,7 @@
   OCTAVE_LOCAL_BUFFER (Complex, workl, lwork);
   OCTAVE_LOCAL_BUFFER (Complex, workd, 3 * n);
   OCTAVE_LOCAL_BUFFER (double, rwork, p);
-  Complex *presid = cresid.fortran_vec ();
+  Complex *presid = cresid.rwdata ();
 
   do
     {
@@ -3863,13 +3863,13 @@
   // is just workspace for ARPACK, so use int type to
   // avoid problems.
   Array<F77_INT> s (dim_vector (p, 1));
-  F77_INT *sel = s.fortran_vec ();
+  F77_INT *sel = s.rwdata ();
 
   eig_vec.resize (n, k);
-  Complex *z = eig_vec.fortran_vec ();
+  Complex *z = eig_vec.rwdata ();
 
   eig_val.resize (k+1);
-  Complex *d = eig_val.fortran_vec ();
+  Complex *d = eig_val.rwdata ();
 
   OCTAVE_LOCAL_BUFFER (Complex, workev, 2 * p);
 
--- a/liboctave/numeric/fEIG.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/fEIG.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -54,21 +54,21 @@
   F77_INT info = 0;
 
   FloatMatrix atmp = a;
-  float *tmp_data = atmp.fortran_vec ();
+  float *tmp_data = atmp.rwdata ();
 
   Array<float> wr (dim_vector (n, 1));
-  float *pwr = wr.fortran_vec ();
+  float *pwr = wr.rwdata ();
 
   Array<float> wi (dim_vector (n, 1));
-  float *pwi = wi.fortran_vec ();
+  float *pwi = wi.rwdata ();
 
   volatile F77_INT nvr = (calc_rev ? n : 0);
   FloatMatrix vr (nvr, nvr);
-  float *pvr = vr.fortran_vec ();
+  float *pvr = vr.rwdata ();
 
   volatile F77_INT nvl = (calc_lev ? n : 0);
   FloatMatrix vl (nvl, nvl);
-  float *pvl = vl.fortran_vec ();
+  float *pvl = vl.rwdata ();
 
   F77_INT lwork = -1;
   float dummy_work;
@@ -77,15 +77,15 @@
   F77_INT ihi;
 
   Array<float> scale (dim_vector (n, 1));
-  float *pscale = scale.fortran_vec ();
+  float *pscale = scale.rwdata ();
 
   float abnrm;
 
   Array<float> rconde (dim_vector (n, 1));
-  float *prconde = rconde.fortran_vec ();
+  float *prconde = rconde.rwdata ();
 
   Array<float> rcondv (dim_vector (n, 1));
-  float *prcondv = rcondv.fortran_vec ();
+  float *prcondv = rcondv.rwdata ();
 
   F77_INT dummy_iwork;
 
@@ -107,7 +107,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work);
   Array<float> work (dim_vector (lwork, 1));
-  float *pwork = work.fortran_vec ();
+  float *pwork = work.rwdata ();
 
   F77_XFCN (sgeevx, SGEEVX, (F77_CONST_CHAR_ARG2 (balance ? "B" : "N", 1),
                              F77_CONST_CHAR_ARG2 ("N", 1),
@@ -184,10 +184,10 @@
   F77_INT info = 0;
 
   FloatMatrix atmp = a;
-  float *tmp_data = atmp.fortran_vec ();
+  float *tmp_data = atmp.rwdata ();
 
   FloatColumnVector wr (n);
-  float *pwr = wr.fortran_vec ();
+  float *pwr = wr.rwdata ();
 
   F77_INT lwork = -1;
   float dummy_work;
@@ -203,7 +203,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work);
   Array<float> work (dim_vector (lwork, 1));
-  float *pwork = work.fortran_vec ();
+  float *pwork = work.rwdata ();
 
   F77_XFCN (ssyev, SSYEV, (F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
@@ -244,39 +244,39 @@
   F77_INT info = 0;
 
   FloatComplexMatrix atmp = a;
-  FloatComplex *tmp_data = atmp.fortran_vec ();
+  FloatComplex *tmp_data = atmp.rwdata ();
 
   FloatComplexColumnVector wr (n);
-  FloatComplex *pw = wr.fortran_vec ();
+  FloatComplex *pw = wr.rwdata ();
 
   F77_INT nvr = (calc_rev ? n : 0);
   FloatComplexMatrix vrtmp (nvr, nvr);
-  FloatComplex *pvr = vrtmp.fortran_vec ();
+  FloatComplex *pvr = vrtmp.rwdata ();
 
   F77_INT nvl = (calc_lev ? n : 0);
   FloatComplexMatrix vltmp (nvl, nvl);
-  FloatComplex *pvl = vltmp.fortran_vec ();
+  FloatComplex *pvl = vltmp.rwdata ();
 
   F77_INT lwork = -1;
   FloatComplex dummy_work;
 
   F77_INT lrwork = 2*n;
   Array<float> rwork (dim_vector (lrwork, 1));
-  float *prwork = rwork.fortran_vec ();
+  float *prwork = rwork.rwdata ();
 
   F77_INT ilo;
   F77_INT ihi;
 
   Array<float> scale (dim_vector (n, 1));
-  float *pscale = scale.fortran_vec ();
+  float *pscale = scale.rwdata ();
 
   float abnrm;
 
   Array<float> rconde (dim_vector (n, 1));
-  float *prconde = rconde.fortran_vec ();
+  float *prconde = rconde.rwdata ();
 
   Array<float> rcondv (dim_vector (n, 1));
-  float *prcondv = rcondv.fortran_vec ();
+  float *prcondv = rcondv.rwdata ();
 
   F77_XFCN (cgeevx, CGEEVX, (F77_CONST_CHAR_ARG2 (balance ? "B" : "N", 1),
                              F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
@@ -296,7 +296,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work.real ());
   Array<FloatComplex> work (dim_vector (lwork, 1));
-  FloatComplex *pwork = work.fortran_vec ();
+  FloatComplex *pwork = work.rwdata ();
 
   F77_XFCN (cgeevx, CGEEVX, (F77_CONST_CHAR_ARG2 (balance ? "B" : "N", 1),
                              F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
@@ -337,17 +337,17 @@
   F77_INT info = 0;
 
   FloatComplexMatrix atmp = a;
-  FloatComplex *tmp_data = atmp.fortran_vec ();
+  FloatComplex *tmp_data = atmp.rwdata ();
 
   FloatColumnVector wr (n);
-  float *pwr = wr.fortran_vec ();
+  float *pwr = wr.rwdata ();
 
   F77_INT lwork = -1;
   FloatComplex dummy_work;
 
   F77_INT lrwork = 3*n;
   Array<float> rwork (dim_vector (lrwork, 1));
-  float *prwork = rwork.fortran_vec ();
+  float *prwork = rwork.rwdata ();
 
   F77_XFCN (cheev, CHEEV, (F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
@@ -362,7 +362,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work.real ());
   Array<FloatComplex> work (dim_vector (lwork, 1));
-  FloatComplex *pwork = work.fortran_vec ();
+  FloatComplex *pwork = work.rwdata ();
 
   F77_XFCN (cheev, CHEEV, (F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
@@ -407,7 +407,7 @@
   F77_INT info = 0;
 
   FloatMatrix tmp = b;
-  float *tmp_data = tmp.fortran_vec ();
+  float *tmp_data = tmp.rwdata ();
   if (! force_qz)
     {
       F77_XFCN (spotrf, SPOTRF, (F77_CONST_CHAR_ARG2 ("L", 1),
@@ -420,27 +420,27 @@
     }
 
   FloatMatrix atmp = a;
-  float *atmp_data = atmp.fortran_vec ();
+  float *atmp_data = atmp.rwdata ();
 
   FloatMatrix btmp = b;
-  float *btmp_data = btmp.fortran_vec ();
+  float *btmp_data = btmp.rwdata ();
 
   Array<float> ar (dim_vector (n, 1));
-  float *par = ar.fortran_vec ();
+  float *par = ar.rwdata ();
 
   Array<float> ai (dim_vector (n, 1));
-  float *pai = ai.fortran_vec ();
+  float *pai = ai.rwdata ();
 
   Array<float> beta (dim_vector (n, 1));
-  float *pbeta = beta.fortran_vec ();
+  float *pbeta = beta.rwdata ();
 
   volatile F77_INT nvr = (calc_rev ? n : 0);
   FloatMatrix vr (nvr, nvr);
-  float *pvr = vr.fortran_vec ();
+  float *pvr = vr.rwdata ();
 
   volatile F77_INT nvl = (calc_lev ? n : 0);
   FloatMatrix vl (nvl, nvl);
-  float *pvl = vl.fortran_vec ();
+  float *pvl = vl.rwdata ();
 
   F77_INT lwork = -1;
   float dummy_work;
@@ -459,7 +459,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work);
   Array<float> work (dim_vector (lwork, 1));
-  float *pwork = work.fortran_vec ();
+  float *pwork = work.rwdata ();
 
   F77_XFCN (sggev, SGGEV, (F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
@@ -542,13 +542,13 @@
   F77_INT info = 0;
 
   FloatMatrix atmp = a;
-  float *atmp_data = atmp.fortran_vec ();
+  float *atmp_data = atmp.rwdata ();
 
   FloatMatrix btmp = b;
-  float *btmp_data = btmp.fortran_vec ();
+  float *btmp_data = btmp.rwdata ();
 
   FloatColumnVector wr (n);
-  float *pwr = wr.fortran_vec ();
+  float *pwr = wr.rwdata ();
 
   F77_INT lwork = -1;
   float dummy_work;
@@ -566,7 +566,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work);
   Array<float> work (dim_vector (lwork, 1));
-  float *pwork = work.fortran_vec ();
+  float *pwork = work.rwdata ();
 
   F77_XFCN (ssygv, SSYGV, (1, F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
@@ -612,7 +612,7 @@
   F77_INT info = 0;
 
   FloatComplexMatrix tmp = b;
-  FloatComplex *tmp_data = tmp.fortran_vec ();
+  FloatComplex *tmp_data = tmp.rwdata ();
 
   if (! force_qz)
     {
@@ -626,31 +626,31 @@
     }
 
   FloatComplexMatrix atmp = a;
-  FloatComplex *atmp_data = atmp.fortran_vec ();
+  FloatComplex *atmp_data = atmp.rwdata ();
 
   FloatComplexMatrix btmp = b;
-  FloatComplex *btmp_data = btmp.fortran_vec ();
+  FloatComplex *btmp_data = btmp.rwdata ();
 
   FloatComplexColumnVector alpha (n);
-  FloatComplex *palpha = alpha.fortran_vec ();
+  FloatComplex *palpha = alpha.rwdata ();
 
   FloatComplexColumnVector beta (n);
-  FloatComplex *pbeta = beta.fortran_vec ();
+  FloatComplex *pbeta = beta.rwdata ();
 
   F77_INT nvr = (calc_rev ? n : 0);
   FloatComplexMatrix vrtmp (nvr, nvr);
-  FloatComplex *pvr = vrtmp.fortran_vec ();
+  FloatComplex *pvr = vrtmp.rwdata ();
 
   F77_INT nvl = (calc_lev ? n : 0);
   FloatComplexMatrix vltmp (nvl, nvl);
-  FloatComplex *pvl = vltmp.fortran_vec ();
+  FloatComplex *pvl = vltmp.rwdata ();
 
   F77_INT lwork = -1;
   FloatComplex dummy_work;
 
   F77_INT lrwork = 8*n;
   Array<float> rwork (dim_vector (lrwork, 1));
-  float *prwork = rwork.fortran_vec ();
+  float *prwork = rwork.rwdata ();
 
   F77_XFCN (cggev, CGGEV, (F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
@@ -667,7 +667,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work.real ());
   Array<FloatComplex> work (dim_vector (lwork, 1));
-  FloatComplex *pwork = work.fortran_vec ();
+  FloatComplex *pwork = work.rwdata ();
 
   F77_XFCN (cggev, CGGEV, (F77_CONST_CHAR_ARG2 (calc_lev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
@@ -716,20 +716,20 @@
   F77_INT info = 0;
 
   FloatComplexMatrix atmp = a;
-  FloatComplex *atmp_data = atmp.fortran_vec ();
+  FloatComplex *atmp_data = atmp.rwdata ();
 
   FloatComplexMatrix btmp = b;
-  FloatComplex *btmp_data = btmp.fortran_vec ();
+  FloatComplex *btmp_data = btmp.rwdata ();
 
   FloatColumnVector wr (n);
-  float *pwr = wr.fortran_vec ();
+  float *pwr = wr.rwdata ();
 
   F77_INT lwork = -1;
   FloatComplex dummy_work;
 
   F77_INT lrwork = 3*n;
   Array<float> rwork (dim_vector (lrwork, 1));
-  float *prwork = rwork.fortran_vec ();
+  float *prwork = rwork.rwdata ();
 
   F77_XFCN (chegv, CHEGV, (1, F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
@@ -745,7 +745,7 @@
 
   lwork = static_cast<F77_INT> (dummy_work.real ());
   Array<FloatComplex> work (dim_vector (lwork, 1));
-  FloatComplex *pwork = work.fortran_vec ();
+  FloatComplex *pwork = work.rwdata ();
 
   F77_XFCN (chegv, CHEGV, (1, F77_CONST_CHAR_ARG2 (calc_rev ? "V" : "N", 1),
                            F77_CONST_CHAR_ARG2 ("U", 1),
--- a/liboctave/numeric/gepbalance.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/gepbalance.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -65,9 +65,9 @@
   OCTAVE_LOCAL_BUFFER (double, pwork, 6 * n);
 
   m_balanced_mat = a;
-  double *p_balanced_mat = m_balanced_mat.fortran_vec ();
+  double *p_balanced_mat = m_balanced_mat.rwdata ();
   m_balanced_mat2 = b;
-  double *p_balanced_mat2 = m_balanced_mat2.fortran_vec ();
+  double *p_balanced_mat2 = m_balanced_mat2.rwdata ();
 
   char job = balance_job[0];
 
@@ -85,8 +85,8 @@
       m_balancing_mat2.elem (i, i) = 1.0;
     }
 
-  double *p_balancing_mat = m_balancing_mat.fortran_vec ();
-  double *p_balancing_mat2 = m_balancing_mat2.fortran_vec ();
+  double *p_balancing_mat = m_balancing_mat.rwdata ();
+  double *p_balancing_mat2 = m_balancing_mat2.rwdata ();
 
   // first left
   F77_XFCN (dggbak, DGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -131,9 +131,9 @@
   OCTAVE_LOCAL_BUFFER (float, pwork, 6 * n);
 
   m_balanced_mat = a;
-  float *p_balanced_mat = m_balanced_mat.fortran_vec ();
+  float *p_balanced_mat = m_balanced_mat.rwdata ();
   m_balanced_mat2 = b;
-  float *p_balanced_mat2 = m_balanced_mat2.fortran_vec ();
+  float *p_balanced_mat2 = m_balanced_mat2.rwdata ();
 
   char job = balance_job[0];
 
@@ -151,8 +151,8 @@
       m_balancing_mat2.elem (i, i) = 1.0;
     }
 
-  float *p_balancing_mat = m_balancing_mat.fortran_vec ();
-  float *p_balancing_mat2 = m_balancing_mat2.fortran_vec ();
+  float *p_balancing_mat = m_balancing_mat.rwdata ();
+  float *p_balancing_mat2 = m_balancing_mat2.rwdata ();
 
   // first left
   F77_XFCN (sggbak, SGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -198,9 +198,9 @@
   OCTAVE_LOCAL_BUFFER (double, pwork, 6 * n);
 
   m_balanced_mat = a;
-  Complex *p_balanced_mat = m_balanced_mat.fortran_vec ();
+  Complex *p_balanced_mat = m_balanced_mat.rwdata ();
   m_balanced_mat2 = b;
-  Complex *p_balanced_mat2 = m_balanced_mat2.fortran_vec ();
+  Complex *p_balanced_mat2 = m_balanced_mat2.rwdata ();
 
   char job = balance_job[0];
 
@@ -219,8 +219,8 @@
       m_balancing_mat2.elem (i, i) = 1.0;
     }
 
-  double *p_balancing_mat = m_balancing_mat.fortran_vec ();
-  double *p_balancing_mat2 = m_balancing_mat2.fortran_vec ();
+  double *p_balancing_mat = m_balancing_mat.rwdata ();
+  double *p_balancing_mat2 = m_balancing_mat2.rwdata ();
 
   // first left
   F77_XFCN (dggbak, DGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
@@ -269,9 +269,9 @@
   OCTAVE_LOCAL_BUFFER (float, pwork, 6 * n);
 
   m_balanced_mat = a;
-  FloatComplex *p_balanced_mat = m_balanced_mat.fortran_vec ();
+  FloatComplex *p_balanced_mat = m_balanced_mat.rwdata ();
   m_balanced_mat2 = b;
-  FloatComplex *p_balanced_mat2 = m_balanced_mat2.fortran_vec ();
+  FloatComplex *p_balanced_mat2 = m_balanced_mat2.rwdata ();
 
   char job = balance_job[0];
 
@@ -290,8 +290,8 @@
       m_balancing_mat2.elem (i, i) = 1.0;
     }
 
-  float *p_balancing_mat = m_balancing_mat.fortran_vec ();
-  float *p_balancing_mat2 = m_balancing_mat2.fortran_vec ();
+  float *p_balancing_mat = m_balancing_mat.rwdata ();
+  float *p_balancing_mat2 = m_balancing_mat2.rwdata ();
 
   // first left
   F77_XFCN (sggbak, SGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
--- a/liboctave/numeric/gsvd.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/gsvd.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -253,7 +253,7 @@
              F77_CONST_CHAR_ARG2 (&jobv, 1),
              F77_CONST_CHAR_ARG2 (&jobq, 1),
              m, n, p, k, l, tmp_dataA, m1, tmp_dataB, p1,
-             alpha.fortran_vec (), beta.fortran_vec (),
+             alpha.rwdata (), beta.rwdata (),
              u, nrow_u, v, nrow_v, q, nrow_q,
              work, lwork, iwork, info
              F77_CHAR_ARG_LEN (1)
@@ -267,7 +267,7 @@
              F77_CONST_CHAR_ARG2 (&jobv, 1),
              F77_CONST_CHAR_ARG2 (&jobq, 1),
              m, n, p, k, l, tmp_dataA, m1, tmp_dataB, p1,
-             alpha.fortran_vec (), beta.fortran_vec (),
+             alpha.rwdata (), beta.rwdata (),
              u, nrow_u, v, nrow_v, q, nrow_q,
              work, iwork, info
              F77_CHAR_ARG_LEN (1)
@@ -297,7 +297,7 @@
              F77_CONST_CHAR_ARG2 (&jobv, 1),
              F77_CONST_CHAR_ARG2 (&jobq, 1),
              m, n, p, k, l, tmp_dataA, m1, tmp_dataB, p1,
-             alpha.fortran_vec (), beta.fortran_vec (),
+             alpha.rwdata (), beta.rwdata (),
              u, nrow_u, v, nrow_v, q, nrow_q,
              work, lwork, iwork, info
              F77_CHAR_ARG_LEN (1)
@@ -311,7 +311,7 @@
              F77_CONST_CHAR_ARG2 (&jobv, 1),
              F77_CONST_CHAR_ARG2 (&jobq, 1),
              m, n, p, k, l, tmp_dataA, m1, tmp_dataB, p1,
-             alpha.fortran_vec (), beta.fortran_vec (),
+             alpha.rwdata (), beta.rwdata (),
              u, nrow_u, v, nrow_v, q, nrow_q,
              work, iwork, info
              F77_CHAR_ARG_LEN (1)
@@ -345,7 +345,7 @@
              m, n, p, k, l,
              F77_DBLE_CMPLX_ARG (tmp_dataA), m1,
              F77_DBLE_CMPLX_ARG (tmp_dataB), p1,
-             alpha.fortran_vec (), beta.fortran_vec (),
+             alpha.rwdata (), beta.rwdata (),
              F77_DBLE_CMPLX_ARG (u), nrow_u,
              F77_DBLE_CMPLX_ARG (v), nrow_v,
              F77_DBLE_CMPLX_ARG (q), nrow_q,
@@ -364,7 +364,7 @@
              m, n, p, k, l,
              F77_DBLE_CMPLX_ARG (tmp_dataA), m1,
              F77_DBLE_CMPLX_ARG (tmp_dataB), p1,
-             alpha.fortran_vec (), beta.fortran_vec (),
+             alpha.rwdata (), beta.rwdata (),
              F77_DBLE_CMPLX_ARG (u), nrow_u,
              F77_DBLE_CMPLX_ARG (v), nrow_v,
              F77_DBLE_CMPLX_ARG (q), nrow_q,
@@ -404,7 +404,7 @@
              m, n, p, k, l,
              F77_CMPLX_ARG (tmp_dataA), m1,
              F77_CMPLX_ARG (tmp_dataB), p1,
-             alpha.fortran_vec (), beta.fortran_vec (),
+             alpha.rwdata (), beta.rwdata (),
              F77_CMPLX_ARG (u), nrow_u,
              F77_CMPLX_ARG (v), nrow_v,
              F77_CMPLX_ARG (q), nrow_q,
@@ -423,7 +423,7 @@
              m, n, p, k, l,
              F77_CMPLX_ARG (tmp_dataA), m1,
              F77_CMPLX_ARG (tmp_dataB), p1,
-             alpha.fortran_vec (), beta.fortran_vec (),
+             alpha.rwdata (), beta.rwdata (),
              F77_CMPLX_ARG (u), nrow_u,
              F77_CMPLX_ARG (v), nrow_v,
              F77_CMPLX_ARG (q), nrow_q,
@@ -482,10 +482,10 @@
   F77_INT p = to_f77_int (b.rows ());
 
   T atmp = a;
-  P *tmp_dataA = atmp.fortran_vec ();
+  P *tmp_dataA = atmp.rwdata ();
 
   T btmp = b;
-  P *tmp_dataB = btmp.fortran_vec ();
+  P *tmp_dataB = btmp.rwdata ();
 
   char jobu = 'U';
   char jobv = 'V';
@@ -523,17 +523,17 @@
   if (jobu != 'N')
     m_left_smA.resize (nrow_u, m);
 
-  P *u = m_left_smA.fortran_vec ();
+  P *u = m_left_smA.rwdata ();
 
   if (jobv != 'N')
     m_left_smB.resize (nrow_v, p);
 
-  P *v = m_left_smB.fortran_vec ();
+  P *v = m_left_smB.rwdata ();
 
   if (jobq != 'N')
     m_right_sm.resize (nrow_q, n);
 
-  P *q = m_right_sm.fortran_vec ();
+  P *q = m_right_sm.rwdata ();
 
   real_matrix alpha (n, 1);
   real_matrix beta (n, 1);
--- a/liboctave/numeric/hess.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/hess.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -60,26 +60,26 @@
   F77_INT ihi;
 
   m_hess_mat = a;
-  double *h = m_hess_mat.fortran_vec ();
+  double *h = m_hess_mat.rwdata ();
 
   Array<double> scale (dim_vector (n, 1));
-  double *pscale = scale.fortran_vec ();
+  double *pscale = scale.rwdata ();
 
   F77_XFCN (dgebal, DGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
                              n, h, n, ilo, ihi, pscale, info
                              F77_CHAR_ARG_LEN (1)));
 
   Array<double> tau (dim_vector (n-1, 1));
-  double *ptau = tau.fortran_vec ();
+  double *ptau = tau.rwdata ();
 
   Array<double> work (dim_vector (lwork, 1));
-  double *pwork = work.fortran_vec ();
+  double *pwork = work.rwdata ();
 
   F77_XFCN (dgehrd, DGEHRD, (n, ilo, ihi, h, n, ptau, pwork,
                              lwork, info));
 
   m_unitary_hess_mat = m_hess_mat;
-  double *z = m_unitary_hess_mat.fortran_vec ();
+  double *z = m_unitary_hess_mat.rwdata ();
 
   F77_XFCN (dorghr, DORGHR, (n, ilo, ihi, z, n, ptau, pwork,
                              lwork, info));
@@ -123,26 +123,26 @@
   F77_INT ihi;
 
   m_hess_mat = a;
-  float *h = m_hess_mat.fortran_vec ();
+  float *h = m_hess_mat.rwdata ();
 
   Array<float> scale (dim_vector (n, 1));
-  float *pscale = scale.fortran_vec ();
+  float *pscale = scale.rwdata ();
 
   F77_XFCN (sgebal, SGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
                              n, h, n, ilo, ihi, pscale, info
                              F77_CHAR_ARG_LEN (1)));
 
   Array<float> tau (dim_vector (n-1, 1));
-  float *ptau = tau.fortran_vec ();
+  float *ptau = tau.rwdata ();
 
   Array<float> work (dim_vector (lwork, 1));
-  float *pwork = work.fortran_vec ();
+  float *pwork = work.rwdata ();
 
   F77_XFCN (sgehrd, SGEHRD, (n, ilo, ihi, h, n, ptau, pwork,
                              lwork, info));
 
   m_unitary_hess_mat = m_hess_mat;
-  float *z = m_unitary_hess_mat.fortran_vec ();
+  float *z = m_unitary_hess_mat.rwdata ();
 
   F77_XFCN (sorghr, SORGHR, (n, ilo, ihi, z, n, ptau, pwork,
                              lwork, info));
@@ -186,26 +186,26 @@
   F77_INT ihi;
 
   m_hess_mat = a;
-  Complex *h = m_hess_mat.fortran_vec ();
+  Complex *h = m_hess_mat.rwdata ();
 
   Array<double> scale (dim_vector (n, 1));
-  double *pscale = scale.fortran_vec ();
+  double *pscale = scale.rwdata ();
 
   F77_XFCN (zgebal, ZGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
                              n, F77_DBLE_CMPLX_ARG (h), n, ilo, ihi, pscale, info
                              F77_CHAR_ARG_LEN (1)));
 
   Array<Complex> tau (dim_vector (n-1, 1));
-  Complex *ptau = tau.fortran_vec ();
+  Complex *ptau = tau.rwdata ();
 
   Array<Complex> work (dim_vector (lwork, 1));
-  Complex *pwork = work.fortran_vec ();
+  Complex *pwork = work.rwdata ();
 
   F77_XFCN (zgehrd, ZGEHRD, (n, ilo, ihi, F77_DBLE_CMPLX_ARG (h), n,
                              F77_DBLE_CMPLX_ARG (ptau), F77_DBLE_CMPLX_ARG (pwork), lwork, info));
 
   m_unitary_hess_mat = m_hess_mat;
-  Complex *z = m_unitary_hess_mat.fortran_vec ();
+  Complex *z = m_unitary_hess_mat.rwdata ();
 
   F77_XFCN (zunghr, ZUNGHR, (n, ilo, ihi, F77_DBLE_CMPLX_ARG (z), n,
                              F77_DBLE_CMPLX_ARG (ptau), F77_DBLE_CMPLX_ARG (pwork),
@@ -252,26 +252,26 @@
   F77_INT ihi;
 
   m_hess_mat = a;
-  FloatComplex *h = m_hess_mat.fortran_vec ();
+  FloatComplex *h = m_hess_mat.rwdata ();
 
   Array<float> scale (dim_vector (n, 1));
-  float *pscale = scale.fortran_vec ();
+  float *pscale = scale.rwdata ();
 
   F77_XFCN (cgebal, CGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
                              n, F77_CMPLX_ARG (h), n, ilo, ihi, pscale, info
                              F77_CHAR_ARG_LEN (1)));
 
   Array<FloatComplex> tau (dim_vector (n-1, 1));
-  FloatComplex *ptau = tau.fortran_vec ();
+  FloatComplex *ptau = tau.rwdata ();
 
   Array<FloatComplex> work (dim_vector (lwork, 1));
-  FloatComplex *pwork = work.fortran_vec ();
+  FloatComplex *pwork = work.rwdata ();
 
   F77_XFCN (cgehrd, CGEHRD, (n, ilo, ihi, F77_CMPLX_ARG (h), n,
                              F77_CMPLX_ARG (ptau), F77_CMPLX_ARG (pwork), lwork, info));
 
   m_unitary_hess_mat = m_hess_mat;
-  FloatComplex *z = m_unitary_hess_mat.fortran_vec ();
+  FloatComplex *z = m_unitary_hess_mat.rwdata ();
 
   F77_XFCN (cunghr, CUNGHR, (n, ilo, ihi, F77_CMPLX_ARG (z), n,
                              F77_CMPLX_ARG (ptau), F77_CMPLX_ARG (pwork),
--- a/liboctave/numeric/lu.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/lu.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -278,10 +278,10 @@
   F77_INT mn = (a_nr < a_nc ? a_nr : a_nc);
 
   m_ipvt.resize (dim_vector (mn, 1));
-  F77_INT *pipvt = m_ipvt.fortran_vec ();
+  F77_INT *pipvt = m_ipvt.rwdata ();
 
   m_a_fact = a;
-  double *tmp_data = m_a_fact.fortran_vec ();
+  double *tmp_data = m_a_fact.rwdata ();
 
   F77_INT info = 0;
 
@@ -315,8 +315,8 @@
 
   ColumnVector utmp = u;
   ColumnVector vtmp = v;
-  F77_XFCN (dlu1up, DLU1UP, (m, n, l.fortran_vec (), m, r.fortran_vec (),
-                             k, utmp.fortran_vec (), vtmp.fortran_vec ()));
+  F77_XFCN (dlu1up, DLU1UP, (m, n, l.rwdata (), m, r.rwdata (),
+                             k, utmp.rwdata (), vtmp.rwdata ()));
 }
 
 template <>
@@ -346,9 +346,9 @@
     {
       ColumnVector utmp = u.column (i);
       ColumnVector vtmp = v.column (i);
-      F77_XFCN (dlu1up, DLU1UP, (m, n, l.fortran_vec (),
-                                 m, r.fortran_vec (), k,
-                                 utmp.fortran_vec (), vtmp.fortran_vec ()));
+      F77_XFCN (dlu1up, DLU1UP, (m, n, l.rwdata (),
+                                 m, r.rwdata (), k,
+                                 utmp.rwdata (), vtmp.rwdata ()));
     }
 }
 
@@ -376,9 +376,9 @@
   ColumnVector vtmp = v;
   OCTAVE_LOCAL_BUFFER (double, w, m);
   for (F77_INT i = 0; i < m; i++) m_ipvt(i) += 1; // increment
-  F77_XFCN (dlup1up, DLUP1UP, (m, n, l.fortran_vec (),
-                               m, r.fortran_vec (), k,
-                               m_ipvt.fortran_vec (),
+  F77_XFCN (dlup1up, DLUP1UP, (m, n, l.rwdata (),
+                               m, r.rwdata (), k,
+                               m_ipvt.rwdata (),
                                utmp.data (), vtmp.data (), w));
   for (F77_INT i = 0; i < m; i++) m_ipvt(i) -= 1; // decrement
 }
@@ -412,9 +412,9 @@
     {
       ColumnVector utmp = u.column (i);
       ColumnVector vtmp = v.column (i);
-      F77_XFCN (dlup1up, DLUP1UP, (m, n, l.fortran_vec (),
-                                   m, r.fortran_vec (), k,
-                                   m_ipvt.fortran_vec (),
+      F77_XFCN (dlup1up, DLUP1UP, (m, n, l.rwdata (),
+                                   m, r.rwdata (), k,
+                                   m_ipvt.rwdata (),
                                    utmp.data (), vtmp.data (), w));
     }
   for (F77_INT i = 0; i < m; i++) m_ipvt(i) -= 1; // decrement
@@ -431,10 +431,10 @@
   F77_INT mn = (a_nr < a_nc ? a_nr : a_nc);
 
   m_ipvt.resize (dim_vector (mn, 1));
-  F77_INT *pipvt = m_ipvt.fortran_vec ();
+  F77_INT *pipvt = m_ipvt.rwdata ();
 
   m_a_fact = a;
-  float *tmp_data = m_a_fact.fortran_vec ();
+  float *tmp_data = m_a_fact.rwdata ();
 
   F77_INT info = 0;
 
@@ -469,9 +469,9 @@
 
   FloatColumnVector utmp = u;
   FloatColumnVector vtmp = v;
-  F77_XFCN (slu1up, SLU1UP, (m, n, l.fortran_vec (),
-                             m, r.fortran_vec (), k,
-                             utmp.fortran_vec (), vtmp.fortran_vec ()));
+  F77_XFCN (slu1up, SLU1UP, (m, n, l.rwdata (),
+                             m, r.rwdata (), k,
+                             utmp.rwdata (), vtmp.rwdata ()));
 }
 
 template <>
@@ -501,9 +501,9 @@
     {
       FloatColumnVector utmp = u.column (i);
       FloatColumnVector vtmp = v.column (i);
-      F77_XFCN (slu1up, SLU1UP, (m, n, l.fortran_vec (),
-                                 m, r.fortran_vec (), k,
-                                 utmp.fortran_vec (), vtmp.fortran_vec ()));
+      F77_XFCN (slu1up, SLU1UP, (m, n, l.rwdata (),
+                                 m, r.rwdata (), k,
+                                 utmp.rwdata (), vtmp.rwdata ()));
     }
 }
 
@@ -532,9 +532,9 @@
   FloatColumnVector vtmp = v;
   OCTAVE_LOCAL_BUFFER (float, w, m);
   for (F77_INT i = 0; i < m; i++) m_ipvt(i) += 1; // increment
-  F77_XFCN (slup1up, SLUP1UP, (m, n, l.fortran_vec (),
-                               m, r.fortran_vec (), k,
-                               m_ipvt.fortran_vec (),
+  F77_XFCN (slup1up, SLUP1UP, (m, n, l.rwdata (),
+                               m, r.rwdata (), k,
+                               m_ipvt.rwdata (),
                                utmp.data (), vtmp.data (), w));
   for (F77_INT i = 0; i < m; i++) m_ipvt(i) -= 1; // decrement
 }
@@ -568,9 +568,9 @@
     {
       FloatColumnVector utmp = u.column (i);
       FloatColumnVector vtmp = v.column (i);
-      F77_XFCN (slup1up, SLUP1UP, (m, n, l.fortran_vec (),
-                                   m, r.fortran_vec (), k,
-                                   m_ipvt.fortran_vec (),
+      F77_XFCN (slup1up, SLUP1UP, (m, n, l.rwdata (),
+                                   m, r.rwdata (), k,
+                                   m_ipvt.rwdata (),
                                    utmp.data (), vtmp.data (), w));
     }
   for (F77_INT i = 0; i < m; i++) m_ipvt(i) -= 1; // decrement
@@ -587,10 +587,10 @@
   F77_INT mn = (a_nr < a_nc ? a_nr : a_nc);
 
   m_ipvt.resize (dim_vector (mn, 1));
-  F77_INT *pipvt = m_ipvt.fortran_vec ();
+  F77_INT *pipvt = m_ipvt.rwdata ();
 
   m_a_fact = a;
-  Complex *tmp_data = m_a_fact.fortran_vec ();
+  Complex *tmp_data = m_a_fact.rwdata ();
 
   F77_INT info = 0;
 
@@ -626,10 +626,10 @@
 
   ComplexColumnVector utmp = u;
   ComplexColumnVector vtmp = v;
-  F77_XFCN (zlu1up, ZLU1UP, (m, n, F77_DBLE_CMPLX_ARG (l.fortran_vec ()), m,
-                             F77_DBLE_CMPLX_ARG (r.fortran_vec ()), k,
-                             F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()),
-                             F77_DBLE_CMPLX_ARG (vtmp.fortran_vec ())));
+  F77_XFCN (zlu1up, ZLU1UP, (m, n, F77_DBLE_CMPLX_ARG (l.rwdata ()), m,
+                             F77_DBLE_CMPLX_ARG (r.rwdata ()), k,
+                             F77_DBLE_CMPLX_ARG (utmp.rwdata ()),
+                             F77_DBLE_CMPLX_ARG (vtmp.rwdata ())));
 }
 
 template <>
@@ -660,11 +660,11 @@
       ComplexColumnVector utmp = u.column (i);
       ComplexColumnVector vtmp = v.column (i);
       F77_XFCN (zlu1up, ZLU1UP, (m, n,
-                                 F77_DBLE_CMPLX_ARG (l.fortran_vec ()),
-                                 m, F77_DBLE_CMPLX_ARG (r.fortran_vec ()),
+                                 F77_DBLE_CMPLX_ARG (l.rwdata ()),
+                                 m, F77_DBLE_CMPLX_ARG (r.rwdata ()),
                                  k,
-                                 F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()),
-                                 F77_DBLE_CMPLX_ARG (vtmp.fortran_vec ())));
+                                 F77_DBLE_CMPLX_ARG (utmp.rwdata ()),
+                                 F77_DBLE_CMPLX_ARG (vtmp.rwdata ())));
     }
 }
 
@@ -693,9 +693,9 @@
   ComplexColumnVector vtmp = v;
   OCTAVE_LOCAL_BUFFER (Complex, w, m);
   for (F77_INT i = 0; i < m; i++) m_ipvt(i) += 1; // increment
-  F77_XFCN (zlup1up, ZLUP1UP, (m, n, F77_DBLE_CMPLX_ARG (l.fortran_vec ()),
-                               m, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), k,
-                               m_ipvt.fortran_vec (),
+  F77_XFCN (zlup1up, ZLUP1UP, (m, n, F77_DBLE_CMPLX_ARG (l.rwdata ()),
+                               m, F77_DBLE_CMPLX_ARG (r.rwdata ()), k,
+                               m_ipvt.rwdata (),
                                F77_CONST_DBLE_CMPLX_ARG (utmp.data ()),
                                F77_CONST_DBLE_CMPLX_ARG (vtmp.data ()),
                                F77_DBLE_CMPLX_ARG (w)));
@@ -733,10 +733,10 @@
       ComplexColumnVector utmp = u.column (i);
       ComplexColumnVector vtmp = v.column (i);
       F77_XFCN (zlup1up, ZLUP1UP, (m, n,
-                                   F77_DBLE_CMPLX_ARG (l.fortran_vec ()),
+                                   F77_DBLE_CMPLX_ARG (l.rwdata ()),
                                    m,
-                                   F77_DBLE_CMPLX_ARG (r.fortran_vec ()),
-                                   k, m_ipvt.fortran_vec (),
+                                   F77_DBLE_CMPLX_ARG (r.rwdata ()),
+                                   k, m_ipvt.rwdata (),
                                    F77_CONST_DBLE_CMPLX_ARG (utmp.data ()),
                                    F77_CONST_DBLE_CMPLX_ARG (vtmp.data ()),
                                    F77_DBLE_CMPLX_ARG (w)));
@@ -755,10 +755,10 @@
   F77_INT mn = (a_nr < a_nc ? a_nr : a_nc);
 
   m_ipvt.resize (dim_vector (mn, 1));
-  F77_INT *pipvt = m_ipvt.fortran_vec ();
+  F77_INT *pipvt = m_ipvt.rwdata ();
 
   m_a_fact = a;
-  FloatComplex *tmp_data = m_a_fact.fortran_vec ();
+  FloatComplex *tmp_data = m_a_fact.rwdata ();
 
   F77_INT info = 0;
 
@@ -794,10 +794,10 @@
 
   FloatComplexColumnVector utmp = u;
   FloatComplexColumnVector vtmp = v;
-  F77_XFCN (clu1up, CLU1UP, (m, n, F77_CMPLX_ARG (l.fortran_vec ()), m,
-                             F77_CMPLX_ARG (r.fortran_vec ()), k,
-                             F77_CMPLX_ARG (utmp.fortran_vec ()),
-                             F77_CMPLX_ARG (vtmp.fortran_vec ())));
+  F77_XFCN (clu1up, CLU1UP, (m, n, F77_CMPLX_ARG (l.rwdata ()), m,
+                             F77_CMPLX_ARG (r.rwdata ()), k,
+                             F77_CMPLX_ARG (utmp.rwdata ()),
+                             F77_CMPLX_ARG (vtmp.rwdata ())));
 }
 
 template <>
@@ -828,10 +828,10 @@
     {
       FloatComplexColumnVector utmp = u.column (i);
       FloatComplexColumnVector vtmp = v.column (i);
-      F77_XFCN (clu1up, CLU1UP, (m, n, F77_CMPLX_ARG (l.fortran_vec ()),
-                                 m, F77_CMPLX_ARG (r.fortran_vec ()), k,
-                                 F77_CMPLX_ARG (utmp.fortran_vec ()),
-                                 F77_CMPLX_ARG (vtmp.fortran_vec ())));
+      F77_XFCN (clu1up, CLU1UP, (m, n, F77_CMPLX_ARG (l.rwdata ()),
+                                 m, F77_CMPLX_ARG (r.rwdata ()), k,
+                                 F77_CMPLX_ARG (utmp.rwdata ()),
+                                 F77_CMPLX_ARG (vtmp.rwdata ())));
     }
 }
 
@@ -860,9 +860,9 @@
   FloatComplexColumnVector vtmp = v;
   OCTAVE_LOCAL_BUFFER (FloatComplex, w, m);
   for (F77_INT i = 0; i < m; i++) m_ipvt(i) += 1; // increment
-  F77_XFCN (clup1up, CLUP1UP, (m, n, F77_CMPLX_ARG (l.fortran_vec ()),
-                               m, F77_CMPLX_ARG (r.fortran_vec ()), k,
-                               m_ipvt.fortran_vec (),
+  F77_XFCN (clup1up, CLUP1UP, (m, n, F77_CMPLX_ARG (l.rwdata ()),
+                               m, F77_CMPLX_ARG (r.rwdata ()), k,
+                               m_ipvt.rwdata (),
                                F77_CONST_CMPLX_ARG (utmp.data ()),
                                F77_CONST_CMPLX_ARG (vtmp.data ()),
                                F77_CMPLX_ARG (w)));
@@ -899,9 +899,9 @@
     {
       FloatComplexColumnVector utmp = u.column (i);
       FloatComplexColumnVector vtmp = v.column (i);
-      F77_XFCN (clup1up, CLUP1UP, (m, n, F77_CMPLX_ARG (l.fortran_vec ()),
-                                   m, F77_CMPLX_ARG (r.fortran_vec ()), k,
-                                   m_ipvt.fortran_vec (),
+      F77_XFCN (clup1up, CLUP1UP, (m, n, F77_CMPLX_ARG (l.rwdata ()),
+                                   m, F77_CMPLX_ARG (r.rwdata ()), k,
+                                   m_ipvt.rwdata (),
                                    F77_CONST_CMPLX_ARG (utmp.data ()),
                                    F77_CONST_CMPLX_ARG (vtmp.data ()),
                                    F77_CMPLX_ARG (w)));
--- a/liboctave/numeric/oct-convn.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/oct-convn.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -180,7 +180,7 @@
 
   convolve_nd<T, R> (a.data (), adims, adims.cumulative (),
                      b.data (), bdims, bdims.cumulative (),
-                     c.fortran_vec (), cdims.cumulative (),
+                     c.rwdata (), cdims.cumulative (),
                      nd, ct == convn_valid);
 
   if (ct == convn_same)
--- a/liboctave/numeric/oct-rand.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/oct-rand.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -523,7 +523,7 @@
     {
       retval.clear (n, 1);
 
-      fill (retval.numel (), retval.fortran_vec (), a);
+      fill (retval.numel (), retval.rwdata (), a);
     }
   else if (n < 0)
     (*current_liboctave_error_handler) ("rand: invalid negative argument");
@@ -545,7 +545,7 @@
     {
       retval.clear (dims);
 
-      fill (retval.numel (), retval.fortran_vec (), a);
+      fill (retval.numel (), retval.rwdata (), a);
     }
 
   return retval;
@@ -560,7 +560,7 @@
     {
       retval.clear (dims);
 
-      fill (retval.numel (), retval.fortran_vec (), a);
+      fill (retval.numel (), retval.rwdata (), a);
     }
 
   return retval;
@@ -627,7 +627,7 @@
 {
   uint32NDArray s (dim_vector (MT_N + 1, 1));
 
-  get_mersenne_twister_state (reinterpret_cast<uint32_t *> (s.fortran_vec ()));
+  get_mersenne_twister_state (reinterpret_cast<uint32_t *> (s.rwdata ()));
 
   return s;
 }
--- a/liboctave/numeric/qr.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/qr.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -435,14 +435,14 @@
           F77_INT k = to_f77_int (m_q.cols ());
           // workspace query.
           double rlwork;
-          F77_XFCN (dorgqr, DORGQR, (m, k, min_mn, m_q.fortran_vec (), m,
+          F77_XFCN (dorgqr, DORGQR, (m, k, min_mn, m_q.rwdata (), m,
                                      tau, &rlwork, -1, info));
 
           // allocate buffer and do the job.
           F77_INT lwork = static_cast<F77_INT> (rlwork);
           lwork = std::max (lwork, static_cast<F77_INT> (1));
           OCTAVE_LOCAL_BUFFER (double, work, lwork);
-          F77_XFCN (dorgqr, DORGQR, (m, k, min_mn, m_q.fortran_vec (), m,
+          F77_XFCN (dorgqr, DORGQR, (m, k, min_mn, m_q.rwdata (), m,
                                      tau, work, lwork, info));
         }
     }
@@ -468,14 +468,14 @@
     {
       // workspace query.
       double rlwork;
-      F77_XFCN (dgeqrf, DGEQRF, (m, n, afact.fortran_vec (), m, tau,
+      F77_XFCN (dgeqrf, DGEQRF, (m, n, afact.rwdata (), m, tau,
                                  &rlwork, -1, info));
 
       // allocate buffer and do the job.
       F77_INT lwork = static_cast<F77_INT> (rlwork);
       lwork = std::max (lwork, static_cast<F77_INT> (1));
       OCTAVE_LOCAL_BUFFER (double, work, lwork);
-      F77_XFCN (dgeqrf, DGEQRF, (m, n, afact.fortran_vec (), m, tau,
+      F77_XFCN (dgeqrf, DGEQRF, (m, n, afact.rwdata (), m, tau,
                                  work, lwork, info));
     }
 
@@ -501,9 +501,9 @@
   ColumnVector utmp = u;
   ColumnVector vtmp = v;
   OCTAVE_LOCAL_BUFFER (double, w, 2*k);
-  F77_XFCN (dqr1up, DQR1UP, (m, n, k, m_q.fortran_vec (), m,
-                             m_r.fortran_vec (), k, utmp.fortran_vec (),
-                             vtmp.fortran_vec (), w));
+  F77_XFCN (dqr1up, DQR1UP, (m, n, k, m_q.rwdata (), m,
+                             m_r.rwdata (), k, utmp.rwdata (),
+                             vtmp.rwdata (), w));
 }
 
 template <>
@@ -528,9 +528,9 @@
     {
       ColumnVector utmp = u.column (i);
       ColumnVector vtmp = v.column (i);
-      F77_XFCN (dqr1up, DQR1UP, (m, n, k, m_q.fortran_vec (), m,
-                                 m_r.fortran_vec (), k, utmp.fortran_vec (),
-                                 vtmp.fortran_vec (), w));
+      F77_XFCN (dqr1up, DQR1UP, (m, n, k, m_q.rwdata (), m,
+                                 m_r.rwdata (), k, utmp.rwdata (),
+                                 vtmp.rwdata (), w));
     }
 }
 
@@ -565,8 +565,8 @@
 
   ColumnVector utmp = u;
   OCTAVE_LOCAL_BUFFER (double, w, k);
-  F77_XFCN (dqrinc, DQRINC, (m, n, k, m_q.fortran_vec (), ldq,
-                             m_r.fortran_vec (), ldr, j + 1,
+  F77_XFCN (dqrinc, DQRINC, (m, n, k, m_q.rwdata (), ldq,
+                             m_r.rwdata (), ldr, j + 1,
                              utmp.data (), w));
 }
 
@@ -621,8 +621,8 @@
           ColumnVector utmp = u.column (jsi(i));
           F77_INT js_elt = to_f77_int (js(ii));
           F77_XFCN (dqrinc, DQRINC, (m, n + ii, std::min (kmax, k + ii),
-                                     m_q.fortran_vec (), ldq,
-                                     m_r.fortran_vec (), ldr, js_elt + 1,
+                                     m_q.rwdata (), ldq,
+                                     m_r.rwdata (), ldr, js_elt + 1,
                                      utmp.data (), w));
         }
     }
@@ -645,8 +645,8 @@
   F77_INT ldr = to_f77_int (m_r.rows ());
 
   OCTAVE_LOCAL_BUFFER (double, w, k);
-  F77_XFCN (dqrdec, DQRDEC, (m, n, k, m_q.fortran_vec (), ldq,
-                             m_r.fortran_vec (), ldr, j + 1, w));
+  F77_XFCN (dqrdec, DQRDEC, (m, n, k, m_q.rwdata (), ldq,
+                             m_r.rwdata (), ldr, j + 1, w));
 
   if (k < m)
     {
@@ -692,8 +692,8 @@
           F77_INT ii = i;
           F77_INT js_elt = to_f77_int (js(ii));
           F77_XFCN (dqrdec, DQRDEC, (m, n - ii, (k == m ? k : k - ii),
-                                     m_q.fortran_vec (), ldq,
-                                     m_r.fortran_vec (), ldr,
+                                     m_q.rwdata (), ldq,
+                                     m_r.rwdata (), ldr,
                                      js_elt + 1, w));
         }
 
@@ -733,9 +733,9 @@
 
   RowVector utmp = u;
   OCTAVE_LOCAL_BUFFER (double, w, k);
-  F77_XFCN (dqrinr, DQRINR, (m, n, m_q.fortran_vec (), ldq,
-                             m_r.fortran_vec (), ldr,
-                             j + 1, utmp.fortran_vec (), w));
+  F77_XFCN (dqrinr, DQRINR, (m, n, m_q.rwdata (), ldq,
+                             m_r.rwdata (), ldr,
+                             j + 1, utmp.rwdata (), w));
 
 }
 
@@ -758,8 +758,8 @@
   F77_INT ldr = to_f77_int (m_r.rows ());
 
   OCTAVE_LOCAL_BUFFER (double, w, 2*m);
-  F77_XFCN (dqrder, DQRDER, (m, n, m_q.fortran_vec (), ldq,
-                             m_r.fortran_vec (), ldr, j + 1, w));
+  F77_XFCN (dqrder, DQRDER, (m, n, m_q.rwdata (), ldq,
+                             m_r.rwdata (), ldr, j + 1, w));
 
   m_q.resize (m - 1, m - 1);
   m_r.resize (m - 1, n);
@@ -784,8 +784,8 @@
 
   OCTAVE_LOCAL_BUFFER (double, w, 2*k);
   F77_XFCN (dqrshc, DQRSHC, (m, n, k,
-                             m_q.fortran_vec (), ldq,
-                             m_r.fortran_vec (), ldr,
+                             m_q.rwdata (), ldq,
+                             m_r.rwdata (), ldr,
                              i + 1, j + 1, w));
 }
 
@@ -849,14 +849,14 @@
           F77_INT k = to_f77_int (m_q.cols ());
           // workspace query.
           float rlwork;
-          F77_XFCN (sorgqr, SORGQR, (m, k, min_mn, m_q.fortran_vec (), m,
+          F77_XFCN (sorgqr, SORGQR, (m, k, min_mn, m_q.rwdata (), m,
                                      tau, &rlwork, -1, info));
 
           // allocate buffer and do the job.
           F77_INT lwork = static_cast<F77_INT> (rlwork);
           lwork = std::max (lwork, static_cast<F77_INT> (1));
           OCTAVE_LOCAL_BUFFER (float, work, lwork);
-          F77_XFCN (sorgqr, SORGQR, (m, k, min_mn, m_q.fortran_vec (), m,
+          F77_XFCN (sorgqr, SORGQR, (m, k, min_mn, m_q.rwdata (), m,
                                      tau, work, lwork, info));
         }
     }
@@ -882,14 +882,14 @@
     {
       // workspace query.
       float rlwork;
-      F77_XFCN (sgeqrf, SGEQRF, (m, n, afact.fortran_vec (), m, tau,
+      F77_XFCN (sgeqrf, SGEQRF, (m, n, afact.rwdata (), m, tau,
                                  &rlwork, -1, info));
 
       // allocate buffer and do the job.
       F77_INT lwork = static_cast<F77_INT> (rlwork);
       lwork = std::max (lwork, static_cast<F77_INT> (1));
       OCTAVE_LOCAL_BUFFER (float, work, lwork);
-      F77_XFCN (sgeqrf, SGEQRF, (m, n, afact.fortran_vec (), m, tau,
+      F77_XFCN (sgeqrf, SGEQRF, (m, n, afact.rwdata (), m, tau,
                                  work, lwork, info));
     }
 
@@ -915,9 +915,9 @@
   FloatColumnVector utmp = u;
   FloatColumnVector vtmp = v;
   OCTAVE_LOCAL_BUFFER (float, w, 2*k);
-  F77_XFCN (sqr1up, SQR1UP, (m, n, k, m_q.fortran_vec (), m,
-                             m_r.fortran_vec (), k, utmp.fortran_vec (),
-                             vtmp.fortran_vec (), w));
+  F77_XFCN (sqr1up, SQR1UP, (m, n, k, m_q.rwdata (), m,
+                             m_r.rwdata (), k, utmp.rwdata (),
+                             vtmp.rwdata (), w));
 }
 
 template <>
@@ -942,9 +942,9 @@
     {
       FloatColumnVector utmp = u.column (i);
       FloatColumnVector vtmp = v.column (i);
-      F77_XFCN (sqr1up, SQR1UP, (m, n, k, m_q.fortran_vec (), m,
-                                 m_r.fortran_vec (), k, utmp.fortran_vec (),
-                                 vtmp.fortran_vec (), w));
+      F77_XFCN (sqr1up, SQR1UP, (m, n, k, m_q.rwdata (), m,
+                                 m_r.rwdata (), k, utmp.rwdata (),
+                                 vtmp.rwdata (), w));
     }
 }
 
@@ -980,8 +980,8 @@
 
   FloatColumnVector utmp = u;
   OCTAVE_LOCAL_BUFFER (float, w, k);
-  F77_XFCN (sqrinc, SQRINC, (m, n, k, m_q.fortran_vec (), ldq,
-                             m_r.fortran_vec (), ldr, j + 1,
+  F77_XFCN (sqrinc, SQRINC, (m, n, k, m_q.rwdata (), ldq,
+                             m_r.rwdata (), ldr, j + 1,
                              utmp.data (), w));
 }
 
@@ -1037,8 +1037,8 @@
           FloatColumnVector utmp = u.column (jsi(i));
           F77_INT js_elt = to_f77_int (js(ii));
           F77_XFCN (sqrinc, SQRINC, (m, n + ii, std::min (kmax, k + ii),
-                                     m_q.fortran_vec (), ldq,
-                                     m_r.fortran_vec (), ldr, js_elt + 1,
+                                     m_q.rwdata (), ldq,
+                                     m_r.rwdata (), ldr, js_elt + 1,
                                      utmp.data (), w));
         }
     }
@@ -1061,8 +1061,8 @@
   F77_INT ldr = to_f77_int (m_r.rows ());
 
   OCTAVE_LOCAL_BUFFER (float, w, k);
-  F77_XFCN (sqrdec, SQRDEC, (m, n, k, m_q.fortran_vec (), ldq,
-                             m_r.fortran_vec (), ldr, j + 1, w));
+  F77_XFCN (sqrdec, SQRDEC, (m, n, k, m_q.rwdata (), ldq,
+                             m_r.rwdata (), ldr, j + 1, w));
 
   if (k < m)
     {
@@ -1108,8 +1108,8 @@
           F77_INT ii = i;
           F77_INT js_elt = to_f77_int (js(ii));
           F77_XFCN (sqrdec, SQRDEC, (m, n - ii, (k == m ? k : k - ii),
-                                     m_q.fortran_vec (), ldq,
-                                     m_r.fortran_vec (), ldr,
+                                     m_q.rwdata (), ldq,
+                                     m_r.rwdata (), ldr,
                                      js_elt + 1, w));
         }
 
@@ -1150,9 +1150,9 @@
 
   FloatRowVector utmp = u;
   OCTAVE_LOCAL_BUFFER (float, w, k);
-  F77_XFCN (sqrinr, SQRINR, (m, n, m_q.fortran_vec (), ldq,
-                             m_r.fortran_vec (), ldr,
-                             j + 1, utmp.fortran_vec (), w));
+  F77_XFCN (sqrinr, SQRINR, (m, n, m_q.rwdata (), ldq,
+                             m_r.rwdata (), ldr,
+                             j + 1, utmp.rwdata (), w));
 
 }
 
@@ -1175,8 +1175,8 @@
   F77_INT ldr = to_f77_int (m_r.rows ());
 
   OCTAVE_LOCAL_BUFFER (float, w, 2*m);
-  F77_XFCN (sqrder, SQRDER, (m, n, m_q.fortran_vec (), ldq,
-                             m_r.fortran_vec (), ldr, j + 1,
+  F77_XFCN (sqrder, SQRDER, (m, n, m_q.rwdata (), ldq,
+                             m_r.rwdata (), ldr, j + 1,
                              w));
 
   m_q.resize (m - 1, m - 1);
@@ -1202,8 +1202,8 @@
 
   OCTAVE_LOCAL_BUFFER (float, w, 2*k);
   F77_XFCN (sqrshc, SQRSHC, (m, n, k,
-                             m_q.fortran_vec (), ldq,
-                             m_r.fortran_vec (), ldr,
+                             m_q.rwdata (), ldq,
+                             m_r.rwdata (), ldr,
                              i + 1, j + 1, w));
 }
 
@@ -1268,7 +1268,7 @@
           // workspace query.
           Complex clwork;
           F77_XFCN (zungqr, ZUNGQR, (m, k, min_mn,
-                                     F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()),
+                                     F77_DBLE_CMPLX_ARG (m_q.rwdata ()),
                                      m, F77_DBLE_CMPLX_ARG (tau),
                                      F77_DBLE_CMPLX_ARG (&clwork), -1,
                                      info));
@@ -1278,7 +1278,7 @@
           lwork = std::max (lwork, static_cast<F77_INT> (1));
           OCTAVE_LOCAL_BUFFER (Complex, work, lwork);
           F77_XFCN (zungqr, ZUNGQR, (m, k, min_mn,
-                                     F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()),
+                                     F77_DBLE_CMPLX_ARG (m_q.rwdata ()),
                                      m, F77_DBLE_CMPLX_ARG (tau),
                                      F77_DBLE_CMPLX_ARG (work), lwork,
                                      info));
@@ -1307,7 +1307,7 @@
       // workspace query.
       Complex clwork;
       F77_XFCN (zgeqrf, ZGEQRF, (m, n,
-                                 F77_DBLE_CMPLX_ARG (afact.fortran_vec ()),
+                                 F77_DBLE_CMPLX_ARG (afact.rwdata ()),
                                  m, F77_DBLE_CMPLX_ARG (tau),
                                  F77_DBLE_CMPLX_ARG (&clwork), -1, info));
 
@@ -1316,7 +1316,7 @@
       lwork = std::max (lwork, static_cast<F77_INT> (1));
       OCTAVE_LOCAL_BUFFER (Complex, work, lwork);
       F77_XFCN (zgeqrf, ZGEQRF, (m, n,
-                                 F77_DBLE_CMPLX_ARG (afact.fortran_vec ()),
+                                 F77_DBLE_CMPLX_ARG (afact.rwdata ()),
                                  m, F77_DBLE_CMPLX_ARG (tau),
                                  F77_DBLE_CMPLX_ARG (work), lwork, info));
     }
@@ -1345,10 +1345,10 @@
   ComplexColumnVector vtmp = v;
   OCTAVE_LOCAL_BUFFER (Complex, w, k);
   OCTAVE_LOCAL_BUFFER (double, rw, k);
-  F77_XFCN (zqr1up, ZQR1UP, (m, n, k, F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()),
-                             m, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), k,
-                             F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()),
-                             F77_DBLE_CMPLX_ARG (vtmp.fortran_vec ()),
+  F77_XFCN (zqr1up, ZQR1UP, (m, n, k, F77_DBLE_CMPLX_ARG (m_q.rwdata ()),
+                             m, F77_DBLE_CMPLX_ARG (m_r.rwdata ()), k,
+                             F77_DBLE_CMPLX_ARG (utmp.rwdata ()),
+                             F77_DBLE_CMPLX_ARG (vtmp.rwdata ()),
                              F77_DBLE_CMPLX_ARG (w), rw));
 }
 
@@ -1376,10 +1376,10 @@
       ComplexColumnVector utmp = u.column (i);
       ComplexColumnVector vtmp = v.column (i);
       F77_XFCN (zqr1up, ZQR1UP, (m, n, k,
-                                 F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()),
-                                 m, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), k,
-                                 F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()),
-                                 F77_DBLE_CMPLX_ARG (vtmp.fortran_vec ()),
+                                 F77_DBLE_CMPLX_ARG (m_q.rwdata ()),
+                                 m, F77_DBLE_CMPLX_ARG (m_r.rwdata ()), k,
+                                 F77_DBLE_CMPLX_ARG (utmp.rwdata ()),
+                                 F77_DBLE_CMPLX_ARG (vtmp.rwdata ()),
                                  F77_DBLE_CMPLX_ARG (w), rw));
     }
 }
@@ -1416,8 +1416,8 @@
 
   ComplexColumnVector utmp = u;
   OCTAVE_LOCAL_BUFFER (double, rw, k);
-  F77_XFCN (zqrinc, ZQRINC, (m, n, k, F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()),
-                             ldq, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()),
+  F77_XFCN (zqrinc, ZQRINC, (m, n, k, F77_DBLE_CMPLX_ARG (m_q.rwdata ()),
+                             ldq, F77_DBLE_CMPLX_ARG (m_r.rwdata ()),
                              ldr, j + 1,
                              F77_CONST_DBLE_CMPLX_ARG (utmp.data ()), rw));
 }
@@ -1474,9 +1474,9 @@
           ComplexColumnVector utmp = u.column (jsi(i));
           F77_INT js_elt = to_f77_int (js(ii));
           F77_XFCN (zqrinc, ZQRINC, (m, n + ii, std::min (kmax, k + ii),
-                                     F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()),
+                                     F77_DBLE_CMPLX_ARG (m_q.rwdata ()),
                                      ldq,
-                                     F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()),
+                                     F77_DBLE_CMPLX_ARG (m_r.rwdata ()),
                                      ldr, js_elt + 1,
                                      F77_CONST_DBLE_CMPLX_ARG (utmp.data ()),
                                      rw));
@@ -1501,8 +1501,8 @@
   F77_INT ldr = to_f77_int (m_r.rows ());
 
   OCTAVE_LOCAL_BUFFER (double, rw, k);
-  F77_XFCN (zqrdec, ZQRDEC, (m, n, k, F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()),
-                             ldq, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()),
+  F77_XFCN (zqrdec, ZQRDEC, (m, n, k, F77_DBLE_CMPLX_ARG (m_q.rwdata ()),
+                             ldq, F77_DBLE_CMPLX_ARG (m_r.rwdata ()),
                              ldr, j + 1, rw));
 
   if (k < m)
@@ -1549,9 +1549,9 @@
           F77_INT ii = i;
           F77_INT js_elt = to_f77_int (js(ii));
           F77_XFCN (zqrdec, ZQRDEC, (m, n - ii, (k == m ? k : k - ii),
-                                     F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()),
+                                     F77_DBLE_CMPLX_ARG (m_q.rwdata ()),
                                      ldq,
-                                     F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()),
+                                     F77_DBLE_CMPLX_ARG (m_r.rwdata ()),
                                      ldr, js_elt + 1, rw));
         }
 
@@ -1592,10 +1592,10 @@
 
   ComplexRowVector utmp = u;
   OCTAVE_LOCAL_BUFFER (double, rw, k);
-  F77_XFCN (zqrinr, ZQRINR, (m, n, F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()),
-                             ldq, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()),
+  F77_XFCN (zqrinr, ZQRINR, (m, n, F77_DBLE_CMPLX_ARG (m_q.rwdata ()),
+                             ldq, F77_DBLE_CMPLX_ARG (m_r.rwdata ()),
                              ldr, j + 1,
-                             F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), rw));
+                             F77_DBLE_CMPLX_ARG (utmp.rwdata ()), rw));
 
 }
 
@@ -1619,8 +1619,8 @@
 
   OCTAVE_LOCAL_BUFFER (Complex, w, m);
   OCTAVE_LOCAL_BUFFER (double, rw, m);
-  F77_XFCN (zqrder, ZQRDER, (m, n, F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()),
-                             ldq, F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()),
+  F77_XFCN (zqrder, ZQRDER, (m, n, F77_DBLE_CMPLX_ARG (m_q.rwdata ()),
+                             ldq, F77_DBLE_CMPLX_ARG (m_r.rwdata ()),
                              ldr, j + 1, F77_DBLE_CMPLX_ARG (w), rw));
 
   m_q.resize (m - 1, m - 1);
@@ -1648,8 +1648,8 @@
   OCTAVE_LOCAL_BUFFER (Complex, w, k);
   OCTAVE_LOCAL_BUFFER (double, rw, k);
   F77_XFCN (zqrshc, ZQRSHC, (m, n, k,
-                             F77_DBLE_CMPLX_ARG (m_q.fortran_vec ()), ldq,
-                             F77_DBLE_CMPLX_ARG (m_r.fortran_vec ()), ldr,
+                             F77_DBLE_CMPLX_ARG (m_q.rwdata ()), ldq,
+                             F77_DBLE_CMPLX_ARG (m_r.rwdata ()), ldr,
                              i + 1, j + 1, F77_DBLE_CMPLX_ARG (w), rw));
 }
 
@@ -1714,7 +1714,7 @@
           // workspace query.
           FloatComplex clwork;
           F77_XFCN (cungqr, CUNGQR, (m, k, min_mn,
-                                     F77_CMPLX_ARG (m_q.fortran_vec ()), m,
+                                     F77_CMPLX_ARG (m_q.rwdata ()), m,
                                      F77_CMPLX_ARG (tau),
                                      F77_CMPLX_ARG (&clwork), -1, info));
 
@@ -1723,7 +1723,7 @@
           lwork = std::max (lwork, static_cast<F77_INT> (1));
           OCTAVE_LOCAL_BUFFER (FloatComplex, work, lwork);
           F77_XFCN (cungqr, CUNGQR, (m, k, min_mn,
-                                     F77_CMPLX_ARG (m_q.fortran_vec ()), m,
+                                     F77_CMPLX_ARG (m_q.rwdata ()), m,
                                      F77_CMPLX_ARG (tau),
                                      F77_CMPLX_ARG (work), lwork, info));
         }
@@ -1750,7 +1750,7 @@
     {
       // workspace query.
       FloatComplex clwork;
-      F77_XFCN (cgeqrf, CGEQRF, (m, n, F77_CMPLX_ARG (afact.fortran_vec ()),
+      F77_XFCN (cgeqrf, CGEQRF, (m, n, F77_CMPLX_ARG (afact.rwdata ()),
                                  m, F77_CMPLX_ARG (tau),
                                  F77_CMPLX_ARG (&clwork), -1, info));
 
@@ -1758,7 +1758,7 @@
       F77_INT lwork = static_cast<F77_INT> (clwork.real ());
       lwork = std::max (lwork, static_cast<F77_INT> (1));
       OCTAVE_LOCAL_BUFFER (FloatComplex, work, lwork);
-      F77_XFCN (cgeqrf, CGEQRF, (m, n, F77_CMPLX_ARG (afact.fortran_vec ()),
+      F77_XFCN (cgeqrf, CGEQRF, (m, n, F77_CMPLX_ARG (afact.rwdata ()),
                                  m, F77_CMPLX_ARG (tau),
                                  F77_CMPLX_ARG (work), lwork, info));
     }
@@ -1787,10 +1787,10 @@
   FloatComplexColumnVector vtmp = v;
   OCTAVE_LOCAL_BUFFER (FloatComplex, w, k);
   OCTAVE_LOCAL_BUFFER (float, rw, k);
-  F77_XFCN (cqr1up, CQR1UP, (m, n, k, F77_CMPLX_ARG (m_q.fortran_vec ()),
-                             m, F77_CMPLX_ARG (m_r.fortran_vec ()), k,
-                             F77_CMPLX_ARG (utmp.fortran_vec ()),
-                             F77_CMPLX_ARG (vtmp.fortran_vec ()),
+  F77_XFCN (cqr1up, CQR1UP, (m, n, k, F77_CMPLX_ARG (m_q.rwdata ()),
+                             m, F77_CMPLX_ARG (m_r.rwdata ()), k,
+                             F77_CMPLX_ARG (utmp.rwdata ()),
+                             F77_CMPLX_ARG (vtmp.rwdata ()),
                              F77_CMPLX_ARG (w), rw));
 }
 
@@ -1818,10 +1818,10 @@
     {
       FloatComplexColumnVector utmp = u.column (i);
       FloatComplexColumnVector vtmp = v.column (i);
-      F77_XFCN (cqr1up, CQR1UP, (m, n, k, F77_CMPLX_ARG (m_q.fortran_vec ()),
-                                 m, F77_CMPLX_ARG (m_r.fortran_vec ()), k,
-                                 F77_CMPLX_ARG (utmp.fortran_vec ()),
-                                 F77_CMPLX_ARG (vtmp.fortran_vec ()),
+      F77_XFCN (cqr1up, CQR1UP, (m, n, k, F77_CMPLX_ARG (m_q.rwdata ()),
+                                 m, F77_CMPLX_ARG (m_r.rwdata ()), k,
+                                 F77_CMPLX_ARG (utmp.rwdata ()),
+                                 F77_CMPLX_ARG (vtmp.rwdata ()),
                                  F77_CMPLX_ARG (w), rw));
     }
 }
@@ -1858,8 +1858,8 @@
 
   FloatComplexColumnVector utmp = u;
   OCTAVE_LOCAL_BUFFER (float, rw, k);
-  F77_XFCN (cqrinc, CQRINC, (m, n, k, F77_CMPLX_ARG (m_q.fortran_vec ()), ldq,
-                             F77_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1,
+  F77_XFCN (cqrinc, CQRINC, (m, n, k, F77_CMPLX_ARG (m_q.rwdata ()), ldq,
+                             F77_CMPLX_ARG (m_r.rwdata ()), ldr, j + 1,
                              F77_CONST_CMPLX_ARG (utmp.data ()), rw));
 }
 
@@ -1914,8 +1914,8 @@
           F77_INT ii = i;
           F77_INT js_elt = to_f77_int (js(ii));
           F77_XFCN (cqrinc, CQRINC, (m, n + ii, std::min (kmax, k + ii),
-                                     F77_CMPLX_ARG (m_q.fortran_vec ()), ldq,
-                                     F77_CMPLX_ARG (m_r.fortran_vec ()), ldr,
+                                     F77_CMPLX_ARG (m_q.rwdata ()), ldq,
+                                     F77_CMPLX_ARG (m_r.rwdata ()), ldr,
                                      js_elt + 1,
                                      F77_CONST_CMPLX_ARG (u.column (jsi(i)).data ()),
                                      rw));
@@ -1940,8 +1940,8 @@
   F77_INT ldr = to_f77_int (m_r.rows ());
 
   OCTAVE_LOCAL_BUFFER (float, rw, k);
-  F77_XFCN (cqrdec, CQRDEC, (m, n, k, F77_CMPLX_ARG (m_q.fortran_vec ()), ldq,
-                             F77_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1,
+  F77_XFCN (cqrdec, CQRDEC, (m, n, k, F77_CMPLX_ARG (m_q.rwdata ()), ldq,
+                             F77_CMPLX_ARG (m_r.rwdata ()), ldr, j + 1,
                              rw));
 
   if (k < m)
@@ -1988,8 +1988,8 @@
           F77_INT ii = i;
           F77_INT js_elt = to_f77_int (js(ii));
           F77_XFCN (cqrdec, CQRDEC, (m, n - ii, (k == m ? k : k - ii),
-                                     F77_CMPLX_ARG (m_q.fortran_vec ()), ldq,
-                                     F77_CMPLX_ARG (m_r.fortran_vec ()), ldr,
+                                     F77_CMPLX_ARG (m_q.rwdata ()), ldq,
+                                     F77_CMPLX_ARG (m_r.rwdata ()), ldr,
                                      js_elt + 1, rw));
         }
 
@@ -2030,9 +2030,9 @@
 
   FloatComplexRowVector utmp = u;
   OCTAVE_LOCAL_BUFFER (float, rw, k);
-  F77_XFCN (cqrinr, CQRINR, (m, n, F77_CMPLX_ARG (m_q.fortran_vec ()), ldq,
-                             F77_CMPLX_ARG (m_r.fortran_vec ()), ldr,
-                             j + 1, F77_CMPLX_ARG (utmp.fortran_vec ()),
+  F77_XFCN (cqrinr, CQRINR, (m, n, F77_CMPLX_ARG (m_q.rwdata ()), ldq,
+                             F77_CMPLX_ARG (m_r.rwdata ()), ldr,
+                             j + 1, F77_CMPLX_ARG (utmp.rwdata ()),
                              rw));
 
 }
@@ -2057,8 +2057,8 @@
 
   OCTAVE_LOCAL_BUFFER (FloatComplex, w, m);
   OCTAVE_LOCAL_BUFFER (float, rw, m);
-  F77_XFCN (cqrder, CQRDER, (m, n, F77_CMPLX_ARG (m_q.fortran_vec ()), ldq,
-                             F77_CMPLX_ARG (m_r.fortran_vec ()), ldr, j + 1,
+  F77_XFCN (cqrder, CQRDER, (m, n, F77_CMPLX_ARG (m_q.rwdata ()), ldq,
+                             F77_CMPLX_ARG (m_r.rwdata ()), ldr, j + 1,
                              F77_CMPLX_ARG (w), rw));
 
   m_q.resize (m - 1, m - 1);
@@ -2086,8 +2086,8 @@
   OCTAVE_LOCAL_BUFFER (FloatComplex, w, k);
   OCTAVE_LOCAL_BUFFER (float, rw, k);
   F77_XFCN (cqrshc, CQRSHC, (m, n, k,
-                             F77_CMPLX_ARG (m_q.fortran_vec ()), ldq,
-                             F77_CMPLX_ARG (m_r.fortran_vec ()), ldr,
+                             F77_CMPLX_ARG (m_q.rwdata ()), ldq,
+                             F77_CMPLX_ARG (m_r.rwdata ()), ldr,
                              i + 1, j + 1, F77_CMPLX_ARG (w), rw));
 }
 
--- a/liboctave/numeric/qrp.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/qrp.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -74,8 +74,8 @@
     {
       // workspace query.
       double rlwork;
-      F77_XFCN (dgeqp3, DGEQP3, (m, n, afact.fortran_vec (),
-                                 m, jpvt.fortran_vec (), tau,
+      F77_XFCN (dgeqp3, DGEQP3, (m, n, afact.rwdata (),
+                                 m, jpvt.rwdata (), tau,
                                  &rlwork, -1, info));
 
       // allocate buffer and do the job.
@@ -83,8 +83,8 @@
       lwork = std::max (lwork, static_cast<F77_INT> (1));
       OCTAVE_LOCAL_BUFFER (double, work, lwork);
 
-      F77_XFCN (dgeqp3, DGEQP3, (m, n, afact.fortran_vec (),
-                                 m, jpvt.fortran_vec (), tau,
+      F77_XFCN (dgeqp3, DGEQP3, (m, n, afact.rwdata (),
+                                 m, jpvt.rwdata (), tau,
                                  work, lwork, info));
     }
   else
@@ -145,8 +145,8 @@
     {
       // workspace query.
       float rlwork;
-      F77_XFCN (sgeqp3, SGEQP3, (m, n, afact.fortran_vec (),
-                                 m, jpvt.fortran_vec (), tau,
+      F77_XFCN (sgeqp3, SGEQP3, (m, n, afact.rwdata (),
+                                 m, jpvt.rwdata (), tau,
                                  &rlwork, -1, info));
 
       // allocate buffer and do the job.
@@ -154,8 +154,8 @@
       lwork = std::max (lwork, static_cast<F77_INT> (1));
       OCTAVE_LOCAL_BUFFER (float, work, lwork);
 
-      F77_XFCN (sgeqp3, SGEQP3, (m, n, afact.fortran_vec (),
-                                 m, jpvt.fortran_vec (), tau,
+      F77_XFCN (sgeqp3, SGEQP3, (m, n, afact.rwdata (),
+                                 m, jpvt.rwdata (), tau,
                                  work, lwork, info));
     }
   else
@@ -219,8 +219,8 @@
       // workspace query.
       Complex clwork;
       F77_XFCN (zgeqp3, ZGEQP3, (m, n,
-                                 F77_DBLE_CMPLX_ARG (afact.fortran_vec ()),
-                                 m, jpvt.fortran_vec (),
+                                 F77_DBLE_CMPLX_ARG (afact.rwdata ()),
+                                 m, jpvt.rwdata (),
                                  F77_DBLE_CMPLX_ARG (tau),
                                  F77_DBLE_CMPLX_ARG (&clwork),
                                  -1, rwork, info));
@@ -231,8 +231,8 @@
       OCTAVE_LOCAL_BUFFER (Complex, work, lwork);
 
       F77_XFCN (zgeqp3, ZGEQP3, (m, n,
-                                 F77_DBLE_CMPLX_ARG (afact.fortran_vec ()),
-                                 m, jpvt.fortran_vec (),
+                                 F77_DBLE_CMPLX_ARG (afact.rwdata ()),
+                                 m, jpvt.rwdata (),
                                  F77_DBLE_CMPLX_ARG (tau),
                                  F77_DBLE_CMPLX_ARG (work),
                                  lwork, rwork, info));
@@ -298,8 +298,8 @@
       // workspace query.
       FloatComplex clwork;
       F77_XFCN (cgeqp3, CGEQP3, (m, n,
-                                 F77_CMPLX_ARG (afact.fortran_vec ()),
-                                 m, jpvt.fortran_vec (),
+                                 F77_CMPLX_ARG (afact.rwdata ()),
+                                 m, jpvt.rwdata (),
                                  F77_CMPLX_ARG (tau),
                                  F77_CMPLX_ARG (&clwork),
                                  -1, rwork, info));
@@ -310,8 +310,8 @@
       OCTAVE_LOCAL_BUFFER (FloatComplex, work, lwork);
 
       F77_XFCN (cgeqp3, CGEQP3, (m, n,
-                                 F77_CMPLX_ARG (afact.fortran_vec ()),
-                                 m, jpvt.fortran_vec (),
+                                 F77_CMPLX_ARG (afact.rwdata ()),
+                                 m, jpvt.rwdata (),
                                  F77_CMPLX_ARG (tau),
                                  F77_CMPLX_ARG (work),
                                  lwork, rwork, info));
--- a/liboctave/numeric/schur.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/schur.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -152,25 +152,25 @@
   if (calc_unitary)
     m_unitary_schur_mat.clear (n, n);
 
-  double *s = m_schur_mat.fortran_vec ();
-  double *q = m_unitary_schur_mat.fortran_vec ();
+  double *s = m_schur_mat.rwdata ();
+  double *q = m_unitary_schur_mat.rwdata ();
 
   Array<double> wr (dim_vector (n, 1));
-  double *pwr = wr.fortran_vec ();
+  double *pwr = wr.rwdata ();
 
   Array<double> wi (dim_vector (n, 1));
-  double *pwi = wi.fortran_vec ();
+  double *pwi = wi.rwdata ();
 
   Array<double> work (dim_vector (lwork, 1));
-  double *pwork = work.fortran_vec ();
+  double *pwork = work.rwdata ();
 
   // BWORK is not referenced for the non-ordered Schur routine.
   F77_INT ntmp = (ord_char == 'N' || ord_char == 'n') ? 0 : n;
   Array<F77_INT> bwork (dim_vector (ntmp, 1));
-  F77_INT *pbwork = bwork.fortran_vec ();
+  F77_INT *pbwork = bwork.rwdata ();
 
   Array<F77_INT> iwork (dim_vector (liwork, 1));
-  F77_INT *piwork = iwork.fortran_vec ();
+  F77_INT *piwork = iwork.rwdata ();
 
   F77_XFCN (dgeesx, DGEESX, (F77_CONST_CHAR_ARG2 (&jobvs, 1),
                              F77_CONST_CHAR_ARG2 (&sort, 1),
@@ -240,25 +240,25 @@
   if (calc_unitary)
     m_unitary_schur_mat.clear (n, n);
 
-  float *s = m_schur_mat.fortran_vec ();
-  float *q = m_unitary_schur_mat.fortran_vec ();
+  float *s = m_schur_mat.rwdata ();
+  float *q = m_unitary_schur_mat.rwdata ();
 
   Array<float> wr (dim_vector (n, 1));
-  float *pwr = wr.fortran_vec ();
+  float *pwr = wr.rwdata ();
 
   Array<float> wi (dim_vector (n, 1));
-  float *pwi = wi.fortran_vec ();
+  float *pwi = wi.rwdata ();
 
   Array<float> work (dim_vector (lwork, 1));
-  float *pwork = work.fortran_vec ();
+  float *pwork = work.rwdata ();
 
   // BWORK is not referenced for the non-ordered Schur routine.
   F77_INT ntmp = (ord_char == 'N' || ord_char == 'n') ? 0 : n;
   Array<F77_INT> bwork (dim_vector (ntmp, 1));
-  F77_INT *pbwork = bwork.fortran_vec ();
+  F77_INT *pbwork = bwork.rwdata ();
 
   Array<F77_INT> iwork (dim_vector (liwork, 1));
-  F77_INT *piwork = iwork.fortran_vec ();
+  F77_INT *piwork = iwork.rwdata ();
 
   F77_XFCN (sgeesx, SGEESX, (F77_CONST_CHAR_ARG2 (&jobvs, 1),
                              F77_CONST_CHAR_ARG2 (&sort, 1),
@@ -326,22 +326,22 @@
   if (calc_unitary)
     m_unitary_schur_mat.clear (n, n);
 
-  Complex *s = m_schur_mat.fortran_vec ();
-  Complex *q = m_unitary_schur_mat.fortran_vec ();
+  Complex *s = m_schur_mat.rwdata ();
+  Complex *q = m_unitary_schur_mat.rwdata ();
 
   Array<double> rwork (dim_vector (n, 1));
-  double *prwork = rwork.fortran_vec ();
+  double *prwork = rwork.rwdata ();
 
   Array<Complex> w (dim_vector (n, 1));
-  Complex *pw = w.fortran_vec ();
+  Complex *pw = w.rwdata ();
 
   Array<Complex> work (dim_vector (lwork, 1));
-  Complex *pwork = work.fortran_vec ();
+  Complex *pwork = work.rwdata ();
 
   // BWORK is not referenced for non-ordered Schur.
   F77_INT ntmp = (ord_char == 'N' || ord_char == 'n') ? 0 : n;
   Array<F77_INT> bwork (dim_vector (ntmp, 1));
-  F77_INT *pbwork = bwork.fortran_vec ();
+  F77_INT *pbwork = bwork.rwdata ();
 
   F77_XFCN (zgeesx, ZGEESX,
             (F77_CONST_CHAR_ARG2 (&jobvs, 1),
@@ -377,8 +377,8 @@
       OCTAVE_LOCAL_BUFFER (double, sx, n-1);
 
       F77_XFCN (zrsf2csf, ZRSF2CSF,
-                (n, F77_DBLE_CMPLX_ARG (s.fortran_vec ()),
-                 F77_DBLE_CMPLX_ARG (u.fortran_vec ()), c, sx));
+                (n, F77_DBLE_CMPLX_ARG (s.rwdata ()),
+                 F77_DBLE_CMPLX_ARG (u.rwdata ()), c, sx));
     }
 
   return schur<ComplexMatrix> (s, u);
@@ -437,22 +437,22 @@
   if (calc_unitary)
     m_unitary_schur_mat.clear (n, n);
 
-  FloatComplex *s = m_schur_mat.fortran_vec ();
-  FloatComplex *q = m_unitary_schur_mat.fortran_vec ();
+  FloatComplex *s = m_schur_mat.rwdata ();
+  FloatComplex *q = m_unitary_schur_mat.rwdata ();
 
   Array<float> rwork (dim_vector (n, 1));
-  float *prwork = rwork.fortran_vec ();
+  float *prwork = rwork.rwdata ();
 
   Array<FloatComplex> w (dim_vector (n, 1));
-  FloatComplex *pw = w.fortran_vec ();
+  FloatComplex *pw = w.rwdata ();
 
   Array<FloatComplex> work (dim_vector (lwork, 1));
-  FloatComplex *pwork = work.fortran_vec ();
+  FloatComplex *pwork = work.rwdata ();
 
   // BWORK is not referenced for non-ordered Schur.
   F77_INT ntmp = (ord_char == 'N' || ord_char == 'n') ? 0 : n;
   Array<F77_INT> bwork (dim_vector (ntmp, 1));
-  F77_INT *pbwork = bwork.fortran_vec ();
+  F77_INT *pbwork = bwork.rwdata ();
 
   F77_XFCN (cgeesx, CGEESX,
             (F77_CONST_CHAR_ARG2 (&jobvs, 1),
@@ -490,8 +490,8 @@
       OCTAVE_LOCAL_BUFFER (float, sx, n-1);
 
       F77_XFCN (crsf2csf, CRSF2CSF,
-                (n, F77_CMPLX_ARG (s.fortran_vec ()),
-                 F77_CMPLX_ARG (u.fortran_vec ()), c, sx));
+                (n, F77_CMPLX_ARG (s.rwdata ()),
+                 F77_CMPLX_ARG (u.rwdata ()), c, sx));
     }
 
   return schur<FloatComplexMatrix> (s, u);
--- a/liboctave/numeric/sparse-dmsolve.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/sparse-dmsolve.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -173,7 +173,7 @@
 dmsolve_insert (MArray<T>& a, const MArray<T>& b, const octave_idx_type *Q,
                 octave_idx_type r, octave_idx_type c)
 {
-  T *ax = a.fortran_vec ();
+  T *ax = a.rwdata ();
 
   const T *bx = b.data ();
 
@@ -299,7 +299,7 @@
 
   a.resize (dim_vector (b_nr, b_nc));
 
-  RT *Btx = a.fortran_vec ();
+  RT *Btx = a.rwdata ();
 
   for (octave_idx_type j = 0; j < b_nc; j++)
     {
--- a/liboctave/numeric/sparse-lu.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/sparse-lu.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -415,7 +415,7 @@
 
   // Setup the control parameters
   Matrix Control (UMFPACK_CONTROL, 1);
-  double *control = Control.fortran_vec ();
+  double *control = Control.rwdata ();
   umfpack_defaults<lu_elt_type> (control);
 
   double tmp = sparse_params::get_key ("spumoni");
@@ -466,7 +466,7 @@
 
   void *Symbolic;
   Matrix Info (1, UMFPACK_INFO);
-  double *info = Info.fortran_vec ();
+  double *info = Info.rwdata ();
   int status = umfpack_qsymbolic<lu_elt_type> (nr, nc, Ap, Ai, Ax, nullptr,
                &Symbolic, control, info);
 
@@ -552,10 +552,10 @@
               double *Rx = m_R.data ();
 
               m_P.resize (dim_vector (nr, 1));
-              octave_idx_type *p = m_P.fortran_vec ();
+              octave_idx_type *p = m_P.rwdata ();
 
               m_Q.resize (dim_vector (nc, 1));
-              octave_idx_type *q = m_Q.fortran_vec ();
+              octave_idx_type *q = m_Q.rwdata ();
 
               octave_idx_type do_recip;
               status = umfpack_get_numeric<lu_elt_type> (Ltp, Ltj, Ltx,
@@ -633,7 +633,7 @@
 
   // Setup the control parameters
   Matrix Control (UMFPACK_CONTROL, 1);
-  double *control = Control.fortran_vec ();
+  double *control = Control.rwdata ();
   umfpack_defaults<lu_elt_type> (control);
 
   double tmp = sparse_params::get_key ("spumoni");
@@ -691,7 +691,7 @@
 
   void *Symbolic;
   Matrix Info (1, UMFPACK_INFO);
-  double *info = Info.fortran_vec ();
+  double *info = Info.rwdata ();
   int status;
 
   // Null loop so that qinit is immediately deallocated when not needed
@@ -790,10 +790,10 @@
               double *Rx = m_R.data ();
 
               m_P.resize (dim_vector (nr, 1));
-              octave_idx_type *p = m_P.fortran_vec ();
+              octave_idx_type *p = m_P.rwdata ();
 
               m_Q.resize (dim_vector (nc, 1));
-              octave_idx_type *q = m_Q.fortran_vec ();
+              octave_idx_type *q = m_Q.rwdata ();
 
               octave_idx_type do_recip;
               status = umfpack_get_numeric<lu_elt_type> (Ltp, Ltj, Ltx,
--- a/liboctave/numeric/sparse-qr.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/sparse-qr.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -717,7 +717,7 @@
 
   // copy QTB into ret
   double *QTB_x = reinterpret_cast<double *> (QTB->x);
-  double *ret_vec = reinterpret_cast<double *> (ret.fortran_vec ());
+  double *ret_vec = reinterpret_cast<double *> (ret.rwdata ());
   for (octave_idx_type j = 0; j < b_nc; j++)
     for (octave_idx_type i = 0; i < nr; i++)
       ret_vec[j * nr + i] = QTB_x[j * b_nr + i];
@@ -741,7 +741,7 @@
   const double *bvec = b.data ();
 
   Matrix ret (b_nr, b_nc);
-  double *vec = ret.fortran_vec ();
+  double *vec = ret.rwdata ();
 
   if (nr < 0 || nc < 0 || nr != b_nr)
     (*current_liboctave_error_handler) ("matrix dimension mismatch");
@@ -816,7 +816,7 @@
   spqr_error_handler (&m_cc);
 
   double *q_x = reinterpret_cast<double *> (q->x);
-  double *ret_vec = const_cast<double *> (ret.fortran_vec ());
+  double *ret_vec = const_cast<double *> (ret.rwdata ());
   for (octave_idx_type j = 0; j < nc; j++)
     for (octave_idx_type i = 0; i < nrows; i++)
       ret_vec[j * nrows + i] = q_x[j * nrows + i];
@@ -835,7 +835,7 @@
   octave_idx_type nc = N->L->n;
   octave_idx_type nr = nrows;
   Matrix ret (nr, nr);
-  double *ret_vec = ret.fortran_vec ();
+  double *ret_vec = ret.rwdata ();
 
   if (nr < 0 || nc < 0)
     (*current_liboctave_error_handler) ("matrix dimension mismatch");
@@ -947,7 +947,7 @@
       R2.i = R2_i;
     }
   R2.nz = -1;
-  double *x_vec = const_cast<double *> (x.fortran_vec ());
+  double *x_vec = const_cast<double *> (x.rwdata ());
   suitesparse_integer *E;
   if (sizeof (suitesparse_integer) != sizeof (SuiteSparse_long))
     {
@@ -992,7 +992,7 @@
   const double *bvec = b.data ();
 
   Matrix x (nc, b_nc);
-  double *vec = x.fortran_vec ();
+  double *vec = x.rwdata ();
 
   OCTAVE_LOCAL_BUFFER (double, buf, S->m2);
 
@@ -1051,7 +1051,7 @@
   const double *bvec = b.data ();
 
   Matrix x (nc, b_nc);
-  double *vec = x.fortran_vec ();
+  double *vec = x.rwdata ();
 
   volatile octave_idx_type nbuf = (nc > S->m2 ? nc : S->m2);
 
@@ -1279,7 +1279,7 @@
   octave_idx_type b_nr = b.rows ();
 
   ComplexMatrix x (nc, b_nc);
-  Complex *vec = x.fortran_vec ();
+  Complex *vec = x.rwdata ();
 
   OCTAVE_LOCAL_BUFFER (double, Xx, (b_nr > nc ? b_nr : nc));
   OCTAVE_LOCAL_BUFFER (double, Xz, (b_nr > nc ? b_nr : nc));
@@ -1363,7 +1363,7 @@
   octave_idx_type b_nr = b.rows ();
 
   ComplexMatrix x (nc, b_nc);
-  Complex *vec = x.fortran_vec ();
+  Complex *vec = x.rwdata ();
 
   volatile octave_idx_type nbuf = (nc > S->m2 ? nc : S->m2);
 
@@ -1656,7 +1656,7 @@
 
   // copy QTB into ret
   Complex *QTB_x = reinterpret_cast<Complex *> (QTB->x);
-  Complex *ret_vec = reinterpret_cast<Complex *> (ret.fortran_vec ());
+  Complex *ret_vec = reinterpret_cast<Complex *> (ret.rwdata ());
   for (octave_idx_type j = 0; j < b_nc; j++)
     for (octave_idx_type i = 0; i < nr; i++)
       ret_vec[j * nr + i] = QTB_x[j * b_nr + i];
@@ -1678,7 +1678,7 @@
   const cs_complex_t *bvec
     = reinterpret_cast<const cs_complex_t *> (b.data ());
   ComplexMatrix ret (b_nr, b_nc);
-  Complex *vec = ret.fortran_vec ();
+  Complex *vec = ret.rwdata ();
 
   if (nr < 0 || nc < 0 || nr != b_nr)
     (*current_liboctave_error_handler) ("matrix dimension mismatch");
@@ -1754,7 +1754,7 @@
   spqr_error_handler (&m_cc);
 
   Complex *q_x = reinterpret_cast<Complex *> (q->x);
-  Complex *ret_vec = const_cast<Complex *> (ret.fortran_vec ());
+  Complex *ret_vec = const_cast<Complex *> (ret.rwdata ());
 
   for (octave_idx_type j = 0; j < nc; j++)
     for (octave_idx_type i = 0; i < nrows; i++)
@@ -1774,7 +1774,7 @@
   octave_idx_type nc = N->L->n;
   octave_idx_type nr = nrows;
   ComplexMatrix ret (nr, nr);
-  Complex *vec = ret.fortran_vec ();
+  Complex *vec = ret.rwdata ();
 
   if (nr < 0 || nc < 0)
     (*current_liboctave_error_handler) ("matrix dimension mismatch");
@@ -2060,7 +2060,7 @@
   octave_idx_type b_nr = b.rows ();
 
   ComplexMatrix x (nc, b_nc);
-  cs_complex_t *vec = reinterpret_cast<cs_complex_t *> (x.fortran_vec ());
+  cs_complex_t *vec = reinterpret_cast<cs_complex_t *> (x.rwdata ());
 
   OCTAVE_LOCAL_BUFFER (cs_complex_t, buf, S->m2);
   OCTAVE_LOCAL_BUFFER (Complex, Xx, b_nr);
@@ -2124,7 +2124,7 @@
   octave_idx_type b_nr = b.rows ();
 
   ComplexMatrix x (nc, b_nc);
-  cs_complex_t *vec = reinterpret_cast<cs_complex_t *> (x.fortran_vec ());
+  cs_complex_t *vec = reinterpret_cast<cs_complex_t *> (x.rwdata ());
 
   volatile octave_idx_type nbuf = (nc > S->m2 ? nc : S->m2);
 
@@ -2382,7 +2382,7 @@
 
   ComplexMatrix x (nc, b_nc);
   cs_complex_t *vec = reinterpret_cast<cs_complex_t *>
-                      (x.fortran_vec ());
+                      (x.rwdata ());
 
   OCTAVE_LOCAL_BUFFER (cs_complex_t, buf, S->m2);
 
@@ -2444,7 +2444,7 @@
                              (b.data ());
 
   ComplexMatrix x (nc, b_nc);
-  cs_complex_t *vec = reinterpret_cast<cs_complex_t *> (x.fortran_vec ());
+  cs_complex_t *vec = reinterpret_cast<cs_complex_t *> (x.rwdata ());
 
   volatile octave_idx_type nbuf = (nc > S->m2 ? nc : S->m2);
 
@@ -2778,7 +2778,7 @@
   X = SuiteSparseQR_min2norm<double> (order, SPQR_DEFAULT_TOL, &A, &B, &cc);
   spqr_error_handler (&cc);
 
-  double *vec = x.fortran_vec ();
+  double *vec = x.rwdata ();
   for (volatile octave_idx_type i = 0; i < nc * b_nc; i++)
     vec[i] = reinterpret_cast<double *> (X->x)[i];
 
@@ -2854,7 +2854,7 @@
   X = SuiteSparseQR_min2norm<Complex> (order, SPQR_DEFAULT_TOL, A, &B, &cc);
   spqr_error_handler (&cc);
 
-  Complex *vec = x.fortran_vec ();
+  Complex *vec = x.rwdata ();
   for (volatile octave_idx_type i = 0; i < nc * b_nc; i++)
     vec[i] = reinterpret_cast<Complex *> (X->x)[i];
 
@@ -2928,7 +2928,7 @@
   X = SuiteSparseQR_min2norm<Complex> (order, SPQR_DEFAULT_TOL, &A, &B, &cc);
   spqr_error_handler (&cc);
 
-  Complex *vec = x.fortran_vec ();
+  Complex *vec = x.rwdata ();
   for (volatile octave_idx_type i = 0; i < nc * b_nc; i++)
     vec[i] = reinterpret_cast<Complex *> (X->x)[i];
 
@@ -2970,7 +2970,7 @@
   X = SuiteSparseQR_min2norm<Complex> (order, SPQR_DEFAULT_TOL, &A, B, &cc);
   spqr_error_handler (&cc);
 
-  Complex *vec = x.fortran_vec ();
+  Complex *vec = x.rwdata ();
 
   for (volatile octave_idx_type i = 0; i < nc * b_nc; i++)
     vec[i] = reinterpret_cast<Complex *> (X->x)[i];
--- a/liboctave/numeric/svd.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/numeric/svd.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -705,7 +705,7 @@
     }
 
   T atmp = a;
-  P *tmp_data = atmp.fortran_vec ();
+  P *tmp_data = atmp.rwdata ();
 
   F77_INT min_mn = (m < n ? m : n);
 
@@ -744,10 +744,10 @@
   if (! (jobu == 'N' || jobu == 'O'))
     m_left_sm.resize (m, ncol_u);
 
-  P *u = m_left_sm.fortran_vec ();
+  P *u = m_left_sm.rwdata ();
 
   m_sigma.resize (nrow_s, ncol_s);
-  DM_P *s_vec = m_sigma.fortran_vec ();
+  DM_P *s_vec = m_sigma.rwdata ();
 
   if (! (jobv == 'N' || jobv == 'O'))
     {
@@ -757,7 +757,7 @@
         m_right_sm.resize (nrow_vt, n);
     }
 
-  P *vt = m_right_sm.fortran_vec ();
+  P *vt = m_right_sm.rwdata ();
 
   // Query _GESVD for the correct dimension of WORK.
 
@@ -798,11 +798,11 @@
           std::swap (jobu, jobv);
 
           atmp = atmp.hermitian ();
-          tmp_data = atmp.fortran_vec ();
+          tmp_data = atmp.rwdata ();
 
           // Swap pointers of U and V.
-          u  = m_right_sm.fortran_vec ();
-          vt = m_left_sm.fortran_vec ();
+          u  = m_right_sm.rwdata ();
+          vt = m_left_sm.rwdata ();
         }
 
       // translate jobu and jobv from gesvd to gejsv.
--- a/liboctave/operators/mx-inlines.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/operators/mx-inlines.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -471,7 +471,7 @@
                 void (*op) (std::size_t, R *, const X *))
 {
   Array<R> r (x.dims ());
-  op (r.numel (), r.fortran_vec (), x.data ());
+  op (r.numel (), r.rwdata (), x.data ());
   return r;
 }
 
@@ -496,7 +496,7 @@
 do_mx_inplace_op (Array<R>& r,
                   void (*op) (std::size_t, R *))
 {
-  op (r.numel (), r.fortran_vec ());
+  op (r.numel (), r.rwdata ());
   return r;
 }
 
@@ -513,7 +513,7 @@
   if (dx == dy)
     {
       Array<R> r (dx);
-      op (r.numel (), r.fortran_vec (), x.data (), y.data ());
+      op (r.numel (), r.rwdata (), x.data (), y.data ());
       return r;
     }
   else if (is_valid_bsxfun (opname, dx, dy))
@@ -530,7 +530,7 @@
                  void (*op) (std::size_t, R *, const X *, Y))
 {
   Array<R> r (x.dims ());
-  op (r.numel (), r.fortran_vec (), x.data (), y);
+  op (r.numel (), r.rwdata (), x.data (), y);
   return r;
 }
 
@@ -540,7 +540,7 @@
                  void (*op) (std::size_t, R *, X, const Y *))
 {
   Array<R> r (y.dims ());
-  op (r.numel (), r.fortran_vec (), x, y.data ());
+  op (r.numel (), r.rwdata (), x, y.data ());
   return r;
 }
 
@@ -554,7 +554,7 @@
   const dim_vector &dr = r.dims ();
   const dim_vector &dx = x.dims ();
   if (dr == dx)
-    op (r.numel (), r.fortran_vec (), x.data ());
+    op (r.numel (), r.rwdata (), x.data ());
   else if (is_valid_inplace_bsxfun (opname, dr, dx))
     do_inplace_bsxfun_op (r, x, op, op1);
   else
@@ -568,7 +568,7 @@
 do_ms_inplace_op (Array<R>& r, const X& x,
                   void (*op) (std::size_t, R *, X))
 {
-  op (r.numel (), r.fortran_vec (), x);
+  op (r.numel (), r.rwdata (), x);
   return r;
 }
 
@@ -1561,7 +1561,7 @@
   dims.chop_trailing_singletons ();
 
   Array<R> ret (dims);
-  mx_red_op (src.data (), ret.fortran_vec (), l, n, u);
+  mx_red_op (src.data (), ret.rwdata (), l, n, u);
 
   return ret;
 }
@@ -1578,7 +1578,7 @@
 
   // Cumulative operation doesn't reduce the array size.
   Array<R> ret (dims);
-  mx_cum_op (src.data (), ret.fortran_vec (), l, n, u);
+  mx_cum_op (src.data (), ret.rwdata (), l, n, u);
 
   return ret;
 }
@@ -1598,7 +1598,7 @@
   dims.chop_trailing_singletons ();
 
   Array<R> ret (dims);
-  mx_minmax_op (src.data (), ret.fortran_vec (), l, n, u);
+  mx_minmax_op (src.data (), ret.rwdata (), l, n, u);
 
   return ret;
 }
@@ -1620,7 +1620,7 @@
   Array<R> ret (dims);
   if (idx.dims () != dims) idx = Array<octave_idx_type> (dims);
 
-  mx_minmax_op (src.data (), ret.fortran_vec (), idx.fortran_vec (),
+  mx_minmax_op (src.data (), ret.rwdata (), idx.rwdata (),
                 l, n, u);
 
   return ret;
@@ -1637,7 +1637,7 @@
   get_extent_triplet (dims, dim, l, n, u);
 
   Array<R> ret (dims);
-  mx_cumminmax_op (src.data (), ret.fortran_vec (), l, n, u);
+  mx_cumminmax_op (src.data (), ret.rwdata (), l, n, u);
 
   return ret;
 }
@@ -1655,7 +1655,7 @@
   Array<R> ret (dims);
   if (idx.dims () != dims) idx = Array<octave_idx_type> (dims);
 
-  mx_cumminmax_op (src.data (), ret.fortran_vec (), idx.fortran_vec (),
+  mx_cumminmax_op (src.data (), ret.rwdata (), idx.rwdata (),
                    l, n, u);
 
   return ret;
@@ -1689,7 +1689,7 @@
     }
 
   Array<R> ret (dims);
-  mx_diff_op (src.data (), ret.fortran_vec (), l, n, u, order);
+  mx_diff_op (src.data (), ret.rwdata (), l, n, u, order);
 
   return ret;
 }
--- a/liboctave/operators/mx-op-defs.h	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/operators/mx-op-defs.h	Wed Dec 27 16:55:14 2023 -0800
@@ -440,7 +440,7 @@
       octave::err_nonconformant ("operator *", m_nr, m_nc, dm_nr, dm_nc);       \
                                                                         \
     r = R (m_nr, dm_nc);                                                \
-    R::element_type *rd = r.fortran_vec ();                             \
+    R::element_type *rd = r.rwdata ();                             \
     const M::element_type *md = m.data ();                              \
     const DM::element_type *dd = dm.data ();                            \
                                                                         \
@@ -512,7 +512,7 @@
       octave::err_nonconformant ("operator *", dm_nr, dm_nc, m_nr, m_nc);       \
                                                                         \
     r = R (dm_nr, m_nc);                                                \
-    R::element_type *rd = r.fortran_vec ();                             \
+    R::element_type *rd = r.rwdata ();                             \
     const M::element_type *md = m.data ();                              \
     const DM::element_type *dd = dm.data ();                            \
                                                                         \
@@ -553,7 +553,7 @@
     r.resize (dm1_nr, dm1_nc);                                          \
                                                                         \
     if (dm1_nr > 0 && dm1_nc > 0)                                       \
-      F (dm1.length (), r.fortran_vec (), dm1.data (), dm2.data ());    \
+      F (dm1.length (), r.rwdata (), dm1.data (), dm2.data ());    \
                                                                         \
     return r;                                                           \
   }
--- a/liboctave/util/oct-base64.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/util/oct-base64.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -88,7 +88,7 @@
     {
       octave_idx_type len = (outlen * sizeof (char)) / sizeof (double);
       retval.resize (dim_vector (1, len));
-      std::copy (out, out + len, retval.fortran_vec ());
+      std::copy (out, out + len, retval.rwdata ());
       ::free (out);
     }
 
@@ -116,7 +116,7 @@
       ("base64_decode: memory allocation error");
 
   retval.resize (dim_vector (1, outlen));
-  std::copy (out, out + outlen, retval.fortran_vec ());
+  std::copy (out, out + outlen, retval.rwdata ());
   ::free (out);
 
   return retval;
--- a/liboctave/util/oct-binmap.h	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/util/oct-binmap.h	Wed Dec 27 16:55:14 2023 -0800
@@ -116,7 +116,7 @@
   const R *y = ya.data ();
 
   Array<U> result (ya.dims ());
-  U *p = result.fortran_vec ();
+  U *p = result.rwdata ();
 
   octave_idx_type i;
   for (i = 0; i < len - 3; i += 4)
@@ -147,7 +147,7 @@
   const R *x = xa.data ();
 
   Array<U> result (xa.dims ());
-  U *p = result.fortran_vec ();
+  U *p = result.rwdata ();
 
   octave_idx_type i;
   for (i = 0; i < len - 3; i += 4)
@@ -197,7 +197,7 @@
   const T *y = ya.data ();
 
   Array<U> result (xa.dims ());
-  U *p = result.fortran_vec ();
+  U *p = result.rwdata ();
 
   octave_idx_type i;
   for (i = 0; i < len - 3; i += 4)
--- a/liboctave/util/str-vec.cc	Wed Dec 27 14:29:02 2023 -0800
+++ b/liboctave/util/str-vec.cc	Wed Dec 27 16:55:14 2023 -0800
@@ -78,7 +78,7 @@
 {
   // Don't use Array<std::string>::sort () to allow sorting in place.
   octave_sort<std::string> lsort;
-  lsort.sort (m_data.fortran_vec (), numel ());
+  lsort.sort (m_data.rwdata (), numel ());
 
   if (make_uniq)
     uniq ();