changeset 3130:02766207b74c

[project @ 1998-01-25 08:27:23 by jwe]
author jwe
date Sun, 25 Jan 1998 08:27:25 +0000
parents 4061d67231a8
children 9c5160c83bd2
files ChangeLog PROJECTS README.Windows aclocal.m4 configure.in doc/interpreter/eval.texi doc/interpreter/install.texi libcruft/ChangeLog liboctave/Array2-idx.h liboctave/CMatrix.cc liboctave/ChangeLog liboctave/dMatrix.cc readline/ChangeLog readline/Makefile.in readline/aclocal.m4 src/ChangeLog src/dynamic-ld.cc src/pr-output.cc src/variables.cc
diffstat 19 files changed, 397 insertions(+), 180 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Jan 20 05:11:16 1998 +0000
+++ b/ChangeLog	Sun Jan 25 08:27:25 1998 +0000
@@ -1,3 +1,23 @@
+Sun Jan 25 01:59:47 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* aclocal.m4 (OCTAVE_F2C_F77_COMPAT): Require OCTAVE_PROG_G77.
+	Handle cross compiling with g77.
+	(OCTAVE_REINSTALL_SIGHANDLERS): Provide defaults for cross compiling.
+
+	* aclocal.m4 (OCTAVE_PROG_AR, OCTAVE_PROG_G77, OCTAVE_PROG_PAGER,
+	OCTAVE_PROG_GNUPLOT, OCTAVE_PROG_RUNTEST, OCTAVE_F77_MAIN_FLAG):
+	New macros.
+	* configure.in: Use them in place of in-line code.
+	
+Sat Jan 24 00:33:14 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* aclocal.m4 (OCTAVE_HOST_TYPE): Don't set target_host_type.
+	* configure.in: Use canonical_host_type in place of target_host_type.
+
+Fri Jan 23 02:47:57 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* configure.in: Also check for -fno-rtti.
+
 Thu Jan 15 23:12:27 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
 
 	* config.guess, config.sub: Update to new version from the FSF.
--- a/PROJECTS	Tue Jan 20 05:11:16 1998 +0000
+++ b/PROJECTS	Sun Jan 25 08:27:25 1998 +0000
@@ -36,6 +36,8 @@
   * Fix CollocWt to handle Laguerre polynomials.  Make it easy to
     extend it to other polynomial types.
 
+  * Make filter faster (perhaps by calling BLAS functions).
+
   * Add optional arguments to colloc so that it's not restricted to
     Legendre polynomials.
 
@@ -570,6 +572,8 @@
   * Should info/terminal.c include definitions for PC, BC, UP, and
     ospeed on all systems?
 
+  * Clean up help stuff.
+
   * Demo files.
 
   * As the number of m-files with octave grows perhaps a 'Contents.m'
--- a/README.Windows	Tue Jan 20 05:11:16 1998 +0000
+++ b/README.Windows	Sun Jan 25 08:27:25 1998 +0000
@@ -54,9 +54,20 @@
   PostScript, but it would be much nicer if it could open a separate
   window and draw pretty graphs there.
 
