# HG changeset patch # User jwe # Date 885716845 0 # Node ID 02766207b74ca2a9423a3cf1704e5c51a56b9696 # Parent 4061d67231a80dd0690e8fe42ad66a79df814836 [project @ 1998-01-25 08:27:23 by jwe] diff -r 4061d67231a8 -r 02766207b74c ChangeLog --- 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 + + * 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 + + * 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 + + * configure.in: Also check for -fno-rtti. + Thu Jan 15 23:12:27 1998 John W. Eaton * config.guess, config.sub: Update to new version from the FSF. diff -r 4061d67231a8 -r 02766207b74c PROJECTS --- 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' diff -r 4061d67231a8 -r 02766207b74c README.Windows --- 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 diff -r 4061d67231a8 -r 02766207b74c aclocal.m4 --- 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 < ftest.f <&AC_FD_CC 2>&AC_FD_CC -dnl -changequote(, ) -cat > ctest.c <&AC_FD_CC 2>&AC_FD_CC + changequote(, ) + cat > ctest.c <&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 +]) diff -r 4061d67231a8 -r 02766207b74c configure.in --- 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. diff -r 4061d67231a8 -r 02766207b74c doc/interpreter/eval.texi --- 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. diff -r 4061d67231a8 -r 02766207b74c doc/interpreter/install.texi --- 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 diff -r 4061d67231a8 -r 02766207b74c libcruft/ChangeLog --- 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 + + * lapack/xdlange.f, lapack/xzlange.f: New files. + Mon Dec 1 00:51:03 1997 John W. Eaton * dassl/xerhlt.f, dassl/xermsg.f, dassl/xerprn.f, dassl/xgetua.f, diff -r 4061d67231a8 -r 02766207b74c liboctave/Array2-idx.h --- 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; diff -r 4061d67231a8 -r 02766207b74c liboctave/CMatrix.cc --- 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 (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 diff -r 4061d67231a8 -r 02766207b74c liboctave/ChangeLog --- 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 + + * 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 + + * 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 * idx-vector.cc (IDX_VEC_REP::sort): Don't do anything unless len > 1. diff -r 4061d67231a8 -r 02766207b74c liboctave/dMatrix.cc --- 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& diff -r 4061d67231a8 -r 02766207b74c readline/ChangeLog --- 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 + + * aclocal.m4 (BASH_REINSTALL_SIGHANDLERS, BASH_FUNC_STRCOLL): + Provide defaults for cross compiling. + +Fri Jan 16 21:02:58 1998 John W. Eaton + + * Makefile.in (install, uninstall): For Octave, do nothing. + Tue Jan 13 14:59:56 1998 John W. Eaton * readline.h (rl_dispatching): Add missing extern in declaration. diff -r 4061d67231a8 -r 02766207b74c readline/Makefile.in --- 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) diff -r 4061d67231a8 -r 02766207b74c readline/aclocal.m4 --- 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 diff -r 4061d67231a8 -r 02766207b74c src/ChangeLog --- 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 + + * dynamic-ld.cc (make_dynamic_loader): Fix typo. + +Tue Jan 20 17:02:19 1998 John W. Eaton + + * 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 * xpow.cc (elem_xpow): If second arg of pow is complex, make sure diff -r 4061d67231a8 -r 02766207b74c src/dynamic-ld.cc --- 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 diff -r 4061d67231a8 -r 02766207b74c src/pr-output.cc --- 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++) diff -r 4061d67231a8 -r 02766207b74c src/variables.cc --- 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;