[Pkg-octave-commit] [octave-odepkg] 01/03: Imported Upstream version 0.8.5

Rafael Laboissière rlaboiss-guest at moszumanska.debian.org
Thu May 21 10:09:28 UTC 2015


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

rlaboiss-guest pushed a commit to branch master
in repository octave-odepkg.

commit bf986482e3dadeab01051e2e90c02d557acaf21b
Author: Rafael Laboissiere <rafael at laboissiere.net>
Date:   Wed May 20 16:05:46 2015 -0300

    Imported Upstream version 0.8.5
---
 DESCRIPTION                       |    8 +-
 NEWS                              |   16 +-
 doc/Makefile                      |    2 +-
 doc/odepkg.texi                   |    2 +-
 inst/bvp4c.m                      |   88 +-
 src/Makeconf.in                   |   69 -
 src/Makefile                      |    7 +-
 src/autogen.sh                    |   27 -
 src/cash.diff                     | 7763 +++++++++++++++++++------------------
 src/configure                     | 4123 --------------------
 src/configure.base                |  319 --
 src/daskr.diff                    |  110 +-
 src/mexfiles.tgz                  |  Bin 56663 -> 0 bytes
 src/odepkg_auxiliary_functions.cc |   11 +-
 src/odepkg_auxiliary_functions.h  |    3 -
 src/odepkg_octsolver_ddaskr.cc    |   56 +-
 src/odepkg_octsolver_mebdfdae.cc  |   56 +-
 src/odepkg_octsolver_mebdfi.cc    |   56 +-
 src/odepkg_octsolver_radau.cc     |   60 +-
 src/odepkg_octsolver_radau5.cc    |   60 +-
 src/odepkg_octsolver_rodas.cc     |   60 +-
 src/odepkg_octsolver_seulex.cc    |   60 +-
 22 files changed, 4218 insertions(+), 8738 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index 4cf8cc8..4be3249 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,11 +1,11 @@
 Name: OdePkg
-Version: 0.8.4
-Date: 2013-02-22
+Version: 0.8.5
+Date: 2015-05-19
 Author: Thomas Treichl <treichl at users.sourceforge.net>
-Maintainer: Thomas Treichl <treichl at users.sourceforge.net>
+Maintainer: Jacopo Corno <corno at gsc.tu-darmstadt.de>
 Title: OdePkg
 Description: A package for solving ordinary differential equations and more.
 Categories: Differential Equations
-Depends: octave (>= 3.2.0)
+Depends: octave (>= 3.8.0)
 License: GPLv2+
 Url: http://octave.sf.net
diff --git a/NEWS b/NEWS
index ac71a53..dd71cae 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,17 @@
-Summary of important user-visible changes for odepkg 0.8.4:
--------------------------------------------------------------------
+Summary of important user-visible changes for releases of the odepkg package
+
+====================================================================================
+odepkg-0.8.5   Release Date: 2015-05-19   Release Manager: Jacopo Corno
+====================================================================================
+
+ ** enable to work on octave 4.0 (thanks to Tatsuro Matsuoka)
+    See discussuion on the octave-maintainers list
+    http://octave.1599824.n4.nabble.com/Octave-Forge-Octave-4-0-call-for-packages-td4669204i20.html#a4669709
+
+
+===============================================================================
+odepkg-0.8.4   Release Date: 2013-02-22   Release Manager: Thomas Treichl
+===============================================================================
 
  ** Added new function ode23s.
 
diff --git a/doc/Makefile b/doc/Makefile
index 6220619..072f833 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -10,7 +10,7 @@ sinclude ../../../Makeconf
 ifeq ($(MKDOC),)
 MKDOC = ../../../admin/mkdoc
 MKTEXI = ../../../admin/mktexi
-MAKEINFO = makeinfo --no-split --document-language=en_us
+MAKEINFO = makeinfo --no-split --document-language=en
 TEXI2DVI = texi2dvi --clean
 DVIPS = dvips
 LN_S = ln -s
diff --git a/doc/odepkg.texi b/doc/odepkg.texi
index 645ac0f..70e0c5f 100644
--- a/doc/odepkg.texi
+++ b/doc/odepkg.texi
@@ -9,7 +9,7 @@
 @setfilename odepkg.info
 @settitle OdePkg - A package for solving ordinary differential equations and more
 @afourpaper
- at set VERSION 0.8.2
+ at set VERSION 0.8.5
 @c @afourwide
 @c %*** End of the HEADER
 
diff --git a/inst/bvp4c.m b/inst/bvp4c.m
index a7868c2..fccc6cd 100644
--- a/inst/bvp4c.m
+++ b/inst/bvp4c.m
@@ -1,20 +1,20 @@
 ## Copyright (C) 2008-2012 Carlo de Falco
-## 
+##
 ## This program is free software; you can redistribute it and/or modify
 ## it under the terms of the GNU General Public License as published by
 ## the Free Software Foundation; either version 2 of the License, or
 ## (at your option) any later version.
-## 
+##
 ## This program is distributed in the hope that it will be useful,
 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 ## GNU General Public License for more details.
-## 
+##
 ## You should have received a copy of the GNU General Public License
 ## along with this program; if not, see <http://www.gnu.org/licenses/>.
 
 ## -*- texinfo -*-
-## @deftypefn {Function File} {@var{A}} = bvp4c (@var{odefun}, @var{bcfun}, @var{solinit})
+## @deftypefn {Function File} {@var{A} =} bvp4c (@var{odefun}, @var{bcfun}, @var{solinit})
 ##
 ## Solves the first order system of non-linear differential equations defined by
 ## @var{odefun} with the boundary conditions defined in @var{bcfun}.
@@ -27,7 +27,7 @@
 ## @item  @var{sol.y} solution evaluated at the points @var{sol.x}
 ## @item  @var{sol.yp} derivative of the solution evaluated at the
 ## points @var{sol.x}
-## @item  @var{sol.solver} = "bvp4c" for compatibility 
+## @item  @var{sol.solver} = "bvp4c" for compatibility
 ## @end itemize
 ## @seealso{odpkg}
 ## @end deftypefn
@@ -35,7 +35,6 @@
 ## Author: Carlo de Falco <carlo at guglielmo.local>
 ## Created: 2008-09-05
 
-
 function sol = bvp4c(odefun,bcfun,solinit,options)
 
   if (isfield(solinit,"x"))
@@ -60,11 +59,11 @@ function sol = bvp4c(odefun,bcfun,solinit,options)
     if (isfield(options,"RelTol"))
       RelTol = options.RelTol;
     endif
-    if (isfield(options,"RelTol"))
+    if (isfield(options,"AbsTol"))
       AbsTol = options.AbsTol;
     endif
   endif
-  
+
   Nvar = rows(u_0);
   Nint = length(t)-1;
   s    = 3;
@@ -100,22 +99,22 @@ function sol = bvp4c(odefun,bcfun,solinit,options)
       du_est(nn,:) = diff(u(nn,:))./h;
     end
 
-    err    = max(abs(f_est-du_est)); semilogy(tm,err), pause(.1)
+    err    = max(abs(f_est-du_est));
     AbsErr = max(err)
     RelErr = AbsErr/norm(du,inf)
 
     if    ( (AbsErr >= AbsTol) && (RelErr >= RelTol) )
       ref_int = find( (err >= AbsTol) & (err./max(max(abs(du))) >= RelTol) );
-      
+
       t_add = tm(ref_int);
       t_old = t;
-      
+
       t     = sort([t, t_add]);
       h     = diff(t);
-      
+
       u_0 = [];
       for nn=1:Nvar
-	u_0(nn,:) = interp1(t_old, u(nn,:), t);
+        u_0(nn,:) = interp1(t_old, u(nn,:), t);
       end
       Nvar = rows(u_0);
       Nint = length(t)-1
@@ -124,44 +123,41 @@ function sol = bvp4c(odefun,bcfun,solinit,options)
     end
 
   endfor
-  
+
   ## K    = reshape(x([1:Nvar*Nint*s]+Nvar*(Nint+1)),Nvar,Nint,s);
   ## K1 = reshape(K(:,:,1), Nvar, Nint);
   ## K2 = reshape(K(:,:,2), Nvar, Nint);
   ## K3 = reshape(K(:,:,3), Nvar, Nint);
 
- 
-
   sol.x = t;
   sol.y = u;
   sol.yp= du;
   sol.parameters = [];
   sol.solver = 'bvp4c';
-  
+
 endfunction
 
 function diff_K = __bvp4c_fun_K__ (t, u, Kin, f, h, s, Nint, Nvar)
 
   %% coefficients
   persistent C = [0      1/2    1 ];
-  
+
   persistent A = [0      0      0;
                   5/24   1/3   -1/24;
-                  1/6    2/3    1/6];	
+                  1/6    2/3    1/6];
 
   for jj = 1:s
     for kk = 1:Nint
       Y = repmat(u(:,kk),1,s) + ...
-	  (reshape(Kin(:,kk,:),Nvar,s) * A.') * h(kk);
+          (reshape(Kin(:,kk,:),Nvar,s) * A.') * h(kk);
       diff_K(:,kk,jj) = Kin(:,kk,jj) - f (t(kk)+C(jj)*h(kk), Y);
     endfor
   endfor
 
 endfunction
 
- 
 function diff_u = __bvp4c_fun_u__ (t, u, K, h, s, Nint, Nvar)
-  
+
   %% coefficients
   persistent B= [1/6 2/3 1/6 ];
 
@@ -174,39 +170,37 @@ function diff_u = __bvp4c_fun_u__ (t, u, K, h, s, Nint, Nvar)
 endfunction
 
 function x = __bvp4c_solve__ (t, x, h, odefun, bcfun, Nvar, Nint, s)
-  fun = @( x ) ( [__bvp4c_fun_u__(t, 
-				  reshape(x(1:Nvar*(Nint+1)),Nvar,(Nint+1)), 
-				  reshape(x([1:Nvar*Nint*s]+Nvar*(Nint+1)),Nvar,Nint,s),
-				  h,
-				  s,
-				  Nint,
-				  Nvar)(:) ;
-		  __bvp4c_fun_K__(t, 
-				  reshape(x(1:Nvar*(Nint+1)),Nvar,(Nint+1)), 
-				  reshape(x([1:Nvar*Nint*s]+Nvar*(Nint+1)),Nvar,Nint,s),
-				  odefun,
-				  h,
-				  s,
-				  Nint,
-				  Nvar)(:);
-		  bcfun(reshape(x(1:Nvar*(Nint+1)),Nvar,Nint+1)(:,1),
-			reshape(x(1:Nvar*(Nint+1)),Nvar,Nint+1)(:,end));
-		  ] );
-  
+  fun = @( x ) ( [__bvp4c_fun_u__(t,
+                                  reshape(x(1:Nvar*(Nint+1)),Nvar,(Nint+1)),
+                                  reshape(x([1:Nvar*Nint*s]+Nvar*(Nint+1)),Nvar,Nint,s),
+                                  h,
+                                  s,
+                                  Nint,
+                                  Nvar)(:) ;
+                  __bvp4c_fun_K__(t,
+                                  reshape(x(1:Nvar*(Nint+1)),Nvar,(Nint+1)),
+                                  reshape(x([1:Nvar*Nint*s]+Nvar*(Nint+1)),Nvar,Nint,s),
+                                  odefun,
+                                  h,
+                                  s,
+                                  Nint,
+                                  Nvar)(:);
+                  bcfun(reshape(x(1:Nvar*(Nint+1)),Nvar,Nint+1)(:,1),
+                        reshape(x(1:Nvar*(Nint+1)),Nvar,Nint+1)(:,end));
+                  ] );
+
   x    = fsolve ( fun, x );
 endfunction
 
-
-
 %!demo
-%! a            = 0; 
+%! a            = 0;
 %! b            = 4;
 %! Nint         = 3;
 %! Nvar         = 2;
 %! s            = 3;
 %! t            = linspace(a,b,Nint+1);
 %! h            = diff(t);
-%! u_1          = ones(1, Nint+1); 
+%! u_1          = ones(1, Nint+1);
 %! u_2          = 0*u_1;
 %! u_0          = [u_1 ; u_2];
 %! f            = @(t,u) [ u(2); -abs(u(1)) ];
@@ -216,14 +210,14 @@ endfunction
 %! plot (sol.x,sol.y,'x-')
 
 %!demo
-%! a            = 0; 
+%! a            = 0;
 %! b            = 4;
 %! Nint         = 2;
 %! Nvar         = 2;
 %! s            = 3;
 %! t            = linspace(a,b,Nint+1);
 %! h            = diff(t);
-%! u_1          = -ones(1, Nint+1); 
+%! u_1          = -ones(1, Nint+1);
 %! u_2          = 0*u_1;
 %! u_0          = [u_1 ; u_2];
 %! f            = @(t,u) [ u(2); -abs(u(1)) ];
diff --git a/src/Makeconf.in b/src/Makeconf.in
deleted file mode 100644
index 3741fbf..0000000
--- a/src/Makeconf.in
+++ /dev/null
@@ -1,69 +0,0 @@
-
-## Makeconf is automatically generated from Makeconf.base and Makeconf.add
-## in the various subdirectories.  To regenerate, use ./autogen.sh to
-## create a new ./Makeconf.in, then use ./configure to generate a new
-## Makeconf.
-
-OCTAVE_FORGE = 1
-
-SHELL = @SHELL@
-
-canonical_host_type = @canonical_host_type@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-bindir = @bindir@
-mandir = @mandir@
-libdir = @libdir@
-datadir = @datadir@
-infodir = @infodir@
-includedir = @includedir@
-datarootdir = @datarootdir@
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALLOCT=octinst.sh
-
-DESTDIR =
-
-RANLIB = @RANLIB@
-STRIP = @STRIP@
-LN_S = @LN_S@
-MKOCTLINK = @MKOCTLINK@
-OCTLINK= @OCTLINK@
-
-AWK = @AWK@
-
-# Most octave programs will be compiled with $(MKOCTFILE).  Those which
-# cannot use mkoctfile directly can request the flags that mkoctfile 
-# would use as follows:
-#    FLAG = $(shell $(MKOCTFILE) -p FLAG)
-# The following flags are for compiling programs that are independent
-# of Octave.  How confusing.
-CC = @CC@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-CPICFLAG = @CPICFLAG@
-CXX = @CXX@
-CXXFLAGS = @CXXFLAGS@
-CXXPICFLAG = @CXXPICFLAG@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FPICFLAG = @FPICFLAG@
-
-OCTAVE = @OCTAVE@
-OCTAVE_VERSION = @OCTAVE_VERSION@
-MKOCTFILE = @MKOCTFILE@ -DHAVE_OCTAVE_$(ver) -v
-SHLEXT = @SHLEXT@
-
-ver = @ver@
-MPATH = @mpath@
-OPATH = @opath@
-XPATH = @xpath@
-ALTMPATH = @altmpath@
-ALTOPATH = @altopath@
-
-%.o: %.c ; $(MKOCTFILE) -c $<
-%.o: %.f ; $(MKOCTFILE) -c $<
-%.o: %.cc ; $(MKOCTFILE) -c $<
-%.oct: %.cc ; $(MKOCTFILE) $<
diff --git a/src/Makefile b/src/Makefile
index ee9b07b..df2a2fd 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -13,12 +13,12 @@ MKOCTFILE ?= mkoctfile
 
 FFLAGS := $(shell $(MKOCTFILE) -p FFLAGS)
 ifeq (gfortran,$(findstring gfortran,$(F77)))
-  FFLAGS := "-fno-automatic $(FFLAGS)"
+  FFLAGS := -fno-automatic $(FFLAGS)
 endif
 ifeq (g95,$(findstring g95,$(F77)))
-  FFLAGS := "-fstatic $(FFLAGS)"
+  FFLAGS := -fstatic $(FFLAGS)
 endif
-MKF77FILE = FFLAGS=$(FFLAGS) $(MKOCTFILE)
+MKF77FILE = FFLAGS="$(FFLAGS)" $(MKOCTFILE)
 
 ifndef LAPACK_LIBS
 LAPACK_LIBS := $(shell $(MKOCTFILE) -p BLAS_LIBS) $(shell $(MKOCTFILE) -p LAPACK_LIBS)
@@ -58,6 +58,7 @@ $(SOLVEROCTFILE) : $(EXTERNALDIRS) $(SOLVEROBJECTS)
 install :
 	@$(INSTALL) -d $(DESTDIR)$(MPATH)/odepkg
 
+.NOTPARALLEL:
 $(EXTERNALDIRS) :
 	@for i in $(EXTERNALPACKS); do \
 	  echo "Unpacking external packages: $$i"; \
diff --git a/src/autogen.sh b/src/autogen.sh
deleted file mode 100755
index 354e6cf..0000000
--- a/src/autogen.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#! /bin/sh
-
-## Generate ./configure
-rm -f configure.in
-echo "dnl --- DO NOT EDIT --- Automatically generated by autogen.sh" > configure.in
-cat configure.base >> configure.in
-cat <<EOF >> configure.in
-  AC_OUTPUT(\$CONFIGURE_OUTPUTS)
-  dnl XXX FIXME XXX chmod is not in autoconf's list of portable functions
-
-  echo " "
-  echo "  \"\\\$prefix\" is \$prefix"
-  echo "  \"\\\$exec_prefix\" is \$exec_prefix"
-  AC_MSG_RESULT([\$STATUS_MSG
-
-find . -name NOINSTALL -print    # shows which toolboxes won't be installed
-])
-EOF
-
-autoconf configure.in > configure.tmp
-if [ diff configure.tmp configure > /dev/null 2>&1 ]; then
-  rm -f configure.tmp;
-else
-  mv -f configure.tmp configure
-  chmod 0755 configure
-fi
-rm -f configure.in
diff --git a/src/cash.diff b/src/cash.diff
index 72c8d73..47de6ba 100644
--- a/src/cash.diff
+++ b/src/cash.diff
@@ -1,3881 +1,3882 @@
-diff -u -u cash.orig/mebdfdae.f cash/mebdfdae.f
---- cash.orig/mebdfdae.f	2007-12-15 21:33:33.000000000 +0100
-+++ cash/mebdfdae.f	2008-01-19 17:41:05.000000000 +0100
-@@ -53,13 +53,13 @@
- C
- C              NOVEMBER 6th 1998:  FIRST RELEASE
- C
--C     OVDRIV 
-+C     A_OVDRIV 
- C     A PACKAGE FOR THE SOLUTION OF THE INITIAL VALUE PROBLEM
- C     FOR SYSTEMS OF ORDINARY DIFFERENTIAL EQUATIONS
- C     DY/DT = F(Y,T),    Y=(Y(1),Y(2),Y(3), . . . ,Y(N))
- C     AND LINEARLY IMPLICIT DIFFERENTIAL ALGEBRAIC EQUATIONS
- C        M(DY/DT) = F(Y,T)
--C     SUBROUTINE OVDRIV IS A DRIVER ROUTINE FOR THIS PACKAGE
-+C     SUBROUTINE A_OVDRIV IS A DRIVER ROUTINE FOR THIS PACKAGE
- C
- C                    REFERENCES
- C
-@@ -79,8 +79,8 @@
- C         SPRINGER 1996, page 267.
- C
- C     ----------------------------------------------------------------
--C     OVDRIV IS TO BE CALLED ONCE FOR EACH OUTPUT VALUE OF T, AND
--C     IN TURN MAKES REPEATED CALLS TO THE CORE INTEGRATOR STIFF.
-+C     A_OVDRIV IS TO BE CALLED ONCE FOR EACH OUTPUT VALUE OF T, AND
-+C     IN TURN MAKES REPEATED CALLS TO THE CORE INTEGRATOR A_STIFF.
- C
- C     THE INPUT PARAMETERS ARE ..
- C     N     =  THE NUMBER OF FIRST ORDER DIFFERENTIAL EQUATIONS.
-@@ -165,7 +165,7 @@
- C              SHOULD BE NON-NEGATIVE. IF ITOL = 1 THEN SINGLE STEP ERROR
- C              ESTIMATES DIVIDED BY YMAX(I) WILL BE KEPT LESS THAN 1
- C              IN ROOT-MEAN-SQUARE NORM.  THE VECTOR YMAX OF WEIGHTS IS
--C              COMPUTED IN OVDRIV. INITIALLY YMAX(I) IS SET AS
-+C              COMPUTED IN A_OVDRIV. INITIALLY YMAX(I) IS SET AS
- C              THE MAXIMUM OF 1 AND ABS(Y(I)).  THEREAFTER YMAX(I) IS
- C              THE LARGEST VALUE OF ABS(Y(I)) SEEN SO FAR, OR THE
- C              INITIAL VALUE YMAX(I) IF THAT IS LARGER.
-@@ -251,20 +251,20 @@
- C     IN ADDITION TO OVDRIVE, THE FOLLOWING ROUTINES ARE PROVIDED
- C     IN THE PACKAGE..
- C
--C     INTERP( - )   INTERPOLATES TO GET THE OUTPUT VALUES
-+C     A_INTERP( - )   INTERPOLATES TO GET THE OUTPUT VALUES
- C                   AT T=TOUT FROM THE DATA IN THE Y ARRAY.
--C     STIFF( - )    IS THE CORE INTEGRATOR ROUTINE.  IT PERFORMS A
-+C     A_STIFF( - )    IS THE CORE INTEGRATOR ROUTINE.  IT PERFORMS A
- C                   SINGLE STEP AND ASSOCIATED ERROR CONTROL.
--C     COSET( - )    SETS COEFFICIENTS FOR BACKWARD DIFFERENTIATION
-+C     A_COSET( - )    SETS COEFFICIENTS FOR BACKWARD DIFFERENTIATION
- C                   SCHEMES FOR USE IN THE CORE INTEGRATOR.
--C     PSET( - )     COMPUTES AND PROCESSES THE JACOBIAN
-+C     A_PSET( - )     COMPUTES AND PROCESSES THE JACOBIAN
- C                   MATRIX J = DF/DY
--C     DEC( - )      PERFORMS AN LU DECOMPOSITION ON A MATRIX.
--C     SOL( - )      SOLVES LINEAR SYSTEMS A*X = B AFTER DEC
-+C     A_DEC( - )      PERFORMS AN LU DECOMPOSITION ON A MATRIX.
-+C     A_SOL( - )      SOLVES LINEAR SYSTEMS A*X = B AFTER A_DEC
- C                   HAS BEEN CALLED FOR THE MATRIX A
--C     DGBFA ( - )   FACTORS A DOUBLE PRECISION BAND MATRIX BY
-+C     A_DGBFA ( - )   FACTORS A DOUBLE PRECISION BAND MATRIX BY
- C                   ELIMINATION.
--C     DGBSL ( - )   SOLVES A BANDED LINEAR SYSTEM A*x=b
-+C     A_DGBSL ( - )   SOLVES A BANDED LINEAR SYSTEM A*x=b
- C
- C                   ALSO SUPPLIED ARE THE BLAS ROUTINES
- C
-@@ -338,7 +338,7 @@
- C     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- C     THIS SUBROUTINE IS FOR THE PURPOSE               *
- C     OF SPLITTING UP THE WORK ARRAYS WORK AND IWORK   *
--C     FOR USE INSIDE THE INTEGRATOR STIFF              *
-+C     FOR USE INSIDE THE INTEGRATOR A_STIFF              *
- C     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- 
- C     .. SCALAR ARGUMENTS ..
-@@ -353,7 +353,7 @@
- C     COMMON BLOCKS
- C     ..
- C     .. EXTERNAL SUBROUTINES ..
--      EXTERNAL OVDRIV,F,PDERV,MAS
-+      EXTERNAL A_OVDRIV,F,PDERV,MAS
- C     ..
- C     .. SAVE STATEMENT ..
-       SAVE  I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12
-@@ -401,7 +401,7 @@
- c    WORKSPACE HAS TO BE AT LEAST N+14.
- c
- 
--      CALL OVDRIV(N,T0,HO,Y0,TOUT,TEND,MF,IDID,LOUT,WORK(3),WORK(I1),
-+      CALL A_OVDRIV(N,T0,HO,Y0,TOUT,TEND,MF,IDID,LOUT,WORK(3),WORK(I1),
-      +     WORK(I2),WORK(I3),WORK(I4),WORK(I5),WORK(I6),WORK(I7),
-      +     WORK(I8),WORK(I9),WORK(I10),WORK(I11),IWORK(15),MBND,MASBND,
-      +     IWORK(1),IWORK(2),IWORK(3),MAXDER,ITOL,RTOL,ATOL,RPAR,IPAR,
-@@ -431,7 +431,7 @@
-      +       '                     WITH N = ',I6)
-       END
- 
--      SUBROUTINE OVDRIV(N,T0,HO,Y0,TOUT,TEND,MF,IDID,LOUT,Y,YHOLD,
-+      SUBROUTINE A_OVDRIV(N,T0,HO,Y0,TOUT,TEND,MF,IDID,LOUT,Y,YHOLD,
-      +           YNHOLD,YMAX,ERRORS,SAVE1,SAVE2,SCALE,ARH,PW,PWCOPY,
-      +           AM,IPIV,MBND,MASBND,NIND1,NIND2,NIND3,MAXDER,ITOL,
-      +           RTOL,ATOL,RPAR,IPAR,F,PDERV,MAS,NQUSED,NSTEP,NFAIL,
-@@ -457,7 +457,7 @@
-       INTEGER I,KGO,NHCUT
- C     ..
- C     .. EXTERNAL SUBROUTINES ..
--      EXTERNAL INTERP,STIFF,F,PDERV,MAS
-+      EXTERNAL A_INTERP,A_STIFF,F,PDERV,MAS
- C     ..
- C     .. INTRINSIC FUNCTIONS ..
-       INTRINSIC DABS,DMAX1
-@@ -475,7 +475,7 @@
-          HMAX = DABS(TEND-T0)*10.0D+0
-          IF ((T-TOUT)*H.GE.0.0D+0) THEN
- C           HAVE OVERSHOT THE OUTPUT POINT, SO INTERPOLATE
--            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+            CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-             IDID = KFLAG
-             T0 = TOUT
-             HO = H
-@@ -493,7 +493,7 @@
-             IF (((T-TOUT)*H.GE.0.0D+0) .OR. (DABS(T-TOUT).LE.
-      +          100.0D+0*UROUND*HMAX)) THEN
- C              HAVE OVERSHOT THE OUTPUT POINT, SO INTERPOLATE
--               CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+               CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-                T0 = TOUT
-                HO = H
-                IDID = KFLAG
-@@ -520,7 +520,7 @@
-          IF ((T-TOUT)*H.GE.0.0D+0) THEN
- C           HAVE OVERSHOT TOUT
-             WRITE (LOUT,9080) T,TOUT,H
--            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+            CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-             HO = H
-             T0 = TOUT
-             IDID = -5
-@@ -534,7 +534,7 @@
-          T0 = T
-          IF ((T-TOUT)*H.GE.0.0D+0) THEN
- C           HAVE OVERSHOT,SO INTERPOLATE
--            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+            CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-             IDID = KFLAG
-             T0 = TOUT
-             HO = H
-@@ -667,7 +667,7 @@
-    20 IF ((T+H).EQ.T) THEN
-          WRITE (LOUT,9000)
-       END IF
--      CALL STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,MASBND,
-+      CALL A_STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,MASBND,
-      +    NIND1,NIND2,NIND3,T,TOUT,TEND,Y,N,
-      +    YMAX,ERRORS,SAVE1,SAVE2,SCALE,PW,PWCOPY,AM,YHOLD,
-      +    YNHOLD,ARH,IPIV,LOUT,MAXDER,ITOL,RTOL,ATOL,RPAR,IPAR,F,
-@@ -679,7 +679,7 @@
-       ENDIF
-       KGO = 1 - KFLAG
-       IF (KGO.EQ.1) THEN
--C        NORMAL RETURN FROM STIFF
-+C        NORMAL RETURN FROM A_STIFF
-          GO TO 30
- 
-       ELSE IF (KGO.EQ.2) THEN
-@@ -756,7 +756,7 @@
-             IF (((T-TOUT)*H.GE.0.0D+0) .OR. (DABS(T-TOUT).LE.
-      +          100.0D+0*UROUND*HMAX)) THEN
- C              HAVE OVERSHOT, SO INTERPOLATE
--               CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+               CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-                T0 = TOUT
-                HO = H
-                IDID = KFLAG
-@@ -773,7 +773,7 @@
- 
-       ELSE IF ((T-TOUT)*H.GE.0.0D+0) THEN
- C        HAVE OVERSHOT, SO INTERPOLATE
--         CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+         CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-          IDID = KFLAG
-          HO = H
-          T0 = TOUT
-@@ -812,14 +812,14 @@
- 
-       ELSE
- C        HAVE PASSED TOUT SO INTERPOLATE
--         CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+         CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-          T0 = TOUT
-          IDID = KFLAG
-       END IF
-       HO = H
-       IF(KFLAG.NE.0) IDID = KFLAG
-       RETURN
--C -------------------------- END OF SUBROUTINE OVDRIV -----------------
-+C -------------------------- END OF SUBROUTINE A_OVDRIV -----------------
-  9000 FORMAT (' WARNING..  T + H = T ON NEXT STEP.')
-  9010 FORMAT (/,/,' KFLAG = -2 FROM INTEGRATOR AT T = ',E16.8,'  H =',
-      +       E16.8,/,
-@@ -853,7 +853,7 @@
- 
- 
-       END
--      SUBROUTINE INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+      SUBROUTINE A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C     .. SCALAR ARGUMENTS ..
-@@ -880,14 +880,14 @@
-    20   CONTINUE
-    30 CONTINUE
-       RETURN
--C -------------- END OF SUBROUTINE INTERP ---------------------------
-+C -------------- END OF SUBROUTINE A_INTERP ---------------------------
-       END
--      SUBROUTINE COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-+      SUBROUTINE A_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
- 
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C --------------------------------------------------------------------
--C     COSET IS CALLED BY THE INTEGRATOR AND SETS THE COEFFICIENTS USED
-+C     A_COSET IS CALLED BY THE INTEGRATOR AND SETS THE COEFFICIENTS USED
- C     BY THE CONVENTIONAL BACKWARD DIFFERENTIATION SCHEME AND THE
- C     MODIFIED EXTENDED BACKWARD DIFFERENTIATION SCHEME.  THE VECTOR
- C     EL OF LENGTH NQ+1 DETERMINES THE BASIC BDF METHOD WHILE THE VECTOR
-@@ -1017,10 +1017,10 @@
-       TQ(4) = 0.5D+0*TQ(2)/DBLE(FLOAT(NQ))
-       IF(NQ.NE.1) TQ(5)=PERTST(NQ-1,1)
-       RETURN
--C --------------------- END OF SUBROUTINE COSET ---------------------
-+C --------------------- END OF SUBROUTINE A_COSET ---------------------
-       END
- 
--      SUBROUTINE PSET(Y,N,H,T,UROUND,EPSJAC,CON,MITER,MBND,
-+      SUBROUTINE A_PSET(Y,N,H,T,UROUND,EPSJAC,CON,MITER,MBND,
-      +            MASBND,NIND1,NIND2,NIND3,IER,F,PDERV,MAS,
-      +           NRENEW,YMAX,SAVE1,SAVE2,PW,PWCOPY,AM,WRKSPC,IPIV,
-      +           ITOL,RTOL,ATOL,NPSET,NJE,NFE,NDEC,IPAR,RPAR,IERR)
-@@ -1029,7 +1029,7 @@
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C -------------------------------------------------------------------
--C     PSET IS CALLED BY STIFF TO COMPUTE AND PROCESS THE MATRIX
-+C     A_PSET IS CALLED BY A_STIFF TO COMPUTE AND PROCESS THE MATRIX
- C     M/(H*EL(1)) - J  WHERE J IS AN APPROXIMATION TO THE RELEVANT JACOBIAN
- C     AND M IS THE MASS MATRIX.  THIS MATRIX IS THEN SUBJECTED TO LU
- C     DECOMPOSITION IN PREPARATION FOR LATER SOLUTION OF LINEAR SYSTEMS
-@@ -1037,7 +1037,7 @@
- C     MATRIX J IS FOUND BY THE USER-SUPPLIED ROUTINE PDERV IF MITER=1
- C     OR 3 OR BY FINITE DIFFERENCING IF MITER = 2 OR 4.
- C     IN ADDITION TO VARIABLES DESCRIBED PREVIOUSLY, COMMUNICATION WITH
--C     PSET USES THE FOLLOWING ..
-+C     A_PSET USES THE FOLLOWING ..
- C     EPSJAC = DSQRT(UROUND), USED IN NUMERICAL JACOBIAN INCREMENTS.
- C *******************************************************************
- C     THE ARGUMENT NRENEW IS USED TO SIGNAL WHETHER OR NOT
-@@ -1060,7 +1060,7 @@
-       INTEGER I,J,J1,JJKK,FOUR,FIVE
- C     ..
- C     .. EXTERNAL SUBROUTINES ..
--      EXTERNAL DEC,F,PDERV,DGBFA,MAS
-+      EXTERNAL A_DEC,F,PDERV,A_DGBFA,MAS
- C     ..
- C     .. INTRINSIC FUNCTIONS ..
-       INTRINSIC DABS,DMAX1,DSQRT
-@@ -1267,7 +1267,7 @@
-             II = II + MBND(4)
-  75      CONTINUE
-       ENDIF
--         CALL DGBFA(PW,MBND(4),N,ML,MU,IPIV,IER)
-+         CALL A_DGBFA(PW,MBND(4),N,ML,MU,IPIV,IER)
-          NDEC = NDEC + 1
-       ELSE
-       IF(MASBND(1).EQ.0) THEN
-@@ -1278,13 +1278,13 @@
-             J = J + NP1
-  80      CONTINUE
-       ENDIF
--         CALL DEC(N,N,PW,IPIV,IER)
-+         CALL A_DEC(N,N,PW,IPIV,IER)
-          NDEC = NDEC + 1
-       ENDIF
-       RETURN
--C ---------------------- END OF SUBROUTINE PSET ---------------------
-+C ---------------------- END OF SUBROUTINE A_PSET ---------------------
-       END
--      SUBROUTINE DEC(N,NDIM,A,IP,IER)
-+      SUBROUTINE A_DEC(N,NDIM,A,IP,IER)
- 
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
-@@ -1301,9 +1301,9 @@
- C     IP(N) = (-1)**(NUMBER OF INTERCHANGES) OR 0.
- C     IER = 0 IF MATRIX IS NON-SINGULAR, OR K IF FOUND TO BE SINGULAR
- C                  AT STAGE K.
--C     USE SOL TO OBTAIN SOLUTION OF LINEAR SYSTEM.
-+C     USE A_SOL TO OBTAIN SOLUTION OF LINEAR SYSTEM.
- C     DETERM(A) = IP(N)*A(1,1)*A(2,2)* . . . *A(N,N).
--C     IF IP(N) = 0, A IS SINGULAR, SOL WILL DIVIDE BY ZERO.
-+C     IF IP(N) = 0, A IS SINGULAR, A_SOL WILL DIVIDE BY ZERO.
- C
- C     REFERENCE.
- C     C.B. MOLER, ALGORITHM 423, LINEAR EQUATION SOLVER, C.A.C.M
-@@ -1362,9 +1362,9 @@
-    80 IER = K
-       IP(N) = 0
-       RETURN
--C     --------------------- END OF SUBROUTINE DEC ----------------------
-+C     --------------------- END OF SUBROUTINE A_DEC ----------------------
-       END
--      SUBROUTINE SOL(N,NDIM,A,B,IP)
-+      SUBROUTINE A_SOL(N,NDIM,A,B,IP)
- 
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
-@@ -1386,10 +1386,10 @@
- C     INPUT ..
- C     N = ORDER OF MATRIX.
- C     NDIM = DECLARED DIMENSION OF MATRIX A.
--C     A = TRIANGULARISED MATRIX OBTAINED FROM DEC.
-+C     A = TRIANGULARISED MATRIX OBTAINED FROM A_DEC.
- C     B = RIGHT HAND SIDE VECTOR.
--C     IP = PIVOT VECTOR OBTAINED FROM DEC.
--C     DO NOT USE IF DEC HAS SET IER .NE. 0
-+C     IP = PIVOT VECTOR OBTAINED FROM A_DEC.
-+C     DO NOT USE IF A_DEC HAS SET IER .NE. 0
- C     OUTPUT..
- C     B = SOLUTION VECTOR, X.
- C     ------------------------------------------------------------------
-@@ -1416,15 +1416,15 @@
-    40 CONTINUE
-    50 B(1) = B(1)/A(1,1)
-       RETURN
--C     ------------------------- END OF SUBROUTINE SOL ------------------
-+C     ------------------------- END OF SUBROUTINE A_SOL ------------------
-       END
--      subroutine dgbfa(abd,lda,n,ml,mu,ipvt,info)
-+      subroutine a_dgbfa(abd,lda,n,ml,mu,ipvt,info)
-       integer lda,n,ml,mu,ipvt(1),info
-       double precision abd(lda,1)
- c
--c     dgbfa factors a double precision band matrix by elimination.
-+c     a_dgbfa factors a double precision band matrix by elimination.
- c
--c     dgbfa is usually called by dgbco, but it can be called
-+c     a_dgbfa is usually called by dgbco, but it can be called
- c     directly with a saving in time if  rcond  is not needed.
- c
- c     on entry
-@@ -1466,7 +1466,7 @@
- c                = 0  normal value.
- c                = k  if  u(k,k) .eq. 0.0 .  this is not an error
- c                     condition for this subroutine, but it does
--c                     indicate that dgbsl will divide by zero if
-+c                     indicate that a_dgbsl will divide by zero if
- c                     called.  use  rcond  in dgbco for a reliable
- c                     indication of singularity.
- c
-@@ -1593,151 +1593,18 @@
-       return
-       end
- c
--      subroutine daxpy(n,da,dx,incx,dy,incy)
--c
--c     constant times a vector plus a vector.
--c     uses unrolled loops for increments equal to one.
--c     jack dongarra, linpack, 3/11/78.
--c
--      double precision dx(1),dy(1),da
--      integer i,incx,incy,ix,iy,m,mp1,n
--c
--      if(n.le.0)return
--      if (da .eq. 0.0d0) return
--      if(incx.eq.1.and.incy.eq.1)go to 20
--c
--c        code for unequal increments or equal increments
--c          not equal to 1
--c
--      ix = 1
--      iy = 1
--      if(incx.lt.0)ix = (-n+1)*incx + 1
--      if(incy.lt.0)iy = (-n+1)*incy + 1
--      do 10 i = 1,n
--        dy(iy) = dy(iy) + da*dx(ix)
--        ix = ix + incx
--        iy = iy + incy
--   10 continue
--      return
--c
--c        code for both increments equal to 1
--c
--c
--c        clean-up loop
--c
--   20 m = mod(n,4)
--      if( m .eq. 0 ) go to 40
--      do 30 i = 1,m
--        dy(i) = dy(i) + da*dx(i)
--   30 continue
--      if( n .lt. 4 ) return
--   40 mp1 = m + 1
--      do 50 i = mp1,n,4
--        dy(i) = dy(i) + da*dx(i)
--        dy(i + 1) = dy(i + 1) + da*dx(i + 1)
--        dy(i + 2) = dy(i + 2) + da*dx(i + 2)
--        dy(i + 3) = dy(i + 3) + da*dx(i + 3)
--   50 continue
--      return
--      end
--c
--      subroutine  dscal(n,da,dx,incx)
--c
--c     scales a vector by a constant.
--c     uses unrolled loops for increment equal to one.
--c     jack dongarra, linpack, 3/11/78.
--c     modified to correct problem with negative increment, 8/21/90.
--c
--      double precision da,dx(1)
--      integer i,incx,ix,m,mp1,n
--c
--      if(n.le.0)return
--      if(incx.eq.1)go to 20
--c
--c        code for increment not equal to 1
--c
--      ix = 1
--      if(incx.lt.0)ix = (-n+1)*incx + 1
--      do 10 i = 1,n
--        dx(ix) = da*dx(ix)
--        ix = ix + incx
--   10 continue
--      return
--c
--c        code for increment equal to 1
--c
--c
--c        clean-up loop
--c
--   20 m = mod(n,5)
--      if( m .eq. 0 ) go to 40
--      do 30 i = 1,m
--        dx(i) = da*dx(i)
--   30 continue
--      if( n .lt. 5 ) return
--   40 mp1 = m + 1
--      do 50 i = mp1,n,5
--        dx(i) = da*dx(i)
--        dx(i + 1) = da*dx(i + 1)
--        dx(i + 2) = da*dx(i + 2)
--        dx(i + 3) = da*dx(i + 3)
--        dx(i + 4) = da*dx(i + 4)
--   50 continue
--      return
--      end
--c
--      integer function idamax(n,dx,incx)
--c
--c     finds the index of element having max. absolute value.
--c     jack dongarra, linpack, 3/11/78.
--c     modified to correct problem with negative increment, 8/21/90.
--c
--      double precision dx(1),dmax
--      integer i,incx,ix,n
--c
--      idamax = 0
--      if( n .lt. 1 ) return
--      idamax = 1
--      if(n.eq.1)return
--      if(incx.eq.1)go to 20
--c
--c        code for increment not equal to 1
--c
--      ix = 1
--      if(incx.lt.0)ix = (-n+1)*incx + 1
--      dmax = dabs(dx(ix))
--      ix = ix + incx
--      do 10 i = 2,n
--         if(dabs(dx(ix)).le.dmax) go to 5
--         idamax = i
--         dmax = dabs(dx(ix))
--    5    ix = ix + incx
--   10 continue
--      return
--c
--c        code for increment equal to 1
--c
--   20 dmax = dabs(dx(1))
--      do 30 i = 2,n
--         if(dabs(dx(i)).le.dmax) go to 30
--         idamax = i
--         dmax = dabs(dx(i))
--   30 continue
--      return
--      end
--
--      subroutine dgbsl(abd,lda,n,ml,mu,ipvt,b,job)
-+      subroutine a_dgbsl(abd,lda,n,ml,mu,ipvt,b,job)
-       integer lda,n,ml,mu,ipvt(*),job
-       double precision abd(lda,*),b(*)
- c
--c     dgbsl solves the double precision band system
-+c     a_dgbsl solves the double precision band system
- c     a * x = b  or  trans(a) * x = b
--c     using the factors computed by dgbco or dgbfa.
-+c     using the factors computed by dgbco or a_dgbfa.
- c
- c     on entry
- c
- c        abd     double precision(lda, n)
--c                the output from dgbco or dgbfa.
-+c                the output from dgbco or a_dgbfa.
- c
- c        lda     integer
- c                the leading dimension of the array  abd .
-@@ -1752,7 +1619,7 @@
- c                number of diagonals above the main diagonal.
- c
- c        ipvt    integer(n)
--c                the pivot vector from dgbco or dgbfa.
-+c                the pivot vector from dgbco or a_dgbfa.
- c
- c        b       double precision(n)
- c                the right hand side vector.
-@@ -1773,14 +1640,14 @@
- c        but it is often caused by improper arguments or improper
- c        setting of lda .  it will not occur if the subroutines are
- c        called correctly and if dgbco has set rcond .gt. 0.0
--c        or dgbfa has set info .eq. 0 .
-+c        or a_dgbfa has set info .eq. 0 .
- c
- c     to compute  inverse(a) * c  where  c  is a matrix
- c     with  p  columns
- c           call dgbco(abd,lda,n,ml,mu,ipvt,rcond,z)
- c           if (rcond is too small) go to ...
- c           do 10 j = 1, p
--c              call dgbsl(abd,lda,n,ml,mu,ipvt,c(1,j),0)
-+c              call a_dgbsl(abd,lda,n,ml,mu,ipvt,c(1,j),0)
- c        10 continue
- c
- c     linpack. this version dated 08/14/78 .
-@@ -1862,62 +1729,13 @@
-       return
-       end
- c
--      double precision function ddot(n,dx,incx,dy,incy)
--c
--c     forms the dot product of two vectors.
--c     uses unrolled loops for increments equal to one.
--c     jack dongarra, linpack, 3/11/78.
--c
--      double precision dx(1),dy(1),dtemp
--      integer i,incx,incy,ix,iy,m,mp1,n
--c
--      ddot = 0.0d0
--      dtemp = 0.0d0
--      if(n.le.0)return
--      if(incx.eq.1.and.incy.eq.1)go to 20
--c
--c        code for unequal increments or equal increments
--c          not equal to 1
--c
--      ix = 1
--      iy = 1
--      if(incx.lt.0)ix = (-n+1)*incx + 1
--      if(incy.lt.0)iy = (-n+1)*incy + 1
--      do 10 i = 1,n
--        dtemp = dtemp + dx(ix)*dy(iy)
--        ix = ix + incx
--        iy = iy + incy
--   10 continue
--      ddot = dtemp
--      return
--c
--c        code for both increments equal to 1
--c
--c
--c        clean-up loop
--c
--   20 m = mod(n,5)
--      if( m .eq. 0 ) go to 40
--      do 30 i = 1,m
--        dtemp = dtemp + dx(i)*dy(i)
--   30 continue
--      if( n .lt. 5 ) go to 60
--   40 mp1 = m + 1
--      do 50 i = mp1,n,5
--        dtemp = dtemp + dx(i)*dy(i) + dx(i + 1)*dy(i + 1) +
--     *   dx(i + 2)*dy(i + 2) + dx(i + 3)*dy(i + 3) + dx(i + 4)*dy(i + 4)
--   50 continue
--   60 ddot = dtemp
--      return
--      end
--
--      SUBROUTINE ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-+      SUBROUTINE A_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C     ***************************************************
- C
- C     THIS ROUTINE CALCULATES ERRORS USED IN TESTS
--C     IN STIFF .
-+C     IN A_STIFF .
- C
- C     ***************************************************
- C     .. SCALAR ARGUMENTS ..
-@@ -1950,7 +1768,7 @@
- C     ** ERROR ASSOCIATED WITH METHOD OF ORDER TWO LOWER.
-       RETURN
-       END
--      SUBROUTINE PRDICT(T,H,Y,L,N,YPRIME,NFE,IPAR,RPAR,F,IERR)
-+      SUBROUTINE A_PRDICT(T,H,Y,L,N,YPRIME,NFE,IPAR,RPAR,F,IERR)
- 
- 
- 
-@@ -1987,10 +1805,10 @@
-       RETURN
- 
-       END
--      SUBROUTINE ITRAT2(QQQ,Y,N,T,HBETA,ERRBND,ARH,CRATE,TCRATE,M,WORKED
--     +     ,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,AM,MASBND,NIND1,
--     +      NIND2,NIND3,IPIV,LMB,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,NBSOL,
--     +      NFE,NQUSED,F,IERR)
-+      SUBROUTINE A_ITRAT2(QQQ,Y,N,T,HBETA,ERRBND,ARH,CRATE,TCRATE,M,
-+     +      WORKED,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,AM,MASBND,
-+     +      NIND1,NIND2,NIND3,IPIV,LMB,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,
-+     +      NBSOL,NFE,NQUSED,F,IERR)
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C     .. SCALAR ARGUMENTS ..
-@@ -2006,7 +1824,7 @@
-       INTEGER I
- C     ..
- C     .. EXTERNAL SUBROUTINES ..
--      EXTERNAL F,SOL,DGBSL
-+      EXTERNAL F,A_SOL,A_DGBSL
- C     ..
- C     .. INTRINSIC FUNCTIONS ..
-       INTRINSIC DMAX1,DMIN1
-@@ -2077,10 +1895,10 @@
- 8812   CONTINUE
-       ENDIF
-       IF(MF.GE.23) THEN
--        CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
-+        CALL A_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
-         NBSOL = NBSOL + 1
-       ELSE
--         CALL SOL(N,N,PW,SAVE1,IPIV)
-+         CALL A_SOL(N,N,PW,SAVE1,IPIV)
-          NBSOL = NBSOL + 1
-       ENDIF
-       D = ZERO
-@@ -2131,10 +1949,10 @@
- C     IF WE ARE HERE THEN PARTIALS ARE O.K.
- C
-       IF( MF.GE. 23) THEN
--          CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
-+          CALL A_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
-         NBSOL=NBSOL + 1
-       ELSE
--         CALL SOL(N,N,PW,SAVE1,IPIV)
-+         CALL A_SOL(N,N,PW,SAVE1,IPIV)
-          NBSOL = NBSOL + 1
-       ENDIF
- C
-@@ -2180,7 +1998,7 @@
- 
-       END
- 
--      SUBROUTINE STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
-+      SUBROUTINE A_STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
-      +      MASBND,NIND1,NIND2,NIND3,T,TOUT,TEND,Y,N,
-      +      YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,PWCOPY,AM,YHOLD,
-      +      YNHOLD,ARH,IPIV,LOUT,MAXDER,ITOL,RTOL,ATOL,RPAR,IPAR,F,
-@@ -2191,13 +2009,13 @@
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C     ------------------------------------------------------------------
--C     THE SUBROUTINE STIFF PERFORMS ONE STEP OF THE INTEGRATION OF AN
-+C     THE SUBROUTINE A_STIFF PERFORMS ONE STEP OF THE INTEGRATION OF AN
- C     INITIAL VALUE PROBLEM FOR A SYSTEM OF ORDINARY DIFFERENTIAL
- C     EQUATIONS OR LINEARLY IMPLICIT DIFFERENTIAL ALGEBRAIC EQUATIONS.
--C     COMMUNICATION WITH STIFF IS DONE WITH THE FOLLOWING VARIABLES..
-+C     COMMUNICATION WITH A_STIFF IS DONE WITH THE FOLLOWING VARIABLES..
- C     Y      AN N BY LMAX+3 ARRAY CONTAINING THE DEPENDENT VARIABLES
- C              AND THEIR BACKWARD DIFFERENCES.  MAXDER (=LMAX-1) IS THE
--C              MAXIMUM ORDER AVAILABLE.  SEE SUBROUTINE COSET.
-+C              MAXIMUM ORDER AVAILABLE.  SEE SUBROUTINE A_COSET.
- C              Y(I,J+1) CONTAINS THE JTH BACKWARD DIFFERENCE OF Y(I)
- C     T      THE INDEPENDENT VARIABLE. T IS UPDATED ON EACH STEP TAKEN.
- C     H      THE STEPSIZE TO BE ATTEMPTED ON THE NEXT STEP.
-@@ -2207,7 +2025,7 @@
- C     HMIN   THE MINIMUM AND MAXIMUM ABSOLUTE VALUE OF THE STEPSIZE
- C     HMAX   TO BE USED FOR THE STEP.  THESE MAY BE CHANGED AT ANY
- C              TIME BUT WILL NOT TAKE EFFECT UNTIL THE NEXT H CHANGE.
--C     RTOL,ATOL  THE ERROR BOUNDS. SEE DESCRIPTION IN OVDRIV.
-+C     RTOL,ATOL  THE ERROR BOUNDS. SEE DESCRIPTION IN A_OVDRIV.
- C     N      THE NUMBER OF FIRST ORDER DIFFERENTIAL EQUATIONS.
- C     MF     THE METHOD FLAG.  MUST BE SET TO 21,22,23 OR 24 AT PRESENT
- C     KFLAG  A COMPLETION FLAG WITH THE FOLLOWING MEANINGS..
-@@ -2242,7 +2060,7 @@
- C                MATRIX WAS FORMED BY A NEW J.
- C     AVOLDJ   STORES VALUE FOR AVERAGE CRATE WHEN ITERATION
- C                MATRIX WAS FORMED BY AN OLD J.
--C     NRENEW   FLAG THAT IS USED IN COMMUNICATION WITH SUBROUTINE PSET.
-+C     NRENEW   FLAG THAT IS USED IN COMMUNICATION WITH SUBROUTINE A_PSET.
- C                IF  NRENEW > 0  THEN FORM A NEW JACOBIAN BEFORE
- C                                COMPUTING THE COEFFICIENT MATRIX FOR
- C                                THE NEWTON-RAPHSON ITERATION
-@@ -2271,8 +2089,8 @@
-       DIMENSION  EL(10),ELST(10),TQ(5)
- C     ..
- C     .. EXTERNAL SUBROUTINES ..
--      EXTERNAL COSET,CPYARY,ERRORS,F,HCHOSE,ITRAT2,
--     +         PRDICT,PSET,RSCALE,SOL,DGBSL,PDERV,MAS
-+      EXTERNAL A_COSET,A_CPYARY,A_ERRORS,F,A_HCHOSE,A_ITRAT2,
-+     +         A_PRDICT,A_PSET,A_RSCALE,A_SOL,A_DGBSL,PDERV,MAS
- C     ..
- C     .. INTRINSIC FUNCTIONS ..
-       INTRINSIC DABS,DMAX1,DMIN1
-@@ -2378,7 +2196,7 @@
- C     BE RE-SCALED.  IF H IS CHANGED, IDOUB IS SET TO L+1 TO PREVENT
- C     FURTHER CHANGES IN H FOR THAT MANY STEPS.
- C     -----------------------------------------------------------------
--      CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-+      CALL A_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-       LMAX = MAXDER + 1
-       RC = RC*EL(1)/OLDLO
-       OLDLO = EL(1)
-@@ -2389,20 +2207,20 @@
- C     NRENEW AND NEWPAR ARE TO INSTRUCT ROUTINE THAT
- C     WE WISH A NEW J TO BE CALCULATED FOR THIS STEP.
- C     *****************************************************
--      CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-+      CALL A_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-       DO 20 I = 1,N
-         ARH(I) = EL(2)*Y(I,1)
-    20 CONTINUE
--      CALL CPYARY(N*L,Y,YHOLD)
-+      CALL A_CPYARY(N*L,Y,YHOLD)
-       QI = H*EL(1)
-       QQ = ONE/QI
--      CALL PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
-+      CALL A_PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
-       IF(IERR.NE.0) GOTO 8000
-       GO TO 110
- C     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- C     DIFFERENT PARAMETERS ON THIS CALL        <
- C     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
--   30 CALL CPYARY(N*L,YHOLD,Y)
-+   30 CALL A_CPYARY(N*L,YHOLD,Y)
-       IF (MF.NE.MFOLD) THEN
-          METH = MF/10
-          MITER = MF - 10*METH
-@@ -2445,7 +2263,7 @@
- C     *********************************************
-    40 RH = DMAX1(RH,HMIN/DABS(H))
-    50 RH = DMIN1(RH,HMAX/DABS(H),RMAX)
--      CALL RSCALE(N,L,RH,Y)
-+      CALL A_RSCALE(N,L,RH,Y)
-       RMAX = 10.0D+0
-       JCHANG = 1
-       H = H*RH
-@@ -2462,7 +2280,7 @@
-       END IF
- 
-       IDOUB = L + 1
--      CALL CPYARY(N*L,Y,YHOLD)
-+      CALL A_CPYARY(N*L,Y,YHOLD)
- 
-    60 IF (DABS(RC-ONE).GT.UPBND) IWEVAL = MITER
-       HUSED = H
-@@ -2487,7 +2305,7 @@
-       IF (JCHANG.EQ.1) THEN
- C        IF WE HAVE CHANGED STEPSIZE THEN PREDICT A VALUE FOR Y(T+H)
- C        AND EVALUATE THE DERIVATIVE THERE (STORED IN SAVE2())
--         CALL PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
-+         CALL A_PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
-          IF(IERR.NE.0) GOTO 8000
- 
-       ELSE
-@@ -2507,7 +2325,7 @@
- C -------------------------------------------------------------------
- C     IF INDICATED, THE MATRIX P = I/(H*EL(2)) - J IS RE-EVALUATED BEFORE
- C     STARTING THE CORRECTOR ITERATION.  IWEVAL IS SET = 0 TO INDICATE
--C     THAT THIS HAS BEEN DONE. P IS COMPUTED AND PROCESSED IN PSET.
-+C     THAT THIS HAS BEEN DONE. P IS COMPUTED AND PROCESSED IN A_PSET.
- C     THE PROCESSED MATRIX IS STORED IN PW
- C -------------------------------------------------------------------
-       IWEVAL = 0
-@@ -2573,13 +2391,13 @@
-       JSNOLD = 0
-       MQ1TMP = MEQC1
-       MQ2TMP = MEQC2
--      CALL PSET(Y,N,H,T,UROUND,EPSJAC,QI,MITER,MBND,MASBND,
-+      CALL A_PSET(Y,N,H,T,UROUND,EPSJAC,QI,MITER,MBND,MASBND,
-      +   NIND1,NIND2,NIND3,IER,F,PDERV,MAS,NRENEW,YMAX,SAVE1,SAVE2,
-      +   PW,PWCOPY,AM,ERROR,IPIV,ITOL,RTOL,ATOL,NPSET,NJE,NFE,NDEC,IPAR
-      +   ,RPAR,IERR)
-       IF(IERR.NE.0) GOTO 8000
-       QQQ=QI
--C     NOTE THAT ERROR() IS JUST BEING USED AS A WORKSPACE BY PSET
-+C     NOTE THAT ERROR() IS JUST BEING USED AS A WORKSPACE BY A_PSET
-       IF (IER.NE.0) THEN
- C     IF IER>0 THEN WE HAVE HAD A SINGULARITY IN THE ITERATION MATRIX
-             IJUS=1
-@@ -2603,7 +2421,7 @@
- C     LOOP. THE UPDATED Y VECTOR IS STORED TEMPORARILY IN SAVE1.
- C **********************************************************************
-       IF (.NOT.SAMPLE) THEN
--         CALL ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,WORKED,YMAX,
-+        CALL A_ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,WORKED,YMAX,
-      +         ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,AM,MASBND,
-      + NIND1,NIND2,NIND3,IPIV,1,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,NBSOL,
-      + NFE,NQUSED,F,IERR)
-@@ -2611,7 +2429,7 @@
-          ITST = 2
- 
-       ELSE
--         CALL ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,WORKED,YMAX,
-+        CALL A_ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,WORKED,YMAX,
-      +         ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,AM,MASBND,
-      +NIND1,NIND2,NIND3,IPIV,0,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,NBSOL,
-      + NFE,NQUSED,F,IERR)
-@@ -2752,7 +2570,7 @@
-           ARH(I) = ARH(I) + EL(JP1)*Y(I,J1)
-   200   CONTINUE
-   210 CONTINUE
--      CALL PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
-+      CALL A_PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
-       IF(IERR.NE.0) GOTO 8000
-       DO 220 I = 1,N
-         SAVE1(I) = Y(I,1)
-@@ -2763,7 +2581,7 @@
- C     FOR NOW WILL ASSUME THAT WE DO NOT WISH TO SAMPLE
- C     AT THE N+2 STEP POINT
- C
--      CALL ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE2,TCRAT2,M2,WORKED,YMAX,
-+      CALL A_ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE2,TCRAT2,M2,WORKED,YMAX,
-      +       ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,AM,MASBND,
-      +NIND1,NIND2,NIND3,IPIV,1,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,NBSOL,
-      + NFE,NQUSED,F,IERR)
-@@ -2872,10 +2690,10 @@
- 3111  CONTINUE
-       ENDIF
-       IF (MF.GE. 23) THEN
--        CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
-+        CALL A_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
-         NBSOL=NBSOL+1
-       ELSE
--         CALL SOL(N,N,PW,SAVE1,IPIV)
-+         CALL A_SOL(N,N,PW,SAVE1,IPIV)
-          NBSOL = NBSOL + 1
-       ENDIF
-       DO 321 I=1,N
-@@ -2971,7 +2789,7 @@
-       IF(NQ.GT.1) FFAIL = 0.5D+0/DBLE(FLOAT(NQ))
-       IF(NQ.GT.2) FRFAIL = 0.5D+0/DBLE(FLOAT(NQ-1))
-       EFAIL = 0.5D+0/DBLE(FLOAT(L))
--      CALL CPYARY(N*L,YHOLD,Y)
-+      CALL A_CPYARY(N*L,YHOLD,Y)
-       RMAX = 2.0D+0
-       IF (DABS(H).LE.HMIN*1.00001D+0) THEN
- C
-@@ -3000,10 +2818,10 @@
-       NQ=NEWQ
-       RH=ONE/(PLFAIL*DBLE(FLOAT(-KFAIL)))
-       L=NQ+1
--      CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-+      CALL A_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-       RC=RC*EL(1)/OLDLO
-       OLDLO=EL(1)
--      CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-+      CALL A_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-       ELSE
-       NEWQ = NQ
-       RH = ONE/ (PRFAIL*DBLE(FLOAT(-KFAIL)))
-@@ -3029,7 +2847,7 @@
- C     *********************************
-       JCHANG = 1
-       RH = DMAX1(HMIN/DABS(H),0.1D+0)
--      CALL HCHOSE(RH,H,OVRIDE)
-+      CALL A_HCHOSE(RH,H,OVRIDE)
-       H = H*RH
-       CALL F(N,T,YHOLD,SAVE1,IPAR,RPAR,IERR)
-       IF(IERR.NE.0) GOTO 8000
-@@ -3048,11 +2866,11 @@
-       NQ = 1
-       L = 2
- C     RESET ORDER, RECALCULATE ERROR BOUNDS
--      CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-+      CALL A_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-       LMAX = MAXDER + 1
-       RC = RC*EL(1)/OLDLO
-       OLDLO = EL(1)
--      CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-+      CALL A_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
- C     NOW JUMP TO NORMAL CONTINUATION POINT
-       GO TO 60
- C **********************************************************************
-@@ -3216,7 +3034,7 @@
-       GOTO 440
-       ENDIF
-          RH = DMIN1(RH,RMAX)
--         CALL HCHOSE(RH,H,OVRIDE)
-+         CALL A_HCHOSE(RH,H,OVRIDE)
-          IF ((JSINUP.LE.20).AND.(KFLAG.EQ.0).AND.(RH.LT.1.1D+0)) THEN
- C           WE HAVE RUN INTO PROBLEMS
-             IDOUB = 10
-@@ -3244,17 +3062,17 @@
-             NQ = NEWQ
-             L = NQ + 1
- C           RESET ORDER,RECALCULATE ERROR BOUNDS
--            CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-+            CALL A_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-             LMAX = MAXDER + 1
-             RC = RC*EL(1)/OLDLO
-             OLDLO = EL(1)
--            CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-+            CALL A_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-          END IF
- 
- 
-          RH = DMAX1(RH,HMIN/DABS(H))
-          RH = DMIN1(RH,HMAX/DABS(H),RMAX)
--         CALL RSCALE(N,L,RH,Y)
-+         CALL A_RSCALE(N,L,RH,Y)
-          RMAX = 10.0D+0
-          JCHANG = 1
-          H = H*RH
-@@ -3271,7 +3089,7 @@
- C     INFORMATION NECESSARY TO PERFORM AN INTERPOLATION TO FIND THE
- C     SOLUTION AT THE SPECIFIED OUTPUT POINT IF APPROPRIATE.
- C ----------------------------------------------------------------------
--      CALL CPYARY(N*L,Y,YHOLD)
-+      CALL A_CPYARY(N*L,Y,YHOLD)
-       NSTEP = NSTEP + 1
-       JSINUP = JSINUP + 1
-       JSNOLD = JSNOLD + 1
-@@ -3312,17 +3130,17 @@
- C     TRY AGAIN WITH UPDATED PARTIALS
- C
- 8000  IF(IERR.NE.0) RETURN
--      IF(IJUS.EQ.0) CALL HCHOSE(RH,H,OVRIDE)
-+      IF(IJUS.EQ.0) CALL A_HCHOSE(RH,H,OVRIDE)
-       IF(.NOT.FINISH) THEN
-           GO TO 40
-       ELSE
-           RETURN
-       END IF
- 
--C ------------------- END OF SUBROUTINE STIFF --------------------------
-+C ------------------- END OF SUBROUTINE A_STIFF --------------------------
-  9000 FORMAT (1X,' CORRECTOR HAS NOT CONVERGED')
-       END
--      SUBROUTINE RSCALE(N,L,RH,Y)
-+      SUBROUTINE A_RSCALE(N,L,RH,Y)
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C     .. SCALAR ARGUMENTS ..
-@@ -3432,7 +3250,7 @@
-       RETURN
- 
-       END
--      SUBROUTINE CPYARY(NELEM,SOURCE,TARGET)
-+      SUBROUTINE A_CPYARY(NELEM,SOURCE,TARGET)
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C
- C     COPIES THE ARRAY SOURCE() INTO THE ARRAY TARGET()
-@@ -3455,7 +3273,7 @@
-       RETURN
- 
-       END
--      SUBROUTINE HCHOSE(RH,H,OVRIDE)
-+      SUBROUTINE A_HCHOSE(RH,H,OVRIDE)
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
-       COMMON / STPSZE / HSTPSZ(2,14)
-       LOGICAL OVRIDE
-@@ -3492,947 +3310,3 @@
- C  ************************************************************
- C
-       END
--      DOUBLE PRECISION FUNCTION DLAMCH( CMACH )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      CHARACTER          CMACH
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMCH determines double precision machine parameters.
--*
--*  Arguments
--*  =========
--*
--*  CMACH   (input) CHARACTER*1
--*          Specifies the value to be returned by DLAMCH:
--*          = 'E' or 'e',   DLAMCH := eps
--*          = 'S' or 's ,   DLAMCH := sfmin
--*          = 'B' or 'b',   DLAMCH := base
--*          = 'P' or 'p',   DLAMCH := eps*base
--*          = 'N' or 'n',   DLAMCH := t
--*          = 'R' or 'r',   DLAMCH := rnd
--*          = 'M' or 'm',   DLAMCH := emin
--*          = 'U' or 'u',   DLAMCH := rmin
--*          = 'L' or 'l',   DLAMCH := emax
--*          = 'O' or 'o',   DLAMCH := rmax
--*
--*          where
--*
--*          eps   = relative machine precision
--*          sfmin = safe minimum, such that 1/sfmin does not overflow
--*          base  = base of the machine
--*          prec  = eps*base
--*          t     = number of (base) digits in the mantissa
--*          rnd   = 1.0 when rounding occurs in addition, 0.0 otherwise
--*          emin  = minimum exponent before (gradual) underflow
--*          rmin  = underflow threshold - base**(emin-1)
--*          emax  = largest exponent before overflow
--*          rmax  = overflow threshold  - (base**emax)*(1-eps)
--*
--* =====================================================================
--*
--*     .. Parameters ..
--      DOUBLE PRECISION   ONE, ZERO
--      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
--*     ..
--*     .. Local Scalars ..
--      LOGICAL            FIRST, LRND
--      INTEGER            BETA, IMAX, IMIN, IT
--      DOUBLE PRECISION   BASE, EMAX, EMIN, EPS, PREC, RMACH, RMAX, RMIN,
--     $                   RND, SFMIN, SMALL, T
--*     ..
--*     .. External Functions ..
--      LOGICAL            LSAME
--      EXTERNAL           LSAME
--*     ..
--*     .. External Subroutines ..
--      EXTERNAL           DLAMC2
--*     ..
--*     .. Save statement ..
--      SAVE               FIRST, EPS, SFMIN, BASE, T, RND, EMIN, RMIN,
--     $                   EMAX, RMAX, PREC
--*     ..
--*     .. Data statements ..
--      DATA               FIRST / .TRUE. /
--*     ..
--*     .. Executable Statements ..
--*
--      IF( FIRST ) THEN
--         FIRST = .FALSE.
--         CALL DLAMC2( BETA, IT, LRND, EPS, IMIN, RMIN, IMAX, RMAX )
--         BASE = BETA
--         T = IT
--         IF( LRND ) THEN
--            RND = ONE
--            EPS = ( BASE**( 1-IT ) ) / 2
--         ELSE
--            RND = ZERO
--            EPS = BASE**( 1-IT )
--         END IF
--         PREC = EPS*BASE
--         EMIN = IMIN
--         EMAX = IMAX
--         SFMIN = RMIN
--         SMALL = ONE / RMAX
--         IF( SMALL.GE.SFMIN ) THEN
--*
--*           Use SMALL plus a bit, to avoid the possibility of rounding
--*           causing overflow when computing  1/sfmin.
--*
--            SFMIN = SMALL*( ONE+EPS )
--         END IF
--      END IF
--*
--      IF( LSAME( CMACH, 'E' ) ) THEN
--         RMACH = EPS
--      ELSE IF( LSAME( CMACH, 'S' ) ) THEN
--         RMACH = SFMIN
--      ELSE IF( LSAME( CMACH, 'B' ) ) THEN
--         RMACH = BASE
--      ELSE IF( LSAME( CMACH, 'P' ) ) THEN
--         RMACH = PREC
--      ELSE IF( LSAME( CMACH, 'N' ) ) THEN
--         RMACH = T
--      ELSE IF( LSAME( CMACH, 'R' ) ) THEN
--         RMACH = RND
--      ELSE IF( LSAME( CMACH, 'M' ) ) THEN
--         RMACH = EMIN
--      ELSE IF( LSAME( CMACH, 'U' ) ) THEN
--         RMACH = RMIN
--      ELSE IF( LSAME( CMACH, 'L' ) ) THEN
--         RMACH = EMAX
--      ELSE IF( LSAME( CMACH, 'O' ) ) THEN
--         RMACH = RMAX
--      END IF
--*
--      DLAMCH = RMACH
--      RETURN
--*
--*     End of DLAMCH
--*
--      END
--*
--************************************************************************
--*
--      SUBROUTINE DLAMC1( BETA, T, RND, IEEE1 )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      LOGICAL            IEEE1, RND
--      INTEGER            BETA, T
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMC1 determines the machine parameters given by BETA, T, RND, and
--*  IEEE1.
--*
--*  Arguments
--*  =========
--*
--*  BETA    (output) INTEGER
--*          The base of the machine.
--*
--*  T       (output) INTEGER
--*          The number of ( BETA ) digits in the mantissa.
--*
--*  RND     (output) LOGICAL
--*          Specifies whether proper rounding  ( RND = .TRUE. )  or
--*          chopping  ( RND = .FALSE. )  occurs in addition. This may not
--*          be a reliable guide to the way in which the machine performs
--*          its arithmetic.
--*
--*  IEEE1   (output) LOGICAL
--*          Specifies whether rounding appears to be done in the IEEE
--*          'round to nearest' style.
--*
--*  Further Details
--*  ===============
--*
--*  The routine is based on the routine  ENVRON  by Malcolm and
--*  incorporates suggestions by Gentleman and Marovich. See
--*
--*     Malcolm M. A. (1972) Algorithms to reveal properties of
--*        floating-point arithmetic. Comms. of the ACM, 15, 949-951.
--*
--*     Gentleman W. M. and Marovich S. B. (1974) More on algorithms
--*        that reveal properties of floating point arithmetic units.
--*        Comms. of the ACM, 17, 276-277.
--*
--* =====================================================================
--*
--*     .. Local Scalars ..
--      LOGICAL            FIRST, LIEEE1, LRND
--      INTEGER            LBETA, LT
--      DOUBLE PRECISION   A, B, C, F, ONE, QTR, SAVEC, T1, T2
--*     ..
--*     .. External Functions ..
--      DOUBLE PRECISION   DLAMC3
--      EXTERNAL           DLAMC3
--*     ..
--*     .. Save statement ..
--      SAVE               FIRST, LIEEE1, LBETA, LRND, LT
--*     ..
--*     .. Data statements ..
--      DATA               FIRST / .TRUE. /
--*     ..
--*     .. Executable Statements ..
--*
--      IF( FIRST ) THEN
--         FIRST = .FALSE.
--         ONE = 1
--*
--*        LBETA,  LIEEE1,  LT and  LRND  are the  local values  of  BETA,
--*        IEEE1, T and RND.
--*
--*        Throughout this routine  we use the function  DLAMC3  to ensure
--*        that relevant values are  stored and not held in registers,  or
--*        are not affected by optimizers.
--*
--*        Compute  a = 2.0**m  with the  smallest positive integer m such
--*        that
--*
--*           fl( a + 1.0 ) = a.
--*
--         A = 1
--         C = 1
--*
--*+       WHILE( C.EQ.ONE )LOOP
--   10    CONTINUE
--         IF( C.EQ.ONE ) THEN
--            A = 2*A
--            C = DLAMC3( A, ONE )
--            C = DLAMC3( C, -A )
--            GO TO 10
--         END IF
--*+       END WHILE
--*
--*        Now compute  b = 2.0**m  with the smallest positive integer m
--*        such that
--*
--*           fl( a + b ) .gt. a.
--*
--         B = 1
--         C = DLAMC3( A, B )
--*
--*+       WHILE( C.EQ.A )LOOP
--   20    CONTINUE
--         IF( C.EQ.A ) THEN
--            B = 2*B
--            C = DLAMC3( A, B )
--            GO TO 20
--         END IF
--*+       END WHILE
--*
--*        Now compute the base.  a and c  are neighbouring floating point
--*        numbers  in the  interval  ( beta**t, beta**( t + 1 ) )  and so
--*        their difference is beta. Adding 0.25 to c is to ensure that it
--*        is truncated to beta and not ( beta - 1 ).
--*
--         QTR = ONE / 4
--         SAVEC = C
--         C = DLAMC3( C, -A )
--         LBETA = C + QTR
--*
--*        Now determine whether rounding or chopping occurs,  by adding a
--*        bit  less  than  beta/2  and a  bit  more  than  beta/2  to  a.
--*
--         B = LBETA
--         F = DLAMC3( B / 2, -B / 100 )
--         C = DLAMC3( F, A )
--         IF( C.EQ.A ) THEN
--            LRND = .TRUE.
--         ELSE
--            LRND = .FALSE.
--         END IF
--         F = DLAMC3( B / 2, B / 100 )
--         C = DLAMC3( F, A )
--         IF( ( LRND ) .AND. ( C.EQ.A ) )
--     $      LRND = .FALSE.
--*
--*        Try and decide whether rounding is done in the  IEEE  'round to
--*        nearest' style. B/2 is half a unit in the last place of the two
--*        numbers A and SAVEC. Furthermore, A is even, i.e. has last  bit
--*        zero, and SAVEC is odd. Thus adding B/2 to A should not  change
--*        A, but adding B/2 to SAVEC should change SAVEC.
--*
--         T1 = DLAMC3( B / 2, A )
--         T2 = DLAMC3( B / 2, SAVEC )
--         LIEEE1 = ( T1.EQ.A ) .AND. ( T2.GT.SAVEC ) .AND. LRND
--*
--*        Now find  the  mantissa, t.  It should  be the  integer part of
--*        log to the base beta of a,  however it is safer to determine  t
--*        by powering.  So we find t as the smallest positive integer for
--*        which
--*
--*           fl( beta**t + 1.0 ) = 1.0.
--*
--         LT = 0
--         A = 1
--         C = 1
--*
--*+       WHILE( C.EQ.ONE )LOOP
--   30    CONTINUE
--         IF( C.EQ.ONE ) THEN
--            LT = LT + 1
--            A = A*LBETA
--            C = DLAMC3( A, ONE )
--            C = DLAMC3( C, -A )
--            GO TO 30
--         END IF
--*+       END WHILE
--*
--      END IF
--*
--      BETA = LBETA
--      T = LT
--      RND = LRND
--      IEEE1 = LIEEE1
--      RETURN
--*
--*     End of DLAMC1
--*
--      END
--*
--************************************************************************
--*
--      SUBROUTINE DLAMC2( BETA, T, RND, EPS, EMIN, RMIN, EMAX, RMAX )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      LOGICAL            RND
--      INTEGER            BETA, EMAX, EMIN, T
--      DOUBLE PRECISION   EPS, RMAX, RMIN
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMC2 determines the machine parameters specified in its argument
--*  list.
--*
--*  Arguments
--*  =========
--*
--*  BETA    (output) INTEGER
--*          The base of the machine.
--*
--*  T       (output) INTEGER
--*          The number of ( BETA ) digits in the mantissa.
--*
--*  RND     (output) LOGICAL
--*          Specifies whether proper rounding  ( RND = .TRUE. )  or
--*          chopping  ( RND = .FALSE. )  occurs in addition. This may not
--*          be a reliable guide to the way in which the machine performs
--*          its arithmetic.
--*
--*  EPS     (output) DOUBLE PRECISION
--*          The smallest positive number such that
--*
--*             fl( 1.0 - EPS ) .LT. 1.0,
--*
--*          where fl denotes the computed value.
--*
--*  EMIN    (output) INTEGER
--*          The minimum exponent before (gradual) underflow occurs.
--*
--*  RMIN    (output) DOUBLE PRECISION
--*          The smallest normalized number for the machine, given by
--*          BASE**( EMIN - 1 ), where  BASE  is the floating point value
--*          of BETA.
--*
--*  EMAX    (output) INTEGER
--*          The maximum exponent before overflow occurs.
--*
--*  RMAX    (output) DOUBLE PRECISION
--*          The largest positive number for the machine, given by
--*          BASE**EMAX * ( 1 - EPS ), where  BASE  is the floating point
--*          value of BETA.
--*
--*  Further Details
--*  ===============
--*
--*  The computation of  EPS  is based on a routine PARANOIA by
--*  W. Kahan of the University of California at Berkeley.
--*
--* =====================================================================
--*
--*     .. Local Scalars ..
--      LOGICAL            FIRST, IEEE, IWARN, LIEEE1, LRND
--      INTEGER            GNMIN, GPMIN, I, LBETA, LEMAX, LEMIN, LT,
--     $                   NGNMIN, NGPMIN
--      DOUBLE PRECISION   A, B, C, HALF, LEPS, LRMAX, LRMIN, ONE, RBASE,
--     $                   SIXTH, SMALL, THIRD, TWO, ZERO
--*     ..
--*     .. External Functions ..
--      DOUBLE PRECISION   DLAMC3
--      EXTERNAL           DLAMC3
--*     ..
--*     .. External Subroutines ..
--      EXTERNAL           DLAMC1, DLAMC4, DLAMC5
--*     ..
--*     .. Intrinsic Functions ..
--      INTRINSIC          ABS, MAX, MIN
--*     ..
--*     .. Save statement ..
--      SAVE               FIRST, IWARN, LBETA, LEMAX, LEMIN, LEPS, LRMAX,
--     $                   LRMIN, LT
--*     ..
--*     .. Data statements ..
--      DATA               FIRST / .TRUE. / , IWARN / .FALSE. /
--*     ..
--*     .. Executable Statements ..
--*
--      IF( FIRST ) THEN
--         FIRST = .FALSE.
--         ZERO = 0
--         ONE = 1
--         TWO = 2
--*
--*        LBETA, LT, LRND, LEPS, LEMIN and LRMIN  are the local values of
--*        BETA, T, RND, EPS, EMIN and RMIN.
--*
--*        Throughout this routine  we use the function  DLAMC3  to ensure
--*        that relevant values are stored  and not held in registers,  or
--*        are not affected by optimizers.
--*
--*        DLAMC1 returns the parameters  LBETA, LT, LRND and LIEEE1.
--*
--         CALL DLAMC1( LBETA, LT, LRND, LIEEE1 )
--*
--*        Start to find EPS.
--*
--         B = LBETA
--         A = B**( -LT )
--         LEPS = A
--*
--*        Try some tricks to see whether or not this is the correct  EPS.
--*
--         B = TWO / 3
--         HALF = ONE / 2
--         SIXTH = DLAMC3( B, -HALF )
--         THIRD = DLAMC3( SIXTH, SIXTH )
--         B = DLAMC3( THIRD, -HALF )
--         B = DLAMC3( B, SIXTH )
--         B = ABS( B )
--         IF( B.LT.LEPS )
--     $      B = LEPS
--*
--         LEPS = 1
--*
--*+       WHILE( ( LEPS.GT.B ).AND.( B.GT.ZERO ) )LOOP
--   10    CONTINUE
--         IF( ( LEPS.GT.B ) .AND. ( B.GT.ZERO ) ) THEN
--            LEPS = B
--            C = DLAMC3( HALF*LEPS, ( TWO**5 )*( LEPS**2 ) )
--            C = DLAMC3( HALF, -C )
--            B = DLAMC3( HALF, C )
--            C = DLAMC3( HALF, -B )
--            B = DLAMC3( HALF, C )
--            GO TO 10
--         END IF
--*+       END WHILE
--*
--         IF( A.LT.LEPS )
--     $      LEPS = A
--*
--*        Computation of EPS complete.
--*
--*        Now find  EMIN.  Let A = + or - 1, and + or - (1 + BASE**(-3)).
--*        Keep dividing  A by BETA until (gradual) underflow occurs. This
--*        is detected when we cannot recover the previous A.
--*
--         RBASE = ONE / LBETA
--         SMALL = ONE
--         DO 20 I = 1, 3
--            SMALL = DLAMC3( SMALL*RBASE, ZERO )
--   20    CONTINUE
--         A = DLAMC3( ONE, SMALL )
--         CALL DLAMC4( NGPMIN, ONE, LBETA )
--         CALL DLAMC4( NGNMIN, -ONE, LBETA )
--         CALL DLAMC4( GPMIN, A, LBETA )
--         CALL DLAMC4( GNMIN, -A, LBETA )
--         IEEE = .FALSE.
--*
--         IF( ( NGPMIN.EQ.NGNMIN ) .AND. ( GPMIN.EQ.GNMIN ) ) THEN
--            IF( NGPMIN.EQ.GPMIN ) THEN
--               LEMIN = NGPMIN
--*            ( Non twos-complement machines, no gradual underflow;
--*              e.g.,  VAX )
--            ELSE IF( ( GPMIN-NGPMIN ).EQ.3 ) THEN
--               LEMIN = NGPMIN - 1 + LT
--               IEEE = .TRUE.
--*            ( Non twos-complement machines, with gradual underflow;
--*              e.g., IEEE standard followers )
--            ELSE
--               LEMIN = MIN( NGPMIN, GPMIN )
--*            ( A guess; no known machine )
--               IWARN = .TRUE.
--            END IF
--*
--         ELSE IF( ( NGPMIN.EQ.GPMIN ) .AND. ( NGNMIN.EQ.GNMIN ) ) THEN
--            IF( ABS( NGPMIN-NGNMIN ).EQ.1 ) THEN
--               LEMIN = MAX( NGPMIN, NGNMIN )
--*            ( Twos-complement machines, no gradual underflow;
--*              e.g., CYBER 205 )
--            ELSE
--               LEMIN = MIN( NGPMIN, NGNMIN )
--*            ( A guess; no known machine )
--               IWARN = .TRUE.
--            END IF
--*
--         ELSE IF( ( ABS( NGPMIN-NGNMIN ).EQ.1 ) .AND.
--     $            ( GPMIN.EQ.GNMIN ) ) THEN
--            IF( ( GPMIN-MIN( NGPMIN, NGNMIN ) ).EQ.3 ) THEN
--               LEMIN = MAX( NGPMIN, NGNMIN ) - 1 + LT
--*            ( Twos-complement machines with gradual underflow;
--*              no known machine )
--            ELSE
--               LEMIN = MIN( NGPMIN, NGNMIN )
--*            ( A guess; no known machine )
--               IWARN = .TRUE.
--            END IF
--*
--         ELSE
--            LEMIN = MIN( NGPMIN, NGNMIN, GPMIN, GNMIN )
--*         ( A guess; no known machine )
--            IWARN = .TRUE.
--         END IF
--***
--* Comment out this if block if EMIN is ok
--         IF( IWARN ) THEN
--            FIRST = .TRUE.
--            WRITE( 6, FMT = 9999 )LEMIN
--         END IF
--***
--*
--*        Assume IEEE arithmetic if we found denormalised  numbers above,
--*        or if arithmetic seems to round in the  IEEE style,  determined
--*        in routine DLAMC1. A true IEEE machine should have both  things
--*        true; however, faulty machines may have one or the other.
--*
--         IEEE = IEEE .OR. LIEEE1
--*
--*        Compute  RMIN by successive division by  BETA. We could compute
--*        RMIN as BASE**( EMIN - 1 ),  but some machines underflow during
--*        this computation.
--*
--         LRMIN = 1
--         DO 30 I = 1, 1 - LEMIN
--            LRMIN = DLAMC3( LRMIN*RBASE, ZERO )
--   30    CONTINUE
--*
--*        Finally, call DLAMC5 to compute EMAX and RMAX.
--*
--         CALL DLAMC5( LBETA, LT, LEMIN, IEEE, LEMAX, LRMAX )
--      END IF
--*
--      BETA = LBETA
--      T = LT
--      RND = LRND
--      EPS = LEPS
--      EMIN = LEMIN
--      RMIN = LRMIN
--      EMAX = LEMAX
--      RMAX = LRMAX
--*
--      RETURN
--*
-- 9999 FORMAT( / / ' WARNING. The value EMIN may be incorrect:-',
--     $      '  EMIN = ', I8, /
--     $      ' If, after inspection, the value EMIN looks',
--     $      ' acceptable please comment out ',
--     $      / ' the IF block as marked within the code of routine',
--     $      ' DLAMC2,', / ' otherwise supply EMIN explicitly.', / )
--*
--*     End of DLAMC2
--*
--      END
--*
--************************************************************************
--*
--      DOUBLE PRECISION FUNCTION DLAMC3( A, B )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      DOUBLE PRECISION   A, B
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMC3  is intended to force  A  and  B  to be stored prior to doing
--*  the addition of  A  and  B ,  for use in situations where optimizers
--*  might hold one of these in a register.
--*
--*  Arguments
--*  =========
--*
--*  A, B    (input) DOUBLE PRECISION
--*          The values A and B.
--*
--* =====================================================================
--*
--*     .. Executable Statements ..
--*
--      DLAMC3 = A + B
--*
--      RETURN
--*
--*     End of DLAMC3
--*
--      END
--*
--************************************************************************
--*
--      SUBROUTINE DLAMC4( EMIN, START, BASE )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      INTEGER            BASE, EMIN
--      DOUBLE PRECISION   START
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMC4 is a service routine for DLAMC2.
--*
--*  Arguments
--*  =========
--*
--*  EMIN    (output) EMIN
--*          The minimum exponent before (gradual) underflow, computed by
--*          setting A = START and dividing by BASE until the previous A
--*          can not be recovered.
--*
--*  START   (input) DOUBLE PRECISION
--*          The starting point for determining EMIN.
--*
--*  BASE    (input) INTEGER
--*          The base of the machine.
--*
--* =====================================================================
--*
--*     .. Local Scalars ..
--      INTEGER            I
--      DOUBLE PRECISION   A, B1, B2, C1, C2, D1, D2, ONE, RBASE, ZERO
--*     ..
--*     .. External Functions ..
--      DOUBLE PRECISION   DLAMC3
--      EXTERNAL           DLAMC3
--*     ..
--*     .. Executable Statements ..
--*
--      A = START
--      ONE = 1
--      RBASE = ONE / BASE
--      ZERO = 0
--      EMIN = 1
--      B1 = DLAMC3( A*RBASE, ZERO )
--      C1 = A
--      C2 = A
--      D1 = A
--      D2 = A
--*+    WHILE( ( C1.EQ.A ).AND.( C2.EQ.A ).AND.
--*    $       ( D1.EQ.A ).AND.( D2.EQ.A )      )LOOP
--   10 CONTINUE
--      IF( ( C1.EQ.A ) .AND. ( C2.EQ.A ) .AND. ( D1.EQ.A ) .AND.
--     $    ( D2.EQ.A ) ) THEN
--         EMIN = EMIN - 1
--         A = B1
--         B1 = DLAMC3( A / BASE, ZERO )
--         C1 = DLAMC3( B1*BASE, ZERO )
--         D1 = ZERO
--         DO 20 I = 1, BASE
--            D1 = D1 + B1
--   20    CONTINUE
--         B2 = DLAMC3( A*RBASE, ZERO )
--         C2 = DLAMC3( B2 / RBASE, ZERO )
--         D2 = ZERO
--         DO 30 I = 1, BASE
--            D2 = D2 + B2
--   30    CONTINUE
--         GO TO 10
--      END IF
--*+    END WHILE
--*
--      RETURN
--*
--*     End of DLAMC4
--*
--      END
--*
--************************************************************************
--*
--      SUBROUTINE DLAMC5( BETA, P, EMIN, IEEE, EMAX, RMAX )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      LOGICAL            IEEE
--      INTEGER            BETA, EMAX, EMIN, P
--      DOUBLE PRECISION   RMAX
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMC5 attempts to compute RMAX, the largest machine floating-point
--*  number, without overflow.  It assumes that EMAX + abs(EMIN) sum
--*  approximately to a power of 2.  It will fail on machines where this
--*  assumption does not hold, for example, the Cyber 205 (EMIN = -28625,
--*  EMAX = 28718).  It will also fail if the value supplied for EMIN is
--*  too large (i.e. too close to zero), probably with overflow.
--*
--*  Arguments
--*  =========
--*
--*  BETA    (input) INTEGER
--*          The base of floating-point arithmetic.
--*
--*  P       (input) INTEGER
--*          The number of base BETA digits in the mantissa of a
--*          floating-point value.
--*
--*  EMIN    (input) INTEGER
--*          The minimum exponent before (gradual) underflow.
--*
--*  IEEE    (input) LOGICAL
--*          A logical flag specifying whether or not the arithmetic
--*          system is thought to comply with the IEEE standard.
--*
--*  EMAX    (output) INTEGER
--*          The largest exponent before overflow
--*
--*  RMAX    (output) DOUBLE PRECISION
--*          The largest machine floating-point number.
--*
--* =====================================================================
--*
--*     .. Parameters ..
--      DOUBLE PRECISION   ZERO, ONE
--      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0 )
--*     ..
--*     .. Local Scalars ..
--      INTEGER            EXBITS, EXPSUM, I, LEXP, NBITS, TRY, UEXP
--      DOUBLE PRECISION   OLDY, RECBAS, Y, Z
--*     ..
--*     .. External Functions ..
--      DOUBLE PRECISION   DLAMC3
--      EXTERNAL           DLAMC3
--*     ..
--*     .. Intrinsic Functions ..
--      INTRINSIC          MOD
--*     ..
--*     .. Executable Statements ..
--*
--*     First compute LEXP and UEXP, two powers of 2 that bound
--*     abs(EMIN). We then assume that EMAX + abs(EMIN) will sum
--*     approximately to the bound that is closest to abs(EMIN).
--*     (EMAX is the exponent of the required number RMAX).
--*
--      LEXP = 1
--      EXBITS = 1
--   10 CONTINUE
--      TRY = LEXP*2
--      IF( TRY.LE.( -EMIN ) ) THEN
--         LEXP = TRY
--         EXBITS = EXBITS + 1
--         GO TO 10
--      END IF
--      IF( LEXP.EQ.-EMIN ) THEN
--         UEXP = LEXP
--      ELSE
--         UEXP = TRY
--         EXBITS = EXBITS + 1
--      END IF
--*
--*     Now -LEXP is less than or equal to EMIN, and -UEXP is greater
--*     than or equal to EMIN. EXBITS is the number of bits needed to
--*     store the exponent.
--*
--      IF( ( UEXP+EMIN ).GT.( -LEXP-EMIN ) ) THEN
--         EXPSUM = 2*LEXP
--      ELSE
--         EXPSUM = 2*UEXP
--      END IF
--*
--*     EXPSUM is the exponent range, approximately equal to
--*     EMAX - EMIN + 1 .
--*
--      EMAX = EXPSUM + EMIN - 1
--      NBITS = 1 + EXBITS + P
--*
--*     NBITS is the total number of bits needed to store a
--*     floating-point number.
--*
--      IF( ( MOD( NBITS, 2 ).EQ.1 ) .AND. ( BETA.EQ.2 ) ) THEN
--*
--*        Either there are an odd number of bits used to store a
--*        floating-point number, which is unlikely, or some bits are
--*        not used in the representation of numbers, which is possible,
--*        (e.g. Cray machines) or the mantissa has an implicit bit,
--*        (e.g. IEEE machines, Dec Vax machines), which is perhaps the
--*        most likely. We have to assume the last alternative.
--*        If this is true, then we need to reduce EMAX by one because
--*        there must be some way of representing zero in an implicit-bit
--*        system. On machines like Cray, we are reducing EMAX by one
--*        unnecessarily.
--*
--         EMAX = EMAX - 1
--      END IF
--*
--      IF( IEEE ) THEN
--*
--*        Assume we are on an IEEE machine which reserves one exponent
--*        for infinity and NaN.
--*
--         EMAX = EMAX - 1
--      END IF
--*
--*     Now create RMAX, the largest machine number, which should
--*     be equal to (1.0 - BETA**(-P)) * BETA**EMAX .
--*
--*     First compute 1.0 - BETA**(-P), being careful that the
--*     result is less than 1.0 .
--*
--      RECBAS = ONE / BETA
--      Z = BETA - ONE
--      Y = ZERO
--      DO 20 I = 1, P
--         Z = Z*RECBAS
--         IF( Y.LT.ONE )
--     $      OLDY = Y
--         Y = DLAMC3( Y, Z )
--   20 CONTINUE
--      IF( Y.GE.ONE )
--     $   Y = OLDY
--*
--*     Now multiply by BETA**EMAX to get RMAX.
--*
--      DO 30 I = 1, EMAX
--         Y = DLAMC3( Y*BETA, ZERO )
--   30 CONTINUE
--*
--      RMAX = Y
--      RETURN
--*
--*     End of DLAMC5
--*
--      END
--      LOGICAL          FUNCTION LSAME( CA, CB )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     September 30, 1994
--*
--*     .. Scalar Arguments ..
--      CHARACTER          CA, CB
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  LSAME returns .TRUE. if CA is the same letter as CB regardless of
--*  case.
--*
--*  Arguments
--*  =========
--*
--*  CA      (input) CHARACTER*1
--*  CB      (input) CHARACTER*1
--*          CA and CB specify the single characters to be compared.
--*
--* =====================================================================
--*
--*     .. Intrinsic Functions ..
--      INTRINSIC          ICHAR
--*     ..
--*     .. Local Scalars ..
--      INTEGER            INTA, INTB, ZCODE
--*     ..
--*     .. Executable Statements ..
--*
--*     Test if the characters are equal
--*
--      LSAME = CA.EQ.CB
--      IF( LSAME )
--     $   RETURN
--*
--*     Now test for equivalence if both characters are alphabetic.
--*
--      ZCODE = ICHAR( 'Z' )
--*
--*     Use 'Z' rather than 'A' so that ASCII can be detected on Prime
--*     machines, on which ICHAR returns a value with bit 8 set.
--*     ICHAR('A') on Prime machines returns 193 which is the same as
--*     ICHAR('A') on an EBCDIC machine.
--*
--      INTA = ICHAR( CA )
--      INTB = ICHAR( CB )
--*
--      IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN
--*
--*        ASCII is assumed - ZCODE is the ASCII code of either lower or
--*        upper case 'Z'.
--*
--         IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
--         IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
--*
--      ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN
--*
--*        EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
--*        upper case 'Z'.
--*
--         IF( INTA.GE.129 .AND. INTA.LE.137 .OR.
--     $       INTA.GE.145 .AND. INTA.LE.153 .OR.
--     $       INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
--         IF( INTB.GE.129 .AND. INTB.LE.137 .OR.
--     $       INTB.GE.145 .AND. INTB.LE.153 .OR.
--     $       INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
--*
--      ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN
--*
--*        ASCII is assumed, on Prime machines - ZCODE is the ASCII code
--*        plus 128 of either lower or upper case 'Z'.
--*
--         IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
--         IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
--      END IF
--      LSAME = INTA.EQ.INTB
--*
--*     RETURN
--*
--*     End of LSAME
--*
--      END
-diff -u -u cash.orig/mebdfi.f cash/mebdfi.f
---- cash.orig/mebdfi.f	2007-11-16 19:00:20.000000000 +0100
-+++ cash/mebdfi.f	2008-01-19 17:24:20.000000000 +0100
-@@ -58,11 +58,11 @@
- C           
- C              SEPTEMBER 20th 1999: FIRST RELEASE
- C
--C     OVDRIV 
-+C     I_OVDRIV 
- C     A PACKAGE FOR  THE SOLUTION OF THE INITIAL VALUE PROBLEM 
- C     FOR SYSTEMS OF  IMPLICIT DIFFERENTIAL ALGEBRAIC EQUATIONS
- c     G(t,Y,Y')=0, Y=(Y(1),Y(2),Y(3),.....,Y(N)).
--C     SUBROUTINE OVDRIV IS A DRIVER ROUTINE FOR THIS PACKAGE.
-+C     SUBROUTINE I_OVDRIV IS A DRIVER ROUTINE FOR THIS PACKAGE.
- C
- C                    REFERENCES
- C
-@@ -82,7 +82,7 @@
- C         SPRINGER 1996, page 267.
- C
- C     ----------------------------------------------------------------
--C     OVDRIV IS TO BE CALLED ONCE FOR EACH OUTPUT VALUE OF T, AND
-+C     I_OVDRIV IS TO BE CALLED ONCE FOR EACH OUTPUT VALUE OF T, AND
- C     IN TURN MAKES REPEATED CALLS TO THE CORE INTEGRATOR STIFF.
- C
- C     THE INPUT PARAMETERS ARE ..
-@@ -158,7 +158,7 @@
- C              SHOULD BE NON-NEGATIVE. IF ITOL = 1 THEN SINGLE STEP ERROR
- C              ESTIMATES DIVIDED BY YMAX(I) WILL BE KEPT LESS THAN 1
- C              IN ROOT-MEAN-SQUARE NORM.  THE VECTOR YMAX OF WEIGHTS IS
--C              COMPUTED IN OVDRIV. INITIALLY YMAX(I) IS SET AS
-+C              COMPUTED IN I_OVDRIV. INITIALLY YMAX(I) IS SET AS
- C              THE MAXIMUM OF 1 AND ABS(Y(I)).  THEREAFTER YMAX(I) IS
- C              THE LARGEST VALUE OF ABS(Y(I)) SEEN SO FAR, OR THE
- C              INITIAL VALUE YMAX(I) IF THAT IS LARGER.
-@@ -242,23 +242,23 @@
- C     -12   INSUFFICIENT INTEGER WORKSPACE FOR THE INTEGRATION
- C
- C
--C     IN ADDITION TO OVDRIVE, THE FOLLOWING ROUTINES ARE PROVIDED
-+C     IN ADDITION TO I_OVDRIVE, THE FOLLOWING ROUTINES ARE PROVIDED
- C     IN THE PACKAGE..
- C
--C     INTERP( - )   INTERPOLATES TO GET THE OUTPUT VALUES
-+C     I_INTERP( - )   INTERPOLATES TO GET THE OUTPUT VALUES
- C                   AT T=TOUT FROM THE DATA IN THE Y ARRAY.
--C     STIFF( - )    IS THE CORE INTEGRATOR ROUTINE.  IT PERFORMS A
-+C     I_STIFF( - )    IS THE CORE INTEGRATOR ROUTINE.  IT PERFORMS A
- C                   SINGLE STEP AND ASSOCIATED ERROR CONTROL.
--C     COSET( - )    SETS COEFFICIENTS FOR BACKWARD DIFFERENTIATION
-+C     I_COSET( - )    SETS COEFFICIENTS FOR BACKWARD DIFFERENTIATION
- C                   SCHEMES FOR USE IN THE CORE INTEGRATOR.
--C     PSET( - )     COMPUTES AND PROCESSES THE NEWTON ITERATION
-+C     I_PSET( - )     COMPUTES AND PROCESSES THE NEWTON ITERATION
- C                   MATRIX DG/DY + (1/(H*BETA))DG/DY'
--C     DEC( - )      PERFORMS AN LU DECOMPOSITION ON A MATRIX.
--C     SOL( - )      SOLVES LINEAR SYSTEMS A*X = B AFTER DEC
-+C     I_DEC( - )      PERFORMS AN LU DECOMPOSITION ON A MATRIX.
-+C     I_SOL( - )      SOLVES LINEAR SYSTEMS A*X = B AFTER I_DEC
- C                   HAS BEEN CALLED FOR THE MATRIX A
--C     DGBFA ( - )   FACTORS A DOUBLE PRECISION BAND MATRIX BY
-+C     I_DGBFA ( - )   FACTORS A DOUBLE PRECISION BAND MATRIX BY
- C                   ELIMINATION.
--C     DGBSL ( - )   SOLVES A BANDED LINEAR SYSTEM A*x=b
-+C     I_DGBSL ( - )   SOLVES A BANDED LINEAR SYSTEM A*x=b
- C
- C                   ALSO SUPPLIED ARE THE BLAS ROUTINES
- C
-@@ -330,7 +330,7 @@
- C     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- C     THIS SUBROUTINE IS FOR THE PURPOSE               *
- C     OF SPLITTING UP THE WORK ARRAYS WORK AND IWORK   *
--C     FOR USE INSIDE THE INTEGRATOR STIFF              *
-+C     FOR USE INSIDE THE INTEGRATOR I_STIFF              *
- C     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- 
- C     .. SCALAR ARGUMENTS ..
-@@ -346,7 +346,7 @@
- C     COMMON BLOCKS
- C     ..
- C     .. EXTERNAL SUBROUTINES ..
--      EXTERNAL OVDRIV,PDERV,RESID
-+      EXTERNAL I_OVDRIV,PDERV,RESID
- C     ..
- C     .. SAVE STATEMENT ..
-       SAVE  I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11
-@@ -397,7 +397,7 @@
- c     THE ERROR FLAG IS INITIALISED
- c
- 
--      CALL OVDRIV(N,T0,HO,Y0,YPRIME,TOUT,TEND,MF,IDID,LOUT,WORK(3),
-+      CALL I_OVDRIV(N,T0,HO,Y0,YPRIME,TOUT,TEND,MF,IDID,LOUT,WORK(3),
-      +     WORK(I1),WORK(I2),WORK(I3),WORK(I4),WORK(I5),WORK(I6),
-      +     WORK(I7),WORK(I8),WORK(I9),WORK(I10),IWORK(15),
-      +     MBND,IWORK(1),IWORK(2),IWORK(3),MAXDER,ITOL,RTOL,ATOL,RPAR,
-@@ -428,7 +428,7 @@
-       END
- C--------------------------------------------------------------------------
- C
--      SUBROUTINE OVDRIV(N,T0,HO,Y0,YPRIME,TOUT,TEND,MF,IDID,LOUT,Y,
-+      SUBROUTINE I_OVDRIV(N,T0,HO,Y0,YPRIME,TOUT,TEND,MF,IDID,LOUT,Y,
-      +     YHOLD,YNHOLD,YMAX,ERRORS,SAVE1,SAVE2,SCALE,ARH,PW,PWCOPY,
-      +     IPIV,MBND,NIND1,NIND2,NIND3,MAXDER,ITOL,RTOL,ATOL,RPAR,
-      +     IPAR,PDERV,RESID,NQUSED,NSTEP,NFAIL,NRE,NJE,NDEC,NBSOL,
-@@ -452,7 +452,7 @@
-       INTEGER I,KGO,NHCUT
- C     ..
- C     .. EXTERNAL SUBROUTINES ..
--      EXTERNAL INTERP,STIFF,PDERV,RESID
-+      EXTERNAL I_INTERP,I_STIFF,PDERV,RESID
- C     ..
- C     .. INTRINSIC FUNCTIONS ..
-       INTRINSIC DABS,DMAX1
-@@ -468,7 +468,7 @@
-          HMAX = DABS(TEND-T0)/10.0D+0
-          IF ((T-TOUT)*H.GE.0.0D+0) THEN
- C           HAVE OVERSHOT THE OUTPUT POINT, SO INTERPOLATE
--            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+            CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-             IDID = KFLAG
-             T0 = TOUT
-             HO = H
-@@ -486,7 +486,7 @@
-             IF (((T-TOUT)*H.GE.0.0D+0) .OR. (DABS(T-TOUT).LE.
-      +           100.0D+0*UROUND*HMAX)) THEN
- C              HAVE OVERSHOT THE OUTPUT POINT, SO INTERPOLATE
--               CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+               CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-                T0 = TOUT
-                HO = H
-                IDID = KFLAG
-@@ -513,7 +513,7 @@
-          IF ((T-TOUT)*H.GE.0.0D+0) THEN
- C           HAVE OVERSHOT TOUT
-             WRITE (LOUT,9080) T,TOUT,H
--            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+            CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-             HO = H
-             T0 = TOUT
-             IDID = -5
-@@ -527,7 +527,7 @@
-          T0 = T
-          IF ((T-TOUT)*H.GE.0.0D+0) THEN
- C           HAVE OVERSHOT,SO INTERPOLATE
--            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+            CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-             IDID = KFLAG
-             T0 = TOUT
-             HO = H
-@@ -660,7 +660,7 @@
-  20   IF ((T+H).EQ.T) THEN
-          WRITE (LOUT,9000)
-       END IF
--      CALL STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
-+      CALL I_STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
-      +    NIND1,NIND2,NIND3,T,TOUT,TEND,Y,YPRIME,N,
-      +    YMAX,ERRORS,SAVE1,SAVE2,SCALE,PW,PWCOPY,YHOLD,
-      +    YNHOLD,ARH,IPIV,LOUT,MAXDER,ITOL,RTOL,ATOL,RPAR,IPAR,
-@@ -672,7 +672,7 @@
- C      ENDIF
-       KGO = 1 - KFLAG
-       IF (KGO.EQ.1) THEN
--C        NORMAL RETURN FROM STIFF
-+C        NORMAL RETURN FROM I_STIFF
-          GO TO 30
- 
-       ELSE IF (KGO.EQ.2) THEN
-@@ -708,7 +708,7 @@
- C     FOR ANY OTHER VALUE OF IDID, CONTROL RETURNS TO THE INTEGRATOR
- C     UNLESS TOUT HAS BEEN REACHED.  THEN INTERPOLATED VALUES OF Y ARE
- C     COMPUTED AND STORED IN Y0 ON RETURN.
--C     IF INTERPOLATION IS NOT DESIRED, THE CALL TO INTERP SHOULD BE
-+C     IF INTERPOLATION IS NOT DESIRED, THE CALL TO I_INTERP SHOULD BE
- C     REMOVED AND CONTROL TRANSFERRED TO STATEMENT 500 INSTEAD OF 520.
- C --------------------------------------------------------------------
-       IF(NSTEP.GT.MAXSTP) THEN
-@@ -749,7 +749,7 @@
-             IF (((T-TOUT)*H.GE.0.0D+0) .OR. (DABS(T-TOUT).LE.
-      +           100.0D+0*UROUND*HMAX)) THEN
- C              HAVE OVERSHOT, SO INTERPOLATE
--               CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+               CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-                T0 = TOUT
-                HO = H
-                IDID = KFLAG
-@@ -766,7 +766,7 @@
- 
-       ELSE IF ((T-TOUT)*H.GE.0.0D+0) THEN
- C        HAVE OVERSHOT, SO INTERPOLATE
--         CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+         CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-          IDID = KFLAG
-          HO = H
-          T0 = TOUT
-@@ -805,14 +805,14 @@
- 
-       ELSE
- C        HAVE PASSED TOUT SO INTERPOLATE
--         CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+         CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-          T0 = TOUT
-          IDID = KFLAG
-       END IF
-       HO = H
-       IF(KFLAG.NE.0) IDID = KFLAG
-       RETURN
--C -------------------------- END OF SUBROUTINE OVDRIV -----------------
-+C -------------------------- END OF SUBROUTINE I_OVDRIV -----------------
-  9000 FORMAT (' WARNING..  T + H = T ON NEXT STEP.')
-  9010 FORMAT (/,/,' KFLAG = -2 FROM INTEGRATOR AT T = ',E16.8,'  H =',
-      +       E16.8,/,
-@@ -848,7 +848,7 @@
-       END
- C--------------------------------------------------------------------------
- C
--      SUBROUTINE INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+      SUBROUTINE I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C     .. SCALAR ARGUMENTS ..
-@@ -875,15 +875,15 @@
-  20      CONTINUE
-  30   CONTINUE
-       RETURN
--C -------------- END OF SUBROUTINE INTERP ---------------------------
-+C -------------- END OF SUBROUTINE I_INTERP ---------------------------
-       END
- C
--      SUBROUTINE COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-+      SUBROUTINE I_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-       
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C --------------------------------------------------------------------
--C     COSET IS CALLED BY THE INTEGRATOR AND SETS THE COEFFICIENTS USED
-+C     I_COSET IS CALLED BY THE INTEGRATOR AND SETS THE COEFFICIENTS USED
- C     BY THE CONVENTIONAL BACKWARD DIFFERENTIATION SCHEME AND THE
- C     MODIFIED EXTENDED BACKWARD DIFFERENTIATION SCHEME.  THE VECTOR
- C     EL OF LENGTH NQ+1 DETERMINES THE BASIC BDF METHOD WHILE THE VECTOR
-@@ -1013,24 +1013,24 @@
-       TQ(4) = 0.5D+0*TQ(2)/DBLE(FLOAT(NQ))
-       IF(NQ.NE.1) TQ(5)=PERTST(NQ-1,1)
-       RETURN
--C --------------------- END OF SUBROUTINE COSET ---------------------
-+C --------------------- END OF SUBROUTINE I_COSET ---------------------
-       END
- 
--      SUBROUTINE PSET(Y,YPRIME,N,H,T,UROUND,EPSJAC,CON,MITER,MBND,
-+      SUBROUTINE I_PSET(Y,YPRIME,N,H,T,UROUND,EPSJAC,CON,MITER,MBND,
-      +     NIND1,NIND2,NIND3,IER,PDERV,RESID,NRENEW,YMAX,SAVE1,SAVE2,
-      +     SAVE3,PW,PWCOPY,WRKSPC,IPIV,ITOL,RTOL,ATOL,NPSET,NJE,NRE,
-      +     NDEC,IPAR,RPAR,IERR)      
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C -------------------------------------------------------------------
--C     PSET IS CALLED BY STIFF TO COMPUTE AND PROCESS THE MATRIX
-+C     I_PSET IS CALLED BY I_STIFF TO COMPUTE AND PROCESS THE MATRIX
- C     PD=DG/DY + (1/CON)DG/DY'. THIS MATRIX IS THEN SUBJECTED TO LU
- C     DECOMPOSITION IN PREPARATION FOR LATER SOLUTION OF LINEAR SYSTEMS
- C     OF ALGEBRAIC EQUATIONS WITH LU AS THE COEFFICIENT MATRIX.  THE
- C     MATRIX PD IS FOUND BY THE USER-SUPPLIED ROUTINE PDERV IF MITER=1
- C     OR 3 OR BY FINITE DIFFERENCING IF MITER = 2 OR 4.
- C     IN ADDITION TO VARIABLES DESCRIBED PREVIOUSLY, COMMUNICATION WITH
--C     PSET USES THE FOLLOWING ..
-+C     I_PSET USES THE FOLLOWING ..
- C     EPSJAC = DSQRT(UROUND), USED IN NUMERICAL JACOBIAN INCREMENTS.
- C *******************************************************************
- C     THE ARGUMENT NRENEW IS USED TO SIGNAL WHETHER OR NOT
-@@ -1052,7 +1052,7 @@
-       INTEGER I,J,J1,JJKK
- C     ..
- C     .. EXTERNAL SUBROUTINES ..
--      EXTERNAL DEC,PDERV,DGBFA,RESID
-+      EXTERNAL I_DEC,PDERV,I_DGBFA,RESID
- C     ..
- C     .. INTRINSIC FUNCTIONS ..
-       INTRINSIC DABS,DMAX1,DSQRT
-@@ -1192,17 +1192,17 @@
-       NRE=NRE+ MIN(MBND(3),N)
- C
-  70   IF (MITER.GT.2) THEN
--         CALL DGBFA(PW,MBND(4),N,ML,MU,IPIV,IER)
-+         CALL I_DGBFA(PW,MBND(4),N,ML,MU,IPIV,IER)
-          NDEC = NDEC + 1
-       ELSE
--         CALL DEC(N,N,PW,IPIV,IER)
-+         CALL I_DEC(N,N,PW,IPIV,IER)
-          NDEC = NDEC + 1
-       ENDIF
-       RETURN
--C ---------------------- END OF SUBROUTINE PSET ---------------------
-+C ---------------------- END OF SUBROUTINE I_PSET ---------------------
-       END
- C
--      SUBROUTINE DEC(N,NDIM,A,IP,IER)
-+      SUBROUTINE I_DEC(N,NDIM,A,IP,IER)
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C -------------------------------------------------------------------
-@@ -1218,9 +1218,9 @@
- C     IP(N) = (-1)**(NUMBER OF INTERCHANGES) OR 0.
- C     IER = 0 IF MATRIX IS NON-SINGULAR, OR K IF FOUND TO BE SINGULAR
- C                  AT STAGE K.
--C     USE SOL TO OBTAIN SOLUTION OF LINEAR SYSTEM.
-+C     USE I_SOL TO OBTAIN SOLUTION OF LINEAR SYSTEM.
- C     DETERM(A) = IP(N)*A(1,1)*A(2,2)* . . . *A(N,N).
--C     IF IP(N) = 0, A IS SINGULAR, SOL WILL DIVIDE BY ZERO.
-+C     IF IP(N) = 0, A IS SINGULAR, I_SOL WILL DIVIDE BY ZERO.
- C
- C     REFERENCE.
- C     C.B. MOLER, ALGORITHM 423, LINEAR EQUATION SOLVER, C.A.C.M
-@@ -1279,10 +1279,10 @@
-  80   IER = K
-       IP(N) = 0
-       RETURN
--C--------------------- END OF SUBROUTINE DEC ----------------------
-+C--------------------- END OF SUBROUTINE I_DEC ----------------------
-       END
- C
--      SUBROUTINE SOL(N,NDIM,A,B,IP)
-+      SUBROUTINE I_SOL(N,NDIM,A,B,IP)
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C     .. SCALAR ARGUMENTS ..
-@@ -1305,8 +1305,8 @@
- C     NDIM = DECLARED DIMENSION OF MATRIX A.
- C     A = TRIANGULARISED MATRIX OBTAINED FROM DEC.
- C     B = RIGHT HAND SIDE VECTOR.
--C     IP = PIVOT VECTOR OBTAINED FROM DEC.
--C     DO NOT USE IF DEC HAS SET IER .NE. 0
-+C     IP = PIVOT VECTOR OBTAINED FROM I_DEC.
-+C     DO NOT USE IF I_DEC HAS SET IER .NE. 0
- C     OUTPUT..
- C     B = SOLUTION VECTOR, X.
- C     ------------------------------------------------------------------
-@@ -1333,16 +1333,16 @@
-  40   CONTINUE
-  50   B(1) = B(1)/A(1,1)
-       RETURN
--C------------------------- END OF SUBROUTINE SOL ------------------
-+C------------------------- END OF SUBROUTINE I_SOL ------------------
-       END
- C
--      subroutine dgbfa(abd,lda,n,ml,mu,ipvt,info)
-+      subroutine i_dgbfa(abd,lda,n,ml,mu,ipvt,info)
-       integer lda,n,ml,mu,ipvt(1),info
-       double precision abd(lda,1)
- c
--c     dgbfa factors a double precision band matrix by elimination.
-+c     i_dgbfa factors a double precision band matrix by elimination.
- c
--c     dgbfa is usually called by dgbco, but it can be called
-+c     i_dgbfa is usually called by dgbco, but it can be called
- c     directly with a saving in time if  rcond  is not needed.
- c
- c     on entry
-@@ -1384,7 +1384,7 @@
- c                = 0  normal value.
- c                = k  if  u(k,k) .eq. 0.0 .  this is not an error
- c                     condition for this subroutine, but it does
--c                     indicate that dgbsl will divide by zero if
-+c                     indicate that i_dgbsl will divide by zero if
- c                     called.  use  rcond  in dgbco for a reliable
- c                     indication of singularity.
- c
-@@ -1511,151 +1511,18 @@
-       return
-       end
- C--------------------------------------------------------------------------
--      subroutine daxpy(n,da,dx,incx,dy,incy)
--c
--c     constant times a vector plus a vector.
--c     uses unrolled loops for increments equal to one.
--c     jack dongarra, linpack, 3/11/78.
--c
--      double precision dx(1),dy(1),da
--      integer i,incx,incy,ix,iy,m,mp1,n
--c
--      if(n.le.0)return
--      if (da .eq. 0.0d0) return
--      if(incx.eq.1.and.incy.eq.1)go to 20
--c
--c        code for unequal increments or equal increments
--c          not equal to 1
--c
--      ix = 1
--      iy = 1
--      if(incx.lt.0)ix = (-n+1)*incx + 1
--      if(incy.lt.0)iy = (-n+1)*incy + 1
--      do 10 i = 1,n
--         dy(iy) = dy(iy) + da*dx(ix)
--         ix = ix + incx
--         iy = iy + incy
-- 10   continue
--      return
--c
--c        code for both increments equal to 1
--c
--c
--c        clean-up loop
--c
-- 20   m = mod(n,4)
--      if( m .eq. 0 ) go to 40
--      do 30 i = 1,m
--         dy(i) = dy(i) + da*dx(i)
-- 30   continue
--      if( n .lt. 4 ) return
-- 40   mp1 = m + 1
--      do 50 i = mp1,n,4
--         dy(i) = dy(i) + da*dx(i)
--         dy(i + 1) = dy(i + 1) + da*dx(i + 1)
--         dy(i + 2) = dy(i + 2) + da*dx(i + 2)
--         dy(i + 3) = dy(i + 3) + da*dx(i + 3)
-- 50   continue
--      return
--      end
--C---------------------------------------------------------------------------
--      subroutine  dscal(n,da,dx,incx)
--c
--c     scales a vector by a constant.
--c     uses unrolled loops for increment equal to one.
--c     jack dongarra, linpack, 3/11/78.
--c     modified to correct problem with negative increment, 8/21/90.
--c
--      double precision da,dx(1)
--      integer i,incx,ix,m,mp1,n
--c
--      if(n.le.0)return
--      if(incx.eq.1)go to 20
--c
--c        code for increment not equal to 1
--c
--      ix = 1
--      if(incx.lt.0)ix = (-n+1)*incx + 1
--      do 10 i = 1,n
--         dx(ix) = da*dx(ix)
--         ix = ix + incx
-- 10   continue
--      return
--c
--c        code for increment equal to 1
--c
--c
--c        clean-up loop
--c
-- 20   m = mod(n,5)
--      if( m .eq. 0 ) go to 40
--      do 30 i = 1,m
--         dx(i) = da*dx(i)
-- 30   continue
--      if( n .lt. 5 ) return
-- 40   mp1 = m + 1
--      do 50 i = mp1,n,5
--         dx(i) = da*dx(i)
--         dx(i + 1) = da*dx(i + 1)
--        dx(i + 2) = da*dx(i + 2)
--        dx(i + 3) = da*dx(i + 3)
--        dx(i + 4) = da*dx(i + 4)
-- 50   continue
--      return
--      end
--C--------------------------------------------------------------------------
--      integer function idamax(n,dx,incx)
--c
--c     finds the index of element having max. absolute value.
--c     jack dongarra, linpack, 3/11/78.
--c     modified to correct problem with negative increment, 8/21/90.
--c
--      double precision dx(1),dmax
--      integer i,incx,ix,n
--c
--      idamax = 0
--      if( n .lt. 1 ) return
--      idamax = 1
--      if(n.eq.1)return
--      if(incx.eq.1)go to 20
--c
--c        code for increment not equal to 1
--c
--      ix = 1
--      if(incx.lt.0)ix = (-n+1)*incx + 1
--      dmax = dabs(dx(ix))
--      ix = ix + incx
--      do 10 i = 2,n
--         if(dabs(dx(ix)).le.dmax) go to 5
--         idamax = i
--         dmax = dabs(dx(ix))
--    5    ix = ix + incx
-- 10   continue
--      return
--c
--c        code for increment equal to 1
--c
-- 20   dmax = dabs(dx(1))
--      do 30 i = 2,n
--         if(dabs(dx(i)).le.dmax) go to 30
--         idamax = i
--         dmax = dabs(dx(i))
-- 30   continue
--      return
--      end
--C--------------------------------------------------------------------------
--      subroutine dgbsl(abd,lda,n,ml,mu,ipvt,b,job)
-+      subroutine i_dgbsl(abd,lda,n,ml,mu,ipvt,b,job)
-       integer lda,n,ml,mu,ipvt(*),job
-       double precision abd(lda,*),b(*)
- c     
--c     dgbsl solves the double precision band system
-+c     i_dgbsl solves the double precision band system
- c     a * x = b  or  trans(a) * x = b
--c     using the factors computed by dgbco or dgbfa.
-+c     using the factors computed by dgbco or i_dgbfa.
- c
- c     on entry
- c
- c        abd     double precision(lda, n)
--c                the output from dgbco or dgbfa.
-+c                the output from dgbco or i_dgbfa.
- c
- c        lda     integer
- c                the leading dimension of the array  abd .
-@@ -1670,7 +1537,7 @@
- c                number of diagonals above the main diagonal.
- c
- c        ipvt    integer(n)
--c                the pivot vector from dgbco or dgbfa.
-+c                the pivot vector from dgbco or i_dgbfa.
- c
- c        b       double precision(n)
- c                the right hand side vector.
-@@ -1691,14 +1558,14 @@
- c        but it is often caused by improper arguments or improper
- c        setting of lda .  it will not occur if the subroutines are
- c        called correctly and if dgbco has set rcond .gt. 0.0
--c        or dgbfa has set info .eq. 0 .
-+c        or i_dgbfa has set info .eq. 0 .
- c
- c     to compute  inverse(a) * c  where  c  is a matrix
- c     with  p  columns
- c           call dgbco(abd,lda,n,ml,mu,ipvt,rcond,z)
- c           if (rcond is too small) go to ...
- c           do 10 j = 1, p
--c              call dgbsl(abd,lda,n,ml,mu,ipvt,c(1,j),0)
-+c              call i_dgbsl(abd,lda,n,ml,mu,ipvt,c(1,j),0)
- c        10 continue
- c
- c     linpack. this version dated 08/14/78 .
-@@ -1780,64 +1647,14 @@
-       return
-       end
- C---------------------------------------------------------------------------
--      double precision function ddot(n,dx,incx,dy,incy)
--c
--c     forms the dot product of two vectors.
--c     uses unrolled loops for increments equal to one.
--c     jack dongarra, linpack, 3/11/78.
--c
--      double precision dx(1),dy(1),dtemp
--      integer i,incx,incy,ix,iy,m,mp1,n
--c
--      ddot = 0.0d0
--      dtemp = 0.0d0
--      if(n.le.0)return
--      if(incx.eq.1.and.incy.eq.1)go to 20
--c
--c        code for unequal increments or equal increments
--c          not equal to 1
--c
--      ix = 1
--      iy = 1
--      if(incx.lt.0)ix = (-n+1)*incx + 1
--      if(incy.lt.0)iy = (-n+1)*incy + 1
--      do 10 i = 1,n
--         dtemp = dtemp + dx(ix)*dy(iy)
--         ix = ix + incx
--         iy = iy + incy
-- 10   continue
--      ddot = dtemp
--      return
--c
--c        code for both increments equal to 1
--c
--c
--c        clean-up loop
--c
-- 20   m = mod(n,5)
--      if( m .eq. 0 ) go to 40
--      do 30 i = 1,m
--         dtemp = dtemp + dx(i)*dy(i)
-- 30   continue
--      if( n .lt. 5 ) go to 60
-- 40   mp1 = m + 1
--      do 50 i = mp1,n,5
--         dtemp = dtemp + dx(i)*dy(i) + dx(i + 1)*dy(i + 1) +
--     *        dx(i + 2)*dy(i + 2) + dx(i + 3)*dy(i + 3) + 
--     *        dx(i + 4)*dy(i + 4)
-- 50   continue
-- 60   ddot = dtemp
--      return
--      end
--C---------------------------------------------------------------------------
- 
--      SUBROUTINE ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-+      SUBROUTINE I_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C     ***************************************************
- C
- C     THIS ROUTINE CALCULATES ERRORS USED IN TESTS
--C     IN STIFF .
-+C     IN I_STIFF .
- C
- C     ***************************************************
- C     .. SCALAR ARGUMENTS ..
-@@ -1872,7 +1689,7 @@
-       END
- C--------------------------------------------------------------------------
- 
--      SUBROUTINE PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)
-+      SUBROUTINE I_PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C **********************************************************************
-@@ -1903,7 +1720,7 @@
-       END
- C------------------------------------------------------------------------
- 
--      SUBROUTINE ITRAT2(QQQ,Y,YPRIME,N,T,HBETA,ERRBND,ARH,CRATE,TCRATE
-+      SUBROUTINE I_ITRAT2(QQQ,Y,YPRIME,N,T,HBETA,ERRBND,ARH,CRATE,TCRATE
-      +     ,M,WORKED,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,NIND1,
-      +     NIND2,NIND3,IPIV,LMB,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,NBSOL,
-      +     NRE,NQUSED,RESID,IERR)
-@@ -1922,7 +1739,7 @@
-       INTEGER I
- C     ..
- C     .. EXTERNAL SUBROUTINES ..
--      EXTERNAL SOL,DGBSL,RESID
-+      EXTERNAL I_SOL,I_DGBSL,RESID
- C     ..
- C     .. INTRINSIC FUNCTIONS ..
-       INTRINSIC DMAX1,DMIN1
-@@ -1963,10 +1780,10 @@
- C
-       call resid(n,t,y,save2,yprime,ipar,rpar,ierr)
-       IF(MF.GE.23) THEN
--         CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE2,0)
-+         CALL I_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE2,0)
-          NBSOL = NBSOL + 1
-       ELSE
--         CALL SOL(N,N,PW,SAVE2,IPIV)
-+         CALL I_SOL(N,N,PW,SAVE2,IPIV)
-          NBSOL = NBSOL + 1
-       ENDIF
-       D = ZERO
-@@ -1992,10 +1809,10 @@
- C     IF WE ARE HERE THEN PARTIALS ARE O.K.
- C
-       IF( MF.GE. 23) THEN
--         CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE2,0)
-+         CALL I_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE2,0)
-          NBSOL=NBSOL + 1
-       ELSE
--         CALL SOL(N,N,PW,SAVE2,IPIV)
-+         CALL I_SOL(N,N,PW,SAVE2,IPIV)
-          NBSOL = NBSOL + 1
-       ENDIF
- C
-@@ -2043,7 +1860,7 @@
-       END
- C--------------------------------------------------------------------------
- 
--      SUBROUTINE STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
-+      SUBROUTINE I_STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
-      +     NIND1,NIND2,NIND3,T,TOUT,TEND,Y,YPRIME,N,
-      +     YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,PWCOPY,YHOLD,
-      +     YNHOLD,ARH,IPIV,LOUT,MAXDER,ITOL,RTOL,ATOL,RPAR,IPAR,
-@@ -2052,13 +1869,13 @@
- 
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C     ------------------------------------------------------------------
--C     THE SUBROUTINE STIFF PERFORMS ONE STEP OF THE INTEGRATION OF AN
-+C     THE SUBROUTINE I_STIFF PERFORMS ONE STEP OF THE INTEGRATION OF AN
- C     INITIAL VALUE PROBLEM FOR A SYSTEM OF 
- C     IMPLICIT DIFFERENTIAL ALGEBRAIC EQUATIONS.
--C     COMMUNICATION WITH STIFF IS DONE WITH THE FOLLOWING VARIABLES..
-+C     COMMUNICATION WITH I_STIFF IS DONE WITH THE FOLLOWING VARIABLES..
- C     Y      AN N BY LMAX+3 ARRAY CONTAINING THE DEPENDENT VARIABLES
- C              AND THEIR BACKWARD DIFFERENCES.  MAXDER (=LMAX-1) IS THE
--C              MAXIMUM ORDER AVAILABLE.  SEE SUBROUTINE COSET.
-+C              MAXIMUM ORDER AVAILABLE.  SEE SUBROUTINE I_COSET.
- C              Y(I,J+1) CONTAINS THE JTH BACKWARD DIFFERENCE OF Y(I)
- C     T      THE INDEPENDENT VARIABLE. T IS UPDATED ON EACH STEP TAKEN.
- C     H      THE STEPSIZE TO BE ATTEMPTED ON THE NEXT STEP.
-@@ -2068,7 +1885,7 @@
- C     HMIN   THE MINIMUM AND MAXIMUM ABSOLUTE VALUE OF THE STEPSIZE
- C     HMAX   TO BE USED FOR THE STEP.  THESE MAY BE CHANGED AT ANY
- C              TIME BUT WILL NOT TAKE EFFECT UNTIL THE NEXT H CHANGE.
--C     RTOL,ATOL  THE ERROR BOUNDS. SEE DESCRIPTION IN OVDRIV.
-+C     RTOL,ATOL  THE ERROR BOUNDS. SEE DESCRIPTION IN I_OVDRIV.
- C     N      THE NUMBER OF FIRST ORDER DIFFERENTIAL EQUATIONS.
- C     MF     THE METHOD FLAG.  MUST BE SET TO 21,22,23 OR 24 AT PRESENT
- C     KFLAG  A COMPLETION FLAG WITH THE FOLLOWING MEANINGS..
-@@ -2103,7 +1920,7 @@
- C                MATRIX WAS FORMED BY A NEW J.
- C     AVOLDJ   STORES VALUE FOR AVERAGE CRATE WHEN ITERATION
- C                MATRIX WAS FORMED BY AN OLD J.
--C     NRENEW   FLAG THAT IS USED IN COMMUNICATION WITH SUBROUTINE PSET.
-+C     NRENEW   FLAG THAT IS USED IN COMMUNICATION WITH SUBROUTINE I_PSET.
- C                IF  NRENEW > 0  THEN FORM A NEW JACOBIAN BEFORE
- C                                COMPUTING THE COEFFICIENT MATRIX FOR
- C                                THE NEWTON-RAPHSON ITERATION
-@@ -2132,8 +1949,8 @@
-       DIMENSION  EL(10),ELST(10),TQ(5)
- C     ..
- C     .. EXTERNAL SUBROUTINES ..
--      EXTERNAL COSET,CPYARY,ERRORS,HCHOSE,ITRAT2,
--     +         PRDICT,PSET,RSCALE,SOL,DGBSL,PDERV,RESID
-+      EXTERNAL I_COSET,I_CPYARY,I_ERRORS,I_HCHOSE,I_ITRAT2,
-+     +         I_PRDICT,I_PSET,I_RSCALE,I_SOL,I_DGBSL,PDERV,RESID
- C     ..
- C     .. INTRINSIC FUNCTIONS ..
-       INTRINSIC DABS,DMAX1,DMIN1
-@@ -2225,14 +2042,14 @@
-       HUSED = H
- C     -----------------------------------------------------------------
- C     IF THE CALLER HAS CHANGED N , THE CONSTANTS E, EDN, EUP
--C     AND BND MUST BE RESET.  E IS A COMPARISON FOR ERRORS AT THE
-+C     AND BND MUST BE RESET.  E IS A COMPARISON FOR I_ERRORS AT THE
- C     CURRENT ORDER NQ.  EUP IS TO TEST FOR INCREASING THE ORDER,
- C     EDN FOR DECREASING THE ORDER.  BND IS USED TO TEST FOR CONVERGENCE
- C     OF THE CORRECTOR ITERATES.   IF THE CALLER HAS CHANGED H, Y MUST
- C     BE RE-SCALED.  IF H IS CHANGED, IDOUB IS SET TO L+1 TO PREVENT
- C     FURTHER CHANGES IN H FOR THAT MANY STEPS.
- C     -----------------------------------------------------------------
--      CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-+      CALL I_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-       LMAX = MAXDER + 1
-       RC = RC*EL(1)/OLDLO
-       OLDLO = EL(1)
-@@ -2243,14 +2060,14 @@
- C     NRENEW AND NEWPAR ARE TO INSTRUCT ROUTINE THAT
- C     WE WISH A NEW J TO BE CALCULATED FOR THIS STEP.
- C     *****************************************************
--      CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-+      CALL I_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-       DO 20 I = 1,N
-          ARH(I) = EL(2)*Y(I,1)
-  20   CONTINUE
--      CALL CPYARY(N*L,Y,YHOLD)
-+      CALL I_CPYARY(N*L,Y,YHOLD)
-       QI = H*EL(1)
-       QQ = ONE/QI
--      CALL PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)      
-+      CALL I_PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)      
-       IF(IERR.NE.0) THEN
-          H=H/2
-          IERR = 0
-@@ -2263,7 +2080,7 @@
- C     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- C     DIFFERENT PARAMETERS ON THIS CALL        <
- C     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-- 30   CALL CPYARY(N*L,YHOLD,Y)
-+ 30   CALL I_CPYARY(N*L,YHOLD,Y)
-       IF (MF.NE.MFOLD) THEN
-          METH = MF/10
-          MITER = MF - 10*METH
-@@ -2306,7 +2123,7 @@
- C     *********************************************
-  40   RH = DMAX1(RH,HMIN/DABS(H))
-  50   RH = DMIN1(RH,HMAX/DABS(H),RMAX)
--      CALL RSCALE(N,L,RH,Y)
-+      CALL I_RSCALE(N,L,RH,Y)
-       RMAX = 10.0D+0
-       JCHANG = 1
-       H = H*RH
-@@ -2323,7 +2140,7 @@
-       END IF
-       
-       IDOUB = L + 1
--      CALL CPYARY(N*L,Y,YHOLD)
-+      CALL I_CPYARY(N*L,Y,YHOLD)
-       
-  60   IF (DABS(RC-ONE).GT.UPBND) IWEVAL = MITER
-       HUSED = H
-@@ -2348,7 +2165,7 @@
-       IF (JCHANG.EQ.1) THEN
- C        IF WE HAVE CHANGED STEPSIZE THEN PREDICT A VALUE FOR Y(T+H)
- C        AND EVALUATE THE DERIVATIVE THERE (STORED IN SAVE2())
--         CALL PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)
-+         CALL I_PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)
-          IF(IERR.NE.0) GOTO 8000
-          DO 95 I=1,N
-             YPRIME(I)=(Y(I,1)-ARH(I))/QI
-@@ -2371,7 +2188,7 @@
- C -------------------------------------------------------------------
- C     IF INDICATED, THE MATRIX P = I/(H*EL(2)) - J IS RE-EVALUATED BEFORE
- C     STARTING THE CORRECTOR ITERATION.  IWEVAL IS SET = 0 TO INDICATE
--C     THAT THIS HAS BEEN DONE. P IS COMPUTED AND PROCESSED IN PSET.
-+C     THAT THIS HAS BEEN DONE. P IS COMPUTED AND PROCESSED IN I_PSET.
- C     THE PROCESSED MATRIX IS STORED IN PW
- C -------------------------------------------------------------------
-       IWEVAL = 0
-@@ -2436,14 +2253,14 @@
-       JSNOLD = 0
-       MQ1TMP = MEQC1
-       MQ2TMP = MEQC2      
--      CALL PSET(Y,YPRIME,N,H,T,UROUND,EPSJAC,QI,MITER,MBND,
-+      CALL I_PSET(Y,YPRIME,N,H,T,UROUND,EPSJAC,QI,MITER,MBND,
-      +   NIND1,NIND2,NIND3,IER,PDERV,RESID,NRENEW,YMAX,SAVE1,SAVE2,
-      +   SCALE,PW,PWCOPY,ERROR,IPIV,ITOL,RTOL,ATOL,NPSET,NJE,NRE,NDEC
-      +     ,IPAR,RPAR,IERR)
-       IF(IERR.NE.0) GOTO 8000
-       QQQ=QI
- C
--C     NOTE THAT ERROR() IS JUST BEING USED AS A WORKSPACE BY PSET
-+C     NOTE THAT ERROR() IS JUST BEING USED AS A WORKSPACE BY I_PSET
-       IF (IER.NE.0) THEN
- C     IF IER>0 THEN WE HAVE HAD A SINGULARITY IN THE ITERATION MATRIX
-          IJUS=1
-@@ -2467,14 +2284,14 @@
- C     LOOP. THE UPDATED Y VECTOR IS STORED TEMPORARILY IN SAVE1.
- C **********************************************************************
-       IF (.NOT.SAMPLE) THEN
--         CALL ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,
-+         CALL I_ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,
-      +        WORKED,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,
-      +        NIND1,NIND2,NIND3,IPIV,1,ITOL,RTOL,ATOL,IPAR,RPAR,
-      +        HUSED,NBSOL,NRE,NQUSED,resid,IERR)
-          IF(IERR.NE.0) GOTO 8000
- 
-       ELSE
--         CALL ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,
-+         CALL I_ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,
-      +        WORKED,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,
-      +        NIND1,NIND2,NIND3,IPIV,0,ITOL,RTOL,ATOL,IPAR,RPAR,
-      +        HUSED,NBSOL,NRE,NQUSED,resid,IERR)
-@@ -2589,7 +2406,7 @@
-             ARH(I) = ARH(I) + EL(JP1)*Y(I,J1)
-  200     CONTINUE
-  210  CONTINUE
--      CALL PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)      
-+      CALL I_PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)      
-       IF(IERR.NE.0) GOTO 8000
-       DO 215 I=1,N
-          YPRIME(I)=(Y(I,1)-ARH(I))/QQQ
-@@ -2603,7 +2420,7 @@
- C     FOR NOW WILL ASSUME THAT WE DO NOT WISH TO SAMPLE
- C     AT THE N+2 STEP POINT
- C
--      CALL ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE2,TCRAT2,M2,
-+      CALL I_ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE2,TCRAT2,M2,
-      +     WORKED,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,
-      +     NIND1,NIND2,NIND3,IPIV,1,ITOL,RTOL,ATOL,IPAR,RPAR,
-      +     HUSED,NBSOL,NRE,NQUSED,resid,IERR)
-@@ -2661,10 +2478,10 @@
-       NRE=NRE+1
- C
-       IF (MF.GE. 23) THEN
--         CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
-+         CALL I_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
-          NBSOL=NBSOL+1
-       ELSE
--         CALL SOL(N,N,PW,SAVE1,IPIV)
-+         CALL I_SOL(N,N,PW,SAVE1,IPIV)
-          NBSOL = NBSOL + 1
-       ENDIF
-       DO 321 I=1,N
-@@ -2758,7 +2575,7 @@
-       IF(NQ.GT.1) FFAIL = 0.5D+0/DBLE(FLOAT(NQ))
-       IF(NQ.GT.2) FRFAIL = 0.5D+0/DBLE(FLOAT(NQ-1))
-       EFAIL = 0.5D+0/DBLE(FLOAT(L))
--      CALL CPYARY(N*L,YHOLD,Y)
-+      CALL I_CPYARY(N*L,YHOLD,Y)
-       RMAX = 2.0D+0
-       IF (DABS(H).LE.HMIN*1.00001D+0) THEN
- C
-@@ -2787,10 +2604,10 @@
-          NQ=NEWQ
-          RH=ONE/(PLFAIL*DBLE(FLOAT(-KFAIL)))
-          L=NQ+1
--         CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-+         CALL I_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-          RC=RC*EL(1)/OLDLO
-          OLDLO=EL(1)
--         CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-+         CALL I_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-       ELSE
-          NEWQ = NQ
-          RH = ONE/ (PRFAIL*DBLE(FLOAT(-KFAIL)))
-@@ -2816,7 +2633,7 @@
- C     *********************************
-       JCHANG = 1
-       RH = DMAX1(HMIN/DABS(H),0.1D+0)
--      CALL HCHOSE(RH,H,OVRIDE)
-+      CALL I_HCHOSE(RH,H,OVRIDE)
-       H = H*RH
-       DO 350 I = 1,N
-          Y(I,1)     = YHOLD(I,1)
-@@ -2832,11 +2649,11 @@
-       NQ = 1
-       L = 2
- C     RESET ORDER, RECALCULATE ERROR BOUNDS
--      CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-+      CALL I_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-       LMAX = MAXDER + 1
-       RC = RC*EL(1)/OLDLO
-       OLDLO = EL(1)
--      CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-+      CALL I_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
- C     NOW JUMP TO NORMAL CONTINUATION POINT
-       GO TO 60
- C **********************************************************************
-@@ -3003,7 +2820,7 @@
-             GOTO 440
-          ENDIF
-          RH = DMIN1(RH,RMAX)
--         CALL HCHOSE(RH,H,OVRIDE)
-+         CALL I_HCHOSE(RH,H,OVRIDE)
-          IF ((JSINUP.LE.20).AND.(KFLAG.EQ.0).AND.(RH.LT.1.1D+0)) THEN
- C           WE HAVE RUN INTO PROBLEMS
-             IDOUB = 10
-@@ -3031,16 +2848,16 @@
-             NQ = NEWQ
-             L = NQ + 1
- C           RESET ORDER,RECALCULATE ERROR BOUNDS
--            CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-+            CALL I_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
-             LMAX = MAXDER + 1
-             RC = RC*EL(1)/OLDLO
-             OLDLO = EL(1)
--            CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-+            CALL I_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
-          END IF
-          
-          RH = DMAX1(RH,HMIN/DABS(H))
-          RH = DMIN1(RH,HMAX/DABS(H),RMAX)
--         CALL RSCALE(N,L,RH,Y)
-+         CALL I_RSCALE(N,L,RH,Y)
-          RMAX = 10.0D+0
-          JCHANG = 1
-          H = H*RH
-@@ -3057,7 +2874,7 @@
- C     INFORMATION NECESSARY TO PERFORM AN INTERPOLATION TO FIND THE
- C     SOLUTION AT THE SPECIFIED OUTPUT POINT IF APPROPRIATE.
- C ----------------------------------------------------------------------
--      CALL CPYARY(N*L,Y,YHOLD)
-+      CALL I_CPYARY(N*L,Y,YHOLD)
-       NSTEP = NSTEP + 1
-       JSINUP = JSINUP + 1
-       JSNOLD = JSNOLD + 1
-@@ -3112,7 +2929,7 @@
-          IF ((T-TOUT)*H.GE.0.0D+0) THEN
- C           HAVE OVERSHOT TOUT
-             WRITE (LOUT,*) T,TOUT,H
--            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-+            CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
-             HO = H
-             T0 = TOUT
-             IDID = -5
-@@ -3123,7 +2940,7 @@
-          goto 30
-       endif
- c
--      IF(IJUS.EQ.0) CALL HCHOSE(RH,H,OVRIDE)
-+      IF(IJUS.EQ.0) CALL I_HCHOSE(RH,H,OVRIDE)
-       IF(.NOT.FINISH) THEN
-          GO TO 40
-       ELSE
-@@ -3132,9 +2949,9 @@
- 
-  9000 FORMAT (1X,' CORRECTOR HAS NOT CONVERGED')
-       END
--C ------------------- END OF SUBROUTINE STIFF --------------------------
-+C ------------------- END OF SUBROUTINE I_STIFF --------------------------
- 
--      SUBROUTINE RSCALE(N,L,RH,Y)
-+      SUBROUTINE I_RSCALE(N,L,RH,Y)
-       
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C     .. SCALAR ARGUMENTS ..
-@@ -3246,7 +3063,7 @@
-       END
- C---------------------------------------------------------------------------
- 
--      SUBROUTINE CPYARY(NELEM,SOURCE,TARGET)
-+      SUBROUTINE I_CPYARY(NELEM,SOURCE,TARGET)
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
- C
- C     COPIES THE ARRAY SOURCE() INTO THE ARRAY TARGET()
-@@ -3271,7 +3088,7 @@
-       END
- C----------------------------------------------------------------------------
- 
--      SUBROUTINE HCHOSE(RH,H,OVRIDE)
-+      SUBROUTINE I_HCHOSE(RH,H,OVRIDE)
-       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
-       COMMON / STPSZE / HSTPSZ(2,14)
-       LOGICAL OVRIDE
-@@ -3306,953 +3123,3 @@
-       
-       RETURN
-       END      
--C
--C  ************************************************************
--C
--      DOUBLE PRECISION FUNCTION DLAMCH( CMACH )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      CHARACTER          CMACH
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMCH determines double precision machine parameters.
--*
--*  Arguments
--*  =========
--*
--*  CMACH   (input) CHARACTER*1
--*          Specifies the value to be returned by DLAMCH:
--*          = 'E' or 'e',   DLAMCH := eps
--*          = 'S' or 's ,   DLAMCH := sfmin
--*          = 'B' or 'b',   DLAMCH := base
--*          = 'P' or 'p',   DLAMCH := eps*base
--*          = 'N' or 'n',   DLAMCH := t
--*          = 'R' or 'r',   DLAMCH := rnd
--*          = 'M' or 'm',   DLAMCH := emin
--*          = 'U' or 'u',   DLAMCH := rmin
--*          = 'L' or 'l',   DLAMCH := emax
--*          = 'O' or 'o',   DLAMCH := rmax
--*
--*          where
--*
--*          eps   = relative machine precision
--*          sfmin = safe minimum, such that 1/sfmin does not overflow
--*          base  = base of the machine
--*          prec  = eps*base
--*          t     = number of (base) digits in the mantissa
--*          rnd   = 1.0 when rounding occurs in addition, 0.0 otherwise
--*          emin  = minimum exponent before (gradual) underflow
--*          rmin  = underflow threshold - base**(emin-1)
--*          emax  = largest exponent before overflow
--*          rmax  = overflow threshold  - (base**emax)*(1-eps)
--*
--* =====================================================================
--*
--*     .. Parameters ..
--      DOUBLE PRECISION   ONE, ZERO
--      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
--*     ..
--*     .. Local Scalars ..
--      LOGICAL            FIRST, LRND
--      INTEGER            BETA, IMAX, IMIN, IT
--      DOUBLE PRECISION   BASE, EMAX, EMIN, EPS, PREC, RMACH, RMAX, RMIN,
--     $                   RND, SFMIN, SMALL, T
--*     ..
--*     .. External Functions ..
--      LOGICAL            LSAME
--      EXTERNAL           LSAME
--*     ..
--*     .. External Subroutines ..
--      EXTERNAL           DLAMC2
--*     ..
--*     .. Save statement ..
--      SAVE               FIRST, EPS, SFMIN, BASE, T, RND, EMIN, RMIN,
--     $                   EMAX, RMAX, PREC
--*     ..
--*     .. Data statements ..
--      DATA               FIRST / .TRUE. /
--*     ..
--*     .. Executable Statements ..
--*
--      IF( FIRST ) THEN
--         FIRST = .FALSE.
--         CALL DLAMC2( BETA, IT, LRND, EPS, IMIN, RMIN, IMAX, RMAX )
--         BASE = BETA
--         T = IT
--         IF( LRND ) THEN
--            RND = ONE
--            EPS = ( BASE**( 1-IT ) ) / 2
--         ELSE
--            RND = ZERO
--            EPS = BASE**( 1-IT )
--         END IF
--         PREC = EPS*BASE
--         EMIN = IMIN
--         EMAX = IMAX
--         SFMIN = RMIN
--         SMALL = ONE / RMAX
--         IF( SMALL.GE.SFMIN ) THEN
--*
--*           Use SMALL plus a bit, to avoid the possibility of rounding
--*           causing overflow when computing  1/sfmin.
--*
--            SFMIN = SMALL*( ONE+EPS )
--         END IF
--      END IF
--*
--      IF( LSAME( CMACH, 'E' ) ) THEN
--         RMACH = EPS
--      ELSE IF( LSAME( CMACH, 'S' ) ) THEN
--         RMACH = SFMIN
--      ELSE IF( LSAME( CMACH, 'B' ) ) THEN
--         RMACH = BASE
--      ELSE IF( LSAME( CMACH, 'P' ) ) THEN
--         RMACH = PREC
--      ELSE IF( LSAME( CMACH, 'N' ) ) THEN
--         RMACH = T
--      ELSE IF( LSAME( CMACH, 'R' ) ) THEN
--         RMACH = RND
--      ELSE IF( LSAME( CMACH, 'M' ) ) THEN
--         RMACH = EMIN
--      ELSE IF( LSAME( CMACH, 'U' ) ) THEN
--         RMACH = RMIN
--      ELSE IF( LSAME( CMACH, 'L' ) ) THEN
--         RMACH = EMAX
--      ELSE IF( LSAME( CMACH, 'O' ) ) THEN
--         RMACH = RMAX
--      END IF
--*
--      DLAMCH = RMACH
--      RETURN
--*
--*     End of DLAMCH
--*
--      END
--*
--************************************************************************
--*
--      SUBROUTINE DLAMC1( BETA, T, RND, IEEE1 )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      LOGICAL            IEEE1, RND
--      INTEGER            BETA, T
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMC1 determines the machine parameters given by BETA, T, RND, and
--*  IEEE1.
--*
--*  Arguments
--*  =========
--*
--*  BETA    (output) INTEGER
--*          The base of the machine.
--*
--*  T       (output) INTEGER
--*          The number of ( BETA ) digits in the mantissa.
--*
--*  RND     (output) LOGICAL
--*          Specifies whether proper rounding  ( RND = .TRUE. )  or
--*          chopping  ( RND = .FALSE. )  occurs in addition. This may not
--*          be a reliable guide to the way in which the machine performs
--*          its arithmetic.
--*
--*  IEEE1   (output) LOGICAL
--*          Specifies whether rounding appears to be done in the IEEE
--*          'round to nearest' style.
--*
--*  Further Details
--*  ===============
--*
--*  The routine is based on the routine  ENVRON  by Malcolm and
--*  incorporates suggestions by Gentleman and Marovich. See
--*
--*     Malcolm M. A. (1972) Algorithms to reveal properties of
--*        floating-point arithmetic. Comms. of the ACM, 15, 949-951.
--*
--*     Gentleman W. M. and Marovich S. B. (1974) More on algorithms
--*        that reveal properties of floating point arithmetic units.
--*        Comms. of the ACM, 17, 276-277.
--*
--* =====================================================================
--*
--*     .. Local Scalars ..
--      LOGICAL            FIRST, LIEEE1, LRND
--      INTEGER            LBETA, LT
--      DOUBLE PRECISION   A, B, C, F, ONE, QTR, SAVEC, T1, T2
--*     ..
--*     .. External Functions ..
--      DOUBLE PRECISION   DLAMC3
--      EXTERNAL           DLAMC3
--*     ..
--*     .. Save statement ..
--      SAVE               FIRST, LIEEE1, LBETA, LRND, LT
--*     ..
--*     .. Data statements ..
--      DATA               FIRST / .TRUE. /
--*     ..
--*     .. Executable Statements ..
--*
--      IF( FIRST ) THEN
--         FIRST = .FALSE.
--         ONE = 1
--*
--*        LBETA,  LIEEE1,  LT and  LRND  are the  local values  of  BETA,
--*        IEEE1, T and RND.
--*
--*        Throughout this routine  we use the function  DLAMC3  to ensure
--*        that relevant values are  stored and not held in registers,  or
--*        are not affected by optimizers.
--*
--*        Compute  a = 2.0**m  with the  smallest positive integer m such
--*        that
--*
--*           fl( a + 1.0 ) = a.
--*
--         A = 1
--         C = 1
--*
--*+       WHILE( C.EQ.ONE )LOOP
--   10    CONTINUE
--         IF( C.EQ.ONE ) THEN
--            A = 2*A
--            C = DLAMC3( A, ONE )
--            C = DLAMC3( C, -A )
--            GO TO 10
--         END IF
--*+       END WHILE
--*
--*        Now compute  b = 2.0**m  with the smallest positive integer m
--*        such that
--*
--*           fl( a + b ) .gt. a.
--*
--         B = 1
--         C = DLAMC3( A, B )
--*
--*+       WHILE( C.EQ.A )LOOP
--   20    CONTINUE
--         IF( C.EQ.A ) THEN
--            B = 2*B
--            C = DLAMC3( A, B )
--            GO TO 20
--         END IF
--*+       END WHILE
--*
--*        Now compute the base.  a and c  are neighbouring floating point
--*        numbers  in the  interval  ( beta**t, beta**( t + 1 ) )  and so
--*        their difference is beta. Adding 0.25 to c is to ensure that it
--*        is truncated to beta and not ( beta - 1 ).
--*
--         QTR = ONE / 4
--         SAVEC = C
--         C = DLAMC3( C, -A )
--         LBETA = C + QTR
--*
--*        Now determine whether rounding or chopping occurs,  by adding a
--*        bit  less  than  beta/2  and a  bit  more  than  beta/2  to  a.
--*
--         B = LBETA
--         F = DLAMC3( B / 2, -B / 100 )
--         C = DLAMC3( F, A )
--         IF( C.EQ.A ) THEN
--            LRND = .TRUE.
--         ELSE
--            LRND = .FALSE.
--         END IF
--         F = DLAMC3( B / 2, B / 100 )
--         C = DLAMC3( F, A )
--         IF( ( LRND ) .AND. ( C.EQ.A ) )
--     $      LRND = .FALSE.
--*
--*        Try and decide whether rounding is done in the  IEEE  'round to
--*        nearest' style. B/2 is half a unit in the last place of the two
--*        numbers A and SAVEC. Furthermore, A is even, i.e. has last  bit
--*        zero, and SAVEC is odd. Thus adding B/2 to A should not  change
--*        A, but adding B/2 to SAVEC should change SAVEC.
--*
--         T1 = DLAMC3( B / 2, A )
--         T2 = DLAMC3( B / 2, SAVEC )
--         LIEEE1 = ( T1.EQ.A ) .AND. ( T2.GT.SAVEC ) .AND. LRND
--*
--*        Now find  the  mantissa, t.  It should  be the  integer part of
--*        log to the base beta of a,  however it is safer to determine  t
--*        by powering.  So we find t as the smallest positive integer for
--*        which
--*
--*           fl( beta**t + 1.0 ) = 1.0.
--*
--         LT = 0
--         A = 1
--         C = 1
--*
--*+       WHILE( C.EQ.ONE )LOOP
--   30    CONTINUE
--         IF( C.EQ.ONE ) THEN
--            LT = LT + 1
--            A = A*LBETA
--            C = DLAMC3( A, ONE )
--            C = DLAMC3( C, -A )
--            GO TO 30
--         END IF
--*+       END WHILE
--*
--      END IF
--*
--      BETA = LBETA
--      T = LT
--      RND = LRND
--      IEEE1 = LIEEE1
--      RETURN
--*
--*     End of DLAMC1
--*
--      END
--*
--************************************************************************
--*
--      SUBROUTINE DLAMC2( BETA, T, RND, EPS, EMIN, RMIN, EMAX, RMAX )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      LOGICAL            RND
--      INTEGER            BETA, EMAX, EMIN, T
--      DOUBLE PRECISION   EPS, RMAX, RMIN
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMC2 determines the machine parameters specified in its argument
--*  list.
--*
--*  Arguments
--*  =========
--*
--*  BETA    (output) INTEGER
--*          The base of the machine.
--*
--*  T       (output) INTEGER
--*          The number of ( BETA ) digits in the mantissa.
--*
--*  RND     (output) LOGICAL
--*          Specifies whether proper rounding  ( RND = .TRUE. )  or
--*          chopping  ( RND = .FALSE. )  occurs in addition. This may not
--*          be a reliable guide to the way in which the machine performs
--*          its arithmetic.
--*
--*  EPS     (output) DOUBLE PRECISION
--*          The smallest positive number such that
--*
--*             fl( 1.0 - EPS ) .LT. 1.0,
--*
--*          where fl denotes the computed value.
--*
--*  EMIN    (output) INTEGER
--*          The minimum exponent before (gradual) underflow occurs.
--*
--*  RMIN    (output) DOUBLE PRECISION
--*          The smallest normalized number for the machine, given by
--*          BASE**( EMIN - 1 ), where  BASE  is the floating point value
--*          of BETA.
--*
--*  EMAX    (output) INTEGER
--*          The maximum exponent before overflow occurs.
--*
--*  RMAX    (output) DOUBLE PRECISION
--*          The largest positive number for the machine, given by
--*          BASE**EMAX * ( 1 - EPS ), where  BASE  is the floating point
--*          value of BETA.
--*
--*  Further Details
--*  ===============
--*
--*  The computation of  EPS  is based on a routine PARANOIA by
--*  W. Kahan of the University of California at Berkeley.
--*
--* =====================================================================
--*
--*     .. Local Scalars ..
--      LOGICAL            FIRST, IEEE, IWARN, LIEEE1, LRND
--      INTEGER            GNMIN, GPMIN, I, LBETA, LEMAX, LEMIN, LT,
--     $                   NGNMIN, NGPMIN
--      DOUBLE PRECISION   A, B, C, HALF, LEPS, LRMAX, LRMIN, ONE, RBASE,
--     $                   SIXTH, SMALL, THIRD, TWO, ZERO
--*     ..
--*     .. External Functions ..
--      DOUBLE PRECISION   DLAMC3
--      EXTERNAL           DLAMC3
--*     ..
--*     .. External Subroutines ..
--      EXTERNAL           DLAMC1, DLAMC4, DLAMC5
--*     ..
--*     .. Intrinsic Functions ..
--      INTRINSIC          ABS, MAX, MIN
--*     ..
--*     .. Save statement ..
--      SAVE               FIRST, IWARN, LBETA, LEMAX, LEMIN, LEPS, LRMAX,
--     $                   LRMIN, LT
--*     ..
--*     .. Data statements ..
--      DATA               FIRST / .TRUE. / , IWARN / .FALSE. /
--*     ..
--*     .. Executable Statements ..
--*
--      IF( FIRST ) THEN
--         FIRST = .FALSE.
--         ZERO = 0
--         ONE = 1
--         TWO = 2
--*
--*        LBETA, LT, LRND, LEPS, LEMIN and LRMIN  are the local values of
--*        BETA, T, RND, EPS, EMIN and RMIN.
--*
--*        Throughout this routine  we use the function  DLAMC3  to ensure
--*        that relevant values are stored  and not held in registers,  or
--*        are not affected by optimizers.
--*
--*        DLAMC1 returns the parameters  LBETA, LT, LRND and LIEEE1.
--*
--         CALL DLAMC1( LBETA, LT, LRND, LIEEE1 )
--*
--*        Start to find EPS.
--*
--         B = LBETA
--         A = B**( -LT )
--         LEPS = A
--*
--*        Try some tricks to see whether or not this is the correct  EPS.
--*
--         B = TWO / 3
--         HALF = ONE / 2
--         SIXTH = DLAMC3( B, -HALF )
--         THIRD = DLAMC3( SIXTH, SIXTH )
--         B = DLAMC3( THIRD, -HALF )
--         B = DLAMC3( B, SIXTH )
--         B = ABS( B )
--         IF( B.LT.LEPS )
--     $      B = LEPS
--*
--         LEPS = 1
--*
--*+       WHILE( ( LEPS.GT.B ).AND.( B.GT.ZERO ) )LOOP
--   10    CONTINUE
--         IF( ( LEPS.GT.B ) .AND. ( B.GT.ZERO ) ) THEN
--            LEPS = B
--            C = DLAMC3( HALF*LEPS, ( TWO**5 )*( LEPS**2 ) )
--            C = DLAMC3( HALF, -C )
--            B = DLAMC3( HALF, C )
--            C = DLAMC3( HALF, -B )
--            B = DLAMC3( HALF, C )
--            GO TO 10
--         END IF
--*+       END WHILE
--*
--         IF( A.LT.LEPS )
--     $      LEPS = A
--*
--*        Computation of EPS complete.
--*
--*        Now find  EMIN.  Let A = + or - 1, and + or - (1 + BASE**(-3)).
--*        Keep dividing  A by BETA until (gradual) underflow occurs. This
--*        is detected when we cannot recover the previous A.
--*
--         RBASE = ONE / LBETA
--         SMALL = ONE
--         DO 20 I = 1, 3
--            SMALL = DLAMC3( SMALL*RBASE, ZERO )
--   20    CONTINUE
--         A = DLAMC3( ONE, SMALL )
--         CALL DLAMC4( NGPMIN, ONE, LBETA )
--         CALL DLAMC4( NGNMIN, -ONE, LBETA )
--         CALL DLAMC4( GPMIN, A, LBETA )
--         CALL DLAMC4( GNMIN, -A, LBETA )
--         IEEE = .FALSE.
--*
--         IF( ( NGPMIN.EQ.NGNMIN ) .AND. ( GPMIN.EQ.GNMIN ) ) THEN
--            IF( NGPMIN.EQ.GPMIN ) THEN
--               LEMIN = NGPMIN
--*            ( Non twos-complement machines, no gradual underflow;
--*              e.g.,  VAX )
--            ELSE IF( ( GPMIN-NGPMIN ).EQ.3 ) THEN
--               LEMIN = NGPMIN - 1 + LT
--               IEEE = .TRUE.
--*            ( Non twos-complement machines, with gradual underflow;
--*              e.g., IEEE standard followers )
--            ELSE
--               LEMIN = MIN( NGPMIN, GPMIN )
--*            ( A guess; no known machine )
--               IWARN = .TRUE.
--            END IF
--*
--         ELSE IF( ( NGPMIN.EQ.GPMIN ) .AND. ( NGNMIN.EQ.GNMIN ) ) THEN
--            IF( ABS( NGPMIN-NGNMIN ).EQ.1 ) THEN
--               LEMIN = MAX( NGPMIN, NGNMIN )
--*            ( Twos-complement machines, no gradual underflow;
--*              e.g., CYBER 205 )
--            ELSE
--               LEMIN = MIN( NGPMIN, NGNMIN )
--*            ( A guess; no known machine )
--               IWARN = .TRUE.
--            END IF
--*
--         ELSE IF( ( ABS( NGPMIN-NGNMIN ).EQ.1 ) .AND.
--     $            ( GPMIN.EQ.GNMIN ) ) THEN
--            IF( ( GPMIN-MIN( NGPMIN, NGNMIN ) ).EQ.3 ) THEN
--               LEMIN = MAX( NGPMIN, NGNMIN ) - 1 + LT
--*            ( Twos-complement machines with gradual underflow;
--*              no known machine )
--            ELSE
--               LEMIN = MIN( NGPMIN, NGNMIN )
--*            ( A guess; no known machine )
--               IWARN = .TRUE.
--            END IF
--*
--         ELSE
--            LEMIN = MIN( NGPMIN, NGNMIN, GPMIN, GNMIN )
--*         ( A guess; no known machine )
--            IWARN = .TRUE.
--         END IF
--***
--* Comment out this if block if EMIN is ok
--         IF( IWARN ) THEN
--            FIRST = .TRUE.
--            WRITE( 6, FMT = 9999 )LEMIN
--         END IF
--***
--*
--*        Assume IEEE arithmetic if we found denormalised  numbers above,
--*        or if arithmetic seems to round in the  IEEE style,  determined
--*        in routine DLAMC1. A true IEEE machine should have both  things
--*        true; however, faulty machines may have one or the other.
--*
--         IEEE = IEEE .OR. LIEEE1
--*
--*        Compute  RMIN by successive division by  BETA. We could compute
--*        RMIN as BASE**( EMIN - 1 ),  but some machines underflow during
--*        this computation.
--*
--         LRMIN = 1
--         DO 30 I = 1, 1 - LEMIN
--            LRMIN = DLAMC3( LRMIN*RBASE, ZERO )
--   30    CONTINUE
--*
--*        Finally, call DLAMC5 to compute EMAX and RMAX.
--*
--         CALL DLAMC5( LBETA, LT, LEMIN, IEEE, LEMAX, LRMAX )
--      END IF
--*
--      BETA = LBETA
--      T = LT
--      RND = LRND
--      EPS = LEPS
--      EMIN = LEMIN
--      RMIN = LRMIN
--      EMAX = LEMAX
--      RMAX = LRMAX
--*
--      RETURN
--*
-- 9999 FORMAT( / / ' WARNING. The value EMIN may be incorrect:-',
--     $      '  EMIN = ', I8, /
--     $      ' If, after inspection, the value EMIN looks',
--     $      ' acceptable please comment out ',
--     $      / ' the IF block as marked within the code of routine',
--     $      ' DLAMC2,', / ' otherwise supply EMIN explicitly.', / )
--*
--*     End of DLAMC2
--*
--      END
--*
--************************************************************************
--*
--      DOUBLE PRECISION FUNCTION DLAMC3( A, B )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      DOUBLE PRECISION   A, B
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMC3  is intended to force  A  and  B  to be stored prior to doing
--*  the addition of  A  and  B ,  for use in situations where optimizers
--*  might hold one of these in a register.
--*
--*  Arguments
--*  =========
--*
--*  A, B    (input) DOUBLE PRECISION
--*          The values A and B.
--*
--* =====================================================================
--*
--*     .. Executable Statements ..
--*
--      DLAMC3 = A + B
--*
--      RETURN
--*
--*     End of DLAMC3
--*
--      END
--*
--************************************************************************
--*
--      SUBROUTINE DLAMC4( EMIN, START, BASE )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      INTEGER            BASE, EMIN
--      DOUBLE PRECISION   START
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMC4 is a service routine for DLAMC2.
--*
--*  Arguments
--*  =========
--*
--*  EMIN    (output) EMIN
--*          The minimum exponent before (gradual) underflow, computed by
--*          setting A = START and dividing by BASE until the previous A
--*          can not be recovered.
--*
--*  START   (input) DOUBLE PRECISION
--*          The starting point for determining EMIN.
--*
--*  BASE    (input) INTEGER
--*          The base of the machine.
--*
--* =====================================================================
--*
--*     .. Local Scalars ..
--      INTEGER            I
--      DOUBLE PRECISION   A, B1, B2, C1, C2, D1, D2, ONE, RBASE, ZERO
--*     ..
--*     .. External Functions ..
--      DOUBLE PRECISION   DLAMC3
--      EXTERNAL           DLAMC3
--*     ..
--*     .. Executable Statements ..
--*
--      A = START
--      ONE = 1
--      RBASE = ONE / BASE
--      ZERO = 0
--      EMIN = 1
--      B1 = DLAMC3( A*RBASE, ZERO )
--      C1 = A
--      C2 = A
--      D1 = A
--      D2 = A
--*+    WHILE( ( C1.EQ.A ).AND.( C2.EQ.A ).AND.
--*    $       ( D1.EQ.A ).AND.( D2.EQ.A )      )LOOP
--   10 CONTINUE
--      IF( ( C1.EQ.A ) .AND. ( C2.EQ.A ) .AND. ( D1.EQ.A ) .AND.
--     $    ( D2.EQ.A ) ) THEN
--         EMIN = EMIN - 1
--         A = B1
--         B1 = DLAMC3( A / BASE, ZERO )
--         C1 = DLAMC3( B1*BASE, ZERO )
--         D1 = ZERO
--         DO 20 I = 1, BASE
--            D1 = D1 + B1
--   20    CONTINUE
--         B2 = DLAMC3( A*RBASE, ZERO )
--         C2 = DLAMC3( B2 / RBASE, ZERO )
--         D2 = ZERO
--         DO 30 I = 1, BASE
--            D2 = D2 + B2
--   30    CONTINUE
--         GO TO 10
--      END IF
--*+    END WHILE
--*
--      RETURN
--*
--*     End of DLAMC4
--*
--      END
--*
--************************************************************************
--*
--      SUBROUTINE DLAMC5( BETA, P, EMIN, IEEE, EMAX, RMAX )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     October 31, 1992
--*
--*     .. Scalar Arguments ..
--      LOGICAL            IEEE
--      INTEGER            BETA, EMAX, EMIN, P
--      DOUBLE PRECISION   RMAX
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  DLAMC5 attempts to compute RMAX, the largest machine floating-point
--*  number, without overflow.  It assumes that EMAX + abs(EMIN) sum
--*  approximately to a power of 2.  It will fail on machines where this
--*  assumption does not hold, for example, the Cyber 205 (EMIN = -28625,
--*  EMAX = 28718).  It will also fail if the value supplied for EMIN is
--*  too large (i.e. too close to zero), probably with overflow.
--*
--*  Arguments
--*  =========
--*
--*  BETA    (input) INTEGER
--*          The base of floating-point arithmetic.
--*
--*  P       (input) INTEGER
--*          The number of base BETA digits in the mantissa of a
--*          floating-point value.
--*
--*  EMIN    (input) INTEGER
--*          The minimum exponent before (gradual) underflow.
--*
--*  IEEE    (input) LOGICAL
--*          A logical flag specifying whether or not the arithmetic
--*          system is thought to comply with the IEEE standard.
--*
--*  EMAX    (output) INTEGER
--*          The largest exponent before overflow
--*
--*  RMAX    (output) DOUBLE PRECISION
--*          The largest machine floating-point number.
--*
--* =====================================================================
--*
--*     .. Parameters ..
--      DOUBLE PRECISION   ZERO, ONE
--      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0 )
--*     ..
--*     .. Local Scalars ..
--      INTEGER            EXBITS, EXPSUM, I, LEXP, NBITS, TRY, UEXP
--      DOUBLE PRECISION   OLDY, RECBAS, Y, Z
--*     ..
--*     .. External Functions ..
--      DOUBLE PRECISION   DLAMC3
--      EXTERNAL           DLAMC3
--*     ..
--*     .. Intrinsic Functions ..
--      INTRINSIC          MOD
--*     ..
--*     .. Executable Statements ..
--*
--*     First compute LEXP and UEXP, two powers of 2 that bound
--*     abs(EMIN). We then assume that EMAX + abs(EMIN) will sum
--*     approximately to the bound that is closest to abs(EMIN).
--*     (EMAX is the exponent of the required number RMAX).
--*
--      LEXP = 1
--      EXBITS = 1
--   10 CONTINUE
--      TRY = LEXP*2
--      IF( TRY.LE.( -EMIN ) ) THEN
--         LEXP = TRY
--         EXBITS = EXBITS + 1
--         GO TO 10
--      END IF
--      IF( LEXP.EQ.-EMIN ) THEN
--         UEXP = LEXP
--      ELSE
--         UEXP = TRY
--         EXBITS = EXBITS + 1
--      END IF
--*
--*     Now -LEXP is less than or equal to EMIN, and -UEXP is greater
--*     than or equal to EMIN. EXBITS is the number of bits needed to
--*     store the exponent.
--*
--      IF( ( UEXP+EMIN ).GT.( -LEXP-EMIN ) ) THEN
--         EXPSUM = 2*LEXP
--      ELSE
--         EXPSUM = 2*UEXP
--      END IF
--*
--*     EXPSUM is the exponent range, approximately equal to
--*     EMAX - EMIN + 1 .
--*
--      EMAX = EXPSUM + EMIN - 1
--      NBITS = 1 + EXBITS + P
--*
--*     NBITS is the total number of bits needed to store a
--*     floating-point number.
--*
--      IF( ( MOD( NBITS, 2 ).EQ.1 ) .AND. ( BETA.EQ.2 ) ) THEN
--*
--*        Either there are an odd number of bits used to store a
--*        floating-point number, which is unlikely, or some bits are
--*        not used in the representation of numbers, which is possible,
--*        (e.g. Cray machines) or the mantissa has an implicit bit,
--*        (e.g. IEEE machines, Dec Vax machines), which is perhaps the
--*        most likely. We have to assume the last alternative.
--*        If this is true, then we need to reduce EMAX by one because
--*        there must be some way of representing zero in an implicit-bit
--*        system. On machines like Cray, we are reducing EMAX by one
--*        unnecessarily.
--*
--         EMAX = EMAX - 1
--      END IF
--*
--      IF( IEEE ) THEN
--*
--*        Assume we are on an IEEE machine which reserves one exponent
--*        for infinity and NaN.
--*
--         EMAX = EMAX - 1
--      END IF
--*
--*     Now create RMAX, the largest machine number, which should
--*     be equal to (1.0 - BETA**(-P)) * BETA**EMAX .
--*
--*     First compute 1.0 - BETA**(-P), being careful that the
--*     result is less than 1.0 .
--*
--      RECBAS = ONE / BETA
--      Z = BETA - ONE
--      Y = ZERO
--      DO 20 I = 1, P
--         Z = Z*RECBAS
--         IF( Y.LT.ONE )
--     $      OLDY = Y
--         Y = DLAMC3( Y, Z )
--   20 CONTINUE
--      IF( Y.GE.ONE )
--     $   Y = OLDY
--*
--*     Now multiply by BETA**EMAX to get RMAX.
--*
--      DO 30 I = 1, EMAX
--         Y = DLAMC3( Y*BETA, ZERO )
--   30 CONTINUE
--*
--      RMAX = Y
--      RETURN
--*
--*     End of DLAMC5
--*
--      END
--      LOGICAL          FUNCTION LSAME( CA, CB )
--*
--*  -- LAPACK auxiliary routine (version 2.0) --
--*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
--*     Courant Institute, Argonne National Lab, and Rice University
--*     September 30, 1994
--*
--*     .. Scalar Arguments ..
--      CHARACTER          CA, CB
--*     ..
--*
--*  Purpose
--*  =======
--*
--*  LSAME returns .TRUE. if CA is the same letter as CB regardless of
--*  case.
--*
--*  Arguments
--*  =========
--*
--*  CA      (input) CHARACTER*1
--*  CB      (input) CHARACTER*1
--*          CA and CB specify the single characters to be compared.
--*
--* =====================================================================
--*
--*     .. Intrinsic Functions ..
--      INTRINSIC          ICHAR
--*     ..
--*     .. Local Scalars ..
--      INTEGER            INTA, INTB, ZCODE
--*     ..
--*     .. Executable Statements ..
--*
--*     Test if the characters are equal
--*
--      LSAME = CA.EQ.CB
--      IF( LSAME )
--     $   RETURN
--*
--*     Now test for equivalence if both characters are alphabetic.
--*
--      ZCODE = ICHAR( 'Z' )
--*
--*     Use 'Z' rather than 'A' so that ASCII can be detected on Prime
--*     machines, on which ICHAR returns a value with bit 8 set.
--*     ICHAR('A') on Prime machines returns 193 which is the same as
--*     ICHAR('A') on an EBCDIC machine.
--*
--      INTA = ICHAR( CA )
--      INTB = ICHAR( CB )
--*
--      IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN
--*
--*        ASCII is assumed - ZCODE is the ASCII code of either lower or
--*        upper case 'Z'.
--*
--         IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
--         IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
--*
--      ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN
--*
--*        EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
--*        upper case 'Z'.
--*
--         IF( INTA.GE.129 .AND. INTA.LE.137 .OR.
--     $       INTA.GE.145 .AND. INTA.LE.153 .OR.
--     $       INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
--         IF( INTB.GE.129 .AND. INTB.LE.137 .OR.
--     $       INTB.GE.145 .AND. INTB.LE.153 .OR.
--     $       INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
--*
--      ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN
--*
--*        ASCII is assumed, on Prime machines - ZCODE is the ASCII code
--*        plus 128 of either lower or upper case 'Z'.
--*
--         IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
--         IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
--      END IF
--      LSAME = INTA.EQ.INTB
--*
--*     RETURN
--*
--*     End of LSAME
--*
--      END
--
--C----------------------------------------------------------------------------
--
+--- cash.orig/mebdfdae.f	2007-12-15 15:37:46.000000000 -0500
++++ cash/mebdfdae.f	2014-03-02 16:20:04.683064613 -0500
+@@ -53,13 +53,13 @@
+ C
+ C              NOVEMBER 6th 1998:  FIRST RELEASE
+ C
+-C     OVDRIV 
++C     A_OVDRIV 
+ C     A PACKAGE FOR THE SOLUTION OF THE INITIAL VALUE PROBLEM
+ C     FOR SYSTEMS OF ORDINARY DIFFERENTIAL EQUATIONS
+ C     DY/DT = F(Y,T),    Y=(Y(1),Y(2),Y(3), . . . ,Y(N))
+ C     AND LINEARLY IMPLICIT DIFFERENTIAL ALGEBRAIC EQUATIONS
+ C        M(DY/DT) = F(Y,T)
+-C     SUBROUTINE OVDRIV IS A DRIVER ROUTINE FOR THIS PACKAGE
++C     SUBROUTINE A_OVDRIV IS A DRIVER ROUTINE FOR THIS PACKAGE
+ C
+ C                    REFERENCES
+ C
+@@ -79,8 +79,8 @@
+ C         SPRINGER 1996, page 267.
+ C
+ C     ----------------------------------------------------------------
+-C     OVDRIV IS TO BE CALLED ONCE FOR EACH OUTPUT VALUE OF T, AND
+-C     IN TURN MAKES REPEATED CALLS TO THE CORE INTEGRATOR STIFF.
++C     A_OVDRIV IS TO BE CALLED ONCE FOR EACH OUTPUT VALUE OF T, AND
++C     IN TURN MAKES REPEATED CALLS TO THE CORE INTEGRATOR A_STIFF.
+ C
+ C     THE INPUT PARAMETERS ARE ..
+ C     N     =  THE NUMBER OF FIRST ORDER DIFFERENTIAL EQUATIONS.
+@@ -165,7 +165,7 @@
+ C              SHOULD BE NON-NEGATIVE. IF ITOL = 1 THEN SINGLE STEP ERROR
+ C              ESTIMATES DIVIDED BY YMAX(I) WILL BE KEPT LESS THAN 1
+ C              IN ROOT-MEAN-SQUARE NORM.  THE VECTOR YMAX OF WEIGHTS IS
+-C              COMPUTED IN OVDRIV. INITIALLY YMAX(I) IS SET AS
++C              COMPUTED IN A_OVDRIV. INITIALLY YMAX(I) IS SET AS
+ C              THE MAXIMUM OF 1 AND ABS(Y(I)).  THEREAFTER YMAX(I) IS
+ C              THE LARGEST VALUE OF ABS(Y(I)) SEEN SO FAR, OR THE
+ C              INITIAL VALUE YMAX(I) IF THAT IS LARGER.
+@@ -251,20 +251,20 @@
+ C     IN ADDITION TO OVDRIVE, THE FOLLOWING ROUTINES ARE PROVIDED
+ C     IN THE PACKAGE..
+ C
+-C     INTERP( - )   INTERPOLATES TO GET THE OUTPUT VALUES
++C     A_INTERP( - )   INTERPOLATES TO GET THE OUTPUT VALUES
+ C                   AT T=TOUT FROM THE DATA IN THE Y ARRAY.
+-C     STIFF( - )    IS THE CORE INTEGRATOR ROUTINE.  IT PERFORMS A
++C     A_STIFF( - )    IS THE CORE INTEGRATOR ROUTINE.  IT PERFORMS A
+ C                   SINGLE STEP AND ASSOCIATED ERROR CONTROL.
+-C     COSET( - )    SETS COEFFICIENTS FOR BACKWARD DIFFERENTIATION
++C     A_COSET( - )    SETS COEFFICIENTS FOR BACKWARD DIFFERENTIATION
+ C                   SCHEMES FOR USE IN THE CORE INTEGRATOR.
+-C     PSET( - )     COMPUTES AND PROCESSES THE JACOBIAN
++C     A_PSET( - )     COMPUTES AND PROCESSES THE JACOBIAN
+ C                   MATRIX J = DF/DY
+-C     DEC( - )      PERFORMS AN LU DECOMPOSITION ON A MATRIX.
+-C     SOL( - )      SOLVES LINEAR SYSTEMS A*X = B AFTER DEC
++C     A_DEC( - )      PERFORMS AN LU DECOMPOSITION ON A MATRIX.
++C     A_SOL( - )      SOLVES LINEAR SYSTEMS A*X = B AFTER A_DEC
+ C                   HAS BEEN CALLED FOR THE MATRIX A
+-C     DGBFA ( - )   FACTORS A DOUBLE PRECISION BAND MATRIX BY
++C     A_DGBFA ( - )   FACTORS A DOUBLE PRECISION BAND MATRIX BY
+ C                   ELIMINATION.
+-C     DGBSL ( - )   SOLVES A BANDED LINEAR SYSTEM A*x=b
++C     A_DGBSL ( - )   SOLVES A BANDED LINEAR SYSTEM A*x=b
+ C
+ C                   ALSO SUPPLIED ARE THE BLAS ROUTINES
+ C
+@@ -338,7 +338,7 @@
+ C     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+ C     THIS SUBROUTINE IS FOR THE PURPOSE               *
+ C     OF SPLITTING UP THE WORK ARRAYS WORK AND IWORK   *
+-C     FOR USE INSIDE THE INTEGRATOR STIFF              *
++C     FOR USE INSIDE THE INTEGRATOR A_STIFF              *
+ C     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ 
+ C     .. SCALAR ARGUMENTS ..
+@@ -353,7 +353,7 @@
+ C     COMMON BLOCKS
+ C     ..
+ C     .. EXTERNAL SUBROUTINES ..
+-      EXTERNAL OVDRIV,F,PDERV,MAS
++      EXTERNAL A_OVDRIV,F,PDERV,MAS
+ C     ..
+ C     .. SAVE STATEMENT ..
+       SAVE  I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11,I12
+@@ -401,7 +401,7 @@
+ c    WORKSPACE HAS TO BE AT LEAST N+14.
+ c
+ 
+-      CALL OVDRIV(N,T0,HO,Y0,TOUT,TEND,MF,IDID,LOUT,WORK(3),WORK(I1),
++      CALL A_OVDRIV(N,T0,HO,Y0,TOUT,TEND,MF,IDID,LOUT,WORK(3),WORK(I1),
+      +     WORK(I2),WORK(I3),WORK(I4),WORK(I5),WORK(I6),WORK(I7),
+      +     WORK(I8),WORK(I9),WORK(I10),WORK(I11),IWORK(15),MBND,MASBND,
+      +     IWORK(1),IWORK(2),IWORK(3),MAXDER,ITOL,RTOL,ATOL,RPAR,IPAR,
+@@ -431,7 +431,7 @@
+      +       '                     WITH N = ',I6)
+       END
+ 
+-      SUBROUTINE OVDRIV(N,T0,HO,Y0,TOUT,TEND,MF,IDID,LOUT,Y,YHOLD,
++      SUBROUTINE A_OVDRIV(N,T0,HO,Y0,TOUT,TEND,MF,IDID,LOUT,Y,YHOLD,
+      +           YNHOLD,YMAX,ERRORS,SAVE1,SAVE2,SCALE,ARH,PW,PWCOPY,
+      +           AM,IPIV,MBND,MASBND,NIND1,NIND2,NIND3,MAXDER,ITOL,
+      +           RTOL,ATOL,RPAR,IPAR,F,PDERV,MAS,NQUSED,NSTEP,NFAIL,
+@@ -457,7 +457,7 @@
+       INTEGER I,KGO,NHCUT
+ C     ..
+ C     .. EXTERNAL SUBROUTINES ..
+-      EXTERNAL INTERP,STIFF,F,PDERV,MAS
++      EXTERNAL A_INTERP,A_STIFF,F,PDERV,MAS
+ C     ..
+ C     .. INTRINSIC FUNCTIONS ..
+       INTRINSIC DABS,DMAX1
+@@ -475,7 +475,7 @@
+          HMAX = DABS(TEND-T0)*10.0D+0
+          IF ((T-TOUT)*H.GE.0.0D+0) THEN
+ C           HAVE OVERSHOT THE OUTPUT POINT, SO INTERPOLATE
+-            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++            CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+             IDID = KFLAG
+             T0 = TOUT
+             HO = H
+@@ -493,7 +493,7 @@
+             IF (((T-TOUT)*H.GE.0.0D+0) .OR. (DABS(T-TOUT).LE.
+      +          100.0D+0*UROUND*HMAX)) THEN
+ C              HAVE OVERSHOT THE OUTPUT POINT, SO INTERPOLATE
+-               CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++               CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+                T0 = TOUT
+                HO = H
+                IDID = KFLAG
+@@ -520,7 +520,7 @@
+          IF ((T-TOUT)*H.GE.0.0D+0) THEN
+ C           HAVE OVERSHOT TOUT
+             WRITE (LOUT,9080) T,TOUT,H
+-            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++            CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+             HO = H
+             T0 = TOUT
+             IDID = -5
+@@ -534,7 +534,7 @@
+          T0 = T
+          IF ((T-TOUT)*H.GE.0.0D+0) THEN
+ C           HAVE OVERSHOT,SO INTERPOLATE
+-            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++            CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+             IDID = KFLAG
+             T0 = TOUT
+             HO = H
+@@ -667,7 +667,7 @@
+    20 IF ((T+H).EQ.T) THEN
+          WRITE (LOUT,9000)
+       END IF
+-      CALL STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,MASBND,
++      CALL A_STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,MASBND,
+      +    NIND1,NIND2,NIND3,T,TOUT,TEND,Y,N,
+      +    YMAX,ERRORS,SAVE1,SAVE2,SCALE,PW,PWCOPY,AM,YHOLD,
+      +    YNHOLD,ARH,IPIV,LOUT,MAXDER,ITOL,RTOL,ATOL,RPAR,IPAR,F,
+@@ -679,7 +679,7 @@
+       ENDIF
+       KGO = 1 - KFLAG
+       IF (KGO.EQ.1) THEN
+-C        NORMAL RETURN FROM STIFF
++C        NORMAL RETURN FROM A_STIFF
+          GO TO 30
+ 
+       ELSE IF (KGO.EQ.2) THEN
+@@ -756,7 +756,7 @@
+             IF (((T-TOUT)*H.GE.0.0D+0) .OR. (DABS(T-TOUT).LE.
+      +          100.0D+0*UROUND*HMAX)) THEN
+ C              HAVE OVERSHOT, SO INTERPOLATE
+-               CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++               CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+                T0 = TOUT
+                HO = H
+                IDID = KFLAG
+@@ -773,7 +773,7 @@
+ 
+       ELSE IF ((T-TOUT)*H.GE.0.0D+0) THEN
+ C        HAVE OVERSHOT, SO INTERPOLATE
+-         CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++         CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+          IDID = KFLAG
+          HO = H
+          T0 = TOUT
+@@ -812,14 +812,14 @@
+ 
+       ELSE
+ C        HAVE PASSED TOUT SO INTERPOLATE
+-         CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++         CALL A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+          T0 = TOUT
+          IDID = KFLAG
+       END IF
+       HO = H
+       IF(KFLAG.NE.0) IDID = KFLAG
+       RETURN
+-C -------------------------- END OF SUBROUTINE OVDRIV -----------------
++C -------------------------- END OF SUBROUTINE A_OVDRIV -----------------
+  9000 FORMAT (' WARNING..  T + H = T ON NEXT STEP.')
+  9010 FORMAT (/,/,' KFLAG = -2 FROM INTEGRATOR AT T = ',E16.8,'  H =',
+      +       E16.8,/,
+@@ -853,7 +853,7 @@
+ 
+ 
+       END
+-      SUBROUTINE INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++      SUBROUTINE A_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C     .. SCALAR ARGUMENTS ..
+@@ -880,14 +880,14 @@
+    20   CONTINUE
+    30 CONTINUE
+       RETURN
+-C -------------- END OF SUBROUTINE INTERP ---------------------------
++C -------------- END OF SUBROUTINE A_INTERP ---------------------------
+       END
+-      SUBROUTINE COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
++      SUBROUTINE A_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
+ 
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C --------------------------------------------------------------------
+-C     COSET IS CALLED BY THE INTEGRATOR AND SETS THE COEFFICIENTS USED
++C     A_COSET IS CALLED BY THE INTEGRATOR AND SETS THE COEFFICIENTS USED
+ C     BY THE CONVENTIONAL BACKWARD DIFFERENTIATION SCHEME AND THE
+ C     MODIFIED EXTENDED BACKWARD DIFFERENTIATION SCHEME.  THE VECTOR
+ C     EL OF LENGTH NQ+1 DETERMINES THE BASIC BDF METHOD WHILE THE VECTOR
+@@ -1017,10 +1017,10 @@
+       TQ(4) = 0.5D+0*TQ(2)/DBLE(FLOAT(NQ))
+       IF(NQ.NE.1) TQ(5)=PERTST(NQ-1,1)
+       RETURN
+-C --------------------- END OF SUBROUTINE COSET ---------------------
++C --------------------- END OF SUBROUTINE A_COSET ---------------------
+       END
+ 
+-      SUBROUTINE PSET(Y,N,H,T,UROUND,EPSJAC,CON,MITER,MBND,
++      SUBROUTINE A_PSET(Y,N,H,T,UROUND,EPSJAC,CON,MITER,MBND,
+      +            MASBND,NIND1,NIND2,NIND3,IER,F,PDERV,MAS,
+      +           NRENEW,YMAX,SAVE1,SAVE2,PW,PWCOPY,AM,WRKSPC,IPIV,
+      +           ITOL,RTOL,ATOL,NPSET,NJE,NFE,NDEC,IPAR,RPAR,IERR)
+@@ -1029,7 +1029,7 @@
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C -------------------------------------------------------------------
+-C     PSET IS CALLED BY STIFF TO COMPUTE AND PROCESS THE MATRIX
++C     A_PSET IS CALLED BY A_STIFF TO COMPUTE AND PROCESS THE MATRIX
+ C     M/(H*EL(1)) - J  WHERE J IS AN APPROXIMATION TO THE RELEVANT JACOBIAN
+ C     AND M IS THE MASS MATRIX.  THIS MATRIX IS THEN SUBJECTED TO LU
+ C     DECOMPOSITION IN PREPARATION FOR LATER SOLUTION OF LINEAR SYSTEMS
+@@ -1037,7 +1037,7 @@
+ C     MATRIX J IS FOUND BY THE USER-SUPPLIED ROUTINE PDERV IF MITER=1
+ C     OR 3 OR BY FINITE DIFFERENCING IF MITER = 2 OR 4.
+ C     IN ADDITION TO VARIABLES DESCRIBED PREVIOUSLY, COMMUNICATION WITH
+-C     PSET USES THE FOLLOWING ..
++C     A_PSET USES THE FOLLOWING ..
+ C     EPSJAC = DSQRT(UROUND), USED IN NUMERICAL JACOBIAN INCREMENTS.
+ C *******************************************************************
+ C     THE ARGUMENT NRENEW IS USED TO SIGNAL WHETHER OR NOT
+@@ -1060,7 +1060,7 @@
+       INTEGER I,J,J1,JJKK,FOUR,FIVE
+ C     ..
+ C     .. EXTERNAL SUBROUTINES ..
+-      EXTERNAL DEC,F,PDERV,DGBFA,MAS
++      EXTERNAL A_DEC,F,PDERV,A_DGBFA,MAS
+ C     ..
+ C     .. INTRINSIC FUNCTIONS ..
+       INTRINSIC DABS,DMAX1,DSQRT
+@@ -1267,7 +1267,7 @@
+             II = II + MBND(4)
+  75      CONTINUE
+       ENDIF
+-         CALL DGBFA(PW,MBND(4),N,ML,MU,IPIV,IER)
++         CALL A_DGBFA(PW,MBND(4),N,ML,MU,IPIV,IER)
+          NDEC = NDEC + 1
+       ELSE
+       IF(MASBND(1).EQ.0) THEN
+@@ -1278,13 +1278,13 @@
+             J = J + NP1
+  80      CONTINUE
+       ENDIF
+-         CALL DEC(N,N,PW,IPIV,IER)
++         CALL A_DEC(N,N,PW,IPIV,IER)
+          NDEC = NDEC + 1
+       ENDIF
+       RETURN
+-C ---------------------- END OF SUBROUTINE PSET ---------------------
++C ---------------------- END OF SUBROUTINE A_PSET ---------------------
+       END
+-      SUBROUTINE DEC(N,NDIM,A,IP,IER)
++      SUBROUTINE A_DEC(N,NDIM,A,IP,IER)
+ 
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+@@ -1301,9 +1301,9 @@
+ C     IP(N) = (-1)**(NUMBER OF INTERCHANGES) OR 0.
+ C     IER = 0 IF MATRIX IS NON-SINGULAR, OR K IF FOUND TO BE SINGULAR
+ C                  AT STAGE K.
+-C     USE SOL TO OBTAIN SOLUTION OF LINEAR SYSTEM.
++C     USE A_SOL TO OBTAIN SOLUTION OF LINEAR SYSTEM.
+ C     DETERM(A) = IP(N)*A(1,1)*A(2,2)* . . . *A(N,N).
+-C     IF IP(N) = 0, A IS SINGULAR, SOL WILL DIVIDE BY ZERO.
++C     IF IP(N) = 0, A IS SINGULAR, A_SOL WILL DIVIDE BY ZERO.
+ C
+ C     REFERENCE.
+ C     C.B. MOLER, ALGORITHM 423, LINEAR EQUATION SOLVER, C.A.C.M
+@@ -1362,9 +1362,9 @@
+    80 IER = K
+       IP(N) = 0
+       RETURN
+-C     --------------------- END OF SUBROUTINE DEC ----------------------
++C     --------------------- END OF SUBROUTINE A_DEC ----------------------
+       END
+-      SUBROUTINE SOL(N,NDIM,A,B,IP)
++      SUBROUTINE A_SOL(N,NDIM,A,B,IP)
+ 
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+@@ -1386,10 +1386,10 @@
+ C     INPUT ..
+ C     N = ORDER OF MATRIX.
+ C     NDIM = DECLARED DIMENSION OF MATRIX A.
+-C     A = TRIANGULARISED MATRIX OBTAINED FROM DEC.
++C     A = TRIANGULARISED MATRIX OBTAINED FROM A_DEC.
+ C     B = RIGHT HAND SIDE VECTOR.
+-C     IP = PIVOT VECTOR OBTAINED FROM DEC.
+-C     DO NOT USE IF DEC HAS SET IER .NE. 0
++C     IP = PIVOT VECTOR OBTAINED FROM A_DEC.
++C     DO NOT USE IF A_DEC HAS SET IER .NE. 0
+ C     OUTPUT..
+ C     B = SOLUTION VECTOR, X.
+ C     ------------------------------------------------------------------
+@@ -1416,15 +1416,15 @@
+    40 CONTINUE
+    50 B(1) = B(1)/A(1,1)
+       RETURN
+-C     ------------------------- END OF SUBROUTINE SOL ------------------
++C     ------------------------- END OF SUBROUTINE A_SOL ------------------
+       END
+-      subroutine dgbfa(abd,lda,n,ml,mu,ipvt,info)
++      subroutine a_dgbfa(abd,lda,n,ml,mu,ipvt,info)
+       integer lda,n,ml,mu,ipvt(1),info
+       double precision abd(lda,1)
+ c
+-c     dgbfa factors a double precision band matrix by elimination.
++c     a_dgbfa factors a double precision band matrix by elimination.
+ c
+-c     dgbfa is usually called by dgbco, but it can be called
++c     a_dgbfa is usually called by dgbco, but it can be called
+ c     directly with a saving in time if  rcond  is not needed.
+ c
+ c     on entry
+@@ -1466,7 +1466,7 @@
+ c                = 0  normal value.
+ c                = k  if  u(k,k) .eq. 0.0 .  this is not an error
+ c                     condition for this subroutine, but it does
+-c                     indicate that dgbsl will divide by zero if
++c                     indicate that a_dgbsl will divide by zero if
+ c                     called.  use  rcond  in dgbco for a reliable
+ c                     indication of singularity.
+ c
+@@ -1593,151 +1593,18 @@
+       return
+       end
+ c
+-      subroutine daxpy(n,da,dx,incx,dy,incy)
+-c
+-c     constant times a vector plus a vector.
+-c     uses unrolled loops for increments equal to one.
+-c     jack dongarra, linpack, 3/11/78.
+-c
+-      double precision dx(1),dy(1),da
+-      integer i,incx,incy,ix,iy,m,mp1,n
+-c
+-      if(n.le.0)return
+-      if (da .eq. 0.0d0) return
+-      if(incx.eq.1.and.incy.eq.1)go to 20
+-c
+-c        code for unequal increments or equal increments
+-c          not equal to 1
+-c
+-      ix = 1
+-      iy = 1
+-      if(incx.lt.0)ix = (-n+1)*incx + 1
+-      if(incy.lt.0)iy = (-n+1)*incy + 1
+-      do 10 i = 1,n
+-        dy(iy) = dy(iy) + da*dx(ix)
+-        ix = ix + incx
+-        iy = iy + incy
+-   10 continue
+-      return
+-c
+-c        code for both increments equal to 1
+-c
+-c
+-c        clean-up loop
+-c
+-   20 m = mod(n,4)
+-      if( m .eq. 0 ) go to 40
+-      do 30 i = 1,m
+-        dy(i) = dy(i) + da*dx(i)
+-   30 continue
+-      if( n .lt. 4 ) return
+-   40 mp1 = m + 1
+-      do 50 i = mp1,n,4
+-        dy(i) = dy(i) + da*dx(i)
+-        dy(i + 1) = dy(i + 1) + da*dx(i + 1)
+-        dy(i + 2) = dy(i + 2) + da*dx(i + 2)
+-        dy(i + 3) = dy(i + 3) + da*dx(i + 3)
+-   50 continue
+-      return
+-      end
+-c
+-      subroutine  dscal(n,da,dx,incx)
+-c
+-c     scales a vector by a constant.
+-c     uses unrolled loops for increment equal to one.
+-c     jack dongarra, linpack, 3/11/78.
+-c     modified to correct problem with negative increment, 8/21/90.
+-c
+-      double precision da,dx(1)
+-      integer i,incx,ix,m,mp1,n
+-c
+-      if(n.le.0)return
+-      if(incx.eq.1)go to 20
+-c
+-c        code for increment not equal to 1
+-c
+-      ix = 1
+-      if(incx.lt.0)ix = (-n+1)*incx + 1
+-      do 10 i = 1,n
+-        dx(ix) = da*dx(ix)
+-        ix = ix + incx
+-   10 continue
+-      return
+-c
+-c        code for increment equal to 1
+-c
+-c
+-c        clean-up loop
+-c
+-   20 m = mod(n,5)
+-      if( m .eq. 0 ) go to 40
+-      do 30 i = 1,m
+-        dx(i) = da*dx(i)
+-   30 continue
+-      if( n .lt. 5 ) return
+-   40 mp1 = m + 1
+-      do 50 i = mp1,n,5
+-        dx(i) = da*dx(i)
+-        dx(i + 1) = da*dx(i + 1)
+-        dx(i + 2) = da*dx(i + 2)
+-        dx(i + 3) = da*dx(i + 3)
+-        dx(i + 4) = da*dx(i + 4)
+-   50 continue
+-      return
+-      end
+-c
+-      integer function idamax(n,dx,incx)
+-c
+-c     finds the index of element having max. absolute value.
+-c     jack dongarra, linpack, 3/11/78.
+-c     modified to correct problem with negative increment, 8/21/90.
+-c
+-      double precision dx(1),dmax
+-      integer i,incx,ix,n
+-c
+-      idamax = 0
+-      if( n .lt. 1 ) return
+-      idamax = 1
+-      if(n.eq.1)return
+-      if(incx.eq.1)go to 20
+-c
+-c        code for increment not equal to 1
+-c
+-      ix = 1
+-      if(incx.lt.0)ix = (-n+1)*incx + 1
+-      dmax = dabs(dx(ix))
+-      ix = ix + incx
+-      do 10 i = 2,n
+-         if(dabs(dx(ix)).le.dmax) go to 5
+-         idamax = i
+-         dmax = dabs(dx(ix))
+-    5    ix = ix + incx
+-   10 continue
+-      return
+-c
+-c        code for increment equal to 1
+-c
+-   20 dmax = dabs(dx(1))
+-      do 30 i = 2,n
+-         if(dabs(dx(i)).le.dmax) go to 30
+-         idamax = i
+-         dmax = dabs(dx(i))
+-   30 continue
+-      return
+-      end
+-
+-      subroutine dgbsl(abd,lda,n,ml,mu,ipvt,b,job)
++      subroutine a_dgbsl(abd,lda,n,ml,mu,ipvt,b,job)
+       integer lda,n,ml,mu,ipvt(*),job
+       double precision abd(lda,*),b(*)
+ c
+-c     dgbsl solves the double precision band system
++c     a_dgbsl solves the double precision band system
+ c     a * x = b  or  trans(a) * x = b
+-c     using the factors computed by dgbco or dgbfa.
++c     using the factors computed by dgbco or a_dgbfa.
+ c
+ c     on entry
+ c
+ c        abd     double precision(lda, n)
+-c                the output from dgbco or dgbfa.
++c                the output from dgbco or a_dgbfa.
+ c
+ c        lda     integer
+ c                the leading dimension of the array  abd .
+@@ -1752,7 +1619,7 @@
+ c                number of diagonals above the main diagonal.
+ c
+ c        ipvt    integer(n)
+-c                the pivot vector from dgbco or dgbfa.
++c                the pivot vector from dgbco or a_dgbfa.
+ c
+ c        b       double precision(n)
+ c                the right hand side vector.
+@@ -1773,14 +1640,14 @@
+ c        but it is often caused by improper arguments or improper
+ c        setting of lda .  it will not occur if the subroutines are
+ c        called correctly and if dgbco has set rcond .gt. 0.0
+-c        or dgbfa has set info .eq. 0 .
++c        or a_dgbfa has set info .eq. 0 .
+ c
+ c     to compute  inverse(a) * c  where  c  is a matrix
+ c     with  p  columns
+ c           call dgbco(abd,lda,n,ml,mu,ipvt,rcond,z)
+ c           if (rcond is too small) go to ...
+ c           do 10 j = 1, p
+-c              call dgbsl(abd,lda,n,ml,mu,ipvt,c(1,j),0)
++c              call a_dgbsl(abd,lda,n,ml,mu,ipvt,c(1,j),0)
+ c        10 continue
+ c
+ c     linpack. this version dated 08/14/78 .
+@@ -1862,62 +1729,13 @@
+       return
+       end
+ c
+-      double precision function ddot(n,dx,incx,dy,incy)
+-c
+-c     forms the dot product of two vectors.
+-c     uses unrolled loops for increments equal to one.
+-c     jack dongarra, linpack, 3/11/78.
+-c
+-      double precision dx(1),dy(1),dtemp
+-      integer i,incx,incy,ix,iy,m,mp1,n
+-c
+-      ddot = 0.0d0
+-      dtemp = 0.0d0
+-      if(n.le.0)return
+-      if(incx.eq.1.and.incy.eq.1)go to 20
+-c
+-c        code for unequal increments or equal increments
+-c          not equal to 1
+-c
+-      ix = 1
+-      iy = 1
+-      if(incx.lt.0)ix = (-n+1)*incx + 1
+-      if(incy.lt.0)iy = (-n+1)*incy + 1
+-      do 10 i = 1,n
+-        dtemp = dtemp + dx(ix)*dy(iy)
+-        ix = ix + incx
+-        iy = iy + incy
+-   10 continue
+-      ddot = dtemp
+-      return
+-c
+-c        code for both increments equal to 1
+-c
+-c
+-c        clean-up loop
+-c
+-   20 m = mod(n,5)
+-      if( m .eq. 0 ) go to 40
+-      do 30 i = 1,m
+-        dtemp = dtemp + dx(i)*dy(i)
+-   30 continue
+-      if( n .lt. 5 ) go to 60
+-   40 mp1 = m + 1
+-      do 50 i = mp1,n,5
+-        dtemp = dtemp + dx(i)*dy(i) + dx(i + 1)*dy(i + 1) +
+-     *   dx(i + 2)*dy(i + 2) + dx(i + 3)*dy(i + 3) + dx(i + 4)*dy(i + 4)
+-   50 continue
+-   60 ddot = dtemp
+-      return
+-      end
+-
+-      SUBROUTINE ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
++      SUBROUTINE A_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C     ***************************************************
+ C
+ C     THIS ROUTINE CALCULATES ERRORS USED IN TESTS
+-C     IN STIFF .
++C     IN A_STIFF .
+ C
+ C     ***************************************************
+ C     .. SCALAR ARGUMENTS ..
+@@ -1950,7 +1768,7 @@
+ C     ** ERROR ASSOCIATED WITH METHOD OF ORDER TWO LOWER.
+       RETURN
+       END
+-      SUBROUTINE PRDICT(T,H,Y,L,N,YPRIME,NFE,IPAR,RPAR,F,IERR)
++      SUBROUTINE A_PRDICT(T,H,Y,L,N,YPRIME,NFE,IPAR,RPAR,F,IERR)
+ 
+ 
+ 
+@@ -1987,10 +1805,10 @@
+       RETURN
+ 
+       END
+-      SUBROUTINE ITRAT2(QQQ,Y,N,T,HBETA,ERRBND,ARH,CRATE,TCRATE,M,WORKED
+-     +     ,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,AM,MASBND,NIND1,
+-     +      NIND2,NIND3,IPIV,LMB,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,NBSOL,
+-     +      NFE,NQUSED,F,IERR)
++      SUBROUTINE A_ITRAT2(QQQ,Y,N,T,HBETA,ERRBND,ARH,CRATE,TCRATE,M,
++     +      WORKED,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,AM,MASBND,
++     +      NIND1,NIND2,NIND3,IPIV,LMB,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,
++     +      NBSOL,NFE,NQUSED,F,IERR)
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C     .. SCALAR ARGUMENTS ..
+@@ -2006,7 +1824,7 @@
+       INTEGER I
+ C     ..
+ C     .. EXTERNAL SUBROUTINES ..
+-      EXTERNAL F,SOL,DGBSL
++      EXTERNAL F,A_SOL,A_DGBSL
+ C     ..
+ C     .. INTRINSIC FUNCTIONS ..
+       INTRINSIC DMAX1,DMIN1
+@@ -2077,10 +1895,10 @@
+ 8812   CONTINUE
+       ENDIF
+       IF(MF.GE.23) THEN
+-        CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
++        CALL A_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
+         NBSOL = NBSOL + 1
+       ELSE
+-         CALL SOL(N,N,PW,SAVE1,IPIV)
++         CALL A_SOL(N,N,PW,SAVE1,IPIV)
+          NBSOL = NBSOL + 1
+       ENDIF
+       D = ZERO
+@@ -2131,10 +1949,10 @@
+ C     IF WE ARE HERE THEN PARTIALS ARE O.K.
+ C
+       IF( MF.GE. 23) THEN
+-          CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
++          CALL A_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
+         NBSOL=NBSOL + 1
+       ELSE
+-         CALL SOL(N,N,PW,SAVE1,IPIV)
++         CALL A_SOL(N,N,PW,SAVE1,IPIV)
+          NBSOL = NBSOL + 1
+       ENDIF
+ C
+@@ -2180,7 +1998,7 @@
+ 
+       END
+ 
+-      SUBROUTINE STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
++      SUBROUTINE A_STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
+      +      MASBND,NIND1,NIND2,NIND3,T,TOUT,TEND,Y,N,
+      +      YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,PWCOPY,AM,YHOLD,
+      +      YNHOLD,ARH,IPIV,LOUT,MAXDER,ITOL,RTOL,ATOL,RPAR,IPAR,F,
+@@ -2191,13 +2009,13 @@
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C     ------------------------------------------------------------------
+-C     THE SUBROUTINE STIFF PERFORMS ONE STEP OF THE INTEGRATION OF AN
++C     THE SUBROUTINE A_STIFF PERFORMS ONE STEP OF THE INTEGRATION OF AN
+ C     INITIAL VALUE PROBLEM FOR A SYSTEM OF ORDINARY DIFFERENTIAL
+ C     EQUATIONS OR LINEARLY IMPLICIT DIFFERENTIAL ALGEBRAIC EQUATIONS.
+-C     COMMUNICATION WITH STIFF IS DONE WITH THE FOLLOWING VARIABLES..
++C     COMMUNICATION WITH A_STIFF IS DONE WITH THE FOLLOWING VARIABLES..
+ C     Y      AN N BY LMAX+3 ARRAY CONTAINING THE DEPENDENT VARIABLES
+ C              AND THEIR BACKWARD DIFFERENCES.  MAXDER (=LMAX-1) IS THE
+-C              MAXIMUM ORDER AVAILABLE.  SEE SUBROUTINE COSET.
++C              MAXIMUM ORDER AVAILABLE.  SEE SUBROUTINE A_COSET.
+ C              Y(I,J+1) CONTAINS THE JTH BACKWARD DIFFERENCE OF Y(I)
+ C     T      THE INDEPENDENT VARIABLE. T IS UPDATED ON EACH STEP TAKEN.
+ C     H      THE STEPSIZE TO BE ATTEMPTED ON THE NEXT STEP.
+@@ -2207,7 +2025,7 @@
+ C     HMIN   THE MINIMUM AND MAXIMUM ABSOLUTE VALUE OF THE STEPSIZE
+ C     HMAX   TO BE USED FOR THE STEP.  THESE MAY BE CHANGED AT ANY
+ C              TIME BUT WILL NOT TAKE EFFECT UNTIL THE NEXT H CHANGE.
+-C     RTOL,ATOL  THE ERROR BOUNDS. SEE DESCRIPTION IN OVDRIV.
++C     RTOL,ATOL  THE ERROR BOUNDS. SEE DESCRIPTION IN A_OVDRIV.
+ C     N      THE NUMBER OF FIRST ORDER DIFFERENTIAL EQUATIONS.
+ C     MF     THE METHOD FLAG.  MUST BE SET TO 21,22,23 OR 24 AT PRESENT
+ C     KFLAG  A COMPLETION FLAG WITH THE FOLLOWING MEANINGS..
+@@ -2242,7 +2060,7 @@
+ C                MATRIX WAS FORMED BY A NEW J.
+ C     AVOLDJ   STORES VALUE FOR AVERAGE CRATE WHEN ITERATION
+ C                MATRIX WAS FORMED BY AN OLD J.
+-C     NRENEW   FLAG THAT IS USED IN COMMUNICATION WITH SUBROUTINE PSET.
++C     NRENEW   FLAG THAT IS USED IN COMMUNICATION WITH SUBROUTINE A_PSET.
+ C                IF  NRENEW > 0  THEN FORM A NEW JACOBIAN BEFORE
+ C                                COMPUTING THE COEFFICIENT MATRIX FOR
+ C                                THE NEWTON-RAPHSON ITERATION
+@@ -2271,8 +2089,8 @@
+       DIMENSION  EL(10),ELST(10),TQ(5)
+ C     ..
+ C     .. EXTERNAL SUBROUTINES ..
+-      EXTERNAL COSET,CPYARY,ERRORS,F,HCHOSE,ITRAT2,
+-     +         PRDICT,PSET,RSCALE,SOL,DGBSL,PDERV,MAS
++      EXTERNAL A_COSET,A_CPYARY,A_ERRORS,F,A_HCHOSE,A_ITRAT2,
++     +         A_PRDICT,A_PSET,A_RSCALE,A_SOL,A_DGBSL,PDERV,MAS
+ C     ..
+ C     .. INTRINSIC FUNCTIONS ..
+       INTRINSIC DABS,DMAX1,DMIN1
+@@ -2378,7 +2196,7 @@
+ C     BE RE-SCALED.  IF H IS CHANGED, IDOUB IS SET TO L+1 TO PREVENT
+ C     FURTHER CHANGES IN H FOR THAT MANY STEPS.
+ C     -----------------------------------------------------------------
+-      CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
++      CALL A_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
+       LMAX = MAXDER + 1
+       RC = RC*EL(1)/OLDLO
+       OLDLO = EL(1)
+@@ -2389,20 +2207,20 @@
+ C     NRENEW AND NEWPAR ARE TO INSTRUCT ROUTINE THAT
+ C     WE WISH A NEW J TO BE CALCULATED FOR THIS STEP.
+ C     *****************************************************
+-      CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
++      CALL A_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
+       DO 20 I = 1,N
+         ARH(I) = EL(2)*Y(I,1)
+    20 CONTINUE
+-      CALL CPYARY(N*L,Y,YHOLD)
++      CALL A_CPYARY(N*L,Y,YHOLD)
+       QI = H*EL(1)
+       QQ = ONE/QI
+-      CALL PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
++      CALL A_PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
+       IF(IERR.NE.0) GOTO 8000
+       GO TO 110
+ C     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+ C     DIFFERENT PARAMETERS ON THIS CALL        <
+ C     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+-   30 CALL CPYARY(N*L,YHOLD,Y)
++   30 CALL A_CPYARY(N*L,YHOLD,Y)
+       IF (MF.NE.MFOLD) THEN
+          METH = MF/10
+          MITER = MF - 10*METH
+@@ -2445,7 +2263,7 @@
+ C     *********************************************
+    40 RH = DMAX1(RH,HMIN/DABS(H))
+    50 RH = DMIN1(RH,HMAX/DABS(H),RMAX)
+-      CALL RSCALE(N,L,RH,Y)
++      CALL A_RSCALE(N,L,RH,Y)
+       RMAX = 10.0D+0
+       JCHANG = 1
+       H = H*RH
+@@ -2462,7 +2280,7 @@
+       END IF
+ 
+       IDOUB = L + 1
+-      CALL CPYARY(N*L,Y,YHOLD)
++      CALL A_CPYARY(N*L,Y,YHOLD)
+ 
+    60 IF (DABS(RC-ONE).GT.UPBND) IWEVAL = MITER
+       HUSED = H
+@@ -2487,7 +2305,7 @@
+       IF (JCHANG.EQ.1) THEN
+ C        IF WE HAVE CHANGED STEPSIZE THEN PREDICT A VALUE FOR Y(T+H)
+ C        AND EVALUATE THE DERIVATIVE THERE (STORED IN SAVE2())
+-         CALL PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
++         CALL A_PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
+          IF(IERR.NE.0) GOTO 8000
+ 
+       ELSE
+@@ -2507,7 +2325,7 @@
+ C -------------------------------------------------------------------
+ C     IF INDICATED, THE MATRIX P = I/(H*EL(2)) - J IS RE-EVALUATED BEFORE
+ C     STARTING THE CORRECTOR ITERATION.  IWEVAL IS SET = 0 TO INDICATE
+-C     THAT THIS HAS BEEN DONE. P IS COMPUTED AND PROCESSED IN PSET.
++C     THAT THIS HAS BEEN DONE. P IS COMPUTED AND PROCESSED IN A_PSET.
+ C     THE PROCESSED MATRIX IS STORED IN PW
+ C -------------------------------------------------------------------
+       IWEVAL = 0
+@@ -2573,13 +2391,13 @@
+       JSNOLD = 0
+       MQ1TMP = MEQC1
+       MQ2TMP = MEQC2
+-      CALL PSET(Y,N,H,T,UROUND,EPSJAC,QI,MITER,MBND,MASBND,
++      CALL A_PSET(Y,N,H,T,UROUND,EPSJAC,QI,MITER,MBND,MASBND,
+      +   NIND1,NIND2,NIND3,IER,F,PDERV,MAS,NRENEW,YMAX,SAVE1,SAVE2,
+      +   PW,PWCOPY,AM,ERROR,IPIV,ITOL,RTOL,ATOL,NPSET,NJE,NFE,NDEC,IPAR
+      +   ,RPAR,IERR)
+       IF(IERR.NE.0) GOTO 8000
+       QQQ=QI
+-C     NOTE THAT ERROR() IS JUST BEING USED AS A WORKSPACE BY PSET
++C     NOTE THAT ERROR() IS JUST BEING USED AS A WORKSPACE BY A_PSET
+       IF (IER.NE.0) THEN
+ C     IF IER>0 THEN WE HAVE HAD A SINGULARITY IN THE ITERATION MATRIX
+             IJUS=1
+@@ -2603,7 +2421,7 @@
+ C     LOOP. THE UPDATED Y VECTOR IS STORED TEMPORARILY IN SAVE1.
+ C **********************************************************************
+       IF (.NOT.SAMPLE) THEN
+-         CALL ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,WORKED,YMAX,
++        CALL A_ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,WORKED,YMAX,
+      +         ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,AM,MASBND,
+      + NIND1,NIND2,NIND3,IPIV,1,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,NBSOL,
+      + NFE,NQUSED,F,IERR)
+@@ -2611,7 +2429,7 @@
+          ITST = 2
+ 
+       ELSE
+-         CALL ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,WORKED,YMAX,
++        CALL A_ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,WORKED,YMAX,
+      +         ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,AM,MASBND,
+      +NIND1,NIND2,NIND3,IPIV,0,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,NBSOL,
+      + NFE,NQUSED,F,IERR)
+@@ -2752,7 +2570,7 @@
+           ARH(I) = ARH(I) + EL(JP1)*Y(I,J1)
+   200   CONTINUE
+   210 CONTINUE
+-      CALL PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
++      CALL A_PRDICT(T,H,Y,L,N,SAVE2,NFE,IPAR,RPAR,F,IERR)
+       IF(IERR.NE.0) GOTO 8000
+       DO 220 I = 1,N
+         SAVE1(I) = Y(I,1)
+@@ -2763,7 +2581,7 @@
+ C     FOR NOW WILL ASSUME THAT WE DO NOT WISH TO SAMPLE
+ C     AT THE N+2 STEP POINT
+ C
+-      CALL ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE2,TCRAT2,M2,WORKED,YMAX,
++      CALL A_ITRAT2(QQQ,Y,N,T,QI,BND,ARH,CRATE2,TCRAT2,M2,WORKED,YMAX,
+      +       ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,AM,MASBND,
+      +NIND1,NIND2,NIND3,IPIV,1,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,NBSOL,
+      + NFE,NQUSED,F,IERR)
+@@ -2872,10 +2690,10 @@
+ 3111  CONTINUE
+       ENDIF
+       IF (MF.GE. 23) THEN
+-        CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
++        CALL A_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
+         NBSOL=NBSOL+1
+       ELSE
+-         CALL SOL(N,N,PW,SAVE1,IPIV)
++         CALL A_SOL(N,N,PW,SAVE1,IPIV)
+          NBSOL = NBSOL + 1
+       ENDIF
+       DO 321 I=1,N
+@@ -2971,7 +2789,7 @@
+       IF(NQ.GT.1) FFAIL = 0.5D+0/DBLE(FLOAT(NQ))
+       IF(NQ.GT.2) FRFAIL = 0.5D+0/DBLE(FLOAT(NQ-1))
+       EFAIL = 0.5D+0/DBLE(FLOAT(L))
+-      CALL CPYARY(N*L,YHOLD,Y)
++      CALL A_CPYARY(N*L,YHOLD,Y)
+       RMAX = 2.0D+0
+       IF (DABS(H).LE.HMIN*1.00001D+0) THEN
+ C
+@@ -3000,10 +2818,10 @@
+       NQ=NEWQ
+       RH=ONE/(PLFAIL*DBLE(FLOAT(-KFAIL)))
+       L=NQ+1
+-      CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
++      CALL A_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
+       RC=RC*EL(1)/OLDLO
+       OLDLO=EL(1)
+-      CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
++      CALL A_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
+       ELSE
+       NEWQ = NQ
+       RH = ONE/ (PRFAIL*DBLE(FLOAT(-KFAIL)))
+@@ -3029,7 +2847,7 @@
+ C     *********************************
+       JCHANG = 1
+       RH = DMAX1(HMIN/DABS(H),0.1D+0)
+-      CALL HCHOSE(RH,H,OVRIDE)
++      CALL A_HCHOSE(RH,H,OVRIDE)
+       H = H*RH
+       CALL F(N,T,YHOLD,SAVE1,IPAR,RPAR,IERR)
+       IF(IERR.NE.0) GOTO 8000
+@@ -3048,11 +2866,11 @@
+       NQ = 1
+       L = 2
+ C     RESET ORDER, RECALCULATE ERROR BOUNDS
+-      CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
++      CALL A_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
+       LMAX = MAXDER + 1
+       RC = RC*EL(1)/OLDLO
+       OLDLO = EL(1)
+-      CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
++      CALL A_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
+ C     NOW JUMP TO NORMAL CONTINUATION POINT
+       GO TO 60
+ C **********************************************************************
+@@ -3216,7 +3034,7 @@
+       GOTO 440
+       ENDIF
+          RH = DMIN1(RH,RMAX)
+-         CALL HCHOSE(RH,H,OVRIDE)
++         CALL A_HCHOSE(RH,H,OVRIDE)
+          IF ((JSINUP.LE.20).AND.(KFLAG.EQ.0).AND.(RH.LT.1.1D+0)) THEN
+ C           WE HAVE RUN INTO PROBLEMS
+             IDOUB = 10
+@@ -3244,17 +3062,17 @@
+             NQ = NEWQ
+             L = NQ + 1
+ C           RESET ORDER,RECALCULATE ERROR BOUNDS
+-            CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
++            CALL A_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
+             LMAX = MAXDER + 1
+             RC = RC*EL(1)/OLDLO
+             OLDLO = EL(1)
+-            CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
++            CALL A_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
+          END IF
+ 
+ 
+          RH = DMAX1(RH,HMIN/DABS(H))
+          RH = DMIN1(RH,HMAX/DABS(H),RMAX)
+-         CALL RSCALE(N,L,RH,Y)
++         CALL A_RSCALE(N,L,RH,Y)
+          RMAX = 10.0D+0
+          JCHANG = 1
+          H = H*RH
+@@ -3271,7 +3089,7 @@
+ C     INFORMATION NECESSARY TO PERFORM AN INTERPOLATION TO FIND THE
+ C     SOLUTION AT THE SPECIFIED OUTPUT POINT IF APPROPRIATE.
+ C ----------------------------------------------------------------------
+-      CALL CPYARY(N*L,Y,YHOLD)
++      CALL A_CPYARY(N*L,Y,YHOLD)
+       NSTEP = NSTEP + 1
+       JSINUP = JSINUP + 1
+       JSNOLD = JSNOLD + 1
+@@ -3312,17 +3130,17 @@
+ C     TRY AGAIN WITH UPDATED PARTIALS
+ C
+ 8000  IF(IERR.NE.0) RETURN
+-      IF(IJUS.EQ.0) CALL HCHOSE(RH,H,OVRIDE)
++      IF(IJUS.EQ.0) CALL A_HCHOSE(RH,H,OVRIDE)
+       IF(.NOT.FINISH) THEN
+           GO TO 40
+       ELSE
+           RETURN
+       END IF
+ 
+-C ------------------- END OF SUBROUTINE STIFF --------------------------
++C ------------------- END OF SUBROUTINE A_STIFF --------------------------
+  9000 FORMAT (1X,' CORRECTOR HAS NOT CONVERGED')
+       END
+-      SUBROUTINE RSCALE(N,L,RH,Y)
++      SUBROUTINE A_RSCALE(N,L,RH,Y)
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C     .. SCALAR ARGUMENTS ..
+@@ -3432,7 +3250,7 @@
+       RETURN
+ 
+       END
+-      SUBROUTINE CPYARY(NELEM,SOURCE,TARGET)
++      SUBROUTINE A_CPYARY(NELEM,SOURCE,TARGET)
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C
+ C     COPIES THE ARRAY SOURCE() INTO THE ARRAY TARGET()
+@@ -3455,7 +3273,7 @@
+       RETURN
+ 
+       END
+-      SUBROUTINE HCHOSE(RH,H,OVRIDE)
++      SUBROUTINE A_HCHOSE(RH,H,OVRIDE)
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+       COMMON / STPSZE / HSTPSZ(2,14)
+       LOGICAL OVRIDE
+@@ -3492,947 +3310,3 @@
+ C  ************************************************************
+ C
+       END
+-      DOUBLE PRECISION FUNCTION DLAMCH( CMACH )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      CHARACTER          CMACH
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMCH determines double precision machine parameters.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  CMACH   (input) CHARACTER*1
+-*          Specifies the value to be returned by DLAMCH:
+-*          = 'E' or 'e',   DLAMCH := eps
+-*          = 'S' or 's ,   DLAMCH := sfmin
+-*          = 'B' or 'b',   DLAMCH := base
+-*          = 'P' or 'p',   DLAMCH := eps*base
+-*          = 'N' or 'n',   DLAMCH := t
+-*          = 'R' or 'r',   DLAMCH := rnd
+-*          = 'M' or 'm',   DLAMCH := emin
+-*          = 'U' or 'u',   DLAMCH := rmin
+-*          = 'L' or 'l',   DLAMCH := emax
+-*          = 'O' or 'o',   DLAMCH := rmax
+-*
+-*          where
+-*
+-*          eps   = relative machine precision
+-*          sfmin = safe minimum, such that 1/sfmin does not overflow
+-*          base  = base of the machine
+-*          prec  = eps*base
+-*          t     = number of (base) digits in the mantissa
+-*          rnd   = 1.0 when rounding occurs in addition, 0.0 otherwise
+-*          emin  = minimum exponent before (gradual) underflow
+-*          rmin  = underflow threshold - base**(emin-1)
+-*          emax  = largest exponent before overflow
+-*          rmax  = overflow threshold  - (base**emax)*(1-eps)
+-*
+-* =====================================================================
+-*
+-*     .. Parameters ..
+-      DOUBLE PRECISION   ONE, ZERO
+-      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+-*     ..
+-*     .. Local Scalars ..
+-      LOGICAL            FIRST, LRND
+-      INTEGER            BETA, IMAX, IMIN, IT
+-      DOUBLE PRECISION   BASE, EMAX, EMIN, EPS, PREC, RMACH, RMAX, RMIN,
+-     $                   RND, SFMIN, SMALL, T
+-*     ..
+-*     .. External Functions ..
+-      LOGICAL            LSAME
+-      EXTERNAL           LSAME
+-*     ..
+-*     .. External Subroutines ..
+-      EXTERNAL           DLAMC2
+-*     ..
+-*     .. Save statement ..
+-      SAVE               FIRST, EPS, SFMIN, BASE, T, RND, EMIN, RMIN,
+-     $                   EMAX, RMAX, PREC
+-*     ..
+-*     .. Data statements ..
+-      DATA               FIRST / .TRUE. /
+-*     ..
+-*     .. Executable Statements ..
+-*
+-      IF( FIRST ) THEN
+-         FIRST = .FALSE.
+-         CALL DLAMC2( BETA, IT, LRND, EPS, IMIN, RMIN, IMAX, RMAX )
+-         BASE = BETA
+-         T = IT
+-         IF( LRND ) THEN
+-            RND = ONE
+-            EPS = ( BASE**( 1-IT ) ) / 2
+-         ELSE
+-            RND = ZERO
+-            EPS = BASE**( 1-IT )
+-         END IF
+-         PREC = EPS*BASE
+-         EMIN = IMIN
+-         EMAX = IMAX
+-         SFMIN = RMIN
+-         SMALL = ONE / RMAX
+-         IF( SMALL.GE.SFMIN ) THEN
+-*
+-*           Use SMALL plus a bit, to avoid the possibility of rounding
+-*           causing overflow when computing  1/sfmin.
+-*
+-            SFMIN = SMALL*( ONE+EPS )
+-         END IF
+-      END IF
+-*
+-      IF( LSAME( CMACH, 'E' ) ) THEN
+-         RMACH = EPS
+-      ELSE IF( LSAME( CMACH, 'S' ) ) THEN
+-         RMACH = SFMIN
+-      ELSE IF( LSAME( CMACH, 'B' ) ) THEN
+-         RMACH = BASE
+-      ELSE IF( LSAME( CMACH, 'P' ) ) THEN
+-         RMACH = PREC
+-      ELSE IF( LSAME( CMACH, 'N' ) ) THEN
+-         RMACH = T
+-      ELSE IF( LSAME( CMACH, 'R' ) ) THEN
+-         RMACH = RND
+-      ELSE IF( LSAME( CMACH, 'M' ) ) THEN
+-         RMACH = EMIN
+-      ELSE IF( LSAME( CMACH, 'U' ) ) THEN
+-         RMACH = RMIN
+-      ELSE IF( LSAME( CMACH, 'L' ) ) THEN
+-         RMACH = EMAX
+-      ELSE IF( LSAME( CMACH, 'O' ) ) THEN
+-         RMACH = RMAX
+-      END IF
+-*
+-      DLAMCH = RMACH
+-      RETURN
+-*
+-*     End of DLAMCH
+-*
+-      END
+-*
+-************************************************************************
+-*
+-      SUBROUTINE DLAMC1( BETA, T, RND, IEEE1 )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      LOGICAL            IEEE1, RND
+-      INTEGER            BETA, T
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMC1 determines the machine parameters given by BETA, T, RND, and
+-*  IEEE1.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  BETA    (output) INTEGER
+-*          The base of the machine.
+-*
+-*  T       (output) INTEGER
+-*          The number of ( BETA ) digits in the mantissa.
+-*
+-*  RND     (output) LOGICAL
+-*          Specifies whether proper rounding  ( RND = .TRUE. )  or
+-*          chopping  ( RND = .FALSE. )  occurs in addition. This may not
+-*          be a reliable guide to the way in which the machine performs
+-*          its arithmetic.
+-*
+-*  IEEE1   (output) LOGICAL
+-*          Specifies whether rounding appears to be done in the IEEE
+-*          'round to nearest' style.
+-*
+-*  Further Details
+-*  ===============
+-*
+-*  The routine is based on the routine  ENVRON  by Malcolm and
+-*  incorporates suggestions by Gentleman and Marovich. See
+-*
+-*     Malcolm M. A. (1972) Algorithms to reveal properties of
+-*        floating-point arithmetic. Comms. of the ACM, 15, 949-951.
+-*
+-*     Gentleman W. M. and Marovich S. B. (1974) More on algorithms
+-*        that reveal properties of floating point arithmetic units.
+-*        Comms. of the ACM, 17, 276-277.
+-*
+-* =====================================================================
+-*
+-*     .. Local Scalars ..
+-      LOGICAL            FIRST, LIEEE1, LRND
+-      INTEGER            LBETA, LT
+-      DOUBLE PRECISION   A, B, C, F, ONE, QTR, SAVEC, T1, T2
+-*     ..
+-*     .. External Functions ..
+-      DOUBLE PRECISION   DLAMC3
+-      EXTERNAL           DLAMC3
+-*     ..
+-*     .. Save statement ..
+-      SAVE               FIRST, LIEEE1, LBETA, LRND, LT
+-*     ..
+-*     .. Data statements ..
+-      DATA               FIRST / .TRUE. /
+-*     ..
+-*     .. Executable Statements ..
+-*
+-      IF( FIRST ) THEN
+-         FIRST = .FALSE.
+-         ONE = 1
+-*
+-*        LBETA,  LIEEE1,  LT and  LRND  are the  local values  of  BETA,
+-*        IEEE1, T and RND.
+-*
+-*        Throughout this routine  we use the function  DLAMC3  to ensure
+-*        that relevant values are  stored and not held in registers,  or
+-*        are not affected by optimizers.
+-*
+-*        Compute  a = 2.0**m  with the  smallest positive integer m such
+-*        that
+-*
+-*           fl( a + 1.0 ) = a.
+-*
+-         A = 1
+-         C = 1
+-*
+-*+       WHILE( C.EQ.ONE )LOOP
+-   10    CONTINUE
+-         IF( C.EQ.ONE ) THEN
+-            A = 2*A
+-            C = DLAMC3( A, ONE )
+-            C = DLAMC3( C, -A )
+-            GO TO 10
+-         END IF
+-*+       END WHILE
+-*
+-*        Now compute  b = 2.0**m  with the smallest positive integer m
+-*        such that
+-*
+-*           fl( a + b ) .gt. a.
+-*
+-         B = 1
+-         C = DLAMC3( A, B )
+-*
+-*+       WHILE( C.EQ.A )LOOP
+-   20    CONTINUE
+-         IF( C.EQ.A ) THEN
+-            B = 2*B
+-            C = DLAMC3( A, B )
+-            GO TO 20
+-         END IF
+-*+       END WHILE
+-*
+-*        Now compute the base.  a and c  are neighbouring floating point
+-*        numbers  in the  interval  ( beta**t, beta**( t + 1 ) )  and so
+-*        their difference is beta. Adding 0.25 to c is to ensure that it
+-*        is truncated to beta and not ( beta - 1 ).
+-*
+-         QTR = ONE / 4
+-         SAVEC = C
+-         C = DLAMC3( C, -A )
+-         LBETA = C + QTR
+-*
+-*        Now determine whether rounding or chopping occurs,  by adding a
+-*        bit  less  than  beta/2  and a  bit  more  than  beta/2  to  a.
+-*
+-         B = LBETA
+-         F = DLAMC3( B / 2, -B / 100 )
+-         C = DLAMC3( F, A )
+-         IF( C.EQ.A ) THEN
+-            LRND = .TRUE.
+-         ELSE
+-            LRND = .FALSE.
+-         END IF
+-         F = DLAMC3( B / 2, B / 100 )
+-         C = DLAMC3( F, A )
+-         IF( ( LRND ) .AND. ( C.EQ.A ) )
+-     $      LRND = .FALSE.
+-*
+-*        Try and decide whether rounding is done in the  IEEE  'round to
+-*        nearest' style. B/2 is half a unit in the last place of the two
+-*        numbers A and SAVEC. Furthermore, A is even, i.e. has last  bit
+-*        zero, and SAVEC is odd. Thus adding B/2 to A should not  change
+-*        A, but adding B/2 to SAVEC should change SAVEC.
+-*
+-         T1 = DLAMC3( B / 2, A )
+-         T2 = DLAMC3( B / 2, SAVEC )
+-         LIEEE1 = ( T1.EQ.A ) .AND. ( T2.GT.SAVEC ) .AND. LRND
+-*
+-*        Now find  the  mantissa, t.  It should  be the  integer part of
+-*        log to the base beta of a,  however it is safer to determine  t
+-*        by powering.  So we find t as the smallest positive integer for
+-*        which
+-*
+-*           fl( beta**t + 1.0 ) = 1.0.
+-*
+-         LT = 0
+-         A = 1
+-         C = 1
+-*
+-*+       WHILE( C.EQ.ONE )LOOP
+-   30    CONTINUE
+-         IF( C.EQ.ONE ) THEN
+-            LT = LT + 1
+-            A = A*LBETA
+-            C = DLAMC3( A, ONE )
+-            C = DLAMC3( C, -A )
+-            GO TO 30
+-         END IF
+-*+       END WHILE
+-*
+-      END IF
+-*
+-      BETA = LBETA
+-      T = LT
+-      RND = LRND
+-      IEEE1 = LIEEE1
+-      RETURN
+-*
+-*     End of DLAMC1
+-*
+-      END
+-*
+-************************************************************************
+-*
+-      SUBROUTINE DLAMC2( BETA, T, RND, EPS, EMIN, RMIN, EMAX, RMAX )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      LOGICAL            RND
+-      INTEGER            BETA, EMAX, EMIN, T
+-      DOUBLE PRECISION   EPS, RMAX, RMIN
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMC2 determines the machine parameters specified in its argument
+-*  list.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  BETA    (output) INTEGER
+-*          The base of the machine.
+-*
+-*  T       (output) INTEGER
+-*          The number of ( BETA ) digits in the mantissa.
+-*
+-*  RND     (output) LOGICAL
+-*          Specifies whether proper rounding  ( RND = .TRUE. )  or
+-*          chopping  ( RND = .FALSE. )  occurs in addition. This may not
+-*          be a reliable guide to the way in which the machine performs
+-*          its arithmetic.
+-*
+-*  EPS     (output) DOUBLE PRECISION
+-*          The smallest positive number such that
+-*
+-*             fl( 1.0 - EPS ) .LT. 1.0,
+-*
+-*          where fl denotes the computed value.
+-*
+-*  EMIN    (output) INTEGER
+-*          The minimum exponent before (gradual) underflow occurs.
+-*
+-*  RMIN    (output) DOUBLE PRECISION
+-*          The smallest normalized number for the machine, given by
+-*          BASE**( EMIN - 1 ), where  BASE  is the floating point value
+-*          of BETA.
+-*
+-*  EMAX    (output) INTEGER
+-*          The maximum exponent before overflow occurs.
+-*
+-*  RMAX    (output) DOUBLE PRECISION
+-*          The largest positive number for the machine, given by
+-*          BASE**EMAX * ( 1 - EPS ), where  BASE  is the floating point
+-*          value of BETA.
+-*
+-*  Further Details
+-*  ===============
+-*
+-*  The computation of  EPS  is based on a routine PARANOIA by
+-*  W. Kahan of the University of California at Berkeley.
+-*
+-* =====================================================================
+-*
+-*     .. Local Scalars ..
+-      LOGICAL            FIRST, IEEE, IWARN, LIEEE1, LRND
+-      INTEGER            GNMIN, GPMIN, I, LBETA, LEMAX, LEMIN, LT,
+-     $                   NGNMIN, NGPMIN
+-      DOUBLE PRECISION   A, B, C, HALF, LEPS, LRMAX, LRMIN, ONE, RBASE,
+-     $                   SIXTH, SMALL, THIRD, TWO, ZERO
+-*     ..
+-*     .. External Functions ..
+-      DOUBLE PRECISION   DLAMC3
+-      EXTERNAL           DLAMC3
+-*     ..
+-*     .. External Subroutines ..
+-      EXTERNAL           DLAMC1, DLAMC4, DLAMC5
+-*     ..
+-*     .. Intrinsic Functions ..
+-      INTRINSIC          ABS, MAX, MIN
+-*     ..
+-*     .. Save statement ..
+-      SAVE               FIRST, IWARN, LBETA, LEMAX, LEMIN, LEPS, LRMAX,
+-     $                   LRMIN, LT
+-*     ..
+-*     .. Data statements ..
+-      DATA               FIRST / .TRUE. / , IWARN / .FALSE. /
+-*     ..
+-*     .. Executable Statements ..
+-*
+-      IF( FIRST ) THEN
+-         FIRST = .FALSE.
+-         ZERO = 0
+-         ONE = 1
+-         TWO = 2
+-*
+-*        LBETA, LT, LRND, LEPS, LEMIN and LRMIN  are the local values of
+-*        BETA, T, RND, EPS, EMIN and RMIN.
+-*
+-*        Throughout this routine  we use the function  DLAMC3  to ensure
+-*        that relevant values are stored  and not held in registers,  or
+-*        are not affected by optimizers.
+-*
+-*        DLAMC1 returns the parameters  LBETA, LT, LRND and LIEEE1.
+-*
+-         CALL DLAMC1( LBETA, LT, LRND, LIEEE1 )
+-*
+-*        Start to find EPS.
+-*
+-         B = LBETA
+-         A = B**( -LT )
+-         LEPS = A
+-*
+-*        Try some tricks to see whether or not this is the correct  EPS.
+-*
+-         B = TWO / 3
+-         HALF = ONE / 2
+-         SIXTH = DLAMC3( B, -HALF )
+-         THIRD = DLAMC3( SIXTH, SIXTH )
+-         B = DLAMC3( THIRD, -HALF )
+-         B = DLAMC3( B, SIXTH )
+-         B = ABS( B )
+-         IF( B.LT.LEPS )
+-     $      B = LEPS
+-*
+-         LEPS = 1
+-*
+-*+       WHILE( ( LEPS.GT.B ).AND.( B.GT.ZERO ) )LOOP
+-   10    CONTINUE
+-         IF( ( LEPS.GT.B ) .AND. ( B.GT.ZERO ) ) THEN
+-            LEPS = B
+-            C = DLAMC3( HALF*LEPS, ( TWO**5 )*( LEPS**2 ) )
+-            C = DLAMC3( HALF, -C )
+-            B = DLAMC3( HALF, C )
+-            C = DLAMC3( HALF, -B )
+-            B = DLAMC3( HALF, C )
+-            GO TO 10
+-         END IF
+-*+       END WHILE
+-*
+-         IF( A.LT.LEPS )
+-     $      LEPS = A
+-*
+-*        Computation of EPS complete.
+-*
+-*        Now find  EMIN.  Let A = + or - 1, and + or - (1 + BASE**(-3)).
+-*        Keep dividing  A by BETA until (gradual) underflow occurs. This
+-*        is detected when we cannot recover the previous A.
+-*
+-         RBASE = ONE / LBETA
+-         SMALL = ONE
+-         DO 20 I = 1, 3
+-            SMALL = DLAMC3( SMALL*RBASE, ZERO )
+-   20    CONTINUE
+-         A = DLAMC3( ONE, SMALL )
+-         CALL DLAMC4( NGPMIN, ONE, LBETA )
+-         CALL DLAMC4( NGNMIN, -ONE, LBETA )
+-         CALL DLAMC4( GPMIN, A, LBETA )
+-         CALL DLAMC4( GNMIN, -A, LBETA )
+-         IEEE = .FALSE.
+-*
+-         IF( ( NGPMIN.EQ.NGNMIN ) .AND. ( GPMIN.EQ.GNMIN ) ) THEN
+-            IF( NGPMIN.EQ.GPMIN ) THEN
+-               LEMIN = NGPMIN
+-*            ( Non twos-complement machines, no gradual underflow;
+-*              e.g.,  VAX )
+-            ELSE IF( ( GPMIN-NGPMIN ).EQ.3 ) THEN
+-               LEMIN = NGPMIN - 1 + LT
+-               IEEE = .TRUE.
+-*            ( Non twos-complement machines, with gradual underflow;
+-*              e.g., IEEE standard followers )
+-            ELSE
+-               LEMIN = MIN( NGPMIN, GPMIN )
+-*            ( A guess; no known machine )
+-               IWARN = .TRUE.
+-            END IF
+-*
+-         ELSE IF( ( NGPMIN.EQ.GPMIN ) .AND. ( NGNMIN.EQ.GNMIN ) ) THEN
+-            IF( ABS( NGPMIN-NGNMIN ).EQ.1 ) THEN
+-               LEMIN = MAX( NGPMIN, NGNMIN )
+-*            ( Twos-complement machines, no gradual underflow;
+-*              e.g., CYBER 205 )
+-            ELSE
+-               LEMIN = MIN( NGPMIN, NGNMIN )
+-*            ( A guess; no known machine )
+-               IWARN = .TRUE.
+-            END IF
+-*
+-         ELSE IF( ( ABS( NGPMIN-NGNMIN ).EQ.1 ) .AND.
+-     $            ( GPMIN.EQ.GNMIN ) ) THEN
+-            IF( ( GPMIN-MIN( NGPMIN, NGNMIN ) ).EQ.3 ) THEN
+-               LEMIN = MAX( NGPMIN, NGNMIN ) - 1 + LT
+-*            ( Twos-complement machines with gradual underflow;
+-*              no known machine )
+-            ELSE
+-               LEMIN = MIN( NGPMIN, NGNMIN )
+-*            ( A guess; no known machine )
+-               IWARN = .TRUE.
+-            END IF
+-*
+-         ELSE
+-            LEMIN = MIN( NGPMIN, NGNMIN, GPMIN, GNMIN )
+-*         ( A guess; no known machine )
+-            IWARN = .TRUE.
+-         END IF
+-***
+-* Comment out this if block if EMIN is ok
+-         IF( IWARN ) THEN
+-            FIRST = .TRUE.
+-            WRITE( 6, FMT = 9999 )LEMIN
+-         END IF
+-***
+-*
+-*        Assume IEEE arithmetic if we found denormalised  numbers above,
+-*        or if arithmetic seems to round in the  IEEE style,  determined
+-*        in routine DLAMC1. A true IEEE machine should have both  things
+-*        true; however, faulty machines may have one or the other.
+-*
+-         IEEE = IEEE .OR. LIEEE1
+-*
+-*        Compute  RMIN by successive division by  BETA. We could compute
+-*        RMIN as BASE**( EMIN - 1 ),  but some machines underflow during
+-*        this computation.
+-*
+-         LRMIN = 1
+-         DO 30 I = 1, 1 - LEMIN
+-            LRMIN = DLAMC3( LRMIN*RBASE, ZERO )
+-   30    CONTINUE
+-*
+-*        Finally, call DLAMC5 to compute EMAX and RMAX.
+-*
+-         CALL DLAMC5( LBETA, LT, LEMIN, IEEE, LEMAX, LRMAX )
+-      END IF
+-*
+-      BETA = LBETA
+-      T = LT
+-      RND = LRND
+-      EPS = LEPS
+-      EMIN = LEMIN
+-      RMIN = LRMIN
+-      EMAX = LEMAX
+-      RMAX = LRMAX
+-*
+-      RETURN
+-*
+- 9999 FORMAT( / / ' WARNING. The value EMIN may be incorrect:-',
+-     $      '  EMIN = ', I8, /
+-     $      ' If, after inspection, the value EMIN looks',
+-     $      ' acceptable please comment out ',
+-     $      / ' the IF block as marked within the code of routine',
+-     $      ' DLAMC2,', / ' otherwise supply EMIN explicitly.', / )
+-*
+-*     End of DLAMC2
+-*
+-      END
+-*
+-************************************************************************
+-*
+-      DOUBLE PRECISION FUNCTION DLAMC3( A, B )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      DOUBLE PRECISION   A, B
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMC3  is intended to force  A  and  B  to be stored prior to doing
+-*  the addition of  A  and  B ,  for use in situations where optimizers
+-*  might hold one of these in a register.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  A, B    (input) DOUBLE PRECISION
+-*          The values A and B.
+-*
+-* =====================================================================
+-*
+-*     .. Executable Statements ..
+-*
+-      DLAMC3 = A + B
+-*
+-      RETURN
+-*
+-*     End of DLAMC3
+-*
+-      END
+-*
+-************************************************************************
+-*
+-      SUBROUTINE DLAMC4( EMIN, START, BASE )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      INTEGER            BASE, EMIN
+-      DOUBLE PRECISION   START
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMC4 is a service routine for DLAMC2.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  EMIN    (output) EMIN
+-*          The minimum exponent before (gradual) underflow, computed by
+-*          setting A = START and dividing by BASE until the previous A
+-*          can not be recovered.
+-*
+-*  START   (input) DOUBLE PRECISION
+-*          The starting point for determining EMIN.
+-*
+-*  BASE    (input) INTEGER
+-*          The base of the machine.
+-*
+-* =====================================================================
+-*
+-*     .. Local Scalars ..
+-      INTEGER            I
+-      DOUBLE PRECISION   A, B1, B2, C1, C2, D1, D2, ONE, RBASE, ZERO
+-*     ..
+-*     .. External Functions ..
+-      DOUBLE PRECISION   DLAMC3
+-      EXTERNAL           DLAMC3
+-*     ..
+-*     .. Executable Statements ..
+-*
+-      A = START
+-      ONE = 1
+-      RBASE = ONE / BASE
+-      ZERO = 0
+-      EMIN = 1
+-      B1 = DLAMC3( A*RBASE, ZERO )
+-      C1 = A
+-      C2 = A
+-      D1 = A
+-      D2 = A
+-*+    WHILE( ( C1.EQ.A ).AND.( C2.EQ.A ).AND.
+-*    $       ( D1.EQ.A ).AND.( D2.EQ.A )      )LOOP
+-   10 CONTINUE
+-      IF( ( C1.EQ.A ) .AND. ( C2.EQ.A ) .AND. ( D1.EQ.A ) .AND.
+-     $    ( D2.EQ.A ) ) THEN
+-         EMIN = EMIN - 1
+-         A = B1
+-         B1 = DLAMC3( A / BASE, ZERO )
+-         C1 = DLAMC3( B1*BASE, ZERO )
+-         D1 = ZERO
+-         DO 20 I = 1, BASE
+-            D1 = D1 + B1
+-   20    CONTINUE
+-         B2 = DLAMC3( A*RBASE, ZERO )
+-         C2 = DLAMC3( B2 / RBASE, ZERO )
+-         D2 = ZERO
+-         DO 30 I = 1, BASE
+-            D2 = D2 + B2
+-   30    CONTINUE
+-         GO TO 10
+-      END IF
+-*+    END WHILE
+-*
+-      RETURN
+-*
+-*     End of DLAMC4
+-*
+-      END
+-*
+-************************************************************************
+-*
+-      SUBROUTINE DLAMC5( BETA, P, EMIN, IEEE, EMAX, RMAX )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      LOGICAL            IEEE
+-      INTEGER            BETA, EMAX, EMIN, P
+-      DOUBLE PRECISION   RMAX
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMC5 attempts to compute RMAX, the largest machine floating-point
+-*  number, without overflow.  It assumes that EMAX + abs(EMIN) sum
+-*  approximately to a power of 2.  It will fail on machines where this
+-*  assumption does not hold, for example, the Cyber 205 (EMIN = -28625,
+-*  EMAX = 28718).  It will also fail if the value supplied for EMIN is
+-*  too large (i.e. too close to zero), probably with overflow.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  BETA    (input) INTEGER
+-*          The base of floating-point arithmetic.
+-*
+-*  P       (input) INTEGER
+-*          The number of base BETA digits in the mantissa of a
+-*          floating-point value.
+-*
+-*  EMIN    (input) INTEGER
+-*          The minimum exponent before (gradual) underflow.
+-*
+-*  IEEE    (input) LOGICAL
+-*          A logical flag specifying whether or not the arithmetic
+-*          system is thought to comply with the IEEE standard.
+-*
+-*  EMAX    (output) INTEGER
+-*          The largest exponent before overflow
+-*
+-*  RMAX    (output) DOUBLE PRECISION
+-*          The largest machine floating-point number.
+-*
+-* =====================================================================
+-*
+-*     .. Parameters ..
+-      DOUBLE PRECISION   ZERO, ONE
+-      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0 )
+-*     ..
+-*     .. Local Scalars ..
+-      INTEGER            EXBITS, EXPSUM, I, LEXP, NBITS, TRY, UEXP
+-      DOUBLE PRECISION   OLDY, RECBAS, Y, Z
+-*     ..
+-*     .. External Functions ..
+-      DOUBLE PRECISION   DLAMC3
+-      EXTERNAL           DLAMC3
+-*     ..
+-*     .. Intrinsic Functions ..
+-      INTRINSIC          MOD
+-*     ..
+-*     .. Executable Statements ..
+-*
+-*     First compute LEXP and UEXP, two powers of 2 that bound
+-*     abs(EMIN). We then assume that EMAX + abs(EMIN) will sum
+-*     approximately to the bound that is closest to abs(EMIN).
+-*     (EMAX is the exponent of the required number RMAX).
+-*
+-      LEXP = 1
+-      EXBITS = 1
+-   10 CONTINUE
+-      TRY = LEXP*2
+-      IF( TRY.LE.( -EMIN ) ) THEN
+-         LEXP = TRY
+-         EXBITS = EXBITS + 1
+-         GO TO 10
+-      END IF
+-      IF( LEXP.EQ.-EMIN ) THEN
+-         UEXP = LEXP
+-      ELSE
+-         UEXP = TRY
+-         EXBITS = EXBITS + 1
+-      END IF
+-*
+-*     Now -LEXP is less than or equal to EMIN, and -UEXP is greater
+-*     than or equal to EMIN. EXBITS is the number of bits needed to
+-*     store the exponent.
+-*
+-      IF( ( UEXP+EMIN ).GT.( -LEXP-EMIN ) ) THEN
+-         EXPSUM = 2*LEXP
+-      ELSE
+-         EXPSUM = 2*UEXP
+-      END IF
+-*
+-*     EXPSUM is the exponent range, approximately equal to
+-*     EMAX - EMIN + 1 .
+-*
+-      EMAX = EXPSUM + EMIN - 1
+-      NBITS = 1 + EXBITS + P
+-*
+-*     NBITS is the total number of bits needed to store a
+-*     floating-point number.
+-*
+-      IF( ( MOD( NBITS, 2 ).EQ.1 ) .AND. ( BETA.EQ.2 ) ) THEN
+-*
+-*        Either there are an odd number of bits used to store a
+-*        floating-point number, which is unlikely, or some bits are
+-*        not used in the representation of numbers, which is possible,
+-*        (e.g. Cray machines) or the mantissa has an implicit bit,
+-*        (e.g. IEEE machines, Dec Vax machines), which is perhaps the
+-*        most likely. We have to assume the last alternative.
+-*        If this is true, then we need to reduce EMAX by one because
+-*        there must be some way of representing zero in an implicit-bit
+-*        system. On machines like Cray, we are reducing EMAX by one
+-*        unnecessarily.
+-*
+-         EMAX = EMAX - 1
+-      END IF
+-*
+-      IF( IEEE ) THEN
+-*
+-*        Assume we are on an IEEE machine which reserves one exponent
+-*        for infinity and NaN.
+-*
+-         EMAX = EMAX - 1
+-      END IF
+-*
+-*     Now create RMAX, the largest machine number, which should
+-*     be equal to (1.0 - BETA**(-P)) * BETA**EMAX .
+-*
+-*     First compute 1.0 - BETA**(-P), being careful that the
+-*     result is less than 1.0 .
+-*
+-      RECBAS = ONE / BETA
+-      Z = BETA - ONE
+-      Y = ZERO
+-      DO 20 I = 1, P
+-         Z = Z*RECBAS
+-         IF( Y.LT.ONE )
+-     $      OLDY = Y
+-         Y = DLAMC3( Y, Z )
+-   20 CONTINUE
+-      IF( Y.GE.ONE )
+-     $   Y = OLDY
+-*
+-*     Now multiply by BETA**EMAX to get RMAX.
+-*
+-      DO 30 I = 1, EMAX
+-         Y = DLAMC3( Y*BETA, ZERO )
+-   30 CONTINUE
+-*
+-      RMAX = Y
+-      RETURN
+-*
+-*     End of DLAMC5
+-*
+-      END
+-      LOGICAL          FUNCTION LSAME( CA, CB )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     September 30, 1994
+-*
+-*     .. Scalar Arguments ..
+-      CHARACTER          CA, CB
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  LSAME returns .TRUE. if CA is the same letter as CB regardless of
+-*  case.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  CA      (input) CHARACTER*1
+-*  CB      (input) CHARACTER*1
+-*          CA and CB specify the single characters to be compared.
+-*
+-* =====================================================================
+-*
+-*     .. Intrinsic Functions ..
+-      INTRINSIC          ICHAR
+-*     ..
+-*     .. Local Scalars ..
+-      INTEGER            INTA, INTB, ZCODE
+-*     ..
+-*     .. Executable Statements ..
+-*
+-*     Test if the characters are equal
+-*
+-      LSAME = CA.EQ.CB
+-      IF( LSAME )
+-     $   RETURN
+-*
+-*     Now test for equivalence if both characters are alphabetic.
+-*
+-      ZCODE = ICHAR( 'Z' )
+-*
+-*     Use 'Z' rather than 'A' so that ASCII can be detected on Prime
+-*     machines, on which ICHAR returns a value with bit 8 set.
+-*     ICHAR('A') on Prime machines returns 193 which is the same as
+-*     ICHAR('A') on an EBCDIC machine.
+-*
+-      INTA = ICHAR( CA )
+-      INTB = ICHAR( CB )
+-*
+-      IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN
+-*
+-*        ASCII is assumed - ZCODE is the ASCII code of either lower or
+-*        upper case 'Z'.
+-*
+-         IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
+-         IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
+-*
+-      ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN
+-*
+-*        EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
+-*        upper case 'Z'.
+-*
+-         IF( INTA.GE.129 .AND. INTA.LE.137 .OR.
+-     $       INTA.GE.145 .AND. INTA.LE.153 .OR.
+-     $       INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
+-         IF( INTB.GE.129 .AND. INTB.LE.137 .OR.
+-     $       INTB.GE.145 .AND. INTB.LE.153 .OR.
+-     $       INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
+-*
+-      ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN
+-*
+-*        ASCII is assumed, on Prime machines - ZCODE is the ASCII code
+-*        plus 128 of either lower or upper case 'Z'.
+-*
+-         IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
+-         IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
+-      END IF
+-      LSAME = INTA.EQ.INTB
+-*
+-*     RETURN
+-*
+-*     End of LSAME
+-*
+-      END
+--- cash.orig/mebdfi.f	2007-12-15 15:37:46.000000000 -0500
++++ cash/mebdfi.f	2014-03-02 16:22:33.208828923 -0500
+@@ -58,11 +58,11 @@
+ C           
+ C              SEPTEMBER 20th 1999: FIRST RELEASE
+ C
+-C     OVDRIV 
++C     I_OVDRIV 
+ C     A PACKAGE FOR  THE SOLUTION OF THE INITIAL VALUE PROBLEM 
+ C     FOR SYSTEMS OF  IMPLICIT DIFFERENTIAL ALGEBRAIC EQUATIONS
+ c     G(t,Y,Y')=0, Y=(Y(1),Y(2),Y(3),.....,Y(N)).
+-C     SUBROUTINE OVDRIV IS A DRIVER ROUTINE FOR THIS PACKAGE.
++C     SUBROUTINE I_OVDRIV IS A DRIVER ROUTINE FOR THIS PACKAGE.
+ C
+ C                    REFERENCES
+ C
+@@ -82,7 +82,7 @@
+ C         SPRINGER 1996, page 267.
+ C
+ C     ----------------------------------------------------------------
+-C     OVDRIV IS TO BE CALLED ONCE FOR EACH OUTPUT VALUE OF T, AND
++C     I_OVDRIV IS TO BE CALLED ONCE FOR EACH OUTPUT VALUE OF T, AND
+ C     IN TURN MAKES REPEATED CALLS TO THE CORE INTEGRATOR STIFF.
+ C
+ C     THE INPUT PARAMETERS ARE ..
+@@ -158,7 +158,7 @@
+ C              SHOULD BE NON-NEGATIVE. IF ITOL = 1 THEN SINGLE STEP ERROR
+ C              ESTIMATES DIVIDED BY YMAX(I) WILL BE KEPT LESS THAN 1
+ C              IN ROOT-MEAN-SQUARE NORM.  THE VECTOR YMAX OF WEIGHTS IS
+-C              COMPUTED IN OVDRIV. INITIALLY YMAX(I) IS SET AS
++C              COMPUTED IN I_OVDRIV. INITIALLY YMAX(I) IS SET AS
+ C              THE MAXIMUM OF 1 AND ABS(Y(I)).  THEREAFTER YMAX(I) IS
+ C              THE LARGEST VALUE OF ABS(Y(I)) SEEN SO FAR, OR THE
+ C              INITIAL VALUE YMAX(I) IF THAT IS LARGER.
+@@ -242,23 +242,23 @@
+ C     -12   INSUFFICIENT INTEGER WORKSPACE FOR THE INTEGRATION
+ C
+ C
+-C     IN ADDITION TO OVDRIVE, THE FOLLOWING ROUTINES ARE PROVIDED
++C     IN ADDITION TO I_OVDRIVE, THE FOLLOWING ROUTINES ARE PROVIDED
+ C     IN THE PACKAGE..
+ C
+-C     INTERP( - )   INTERPOLATES TO GET THE OUTPUT VALUES
++C     I_INTERP( - )   INTERPOLATES TO GET THE OUTPUT VALUES
+ C                   AT T=TOUT FROM THE DATA IN THE Y ARRAY.
+-C     STIFF( - )    IS THE CORE INTEGRATOR ROUTINE.  IT PERFORMS A
++C     I_STIFF( - )    IS THE CORE INTEGRATOR ROUTINE.  IT PERFORMS A
+ C                   SINGLE STEP AND ASSOCIATED ERROR CONTROL.
+-C     COSET( - )    SETS COEFFICIENTS FOR BACKWARD DIFFERENTIATION
++C     I_COSET( - )    SETS COEFFICIENTS FOR BACKWARD DIFFERENTIATION
+ C                   SCHEMES FOR USE IN THE CORE INTEGRATOR.
+-C     PSET( - )     COMPUTES AND PROCESSES THE NEWTON ITERATION
++C     I_PSET( - )     COMPUTES AND PROCESSES THE NEWTON ITERATION
+ C                   MATRIX DG/DY + (1/(H*BETA))DG/DY'
+-C     DEC( - )      PERFORMS AN LU DECOMPOSITION ON A MATRIX.
+-C     SOL( - )      SOLVES LINEAR SYSTEMS A*X = B AFTER DEC
++C     I_DEC( - )      PERFORMS AN LU DECOMPOSITION ON A MATRIX.
++C     I_SOL( - )      SOLVES LINEAR SYSTEMS A*X = B AFTER I_DEC
+ C                   HAS BEEN CALLED FOR THE MATRIX A
+-C     DGBFA ( - )   FACTORS A DOUBLE PRECISION BAND MATRIX BY
++C     I_DGBFA ( - )   FACTORS A DOUBLE PRECISION BAND MATRIX BY
+ C                   ELIMINATION.
+-C     DGBSL ( - )   SOLVES A BANDED LINEAR SYSTEM A*x=b
++C     I_DGBSL ( - )   SOLVES A BANDED LINEAR SYSTEM A*x=b
+ C
+ C                   ALSO SUPPLIED ARE THE BLAS ROUTINES
+ C
+@@ -330,7 +330,7 @@
+ C     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+ C     THIS SUBROUTINE IS FOR THE PURPOSE               *
+ C     OF SPLITTING UP THE WORK ARRAYS WORK AND IWORK   *
+-C     FOR USE INSIDE THE INTEGRATOR STIFF              *
++C     FOR USE INSIDE THE INTEGRATOR I_STIFF              *
+ C     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+ 
+ C     .. SCALAR ARGUMENTS ..
+@@ -346,7 +346,7 @@
+ C     COMMON BLOCKS
+ C     ..
+ C     .. EXTERNAL SUBROUTINES ..
+-      EXTERNAL OVDRIV,PDERV,RESID
++      EXTERNAL I_OVDRIV,PDERV,RESID
+ C     ..
+ C     .. SAVE STATEMENT ..
+       SAVE  I1,I2,I3,I4,I5,I6,I7,I8,I9,I10,I11
+@@ -397,7 +397,7 @@
+ c     THE ERROR FLAG IS INITIALISED
+ c
+ 
+-      CALL OVDRIV(N,T0,HO,Y0,YPRIME,TOUT,TEND,MF,IDID,LOUT,WORK(3),
++      CALL I_OVDRIV(N,T0,HO,Y0,YPRIME,TOUT,TEND,MF,IDID,LOUT,WORK(3),
+      +     WORK(I1),WORK(I2),WORK(I3),WORK(I4),WORK(I5),WORK(I6),
+      +     WORK(I7),WORK(I8),WORK(I9),WORK(I10),IWORK(15),
+      +     MBND,IWORK(1),IWORK(2),IWORK(3),MAXDER,ITOL,RTOL,ATOL,RPAR,
+@@ -428,7 +428,7 @@
+       END
+ C--------------------------------------------------------------------------
+ C
+-      SUBROUTINE OVDRIV(N,T0,HO,Y0,YPRIME,TOUT,TEND,MF,IDID,LOUT,Y,
++      SUBROUTINE I_OVDRIV(N,T0,HO,Y0,YPRIME,TOUT,TEND,MF,IDID,LOUT,Y,
+      +     YHOLD,YNHOLD,YMAX,ERRORS,SAVE1,SAVE2,SCALE,ARH,PW,PWCOPY,
+      +     IPIV,MBND,NIND1,NIND2,NIND3,MAXDER,ITOL,RTOL,ATOL,RPAR,
+      +     IPAR,PDERV,RESID,NQUSED,NSTEP,NFAIL,NRE,NJE,NDEC,NBSOL,
+@@ -452,7 +452,7 @@
+       INTEGER I,KGO,NHCUT
+ C     ..
+ C     .. EXTERNAL SUBROUTINES ..
+-      EXTERNAL INTERP,STIFF,PDERV,RESID
++      EXTERNAL I_INTERP,I_STIFF,PDERV,RESID
+ C     ..
+ C     .. INTRINSIC FUNCTIONS ..
+       INTRINSIC DABS,DMAX1
+@@ -468,7 +468,7 @@
+          HMAX = DABS(TEND-T0)/10.0D+0
+          IF ((T-TOUT)*H.GE.0.0D+0) THEN
+ C           HAVE OVERSHOT THE OUTPUT POINT, SO INTERPOLATE
+-            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++            CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+             IDID = KFLAG
+             T0 = TOUT
+             HO = H
+@@ -486,7 +486,7 @@
+             IF (((T-TOUT)*H.GE.0.0D+0) .OR. (DABS(T-TOUT).LE.
+      +           100.0D+0*UROUND*HMAX)) THEN
+ C              HAVE OVERSHOT THE OUTPUT POINT, SO INTERPOLATE
+-               CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++               CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+                T0 = TOUT
+                HO = H
+                IDID = KFLAG
+@@ -513,7 +513,7 @@
+          IF ((T-TOUT)*H.GE.0.0D+0) THEN
+ C           HAVE OVERSHOT TOUT
+             WRITE (LOUT,9080) T,TOUT,H
+-            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++            CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+             HO = H
+             T0 = TOUT
+             IDID = -5
+@@ -527,7 +527,7 @@
+          T0 = T
+          IF ((T-TOUT)*H.GE.0.0D+0) THEN
+ C           HAVE OVERSHOT,SO INTERPOLATE
+-            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++            CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+             IDID = KFLAG
+             T0 = TOUT
+             HO = H
+@@ -660,7 +660,7 @@
+  20   IF ((T+H).EQ.T) THEN
+          WRITE (LOUT,9000)
+       END IF
+-      CALL STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
++      CALL I_STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
+      +    NIND1,NIND2,NIND3,T,TOUT,TEND,Y,YPRIME,N,
+      +    YMAX,ERRORS,SAVE1,SAVE2,SCALE,PW,PWCOPY,YHOLD,
+      +    YNHOLD,ARH,IPIV,LOUT,MAXDER,ITOL,RTOL,ATOL,RPAR,IPAR,
+@@ -672,7 +672,7 @@
+ C      ENDIF
+       KGO = 1 - KFLAG
+       IF (KGO.EQ.1) THEN
+-C        NORMAL RETURN FROM STIFF
++C        NORMAL RETURN FROM I_STIFF
+          GO TO 30
+ 
+       ELSE IF (KGO.EQ.2) THEN
+@@ -708,7 +708,7 @@
+ C     FOR ANY OTHER VALUE OF IDID, CONTROL RETURNS TO THE INTEGRATOR
+ C     UNLESS TOUT HAS BEEN REACHED.  THEN INTERPOLATED VALUES OF Y ARE
+ C     COMPUTED AND STORED IN Y0 ON RETURN.
+-C     IF INTERPOLATION IS NOT DESIRED, THE CALL TO INTERP SHOULD BE
++C     IF INTERPOLATION IS NOT DESIRED, THE CALL TO I_INTERP SHOULD BE
+ C     REMOVED AND CONTROL TRANSFERRED TO STATEMENT 500 INSTEAD OF 520.
+ C --------------------------------------------------------------------
+       IF(NSTEP.GT.MAXSTP) THEN
+@@ -749,7 +749,7 @@
+             IF (((T-TOUT)*H.GE.0.0D+0) .OR. (DABS(T-TOUT).LE.
+      +           100.0D+0*UROUND*HMAX)) THEN
+ C              HAVE OVERSHOT, SO INTERPOLATE
+-               CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++               CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+                T0 = TOUT
+                HO = H
+                IDID = KFLAG
+@@ -766,7 +766,7 @@
+ 
+       ELSE IF ((T-TOUT)*H.GE.0.0D+0) THEN
+ C        HAVE OVERSHOT, SO INTERPOLATE
+-         CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++         CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+          IDID = KFLAG
+          HO = H
+          T0 = TOUT
+@@ -805,14 +805,14 @@
+ 
+       ELSE
+ C        HAVE PASSED TOUT SO INTERPOLATE
+-         CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++         CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+          T0 = TOUT
+          IDID = KFLAG
+       END IF
+       HO = H
+       IF(KFLAG.NE.0) IDID = KFLAG
+       RETURN
+-C -------------------------- END OF SUBROUTINE OVDRIV -----------------
++C -------------------------- END OF SUBROUTINE I_OVDRIV -----------------
+  9000 FORMAT (' WARNING..  T + H = T ON NEXT STEP.')
+  9010 FORMAT (/,/,' KFLAG = -2 FROM INTEGRATOR AT T = ',E16.8,'  H =',
+      +       E16.8,/,
+@@ -848,7 +848,7 @@
+       END
+ C--------------------------------------------------------------------------
+ C
+-      SUBROUTINE INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++      SUBROUTINE I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C     .. SCALAR ARGUMENTS ..
+@@ -875,15 +875,15 @@
+  20      CONTINUE
+  30   CONTINUE
+       RETURN
+-C -------------- END OF SUBROUTINE INTERP ---------------------------
++C -------------- END OF SUBROUTINE I_INTERP ---------------------------
+       END
+ C
+-      SUBROUTINE COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
++      SUBROUTINE I_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
+       
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C --------------------------------------------------------------------
+-C     COSET IS CALLED BY THE INTEGRATOR AND SETS THE COEFFICIENTS USED
++C     I_COSET IS CALLED BY THE INTEGRATOR AND SETS THE COEFFICIENTS USED
+ C     BY THE CONVENTIONAL BACKWARD DIFFERENTIATION SCHEME AND THE
+ C     MODIFIED EXTENDED BACKWARD DIFFERENTIATION SCHEME.  THE VECTOR
+ C     EL OF LENGTH NQ+1 DETERMINES THE BASIC BDF METHOD WHILE THE VECTOR
+@@ -1013,24 +1013,24 @@
+       TQ(4) = 0.5D+0*TQ(2)/DBLE(FLOAT(NQ))
+       IF(NQ.NE.1) TQ(5)=PERTST(NQ-1,1)
+       RETURN
+-C --------------------- END OF SUBROUTINE COSET ---------------------
++C --------------------- END OF SUBROUTINE I_COSET ---------------------
+       END
+ 
+-      SUBROUTINE PSET(Y,YPRIME,N,H,T,UROUND,EPSJAC,CON,MITER,MBND,
++      SUBROUTINE I_PSET(Y,YPRIME,N,H,T,UROUND,EPSJAC,CON,MITER,MBND,
+      +     NIND1,NIND2,NIND3,IER,PDERV,RESID,NRENEW,YMAX,SAVE1,SAVE2,
+      +     SAVE3,PW,PWCOPY,WRKSPC,IPIV,ITOL,RTOL,ATOL,NPSET,NJE,NRE,
+      +     NDEC,IPAR,RPAR,IERR)      
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C -------------------------------------------------------------------
+-C     PSET IS CALLED BY STIFF TO COMPUTE AND PROCESS THE MATRIX
++C     I_PSET IS CALLED BY I_STIFF TO COMPUTE AND PROCESS THE MATRIX
+ C     PD=DG/DY + (1/CON)DG/DY'. THIS MATRIX IS THEN SUBJECTED TO LU
+ C     DECOMPOSITION IN PREPARATION FOR LATER SOLUTION OF LINEAR SYSTEMS
+ C     OF ALGEBRAIC EQUATIONS WITH LU AS THE COEFFICIENT MATRIX.  THE
+ C     MATRIX PD IS FOUND BY THE USER-SUPPLIED ROUTINE PDERV IF MITER=1
+ C     OR 3 OR BY FINITE DIFFERENCING IF MITER = 2 OR 4.
+ C     IN ADDITION TO VARIABLES DESCRIBED PREVIOUSLY, COMMUNICATION WITH
+-C     PSET USES THE FOLLOWING ..
++C     I_PSET USES THE FOLLOWING ..
+ C     EPSJAC = DSQRT(UROUND), USED IN NUMERICAL JACOBIAN INCREMENTS.
+ C *******************************************************************
+ C     THE ARGUMENT NRENEW IS USED TO SIGNAL WHETHER OR NOT
+@@ -1052,7 +1052,7 @@
+       INTEGER I,J,J1,JJKK
+ C     ..
+ C     .. EXTERNAL SUBROUTINES ..
+-      EXTERNAL DEC,PDERV,DGBFA,RESID
++      EXTERNAL I_DEC,PDERV,I_DGBFA,RESID
+ C     ..
+ C     .. INTRINSIC FUNCTIONS ..
+       INTRINSIC DABS,DMAX1,DSQRT
+@@ -1192,17 +1192,17 @@
+       NRE=NRE+ MIN(MBND(3),N)
+ C
+  70   IF (MITER.GT.2) THEN
+-         CALL DGBFA(PW,MBND(4),N,ML,MU,IPIV,IER)
++         CALL I_DGBFA(PW,MBND(4),N,ML,MU,IPIV,IER)
+          NDEC = NDEC + 1
+       ELSE
+-         CALL DEC(N,N,PW,IPIV,IER)
++         CALL I_DEC(N,N,PW,IPIV,IER)
+          NDEC = NDEC + 1
+       ENDIF
+       RETURN
+-C ---------------------- END OF SUBROUTINE PSET ---------------------
++C ---------------------- END OF SUBROUTINE I_PSET ---------------------
+       END
+ C
+-      SUBROUTINE DEC(N,NDIM,A,IP,IER)
++      SUBROUTINE I_DEC(N,NDIM,A,IP,IER)
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C -------------------------------------------------------------------
+@@ -1218,9 +1218,9 @@
+ C     IP(N) = (-1)**(NUMBER OF INTERCHANGES) OR 0.
+ C     IER = 0 IF MATRIX IS NON-SINGULAR, OR K IF FOUND TO BE SINGULAR
+ C                  AT STAGE K.
+-C     USE SOL TO OBTAIN SOLUTION OF LINEAR SYSTEM.
++C     USE I_SOL TO OBTAIN SOLUTION OF LINEAR SYSTEM.
+ C     DETERM(A) = IP(N)*A(1,1)*A(2,2)* . . . *A(N,N).
+-C     IF IP(N) = 0, A IS SINGULAR, SOL WILL DIVIDE BY ZERO.
++C     IF IP(N) = 0, A IS SINGULAR, I_SOL WILL DIVIDE BY ZERO.
+ C
+ C     REFERENCE.
+ C     C.B. MOLER, ALGORITHM 423, LINEAR EQUATION SOLVER, C.A.C.M
+@@ -1279,10 +1279,10 @@
+  80   IER = K
+       IP(N) = 0
+       RETURN
+-C--------------------- END OF SUBROUTINE DEC ----------------------
++C--------------------- END OF SUBROUTINE I_DEC ----------------------
+       END
+ C
+-      SUBROUTINE SOL(N,NDIM,A,B,IP)
++      SUBROUTINE I_SOL(N,NDIM,A,B,IP)
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C     .. SCALAR ARGUMENTS ..
+@@ -1305,8 +1305,8 @@
+ C     NDIM = DECLARED DIMENSION OF MATRIX A.
+ C     A = TRIANGULARISED MATRIX OBTAINED FROM DEC.
+ C     B = RIGHT HAND SIDE VECTOR.
+-C     IP = PIVOT VECTOR OBTAINED FROM DEC.
+-C     DO NOT USE IF DEC HAS SET IER .NE. 0
++C     IP = PIVOT VECTOR OBTAINED FROM I_DEC.
++C     DO NOT USE IF I_DEC HAS SET IER .NE. 0
+ C     OUTPUT..
+ C     B = SOLUTION VECTOR, X.
+ C     ------------------------------------------------------------------
+@@ -1333,16 +1333,16 @@
+  40   CONTINUE
+  50   B(1) = B(1)/A(1,1)
+       RETURN
+-C------------------------- END OF SUBROUTINE SOL ------------------
++C------------------------- END OF SUBROUTINE I_SOL ------------------
+       END
+ C
+-      subroutine dgbfa(abd,lda,n,ml,mu,ipvt,info)
++      subroutine i_dgbfa(abd,lda,n,ml,mu,ipvt,info)
+       integer lda,n,ml,mu,ipvt(1),info
+       double precision abd(lda,1)
+ c
+-c     dgbfa factors a double precision band matrix by elimination.
++c     i_dgbfa factors a double precision band matrix by elimination.
+ c
+-c     dgbfa is usually called by dgbco, but it can be called
++c     i_dgbfa is usually called by dgbco, but it can be called
+ c     directly with a saving in time if  rcond  is not needed.
+ c
+ c     on entry
+@@ -1384,7 +1384,7 @@
+ c                = 0  normal value.
+ c                = k  if  u(k,k) .eq. 0.0 .  this is not an error
+ c                     condition for this subroutine, but it does
+-c                     indicate that dgbsl will divide by zero if
++c                     indicate that i_dgbsl will divide by zero if
+ c                     called.  use  rcond  in dgbco for a reliable
+ c                     indication of singularity.
+ c
+@@ -1511,151 +1511,18 @@
+       return
+       end
+ C--------------------------------------------------------------------------
+-      subroutine daxpy(n,da,dx,incx,dy,incy)
+-c
+-c     constant times a vector plus a vector.
+-c     uses unrolled loops for increments equal to one.
+-c     jack dongarra, linpack, 3/11/78.
+-c
+-      double precision dx(1),dy(1),da
+-      integer i,incx,incy,ix,iy,m,mp1,n
+-c
+-      if(n.le.0)return
+-      if (da .eq. 0.0d0) return
+-      if(incx.eq.1.and.incy.eq.1)go to 20
+-c
+-c        code for unequal increments or equal increments
+-c          not equal to 1
+-c
+-      ix = 1
+-      iy = 1
+-      if(incx.lt.0)ix = (-n+1)*incx + 1
+-      if(incy.lt.0)iy = (-n+1)*incy + 1
+-      do 10 i = 1,n
+-         dy(iy) = dy(iy) + da*dx(ix)
+-         ix = ix + incx
+-         iy = iy + incy
+- 10   continue
+-      return
+-c
+-c        code for both increments equal to 1
+-c
+-c
+-c        clean-up loop
+-c
+- 20   m = mod(n,4)
+-      if( m .eq. 0 ) go to 40
+-      do 30 i = 1,m
+-         dy(i) = dy(i) + da*dx(i)
+- 30   continue
+-      if( n .lt. 4 ) return
+- 40   mp1 = m + 1
+-      do 50 i = mp1,n,4
+-         dy(i) = dy(i) + da*dx(i)
+-         dy(i + 1) = dy(i + 1) + da*dx(i + 1)
+-         dy(i + 2) = dy(i + 2) + da*dx(i + 2)
+-         dy(i + 3) = dy(i + 3) + da*dx(i + 3)
+- 50   continue
+-      return
+-      end
+-C---------------------------------------------------------------------------
+-      subroutine  dscal(n,da,dx,incx)
+-c
+-c     scales a vector by a constant.
+-c     uses unrolled loops for increment equal to one.
+-c     jack dongarra, linpack, 3/11/78.
+-c     modified to correct problem with negative increment, 8/21/90.
+-c
+-      double precision da,dx(1)
+-      integer i,incx,ix,m,mp1,n
+-c
+-      if(n.le.0)return
+-      if(incx.eq.1)go to 20
+-c
+-c        code for increment not equal to 1
+-c
+-      ix = 1
+-      if(incx.lt.0)ix = (-n+1)*incx + 1
+-      do 10 i = 1,n
+-         dx(ix) = da*dx(ix)
+-         ix = ix + incx
+- 10   continue
+-      return
+-c
+-c        code for increment equal to 1
+-c
+-c
+-c        clean-up loop
+-c
+- 20   m = mod(n,5)
+-      if( m .eq. 0 ) go to 40
+-      do 30 i = 1,m
+-         dx(i) = da*dx(i)
+- 30   continue
+-      if( n .lt. 5 ) return
+- 40   mp1 = m + 1
+-      do 50 i = mp1,n,5
+-         dx(i) = da*dx(i)
+-         dx(i + 1) = da*dx(i + 1)
+-        dx(i + 2) = da*dx(i + 2)
+-        dx(i + 3) = da*dx(i + 3)
+-        dx(i + 4) = da*dx(i + 4)
+- 50   continue
+-      return
+-      end
+-C--------------------------------------------------------------------------
+-      integer function idamax(n,dx,incx)
+-c
+-c     finds the index of element having max. absolute value.
+-c     jack dongarra, linpack, 3/11/78.
+-c     modified to correct problem with negative increment, 8/21/90.
+-c
+-      double precision dx(1),dmax
+-      integer i,incx,ix,n
+-c
+-      idamax = 0
+-      if( n .lt. 1 ) return
+-      idamax = 1
+-      if(n.eq.1)return
+-      if(incx.eq.1)go to 20
+-c
+-c        code for increment not equal to 1
+-c
+-      ix = 1
+-      if(incx.lt.0)ix = (-n+1)*incx + 1
+-      dmax = dabs(dx(ix))
+-      ix = ix + incx
+-      do 10 i = 2,n
+-         if(dabs(dx(ix)).le.dmax) go to 5
+-         idamax = i
+-         dmax = dabs(dx(ix))
+-    5    ix = ix + incx
+- 10   continue
+-      return
+-c
+-c        code for increment equal to 1
+-c
+- 20   dmax = dabs(dx(1))
+-      do 30 i = 2,n
+-         if(dabs(dx(i)).le.dmax) go to 30
+-         idamax = i
+-         dmax = dabs(dx(i))
+- 30   continue
+-      return
+-      end
+-C--------------------------------------------------------------------------
+-      subroutine dgbsl(abd,lda,n,ml,mu,ipvt,b,job)
++      subroutine i_dgbsl(abd,lda,n,ml,mu,ipvt,b,job)
+       integer lda,n,ml,mu,ipvt(*),job
+       double precision abd(lda,*),b(*)
+ c     
+-c     dgbsl solves the double precision band system
++c     i_dgbsl solves the double precision band system
+ c     a * x = b  or  trans(a) * x = b
+-c     using the factors computed by dgbco or dgbfa.
++c     using the factors computed by dgbco or i_dgbfa.
+ c
+ c     on entry
+ c
+ c        abd     double precision(lda, n)
+-c                the output from dgbco or dgbfa.
++c                the output from dgbco or i_dgbfa.
+ c
+ c        lda     integer
+ c                the leading dimension of the array  abd .
+@@ -1670,7 +1537,7 @@
+ c                number of diagonals above the main diagonal.
+ c
+ c        ipvt    integer(n)
+-c                the pivot vector from dgbco or dgbfa.
++c                the pivot vector from dgbco or i_dgbfa.
+ c
+ c        b       double precision(n)
+ c                the right hand side vector.
+@@ -1691,14 +1558,14 @@
+ c        but it is often caused by improper arguments or improper
+ c        setting of lda .  it will not occur if the subroutines are
+ c        called correctly and if dgbco has set rcond .gt. 0.0
+-c        or dgbfa has set info .eq. 0 .
++c        or i_dgbfa has set info .eq. 0 .
+ c
+ c     to compute  inverse(a) * c  where  c  is a matrix
+ c     with  p  columns
+ c           call dgbco(abd,lda,n,ml,mu,ipvt,rcond,z)
+ c           if (rcond is too small) go to ...
+ c           do 10 j = 1, p
+-c              call dgbsl(abd,lda,n,ml,mu,ipvt,c(1,j),0)
++c              call i_dgbsl(abd,lda,n,ml,mu,ipvt,c(1,j),0)
+ c        10 continue
+ c
+ c     linpack. this version dated 08/14/78 .
+@@ -1780,64 +1647,14 @@
+       return
+       end
+ C---------------------------------------------------------------------------
+-      double precision function ddot(n,dx,incx,dy,incy)
+-c
+-c     forms the dot product of two vectors.
+-c     uses unrolled loops for increments equal to one.
+-c     jack dongarra, linpack, 3/11/78.
+-c
+-      double precision dx(1),dy(1),dtemp
+-      integer i,incx,incy,ix,iy,m,mp1,n
+-c
+-      ddot = 0.0d0
+-      dtemp = 0.0d0
+-      if(n.le.0)return
+-      if(incx.eq.1.and.incy.eq.1)go to 20
+-c
+-c        code for unequal increments or equal increments
+-c          not equal to 1
+-c
+-      ix = 1
+-      iy = 1
+-      if(incx.lt.0)ix = (-n+1)*incx + 1
+-      if(incy.lt.0)iy = (-n+1)*incy + 1
+-      do 10 i = 1,n
+-         dtemp = dtemp + dx(ix)*dy(iy)
+-         ix = ix + incx
+-         iy = iy + incy
+- 10   continue
+-      ddot = dtemp
+-      return
+-c
+-c        code for both increments equal to 1
+-c
+-c
+-c        clean-up loop
+-c
+- 20   m = mod(n,5)
+-      if( m .eq. 0 ) go to 40
+-      do 30 i = 1,m
+-         dtemp = dtemp + dx(i)*dy(i)
+- 30   continue
+-      if( n .lt. 5 ) go to 60
+- 40   mp1 = m + 1
+-      do 50 i = mp1,n,5
+-         dtemp = dtemp + dx(i)*dy(i) + dx(i + 1)*dy(i + 1) +
+-     *        dx(i + 2)*dy(i + 2) + dx(i + 3)*dy(i + 3) + 
+-     *        dx(i + 4)*dy(i + 4)
+- 50   continue
+- 60   ddot = dtemp
+-      return
+-      end
+-C---------------------------------------------------------------------------
+ 
+-      SUBROUTINE ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
++      SUBROUTINE I_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C     ***************************************************
+ C
+ C     THIS ROUTINE CALCULATES ERRORS USED IN TESTS
+-C     IN STIFF .
++C     IN I_STIFF .
+ C
+ C     ***************************************************
+ C     .. SCALAR ARGUMENTS ..
+@@ -1872,7 +1689,7 @@
+       END
+ C--------------------------------------------------------------------------
+ 
+-      SUBROUTINE PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)
++      SUBROUTINE I_PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C **********************************************************************
+@@ -1903,7 +1720,7 @@
+       END
+ C------------------------------------------------------------------------
+ 
+-      SUBROUTINE ITRAT2(QQQ,Y,YPRIME,N,T,HBETA,ERRBND,ARH,CRATE,TCRATE
++      SUBROUTINE I_ITRAT2(QQQ,Y,YPRIME,N,T,HBETA,ERRBND,ARH,CRATE,TCRATE
+      +     ,M,WORKED,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,NIND1,
+      +     NIND2,NIND3,IPIV,LMB,ITOL,RTOL,ATOL,IPAR,RPAR,HUSED,NBSOL,
+      +     NRE,NQUSED,RESID,IERR)
+@@ -1922,7 +1739,7 @@
+       INTEGER I
+ C     ..
+ C     .. EXTERNAL SUBROUTINES ..
+-      EXTERNAL SOL,DGBSL,RESID
++      EXTERNAL I_SOL,I_DGBSL,RESID
+ C     ..
+ C     .. INTRINSIC FUNCTIONS ..
+       INTRINSIC DMAX1,DMIN1
+@@ -1963,10 +1780,10 @@
+ C
+       call resid(n,t,y,save2,yprime,ipar,rpar,ierr)
+       IF(MF.GE.23) THEN
+-         CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE2,0)
++         CALL I_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE2,0)
+          NBSOL = NBSOL + 1
+       ELSE
+-         CALL SOL(N,N,PW,SAVE2,IPIV)
++         CALL I_SOL(N,N,PW,SAVE2,IPIV)
+          NBSOL = NBSOL + 1
+       ENDIF
+       D = ZERO
+@@ -1992,10 +1809,10 @@
+ C     IF WE ARE HERE THEN PARTIALS ARE O.K.
+ C
+       IF( MF.GE. 23) THEN
+-         CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE2,0)
++         CALL I_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE2,0)
+          NBSOL=NBSOL + 1
+       ELSE
+-         CALL SOL(N,N,PW,SAVE2,IPIV)
++         CALL I_SOL(N,N,PW,SAVE2,IPIV)
+          NBSOL = NBSOL + 1
+       ENDIF
+ C
+@@ -2043,7 +1860,7 @@
+       END
+ C--------------------------------------------------------------------------
+ 
+-      SUBROUTINE STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
++      SUBROUTINE I_STIFF(H,HMAX,HMIN,JSTART,KFLAG,MF,MBND,
+      +     NIND1,NIND2,NIND3,T,TOUT,TEND,Y,YPRIME,N,
+      +     YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,PWCOPY,YHOLD,
+      +     YNHOLD,ARH,IPIV,LOUT,MAXDER,ITOL,RTOL,ATOL,RPAR,IPAR,
+@@ -2052,13 +1869,13 @@
+ 
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C     ------------------------------------------------------------------
+-C     THE SUBROUTINE STIFF PERFORMS ONE STEP OF THE INTEGRATION OF AN
++C     THE SUBROUTINE I_STIFF PERFORMS ONE STEP OF THE INTEGRATION OF AN
+ C     INITIAL VALUE PROBLEM FOR A SYSTEM OF 
+ C     IMPLICIT DIFFERENTIAL ALGEBRAIC EQUATIONS.
+-C     COMMUNICATION WITH STIFF IS DONE WITH THE FOLLOWING VARIABLES..
++C     COMMUNICATION WITH I_STIFF IS DONE WITH THE FOLLOWING VARIABLES..
+ C     Y      AN N BY LMAX+3 ARRAY CONTAINING THE DEPENDENT VARIABLES
+ C              AND THEIR BACKWARD DIFFERENCES.  MAXDER (=LMAX-1) IS THE
+-C              MAXIMUM ORDER AVAILABLE.  SEE SUBROUTINE COSET.
++C              MAXIMUM ORDER AVAILABLE.  SEE SUBROUTINE I_COSET.
+ C              Y(I,J+1) CONTAINS THE JTH BACKWARD DIFFERENCE OF Y(I)
+ C     T      THE INDEPENDENT VARIABLE. T IS UPDATED ON EACH STEP TAKEN.
+ C     H      THE STEPSIZE TO BE ATTEMPTED ON THE NEXT STEP.
+@@ -2068,7 +1885,7 @@
+ C     HMIN   THE MINIMUM AND MAXIMUM ABSOLUTE VALUE OF THE STEPSIZE
+ C     HMAX   TO BE USED FOR THE STEP.  THESE MAY BE CHANGED AT ANY
+ C              TIME BUT WILL NOT TAKE EFFECT UNTIL THE NEXT H CHANGE.
+-C     RTOL,ATOL  THE ERROR BOUNDS. SEE DESCRIPTION IN OVDRIV.
++C     RTOL,ATOL  THE ERROR BOUNDS. SEE DESCRIPTION IN I_OVDRIV.
+ C     N      THE NUMBER OF FIRST ORDER DIFFERENTIAL EQUATIONS.
+ C     MF     THE METHOD FLAG.  MUST BE SET TO 21,22,23 OR 24 AT PRESENT
+ C     KFLAG  A COMPLETION FLAG WITH THE FOLLOWING MEANINGS..
+@@ -2103,7 +1920,7 @@
+ C                MATRIX WAS FORMED BY A NEW J.
+ C     AVOLDJ   STORES VALUE FOR AVERAGE CRATE WHEN ITERATION
+ C                MATRIX WAS FORMED BY AN OLD J.
+-C     NRENEW   FLAG THAT IS USED IN COMMUNICATION WITH SUBROUTINE PSET.
++C     NRENEW   FLAG THAT IS USED IN COMMUNICATION WITH SUBROUTINE I_PSET.
+ C                IF  NRENEW > 0  THEN FORM A NEW JACOBIAN BEFORE
+ C                                COMPUTING THE COEFFICIENT MATRIX FOR
+ C                                THE NEWTON-RAPHSON ITERATION
+@@ -2130,10 +1947,11 @@
+ C     ..
+ C     .. LOCAL ARRAYS ..
+       DIMENSION  EL(10),ELST(10),TQ(5)
++      DIMENSION  Y0(N)
+ C     ..
+ C     .. EXTERNAL SUBROUTINES ..
+-      EXTERNAL COSET,CPYARY,ERRORS,HCHOSE,ITRAT2,
+-     +         PRDICT,PSET,RSCALE,SOL,DGBSL,PDERV,RESID
++      EXTERNAL I_COSET,I_CPYARY,I_ERRORS,I_HCHOSE,I_ITRAT2,
++     +         I_PRDICT,I_PSET,I_RSCALE,I_SOL,I_DGBSL,PDERV,RESID
+ C     ..
+ C     .. INTRINSIC FUNCTIONS ..
+       INTRINSIC DABS,DMAX1,DMIN1
+@@ -2225,14 +2043,14 @@
+       HUSED = H
+ C     -----------------------------------------------------------------
+ C     IF THE CALLER HAS CHANGED N , THE CONSTANTS E, EDN, EUP
+-C     AND BND MUST BE RESET.  E IS A COMPARISON FOR ERRORS AT THE
++C     AND BND MUST BE RESET.  E IS A COMPARISON FOR I_ERRORS AT THE
+ C     CURRENT ORDER NQ.  EUP IS TO TEST FOR INCREASING THE ORDER,
+ C     EDN FOR DECREASING THE ORDER.  BND IS USED TO TEST FOR CONVERGENCE
+ C     OF THE CORRECTOR ITERATES.   IF THE CALLER HAS CHANGED H, Y MUST
+ C     BE RE-SCALED.  IF H IS CHANGED, IDOUB IS SET TO L+1 TO PREVENT
+ C     FURTHER CHANGES IN H FOR THAT MANY STEPS.
+ C     -----------------------------------------------------------------
+-      CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
++      CALL I_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
+       LMAX = MAXDER + 1
+       RC = RC*EL(1)/OLDLO
+       OLDLO = EL(1)
+@@ -2243,14 +2061,14 @@
+ C     NRENEW AND NEWPAR ARE TO INSTRUCT ROUTINE THAT
+ C     WE WISH A NEW J TO BE CALCULATED FOR THIS STEP.
+ C     *****************************************************
+-      CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
++      CALL I_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
+       DO 20 I = 1,N
+          ARH(I) = EL(2)*Y(I,1)
+  20   CONTINUE
+-      CALL CPYARY(N*L,Y,YHOLD)
++      CALL I_CPYARY(N*L,Y,YHOLD)
+       QI = H*EL(1)
+       QQ = ONE/QI
+-      CALL PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)      
++      CALL I_PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)      
+       IF(IERR.NE.0) THEN
+          H=H/2
+          IERR = 0
+@@ -2263,7 +2081,7 @@
+ C     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+ C     DIFFERENT PARAMETERS ON THIS CALL        <
+ C     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+- 30   CALL CPYARY(N*L,YHOLD,Y)
++ 30   CALL I_CPYARY(N*L,YHOLD,Y)
+       IF (MF.NE.MFOLD) THEN
+          METH = MF/10
+          MITER = MF - 10*METH
+@@ -2306,7 +2124,7 @@
+ C     *********************************************
+  40   RH = DMAX1(RH,HMIN/DABS(H))
+  50   RH = DMIN1(RH,HMAX/DABS(H),RMAX)
+-      CALL RSCALE(N,L,RH,Y)
++      CALL I_RSCALE(N,L,RH,Y)
+       RMAX = 10.0D+0
+       JCHANG = 1
+       H = H*RH
+@@ -2323,7 +2141,7 @@
+       END IF
+       
+       IDOUB = L + 1
+-      CALL CPYARY(N*L,Y,YHOLD)
++      CALL I_CPYARY(N*L,Y,YHOLD)
+       
+  60   IF (DABS(RC-ONE).GT.UPBND) IWEVAL = MITER
+       HUSED = H
+@@ -2348,7 +2166,7 @@
+       IF (JCHANG.EQ.1) THEN
+ C        IF WE HAVE CHANGED STEPSIZE THEN PREDICT A VALUE FOR Y(T+H)
+ C        AND EVALUATE THE DERIVATIVE THERE (STORED IN SAVE2())
+-         CALL PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)
++         CALL I_PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)
+          IF(IERR.NE.0) GOTO 8000
+          DO 95 I=1,N
+             YPRIME(I)=(Y(I,1)-ARH(I))/QI
+@@ -2371,7 +2189,7 @@
+ C -------------------------------------------------------------------
+ C     IF INDICATED, THE MATRIX P = I/(H*EL(2)) - J IS RE-EVALUATED BEFORE
+ C     STARTING THE CORRECTOR ITERATION.  IWEVAL IS SET = 0 TO INDICATE
+-C     THAT THIS HAS BEEN DONE. P IS COMPUTED AND PROCESSED IN PSET.
++C     THAT THIS HAS BEEN DONE. P IS COMPUTED AND PROCESSED IN I_PSET.
+ C     THE PROCESSED MATRIX IS STORED IN PW
+ C -------------------------------------------------------------------
+       IWEVAL = 0
+@@ -2436,14 +2254,14 @@
+       JSNOLD = 0
+       MQ1TMP = MEQC1
+       MQ2TMP = MEQC2      
+-      CALL PSET(Y,YPRIME,N,H,T,UROUND,EPSJAC,QI,MITER,MBND,
++      CALL I_PSET(Y,YPRIME,N,H,T,UROUND,EPSJAC,QI,MITER,MBND,
+      +   NIND1,NIND2,NIND3,IER,PDERV,RESID,NRENEW,YMAX,SAVE1,SAVE2,
+      +   SCALE,PW,PWCOPY,ERROR,IPIV,ITOL,RTOL,ATOL,NPSET,NJE,NRE,NDEC
+      +     ,IPAR,RPAR,IERR)
+       IF(IERR.NE.0) GOTO 8000
+       QQQ=QI
+ C
+-C     NOTE THAT ERROR() IS JUST BEING USED AS A WORKSPACE BY PSET
++C     NOTE THAT ERROR() IS JUST BEING USED AS A WORKSPACE BY I_PSET
+       IF (IER.NE.0) THEN
+ C     IF IER>0 THEN WE HAVE HAD A SINGULARITY IN THE ITERATION MATRIX
+          IJUS=1
+@@ -2467,14 +2285,14 @@
+ C     LOOP. THE UPDATED Y VECTOR IS STORED TEMPORARILY IN SAVE1.
+ C **********************************************************************
+       IF (.NOT.SAMPLE) THEN
+-         CALL ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,
++         CALL I_ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,
+      +        WORKED,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,
+      +        NIND1,NIND2,NIND3,IPIV,1,ITOL,RTOL,ATOL,IPAR,RPAR,
+      +        HUSED,NBSOL,NRE,NQUSED,resid,IERR)
+          IF(IERR.NE.0) GOTO 8000
+ 
+       ELSE
+-         CALL ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,
++         CALL I_ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE1,TCRAT1,M1,
+      +        WORKED,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,
+      +        NIND1,NIND2,NIND3,IPIV,0,ITOL,RTOL,ATOL,IPAR,RPAR,
+      +        HUSED,NBSOL,NRE,NQUSED,resid,IERR)
+@@ -2589,7 +2407,7 @@
+             ARH(I) = ARH(I) + EL(JP1)*Y(I,J1)
+  200     CONTINUE
+  210  CONTINUE
+-      CALL PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)      
++      CALL I_PRDICT(T,H,Y,L,N,IPAR,RPAR,IERR)      
+       IF(IERR.NE.0) GOTO 8000
+       DO 215 I=1,N
+          YPRIME(I)=(Y(I,1)-ARH(I))/QQQ
+@@ -2603,7 +2421,7 @@
+ C     FOR NOW WILL ASSUME THAT WE DO NOT WISH TO SAMPLE
+ C     AT THE N+2 STEP POINT
+ C
+-      CALL ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE2,TCRAT2,M2,
++      CALL I_ITRAT2(QQQ,Y,YPRIME,N,T,QI,BND,ARH,CRATE2,TCRAT2,M2,
+      +     WORKED,YMAX,ERROR,SAVE1,SAVE2,SCALE,PW,MF,MBND,
+      +     NIND1,NIND2,NIND3,IPIV,1,ITOL,RTOL,ATOL,IPAR,RPAR,
+      +     HUSED,NBSOL,NRE,NQUSED,resid,IERR)
+@@ -2661,10 +2479,10 @@
+       NRE=NRE+1
+ C
+       IF (MF.GE. 23) THEN
+-         CALL DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
++         CALL I_DGBSL(PW,MBND(4),N,MBND(1),MBND(2),IPIV,SAVE1,0)
+          NBSOL=NBSOL+1
+       ELSE
+-         CALL SOL(N,N,PW,SAVE1,IPIV)
++         CALL I_SOL(N,N,PW,SAVE1,IPIV)
+          NBSOL = NBSOL + 1
+       ENDIF
+       DO 321 I=1,N
+@@ -2758,7 +2576,7 @@
+       IF(NQ.GT.1) FFAIL = 0.5D+0/DBLE(FLOAT(NQ))
+       IF(NQ.GT.2) FRFAIL = 0.5D+0/DBLE(FLOAT(NQ-1))
+       EFAIL = 0.5D+0/DBLE(FLOAT(L))
+-      CALL CPYARY(N*L,YHOLD,Y)
++      CALL I_CPYARY(N*L,YHOLD,Y)
+       RMAX = 2.0D+0
+       IF (DABS(H).LE.HMIN*1.00001D+0) THEN
+ C
+@@ -2787,10 +2605,10 @@
+          NQ=NEWQ
+          RH=ONE/(PLFAIL*DBLE(FLOAT(-KFAIL)))
+          L=NQ+1
+-         CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
++         CALL I_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
+          RC=RC*EL(1)/OLDLO
+          OLDLO=EL(1)
+-         CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
++         CALL I_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
+       ELSE
+          NEWQ = NQ
+          RH = ONE/ (PRFAIL*DBLE(FLOAT(-KFAIL)))
+@@ -2816,7 +2634,7 @@
+ C     *********************************
+       JCHANG = 1
+       RH = DMAX1(HMIN/DABS(H),0.1D+0)
+-      CALL HCHOSE(RH,H,OVRIDE)
++      CALL I_HCHOSE(RH,H,OVRIDE)
+       H = H*RH
+       DO 350 I = 1,N
+          Y(I,1)     = YHOLD(I,1)
+@@ -2832,11 +2650,11 @@
+       NQ = 1
+       L = 2
+ C     RESET ORDER, RECALCULATE ERROR BOUNDS
+-      CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
++      CALL I_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
+       LMAX = MAXDER + 1
+       RC = RC*EL(1)/OLDLO
+       OLDLO = EL(1)
+-      CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
++      CALL I_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
+ C     NOW JUMP TO NORMAL CONTINUATION POINT
+       GO TO 60
+ C **********************************************************************
+@@ -3003,7 +2821,7 @@
+             GOTO 440
+          ENDIF
+          RH = DMIN1(RH,RMAX)
+-         CALL HCHOSE(RH,H,OVRIDE)
++         CALL I_HCHOSE(RH,H,OVRIDE)
+          IF ((JSINUP.LE.20).AND.(KFLAG.EQ.0).AND.(RH.LT.1.1D+0)) THEN
+ C           WE HAVE RUN INTO PROBLEMS
+             IDOUB = 10
+@@ -3031,16 +2849,16 @@
+             NQ = NEWQ
+             L = NQ + 1
+ C           RESET ORDER,RECALCULATE ERROR BOUNDS
+-            CALL COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
++            CALL I_COSET(NQ,EL,ELST,TQ,NCOSET,MAXORD)
+             LMAX = MAXDER + 1
+             RC = RC*EL(1)/OLDLO
+             OLDLO = EL(1)
+-            CALL ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
++            CALL I_ERRORS(N,TQ,EDN,E,EUP,BND,EDDN)
+          END IF
+          
+          RH = DMAX1(RH,HMIN/DABS(H))
+          RH = DMIN1(RH,HMAX/DABS(H),RMAX)
+-         CALL RSCALE(N,L,RH,Y)
++         CALL I_RSCALE(N,L,RH,Y)
+          RMAX = 10.0D+0
+          JCHANG = 1
+          H = H*RH
+@@ -3057,7 +2875,7 @@
+ C     INFORMATION NECESSARY TO PERFORM AN INTERPOLATION TO FIND THE
+ C     SOLUTION AT THE SPECIFIED OUTPUT POINT IF APPROPRIATE.
+ C ----------------------------------------------------------------------
+-      CALL CPYARY(N*L,Y,YHOLD)
++      CALL I_CPYARY(N*L,Y,YHOLD)
+       NSTEP = NSTEP + 1
+       JSINUP = JSINUP + 1
+       JSNOLD = JSNOLD + 1
+@@ -3112,7 +2930,7 @@
+          IF ((T-TOUT)*H.GE.0.0D+0) THEN
+ C           HAVE OVERSHOT TOUT
+             WRITE (LOUT,*) T,TOUT,H
+-            CALL INTERP(N,JSTART,H,T,Y,TOUT,Y0)
++            CALL I_INTERP(N,JSTART,H,T,Y,TOUT,Y0)
+             HO = H
+             T0 = TOUT
+             IDID = -5
+@@ -3123,7 +2941,7 @@
+          goto 30
+       endif
+ c
+-      IF(IJUS.EQ.0) CALL HCHOSE(RH,H,OVRIDE)
++      IF(IJUS.EQ.0) CALL I_HCHOSE(RH,H,OVRIDE)
+       IF(.NOT.FINISH) THEN
+          GO TO 40
+       ELSE
+@@ -3132,9 +2950,9 @@
+ 
+  9000 FORMAT (1X,' CORRECTOR HAS NOT CONVERGED')
+       END
+-C ------------------- END OF SUBROUTINE STIFF --------------------------
++C ------------------- END OF SUBROUTINE I_STIFF --------------------------
+ 
+-      SUBROUTINE RSCALE(N,L,RH,Y)
++      SUBROUTINE I_RSCALE(N,L,RH,Y)
+       
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C     .. SCALAR ARGUMENTS ..
+@@ -3246,7 +3064,7 @@
+       END
+ C---------------------------------------------------------------------------
+ 
+-      SUBROUTINE CPYARY(NELEM,SOURCE,TARGET)
++      SUBROUTINE I_CPYARY(NELEM,SOURCE,TARGET)
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+ C
+ C     COPIES THE ARRAY SOURCE() INTO THE ARRAY TARGET()
+@@ -3271,7 +3089,7 @@
+       END
+ C----------------------------------------------------------------------------
+ 
+-      SUBROUTINE HCHOSE(RH,H,OVRIDE)
++      SUBROUTINE I_HCHOSE(RH,H,OVRIDE)
+       IMPLICIT DOUBLE PRECISION(A-H,O-Z)
+       COMMON / STPSZE / HSTPSZ(2,14)
+       LOGICAL OVRIDE
+@@ -3306,953 +3124,3 @@
+       
+       RETURN
+       END      
+-C
+-C  ************************************************************
+-C
+-      DOUBLE PRECISION FUNCTION DLAMCH( CMACH )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      CHARACTER          CMACH
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMCH determines double precision machine parameters.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  CMACH   (input) CHARACTER*1
+-*          Specifies the value to be returned by DLAMCH:
+-*          = 'E' or 'e',   DLAMCH := eps
+-*          = 'S' or 's ,   DLAMCH := sfmin
+-*          = 'B' or 'b',   DLAMCH := base
+-*          = 'P' or 'p',   DLAMCH := eps*base
+-*          = 'N' or 'n',   DLAMCH := t
+-*          = 'R' or 'r',   DLAMCH := rnd
+-*          = 'M' or 'm',   DLAMCH := emin
+-*          = 'U' or 'u',   DLAMCH := rmin
+-*          = 'L' or 'l',   DLAMCH := emax
+-*          = 'O' or 'o',   DLAMCH := rmax
+-*
+-*          where
+-*
+-*          eps   = relative machine precision
+-*          sfmin = safe minimum, such that 1/sfmin does not overflow
+-*          base  = base of the machine
+-*          prec  = eps*base
+-*          t     = number of (base) digits in the mantissa
+-*          rnd   = 1.0 when rounding occurs in addition, 0.0 otherwise
+-*          emin  = minimum exponent before (gradual) underflow
+-*          rmin  = underflow threshold - base**(emin-1)
+-*          emax  = largest exponent before overflow
+-*          rmax  = overflow threshold  - (base**emax)*(1-eps)
+-*
+-* =====================================================================
+-*
+-*     .. Parameters ..
+-      DOUBLE PRECISION   ONE, ZERO
+-      PARAMETER          ( ONE = 1.0D+0, ZERO = 0.0D+0 )
+-*     ..
+-*     .. Local Scalars ..
+-      LOGICAL            FIRST, LRND
+-      INTEGER            BETA, IMAX, IMIN, IT
+-      DOUBLE PRECISION   BASE, EMAX, EMIN, EPS, PREC, RMACH, RMAX, RMIN,
+-     $                   RND, SFMIN, SMALL, T
+-*     ..
+-*     .. External Functions ..
+-      LOGICAL            LSAME
+-      EXTERNAL           LSAME
+-*     ..
+-*     .. External Subroutines ..
+-      EXTERNAL           DLAMC2
+-*     ..
+-*     .. Save statement ..
+-      SAVE               FIRST, EPS, SFMIN, BASE, T, RND, EMIN, RMIN,
+-     $                   EMAX, RMAX, PREC
+-*     ..
+-*     .. Data statements ..
+-      DATA               FIRST / .TRUE. /
+-*     ..
+-*     .. Executable Statements ..
+-*
+-      IF( FIRST ) THEN
+-         FIRST = .FALSE.
+-         CALL DLAMC2( BETA, IT, LRND, EPS, IMIN, RMIN, IMAX, RMAX )
+-         BASE = BETA
+-         T = IT
+-         IF( LRND ) THEN
+-            RND = ONE
+-            EPS = ( BASE**( 1-IT ) ) / 2
+-         ELSE
+-            RND = ZERO
+-            EPS = BASE**( 1-IT )
+-         END IF
+-         PREC = EPS*BASE
+-         EMIN = IMIN
+-         EMAX = IMAX
+-         SFMIN = RMIN
+-         SMALL = ONE / RMAX
+-         IF( SMALL.GE.SFMIN ) THEN
+-*
+-*           Use SMALL plus a bit, to avoid the possibility of rounding
+-*           causing overflow when computing  1/sfmin.
+-*
+-            SFMIN = SMALL*( ONE+EPS )
+-         END IF
+-      END IF
+-*
+-      IF( LSAME( CMACH, 'E' ) ) THEN
+-         RMACH = EPS
+-      ELSE IF( LSAME( CMACH, 'S' ) ) THEN
+-         RMACH = SFMIN
+-      ELSE IF( LSAME( CMACH, 'B' ) ) THEN
+-         RMACH = BASE
+-      ELSE IF( LSAME( CMACH, 'P' ) ) THEN
+-         RMACH = PREC
+-      ELSE IF( LSAME( CMACH, 'N' ) ) THEN
+-         RMACH = T
+-      ELSE IF( LSAME( CMACH, 'R' ) ) THEN
+-         RMACH = RND
+-      ELSE IF( LSAME( CMACH, 'M' ) ) THEN
+-         RMACH = EMIN
+-      ELSE IF( LSAME( CMACH, 'U' ) ) THEN
+-         RMACH = RMIN
+-      ELSE IF( LSAME( CMACH, 'L' ) ) THEN
+-         RMACH = EMAX
+-      ELSE IF( LSAME( CMACH, 'O' ) ) THEN
+-         RMACH = RMAX
+-      END IF
+-*
+-      DLAMCH = RMACH
+-      RETURN
+-*
+-*     End of DLAMCH
+-*
+-      END
+-*
+-************************************************************************
+-*
+-      SUBROUTINE DLAMC1( BETA, T, RND, IEEE1 )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      LOGICAL            IEEE1, RND
+-      INTEGER            BETA, T
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMC1 determines the machine parameters given by BETA, T, RND, and
+-*  IEEE1.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  BETA    (output) INTEGER
+-*          The base of the machine.
+-*
+-*  T       (output) INTEGER
+-*          The number of ( BETA ) digits in the mantissa.
+-*
+-*  RND     (output) LOGICAL
+-*          Specifies whether proper rounding  ( RND = .TRUE. )  or
+-*          chopping  ( RND = .FALSE. )  occurs in addition. This may not
+-*          be a reliable guide to the way in which the machine performs
+-*          its arithmetic.
+-*
+-*  IEEE1   (output) LOGICAL
+-*          Specifies whether rounding appears to be done in the IEEE
+-*          'round to nearest' style.
+-*
+-*  Further Details
+-*  ===============
+-*
+-*  The routine is based on the routine  ENVRON  by Malcolm and
+-*  incorporates suggestions by Gentleman and Marovich. See
+-*
+-*     Malcolm M. A. (1972) Algorithms to reveal properties of
+-*        floating-point arithmetic. Comms. of the ACM, 15, 949-951.
+-*
+-*     Gentleman W. M. and Marovich S. B. (1974) More on algorithms
+-*        that reveal properties of floating point arithmetic units.
+-*        Comms. of the ACM, 17, 276-277.
+-*
+-* =====================================================================
+-*
+-*     .. Local Scalars ..
+-      LOGICAL            FIRST, LIEEE1, LRND
+-      INTEGER            LBETA, LT
+-      DOUBLE PRECISION   A, B, C, F, ONE, QTR, SAVEC, T1, T2
+-*     ..
+-*     .. External Functions ..
+-      DOUBLE PRECISION   DLAMC3
+-      EXTERNAL           DLAMC3
+-*     ..
+-*     .. Save statement ..
+-      SAVE               FIRST, LIEEE1, LBETA, LRND, LT
+-*     ..
+-*     .. Data statements ..
+-      DATA               FIRST / .TRUE. /
+-*     ..
+-*     .. Executable Statements ..
+-*
+-      IF( FIRST ) THEN
+-         FIRST = .FALSE.
+-         ONE = 1
+-*
+-*        LBETA,  LIEEE1,  LT and  LRND  are the  local values  of  BETA,
+-*        IEEE1, T and RND.
+-*
+-*        Throughout this routine  we use the function  DLAMC3  to ensure
+-*        that relevant values are  stored and not held in registers,  or
+-*        are not affected by optimizers.
+-*
+-*        Compute  a = 2.0**m  with the  smallest positive integer m such
+-*        that
+-*
+-*           fl( a + 1.0 ) = a.
+-*
+-         A = 1
+-         C = 1
+-*
+-*+       WHILE( C.EQ.ONE )LOOP
+-   10    CONTINUE
+-         IF( C.EQ.ONE ) THEN
+-            A = 2*A
+-            C = DLAMC3( A, ONE )
+-            C = DLAMC3( C, -A )
+-            GO TO 10
+-         END IF
+-*+       END WHILE
+-*
+-*        Now compute  b = 2.0**m  with the smallest positive integer m
+-*        such that
+-*
+-*           fl( a + b ) .gt. a.
+-*
+-         B = 1
+-         C = DLAMC3( A, B )
+-*
+-*+       WHILE( C.EQ.A )LOOP
+-   20    CONTINUE
+-         IF( C.EQ.A ) THEN
+-            B = 2*B
+-            C = DLAMC3( A, B )
+-            GO TO 20
+-         END IF
+-*+       END WHILE
+-*
+-*        Now compute the base.  a and c  are neighbouring floating point
+-*        numbers  in the  interval  ( beta**t, beta**( t + 1 ) )  and so
+-*        their difference is beta. Adding 0.25 to c is to ensure that it
+-*        is truncated to beta and not ( beta - 1 ).
+-*
+-         QTR = ONE / 4
+-         SAVEC = C
+-         C = DLAMC3( C, -A )
+-         LBETA = C + QTR
+-*
+-*        Now determine whether rounding or chopping occurs,  by adding a
+-*        bit  less  than  beta/2  and a  bit  more  than  beta/2  to  a.
+-*
+-         B = LBETA
+-         F = DLAMC3( B / 2, -B / 100 )
+-         C = DLAMC3( F, A )
+-         IF( C.EQ.A ) THEN
+-            LRND = .TRUE.
+-         ELSE
+-            LRND = .FALSE.
+-         END IF
+-         F = DLAMC3( B / 2, B / 100 )
+-         C = DLAMC3( F, A )
+-         IF( ( LRND ) .AND. ( C.EQ.A ) )
+-     $      LRND = .FALSE.
+-*
+-*        Try and decide whether rounding is done in the  IEEE  'round to
+-*        nearest' style. B/2 is half a unit in the last place of the two
+-*        numbers A and SAVEC. Furthermore, A is even, i.e. has last  bit
+-*        zero, and SAVEC is odd. Thus adding B/2 to A should not  change
+-*        A, but adding B/2 to SAVEC should change SAVEC.
+-*
+-         T1 = DLAMC3( B / 2, A )
+-         T2 = DLAMC3( B / 2, SAVEC )
+-         LIEEE1 = ( T1.EQ.A ) .AND. ( T2.GT.SAVEC ) .AND. LRND
+-*
+-*        Now find  the  mantissa, t.  It should  be the  integer part of
+-*        log to the base beta of a,  however it is safer to determine  t
+-*        by powering.  So we find t as the smallest positive integer for
+-*        which
+-*
+-*           fl( beta**t + 1.0 ) = 1.0.
+-*
+-         LT = 0
+-         A = 1
+-         C = 1
+-*
+-*+       WHILE( C.EQ.ONE )LOOP
+-   30    CONTINUE
+-         IF( C.EQ.ONE ) THEN
+-            LT = LT + 1
+-            A = A*LBETA
+-            C = DLAMC3( A, ONE )
+-            C = DLAMC3( C, -A )
+-            GO TO 30
+-         END IF
+-*+       END WHILE
+-*
+-      END IF
+-*
+-      BETA = LBETA
+-      T = LT
+-      RND = LRND
+-      IEEE1 = LIEEE1
+-      RETURN
+-*
+-*     End of DLAMC1
+-*
+-      END
+-*
+-************************************************************************
+-*
+-      SUBROUTINE DLAMC2( BETA, T, RND, EPS, EMIN, RMIN, EMAX, RMAX )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      LOGICAL            RND
+-      INTEGER            BETA, EMAX, EMIN, T
+-      DOUBLE PRECISION   EPS, RMAX, RMIN
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMC2 determines the machine parameters specified in its argument
+-*  list.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  BETA    (output) INTEGER
+-*          The base of the machine.
+-*
+-*  T       (output) INTEGER
+-*          The number of ( BETA ) digits in the mantissa.
+-*
+-*  RND     (output) LOGICAL
+-*          Specifies whether proper rounding  ( RND = .TRUE. )  or
+-*          chopping  ( RND = .FALSE. )  occurs in addition. This may not
+-*          be a reliable guide to the way in which the machine performs
+-*          its arithmetic.
+-*
+-*  EPS     (output) DOUBLE PRECISION
+-*          The smallest positive number such that
+-*
+-*             fl( 1.0 - EPS ) .LT. 1.0,
+-*
+-*          where fl denotes the computed value.
+-*
+-*  EMIN    (output) INTEGER
+-*          The minimum exponent before (gradual) underflow occurs.
+-*
+-*  RMIN    (output) DOUBLE PRECISION
+-*          The smallest normalized number for the machine, given by
+-*          BASE**( EMIN - 1 ), where  BASE  is the floating point value
+-*          of BETA.
+-*
+-*  EMAX    (output) INTEGER
+-*          The maximum exponent before overflow occurs.
+-*
+-*  RMAX    (output) DOUBLE PRECISION
+-*          The largest positive number for the machine, given by
+-*          BASE**EMAX * ( 1 - EPS ), where  BASE  is the floating point
+-*          value of BETA.
+-*
+-*  Further Details
+-*  ===============
+-*
+-*  The computation of  EPS  is based on a routine PARANOIA by
+-*  W. Kahan of the University of California at Berkeley.
+-*
+-* =====================================================================
+-*
+-*     .. Local Scalars ..
+-      LOGICAL            FIRST, IEEE, IWARN, LIEEE1, LRND
+-      INTEGER            GNMIN, GPMIN, I, LBETA, LEMAX, LEMIN, LT,
+-     $                   NGNMIN, NGPMIN
+-      DOUBLE PRECISION   A, B, C, HALF, LEPS, LRMAX, LRMIN, ONE, RBASE,
+-     $                   SIXTH, SMALL, THIRD, TWO, ZERO
+-*     ..
+-*     .. External Functions ..
+-      DOUBLE PRECISION   DLAMC3
+-      EXTERNAL           DLAMC3
+-*     ..
+-*     .. External Subroutines ..
+-      EXTERNAL           DLAMC1, DLAMC4, DLAMC5
+-*     ..
+-*     .. Intrinsic Functions ..
+-      INTRINSIC          ABS, MAX, MIN
+-*     ..
+-*     .. Save statement ..
+-      SAVE               FIRST, IWARN, LBETA, LEMAX, LEMIN, LEPS, LRMAX,
+-     $                   LRMIN, LT
+-*     ..
+-*     .. Data statements ..
+-      DATA               FIRST / .TRUE. / , IWARN / .FALSE. /
+-*     ..
+-*     .. Executable Statements ..
+-*
+-      IF( FIRST ) THEN
+-         FIRST = .FALSE.
+-         ZERO = 0
+-         ONE = 1
+-         TWO = 2
+-*
+-*        LBETA, LT, LRND, LEPS, LEMIN and LRMIN  are the local values of
+-*        BETA, T, RND, EPS, EMIN and RMIN.
+-*
+-*        Throughout this routine  we use the function  DLAMC3  to ensure
+-*        that relevant values are stored  and not held in registers,  or
+-*        are not affected by optimizers.
+-*
+-*        DLAMC1 returns the parameters  LBETA, LT, LRND and LIEEE1.
+-*
+-         CALL DLAMC1( LBETA, LT, LRND, LIEEE1 )
+-*
+-*        Start to find EPS.
+-*
+-         B = LBETA
+-         A = B**( -LT )
+-         LEPS = A
+-*
+-*        Try some tricks to see whether or not this is the correct  EPS.
+-*
+-         B = TWO / 3
+-         HALF = ONE / 2
+-         SIXTH = DLAMC3( B, -HALF )
+-         THIRD = DLAMC3( SIXTH, SIXTH )
+-         B = DLAMC3( THIRD, -HALF )
+-         B = DLAMC3( B, SIXTH )
+-         B = ABS( B )
+-         IF( B.LT.LEPS )
+-     $      B = LEPS
+-*
+-         LEPS = 1
+-*
+-*+       WHILE( ( LEPS.GT.B ).AND.( B.GT.ZERO ) )LOOP
+-   10    CONTINUE
+-         IF( ( LEPS.GT.B ) .AND. ( B.GT.ZERO ) ) THEN
+-            LEPS = B
+-            C = DLAMC3( HALF*LEPS, ( TWO**5 )*( LEPS**2 ) )
+-            C = DLAMC3( HALF, -C )
+-            B = DLAMC3( HALF, C )
+-            C = DLAMC3( HALF, -B )
+-            B = DLAMC3( HALF, C )
+-            GO TO 10
+-         END IF
+-*+       END WHILE
+-*
+-         IF( A.LT.LEPS )
+-     $      LEPS = A
+-*
+-*        Computation of EPS complete.
+-*
+-*        Now find  EMIN.  Let A = + or - 1, and + or - (1 + BASE**(-3)).
+-*        Keep dividing  A by BETA until (gradual) underflow occurs. This
+-*        is detected when we cannot recover the previous A.
+-*
+-         RBASE = ONE / LBETA
+-         SMALL = ONE
+-         DO 20 I = 1, 3
+-            SMALL = DLAMC3( SMALL*RBASE, ZERO )
+-   20    CONTINUE
+-         A = DLAMC3( ONE, SMALL )
+-         CALL DLAMC4( NGPMIN, ONE, LBETA )
+-         CALL DLAMC4( NGNMIN, -ONE, LBETA )
+-         CALL DLAMC4( GPMIN, A, LBETA )
+-         CALL DLAMC4( GNMIN, -A, LBETA )
+-         IEEE = .FALSE.
+-*
+-         IF( ( NGPMIN.EQ.NGNMIN ) .AND. ( GPMIN.EQ.GNMIN ) ) THEN
+-            IF( NGPMIN.EQ.GPMIN ) THEN
+-               LEMIN = NGPMIN
+-*            ( Non twos-complement machines, no gradual underflow;
+-*              e.g.,  VAX )
+-            ELSE IF( ( GPMIN-NGPMIN ).EQ.3 ) THEN
+-               LEMIN = NGPMIN - 1 + LT
+-               IEEE = .TRUE.
+-*            ( Non twos-complement machines, with gradual underflow;
+-*              e.g., IEEE standard followers )
+-            ELSE
+-               LEMIN = MIN( NGPMIN, GPMIN )
+-*            ( A guess; no known machine )
+-               IWARN = .TRUE.
+-            END IF
+-*
+-         ELSE IF( ( NGPMIN.EQ.GPMIN ) .AND. ( NGNMIN.EQ.GNMIN ) ) THEN
+-            IF( ABS( NGPMIN-NGNMIN ).EQ.1 ) THEN
+-               LEMIN = MAX( NGPMIN, NGNMIN )
+-*            ( Twos-complement machines, no gradual underflow;
+-*              e.g., CYBER 205 )
+-            ELSE
+-               LEMIN = MIN( NGPMIN, NGNMIN )
+-*            ( A guess; no known machine )
+-               IWARN = .TRUE.
+-            END IF
+-*
+-         ELSE IF( ( ABS( NGPMIN-NGNMIN ).EQ.1 ) .AND.
+-     $            ( GPMIN.EQ.GNMIN ) ) THEN
+-            IF( ( GPMIN-MIN( NGPMIN, NGNMIN ) ).EQ.3 ) THEN
+-               LEMIN = MAX( NGPMIN, NGNMIN ) - 1 + LT
+-*            ( Twos-complement machines with gradual underflow;
+-*              no known machine )
+-            ELSE
+-               LEMIN = MIN( NGPMIN, NGNMIN )
+-*            ( A guess; no known machine )
+-               IWARN = .TRUE.
+-            END IF
+-*
+-         ELSE
+-            LEMIN = MIN( NGPMIN, NGNMIN, GPMIN, GNMIN )
+-*         ( A guess; no known machine )
+-            IWARN = .TRUE.
+-         END IF
+-***
+-* Comment out this if block if EMIN is ok
+-         IF( IWARN ) THEN
+-            FIRST = .TRUE.
+-            WRITE( 6, FMT = 9999 )LEMIN
+-         END IF
+-***
+-*
+-*        Assume IEEE arithmetic if we found denormalised  numbers above,
+-*        or if arithmetic seems to round in the  IEEE style,  determined
+-*        in routine DLAMC1. A true IEEE machine should have both  things
+-*        true; however, faulty machines may have one or the other.
+-*
+-         IEEE = IEEE .OR. LIEEE1
+-*
+-*        Compute  RMIN by successive division by  BETA. We could compute
+-*        RMIN as BASE**( EMIN - 1 ),  but some machines underflow during
+-*        this computation.
+-*
+-         LRMIN = 1
+-         DO 30 I = 1, 1 - LEMIN
+-            LRMIN = DLAMC3( LRMIN*RBASE, ZERO )
+-   30    CONTINUE
+-*
+-*        Finally, call DLAMC5 to compute EMAX and RMAX.
+-*
+-         CALL DLAMC5( LBETA, LT, LEMIN, IEEE, LEMAX, LRMAX )
+-      END IF
+-*
+-      BETA = LBETA
+-      T = LT
+-      RND = LRND
+-      EPS = LEPS
+-      EMIN = LEMIN
+-      RMIN = LRMIN
+-      EMAX = LEMAX
+-      RMAX = LRMAX
+-*
+-      RETURN
+-*
+- 9999 FORMAT( / / ' WARNING. The value EMIN may be incorrect:-',
+-     $      '  EMIN = ', I8, /
+-     $      ' If, after inspection, the value EMIN looks',
+-     $      ' acceptable please comment out ',
+-     $      / ' the IF block as marked within the code of routine',
+-     $      ' DLAMC2,', / ' otherwise supply EMIN explicitly.', / )
+-*
+-*     End of DLAMC2
+-*
+-      END
+-*
+-************************************************************************
+-*
+-      DOUBLE PRECISION FUNCTION DLAMC3( A, B )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      DOUBLE PRECISION   A, B
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMC3  is intended to force  A  and  B  to be stored prior to doing
+-*  the addition of  A  and  B ,  for use in situations where optimizers
+-*  might hold one of these in a register.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  A, B    (input) DOUBLE PRECISION
+-*          The values A and B.
+-*
+-* =====================================================================
+-*
+-*     .. Executable Statements ..
+-*
+-      DLAMC3 = A + B
+-*
+-      RETURN
+-*
+-*     End of DLAMC3
+-*
+-      END
+-*
+-************************************************************************
+-*
+-      SUBROUTINE DLAMC4( EMIN, START, BASE )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      INTEGER            BASE, EMIN
+-      DOUBLE PRECISION   START
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMC4 is a service routine for DLAMC2.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  EMIN    (output) EMIN
+-*          The minimum exponent before (gradual) underflow, computed by
+-*          setting A = START and dividing by BASE until the previous A
+-*          can not be recovered.
+-*
+-*  START   (input) DOUBLE PRECISION
+-*          The starting point for determining EMIN.
+-*
+-*  BASE    (input) INTEGER
+-*          The base of the machine.
+-*
+-* =====================================================================
+-*
+-*     .. Local Scalars ..
+-      INTEGER            I
+-      DOUBLE PRECISION   A, B1, B2, C1, C2, D1, D2, ONE, RBASE, ZERO
+-*     ..
+-*     .. External Functions ..
+-      DOUBLE PRECISION   DLAMC3
+-      EXTERNAL           DLAMC3
+-*     ..
+-*     .. Executable Statements ..
+-*
+-      A = START
+-      ONE = 1
+-      RBASE = ONE / BASE
+-      ZERO = 0
+-      EMIN = 1
+-      B1 = DLAMC3( A*RBASE, ZERO )
+-      C1 = A
+-      C2 = A
+-      D1 = A
+-      D2 = A
+-*+    WHILE( ( C1.EQ.A ).AND.( C2.EQ.A ).AND.
+-*    $       ( D1.EQ.A ).AND.( D2.EQ.A )      )LOOP
+-   10 CONTINUE
+-      IF( ( C1.EQ.A ) .AND. ( C2.EQ.A ) .AND. ( D1.EQ.A ) .AND.
+-     $    ( D2.EQ.A ) ) THEN
+-         EMIN = EMIN - 1
+-         A = B1
+-         B1 = DLAMC3( A / BASE, ZERO )
+-         C1 = DLAMC3( B1*BASE, ZERO )
+-         D1 = ZERO
+-         DO 20 I = 1, BASE
+-            D1 = D1 + B1
+-   20    CONTINUE
+-         B2 = DLAMC3( A*RBASE, ZERO )
+-         C2 = DLAMC3( B2 / RBASE, ZERO )
+-         D2 = ZERO
+-         DO 30 I = 1, BASE
+-            D2 = D2 + B2
+-   30    CONTINUE
+-         GO TO 10
+-      END IF
+-*+    END WHILE
+-*
+-      RETURN
+-*
+-*     End of DLAMC4
+-*
+-      END
+-*
+-************************************************************************
+-*
+-      SUBROUTINE DLAMC5( BETA, P, EMIN, IEEE, EMAX, RMAX )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     October 31, 1992
+-*
+-*     .. Scalar Arguments ..
+-      LOGICAL            IEEE
+-      INTEGER            BETA, EMAX, EMIN, P
+-      DOUBLE PRECISION   RMAX
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  DLAMC5 attempts to compute RMAX, the largest machine floating-point
+-*  number, without overflow.  It assumes that EMAX + abs(EMIN) sum
+-*  approximately to a power of 2.  It will fail on machines where this
+-*  assumption does not hold, for example, the Cyber 205 (EMIN = -28625,
+-*  EMAX = 28718).  It will also fail if the value supplied for EMIN is
+-*  too large (i.e. too close to zero), probably with overflow.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  BETA    (input) INTEGER
+-*          The base of floating-point arithmetic.
+-*
+-*  P       (input) INTEGER
+-*          The number of base BETA digits in the mantissa of a
+-*          floating-point value.
+-*
+-*  EMIN    (input) INTEGER
+-*          The minimum exponent before (gradual) underflow.
+-*
+-*  IEEE    (input) LOGICAL
+-*          A logical flag specifying whether or not the arithmetic
+-*          system is thought to comply with the IEEE standard.
+-*
+-*  EMAX    (output) INTEGER
+-*          The largest exponent before overflow
+-*
+-*  RMAX    (output) DOUBLE PRECISION
+-*          The largest machine floating-point number.
+-*
+-* =====================================================================
+-*
+-*     .. Parameters ..
+-      DOUBLE PRECISION   ZERO, ONE
+-      PARAMETER          ( ZERO = 0.0D0, ONE = 1.0D0 )
+-*     ..
+-*     .. Local Scalars ..
+-      INTEGER            EXBITS, EXPSUM, I, LEXP, NBITS, TRY, UEXP
+-      DOUBLE PRECISION   OLDY, RECBAS, Y, Z
+-*     ..
+-*     .. External Functions ..
+-      DOUBLE PRECISION   DLAMC3
+-      EXTERNAL           DLAMC3
+-*     ..
+-*     .. Intrinsic Functions ..
+-      INTRINSIC          MOD
+-*     ..
+-*     .. Executable Statements ..
+-*
+-*     First compute LEXP and UEXP, two powers of 2 that bound
+-*     abs(EMIN). We then assume that EMAX + abs(EMIN) will sum
+-*     approximately to the bound that is closest to abs(EMIN).
+-*     (EMAX is the exponent of the required number RMAX).
+-*
+-      LEXP = 1
+-      EXBITS = 1
+-   10 CONTINUE
+-      TRY = LEXP*2
+-      IF( TRY.LE.( -EMIN ) ) THEN
+-         LEXP = TRY
+-         EXBITS = EXBITS + 1
+-         GO TO 10
+-      END IF
+-      IF( LEXP.EQ.-EMIN ) THEN
+-         UEXP = LEXP
+-      ELSE
+-         UEXP = TRY
+-         EXBITS = EXBITS + 1
+-      END IF
+-*
+-*     Now -LEXP is less than or equal to EMIN, and -UEXP is greater
+-*     than or equal to EMIN. EXBITS is the number of bits needed to
+-*     store the exponent.
+-*
+-      IF( ( UEXP+EMIN ).GT.( -LEXP-EMIN ) ) THEN
+-         EXPSUM = 2*LEXP
+-      ELSE
+-         EXPSUM = 2*UEXP
+-      END IF
+-*
+-*     EXPSUM is the exponent range, approximately equal to
+-*     EMAX - EMIN + 1 .
+-*
+-      EMAX = EXPSUM + EMIN - 1
+-      NBITS = 1 + EXBITS + P
+-*
+-*     NBITS is the total number of bits needed to store a
+-*     floating-point number.
+-*
+-      IF( ( MOD( NBITS, 2 ).EQ.1 ) .AND. ( BETA.EQ.2 ) ) THEN
+-*
+-*        Either there are an odd number of bits used to store a
+-*        floating-point number, which is unlikely, or some bits are
+-*        not used in the representation of numbers, which is possible,
+-*        (e.g. Cray machines) or the mantissa has an implicit bit,
+-*        (e.g. IEEE machines, Dec Vax machines), which is perhaps the
+-*        most likely. We have to assume the last alternative.
+-*        If this is true, then we need to reduce EMAX by one because
+-*        there must be some way of representing zero in an implicit-bit
+-*        system. On machines like Cray, we are reducing EMAX by one
+-*        unnecessarily.
+-*
+-         EMAX = EMAX - 1
+-      END IF
+-*
+-      IF( IEEE ) THEN
+-*
+-*        Assume we are on an IEEE machine which reserves one exponent
+-*        for infinity and NaN.
+-*
+-         EMAX = EMAX - 1
+-      END IF
+-*
+-*     Now create RMAX, the largest machine number, which should
+-*     be equal to (1.0 - BETA**(-P)) * BETA**EMAX .
+-*
+-*     First compute 1.0 - BETA**(-P), being careful that the
+-*     result is less than 1.0 .
+-*
+-      RECBAS = ONE / BETA
+-      Z = BETA - ONE
+-      Y = ZERO
+-      DO 20 I = 1, P
+-         Z = Z*RECBAS
+-         IF( Y.LT.ONE )
+-     $      OLDY = Y
+-         Y = DLAMC3( Y, Z )
+-   20 CONTINUE
+-      IF( Y.GE.ONE )
+-     $   Y = OLDY
+-*
+-*     Now multiply by BETA**EMAX to get RMAX.
+-*
+-      DO 30 I = 1, EMAX
+-         Y = DLAMC3( Y*BETA, ZERO )
+-   30 CONTINUE
+-*
+-      RMAX = Y
+-      RETURN
+-*
+-*     End of DLAMC5
+-*
+-      END
+-      LOGICAL          FUNCTION LSAME( CA, CB )
+-*
+-*  -- LAPACK auxiliary routine (version 2.0) --
+-*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
+-*     Courant Institute, Argonne National Lab, and Rice University
+-*     September 30, 1994
+-*
+-*     .. Scalar Arguments ..
+-      CHARACTER          CA, CB
+-*     ..
+-*
+-*  Purpose
+-*  =======
+-*
+-*  LSAME returns .TRUE. if CA is the same letter as CB regardless of
+-*  case.
+-*
+-*  Arguments
+-*  =========
+-*
+-*  CA      (input) CHARACTER*1
+-*  CB      (input) CHARACTER*1
+-*          CA and CB specify the single characters to be compared.
+-*
+-* =====================================================================
+-*
+-*     .. Intrinsic Functions ..
+-      INTRINSIC          ICHAR
+-*     ..
+-*     .. Local Scalars ..
+-      INTEGER            INTA, INTB, ZCODE
+-*     ..
+-*     .. Executable Statements ..
+-*
+-*     Test if the characters are equal
+-*
+-      LSAME = CA.EQ.CB
+-      IF( LSAME )
+-     $   RETURN
+-*
+-*     Now test for equivalence if both characters are alphabetic.
+-*
+-      ZCODE = ICHAR( 'Z' )
+-*
+-*     Use 'Z' rather than 'A' so that ASCII can be detected on Prime
+-*     machines, on which ICHAR returns a value with bit 8 set.
+-*     ICHAR('A') on Prime machines returns 193 which is the same as
+-*     ICHAR('A') on an EBCDIC machine.
+-*
+-      INTA = ICHAR( CA )
+-      INTB = ICHAR( CB )
+-*
+-      IF( ZCODE.EQ.90 .OR. ZCODE.EQ.122 ) THEN
+-*
+-*        ASCII is assumed - ZCODE is the ASCII code of either lower or
+-*        upper case 'Z'.
+-*
+-         IF( INTA.GE.97 .AND. INTA.LE.122 ) INTA = INTA - 32
+-         IF( INTB.GE.97 .AND. INTB.LE.122 ) INTB = INTB - 32
+-*
+-      ELSE IF( ZCODE.EQ.233 .OR. ZCODE.EQ.169 ) THEN
+-*
+-*        EBCDIC is assumed - ZCODE is the EBCDIC code of either lower or
+-*        upper case 'Z'.
+-*
+-         IF( INTA.GE.129 .AND. INTA.LE.137 .OR.
+-     $       INTA.GE.145 .AND. INTA.LE.153 .OR.
+-     $       INTA.GE.162 .AND. INTA.LE.169 ) INTA = INTA + 64
+-         IF( INTB.GE.129 .AND. INTB.LE.137 .OR.
+-     $       INTB.GE.145 .AND. INTB.LE.153 .OR.
+-     $       INTB.GE.162 .AND. INTB.LE.169 ) INTB = INTB + 64
+-*
+-      ELSE IF( ZCODE.EQ.218 .OR. ZCODE.EQ.250 ) THEN
+-*
+-*        ASCII is assumed, on Prime machines - ZCODE is the ASCII code
+-*        plus 128 of either lower or upper case 'Z'.
+-*
+-         IF( INTA.GE.225 .AND. INTA.LE.250 ) INTA = INTA - 32
+-         IF( INTB.GE.225 .AND. INTB.LE.250 ) INTB = INTB - 32
+-      END IF
+-      LSAME = INTA.EQ.INTB
+-*
+-*     RETURN
+-*
+-*     End of LSAME
+-*
+-      END
+-
+-C----------------------------------------------------------------------------
+-
diff --git a/src/configure b/src/configure
deleted file mode 100755
index 08faf6d..0000000
--- a/src/configure
+++ /dev/null
@@ -1,4123 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
-$0: including any error possibly output before this
-$0: message. Then install a modern shell, or manually run
-$0: the script under such a shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-PACKAGE_URL=
-
-ac_unique_file="configure.base"
-ac_subst_vars='LTLIBOBJS
-LIBOBJS
-STRIP
-COPY_FLAGS
-RANLIB
-LN_S
-SHLEXT
-canonical_host_type
-OCTAVE_VERSION
-OCTAVE
-CXXPICFLAG
-CXXFLAGS
-CXX
-FPICFLAG
-FFLAGS
-F77
-CPICFLAG
-altopath
-altmpath
-altpath
-xpath
-opath
-mpath
-subver
-ver
-MKOCTFILE
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-TOPDIR
-VERSION
-PACKAGE
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-with_path
-with_mpath
-with_opath
-with_xpath
-with_altpath
-with_altmpath
-with_altopath
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures this package to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-
-  cat <<\_ACEOF
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-path             install path prefix
-  --with-mpath            override path for m-files
-  --with-opath            override path for oct-files
-  --with-xpath            override path for executables
-  --with-altpath          alternative functions install path prefix
-  --with-altmpath         override path for alternative m-files
-  --with-altopath         override path for alternative oct-files
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to the package provider.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-configure
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by $as_me, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-PACKAGE=octave-forge
-MAJOR_VERSION=0
-MINOR_VERSION=1
-PATCH_LEVEL=0
-
-
-
-VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
-
-
-
-TOPDIR=`pwd`
-
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-# Extract the first word of "mkoctfile", so it can be a program name with args.
-set dummy mkoctfile; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MKOCTFILE+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$MKOCTFILE"; then
-  ac_cv_prog_MKOCTFILE="$MKOCTFILE" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_MKOCTFILE="mkoctfile"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-MKOCTFILE=$ac_cv_prog_MKOCTFILE
-if test -n "$MKOCTFILE"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKOCTFILE" >&5
-$as_echo "$MKOCTFILE" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-test -z "$MKOCTFILE" &&	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no mkoctfile found on path" >&5
-$as_echo "$as_me: WARNING: no mkoctfile found on path" >&2;}
-
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-path was given.
-if test "${with_path+set}" = set; then :
-  withval=$with_path;  path=$withval
-fi
-
-
-# Check whether --with-mpath was given.
-if test "${with_mpath+set}" = set; then :
-  withval=$with_mpath; mpath=$withval
-fi
-
-
-# Check whether --with-opath was given.
-if test "${with_opath+set}" = set; then :
-  withval=$with_opath; opath=$withval
-fi
-
-
-# Check whether --with-xpath was given.
-if test "${with_xpath+set}" = set; then :
-  withval=$with_xpath; xpath=$withval
-fi
-
-
-# Check whether --with-altpath was given.
-if test "${with_altpath+set}" = set; then :
-  withval=$with_altpath;  altpath=$withval
-fi
-
-
-# Check whether --with-altmpath was given.
-if test "${with_altmpath+set}" = set; then :
-  withval=$with_altmpath; altmpath=$withval
-fi
-
-
-# Check whether --with-altopath was given.
-if test "${with_altopath+set}" = set; then :
-  withval=$with_altopath; altopath=$withval
-fi
-
-
-if test -n "$path" ; then
-   test -z "$mpath" && mpath=$path
-   test -z "$opath" && opath=$path/oct
-   test -z "$xpath" && xpath=$path/bin
-   test -z "$altpath" && altpath=$path-alternatives
-fi
-
-if test -n "$altpath" ; then
-   test -z "$altmpath" && altmpath=$altpath
-   test -z "$altopath" && altopath=$altpath/oct
-fi
-
-#if test -z "$mpath" || test -z "$opath" || test -z "$xpath" || test -z "$altmpath" || test -z "$altopath" || test -z "$ver" ; then
-if test -z "$mpath" || test -z "$opath" || test -z "$xpath" || test -z "$ver" ; then
-      cat > conftest.cc <<EOF
-#include <octave/config.h>
-#include <octave/version.h>
-#include <octave/defaults.h>
-
-#define INFOV "\nINFOV=" OCTAVE_VERSION "\n"
-
-#define INFOH "\nINFOH=" OCTAVE_CANONICAL_HOST_TYPE "\n"
-
-#ifdef OCTAVE_LOCALVERFCNFILEDIR
-# define INFOM "\nINFOM=" OCTAVE_LOCALVERFCNFILEDIR "\n"
-#else
-# define INFOM "\nINFOM=" OCTAVE_LOCALFCNFILEPATH "\n"
-#endif
-
-#ifdef OCTAVE_LOCALVEROCTFILEDIR
-# define INFOO "\nINFOO=" OCTAVE_LOCALVEROCTFILEDIR "\n"
-#else
-# define INFOO "\nINFOO=" OCTAVE_LOCALOCTFILEPATH  "\n"
-#endif
-
-#ifdef OCTAVE_LOCALVERARCHLIBDIR
-# define INFOX "\nINFOX=" OCTAVE_LOCALVERARCHLIBDIR  "\n"
-#else
-# define INFOX "\nINFOX=" OCTAVE_LOCALARCHLIBDIR  "\n"
-#endif
-
-const char *infom = INFOM;
-const char *infoo = INFOO;
-const char *infox = INFOX;
-const char *infoh = INFOH;
-const char *infov = INFOV;
-EOF
-
-      $MKOCTFILE conftest.cc || as_fn_error $? "Could not run $MKOCTFILE" "$LINENO" 5
-
-      eval `strings conftest.o | grep "^INFO.=" | sed -e "s,//.*$,,"`
-   rm -rf conftest*
-
-      ver=`echo $INFOV | sed -e "s/\.//" -e "s/\..*$//"`
-   subver=`echo $INFOV | sed -e "s/^[^.]*[.][^.]*[.]//"`
-   alt_mbase=`echo $INFOM | sed -e "s,\/[^\/]*$,,"`
-   alt_obase=`echo $INFOO | sed -e "s,/site.*$,/site,"`
-   test -z "$mpath" && mpath=$INFOM/octave-forge
-   test -z "$opath" && opath=$INFOO/octave-forge
-   test -z "$xpath" && xpath=$INFOX
-   test -z "$altmpath" && altmpath=$alt_mbase/octave-forge-alternatives/m
-   test -z "$altopath" && altopath=$alt_obase/octave-forge-alternatives/oct/$INFOH
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: retrieving compile and link flags from $MKOCTFILE" >&5
-$as_echo "retrieving compile and link flags from $MKOCTFILE" >&6; }
-CC=`$MKOCTFILE -p CC`
-CFLAGS=`$MKOCTFILE -p CFLAGS`
-CPPFLAGS=`$MKOCTFILE -p CPPFLAGS`
-CPICFLAG=`$MKOCTFILE -p CPICFLAG`
-LDFLAGS=`$MKOCTFILE -p LDFLAGS`
-LIBS=`$MKOCTFILE -p LIBS`
-
-
-
-
-
-F77=`$MKOCTFILE -p F77`
-FFLAGS=`$MKOCTFILE -p FFLAGS`
-FPICFLAG=`$MKOCTFILE -p FPICFLAG`
-
-
-
-
-CXX=`$MKOCTFILE -p CXX`
-CXXFLAGS=`$MKOCTFILE -p CXXFLAGS`
-CXXPICFLAG=`$MKOCTFILE -p CXXPICFLAG`
-
-
-
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for F77_FUNC" >&5
-$as_echo_n "checking for F77_FUNC... " >&6; }
-cat > conftest.cc << EOF
-#include <octave/config.h>
-int F77_FUNC (hello, HELLO) (const int &n);
-EOF
-ac_try="$MKOCTFILE -c conftest.cc"
-if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } ; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-   MKOCTFILE="$MKOCTFILE -DF77_FUNC=F77_FCN"
-fi
-
-
-
-
-
-
-
-# Extract the first word of "octave", so it can be a program name with args.
-set dummy octave; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OCTAVE+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OCTAVE"; then
-  ac_cv_prog_OCTAVE="$OCTAVE" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OCTAVE="octave"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OCTAVE=$ac_cv_prog_OCTAVE
-if test -n "$OCTAVE"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCTAVE" >&5
-$as_echo "$OCTAVE" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OCTAVE_VERSION in Octave" >&5
-$as_echo_n "checking for OCTAVE_VERSION in Octave... " >&6; }
-OCTAVE_VERSION=`echo "disp(OCTAVE_VERSION)" | $OCTAVE -qf`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $OCTAVE_VERSION" >&5
-$as_echo "$OCTAVE_VERSION" >&6; }
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for octave_config_info('canonical_host_type') in Octave" >&5
-$as_echo_n "checking for octave_config_info('canonical_host_type') in Octave... " >&6; }
-canonical_host_type=`echo "disp(octave_config_info('canonical_host_type'))" | $OCTAVE -qf`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $canonical_host_type" >&5
-$as_echo "$canonical_host_type" >&6; }
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for octave_config_info('SHLEXT') in Octave" >&5
-$as_echo_n "checking for octave_config_info('SHLEXT') in Octave... " >&6; }
-SHLEXT=`echo "disp(octave_config_info('SHLEXT'))" | $OCTAVE -qf`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLEXT" >&5
-$as_echo "$SHLEXT" >&6; }
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-
-COPY_FLAGS="-Rfp"
-case "$canonical_host_type" in
-    *-*-linux*)
-        COPY_FLAGS="-fdp"
-    ;;
-esac
-
-
-STRIP=${STRIP-strip}
-# Extract the first word of "$STRIP", so it can be a program name with args.
-set dummy $STRIP; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="$STRIP"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  test -z "$ac_cv_prog_STRIP" && ac_cv_prog_STRIP=":"
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-case "$canonical_host_type" in
-    powerpc-apple-darwin*|*-sgi-*)
-	STRIP=:
-    ;;
-    *-cygwin-*|*-mingw-*)
-	MKOCTFILE="$MKOCTFILE -s"
-    ;;
-esac
-
-
-CONFIGURE_OUTPUTS="Makeconf"
-STATUS_MSG="
-octave commands will install into the following directories:
-   m-files:   $mpath
-   oct-files: $opath
-   binaries:  $xpath
-alternatives:
-   m-files:   $altmpath
-   oct-files: $altopath
-
-shell commands will install into the following directories:
-   binaries:  $bindir
-   man pages: $mandir
-   libraries: $libdir
-   headers:   $includedir
-
-octave-forge is configured with
-   octave:      $OCTAVE (version $OCTAVE_VERSION)
-   mkoctfile:	$MKOCTFILE for Octave $subver"
-  ac_config_files="$ac_config_files $CONFIGURE_OUTPUTS"
-
-
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-#
-# If the first sed substitution is executed (which looks for macros that
-# take arguments), then branch to the quote section.  Otherwise,
-# look for a macro that doesn't take arguments.
-ac_script='
-:mline
-/\\$/{
- N
- s,\\\n,,
- b mline
-}
-t clear
-:clear
-s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
-t quote
-s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)/-D\1=\2/g
-t quote
-b any
-:quote
-s/[	 `~#$^&*(){}\\|;'\''"<>?]/\\&/g
-s/\[/\\&/g
-s/\]/\\&/g
-s/\$/$$/g
-H
-:any
-${
-	g
-	s/^\n//
-	s/\n/ /g
-	p
-}
-'
-DEFS=`sed -n "$ac_script" confdefs.h`
-
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by $as_me, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-
-Configuration files:
-$config_files
-
-Report bugs to the package provider."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h |  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "$CONFIGURE_OUTPUTS") CONFIG_FILES="$CONFIG_FILES $CONFIGURE_OUTPUTS" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-
-eval set X "  :F $CONFIG_FILES      "
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-
-
-
-  esac
-
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-
-  echo " "
-  echo "  \"\$prefix\" is $prefix"
-  echo "  \"\$exec_prefix\" is $exec_prefix"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STATUS_MSG
-
-find . -name NOINSTALL -print    # shows which toolboxes won't be installed
-" >&5
-$as_echo "$STATUS_MSG
-
-find . -name NOINSTALL -print    # shows which toolboxes won't be installed
-" >&6; }
diff --git a/src/configure.base b/src/configure.base
deleted file mode 100644
index d3069df..0000000
--- a/src/configure.base
+++ /dev/null
@@ -1,319 +0,0 @@
-dnl The configure script is generated by autogen.sh from configure.base 
-dnl and the various configure.add files in the source tree.  Edit 
-dnl configure.base and reprocess rather than modifying ./configure.
-
-dnl autoconf 2.13 certainly doesn't work! What is the minimum requirement?
-AC_PREREQ(2.2)
-
-AC_INIT(configure.base)
-
-PACKAGE=octave-forge
-MAJOR_VERSION=0
-MINOR_VERSION=1
-PATCH_LEVEL=0
-
-dnl Kill caching --- this ought to be the default
-define([AC_CACHE_LOAD], )dnl
-define([AC_CACHE_SAVE], )dnl
-
-dnl uncomment to put support files in another directory
-dnl AC_CONFIG_AUX_DIR(admin)
-
-VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
-AC_SUBST(PACKAGE)
-AC_SUBST(VERSION)
-
-dnl need to find admin files, so keep track of the top dir.
-TOPDIR=`pwd`
-AC_SUBST(TOPDIR)
-
-dnl if mkoctfile doesn't work, then we need the following:
-dnl AC_PROG_CXX
-dnl AC_PROG_F77
-
-dnl Need C compiler regardless so define it in a way that
-dnl makes autoconf happy and we can override whatever we
-dnl need with mkoctfile -p.
-dnl XXX FIXME XXX should use mkoctfile to get CC and CFLAGS
-AC_PROG_CC
-
-dnl XXX FIXME XXX need tests for -p -c -s in mkoctfile.
-
-dnl *******************************************************************
-dnl Sort out mkoctfile version number and install paths
-
-dnl XXX FIXME XXX latest octave has octave-config so we don't
-dnl need to discover things here.  Doesn't have --exe-site-dir
-dnl but defines --oct-site-dir and --m-site-dir
-
-dnl Check for mkoctfile
-AC_CHECK_PROG(MKOCTFILE,mkoctfile,mkoctfile)
-test -z "$MKOCTFILE" &&	AC_MSG_WARN([no mkoctfile found on path])
-
-AC_SUBST(ver)
-AC_SUBST(subver)
-AC_SUBST(mpath)
-AC_SUBST(opath)
-AC_SUBST(xpath)
-AC_SUBST(altpath)
-AC_SUBST(altmpath)
-AC_SUBST(altopath)
-
-AC_ARG_WITH(path, 
-	[  --with-path             install path prefix],
-	[ path=$withval ])
-AC_ARG_WITH(mpath,
-	[  --with-mpath            override path for m-files],
-	[mpath=$withval])
-AC_ARG_WITH(opath,
-	[  --with-opath            override path for oct-files],
-	[opath=$withval])
-AC_ARG_WITH(xpath,
-	[  --with-xpath            override path for executables],
-	[xpath=$withval])
-AC_ARG_WITH(altpath, 
-	[  --with-altpath          alternative functions install path prefix],
-	[ altpath=$withval ])
-AC_ARG_WITH(altmpath,
-	[  --with-altmpath         override path for alternative m-files],
-	[altmpath=$withval])
-AC_ARG_WITH(altopath,
-	[  --with-altopath         override path for alternative oct-files],
-	[altopath=$withval])	
-
-if test -n "$path" ; then
-   test -z "$mpath" && mpath=$path 
-   test -z "$opath" && opath=$path/oct 
-   test -z "$xpath" && xpath=$path/bin
-   test -z "$altpath" && altpath=$path-alternatives
-fi
-
-if test -n "$altpath" ; then
-   test -z "$altmpath" && altmpath=$altpath 
-   test -z "$altopath" && altopath=$altpath/oct 
-fi
-
-dnl Don't query if path/ver are given in the configure environment
-#if test -z "$mpath" || test -z "$opath" || test -z "$xpath" || test -z "$altmpath" || test -z "$altopath" || test -z "$ver" ; then
-if test -z "$mpath" || test -z "$opath" || test -z "$xpath" || test -z "$ver" ; then
-   dnl Construct program to get mkoctfile version and local install paths
-   cat > conftest.cc <<EOF
-#include <octave/config.h>
-#include <octave/version.h>
-#include <octave/defaults.h>
-
-#define INFOV "\nINFOV=" OCTAVE_VERSION "\n"
-
-#define INFOH "\nINFOH=" OCTAVE_CANONICAL_HOST_TYPE "\n"
-
-#ifdef OCTAVE_LOCALVERFCNFILEDIR
-# define INFOM "\nINFOM=" OCTAVE_LOCALVERFCNFILEDIR "\n"
-#else
-# define INFOM "\nINFOM=" OCTAVE_LOCALFCNFILEPATH "\n"
-#endif
-
-#ifdef OCTAVE_LOCALVEROCTFILEDIR
-# define INFOO "\nINFOO=" OCTAVE_LOCALVEROCTFILEDIR "\n"
-#else
-# define INFOO "\nINFOO=" OCTAVE_LOCALOCTFILEPATH  "\n"
-#endif
-
-#ifdef OCTAVE_LOCALVERARCHLIBDIR
-# define INFOX "\nINFOX=" OCTAVE_LOCALVERARCHLIBDIR  "\n"
-#else
-# define INFOX "\nINFOX=" OCTAVE_LOCALARCHLIBDIR  "\n"
-#endif
-
-const char *infom = INFOM;
-const char *infoo = INFOO;
-const char *infox = INFOX;
-const char *infoh = INFOH;
-const char *infov = INFOV;
-EOF
-
-   dnl Compile program perhaps with a special version of mkoctfile
-   $MKOCTFILE conftest.cc || AC_MSG_ERROR(Could not run $MKOCTFILE)
-
-   dnl Strip the config info from the compiled file
-   eval `strings conftest.o | grep "^INFO.=" | sed -e "s,//.*$,,"`
-   rm -rf conftest*
-
-   dnl set the appropriate variables if they are not already set
-   ver=`echo $INFOV | sed -e "s/\.//" -e "s/\..*$//"`
-   subver=`echo $INFOV | sed -e "[s/^[^.]*[.][^.]*[.]//]"`
-   alt_mbase=`echo $INFOM | sed -e "[s,\/[^\/]*$,,]"`
-   alt_obase=`echo $INFOO | sed -e "[s,/site.*$,/site,]"`
-   test -z "$mpath" && mpath=$INFOM/octave-forge
-   test -z "$opath" && opath=$INFOO/octave-forge
-   test -z "$xpath" && xpath=$INFOX
-   test -z "$altmpath" && altmpath=$alt_mbase/octave-forge-alternatives/m
-   test -z "$altopath" && altopath=$alt_obase/octave-forge-alternatives/oct/$INFOH
-fi
-
-dnl *******************************************************************
-
-dnl XXX FIXME XXX Should we allow the user to override these?
-dnl Do we even need them?  The individual makefiles can call mkoctfile -p
-dnl themselves, so the only reason to keep them is for configure, and
-dnl for those things which are not built using mkoctfile (e.g., aurecord)
-dnl but it is not clear we should be using octave compile flags for those.
-
-dnl C compiler and flags
-AC_MSG_RESULT([retrieving compile and link flags from $MKOCTFILE])
-CC=`$MKOCTFILE -p CC`
-CFLAGS=`$MKOCTFILE -p CFLAGS`
-CPPFLAGS=`$MKOCTFILE -p CPPFLAGS`
-CPICFLAG=`$MKOCTFILE -p CPICFLAG`
-LDFLAGS=`$MKOCTFILE -p LDFLAGS`
-LIBS=`$MKOCTFILE -p LIBS`
-AC_SUBST(CC)
-AC_SUBST(CFLAGS)
-AC_SUBST(CPPFLAGS)
-AC_SUBST(CPICFLAG)
-
-dnl Fortran compiler and flags
-F77=`$MKOCTFILE -p F77`
-FFLAGS=`$MKOCTFILE -p FFLAGS`
-FPICFLAG=`$MKOCTFILE -p FPICFLAG`
-AC_SUBST(F77)
-AC_SUBST(FFLAGS)
-AC_SUBST(FPICFLAG)
-
-dnl C++ compiler and flags
-CXX=`$MKOCTFILE -p CXX`
-CXXFLAGS=`$MKOCTFILE -p CXXFLAGS`
-CXXPICFLAG=`$MKOCTFILE -p CXXPICFLAG`
-AC_SUBST(CXX)
-AC_SUBST(CXXFLAGS)
-AC_SUBST(CXXPICFLAG)
-
-dnl *******************************************************************
-
-dnl Check for features of your version of mkoctfile.
-dnl All checks should be designed so that the default
-dnl action if the tests are not performed is to do whatever
-dnl is appropriate for the most recent version of Octave.
-
-dnl Define the following macro:
-dnl    OF_CHECK_LIB(lib,fn,true,false,helpers)
-dnl This is just like AC_CHECK_LIB, but it doesn't update LIBS
-AC_DEFUN(OF_CHECK_LIB,
-[save_LIBS="$LIBS"
-AC_CHECK_LIB($1,$2,$3,$4,$5)
-LIBS="$save_LIBS"
-])
-
-dnl Define the following macro:
-dnl    TRY_MKOCTFILE(msg,program,action_if_true,action_if_false)
-dnl
-AC_DEFUN(TRY_MKOCTFILE,
-[AC_MSG_CHECKING($1)
-cat > conftest.cc << EOF
-#include <octave/config.h>
-$2
-EOF
-ac_try="$MKOCTFILE -c conftest.cc"
-if AC_TRY_EVAL(ac_try) ; then
-   AC_MSG_RESULT(yes)
-   $3
-else
-   AC_MSG_RESULT(no)
-   $4
-fi
-])
-
-dnl
-dnl Check if F77_FUNC works with MKOCTFILE
-dnl
-TRY_MKOCTFILE([for F77_FUNC],
-[int F77_FUNC (hello, HELLO) (const int &n);],,
-[MKOCTFILE="$MKOCTFILE -DF77_FUNC=F77_FCN"])
-
-dnl **********************************************************
-
-dnl Evaluate an expression in octave
-dnl
-dnl OCTAVE_EVAL(expr,var) -> var=expr
-dnl
-AC_DEFUN(OCTAVE_EVAL,
-[AC_MSG_CHECKING([for $1 in Octave])
-$2=`echo "disp($1)" | $OCTAVE -qf`
-AC_MSG_RESULT($$2)
-AC_SUBST($2)
-])
-
-dnl Check status of an octave variable
-dnl
-dnl OCTAVE_CHECK_EXIST(variable,action_if_true,action_if_false)
-dnl
-AC_DEFUN(OCTAVE_CHECK_EXIST,
-[AC_MSG_CHECKING([for $1 in Octave])
-if test `echo 'disp(exist("$1"))' | $OCTAVE -qf`X != 0X ; then
-   AC_MSG_RESULT(yes)
-   $2
-else
-   AC_MSG_RESULT(no)
-   $3
-fi
-])
-
-dnl should check that $(OCTAVE) --version matches $(MKOCTFILE) --version
-AC_CHECK_PROG(OCTAVE,octave,octave)
-OCTAVE_EVAL(OCTAVE_VERSION,OCTAVE_VERSION)
-
-dnl grab canonical host type so we can write system specific install stuff
-OCTAVE_EVAL(octave_config_info('canonical_host_type'),canonical_host_type)
-
-dnl grab SHLEXT from octave config
-OCTAVE_EVAL(octave_config_info('SHLEXT'),SHLEXT)
-
-AC_PROG_LN_S
-AC_PROG_RANLIB
-
-dnl Use $(COPY_FLAGS) to set options for cp when installing .oct files.
-COPY_FLAGS="-Rfp"
-case "$canonical_host_type" in
-    *-*-linux*)
-        COPY_FLAGS="-fdp"
-    ;;
-esac
-AC_SUBST(COPY_FLAGS)
-
-dnl Use $(STRIP) in the makefile to strip executables.  If not found, 
-dnl STRIP expands to ':', which in the makefile does nothing.
-dnl Don't need this for .oct files since mkoctfile handles them directly
-STRIP=${STRIP-strip}
-AC_CHECK_PROG(STRIP,$STRIP,$STRIP,:)
-
-dnl Strip on windows, don't strip on Mac OS/X or IRIX
-dnl For the rest, you can force strip using MKOCTFILE="mkoctfile -s"
-dnl or avoid strip using STRIP=: before ./configure
-case "$canonical_host_type" in
-    powerpc-apple-darwin*|*-sgi-*)
-	STRIP=:
-    ;;
-    *-cygwin-*|*-mingw-*) 
-	MKOCTFILE="$MKOCTFILE -s" 
-    ;;
-esac
-
-
-CONFIGURE_OUTPUTS="Makeconf"
-STATUS_MSG="
-octave commands will install into the following directories:
-   m-files:   $mpath
-   oct-files: $opath
-   binaries:  $xpath
-alternatives:
-   m-files:   $altmpath
-   oct-files: $altopath
-
-shell commands will install into the following directories:
-   binaries:  $bindir
-   man pages: $mandir
-   libraries: $libdir
-   headers:   $includedir
-
-octave-forge is configured with
-   octave:      $OCTAVE (version $OCTAVE_VERSION)
-   mkoctfile:	$MKOCTFILE for Octave $subver"
diff --git a/src/daskr.diff b/src/daskr.diff
index d0396d0..dd776fa 100644
--- a/src/daskr.diff
+++ b/src/daskr.diff
@@ -1,46 +1,64 @@
---- daskr.orig/dlinpk.f	2008-05-19 11:26:08.000000000 +0200
-+++ daskr/dlinpk.f	2008-05-19 11:21:57.000000000 +0200
-@@ -760,14 +760,24 @@
-          dnrm2  = zero
-          go to 300
- c
--   10 assign 30 to next
-+   10 next = 30
-       sum = zero
-       nn = n * incx
- c                                                 begin main loop
-       i = 1
--   20    go to next,(30, 50, 70, 110)
-+   20    if (next .eq. 30) then
-+            go to 30
-+         else if (next .eq. 50) then
-+            go to 50
-+         else if (next .eq. 70) then
-+            go to 70
-+         else if (next .eq. 110) then
-+            go to 110
-+         else
-+            continue
-+         end if
-    30 if( dabs(dx(i)) .gt. cutlo) go to 85
--      assign 50 to next
-+      next = 50
-       xmax = zero
- c
- c                        phase 1.  sum is zero
-@@ -776,13 +786,13 @@
-       if( dabs(dx(i)) .gt. cutlo) go to 85
- c
- c                                prepare for phase 2.
--      assign 70 to next
-+      next = 70
-       go to 105
- c
- c                                prepare for phase 4.
- c
-   100 i = j
--      assign 110 to next
-+      next = 110
-       sum = (sum / dx(i)) / dx(i)
-   105 xmax = dabs(dx(i))
-       go to 115
+--- daskr.orig/ddaskr.f	2008-03-14 06:34:48.000000000 -0400
++++ daskr/ddaskr.f	2014-03-02 16:10:47.319479666 -0500
+@@ -1405,6 +1405,7 @@
+       DIMENSION RWORK(LRW),IWORK(LIW)
+       DIMENSION RTOL(*),ATOL(*)
+       DIMENSION RPAR(*),IPAR(*)
++      DIMENSION JROOT(*)
+       CHARACTER MSG*80
+       EXTERNAL  RES, JAC, PSOL, RT, DDASID, DDASIK, DNEDD, DNEDK
+ C
+@@ -2515,6 +2516,7 @@
+      *  RWORK, RPAR
+       DIMENSION Y(*), YP(*), PHI(NEQ,*), PSI(*),
+      *          R0(*), R1(*), RX(*), JROOT(*), RWORK(*), IWORK(*)
++      DIMENSION RPAR(*), IPAR(*)
+       INTEGER I, JFLAG
+       DOUBLE PRECISION H
+       DOUBLE PRECISION HMINR, T1, TEMP1, TEMP2, X, ZERO
+--- daskr.orig/dlinpk.f	2008-03-14 06:34:42.000000000 -0400
++++ daskr/dlinpk.f	2014-03-02 16:09:47.580384128 -0500
+@@ -760,14 +760,24 @@
+          dnrm2  = zero
+          go to 300
+ c
+-   10 assign 30 to next
++   10 next = 30
+       sum = zero
+       nn = n * incx
+ c                                                 begin main loop
+       i = 1
+-   20    go to next,(30, 50, 70, 110)
++   20    if (next .eq. 30) then
++            go to 30
++         else if (next .eq. 50) then
++            go to 50
++         else if (next .eq. 70) then
++            go to 70
++         else if (next .eq. 110) then
++            go to 110
++         else
++            continue
++         end if
+    30 if( dabs(dx(i)) .gt. cutlo) go to 85
+-      assign 50 to next
++      next = 50
+       xmax = zero
+ c
+ c                        phase 1.  sum is zero
+@@ -776,13 +786,13 @@
+       if( dabs(dx(i)) .gt. cutlo) go to 85
+ c
+ c                                prepare for phase 2.
+-      assign 70 to next
++      next = 70
+       go to 105
+ c
+ c                                prepare for phase 4.
+ c
+   100 i = j
+-      assign 110 to next
++      next = 110
+       sum = (sum / dx(i)) / dx(i)
+   105 xmax = dabs(dx(i))
+       go to 115
diff --git a/src/mexfiles.tgz b/src/mexfiles.tgz
deleted file mode 100644
index 8591de2..0000000
Binary files a/src/mexfiles.tgz and /dev/null differ
diff --git a/src/odepkg_auxiliary_functions.cc b/src/odepkg_auxiliary_functions.cc
index ba3dd68..d5180eb 100644
--- a/src/odepkg_auxiliary_functions.cc
+++ b/src/odepkg_auxiliary_functions.cc
@@ -25,9 +25,9 @@ along with this program; If not, see <http://www.gnu.org/licenses/>.
 /* -*- texinfo -*-
  * @subsection Source file @file{odepkg_auxiliary_functions.cc}
  *
- * @deftypefn {Function} octave_value odepkg_auxiliary_getmapvalue (std::string vnam, Octave_map vmap)
+ * @deftypefn {Function} octave_value odepkg_auxiliary_getmapvalue (std::string vnam, octave_scalar_map vmap)
  *
- * Return the @code{octave_value} from the field that is identified by the string @var{vnam} of the @code{Octave_map} that is given by @var{vmap}. The input arguments of this function are
+ * Return the @code{octave_value} from the field that is identified by the string @var{vnam} of the @code{octave_scalar_map} that is given by @var{vmap}. The input arguments of this function are
  *
  * @itemize @minus
  * @item @var{vnam}: The name of the field whose value is returned
@@ -35,11 +35,6 @@ along with this program; If not, see <http://www.gnu.org/licenses/>.
  * @end itemize
  * @end deftypefn
  */
-octave_value odepkg_auxiliary_getmapvalue (std::string vnam, Octave_map vmap) {
-  Octave_map::const_iterator viter;
-  viter = vmap.seek (vnam);
-  return (vmap.contents(viter)(0));
-}
 
 /* -*- texinfo -*-
  * @deftypefn {Function} octave_idx_type odepkg_auxiliary_isvector (octave_value vval)
@@ -371,7 +366,7 @@ octave_value odepkg_auxiliary_evalmassode
 octave_value odepkg_auxiliary_makestats
   (octave_value_list vstats, octave_idx_type vprnt) {
 
-  Octave_map vretval;
+  octave_scalar_map vretval;
 
   if (vstats.length () < 5)
     error_with_id ("OdePkg:InvalidArgument",
diff --git a/src/odepkg_auxiliary_functions.h b/src/odepkg_auxiliary_functions.h
index e602a37..e6cc7a4 100644
--- a/src/odepkg_auxiliary_functions.h
+++ b/src/odepkg_auxiliary_functions.h
@@ -19,9 +19,6 @@ along with this program; If not, see <http://www.gnu.org/licenses/>.
 #if !defined (odepkg_auxiliary_functions_h)
 #define odepkg_auxiliary_functions_h 1
 
-octave_value odepkg_auxiliary_getmapvalue 
-  (std::string vnam, Octave_map vmap);
-
 octave_idx_type odepkg_auxiliary_isvector 
   (octave_value vval);
 
diff --git a/src/odepkg_octsolver_ddaskr.cc b/src/odepkg_octsolver_ddaskr.cc
index 72b0ba3..d88bbdb 100644
--- a/src/odepkg_octsolver_ddaskr.cc
+++ b/src/odepkg_octsolver_ddaskr.cc
@@ -228,7 +228,7 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   octave_idx_type nargin = args.length (); // The number of input arguments
   octave_value_list vretval;               // The cell array of return args
-  Octave_map vodeopt;                      // The OdePkg options structure
+  octave_scalar_map vodeopt;                      // The OdePkg options structure
 
   // Check number and types of all the input arguments
   if (nargin < 4) {
@@ -286,7 +286,7 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
     // Fifth input argument != OdePkg option, need a default structure
     if (!args(4).is_map ()) {
       octave_value_list tmp = feval ("odeset", tmp, 1);
-      vodeopt = tmp(0).map_value ();        // Create a default structure
+      vodeopt = tmp(0).scalar_map_value ();        // Create a default structure
       for (octave_idx_type vcnt = 4; vcnt < nargin; vcnt++)
         vddaskrextarg(vcnt-4) = args(vcnt); // Save arguments in vddaskrextarg
     }
@@ -297,7 +297,7 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
       varin(0) = args(4); varin(1) = "odekdi";
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value ();        // Create structure of args(4)
+      vodeopt = tmp(0).scalar_map_value ();        // Create structure of args(4)
       for (octave_idx_type vcnt = 5; vcnt < nargin; vcnt++)
         vddaskrextarg(vcnt-5) = args(vcnt); // Save extra arguments
     }
@@ -308,14 +308,14 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
       varin(0) = args(4); varin(1) = "odekdi"; // Check structure
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value (); // Create a default structure
+      vodeopt = tmp(0).scalar_map_value (); // Create a default structure
     }
 
   } // if (nargin >= 5)
 
   else { // if nargin == 4, everything else has been checked before
     octave_value_list tmp = feval ("odeset", tmp, 1);
-    vodeopt = tmp(0).map_value (); // Create a default structure
+    vodeopt = tmp(0).scalar_map_value (); // Create a default structure
   }
 
 /* Start PREPROCESSING, ie. check which options have been set and
@@ -325,7 +325,7 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // Implementation of the option RelTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vreltol = odepkg_auxiliary_getmapvalue ("RelTol", vodeopt);
+  octave_value vreltol = vodeopt.contents ("RelTol");
   if (vreltol.is_empty ()) {
     vreltol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -341,7 +341,7 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // Implementation of the option AbsTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vabstol = odepkg_auxiliary_getmapvalue ("AbsTol", vodeopt);
+  octave_value vabstol = vodeopt.contents ("AbsTol");
   if (vabstol.is_empty ()) {
     vabstol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -368,7 +368,7 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // The option NormControl will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt);
+  octave_value vnorm = vodeopt.contents ("NormControl");
   if (!vnorm.is_empty ())
     if (vnorm.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption", 
@@ -376,34 +376,34 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // The option NonNegative will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnneg = odepkg_auxiliary_getmapvalue ("NonNegative", vodeopt);
+  octave_value vnneg = vodeopt.contents ("NonNegative");
   if (!vnneg.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"NonNegative\" will be ignored by this solver");
 
   // Implementation of the option OutputFcn has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vplot = odepkg_auxiliary_getmapvalue ("OutputFcn", vodeopt);
+  octave_value vplot = vodeopt.contents ("OutputFcn");
   if (vplot.is_empty () && nargout == 0) vplot = "odeplot";
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  octave_value voutsel = odepkg_auxiliary_getmapvalue ("OutputSel", vodeopt);
+  octave_value voutsel = vodeopt.contents ("OutputSel");
 
   // The option Refine will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vrefine = odepkg_auxiliary_getmapvalue ("Refine", vodeopt);
+  octave_value vrefine = vodeopt.contents ("Refine");
   if (vrefine.int_value () != 0)
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"Refine\" will be ignored by this solver");
 
   // Implementation of the option Stats has been finished, this option
   // can be set by the user to another value than default value
-  octave_value vstats = odepkg_auxiliary_getmapvalue ("Stats", vodeopt);
+  octave_value vstats = vodeopt.contents ("Stats");
 
   // Implementation of the option InitialStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vinitstep = odepkg_auxiliary_getmapvalue ("InitialStep", vodeopt);
+  octave_value vinitstep = vodeopt.contents ("InitialStep");
   if (args(1).length () > 2) {
     if (!vinitstep.is_empty ())
       warning_with_id ("OdePkg:InvalidOption",
@@ -418,7 +418,7 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // Implementation of the option MaxStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vmaxstep = odepkg_auxiliary_getmapvalue ("MaxStep", vodeopt);
+  octave_value vmaxstep = vodeopt.contents ("MaxStep");
   if (vmaxstep.is_empty () && args(1).length () == 2) {
     vmaxstep = (args(1).vector_value ()(1) - args(1).vector_value ()(0)) / 12.5;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -429,23 +429,23 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
   // Implementation of the option Events has been finished, this
   // option can be set by the user to another value than default
   // value, odepkg_structure_check already checks for a valid value
-  octave_value vevents = odepkg_auxiliary_getmapvalue ("Events", vodeopt);
+  octave_value vevents = vodeopt.contents ("Events");
   octave_value_list veveres; // We save the results of Events here
 
   // The options 'Jacobian', 'JPattern' and 'Vectorized'
-  octave_value vjac = odepkg_auxiliary_getmapvalue ("Jacobian", vodeopt);
+  octave_value vjac = vodeopt.contents ("Jacobian");
   if (!vjac.is_empty ()) vddaskrjacfun = vjac;
 
   // The option Mass will be ignored by this solver. We can't handle
   // Mass-matrix options with IDE problems
-  octave_value vmass = odepkg_auxiliary_getmapvalue ("Mass", vodeopt);
+  octave_value vmass = vodeopt.contents ("Mass");
   if (!vmass.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"Mass\" will be ignored by this solver");
 
   // The option MStateDependence will be ignored by this solver. We
   // can't handle Mass-matrix options with IDE problems
-  octave_value vmst = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt);
+  octave_value vmst = vodeopt.contents ("MStateDependence");
   if (!vmst.is_empty ())
     if (vmst.string_value ().compare ("weak") != 0)
       warning_with_id ("OdePkg:InvalidOption", 
@@ -453,14 +453,14 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // The option MvPattern will be ignored by this solver. We
   // can't handle Mass-matrix options with IDE problems
-  octave_value vmvpat = odepkg_auxiliary_getmapvalue ("MvPattern", vodeopt);
+  octave_value vmvpat = vodeopt.contents ("MvPattern");
   if (!vmvpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"MvPattern\" will be ignored by this solver");
 
   // The option MvPattern will be ignored by this solver. We
   // can't handle Mass-matrix options with IDE problems
-  octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt);
+  octave_value vmsing = vodeopt.contents ("MassSingular");
   if (!vmsing.is_empty ())
     if (vmsing.string_value ().compare ("maybe") != 0)
       warning_with_id ("OdePkg:InvalidOption", 
@@ -468,14 +468,14 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // The option InitialSlope will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vinitslope = odepkg_auxiliary_getmapvalue ("InitialSlope", vodeopt);
+  octave_value vinitslope = vodeopt.contents ("InitialSlope");
   if (!vinitslope.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"InitialSlope\" will be ignored by this solver");
 
   // Implementation of the option MaxOrder has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vmaxder = odepkg_auxiliary_getmapvalue ("MaxOrder", vodeopt);
+  octave_value vmaxder = vodeopt.contents ("MaxOrder");
   if (vmaxder.is_empty ()) {
     vmaxder = 3;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -488,7 +488,7 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
   }
 
   // The option BDF will be ignored because this is a BDF solver
-  octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt);
+  octave_value vbdf = vodeopt.contents ("BDF");
   if (!vbdf.is_empty ())
     if (vbdf.string_value () != "on") {
       vbdf = "on"; warning_with_id ("OdePkg:InvalidOption", 
@@ -498,12 +498,12 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
   // The option NewtonTol and MaxNewtonIterations will be ignored by
   // this solver, IT NEEDS TO BE CHECKED IF THE FORTRAN CORE SOLVER
   // CAN HANDLE THESE OPTIONS
-  octave_value vntol = odepkg_auxiliary_getmapvalue ("NewtonTol", vodeopt);
+  octave_value vntol = vodeopt.contents ("NewtonTol");
   if (!vntol.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"NewtonTol\" will be ignored by this solver");
   octave_value vmaxnewton = 
-    odepkg_auxiliary_getmapvalue ("MaxNewtonIterations", vodeopt);
+    vodeopt.contents ("MaxNewtonIterations");
   if (!vmaxnewton.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"MaxNewtonIterations\" will be ignored by this solver");
@@ -667,7 +667,7 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
   octave_value vtres, vyres;
   odepkg_auxiliary_solstore (vtres, vyres, 2);
 
-  // Get the stats information as an Octave_map if the option 'Stats'
+  // Get the stats information as an octave_scalar_map if the option 'Stats'
   // has been set with odeset 
   // "nsteps", "nfailed", "nfevals", "npds", "ndecomps", "nlinsols"
   octave_value_list vstatinput;
@@ -686,7 +686,7 @@ odekdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
   // Set up output arguments that depend on how many output arguments
   // are desired -- check the nargout variable
   if (nargout == 1) {
-    Octave_map vretmap;
+    octave_scalar_map vretmap;
     vretmap.assign ("x", vtres);
     vretmap.assign ("y", vyres);
     vretmap.assign ("solver", "odekdi");
diff --git a/src/odepkg_octsolver_mebdfdae.cc b/src/odepkg_octsolver_mebdfdae.cc
index acf38e3..ca5e086 100644
--- a/src/odepkg_octsolver_mebdfdae.cc
+++ b/src/odepkg_octsolver_mebdfdae.cc
@@ -274,7 +274,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   octave_idx_type nargin = args.length (); // The number of input arguments
   octave_value_list vretval;               // The cell array of return args
-  Octave_map vodeopt;                      // The OdePkg options structure
+  octave_scalar_map vodeopt;                      // The OdePkg options structure
 
   // Check number and types of all the input arguments
   if (nargin < 3) {
@@ -316,7 +316,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
     // Fourth input argument != OdePkg option, need a default structure
     if (!args(3).is_map ()) {
       octave_value_list tmp = feval ("odeset", tmp, 1);
-      vodeopt = tmp(0).map_value ();       // Create a default structure
+      vodeopt = tmp(0).scalar_map_value ();       // Create a default structure
       for (octave_idx_type vcnt = 3; vcnt < nargin; vcnt++)
         vmebdfdaeextarg(vcnt-3) = args(vcnt); // Save arguments in vmebdfdaeextarg
     }
@@ -327,7 +327,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
       varin(0) = args(3); varin(1) = "odebda";
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value ();       // Create structure from args(4)
+      vodeopt = tmp(0).scalar_map_value ();       // Create structure from args(4)
       for (octave_idx_type vcnt = 4; vcnt < nargin; vcnt++)
         vmebdfdaeextarg(vcnt-4) = args(vcnt); // Save extra arguments
     }
@@ -338,14 +338,14 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
       varin(0) = args(3); varin(1) = "odebda"; // Check structure
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value (); // Create a default structure
+      vodeopt = tmp(0).scalar_map_value (); // Create a default structure
     }
 
   } // if (nargin >= 4)
 
   else { // if nargin == 3, everything else has been checked before
     octave_value_list tmp = feval ("odeset", tmp, 1);
-    vodeopt = tmp(0).map_value (); // Create a default structure
+    vodeopt = tmp(0).scalar_map_value (); // Create a default structure
   }
 
 /* Start PREPROCESSING, ie. check which options have been set and
@@ -355,7 +355,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option RelTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vreltol = odepkg_auxiliary_getmapvalue ("RelTol", vodeopt);
+  octave_value vreltol = vodeopt.contents ("RelTol");
   if (vreltol.is_empty ()) {
     vreltol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -372,7 +372,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option AbsTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vabstol = odepkg_auxiliary_getmapvalue ("AbsTol", vodeopt);
+  octave_value vabstol = vodeopt.contents ("AbsTol");
   if (vabstol.is_empty ()) {
     vabstol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -397,7 +397,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option NormControl will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt);
+  octave_value vnorm = vodeopt.contents ("NormControl");
   if (!vnorm.is_empty ())
     if (vnorm.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption", 
@@ -405,34 +405,34 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option NonNegative will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnneg = odepkg_auxiliary_getmapvalue ("NonNegative", vodeopt);
+  octave_value vnneg = vodeopt.contents ("NonNegative");
   if (!vnneg.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"NonNegative\" will be ignored by this solver");
 
   // Implementation of the option OutputFcn has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vplot = odepkg_auxiliary_getmapvalue ("OutputFcn", vodeopt);
+  octave_value vplot = vodeopt.contents ("OutputFcn");
   if (vplot.is_empty () && nargout == 0) vplot = "odeplot";
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  octave_value voutsel = odepkg_auxiliary_getmapvalue ("OutputSel", vodeopt);
+  octave_value voutsel = vodeopt.contents ("OutputSel");
 
   // The option Refine will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vrefine = odepkg_auxiliary_getmapvalue ("Refine", vodeopt);
+  octave_value vrefine = vodeopt.contents ("Refine");
   if (vrefine.int_value () != 0)
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"Refine\" will be ignored by this solver");
 
   // Implementation of the option Stats has been finished, this option
   // can be set by the user to another value than default value
-  octave_value vstats = odepkg_auxiliary_getmapvalue ("Stats", vodeopt);
+  octave_value vstats = vodeopt.contents ("Stats");
 
   // Implementation of the option InitialStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vinitstep = odepkg_auxiliary_getmapvalue ("InitialStep", vodeopt);
+  octave_value vinitstep = vodeopt.contents ("InitialStep");
   if (args(1).length () > 2) {
     if (!vinitstep.is_empty ())
       warning_with_id ("OdePkg:InvalidOption",
@@ -448,7 +448,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option MaxStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vmaxstep = odepkg_auxiliary_getmapvalue ("MaxStep", vodeopt);
+  octave_value vmaxstep = vodeopt.contents ("MaxStep");
   if (vmaxstep.is_empty () && args(1).length () == 2) {
     vmaxstep = (args(1).vector_value ()(1) - args(1).vector_value ()(0)) / 12.5;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -459,11 +459,11 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Implementation of the option Events has been finished, this
   // option can be set by the user to another value than default
   // value, odepkg_structure_check already checks for a valid value
-  octave_value vevents = odepkg_auxiliary_getmapvalue ("Events", vodeopt);
+  octave_value vevents = vodeopt.contents ("Events");
   octave_value_list veveres; // We save the results of Events here
 
   // The options 'Jacobian', 'JPattern' and 'Vectorized'
-  octave_value vjac = odepkg_auxiliary_getmapvalue ("Jacobian", vodeopt);
+  octave_value vjac = vodeopt.contents ("Jacobian");
   octave_idx_type vmebdfdaejac = 22; // We need to set this if no Jac available
   if (!vjac.is_empty ()) {
     vmebdfdaejacfun = vjac; vmebdfdaejac = 21;
@@ -471,7 +471,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option 'Mass' has been finished, these
   // options can be set by the user to another value than default
-  vmebdfdaemass = odepkg_auxiliary_getmapvalue ("Mass", vodeopt);
+  vmebdfdaemass = vodeopt.contents ("Mass");
   octave_idx_type vmebdfdaemas = 0;
   if (!vmebdfdaemass.is_empty ()) {
     vmebdfdaemas = 1;
@@ -482,7 +482,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option MStateDependence will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  vmebdfdaemassstate = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt);
+  vmebdfdaemassstate = vodeopt.contents ("MStateDependence");
   if (!vmebdfdaemassstate.is_empty ())
     if (vmebdfdaemassstate.string_value ().compare ("weak") != 0) // 'weak' is default
       warning_with_id ("OdePkg:InvalidOption",
@@ -490,14 +490,14 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option MStateDependence will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  octave_value vmvpat = odepkg_auxiliary_getmapvalue ("MvPattern", vodeopt);
+  octave_value vmvpat = vodeopt.contents ("MvPattern");
   if (!vmvpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"MvPattern\" will be ignored by this solver");
 
   // The option MassSingular will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt);
+  octave_value vmsing = vodeopt.contents ("MassSingular");
   if (!vmsing.is_empty ())
     if (vmsing.string_value ().compare ("maybe") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -505,14 +505,14 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option InitialSlope will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vinitslope = odepkg_auxiliary_getmapvalue ("InitialSlope", vodeopt);
+  octave_value vinitslope = vodeopt.contents ("InitialSlope");
   if (!vinitslope.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"InitialSlope\" will be ignored by this solver");
 
   // Implementation of the option MaxOrder has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vmaxder = odepkg_auxiliary_getmapvalue ("MaxOrder", vodeopt);
+  octave_value vmaxder = vodeopt.contents ("MaxOrder");
   if (vmaxder.is_empty ()) {
     vmaxder = 3;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -527,7 +527,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   }
 
   // The option BDF will be ignored because this is a BDF solver
-  octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt);
+  octave_value vbdf = vodeopt.contents ("BDF");
   if (vbdf.is_string ())
     if (vbdf.string_value () != "on") {
       vbdf = "on"; warning_with_id ("OdePkg:InvalidOption", 
@@ -536,12 +536,12 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // The option NewtonTol and MaxNewtonIterations will be ignored by
   // this solver, IT NEEDS TO BE CHECKED IF THE FORTRAN CORE SOLVER
   // CAN HANDLE THESE OPTIONS
-  octave_value vntol = odepkg_auxiliary_getmapvalue ("NewtonTol", vodeopt);
+  octave_value vntol = vodeopt.contents ("NewtonTol");
   if (!vntol.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"NewtonTol\" will be ignored by this solver");
   octave_value vmaxnewton = 
-    odepkg_auxiliary_getmapvalue ("MaxNewtonIterations", vodeopt);
+    vodeopt.contents ("MaxNewtonIterations");
   if (!vmaxnewton.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"MaxNewtonIterations\" will be ignored by this solver");
@@ -733,7 +733,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   odepkg_auxiliary_solstore (vtres, vyres, 2);
   // odepkg_auxiliary_solstore (vtres, vyres, voutsel, 100);
 
-  // Get the stats information as an Octave_map if the option 'Stats'
+  // Get the stats information as an octave_scalar_map if the option 'Stats'
   // has been set with odeset
   // "nsteps", "nfailed", "nfevals", "npds", "ndecomps", "nlinsols"
   octave_value_list vstatinput;
@@ -752,7 +752,7 @@ odebda (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Set up output arguments that depends on how many output arguments
   // are desired by the caller
   if (nargout == 1) {
-    Octave_map vretmap;
+    octave_scalar_map vretmap;
     vretmap.assign ("x", vtres);
     vretmap.assign ("y", vyres);
     vretmap.assign ("solver", "odebda");
diff --git a/src/odepkg_octsolver_mebdfi.cc b/src/odepkg_octsolver_mebdfi.cc
index 553aaca..5b66cfe 100644
--- a/src/odepkg_octsolver_mebdfi.cc
+++ b/src/odepkg_octsolver_mebdfi.cc
@@ -350,7 +350,7 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   octave_idx_type nargin = args.length (); // The number of input arguments
   octave_value_list vretval;               // The cell array of return args
-  Octave_map vodeopt;                      // The OdePkg options structure
+  octave_scalar_map vodeopt;                      // The OdePkg options structure
 
   // Check number and types of all the input arguments
   if (nargin < 4) {
@@ -408,7 +408,7 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
     // Fifth input argument != OdePkg option, need a default structure
     if (!args(4).is_map ()) {
       octave_value_list tmp = feval ("odeset", tmp, 1);
-      vodeopt = tmp(0).map_value ();        // Create a default structure
+      vodeopt = tmp(0).scalar_map_value ();        // Create a default structure
       for (octave_idx_type vcnt = 4; vcnt < nargin; vcnt++)
         vmebdfiextarg(vcnt-4) = args(vcnt); // Save arguments in vmebdfiextarg
     }
@@ -419,7 +419,7 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
       varin(0) = args(4); varin(1) = "odebdi";
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value ();        // Create structure of args(4)
+      vodeopt = tmp(0).scalar_map_value ();        // Create structure of args(4)
       for (octave_idx_type vcnt = 5; vcnt < nargin; vcnt++)
         vmebdfiextarg(vcnt-5) = args(vcnt); // Save extra arguments
     }
@@ -430,14 +430,14 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
       varin(0) = args(4); varin(1) = "odebdi"; // Check structure
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value (); // Create a default structure
+      vodeopt = tmp(0).scalar_map_value (); // Create a default structure
     }
 
   } // if (nargin >= 5)
 
   else { // if nargin == 4, everything else has been checked before
     octave_value_list tmp = feval ("odeset", tmp, 1);
-    vodeopt = tmp(0).map_value (); // Create a default structure
+    vodeopt = tmp(0).scalar_map_value (); // Create a default structure
   }
 
 /* Start PREPROCESSING, ie. check which options have been set and
@@ -447,7 +447,7 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // Implementation of the option RelTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vreltol = odepkg_auxiliary_getmapvalue ("RelTol", vodeopt);
+  octave_value vreltol = vodeopt.contents ("RelTol");
   if (vreltol.is_empty ()) {
     vreltol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -464,7 +464,7 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // Implementation of the option AbsTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vabstol = odepkg_auxiliary_getmapvalue ("AbsTol", vodeopt);
+  octave_value vabstol = vodeopt.contents ("AbsTol");
   if (vabstol.is_empty ()) {
     vabstol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -489,7 +489,7 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // The option NormControl will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt);
+  octave_value vnorm = vodeopt.contents ("NormControl");
   if (!vnorm.is_empty ())
     if (vnorm.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption", 
@@ -497,34 +497,34 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // The option NonNegative will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnneg = odepkg_auxiliary_getmapvalue ("NonNegative", vodeopt);
+  octave_value vnneg = vodeopt.contents ("NonNegative");
   if (!vnneg.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"NonNegative\" will be ignored by this solver");
 
   // Implementation of the option OutputFcn has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vplot = odepkg_auxiliary_getmapvalue ("OutputFcn", vodeopt);
+  octave_value vplot = vodeopt.contents ("OutputFcn");
   if (vplot.is_empty () && nargout == 0) vplot = "odeplot";
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  octave_value voutsel = odepkg_auxiliary_getmapvalue ("OutputSel", vodeopt);
+  octave_value voutsel = vodeopt.contents ("OutputSel");
 
   // The option Refine will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vrefine = odepkg_auxiliary_getmapvalue ("Refine", vodeopt);
+  octave_value vrefine = vodeopt.contents ("Refine");
   if (vrefine.int_value () != 0)
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"Refine\" will be ignored by this solver");
 
   // Implementation of the option Stats has been finished, this option
   // can be set by the user to another value than default value
-  octave_value vstats = odepkg_auxiliary_getmapvalue ("Stats", vodeopt);
+  octave_value vstats = vodeopt.contents ("Stats");
 
   // Implementation of the option InitialStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vinitstep = odepkg_auxiliary_getmapvalue ("InitialStep", vodeopt);
+  octave_value vinitstep = vodeopt.contents ("InitialStep");
   if (args(1).length () > 2) {
     if (!vinitstep.is_empty ())
       warning_with_id ("OdePkg:InvalidOption",
@@ -540,7 +540,7 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // Implementation of the option MaxStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vmaxstep = odepkg_auxiliary_getmapvalue ("MaxStep", vodeopt);
+  octave_value vmaxstep = vodeopt.contents ("MaxStep");
   if (vmaxstep.is_empty () && args(1).length () == 2) {
     vmaxstep = (args(1).vector_value ()(1) - args(1).vector_value ()(0)) / 12.5;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -551,11 +551,11 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
   // Implementation of the option Events has been finished, this
   // option can be set by the user to another value than default
   // value, odepkg_structure_check already checks for a valid value
-  octave_value vevents = odepkg_auxiliary_getmapvalue ("Events", vodeopt);
+  octave_value vevents = vodeopt.contents ("Events");
   octave_value_list veveres; // We save the results of Events here
 
   // The options 'Jacobian', 'JPattern' and 'Vectorized'
-  octave_value vjac = odepkg_auxiliary_getmapvalue ("Jacobian", vodeopt);
+  octave_value vjac = vodeopt.contents ("Jacobian");
   octave_idx_type vmebdfijac = 22; // We need to set this if no Jac available
   if (!vjac.is_empty ()) {
     vmebdfijacfun = vjac; vmebdfijac = 21;
@@ -563,14 +563,14 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // The option Mass will be ignored by this solver. We can't handle
   // Mass-matrix options with IDE problems
-  octave_value vmass = odepkg_auxiliary_getmapvalue ("Mass", vodeopt);
+  octave_value vmass = vodeopt.contents ("Mass");
   if (!vmass.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"Mass\" will be ignored by this solver");
 
   // The option MStateDependence will be ignored by this solver. We
   // can't handle Mass-matrix options with IDE problems
-  octave_value vmst = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt);
+  octave_value vmst = vodeopt.contents ("MStateDependence");
   if (!vmst.is_empty ())
     if (vmst.string_value ().compare ("weak") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -578,14 +578,14 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // The option MvPattern will be ignored by this solver. We
   // can't handle Mass-matrix options with IDE problems
-  octave_value vmvpat = odepkg_auxiliary_getmapvalue ("MvPattern", vodeopt);
+  octave_value vmvpat = vodeopt.contents ("MvPattern");
   if (!vmvpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"MvPattern\" will be ignored by this solver");
 
   // The option MvPattern will be ignored by this solver. We
   // can't handle Mass-matrix options with IDE problems
-  octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt);
+  octave_value vmsing = vodeopt.contents ("MassSingular");
   if (!vmsing.is_empty ())
     if (vmsing.string_value ().compare ("maybe") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -593,14 +593,14 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
 
   // The option InitialSlope will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vinitslope = odepkg_auxiliary_getmapvalue ("InitialSlope", vodeopt);
+  octave_value vinitslope = vodeopt.contents ("InitialSlope");
   if (!vinitslope.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"InitialSlope\" will be ignored by this solver");
 
   // Implementation of the option MaxOrder has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vmaxder = odepkg_auxiliary_getmapvalue ("MaxOrder", vodeopt);
+  octave_value vmaxder = vodeopt.contents ("MaxOrder");
   if (vmaxder.is_empty ()) {
     vmaxder = 3;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -615,7 +615,7 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
   }
 
   // The option BDF will be ignored because this is a BDF solver
-  octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt);
+  octave_value vbdf = vodeopt.contents ("BDF");
   if (vbdf.is_string ())
     if (vbdf.string_value () != "on") {
       vbdf = "on"; warning_with_id ("OdePkg:InvalidOption", 
@@ -624,12 +624,12 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
   // The option NewtonTol and MaxNewtonIterations will be ignored by
   // this solver, IT NEEDS TO BE CHECKED IF THE FORTRAN CORE SOLVER
   // CAN HANDLE THESE OPTIONS
-  octave_value vntol = odepkg_auxiliary_getmapvalue ("NewtonTol", vodeopt);
+  octave_value vntol = vodeopt.contents ("NewtonTol");
   if (!vntol.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"NewtonTol\" will be ignored by this solver");
   octave_value vmaxnewton = 
-    odepkg_auxiliary_getmapvalue ("MaxNewtonIterations", vodeopt);
+    vodeopt.contents ("MaxNewtonIterations");
   if (!vmaxnewton.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"MaxNewtonIterations\" will be ignored by this solver");
@@ -838,7 +838,7 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
   odepkg_auxiliary_solstore (vtres, vyres, 2);
   // odepkg_auxiliary_solstore (vtres, vyres, voutsel, 100);
 
-  // Get the stats information as an Octave_map if the option 'Stats'
+  // Get the stats information as an octave_scalar_map if the option 'Stats'
   // has been set with odeset
   octave_value_list vstatinput;
   vstatinput(0) = IWORK[4];
@@ -857,7 +857,7 @@ odebdi (@@odepkg_equations_ilorenz, [0, 25], [3 15 1], \\\n\
   // Set up output arguments that depends on how many output arguments
   // are desired by the caller
   if (nargout == 1) {
-    Octave_map vretmap;
+    octave_scalar_map vretmap;
     vretmap.assign ("x", vtres);
     vretmap.assign ("y", vyres);
     vretmap.assign ("solver", "odebdi");
diff --git a/src/odepkg_octsolver_radau.cc b/src/odepkg_octsolver_radau.cc
index 1d89578..d07af4d 100644
--- a/src/odepkg_octsolver_radau.cc
+++ b/src/odepkg_octsolver_radau.cc
@@ -277,7 +277,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   octave_idx_type nargin = args.length (); // The number of input arguments
   octave_value_list vretval;               // The cell array of return args
-  Octave_map vodeopt;                      // The OdePkg options structure
+  octave_scalar_map vodeopt;                      // The OdePkg options structure
 
   // Check number and types of all input arguments
   if (nargin < 3) {
@@ -319,7 +319,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
     // Fourth input argument != OdePkg option, need a default structure
     if (!args(3).is_map ()) {
       octave_value_list tmp = feval ("odeset", tmp, 1);
-      vodeopt = tmp(0).map_value ();       // Create a default structure
+      vodeopt = tmp(0).scalar_map_value ();       // Create a default structure
       for (octave_idx_type vcnt = 3; vcnt < nargin; vcnt++)
         vradauextarg(vcnt-3) = args(vcnt); // Save arguments in vradauextarg
     }
@@ -330,7 +330,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
       varin(0) = args(3); varin(1) = "ode2r";
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value ();       // Create structure from args(4)
+      vodeopt = tmp(0).scalar_map_value ();       // Create structure from args(4)
       for (octave_idx_type vcnt = 4; vcnt < nargin; vcnt++)
         vradauextarg(vcnt-4) = args(vcnt); // Save extra arguments
     }
@@ -341,14 +341,14 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
       varin(0) = args(3); varin(1) = "ode2r"; // Check structure
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value (); // Create a default structure
+      vodeopt = tmp(0).scalar_map_value (); // Create a default structure
     }
 
   } // if (nargin >= 4)
 
   else { // if nargin == 3, everything else has been checked before
     octave_value_list tmp = feval ("odeset", tmp, 1);
-    vodeopt = tmp(0).map_value (); // Create a default structure
+    vodeopt = tmp(0).scalar_map_value (); // Create a default structure
   }
 
 /* Start PREPROCESSING, ie. check which options have been set and
@@ -358,7 +358,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option RelTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vreltol = odepkg_auxiliary_getmapvalue ("RelTol", vodeopt);
+  octave_value vreltol = vodeopt.contents ("RelTol");
   if (vreltol.is_empty ()) {
     vreltol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption",
@@ -375,7 +375,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option AbsTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vabstol = odepkg_auxiliary_getmapvalue ("AbsTol", vodeopt);
+  octave_value vabstol = vodeopt.contents ("AbsTol");
   if (vabstol.is_empty ()) {
     vabstol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption",
@@ -405,7 +405,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option NormControl will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt);
+  octave_value vnorm = vodeopt.contents ("NormControl");
   if (!vnorm.is_empty ())
     if (vnorm.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -413,31 +413,31 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option NonNegative will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnneg = odepkg_auxiliary_getmapvalue ("NonNegative", vodeopt);
+  octave_value vnneg = vodeopt.contents ("NonNegative");
   if (!vnneg.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"NonNegative\" will be ignored by this solver");
 
   // Implementation of the option OutputFcn has been finished, this
   // option can be set by the user to another value than default value
-  vradaupltfun = odepkg_auxiliary_getmapvalue ("OutputFcn", vodeopt);
+  vradaupltfun = vodeopt.contents ("OutputFcn");
   if (vradaupltfun.is_empty () && nargout == 0) vradaupltfun = "odeplot";
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  vradauoutsel = odepkg_auxiliary_getmapvalue ("OutputSel", vodeopt);
+  vradauoutsel = vodeopt.contents ("OutputSel");
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  vradaurefine = odepkg_auxiliary_getmapvalue ("Refine", vodeopt);
+  vradaurefine = vodeopt.contents ("Refine");
 
   // Implementation of the option Stats has been finished, this option
   // can be set by the user to another value than default value
-  octave_value vstats = odepkg_auxiliary_getmapvalue ("Stats", vodeopt);
+  octave_value vstats = vodeopt.contents ("Stats");
 
   // Implementation of the option InitialStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vinitstep = odepkg_auxiliary_getmapvalue ("InitialStep", vodeopt);
+  octave_value vinitstep = vodeopt.contents ("InitialStep");
   if (args(1).length () > 2) {
     error_with_id ("OdePkg:InvalidOption",
       "Fixed time stamps are not supported by this solver");
@@ -451,7 +451,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option MaxStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vmaxstep = odepkg_auxiliary_getmapvalue ("MaxStep", vodeopt);
+  octave_value vmaxstep = vodeopt.contents ("MaxStep");
   if (vmaxstep.is_empty () && args(1).length () == 2) {
     vmaxstep = (args(1).vector_value ()(1) - args(1).vector_value ()(0)) / 12.5;
     warning_with_id ("OdePkg:InvalidOption",
@@ -462,24 +462,24 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Implementation of the option Events has been finished, this
   // option can be set by the user to another value than default
   // value, odepkg_structure_check already checks for a valid value
-  vradauevefun = odepkg_auxiliary_getmapvalue ("Events", vodeopt);
+  vradauevefun = vodeopt.contents ("Events");
 
   // Implementation of the option 'Jacobian' has been finished, these
   // options can be set by the user to another value than default
-  vradaujacfun = odepkg_auxiliary_getmapvalue ("Jacobian", vodeopt);
+  vradaujacfun = vodeopt.contents ("Jacobian");
   octave_idx_type vradaujac = 0; // We need to set this if no Jac available
   if (!vradaujacfun.is_empty ()) vradaujac = 1;
 
   // The option JPattern will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vradaujacpat = odepkg_auxiliary_getmapvalue ("JPattern", vodeopt);
+  octave_value vradaujacpat = vodeopt.contents ("JPattern");
   if (!vradaujacpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"JPattern\" will be ignored by this solver");
 
   // The option Vectorized will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vradauvectorize = odepkg_auxiliary_getmapvalue ("Vectorized", vodeopt);
+  octave_value vradauvectorize = vodeopt.contents ("Vectorized");
   if (!vradauvectorize.is_empty ())
     if (vradauvectorize.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -487,7 +487,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option 'Mass' has been finished, these
   // options can be set by the user to another value than default
-  vradaumass = odepkg_auxiliary_getmapvalue ("Mass", vodeopt);
+  vradaumass = vodeopt.contents ("Mass");
   octave_idx_type vradaumas = 0;
   if (!vradaumass.is_empty ()) {
     vradaumas = 1;
@@ -498,7 +498,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option MStateDependence will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  vradaumassstate = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt);
+  vradaumassstate = vodeopt.contents ("MStateDependence");
   if (!vradaumassstate.is_empty ())
     if (vradaumassstate.string_value ().compare ("weak") != 0) // 'weak' is default
       warning_with_id ("OdePkg:InvalidOption",
@@ -506,14 +506,14 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option MStateDependence will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  octave_value vmvpat = odepkg_auxiliary_getmapvalue ("MvPattern", vodeopt);
+  octave_value vmvpat = vodeopt.contents ("MvPattern");
   if (!vmvpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"MvPattern\" will be ignored by this solver");
 
   // The option MassSingular will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt);
+  octave_value vmsing = vodeopt.contents ("MassSingular");
   if (!vmsing.is_empty ())
     if (vmsing.string_value ().compare ("maybe") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -521,21 +521,21 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option InitialSlope will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vinitslope = odepkg_auxiliary_getmapvalue ("InitialSlope", vodeopt);
+  octave_value vinitslope = vodeopt.contents ("InitialSlope");
   if (!vinitslope.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"InitialSlope\" will be ignored by this solver");
 
   // The option MaxOrder will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vmaxder = odepkg_auxiliary_getmapvalue ("MaxOrder", vodeopt);
+  octave_value vmaxder = vodeopt.contents ("MaxOrder");
   if (!vmaxder.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"MaxOrder\" will be ignored by this solver");
 
   // The option BDF will be ignored by this solver, the core Fortran
   // solver doesn't support this option
-  octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt);
+  octave_value vbdf = vodeopt.contents ("BDF");
   if (!vbdf.is_empty ())
     if (vbdf.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption", 
@@ -544,12 +544,12 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // The option NewtonTol and MaxNewtonIterations will be ignored by
   // this solver, IT NEEDS TO BE CHECKED IF THE FORTRAN CORE SOLVER
   // CAN HANDLE THESE OPTIONS
-  octave_value vntol = odepkg_auxiliary_getmapvalue ("NewtonTol", vodeopt);
+  octave_value vntol = vodeopt.contents ("NewtonTol");
   if (!vntol.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"NewtonTol\" will be ignored by this solver");
   octave_value vmaxnewton = 
-    odepkg_auxiliary_getmapvalue ("MaxNewtonIterations", vodeopt);
+    vodeopt.contents ("MaxNewtonIterations");
   if (!vmaxnewton.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"MaxNewtonIterations\" will be ignored by this solver");
@@ -641,7 +641,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   if (!vradauevefun.is_empty ()) odepkg_auxiliary_evaleventfun
     (vradauevefun, vted, vfin, vradauextarg, 2);
   
-  // Get the stats information as an Octave_map if the option 'Stats'
+  // Get the stats information as an octave_scalar_map if the option 'Stats'
   // has been set with odeset
   // "nsteps", "nfailed", "nfevals", "npds", "ndecomps", "nlinsols"
   octave_value_list vstatinput;
@@ -660,7 +660,7 @@ ode2r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Set up output arguments that depend on how many output arguments
   // are desired from the caller
   if (nargout == 1) {
-    Octave_map vretmap;
+    octave_scalar_map vretmap;
     vretmap.assign ("x", vtres);
     vretmap.assign ("y", vyres);
     vretmap.assign ("solver", "ode2r");
diff --git a/src/odepkg_octsolver_radau5.cc b/src/odepkg_octsolver_radau5.cc
index ebdcfa3..76ec2ed 100644
--- a/src/odepkg_octsolver_radau5.cc
+++ b/src/odepkg_octsolver_radau5.cc
@@ -277,7 +277,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   octave_idx_type nargin = args.length (); // The number of input arguments
   octave_value_list vretval;               // The cell array of return args
-  Octave_map vodeopt;                      // The OdePkg options structure
+  octave_scalar_map vodeopt;               // The OdePkg options structure
 
   // Check number and types of all input arguments
   if (nargin < 3) {
@@ -319,7 +319,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
     // Fourth input argument != OdePkg option, need a default structure
     if (!args(3).is_map ()) {
       octave_value_list tmp = feval ("odeset", tmp, 1);
-      vodeopt = tmp(0).map_value ();       // Create a default structure
+      vodeopt = tmp(0).scalar_map_value ();       // Create a default structure
       for (octave_idx_type vcnt = 3; vcnt < nargin; vcnt++)
         vradau5extarg(vcnt-3) = args(vcnt); // Save arguments in vradau5extarg
     }
@@ -330,7 +330,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
       varin(0) = args(3); varin(1) = "ode5r";
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value ();       // Create structure from args(4)
+      vodeopt = tmp(0).scalar_map_value ();       // Create structure from args(4)
       for (octave_idx_type vcnt = 4; vcnt < nargin; vcnt++)
         vradau5extarg(vcnt-4) = args(vcnt); // Save extra arguments
     }
@@ -341,14 +341,14 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
       varin(0) = args(3); varin(1) = "ode5r"; // Check structure
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value (); // Create a default structure
+      vodeopt = tmp(0).scalar_map_value (); // Create a default structure
     }
 
   } // if (nargin >= 4)
 
   else { // if nargin == 3, everything else has been checked before
     octave_value_list tmp = feval ("odeset", tmp, 1);
-    vodeopt = tmp(0).map_value (); // Create a default structure
+    vodeopt = tmp(0).scalar_map_value (); // Create a default structure
   }
 
 /* Start PREPROCESSING, ie. check which options have been set and
@@ -358,7 +358,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option RelTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vreltol = odepkg_auxiliary_getmapvalue ("RelTol", vodeopt);
+  octave_value vreltol = vodeopt.contents ("RelTol");
   if (vreltol.is_empty ()) {
     vreltol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption",
@@ -375,7 +375,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option AbsTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vabstol = odepkg_auxiliary_getmapvalue ("AbsTol", vodeopt);
+  octave_value vabstol = vodeopt.contents ("AbsTol");
   if (vabstol.is_empty ()) {
     vabstol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption",
@@ -405,7 +405,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option NormControl will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt);
+  octave_value vnorm = vodeopt.contents ("NormControl");
   if (!vnorm.is_empty ())
     if (vnorm.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -413,31 +413,31 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option NonNegative will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnneg = odepkg_auxiliary_getmapvalue ("NonNegative", vodeopt);
+  octave_value vnneg = vodeopt.contents ("NonNegative");
   if (!vnneg.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"NonNegative\" will be ignored by this solver");
 
   // Implementation of the option OutputFcn has been finished, this
   // option can be set by the user to another value than default value
-  vradau5pltfun = odepkg_auxiliary_getmapvalue ("OutputFcn", vodeopt);
+  vradau5pltfun = vodeopt.contents ("OutputFcn");
   if (vradau5pltfun.is_empty () && nargout == 0) vradau5pltfun = "odeplot";
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  vradau5outsel = odepkg_auxiliary_getmapvalue ("OutputSel", vodeopt);
+  vradau5outsel = vodeopt.contents ("OutputSel");
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  vradau5refine = odepkg_auxiliary_getmapvalue ("Refine", vodeopt);
+  vradau5refine = vodeopt.contents ("Refine");
 
   // Implementation of the option Stats has been finished, this option
   // can be set by the user to another value than default value
-  octave_value vstats = odepkg_auxiliary_getmapvalue ("Stats", vodeopt);
+  octave_value vstats = vodeopt.contents ("Stats");
 
   // Implementation of the option InitialStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vinitstep = odepkg_auxiliary_getmapvalue ("InitialStep", vodeopt);
+  octave_value vinitstep = vodeopt.contents ("InitialStep");
   if (args(1).length () > 2) {
     error_with_id ("OdePkg:InvalidOption",
       "Fixed time stamps are not supported by this solver");
@@ -451,7 +451,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option MaxStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vmaxstep = odepkg_auxiliary_getmapvalue ("MaxStep", vodeopt);
+  octave_value vmaxstep = vodeopt.contents ("MaxStep");
   if (vmaxstep.is_empty () && args(1).length () == 2) {
     vmaxstep = (args(1).vector_value ()(1) - args(1).vector_value ()(0)) / 12.5;
     warning_with_id ("OdePkg:InvalidOption",
@@ -462,24 +462,24 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Implementation of the option Events has been finished, this
   // option can be set by the user to another value than default
   // value, odepkg_structure_check already checks for a valid value
-  vradau5evefun = odepkg_auxiliary_getmapvalue ("Events", vodeopt);
+  vradau5evefun = vodeopt.contents ("Events");
 
   // Implementation of the option 'Jacobian' has been finished, these
   // options can be set by the user to another value than default
-  vradau5jacfun = odepkg_auxiliary_getmapvalue ("Jacobian", vodeopt);
+  vradau5jacfun = vodeopt.contents ("Jacobian");
   octave_idx_type vradau5jac = 0; // We need to set this if no Jac available
   if (!vradau5jacfun.is_empty ()) vradau5jac = 1;
 
   // The option JPattern will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vradau5jacpat = odepkg_auxiliary_getmapvalue ("JPattern", vodeopt);
+  octave_value vradau5jacpat = vodeopt.contents ("JPattern");
   if (!vradau5jacpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"JPattern\" will be ignored by this solver");
 
   // The option Vectorized will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vradau5vectorize = odepkg_auxiliary_getmapvalue ("Vectorized", vodeopt);
+  octave_value vradau5vectorize = vodeopt.contents ("Vectorized");
   if (!vradau5vectorize.is_empty ())
     if (vradau5vectorize.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -487,7 +487,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option 'Mass' has been finished, these
   // options can be set by the user to another value than default
-  vradau5mass = odepkg_auxiliary_getmapvalue ("Mass", vodeopt);
+  vradau5mass = vodeopt.contents ("Mass");
   octave_idx_type vradau5mas = 0;
   if (!vradau5mass.is_empty ()) {
     vradau5mas = 1;
@@ -498,7 +498,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option MStateDependence will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  vradau5massstate = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt);
+  vradau5massstate = vodeopt.contents ("MStateDependence");
   if (!vradau5massstate.is_empty ())
     if (vradau5massstate.string_value ().compare ("weak") != 0) // 'weak' is default
       warning_with_id ("OdePkg:InvalidOption",
@@ -506,14 +506,14 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option MStateDependence will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  octave_value vmvpat = odepkg_auxiliary_getmapvalue ("MvPattern", vodeopt);
+  octave_value vmvpat = vodeopt.contents ("MvPattern");
   if (!vmvpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"MvPattern\" will be ignored by this solver");
 
   // The option MassSingular will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt);
+  octave_value vmsing = vodeopt.contents ("MassSingular");
   if (!vmsing.is_empty ())
     if (vmsing.string_value ().compare ("maybe") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -521,21 +521,21 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option InitialSlope will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vinitslope = odepkg_auxiliary_getmapvalue ("InitialSlope", vodeopt);
+  octave_value vinitslope = vodeopt.contents ("InitialSlope");
   if (!vinitslope.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"InitialSlope\" will be ignored by this solver");
 
   // The option MaxOrder will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vmaxder = odepkg_auxiliary_getmapvalue ("MaxOrder", vodeopt);
+  octave_value vmaxder = vodeopt.contents ("MaxOrder");
   if (!vmaxder.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"MaxOrder\" will be ignored by this solver");
 
   // The option BDF will be ignored by this solver, the core Fortran
   // solver doesn't support this option
-  octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt);
+  octave_value vbdf = vodeopt.contents ("BDF");
   if (!vbdf.is_empty ())
     if (vbdf.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption", 
@@ -543,7 +543,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option NewtonTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vNTOL = odepkg_auxiliary_getmapvalue ("NewtonTol", vodeopt);
+  octave_value vNTOL = vodeopt.contents ("NewtonTol");
   if (vNTOL.is_empty ()) {
     vNTOL = 0;
     warning_with_id ("OdePkg:InvalidOption", 
@@ -553,7 +553,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Implementation of the option MaxNewtonIterations has been finished, this
   // option can be set by the user to another value than default value
   octave_value vmaxnit = 
-    odepkg_auxiliary_getmapvalue ("MaxNewtonIterations", vodeopt);
+    vodeopt.contents ("MaxNewtonIterations");
   if (vmaxnit.is_empty ()) {
     vmaxnit = 7; warning_with_id ("OdePkg:InvalidOption", 
       "Option \"MaxNewtonIterations\" not set, default value 7 is used");
@@ -653,7 +653,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   if (!vradau5evefun.is_empty ()) odepkg_auxiliary_evaleventfun
     (vradau5evefun, vted, vfin, vradau5extarg, 2);
   
-  // Get the stats information as an Octave_map if the option 'Stats'
+  // Get the stats information as an octave_scalar_map if the option 'Stats'
   // has been set with odeset
   // "nsteps", "nfailed", "nfevals", "npds", "ndecomps", "nlinsols"
   octave_value_list vstatinput;
@@ -672,7 +672,7 @@ ode5r (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Set up output arguments that depend on how many output arguments
   // are desired from the caller
   if (nargout == 1) {
-    Octave_map vretmap;
+    octave_scalar_map vretmap;
     vretmap.assign ("x", vtres);
     vretmap.assign ("y", vyres);
     vretmap.assign ("solver", "ode5r");
diff --git a/src/odepkg_octsolver_rodas.cc b/src/odepkg_octsolver_rodas.cc
index c550b55..9eed5b7 100644
--- a/src/odepkg_octsolver_rodas.cc
+++ b/src/odepkg_octsolver_rodas.cc
@@ -491,7 +491,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   octave_idx_type nargin = args.length (); // The number of input arguments
   octave_value_list vretval;               // The cell array of return args
-  Octave_map vodeopt;                      // The OdePkg options structure
+  octave_scalar_map vodeopt;                      // The OdePkg options structure
 
   // Check number and types of all input arguments
   if (nargin < 3) {
@@ -533,7 +533,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
     // Fourth input argument != OdePkg option, need a default structure
     if (!args(3).is_map ()) {
       octave_value_list tmp = feval ("odeset", tmp, 1);
-      vodeopt = tmp(0).map_value ();       // Create a default structure
+      vodeopt = tmp(0).scalar_map_value ();       // Create a default structure
       for (octave_idx_type vcnt = 3; vcnt < nargin; vcnt++)
         vrodasextarg(vcnt-3) = args(vcnt); // Save arguments in vrodasextarg
     }
@@ -544,7 +544,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
       varin(0) = args(3); varin(1) = "oders";
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value ();       // Create structure from args(4)
+      vodeopt = tmp(0).scalar_map_value ();       // Create structure from args(4)
       for (octave_idx_type vcnt = 4; vcnt < nargin; vcnt++)
         vrodasextarg(vcnt-4) = args(vcnt); // Save extra arguments
     }
@@ -555,14 +555,14 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
       varin(0) = args(3); varin(1) = "oders"; // Check structure
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value (); // Create a default structure
+      vodeopt = tmp(0).scalar_map_value (); // Create a default structure
     }
 
   } // if (nargin >= 4)
 
   else { // if nargin == 3, everything else has been checked before
     octave_value_list tmp = feval ("odeset", tmp, 1);
-    vodeopt = tmp(0).map_value (); // Create a default structure
+    vodeopt = tmp(0).scalar_map_value (); // Create a default structure
   }
 
 /* Start PREPROCESSING, ie. check which options have been set and
@@ -572,7 +572,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option RelTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vreltol = odepkg_auxiliary_getmapvalue ("RelTol", vodeopt);
+  octave_value vreltol = vodeopt.contents ("RelTol");
   if (vreltol.is_empty ()) {
     vreltol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption",
@@ -589,7 +589,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option AbsTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vabstol = odepkg_auxiliary_getmapvalue ("AbsTol", vodeopt);
+  octave_value vabstol = vodeopt.contents ("AbsTol");
   if (vabstol.is_empty ()) {
     vabstol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption",
@@ -619,7 +619,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option NormControl will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt);
+  octave_value vnorm = vodeopt.contents ("NormControl");
   if (!vnorm.is_empty ())
     if (vnorm.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -627,31 +627,31 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option NonNegative will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnneg = odepkg_auxiliary_getmapvalue ("NonNegative", vodeopt);
+  octave_value vnneg = vodeopt.contents ("NonNegative");
   if (!vnneg.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"NonNegative\" will be ignored by this solver");
 
   // Implementation of the option OutputFcn has been finished, this
   // option can be set by the user to another value than default value
-  vrodaspltfun = odepkg_auxiliary_getmapvalue ("OutputFcn", vodeopt);
+  vrodaspltfun = vodeopt.contents ("OutputFcn");
   if (vrodaspltfun.is_empty () && nargout == 0) vrodaspltfun = "odeplot";
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  vrodasoutsel = odepkg_auxiliary_getmapvalue ("OutputSel", vodeopt);
+  vrodasoutsel = vodeopt.contents ("OutputSel");
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  vrodasrefine = odepkg_auxiliary_getmapvalue ("Refine", vodeopt);
+  vrodasrefine = vodeopt.contents ("Refine");
 
   // Implementation of the option Stats has been finished, this option
   // can be set by the user to another value than default value
-  octave_value vstats = odepkg_auxiliary_getmapvalue ("Stats", vodeopt);
+  octave_value vstats = vodeopt.contents ("Stats");
 
   // Implementation of the option InitialStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vinitstep = odepkg_auxiliary_getmapvalue ("InitialStep", vodeopt);
+  octave_value vinitstep = vodeopt.contents ("InitialStep");
   if (args(1).length () > 2) {
     error_with_id ("OdePkg:InvalidOption",
       "Fixed time stamps are not supported by this solver");
@@ -665,7 +665,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option MaxStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vmaxstep = odepkg_auxiliary_getmapvalue ("MaxStep", vodeopt);
+  octave_value vmaxstep = vodeopt.contents ("MaxStep");
   if (vmaxstep.is_empty () && args(1).length () == 2) {
     vmaxstep = (args(1).vector_value ()(1) - args(1).vector_value ()(0)) / 12.5;
     warning_with_id ("OdePkg:InvalidOption",
@@ -676,24 +676,24 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Implementation of the option Events has been finished, this
   // option can be set by the user to another value than default
   // value, odepkg_structure_check already checks for a valid value
-  vrodasevefun = odepkg_auxiliary_getmapvalue ("Events", vodeopt);
+  vrodasevefun = vodeopt.contents ("Events");
 
   // Implementation of the option 'Jacobian' has been finished, these
   // options can be set by the user to another value than default
-  vrodasjacfun = odepkg_auxiliary_getmapvalue ("Jacobian", vodeopt);
+  vrodasjacfun = vodeopt.contents ("Jacobian");
   octave_idx_type vrodasjac = 0; // We need to set this if no Jac available
   if (!vrodasjacfun.is_empty ()) vrodasjac = 1;
 
   // The option JPattern will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vrodasjacpat = odepkg_auxiliary_getmapvalue ("JPattern", vodeopt);
+  octave_value vrodasjacpat = vodeopt.contents ("JPattern");
   if (!vrodasjacpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"JPattern\" will be ignored by this solver");
 
   // The option Vectorized will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vrodasvectorize = odepkg_auxiliary_getmapvalue ("Vectorized", vodeopt);
+  octave_value vrodasvectorize = vodeopt.contents ("Vectorized");
   if (!vrodasvectorize.is_empty ())
     if (vrodasvectorize.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -701,7 +701,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option 'Mass' has been finished, these
   // options can be set by the user to another value than default
-  vrodasmass = odepkg_auxiliary_getmapvalue ("Mass", vodeopt);
+  vrodasmass = vodeopt.contents ("Mass");
   octave_idx_type vrodasmas = 0;
   if (!vrodasmass.is_empty ()) {
     vrodasmas = 1;
@@ -712,7 +712,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option MStateDependence will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  vrodasmassstate = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt);
+  vrodasmassstate = vodeopt.contents ("MStateDependence");
   if (!vrodasmassstate.is_empty ())
     if (vrodasmassstate.string_value ().compare ("weak") != 0) // 'weak' is default
       warning_with_id ("OdePkg:InvalidOption",
@@ -720,14 +720,14 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option MStateDependence will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  octave_value vmvpat = odepkg_auxiliary_getmapvalue ("MvPattern", vodeopt);
+  octave_value vmvpat = vodeopt.contents ("MvPattern");
   if (!vmvpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"MvPattern\" will be ignored by this solver");
 
   // The option MassSingular will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt);
+  octave_value vmsing = vodeopt.contents ("MassSingular");
   if (!vmsing.is_empty ())
     if (vmsing.string_value ().compare ("maybe") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -735,21 +735,21 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option InitialSlope will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vinitslope = odepkg_auxiliary_getmapvalue ("InitialSlope", vodeopt);
+  octave_value vinitslope = vodeopt.contents ("InitialSlope");
   if (!vinitslope.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"InitialSlope\" will be ignored by this solver");
 
   // The option MaxOrder will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vmaxder = odepkg_auxiliary_getmapvalue ("MaxOrder", vodeopt);
+  octave_value vmaxder = vodeopt.contents ("MaxOrder");
   if (!vmaxder.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"MaxOrder\" will be ignored by this solver");
 
   // The option BDF will be ignored by this solver, the core Fortran
   // solver doesn't support this option
-  octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt);
+  octave_value vbdf = vodeopt.contents ("BDF");
   if (!vbdf.is_empty ())
     if (vbdf.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption", 
@@ -757,12 +757,12 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // The option NewtonTol and MaxNewtonIterations will be ignored by
   // this solver, IT NEEDS TO BE CHECKED IF THE FORTRAN CORE SOLVER
   // CAN HANDLE THESE OPTIONS
-  octave_value vntol = odepkg_auxiliary_getmapvalue ("NewtonTol", vodeopt);
+  octave_value vntol = vodeopt.contents ("NewtonTol");
   if (!vntol.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"NewtonTol\" will be ignored by this solver");
   octave_value vmaxnewton = 
-    odepkg_auxiliary_getmapvalue ("MaxNewtonIterations", vodeopt);
+    vodeopt.contents ("MaxNewtonIterations");
   if (!vmaxnewton.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"MaxNewtonIterations\" will be ignored by this solver");
@@ -854,7 +854,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   if (!vrodasevefun.is_empty ()) odepkg_auxiliary_evaleventfun
     (vrodasevefun, vted, vfin, vrodasextarg, 2);
   
-  // Get the stats information as an Octave_map if the option 'Stats'
+  // Get the stats information as an octave_scalar_map if the option 'Stats'
   // has been set with odeset
   octave_value_list vstatinput;
   vstatinput(0) = IWORK[16];
@@ -872,7 +872,7 @@ oders (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Set up output arguments that depend on how many output arguments
   // are desired from the caller
   if (nargout == 1) {
-    Octave_map vretmap;
+    octave_scalar_map vretmap;
     vretmap.assign ("x", vtres);
     vretmap.assign ("y", vyres);
     vretmap.assign ("solver", "oders");
diff --git a/src/odepkg_octsolver_seulex.cc b/src/odepkg_octsolver_seulex.cc
index 79ca2e4..d310c5a 100644
--- a/src/odepkg_octsolver_seulex.cc
+++ b/src/odepkg_octsolver_seulex.cc
@@ -285,7 +285,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   octave_idx_type nargin = args.length (); // The number of input arguments
   octave_value_list vretval;               // The cell array of return args
-  Octave_map vodeopt;                      // The OdePkg options structure
+  octave_scalar_map vodeopt;                      // The OdePkg options structure
 
   // Check number and types of all input arguments
   if (nargin < 3) {
@@ -327,7 +327,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
     // Fourth input argument != OdePkg option, need a default structure
     if (!args(3).is_map ()) {
       octave_value_list tmp = feval ("odeset", tmp, 1);
-      vodeopt = tmp(0).map_value ();       // Create a default structure
+      vodeopt = tmp(0).scalar_map_value ();       // Create a default structure
       for (octave_idx_type vcnt = 3; vcnt < nargin; vcnt++)
         vseulexextarg(vcnt-3) = args(vcnt); // Save arguments in vseulexextarg
     }
@@ -338,7 +338,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
       varin(0) = args(3); varin(1) = "odesx";
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value ();       // Create structure from args(4)
+      vodeopt = tmp(0).scalar_map_value ();       // Create structure from args(4)
       for (octave_idx_type vcnt = 4; vcnt < nargin; vcnt++)
         vseulexextarg(vcnt-4) = args(vcnt); // Save extra arguments
     }
@@ -349,14 +349,14 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
       varin(0) = args(3); varin(1) = "odesx"; // Check structure
       octave_value_list tmp = feval ("odepkg_structure_check", varin, 1);
       if (error_state) return (vretval);
-      vodeopt = tmp(0).map_value (); // Create a default structure
+      vodeopt = tmp(0).scalar_map_value (); // Create a default structure
     }
 
   } // if (nargin >= 4)
 
   else { // if nargin == 3, everything else has been checked before
     octave_value_list tmp = feval ("odeset", tmp, 1);
-    vodeopt = tmp(0).map_value (); // Create a default structure
+    vodeopt = tmp(0).scalar_map_value (); // Create a default structure
   }
 
 /* Start PREPROCESSING, ie. check which options have been set and
@@ -366,7 +366,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option RelTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vreltol = odepkg_auxiliary_getmapvalue ("RelTol", vodeopt);
+  octave_value vreltol = vodeopt.contents ("RelTol");
   if (vreltol.is_empty ()) {
     vreltol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption",
@@ -383,7 +383,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option AbsTol has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vabstol = odepkg_auxiliary_getmapvalue ("AbsTol", vodeopt);
+  octave_value vabstol = vodeopt.contents ("AbsTol");
   if (vabstol.is_empty ()) {
     vabstol = 1.0e-6;
     warning_with_id ("OdePkg:InvalidOption",
@@ -413,7 +413,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option NormControl will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnorm = odepkg_auxiliary_getmapvalue ("NormControl", vodeopt);
+  octave_value vnorm = vodeopt.contents ("NormControl");
   if (!vnorm.is_empty ())
     if (vnorm.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -421,31 +421,31 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option NonNegative will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vnneg = odepkg_auxiliary_getmapvalue ("NonNegative", vodeopt);
+  octave_value vnneg = vodeopt.contents ("NonNegative");
   if (!vnneg.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"NonNegative\" will be ignored by this solver");
 
   // Implementation of the option OutputFcn has been finished, this
   // option can be set by the user to another value than default value
-  vseulexpltfun = odepkg_auxiliary_getmapvalue ("OutputFcn", vodeopt);
+  vseulexpltfun = vodeopt.contents ("OutputFcn");
   if (vseulexpltfun.is_empty () && nargout == 0) vseulexpltfun = "odeplot";
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  vseulexoutsel = odepkg_auxiliary_getmapvalue ("OutputSel", vodeopt);
+  vseulexoutsel = vodeopt.contents ("OutputSel");
 
   // Implementation of the option OutputSel has been finished, this
   // option can be set by the user to another value than default value
-  vseulexrefine = odepkg_auxiliary_getmapvalue ("Refine", vodeopt);
+  vseulexrefine = vodeopt.contents ("Refine");
 
   // Implementation of the option Stats has been finished, this option
   // can be set by the user to another value than default value
-  octave_value vstats = odepkg_auxiliary_getmapvalue ("Stats", vodeopt);
+  octave_value vstats = vodeopt.contents ("Stats");
 
   // Implementation of the option InitialStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vinitstep = odepkg_auxiliary_getmapvalue ("InitialStep", vodeopt);
+  octave_value vinitstep = vodeopt.contents ("InitialStep");
   if (args(1).length () > 2) {
     error_with_id ("OdePkg:InvalidOption",
       "Fixed time stamps are not supported by this solver");
@@ -459,7 +459,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option MaxStep has been finished, this
   // option can be set by the user to another value than default value
-  octave_value vmaxstep = odepkg_auxiliary_getmapvalue ("MaxStep", vodeopt);
+  octave_value vmaxstep = vodeopt.contents ("MaxStep");
   if (vmaxstep.is_empty () && args(1).length () == 2) {
     vmaxstep = (args(1).vector_value ()(1) - args(1).vector_value ()(0)) / 12.5;
     warning_with_id ("OdePkg:InvalidOption",
@@ -470,24 +470,24 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Implementation of the option Events has been finished, this
   // option can be set by the user to another value than default
   // value, odepkg_structure_check already checks for a valid value
-  vseulexevefun = odepkg_auxiliary_getmapvalue ("Events", vodeopt);
+  vseulexevefun = vodeopt.contents ("Events");
 
   // Implementation of the option 'Jacobian' has been finished, these
   // options can be set by the user to another value than default
-  vseulexjacfun = odepkg_auxiliary_getmapvalue ("Jacobian", vodeopt);
+  vseulexjacfun = vodeopt.contents ("Jacobian");
   octave_idx_type vseulexjac = 0; // We need to set this if no Jac available
   if (!vseulexjacfun.is_empty ()) vseulexjac = 1;
 
   // The option JPattern will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vseulexjacpat = odepkg_auxiliary_getmapvalue ("JPattern", vodeopt);
+  octave_value vseulexjacpat = vodeopt.contents ("JPattern");
   if (!vseulexjacpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"JPattern\" will be ignored by this solver");
 
   // The option Vectorized will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vseulexvectorize = odepkg_auxiliary_getmapvalue ("Vectorized", vodeopt);
+  octave_value vseulexvectorize = vodeopt.contents ("Vectorized");
   if (!vseulexvectorize.is_empty ())
     if (vseulexvectorize.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -495,7 +495,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // Implementation of the option 'Mass' has been finished, these
   // options can be set by the user to another value than default
-  vseulexmass = odepkg_auxiliary_getmapvalue ("Mass", vodeopt);
+  vseulexmass = vodeopt.contents ("Mass");
   octave_idx_type vseulexmas = 0;
   if (!vseulexmass.is_empty ()) {
     vseulexmas = 1;
@@ -506,7 +506,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option MStateDependence will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  vseulexmassstate = odepkg_auxiliary_getmapvalue ("MStateDependence", vodeopt);
+  vseulexmassstate = vodeopt.contents ("MStateDependence");
   if (!vseulexmassstate.is_empty ())
     if (vseulexmassstate.string_value ().compare ("weak") != 0) // 'weak' is default
       warning_with_id ("OdePkg:InvalidOption",
@@ -514,14 +514,14 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option MStateDependence will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  octave_value vmvpat = odepkg_auxiliary_getmapvalue ("MvPattern", vodeopt);
+  octave_value vmvpat = vodeopt.contents ("MvPattern");
   if (!vmvpat.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"MvPattern\" will be ignored by this solver");
 
   // The option MassSingular will be ignored by this solver, the
   // core Fortran solver doesn't support this option
-  octave_value vmsing = odepkg_auxiliary_getmapvalue ("MassSingular", vodeopt);
+  octave_value vmsing = vodeopt.contents ("MassSingular");
   if (!vmsing.is_empty ())
     if (vmsing.string_value ().compare ("maybe") != 0)
       warning_with_id ("OdePkg:InvalidOption",
@@ -529,21 +529,21 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
 
   // The option InitialSlope will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vinitslope = odepkg_auxiliary_getmapvalue ("InitialSlope", vodeopt);
+  octave_value vinitslope = vodeopt.contents ("InitialSlope");
   if (!vinitslope.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"InitialSlope\" will be ignored by this solver");
 
   // The option MaxOrder will be ignored by this solver, the core
   // Fortran solver doesn't support this option
-  octave_value vmaxder = odepkg_auxiliary_getmapvalue ("MaxOrder", vodeopt);
+  octave_value vmaxder = vodeopt.contents ("MaxOrder");
   if (!vmaxder.is_empty ())
     warning_with_id ("OdePkg:InvalidOption",
       "Option \"MaxOrder\" will be ignored by this solver");
 
   // The option BDF will be ignored by this solver, the core Fortran
   // solver doesn't support this option
-  octave_value vbdf = odepkg_auxiliary_getmapvalue ("BDF", vodeopt);
+  octave_value vbdf = vodeopt.contents ("BDF");
   if (!vbdf.is_empty ())
     if (vbdf.string_value ().compare ("off") != 0)
       warning_with_id ("OdePkg:InvalidOption", 
@@ -551,12 +551,12 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // The option NewtonTol and MaxNewtonIterations will be ignored by
   // this solver, IT NEEDS TO BE CHECKED IF THE FORTRAN CORE SOLVER
   // CAN HANDLE THESE OPTIONS
-  octave_value vntol = odepkg_auxiliary_getmapvalue ("NewtonTol", vodeopt);
+  octave_value vntol = vodeopt.contents ("NewtonTol");
   if (!vntol.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"NewtonTol\" will be ignored by this solver");
   octave_value vmaxnewton = 
-    odepkg_auxiliary_getmapvalue ("MaxNewtonIterations", vodeopt);
+    vodeopt.contents ("MaxNewtonIterations");
   if (!vmaxnewton.is_empty ())
     warning_with_id ("OdePkg:InvalidOption", 
       "Option \"MaxNewtonIterations\" will be ignored by this solver");
@@ -653,7 +653,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   if (!vseulexevefun.is_empty ()) odepkg_auxiliary_evaleventfun
     (vseulexevefun, vted, vfin, vseulexextarg, 2);
   
-  // Get the stats information as an Octave_map if the option 'Stats'
+  // Get the stats information as an octave_scalar_map if the option 'Stats'
   // has been set with odeset
   octave_value_list vstatinput;
   vstatinput(0) = IWORK[16];
@@ -671,7 +671,7 @@ odesx (@@odepkg_equations_lorenz, [0, 25], [3 15 1], vopt);\n\
   // Set up output arguments that depend on how many output arguments
   // are desired from the caller
   if (nargout == 1) {
-    Octave_map vretmap;
+    octave_scalar_map vretmap;
     vretmap.assign ("x", vtres);
     vretmap.assign ("y", vyres);
     vretmap.assign ("solver", "odesx");

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



More information about the Pkg-octave-commit mailing list