+* If Octave takes a long time to find function files, you may have to
+  modify your LOADPATH to avoid device names specified using the
+  `//DEV/sudir' syntax.  To map the D: drive (for example) to
+  /D_DRIVE, do the following:
 
-If you know of solutions for any of these problems, please contact
-bug-octave@bevo.che.wisc.edu.
+    cd /
+    mkdir /D_DRIVE
+    mount d: /D_DRIVE
+
+  Then you can set your LOADPATH to include /D_DRIVE/subdir instead of
+  //d/subdir.
+
+If you know of solutions for any of the problems mentioned above,
+please contact bug-octave@bevo.che.wisc.edu.
 
 More information about the GNU-WIN32 project is available via the WWW
 at http://www.cygnus.com/gnu-win32.
@@ -66,4 +77,4 @@
 University of Wisconsin-Madison
 Department of Chemical Engineering
 
-Wed Jan  8 23:15:59 1997
+Thu Jan 15 23:35:03 1998
--- a/aclocal.m4	Tue Jan 20 05:11:16 1998 +0000
+++ b/aclocal.m4	Sun Jan 25 08:27:25 1998 +0000
@@ -29,13 +29,12 @@
 if test -z "$host"; then
   host=unknown
 fi
-target_host_type=$host
 canonical_host_type=$host
 if test "$host" = unknown; then
   AC_MSG_WARN([configuring Octave for unknown system type
 ])
 fi
-AC_SUBST(target_host_type)])
+AC_SUBST(canonical_host_type)])
 dnl
 dnl Set default value for a variable and substitute it.
 dnl
@@ -59,6 +58,35 @@
   fi
 fi])
 dnl
+dnl Check for ar.
+dnl
+AC_DEFUN(OCTAVE_PROG_AR,
+[if test -z "$AR"; then
+  AR=ar
+fi
+AC_SUBST(AR)
+
+if test -z "$ARFLAGS"; then
+  ARFLAGS="rc"
+fi
+AC_SUBST(ARFLAGS)
+])
+dnl
+dnl See if $F77 is the GNU Fortran compiler
+dnl
+AC_DEFUN(OCTAVE_PROG_G77,
+[AC_CACHE_CHECK([whether ${F77-f77} is the GNU Fortran compiler],
+octave_cv_f77_is_g77,
+[if $use_g77; then
+  octave_cv_f77_is_g77=yes
+else
+  f77_output=`$F77 -v 2>&1 | grep "GNU F77"`
+  if test -n "$f77_output"; then
+    octave_cv_f77_is_g77=yes
+  fi
+fi])
+])
+dnl
 dnl See what libraries are used by the Fortran compiler.
 dnl
 dnl Write a minimal program and compile it with -v.  I don't know what
@@ -239,6 +267,21 @@
 FLIBS="$octave_cv_flibs"
 AC_MSG_RESULT([$FLIBS])])
 dnl
+dnl This is apparently needed on some Linux systems.
+dnl
+AC_DEFUN(OCTAVE_F77_MAIN_FLAG,
+[FORTRAN_MAIN_FLAG=
+case "$canonical_host_type" in
+  *-linux-*)
+    FORTRAN_MAIN_FLAG="-u MAIN__"
+  ;;
+esac
+if test -n "$FORTRAN_MAIN_FLAG"; then
+  AC_MSG_RESULT([defining FORTRAN_MAIN_FLAG to be $FORTRAN_MAIN_FLAG])
+fi
+AC_SUBST(FORTRAN_MAIN_FLAG)
+])
+dnl
 dnl See if the Fortran compiler uses uppercase external names.
 dnl
 dnl OCTAVE_F77_UPPERCASE_NAMES()
@@ -297,13 +340,21 @@
 dnl
 dnl OCTAVE_F2C_F77_COMPAT()
 AC_DEFUN(OCTAVE_F2C_F77_COMPAT,
-[AC_REQUIRE([OCTAVE_FLIBS])
+[AC_REQUIRE([OCTAVE_PROG_G77])
+AC_REQUIRE([OCTAVE_FLIBS])
 AC_REQUIRE([OCTAVE_F77_APPEND_UNDERSCORE])
-AC_MSG_CHECKING([$F77/f2c compatibility])
-AC_CACHE_VAL(octave_cv_f2c_f77_compat,
-[trap 'rm -f ftest* ctest* core; exit 1' 1 3 15
-octave_cv_f2c_f77_compat=no
-cat > ftest.f <<EOF
+if test "$cross_compiling" = yes; then
+  octave_cv_f2c_f77_compat=yes
+  if test "$octave_cv_f77_is_g77" = yes; then
+    AC_MSG_RESULT([assuming ${F77-f77} cross compiler is f2c compatible])
+  else
+    AC_MSG_WARN([assuming ${F77-f77} cross compiler is f2c compatible])
+  fi
+else
+  AC_CACHE_CHECK([$F77/f2c compatibility], octave_cv_f2c_f77_compat,
+  [trap 'rm -f ftest* ctest* core; exit 1' 1 3 15
+  octave_cv_f2c_f77_compat=no
+  cat > ftest.f <<EOF
       INTEGER FUNCTION FORSUB (C, D)
       CHARACTER *(*) C
       INTEGER L
@@ -314,10 +365,9 @@
       RETURN
       END
 EOF
-${F77-f77} -c ftest.f 1>&AC_FD_CC 2>&AC_FD_CC
-dnl
-changequote(, )
-cat > ctest.c <<EOF
+  ${F77-f77} -c ftest.f 1>&AC_FD_CC 2>&AC_FD_CC
+  changequote(, )
+  cat > ctest.c <<EOF
 #include "confdefs.h"
 static char s[14];
 int main ()
@@ -338,19 +388,19 @@
 int MAIN__ () { return 0; }
 #endif
 EOF
-changequote([, ])
-dnl
-if ${CC-cc} -c ctest.c 1>&AC_FD_CC 2>&AC_FD_CC; then
-  if ${CC-cc} -o ctest ctest.o ftest.o $FLIBS -lm 1>&AC_FD_CC 2>&AC_FD_CC; then
-    ctest_output=`./ctest 2>&1`
-    status=$?
-    if test $status -eq 0 && test "$ctest_output" = "FOO-I-HITHERE 10"; then
-      octave_cv_f2c_f77_compat=yes
+  changequote([, ])
+  if ${CC-cc} -c ctest.c 1>&AC_FD_CC 2>&AC_FD_CC; then
+    if ${CC-cc} -o ctest ctest.o ftest.o $FLIBS -lm 1>&AC_FD_CC 2>&AC_FD_CC; then
+      ctest_output=`./ctest 2>&1`
+      status=$?
+      if test $status -eq 0 && test "$ctest_output" = "FOO-I-HITHERE 10"; then
+	octave_cv_f2c_f77_compat=yes
+      fi
     fi
-  fi
-fi])
+  fi])
+fi
 rm -f ftest* ctest* core
-AC_MSG_RESULT([$octave_cv_f2c_f77_compat])])
+])
 dnl
 dnl See if struct group has a gr_passwd field.
 dnl
@@ -534,10 +584,18 @@
   exit(nsigint != 2);
 }
 ], octave_cv_must_reinstall_sighandlers=no, octave_cv_must_reinstall_sighandlers=yes,
-AC_MSG_ERROR(cannot check signal handling if cross compiling))])
-AC_MSG_RESULT($octave_cv_must_reinstall_sighandlers)
+if test "$octave_cv_signal_vintage" = svr3; then
+  octave_cv_must_reinstall_sighandlers=yes
+else
+  octave_cv_must_reinstall_sighandlers=no
+fi)])
+if test "$cross_compiling" = yes; then
+  AC_MSG_RESULT([$octave_cv_must_reinstall_sighandlers assumed for cross compilation])
+else
+  AC_MSG_RESULT($octave_cv_must_reinstall_sighandlers)
+fi
 if test "$octave_cv_must_reinstall_sighandlers" = yes; then
-AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
+  AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
 fi
 ])
 dnl
@@ -594,7 +652,6 @@
         return a == A(1);
       ], 
       octave_cv_cxx_new_friend_template_decl=no,
-      octave_cv_cxx_new_friend_template_decl=yes,
       octave_cv_cxx_new_friend_template_decl=yes
     )
     AC_LANG_RESTORE
@@ -658,3 +715,92 @@
     ifelse([$3], , , [$3])
   fi
 ])
+dnl
+dnl What pager should we use?
+dnl
+AC_DEFUN(OCTAVE_PROG_PAGER,
+[if test "$cross_compiling" = yes; then
+  DEFAULT_PAGER=less
+  AC_MSG_RESULT(assuming $DEFAULT_PAGER exists on $canonical_host_type host)
+  AC_SUBST(DEFAULT_PAGER)
+else
+  octave_possible_pagers="less more page pg"
+  case "$canonical_host_type" in
+    *-*-cygwin32)
+      octave_possible_pagers="$octave_possible_pagers more.com"
+    ;;
+  esac
+
+  AC_CHECK_PROGS(DEFAULT_PAGER, $octave_possible_pagers, [])
+  if test -z "$DEFAULT_PAGER"; then
+    warn_less="I couldn't find \`less', \`more', \`page', or \`pg'"
+    AC_MSG_WARN($warn_less)
+  fi
+fi
+])
+dnl
+dnl Does gnuplot exist?  Is it a recent version?
+dnl
+AC_DEFUN(OCTAVE_PROG_GNUPLOT,
+[if test "$cross_compiling" = yes; then
+  GNUPLOT_BINARY=gnuplot
+  AC_MSG_RESULT(assuming $GNUPLOT_BINARY exists on $canonical_host_type host)
+  AC_SUBST(DEFAULT_PAGER)
+  AC_MSG_RESULT(assuming $GNUPLOT_BINARY supports multiplot mode)
+  AC_DEFINE(GNUPLOT_HAS_MULTIPLOT, 1)
+  AC_MSG_RESULT(assuming $GNUPLOT_BINARY supports multiple frams)
+  AC_DEFINE(GNUPLOT_HAS_FRAMES, 1)
+else
+  AC_CHECK_PROG(GNUPLOT_BINARY, gnuplot, gnuplot, [])
+  if test -n "$GNUPLOT_BINARY"; then
+    AC_MSG_CHECKING([to see if your gnuplot supports multiplot])
+    if test -z "`echo 'set term unknown; set multiplot' | \
+      $GNUPLOT_BINARY 2>&1`"; then
+      AC_MSG_RESULT([yes])
+      AC_DEFINE(GNUPLOT_HAS_MULTIPLOT, 1)
+    else
+      AC_MSG_RESULT([no])
+    fi
+    AC_MSG_CHECKING([to see if your gnuplot supports multiple plot windows])
+    if test -z "`echo 'set term x11 2' | $GNUPLOT_BINARY 2>&1`"; then
+      AC_MSG_RESULT([yes])
+      AC_DEFINE(GNUPLOT_HAS_FRAMES, 1)
+    else
+      AC_MSG_RESULT([no])
+    fi
+  else
+    warn_gnuplot="yes"
+
+    ## If you change this text, be sure to also copy it to the set of
+    ## warnings at the end of the script
+
+    AC_MSG_WARN([I didn't find gnuplot.  It isn't necessary to have gnuplot])
+    AC_MSG_WARN([installed, but you won't be able to use any of Octave's])
+    AC_MSG_WARN([plotting commands without it.])
+    AC_MSG_WARN([])
+    AC_MSG_WARN([If gnuplot is installed but it isn't in your path, you can])
+    AC_MSG_WARN([tell Octave where to find it by typing the command])
+    AC_MSG_WARN([])
+    AC_MSG_WARN([gnuplot_binary = "/full/path/to/gnuplot/binary"])
+    AC_MSG_WARN([])
+    AC_MSG_WARN([at the Octave prompt.])
+  fi
+fi
+])
+dnl
+dnl Is DejaGNU installed?
+dnl
+AC_DEFUN(OCTAVE_PROG_RUNTEST,
+[if test "$cross_compiling" = yes; then
+  RUNTEST=runtest
+  AC_MSG_RESULT(assuming $RUNTEST exists on $canonical_host_type host)
+  AC_SUBST(RUNTEST)
+else
+  AC_CHECK_PROG(RUNTEST, runtest, runtest, [])
+  if test -z "$RUNTEST"; then
+    warn_runtest="I didn't find runtest -- install DejaGNU if you want to run \`make check'"
+    AC_MSG_WARN($warn_runtest)
+  fi
+  AC_SUBST(RUNTEST)
+fi
+])
--- a/configure.in	Tue Jan 20 05:11:16 1998 +0000
+++ b/configure.in	Sun Jan 25 08:27:25 1998 +0000
@@ -21,7 +21,7 @@
 ### Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 ### 02111-1307, USA. 
 
-AC_REVISION($Revision: 1.293 $)
+AC_REVISION($Revision: 1.294 $)
 AC_PREREQ(2.9)
 AC_INIT(src/octave.cc)
 AC_CONFIG_HEADER(config.h)
@@ -40,13 +40,13 @@
 OCTAVE_SET_DEFAULT(localfcnfiledir, '$(datadir)/octave/site/m')
 OCTAVE_SET_DEFAULT(localfcnfilepath, '$(localfcnfiledir)//')
 OCTAVE_SET_DEFAULT(archlibdir,
-  '$(libexecdir)/octave/$(version)/exec/$(target_host_type)')
+  '$(libexecdir)/octave/$(version)/exec/$(canonical_host_type)')
 OCTAVE_SET_DEFAULT(localarchlibdir,
-  '$(libexecdir)/octave/site/exec/$(target_host_type)')
+  '$(libexecdir)/octave/site/exec/$(canonical_host_type)')
 OCTAVE_SET_DEFAULT(octfiledir,
-  '$(libexecdir)/octave/$(version)/oct/$(target_host_type)')
+  '$(libexecdir)/octave/$(version)/oct/$(canonical_host_type)')
 OCTAVE_SET_DEFAULT(localoctfiledir,
-  '$(libexecdir)/octave/site/oct/$(target_host_type)')
+  '$(libexecdir)/octave/site/oct/$(canonical_host_type)')
 OCTAVE_SET_DEFAULT(localoctfilepath, '$(localoctfiledir)//')
 OCTAVE_SET_DEFAULT(fcnfilepath,
   '.:$(localoctfilepath):$(localfcnfilepath):$(octfiledir)//:$(fcnfiledir)//')
@@ -287,8 +287,11 @@
   ;;
 esac
 
-### Octave doesn't use exceptions yet, so disable them for somewhat
-### faster and smaller code.
+### Octave doesn't use run-time type identification or exceptions yet,
+### so disable them for somewhat faster and smaller code.
+
+OCTAVE_CXX_FLAG(-fno-rtti,
+  [XTRA_CXXFLAGS="$XTRA_CXXFLAGS -fno-rtti"])
 
 OCTAVE_CXX_FLAG(-fno-exceptions,
   [XTRA_CXXFLAGS="$XTRA_CXXFLAGS -fno-exceptions"])
@@ -315,15 +318,7 @@
 
 ### We need these before trying to find libf2c.
 
-if test -z "$AR"; then
-  AR=ar
-fi
-AC_SUBST(AR)
-
-if test -z "$ARFLAGS"; then
-  ARFLAGS="rc"
-fi
-AC_SUBST(ARFLAGS)
+OCTAVE_PROG_AR
 
 AC_PROG_RANLIB
 
@@ -379,8 +374,6 @@
 have_fortran_compiler=false
 have_f2c=false
 
-f77_is_g77=false
-
 if $use_f2c; then
   have_f2c=true
 else
@@ -391,20 +384,12 @@
     if test "$octave_cv_f2c_f77_compat" = no; then
       F77=
     else
-      if $use_g77; then
-	f77_is_g77=true
-      else
-        f77_output=`$F77 -v 2>&1 | grep "GNU F77"`
-        if test -n "$f77_output"; then
-	  f77_is_g77=true
-        fi
-      fi
       if test -z "$FFLAGS"; then
         FFLAGS="-O"
       fi
       case "$canonical_host_type" in
         alpha*-*-*)
-          if $f77_is_g77 || test -z "$ieee_fp_flag" ; then
+          if test "$f77_is_g77" = yes || test -z "$ieee_fp_flag" ; then
             true
 	  else
 	    FFLAGS="-fpe1 $FFLAGS"
@@ -494,15 +479,7 @@
   AC_MSG_ERROR([See the file INSTALL for more information.])
 fi
 
-FORTRAN_MAIN_FLAG=
-case "$canonical_host_type" in
-  *-linux-*)
-    FORTRAN_MAIN_FLAG="-u MAIN__"
-  ;;
-esac
-if test -n "$FORTRAN_MAIN_FLAG"; then
-  AC_MSG_RESULT([defining FORTRAN_MAIN_FLAG to be $FORTRAN_MAIN_FLAG])
-fi
+OCTAVE_F77_MAIN_FLAG
 
 FC=$F77
 AC_SUBST(FC)
@@ -511,7 +488,6 @@
 AC_SUBST(FLIBS)
 AC_SUBST(F2C)
 AC_SUBST(F2CFLAGS)
-AC_SUBST(FORTRAN_MAIN_FLAG)
 AC_SUBST_FILE(f77_rules_frag)
 
 ### Handle dynamic linking and shared library options.
@@ -600,7 +576,7 @@
     DLFCN_DIR=dlfcn
   ;;
   hppa*-hp-hpux*)
-    if $f77_is_g77; then
+    if test "$f77_is_g77" = yes; then
       FPICFLAG=-fPIC
     else
       FPICFLAG=+Z
@@ -616,7 +592,7 @@
     RLD_FLAG='-L$(libdir)'
   ;;
   sparc-sun-sunos4*)
-    if $f77_is_g77; then
+    if test "$f77_is_g77" = yes; then
       FPICFLAG=-fPIC
     else
       FPICFLAG=-PIC
@@ -626,7 +602,7 @@
     RLD_FLAG='-L$(libdir)'
   ;;
   sparc-sun-solaris2*)
-    if $f77_is_g77; then
+    if test "$f77_is_g77" = yes; then
       FPICFLAG=-fPIC
     else
       FPICFLAG=-PIC
@@ -694,9 +670,9 @@
 ### How big are ints and how are they oriented?  These could probably
 ### be eliminated in favor of run-time checks.
 
-AC_CHECK_SIZEOF(short)
-AC_CHECK_SIZEOF(int)
-AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(short, 2)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long, 4)
 
 ### Does the C compiler handle alloca() and const correctly?
 
@@ -897,7 +873,19 @@
 
 ### Check for nonstandard but common math functions that we need.
 
-AC_CHECK_FUNCS(acosh asinh atanh erf erfc gamma lgamma)
+AC_CHECK_FUNCS(acosh asinh atanh erf erfc)
+
+case "$canonical_host_type" in
+  *-*-cygwin32)
+    AC_MSG_RESULT(assuming gamma works)
+    AC_DEFINE(HAVE_GAMMA, 1)
+    AC_MSG_RESULT(assuming lgamma works)
+    AC_DEFINE(HAVE_LGAMMA, 1)
+  ;;
+  *)
+    AC_CHECK_FUNCS(gamma lgamma)
+  ;;
+esac
 
 ### Checks for OS specific cruft.
 
@@ -1049,17 +1037,15 @@
 
 AC_PROG_LN_S
 
-AC_CHECK_PROG(RUNTEST, runtest, runtest, [])
-if test -z "$RUNTEST"; then
-  warn_runtest="I didn't find runtest -- install DejaGNU if you want to run \`make check'"
-  AC_MSG_WARN($warn_runtest)
-fi
-AC_SUBST(RUNTEST)
+OCTAVE_PROG_RUNTEST
 
 AC_PROG_INSTALL
 INSTALL_SCRIPT='${INSTALL}'
 AC_SUBST(INSTALL_SCRIPT)
 
+OCTAVE_PROG_GNUPLOT
+OCTAVE_PROG_PAGER
+
 EXE=
 case "$canonical_host_type" in
   *-*-cygwin32)
@@ -1068,54 +1054,6 @@
 esac
 AC_SUBST(EXE)
 
-AC_CHECK_PROG(GNUPLOT_BINARY, gnuplot, gnuplot, [])
-if test -n "$GNUPLOT_BINARY"; then
-  AC_MSG_CHECKING([to see if your gnuplot supports multiplot])
-  if test -z "`echo 'set term unknown; set multiplot' | \
-    $GNUPLOT_BINARY 2>&1`"; then
-    AC_MSG_RESULT([yes])
-    AC_DEFINE(GNUPLOT_HAS_MULTIPLOT, 1)
-  else
-    AC_MSG_RESULT([no])
-  fi
-  AC_MSG_CHECKING([to see if your gnuplot supports multiple plot windows])
-  if test -z "`echo 'set term x11 2' | $GNUPLOT_BINARY 2>&1`"; then
-    AC_MSG_RESULT([yes])
-    AC_DEFINE(GNUPLOT_HAS_FRAMES, 1)
-  else
-    AC_MSG_RESULT([no])
-  fi
-else
-  warn_gnuplot="yes"
-
-  ## If you change this text, be sure to also copy it to the set of
-  ## warnings at the end of the script
-
-  AC_MSG_WARN([I didn't find gnuplot.  It isn't necessary to have gnuplot])
-  AC_MSG_WARN([installed, but you won't be able to use any of Octave's])
-  AC_MSG_WARN([plotting commands without it.])
-  AC_MSG_WARN([])
-  AC_MSG_WARN([If gnuplot is installed but it isn't in your path, you can])
-  AC_MSG_WARN([tell Octave where to find it by typing the command])
-  AC_MSG_WARN([])
-  AC_MSG_WARN([gnuplot_binary = "/full/path/to/gnuplot/binary"])
-  AC_MSG_WARN([])
-  AC_MSG_WARN([at the Octave prompt.])
-fi
-
-octave_possible_pagers="less more page pg"
-case "$canonical_host_type" in
-  *-*-cygwin32)
-    octave_possible_pagers="$octave_possible_pagers more.com"
-  ;;
-esac
-
-AC_CHECK_PROGS(DEFAULT_PAGER, $octave_possible_pagers, [])
-if test -z "$DEFAULT_PAGER"; then
-  warn_less="I couldn't find \`less', \`more', \`page', or \`pg'"
-  AC_MSG_WARN($warn_less)
-fi
-
 ### Even though we include config.h, we need to have the preprocessor
 ### defines available in a variable for the octave-bug script.  Use
 ### UGLY_DEFS for that.
--- a/doc/interpreter/eval.texi	Tue Jan 20 05:11:16 1998 +0000
+++ b/doc/interpreter/eval.texi	Sun Jan 25 08:27:25 1998 +0000
@@ -111,5 +111,6 @@
 functions and should not be taken too seriously.  In addition to using a
 more robust algorithm, any serious code would check the number and type
 of all the arguments, ensure that the supplied function really was a
-function, etc.
-
+function, etc.  See @xref{Predicates for Numeric Objects}, for example,
+for a list of predicates for numeric objects, and @xref{Status of
+Variables}, for a description of the @code{exist} function.
--- a/doc/interpreter/install.texi	Tue Jan 20 05:11:16 1998 +0000
+++ b/doc/interpreter/install.texi	Sun Jan 25 08:27:25 1998 +0000
@@ -234,6 +234,26 @@
 @url{ftp://ftp.cygnus.com/pub/g++/libg++-2.7.2-hppa-gcc-fix}.
 
 @item
+On FreeBSD systems Octave may hang while initializing some internal
+constants.  The fix appears to be to use
+
+@example
+options      GPL_MATH_EMULATE
+@end example
+
+@noindent
+rather than 
+
+@example
+options      MATH_EMULATE 
+@end example
+
+@noindent
+in the kernel configuration files (typically found in the directory
+@file{/sys/i386/conf}.  After making this change, you'll need to rebuild
+the kernel, install it, and reboot.
+
+@item
 If you encounter errors like
 
 @smallexample
--- a/libcruft/ChangeLog	Tue Jan 20 05:11:16 1998 +0000
+++ b/libcruft/ChangeLog	Sun Jan 25 08:27:25 1998 +0000
@@ -1,3 +1,7 @@
+Mon Jan 19 23:11:21 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lapack/xdlange.f, lapack/xzlange.f: New files.
+
 Mon Dec  1 00:51:03 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
 
 	* dassl/xerhlt.f, dassl/xermsg.f, dassl/xerprn.f, dassl/xgetua.f,
--- a/liboctave/Array2-idx.h	Tue Jan 20 05:11:16 1998 +0000
+++ b/liboctave/Array2-idx.h	Sun Jan 25 08:27:25 1998 +0000
@@ -496,10 +496,12 @@
 			  int idx_nc = idx.orig_columns ();
 
 			  // lhs_is_empty now means that lhs was
-			  // *originally* empty.
+			  // *originally* empty, and lhs_len is the
+			  // *original* length of the lhs.
 
 			  if (liboctave_dfi_flag
-			      || (idx_nr == 1 && idx_nc == 1))
+			      || (idx_nr == 1 && idx_nc == 1)
+			      || (rhs_nr == 1 && rhs_nc == 1 && lhs_len == 1))
 			    {
 			      if (liboctave_pcv_flag)
 				{
@@ -517,12 +519,14 @@
 			      lhs.d1 = rhs.d1;
 			      lhs.d2 = rhs.d2;
 			    }
-			  else if (idx_nr == 1 && rhs_nr == 1)
+			  else if (rhs_nr == 1
+				   && (idx_nr == 1 || lhs_len == 1))
 			    {
 			      lhs.d1 = 1;
 			      lhs.d2 = lhs.length ();
 			    }
-			  else if (idx_nc == 1 && rhs_nc == 1)
+			  else if (rhs_nc == 1
+				   && (idx_nc == 1 || lhs_len == 1))
 			    {
 			      lhs.d1 = lhs.length ();
 			      lhs.d2 = 1;
--- a/liboctave/CMatrix.cc	Tue Jan 20 05:11:16 1998 +0000
+++ b/liboctave/CMatrix.cc	Sun Jan 25 08:27:25 1998 +0000
@@ -100,9 +100,9 @@
 				const Complex*, const int&, double&,
 				int&, long, long);
 
-  double F77_FCN (zlange, ZLANGE) (const char*, const int&,
-				   const int&, const Complex*,
-				   const int&, double*); 
+  int F77_FCN (xzlange, XZLANGE) (const char*, const int&,
+				  const int&, const Complex*,
+				  const int&, double*, double&); 
 }
 
 static const Complex Complex_NaN_result (octave_NaN, octave_NaN);
@@ -1586,16 +1586,20 @@
 
   int nc = columns ();
 
+  // Preconditioning step 1: trace normalization to reduce dynamic
+  // range of poles, but avoid making stable eigenvalues unstable.
+
   // trace shift value
   Complex trshift = 0.0;
 
-  // Preconditioning step 1: trace normalization.
-
   for (int i = 0; i < nc; i++)
     trshift += m.elem (i, i);
 
   trshift /= nc;
 
+  if (trshift.real () < 0.0)
+    trshift = trshift.imag ();
+
   for (int i = 0; i < nc; i++)
     m.elem (i, i) -= trshift;
 
@@ -1608,9 +1612,10 @@
   // Preconditioning step 3: scaling.
 
   ColumnVector work (nc);
-  double inf_norm
-    = F77_FCN (zlange, ZLANGE) ("I", nc, nc, m.fortran_vec (), nc,
-				work.fortran_vec ());
+  double inf_norm;
+
+  F77_FCN (xzlange, XZLANGE) ("I", nc, nc, m.fortran_vec (), nc,
+			      work.fortran_vec (), inf_norm);
 
   int sqpow = (inf_norm > 0.0
 	       ? static_cast<int> (1.0 + log (inf_norm) / log (2.0)) : 0);
@@ -1677,7 +1682,7 @@
 
   // Reverse preconditioning step 1: fix trace normalization.
 
-  return retval * exp (trshift);
+  return exp (trshift) * retval;
 }
 
 // column vector by row vector -> matrix operations
--- a/liboctave/ChangeLog	Tue Jan 20 05:11:16 1998 +0000
+++ b/liboctave/ChangeLog	Sun Jan 25 08:27:25 1998 +0000
@@ -1,3 +1,18 @@
+Tue Jan 20 16:30:00 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::expm): Skip trace normalization step if the
+	trace is negative. 
+	* CMatrix.cc (ComplexMatrix::expm): Skip trace normalization if
+	the real part of the trace is negative.
+
+Mon Jan 19 16:01:59 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::expm): Call xdlange instead of dlange.
+	* CMatrix.cc (ComplexMatrix::expm): Call xzlange instead of zlange.
+
+	* Array2-idx.h (assign): Allow operations like a = 1; a(2:3) = [1;2]
+	to succeed.
+
 Thu Dec 18 14:53:45 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
 
 	* idx-vector.cc (IDX_VEC_REP::sort): Don't do anything unless len > 1.
--- a/liboctave/dMatrix.cc	Tue Jan 20 05:11:16 1998 +0000
+++ b/liboctave/dMatrix.cc	Sun Jan 25 08:27:25 1998 +0000
@@ -95,9 +95,9 @@
 				const double*, const int&, double&,
 				int&, long, long);
 
-  double F77_FCN (dlange, DLANGE) (const char*, const int&,
-				   const int&, const double*,
-				   const int&, double*); 
+  int F77_FCN (xdlange, XDLANGE) (const char*, const int&,
+				  const int&, const double*,
+				  const int&, double*, double&); 
 
   int F77_FCN (qzhes, QZHES) (const int&, const int&, double*,
 			      double*, const long&, double*);
@@ -1334,18 +1334,22 @@
 
   int nc = columns ();
 
+  // Preconditioning step 1: trace normalization to reduce dynamic
+  // range of poles, but avoid making stable eigenvalues unstable.
+
   // trace shift value
-  double trshift = 0;
-
-  // Preconditioning step 1: trace normalization.
+  double trshift = 0.0;
 
   for (int i = 0; i < nc; i++)
     trshift += m.elem (i, i);
 
   trshift /= nc;
 
-  for (int i = 0; i < nc; i++)
-    m.elem (i, i) -= trshift;
+  if (trshift > 0.0)
+    {
+      for (int i = 0; i < nc; i++)
+	m.elem (i, i) -= trshift;
+    }
 
   // Preconditioning step 2: balancing.
 
@@ -1356,9 +1360,10 @@
   // Preconditioning step 3: scaling.
 
   ColumnVector work(nc);
-  double inf_norm
-    = F77_FCN (dlange, DLANGE) ("I", nc, nc, m.fortran_vec (),nc,
-				work.fortran_vec ());
+  double inf_norm;
+
+  F77_FCN (xdlange, XDLANGE) ("I", nc, nc, m.fortran_vec (), nc,
+			      work.fortran_vec (), inf_norm);
 
   int sqpow = (int) (inf_norm > 0.0
 		     ? (1.0 + log (inf_norm) / log (2.0))
@@ -1396,7 +1401,7 @@
   // Zero power.
 
   dpp = -dpp;
-  for(int j = 0; j < nc; j++)
+  for (int j = 0; j < nc; j++)
     {
       npp.elem (j, j) += 1.0;
       dpp.elem (j, j) += 1.0;
@@ -1424,7 +1429,10 @@
 
   // Reverse preconditioning step 1: fix trace normalization.
 
-  return retval * exp (trshift);
+  if (trshift > 0.0)
+    retval = exp (trshift) * retval;
+
+  return retval;
 }
 
 Matrix&
--- a/readline/ChangeLog	Tue Jan 20 05:11:16 1998 +0000
+++ b/readline/ChangeLog	Sun Jan 25 08:27:25 1998 +0000
@@ -1,3 +1,12 @@
+Sun Jan 25 02:19:15 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* aclocal.m4 (BASH_REINSTALL_SIGHANDLERS, BASH_FUNC_STRCOLL):
+	Provide defaults for cross compiling.
+
+Fri Jan 16 21:02:58 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install, uninstall): For Octave, do nothing.
+
 Tue Jan 13 14:59:56 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
 
 	* readline.h (rl_dispatching): Add missing extern in declaration.
--- a/readline/Makefile.in	Tue Jan 20 05:11:16 1998 +0000
+++ b/readline/Makefile.in	Sun Jan 25 08:27:25 1998 +0000
@@ -185,27 +185,31 @@
 
 force:
 
-install: installdirs libreadline.a
-	for f in ${INSTALLED_HEADERS}; do \
-		$(INSTALL_DATA) $(srcdir)/$$f $(includedir)/readline ; \
-	done
-	-$(MV) $(libdir)/libreadline.a $(libdir)/libreadline.old
-	$(INSTALL_DATA) libreadline.a $(libdir)/libreadline.a
-	-test -n "$(RANLIB)" && -$(RANLIB) -t $(libdir)/libreadline.a
-	-( if test -d doc ; then \
-		cd doc && \
-		${MAKE} ${MFLAGS} infodir=$(infodir) INSTALL_DATA=$(INSTALL_DATA) $@; \
-	  fi )
+install:
+
+#install: installdirs libreadline.a
+#	for f in ${INSTALLED_HEADERS}; do \
+#		$(INSTALL_DATA) $(srcdir)/$$f $(includedir)/readline ; \
+#	done
+#	-$(MV) $(libdir)/libreadline.a $(libdir)/libreadline.old
+#	$(INSTALL_DATA) libreadline.a $(libdir)/libreadline.a
+#	-test -n "$(RANLIB)" && -$(RANLIB) -t $(libdir)/libreadline.a
+#	-( if test -d doc ; then \
+#		cd doc && \
+#		${MAKE} ${MFLAGS} infodir=$(infodir) INSTALL_DATA=$(INSTALL_DATA) $@; \
+#	  fi )
 
 installdirs: $(srcdir)/support/mkdirs
 	-$(SHELL) $(srcdir)/support/mkdirs $(includedir) \
 		$(includedir)/readline $(libdir) $(infodir) $(man3dir)
 
 uninstall:
-	-test -n "$(includedir)" && cd $(includedir)/readline && \
-		${RM} ${INSTALLED_HEADERS}
-	-test -n "$(libdir)" && cd $(libdir) && \
-		${RM} libreadline.a libreadline.old $(SHARED_LIBS)
+
+#uninstall:
+#	-test -n "$(includedir)" && cd $(includedir)/readline && \
+#		${RM} ${INSTALLED_HEADERS}
+#	-test -n "$(libdir)" && cd $(libdir) && \
+#		${RM} libreadline.a libreadline.old $(SHARED_LIBS)
 
 TAGS:	force
 	$(ETAGS) $(CSOURCES) $(HSOURCES)
--- a/readline/aclocal.m4	Tue Jan 20 05:11:16 1998 +0000
+++ b/readline/aclocal.m4	Sun Jan 25 08:27:25 1998 +0000
@@ -672,8 +672,16 @@
 	exit(nsigint != 2);
 }
 ], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes,
-AC_MSG_ERROR(cannot check signal handling if cross compiling))])
-AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers)
+if test "$bash_cv_signal_vintage" = svr3; then
+  bash_cv_must_reinstall_sighandlers=yes
+else
+  bash_cv_must_reinstall_sighandlers=no
+fi)])
+if test "$cross_compiling" = yes; then
+  AC_MSG_RESULT([$bash_cv_must_reinstall_sighandlers assumed for cross compilation])
+else
+  AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers)
+fi
 if test $bash_cv_must_reinstall_sighandlers = yes; then
 AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
 fi
@@ -833,9 +841,13 @@
 exit(1);
 #endif
 }],bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing,
-   AC_MSG_ERROR(cannot check for sigsetjmp/siglongjmp if cross-compiling))
+   bash_cv_func_sigsetjmp=present)
 ])
-AC_MSG_RESULT($bash_cv_func_sigsetjmp)
+if test "$cross_compiling" = yes; then
+  AC_MSG_RESULT([$bash_cv_func_sigsetjmp=present assumed for cross compiling])
+else
+  AC_MSG_RESULT($bash_cv_func_sigsetjmp)
+fi
 if test $bash_cv_func_sigsetjmp = present; then
 AC_DEFINE(HAVE_POSIX_SIGSETJMP)
 fi
@@ -1087,9 +1099,13 @@
 	exit (r1 > 0 && r2 > 0);
 }
 ], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no,
-   AC_MSG_ERROR(cannot check strcoll if cross compiling))
+   bash_cv_func_strcoll_broken=no)
 ])
-AC_MSG_RESULT($bash_cv_func_strcoll_broken)
+if test "$cross_compiling" = yes; then
+  AC_MSG_RESULT([$bash_cv_func_strcoll_broken assumed for cross compiling])
+else
+  AC_MSG_RESULT($bash_cv_func_strcoll_broken)
+fi
 if test $bash_cv_func_strcoll_broken = yes; then
 AC_DEFINE(STRCOLL_BROKEN)
 fi
--- a/src/ChangeLog	Tue Jan 20 05:11:16 1998 +0000
+++ b/src/ChangeLog	Sun Jan 25 08:27:25 1998 +0000
@@ -1,3 +1,15 @@
+Thu Jan 22 13:45:26 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dynamic-ld.cc (make_dynamic_loader): Fix typo.
+
+Tue Jan 20 17:02:19 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* variables.cc (Fexist): If local symbol is undefined, check
+	global table.
+
+	* pr-output.cc (pr_max_internal): Initial value for result is
+	-DBL_MAX, not DBL_MIN.
+
 Thu Jan  8 11:54:33 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
 
 	* xpow.cc (elem_xpow): If second arg of pow is complex, make sure
--- a/src/dynamic-ld.cc	Tue Jan 20 05:11:16 1998 +0000
+++ b/src/dynamic-ld.cc	Sun Jan 25 08:27:25 1998 +0000
@@ -210,7 +210,7 @@
 #if defined (WITH_DL)
   instance = new octave_dlopen_dynamic_loader ();
 #elif defined (WITH_SHL)
-  instance = new octave_sh_load_dynamic_loader ();
+  instance = new octave_shl_load_dynamic_loader ();
 #else
   instance = new octave_dynamic_loader ();
 #endif
--- a/src/pr-output.cc	Tue Jan 20 05:11:16 1998 +0000
+++ b/src/pr-output.cc	Sun Jan 25 08:27:25 1998 +0000
@@ -113,7 +113,7 @@
   int nr = m.rows ();
   int nc = m.columns ();
 
-  double result = DBL_MIN;
+  double result = -DBL_MAX;
 
   for (int j = 0; j < nc; j++)
     for (int i = 0; i < nr; i++)
--- a/src/variables.cc	Tue Jan 20 05:11:16 1998 +0000
+++ b/src/variables.cc	Sun Jan 25 08:27:25 1998 +0000
@@ -435,7 +435,7 @@
     }
 
   symbol_record *sr = curr_sym_tab->lookup (symbol_name);
-  if (! sr)
+  if (! (sr && sr->is_defined ()))
     sr = global_sym_tab->lookup (symbol_name);
 
   retval = 0.0;