home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-base.tgz / octave-1.1.1p1-base.tar / fsf / octave / ChangeLog.1 < prev    next >
Text File  |  1994-02-20  |  246KB  |  6,846 lines

  1. Thu Feb 17 01:36:19 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2.  
  3.     * Version 1.0 released.
  4.  
  5.     * src/file-io.cc (fopen_file_for_user): Improve error message.
  6.     (fopen_internal): Likewise.
  7.  
  8. Wed Feb 16 02:21:05 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  9.  
  10.     * configure.in: Try harder to find finite, isnan, and isinf.
  11.     Use m4 `dnl' comments, not shell `#' comments.
  12.  
  13.     * src/file-io.cc (file_io_get_file): New function.
  14.     (fgets_internal): Use it instead of trying to do this in line.
  15.     (frewind_internal, fseek_internal, ftell_internal, do_printf,
  16.     do_scanf): Likewise.
  17.     * (do_scanf): Allow file name as string for fscanf.
  18.     * (procss_scanf_format): Delete unused argument `args'.  Delete
  19.     unused local variable `arg_type'.  Don't complain if we can't
  20.     store the result of a requested conversion.  Only return
  21.     successfully if a conversion actually occurs, even if we are not
  22.     storing the value.
  23.  
  24. Sun Feb 13 13:32:03 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  25.  
  26.     * Version 0.83 released.
  27.  
  28.     * Array.h (DiagArray): Move inline definitions of get() and set()
  29.     before use by other inline functions.
  30.  
  31. Sat Feb 12 14:15:45 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  32.  
  33.     * configure.in: Check for g77 last.  Even if it is ever actually
  34.     released, it probably won't be stable for quite a while.
  35.  
  36.     * MAKEINFO.PATCH: New file.
  37.     * Makefile.in (DISTFILES): Distribute it.
  38.  
  39.     * liboctave/Matrix.cc (operator + (Complex, const Matrix&)):
  40.     Make it work.
  41.     (operator - (Complex, const Matrix&)): Ditto.
  42.     (operator * (Complex, const Matrix&)): Ditto.
  43.     (operator / (Complex, const Matrix&)): Ditto.
  44.  
  45. Fri Feb 11 00:03:39 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  46.  
  47.     * configure.in: Check for strerror too.
  48.  
  49.     * configure.in: When saving CFLAGS as XCFLAGS and then restoring
  50.     the value, quote the RHS.
  51.  
  52.     * src/g-builtins.cc (builtin_clc): Do the dirty work to clear the
  53.     screen here instead of using rl_clear_screen to avoid printing
  54.     prompt unnecessarily.
  55.  
  56. Thu Feb 10 00:26:32 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  57.  
  58.     * src/utils.cc: Add all the cruft that the autoconf manual
  59.     suggests for including dirent.h.
  60.  
  61.     * info/terminal.c (terminal_prep_terminal): [HAVE_TERMIOS_H &&
  62.     NeXT]: Don't use OCRNL, as someone says NeXT's termios.h doesn't
  63.     have it.
  64.  
  65.     * configure.in (GCC_IEEE_FP_FLAG): Correct check for ix86 Linux.
  66.     Don't try to check for CC == gcc.
  67.     Add GCC_IEEE_FP_FLAG to CFLAGS while checking for IEEE FP
  68.     functions finite, isnan, and isinf.
  69.  
  70.     * readline/rldefs.h: Make definition of HAVE_POSIX_SIGNALS
  71.     conditional on definition of _POSIX_VERSION, not HAVE_TERMIOS_H.
  72.  
  73. Wed Feb  9 02:41:32 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  74.  
  75.     * src/tree.cc (tree_function::octave_va_start): Rename from
  76.     va_start to avoid conflict with va_start macro.
  77.     (tree_function::octave_var_arg): Likewise, rename from va_arg.
  78.     * src/g-builtins.cc (builtin_va_arg): Call octave_va_arg for the
  79.     current function instead of va_arg.
  80.     (builtin_va_start): Likewise, for octave_va_start.
  81.  
  82.     * Version 0.82.1.
  83.  
  84.     * doc/Makefile.in (clean): Also remove octave.in, octave.rd,
  85.     octave.ins, and octave.rds.
  86.  
  87.     * src/t-builtins.cc (load_variable): Make it work for all
  88.     combinations of loading global or local variables when the
  89.     variable to be loaded is already a global variable, local
  90.     variable, a function, or even undefined.
  91.  
  92. Tue Feb  8 00:33:09 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  93.  
  94.     * Version 0.82 released.
  95.  
  96.     * liboctave/mx-kludge.cc (operator + (KL_MAT_TYPE, KL_MAT_TYPE)):
  97.     For an empty matrix with one nonzero dimension, be sure to return
  98.     a result of the same size.
  99.     (operator - (KL_MAT_TYPE, KL_MAT_TYPE)): Ditto.
  100.     (product (KL_MAT_TYPE, KL_MAT_TYPE)): Ditto.
  101.     (quotient (KL_MAT_TYPE, KL_MAT_TYPE)): Ditto.
  102.  
  103. Mon Feb  7 01:30:19 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  104.  
  105.     * liboctave/Array.h, liboctave/array.cc (DiagArray): Back off on
  106.     indexing via Proxy class changes for AIX systems to avoid gcc (or
  107.     possibly AIX assembler?) bug.
  108.  
  109.     * src/tree-const.cc (tree_constant_rep::maybe_resize (int,
  110.     force_orient)): Don't abort for a max index of zero.
  111.  
  112.     * liboctave/Matrix.h (class RowVector, friend double operator *
  113.     (const RowVector&, const ColumnVector&)): Add missing const in
  114.     declaration.
  115.  
  116.     * liboctave/Matrix.cc (Matrix::fill (val, r1, c1, r2, c2)): Set nc
  117.     to cols(), not rows().
  118.     (ComplexMatrix::fill (double val, r1, c1, r2, c2)): Likewise.
  119.     (ComplexMatrix::fill (Complex val, r1, c1, r2, c2)): Likewise.
  120.  
  121.     * All source files: To match the documenation, refer to function
  122.     files, not M-files.  Rename functions and variables that refer to
  123.     _m_file_,  mfile, or mf to refer to _fcn_file, ffile, or ff.
  124.  
  125. Sun Feb  6 19:08:26 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  126.  
  127.     * src/parse.y (yyerror): Don't crash if a parse error happens and
  128.     the current input line is NULL.
  129.  
  130. Sat Feb  5 18:53:04 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  131.  
  132.     * src/file-io.cc (initialize_file_io): Don't use variable names
  133.     that start with `_'.
  134.     * src/file-io.cc (class file_info): Likewise.
  135.  
  136. Fri Feb  4 01:15:59 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  137.  
  138.     * src/builtins.cc (general_functions): In usage message for fopen,
  139.     use `Valid' instead of `Legal'.
  140.  
  141.     * src/file-io.cc (do_printf): Use `invalid' instead of `illegal'
  142.     in error message.
  143.     (do_scanf): Likewise.
  144.  
  145.     * src/mappers.cc (atanh): Use correct formula.
  146.  
  147. Thu Feb  3 22:08:40 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  148.  
  149.     * doc/refcard.tex: New file.
  150.     * doc/Makefile.in (all): Make refcard.ps.
  151.     (DISTFILES): Distribute refcard.tex, refcard.dvi, and refcard.ps.
  152.  
  153.     * src/tree-const.cc (any_element_is_negative): Delete function.
  154.     (any_element_less_than): New function.
  155.     (any_element_greater_than): Ditto.
  156.     (tree_constant_rep::mapper): Use struct elements lower_limit,
  157.     upper_limit, and can_return_complex_for_real_arg to properly
  158.     handle functions like acos, asin, atanh, and acosh.
  159.  
  160.     * src/builins.h (struct Mapper_fcn): Rename neg_arg_complex to 
  161.     can_return_complex_for_real_arg.  New elements, lower_limit and
  162.     upper_limit.
  163.     (struct builtin mappers functions): Rename neg_arg_complex to 
  164.     can_return_complex_for_real_arg.  New elements, lower_limit and
  165.     upper_limit.  Delete elements nargin_max and nargout_max.
  166.     * src/variables.cc (install_builtin_mapper_function): Handle new
  167.     struct elements can_return_complex_for_real_arg, lower_limit, and
  168.     upper_limit.  Don't use nargin_max and nargout_max -- they are
  169.     the same for all mapper functions.
  170.  
  171. Wed Feb  2 05:06:56 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  172.  
  173.     * liboctave/Matrix.h: Don't include values.h.
  174.     * liboctave/Matrix-ext.cc: Include float.h
  175.     (DET::value_will_overflow): Use DBL_MAX, not MAXDOUBLE.
  176.     (ComplexDET::value_will_overflow): Likewise.
  177.     (DET::value_will_underflow): Use DBL_MIN, not MINDOUBLE.
  178.     (ComplexDET::value_will_underflow): Likewise.
  179.     * src/tree.cc: Include limits.h, not values.h.
  180.     (tree_builtin::max_expected_args): Use INT_MAX, not MAXINT.
  181.  
  182.     * configure.in: If compiling on an ix86, set GCC_IEEE_FP_FLAG to
  183.     -mieee-fp.  We should no longer require the modified crt0 code on
  184.     Linux systems in order to get IEEE functions.
  185.     * Makeconf.in (GCC_IEEE_FP_FLAG): Substitute value.
  186.     (ALL_CFLAGS, UGLY_ALL_CFLAGS, ALL_CXX_FLAGS, UGLY_ALL_CXX_FLAGS,
  187.     ALL_LDFLAGS): Use it.
  188.  
  189. Tue Feb  1 22:30:46 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  190.  
  191.     * src/builtins.cc (install_builtins): Make SEEK_SET, SEEK_CUR, and
  192.     SEEK_END constants.
  193.  
  194.     * src/tree-plot.cc (tree_subplot_using::print): Only check column
  195.     number against max if max is greater than 0.
  196.  
  197. Mon Jan 31 15:59:31 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  198.  
  199.     * scripts/strcmp.m: Correctly handle empty strings.
  200.  
  201.     * src/parse.y (input): Recognize lone simple_list and simple_list
  202.     followed by error and '\n'.
  203.  
  204. Fri Jan 28 00:20:30 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  205.  
  206.     * Version 0.81 released.
  207.  
  208.     * src/octave.cc (clean_up_and_exit): Call cleanup_tmp_files() here
  209.     too.
  210.  
  211.     * configure.in: Check for atexit and on_exit.
  212.     * src/octave.cc: Use HAVE_ATEXIT and HAVE_ON_EXIT (instead of
  213.     just checking to see if sun is defined) to decide whether to
  214.     define atexit as on_exit.
  215.     (main): Don't try to call atexit if it's missing and we don't have
  216.     on_exit either.
  217.  
  218. Thu Jan 27 22:16:48 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  219.  
  220.     * configure.in: Check for gethostname and sys/utsname.h.
  221.     * utils.cc (gethostname): Steal replacement from bash.  Provide
  222.     definition if it looks like it's missing and we have
  223.     sys/utsname.h.
  224.  
  225.     * liboctave/Array.h (DiagArray): Define non-const indexing
  226.     functions here.
  227.     * liboctave/Array.cc (DiagArray): Not here.
  228.  
  229.     * liboctave/Array.h (DiagArray::Proxy): New class to handle
  230.     non-const reference indexing.  Allows different action if indexing
  231.     on left side of assignment operator.
  232.  
  233.     * src/octave.cc (main): Call initialize_pager(),
  234.     initialize_readline(), and install_signal_handlers() before trying
  235.     to read startup files.
  236.  
  237.     * src/octave.cc (input_from_startup_file): New global flag.
  238.     (execute_startup_files): Set it to 1 before reading startup files.
  239.     * src/parse.y (func_def_2): If input_from_startup_file, don't try
  240.     to compare file name and function name.
  241.  
  242. Wed Jan 26 14:39:27 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  243.  
  244.     * readline/rldefs.h: Make better use of autoconf defines.
  245.  
  246. Tue Jan 25 17:19:19 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  247.  
  248.     * liboctave/Matrix.cc (ComplexMatrix (DiagMatrix)): Make sure off
  249.     diagonal elements are zero.
  250.     (ComplexMatrix (ComplexDiagMatrix): Likewise.
  251.     (Matrix (DiagMatrix): Likewise.
  252.  
  253. Fri Jan 21 17:43:11 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  254.  
  255.     * flibs.sh: Recognize libraries that match `/*.a'.
  256.  
  257. Thu Jan 20 18:12:01 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  258.  
  259.     * Version 0.80.1.
  260.  
  261. Wed Jan 19 14:48:27 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  262.  
  263.     * libcruft/odepack/stode.f: Don't try to `RETURN 0'.  This causes
  264.     lsode to fail, at least with Sun's f77.
  265.  
  266.     * src/tree-const.cc (tree_constant_rep::load): Delete string
  267.     returned from extract_keyword.
  268.     * src/t-builtins.cc (builtin_load): Likewise.
  269.     * src/variables.cc (extract_keyword): Return new storage, not
  270.     static buffer.
  271.  
  272.     * src/t-builtins.cc (builtin_save): If saving a named list of
  273.     variables, use is_globally_visible to decide whether to mark
  274.     variables in the current symbol table as global.
  275.  
  276. Tue Jan 18 11:57:03 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  277.  
  278.     * Version 0.80 released.
  279.  
  280.     * doc/Makefile.in (install): Delete commands for installing
  281.     liboctave.info instead of trying to comment them out.
  282.  
  283.     * liboctave/Array.cc: Allow users to compile with
  284.     -fexternal-stemplates and USE_EXTERNAL_TEMPLATES defined to
  285.     generate their own .o files with new types.
  286.  
  287.     * Makeconf.in (includedir): Install include files in
  288.     $prefix/include/octave by default.
  289.  
  290.     * liboctave/Makefile.in (TEMPLATE_SRC): New macro.
  291.     (install): Install files listed in $(TEMPLATE_SRC) too.
  292.  
  293.     * info/search.h: Conditionally declare stricmp and strnicmp.
  294.     * info/search.c: Conditionally define stricmp and strnicmp.
  295.     * config.h.in: Add undefs for HAVE_STRICMP and HAVE_STRNICMP.
  296.  
  297.     * configure.in: Check for stricmp and strnicmp too.
  298.  
  299.     * doc/Makefile.in: For now, don't format or try to install the
  300.     liboctave manual. 
  301.     Don't distribute formatted copies of liboctave manual.
  302.  
  303. Mon Jan 17 01:10:54 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  304.  
  305.     * doc/Makefile.in (clean): Remove all index files.
  306.  
  307.     * src/Makefile.in (defaults.h): Depend on Makefile too.
  308.     * doc/Makefile.in (conf.texi): New rule for making conf.texi from
  309.     conf.texi.in.
  310.  
  311.     * doc/conf.texi.in: New file.
  312.     * doc/octave.texi: Include conf.texi to get VERSION, OCTAVE_HOME,
  313.     and other variables that need to be set depending on the
  314.     configuration.
  315.  
  316.     * Makefile.in (DISTFILES): Don't distribute PLOTTING.  Current
  317.     plotting info is in the Texinfo docs.
  318.  
  319. Sat Jan 15 15:43:34 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  320.  
  321.     * config.sub: New file, from libg++-2.5.2.
  322.     * Makefile.in: Distribute config.sub.
  323.     * configure.in: Use config.sub to validate system types.  If it
  324.     fails, continue with target_host_type and canonical_host_type set
  325.     to unknown.  Leave target_host_type set to any alias given as the
  326.     TARGET argument to configure.
  327.  
  328.     * readline/rldefs.h: If ultrix and HAVE_SGTTY_H, avoid Posix
  329.     terminal driver.
  330.     * configure.in: If configuring for ultrix, check for sgtty first.
  331.     If not found, go ahead and check for Posix terminal driver.
  332.  
  333.     * configure.in: Don't try to do anything special for readline on
  334.     NeXT systems.
  335.     
  336.     * Makeconf.in: Define rules for making .d files here.
  337.     liboctave/Makefile.in: Not here.
  338.     src/Makefile.in: Or here.
  339.  
  340.     * liboctave/Matrix.h (all Matrix/Vector operator = functions):
  341.     Simply call the base class operator =, then return *this.
  342.     (class ColumnVector): Declare RowVector a friend class, so it can
  343.     access the private constructor for the transpose operator.
  344.     (class RowVector): Likewise, for ColumnVector.
  345.     (class ComplexColumnVector): Likewise, for CommplexRowVector.
  346.     (class ComplexRowVector): Likewise, for ComplexColumnVector.
  347.     Numerous formatting cleanups.
  348.  
  349. Thu Jan 13 13:17:47 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  350.  
  351.     * Version 0.79.90.
  352.  
  353.     * builtins.cc: Include missing-math.h.
  354.  
  355.     * src/missing-math.h: Provide declarations for acosh, asinh,
  356.     atanh, and gamma whether they are actually missing or not, because
  357.     they are not part of the standard math.h, and the g++/libg++
  358.     installation no longer provides declarations for them.
  359.  
  360.     * src/sighandlers.h (RETSIGTYPE): Define here.
  361.     (BADSIG): Likewise.
  362.     (sig_handler): Likewise.
  363.  
  364.     * src/g-builtins.cc: Include sighandlers.h
  365.     Don't define RETSIGTYPE, BADSIG, or sig_handler here.
  366.     * src/octave.cc: Or here.
  367.  
  368. Wed Jan 12 16:12:27 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  369.  
  370.     * src/g-builtins.cc: Don't check nargin/nargout in *_options
  371.     functions.
  372.  
  373.     * src/f-qpsol.cc, src/f-quad.cc, src/f-lsode.cc, src/f-fsolve.cc,
  374.     src/f-dassl.cc, liboctave/QPSOL.cc, liboctave/Quad.cc,
  375.     liboctave/ODE.cc, liboctave/NLEqn.cc, liboctave/DAE.cc:
  376.     Similar changes for these classes/functions as the following
  377.     changes for src/f-npsol.cc and liboctave/NPSOL.cc:
  378.  
  379.     * src/f-npsol.cc (npsol_opts): New static variable to hold Octave's
  380.     current idea of npsol options.
  381.     (npsol): Call nlp.copy (npsol_opts) after creating NPSOL object.
  382.     (npsol_option_table): New static list of options for npsol.
  383.     (print_npsol_option_list): New function.
  384.     (do_npsol_option): New function.
  385.     (npsol_options): Make it work.
  386.  
  387.     * liboctave/NPSOL.cc (NPSOL_options): New class.
  388.     * (NPSOL): Also derive from NPSOL_options.
  389.     * (minimize): Call pass_options_to_npsol before calling npsol.
  390.     * (NPSOL::option): No longer works.  Print error message instead.
  391.     * (NPSOL::set_default_options): Now a member of NPSOL_options class.
  392.  
  393.     * src/utils.cc: If missing, declare strcasecmp, strncasecmp.
  394.     * (almost_match): Add new argument to do case-insensitive matches.
  395.     * (keyword_almost_match): New function to match a string against a
  396.     list of keywords.
  397.  
  398.     * liboctave/NLP.h (NLP): Add destructor and copy constructor.
  399.  
  400.     * configure.in: Check for strcasecmp and strncasecmp.
  401.     * config.h.in: Add #undefs for HAVE_STRCASECMP and STRNCASECMP.
  402.     * src/strcasecmp.c, src/strncase.c: New files, from glibc.
  403.     * src/Makefile.in (SOURCES, OBJECTS): List them.
  404.  
  405.     * src/builtins.cc (general_functions): Improve usage message for
  406.     the *_options functions.
  407.     (print_usage): New arg, just_usage with default value of 0.
  408.     If nonzero, don't print info about where to find additional help.
  409.  
  410.     * src/Makefile.in (INCLUDES): Add error.h.
  411.     (SOURCES): Add error.h.
  412.  
  413.     * src/tree.cc (tree_identifier::parse_m_file): call reset_parser
  414.     before calling yyparse ().
  415.     * src/tc-extras.cc (eval_string): Likewise.
  416.     Don't save previous symbol table.  That is handled by the
  417.     unwind protect.
  418.  
  419.     * src/lex.l (reset_parser): Don't unconditionally call yyreset.
  420.     Add a couple of comments.
  421.     (yywrap): Always return 1, not 0.
  422.     (yy_flex_alloc, yy_flex_realloc, yy_flex_free): #if 0 out.
  423.  
  424.     * src/utils.cc (raw_mode): Only complain about stdin not being a
  425.     tty if we are really interactive.
  426.  
  427.     * src/octave.cc (main): End startup message with endl to ensure
  428.     flushing before other output.
  429.     * Turn of readline's blink_matching_paren feature if not
  430.     interactive, or if reading from a file specified on the command
  431.     line.
  432.  
  433.     * src/octave.cc (main): Set the symbol table context just before
  434.     calling reset_parser in the main loop.
  435.     * src/lex.l (reset_parser): Not here.
  436.  
  437.     * src/input.cc (octave_gets): Declare static.
  438.     (octave_read): Also handle echoing input if not using readline.
  439.  
  440.     * Makefile.in (DISTFILES): Add SENDING-PATCHES to the list.
  441.  
  442. Mon Jan 10 14:30:13 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  443.  
  444.     * scripts/corrcoef.m, scripts/fortran_vec.m, scripts/kurtosis.m,
  445.     scripts/ols.m, scripts/skewness.m, scripts/cov.m, scripts/gls.m,
  446.     scripts/mahalanobis.m, scripts/pinv.m: New script files from Kurt
  447.     Hornik (hornik@neuro.tuwien.ac.at) and the Department of
  448.     Probability Theory and Statistics TU Wien, Austria. 
  449.  
  450. Sun Jan  9 01:11:05 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  451.  
  452.     * src/g-builtins.cc (builtin_fsqp_options): If FSQP_MISSING is
  453.     defined, don't call fsqp_options; just print usage message.
  454.     (builtin_npsol_options): Likewise, for npsol_options.
  455.     (builtin_qpsol_options): Likewise, for qpsol_options.
  456.     * src/builtins.cc (general_functions): Provide different usage
  457.     message for fsqp_options depending on whether FSQP_MISSING is
  458.     defined.  Likewise for npsol_options and qpsol_options.
  459.  
  460. Sat Jan  8 16:45:57 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  461.  
  462.     * libcruft/misc/dostop.c: Include config.h.
  463.  
  464.     * src/variables.cc (extract_keyword): Use ostrstream instead of
  465.     fixed length buffer.  For keywords with string values, return
  466.     value in static buffer.
  467.     * src/t-builtins.cc (builtin_load): Handle new argument list for
  468.     extract_keyword.  Handle possiblity of load_variable setting
  469.     error_state.
  470.     * src/tree-const.cc (tree_constant_rep::load): Handle new argument
  471.     list for extract_keyword.
  472.  
  473. Fri Jan  7 13:20:47 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  474.  
  475.     * src/f-eig.cc (builtin_eig_2): Rename from builtin_eig.
  476.     * src/f-fsolve.cc (builtin_fsolve_2): Rename from builtin_fsolve.
  477.     * src/f-inv.cc (builtin_inv_2): Rename from builtin_inv.
  478.  
  479. Thu Jan  6 12:29:41 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  480.  
  481.     * src/tree-base.h (tree::save): Add optional argument `precision'.
  482.     * src/tree-const.cc (tree_constant::save): Ditto.
  483.     (tree_constant_rep::save): Ditto.
  484.     * src/symtab.cc (symbol_def::save): Ditto.
  485.     (symbol_record::save): Ditto.
  486.     (symbol_table::save): Ditto.
  487.  
  488.     * src/t-builtins.cc (builtin_save): Pass user_pref.save_precision
  489.     to symbol table save functions.
  490.     * src/builtns.cc (string_variables): Add save precision to thelist.
  491.     (install_builtins): Initialize it.
  492.     * src/user-prefs.cc (set_save_precision): New function.
  493.     * src/user-prefs.h (user_pref.save_precision): New data element.
  494.  
  495.     * liboctave/Matrix-ext.cc: Provide correct prototypes for dgeesx
  496.     and zgeesx.
  497.     * (SCHUR::init): Don't declare a dummy_select function pointer,
  498.     just pass `(void *) 0' instead, since the dummy argument is never
  499.     supposed to be used anyway.
  500.  
  501.     * src/input.cc (initialize_readline): Cast command_completer to
  502.     CPPFunction, not Function, now that readline has more than one
  503.     function typedef.
  504.     * Add extern declaration for free_undo_list ().
  505.  
  506.     * Replace readline source from GDB with readline source from bash.
  507.     This allows paren matching.
  508.  
  509. Wed Jan  5 01:20:26 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  510.  
  511.     * configure.in: Also check for sys/select.h.
  512.  
  513.     * liboctave/RowVector.cc (ComplexRowVector::operator *): Complete
  514.     function body.  Put code in-line rather than making a call to the
  515.     BLAS routine zdotu to avoid having to cope with the various ways
  516.     that Fortran compilers might translate this.
  517.  
  518.     * src/input.cc (operate_and_get_next): New function, from bash.
  519.     (initialize_readline): Bind operate_and_get_next to C-O here.
  520.  
  521.     * src/input.cc (command_completer, command_generator):
  522.     Declare static here.
  523.     * srs/input.h (command_completer, command_generator):
  524.     Not extern here.
  525.  
  526.     * g-builtins.cc (builtin_warranty): Change copyright info.
  527.     * octave.cc (verbose_usage): Likewise.
  528.     (main): Likewise.
  529.  
  530. Mon Jan  3 15:49:41 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  531.  
  532.     * src/fnmatch.c, src/fnmatch.h: New files for pattern matching
  533.     from the GNU C library.
  534.     * src/Makefile.in: Add them to the appropriate lists.
  535.     * src/t-builtins.cc (builtin_save): Use fnmatch to do pattern
  536.     matching instead of using regular expressions.
  537.     (builtin_clear): Likewise.
  538.     (glob_pattern_p): New function.
  539.     (builtin_save): Print error message and return if only given one
  540.     argument that contains globbing characters.
  541.  
  542.     * src/symtab.cc (symbol_record::save): Don't attempt to save
  543.     undefined variables.
  544.  
  545. Wed Dec 29 02:55:08 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  546.  
  547.     * scripts/rank.m: Also need to compute SVD when nargin == 2.
  548.     Correct usage message.
  549.  
  550. Wed Dec 15 01:44:18 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  551.  
  552.     * src/f-lpsolve.cc, src/f-fsqp.cc, src/f-npsol.cc, src/f-qpsol.cc,
  553.     src/f-lsode.cc, src/f-dassl.cc, src/f-fsolve.cc, src/f-quad.cc:
  554.     New stub options functions, XXX_options, and XXX_options_2 (for
  555.     future dld use), where XXX is lpsolve, fsqp, npsol, etc.
  556.     * src/f-lpsolve.h, src/f-fsqp.h, src/f-npsol.h, src/f-qpsol.h,
  557.     src/f-lsode.h, src/f-dassl.h, src/f-fsolve.h, src/f-quad.h:
  558.     Declare XXX_options functions.
  559.     * src/builtins.cc (builtin_general_functions): Add new XXX_options
  560.     functions to the list of builtin functions.
  561.     * src/g-builtins.cc: Define builtin_XXX_options functions.
  562.     * src/g-builtins.h: Declare them.
  563.  
  564.     * scripts/tzero.m: Add missing comma in fprintf call.
  565.  
  566. Tue Dec 14 00:24:35 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  567.  
  568.     * libcruft/quadpack/*.f: Modify to handle user-requested
  569.     termination from inside the user-supplied function.
  570.     * src/f-quad.cc (quad_user_function): Set quad_integration_error
  571.     if an error is encountered in the user-supplied function.
  572.     * liboctave/Quad.h (quad_integration_error): New global variable.
  573.     * liboctave/Quad.cc (user_function): Handle
  574.     quad_integration_error, and error flag for modified Quadpack
  575.     functions.
  576.  
  577.     * src/tree.cc (tree_simple_assignment_expression::eval): Check
  578.     error status after calling convert_to_const_vector () on the
  579.     argument list.
  580.     (tree_index_expression::eval): Ditto.
  581.  
  582.     * src/tree.cc (tree_argument_list::convert_to_const_vector):
  583.     If an error is encountered while evaluating an element of the
  584.     list, print an error message including the element number.
  585.  
  586.     * liboctave/ODE.cc (integration_error): New private data member.
  587.     (ODE constructors): Initialize it to zero.
  588.     (ODE::integrate (double)): Reset it to zero before each
  589.     integration step.
  590.     (lsode_f): Treat empty vector returned from user-supplied function
  591.     as an error.
  592.     * src/f-lsode.cc (lsode_user_function): Return empty vector if
  593.     error is encountered in user-supplied function.  Don't jump to top
  594.     level on error.
  595.  
  596.     * libcruft/odepack/lsode.f (lsode): Return with istate = -13 on
  597.     error from user supplied subroutine.
  598.     * libcruft/odepack/lsode.f (lsode): Handle extra argument returned
  599.     from user-supplied function.
  600.     * libcruft/odepack/stode.f (stode): Likewise.
  601.     * libcruft/odepack/prepj.f (prepj): Likewise.
  602.  
  603. Wed Dec  8 01:30:57 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  604.  
  605.     * liboctave/DAE.cc (integration_error): New private data member.
  606.     (DAE constructors): Initialize it to zero.
  607.     (DAE::integrate (double)): Reset it to zero before each
  608.     integration step.
  609.     (dassl_f): Treat empty vector returned from user-supplied function
  610.     as an error.
  611.     * src/f-dassl.cc (dassl_user_function): Return empty vector if
  612.     error is encountered in user-supplied function.  Don't jump to top
  613.     level on error.
  614.  
  615.     * liboctave/NPSOL.cc (npsol_objective_error): New global variable.
  616.     (npsol_objfun): Set to zero before calling user-supplied function.
  617.     Check after calling user-supplied function.
  618.     Set mode to -1 on error.
  619.     (npsol_confun): Set mode to -1 on error.
  620.     (npsol declaration): Declare args for user-supplied functions.
  621.     * src/f-npsol.cc (npsol_objective_function): If an error is
  622.     encountered in the calculation of the objective function, set
  623.     npsol_objective_error to 1.
  624.     (npsol_constraint_function): Treat empty vector returned from
  625.     user-supplied function as an error.
  626.  
  627.     * liboctave/Array.cc (*::checkelem): Correct bounds checking.  On
  628.     error, return uninitialized value of type T.  This avoids placing
  629.     an extra requirement on the class that can be used as an array
  630.     element.
  631.     (*::operator ()): Likewise.
  632.  
  633. Mon Dec  6 07:24:49 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  634.  
  635.     * liboctave/NLEqn.cc (hybrd1 declaration): Declare args for
  636.     user-supplied fuction.
  637.     (hybrj1): Likewise.
  638.     (hybrd1_fcn): Treat return of empty vector from user supplied
  639.     function as an error by setting iflag to -1.
  640.     (hybrj1_fcn): Likewise.
  641.     (solve): Handle case of info < 0 returned from hybrd1.
  642.  
  643.     * src/f-fsolve.cc (fsolve_user_function): Don't jump to top level
  644.     on error in user-supplied function.  Treat empty vector returned
  645.     from user-supplied function as error.
  646.     (hybrd_info_to_fsolve_info): Translate -1 (failure in evaluation
  647.     of user-supplied function) to -2.
  648.     * scripts/perror.m (fsolve case): Handle -2.
  649.  
  650.     * info/error.c (program_name): Initialize to info, not NULL.
  651.  
  652.     * info/session.c (initialize_info_session): Don't exit if term is
  653.     too dumb or too small to use info.  Return int status instead.
  654.     * info/info.h (TERM_TOO_SMALL): New macro.
  655.  
  656.     * src/t-buitlins.cc (try_info): Check return value from
  657.     initialize_info_session ().
  658.  
  659.     * liboctave/Array.cc (DiagArray<T>::DiagArray (int n, const T& val)):
  660.     Set number of rows and columns to n, not 0.
  661.  
  662. Sat Dec  4 14:01:41 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  663.  
  664.     * src/lex.h (YY_INPUT): Undefine if defined, then always define
  665.     the way we want.
  666.     (YY_FATAL_ERROR): Likewise.
  667.  
  668.     * src/lex.l (yywrap): Declare static.
  669.     (yy_flex_alloc): New function, so we don't have to link with
  670.     libfl.a when using flex 2.4.x.
  671.     (yy_flex_realloc): Ditto.
  672.     (yy_flex_free): Ditto.
  673.  
  674. Thu Dec  2 19:23:43 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  675.  
  676.     * scripts/*.m: Add copying notice to script files.
  677.  
  678.     * src/input.cc (command_generator): Return copy of matching string.
  679.  
  680.     * src/input.cc (command_generator): Correctly delete array of
  681.     character strings.
  682.     * src/symtab.cc (symbol_table::save): Likewise.
  683.     * src/utils.cc (pathstring_to_vector): Likewise.
  684.  
  685.     * src/utils.cc (get_m_file_names): When reallocating vector of
  686.     strings, delete original vector of pointers, but not the strings
  687.     they point to.
  688.  
  689. Tue Nov 30 12:36:41 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  690.  
  691.     * liboctave/RowVector.cc, liboctave/ColVector.cc,
  692.     liboctave/DiagMatrix.cc, liboctave/Matrix.cc,
  693.     liboctave/Matrix-ext.cc: Massive rewrite to cope with new
  694.     derivation scheme.
  695.  
  696.     * liboctave/Matrix.h: Include Array.h, and derive Matrix,
  697.     ComplexMatrix, etc. from Array<double>.  Derive Complex
  698.     versions from Array<Complex>.  Delete declarations of functions
  699.     now inherited from the Array classes.
  700.     * Include mx-kludge.h with appropriate #defines in each class that
  701.     needs it.
  702.     * liboctave/Matrix.cc: Include mx-kludge.cc with appropriate
  703.     #defines in each class that needs it.
  704.  
  705.     * liboctave/Makefile.in (INCLUDES): Add Array.h, MArray.h, and
  706.     mx-kludge.h.
  707.     (SOURCES): Add Array.cc.
  708.     (EXTRAS): Add MArray.cc and mx-kludge.cc.
  709.  
  710.     * liboctave/mx-kludge.h, liboctave/mx-kludge.cc: New files to
  711.     implement the MArray functionality with macros until g++ can
  712.     handle the MArray stuff.
  713.  
  714.     * liboctave/MArray.h, liboctave/MArray.cc: New files for generic
  715.     arrays with simple math functions for like-types.  This won't
  716.     quite work with g++ yet, so it's not used anywhere.
  717.  
  718.     * liboctave/Array.h, liboctave/Array.cc: New files for generic
  719.     arrays.
  720.  
  721.     * liboctave/mx-inlines.cc: Add const for const arguments.
  722.  
  723.     * src/file-io.cc (file_info): Rename class from File_info.
  724.     (file_info::operator =): Fix memory leak by deleting old name
  725.     and mode before saving new.  Don't do copy if source and
  726.     destination are the same.
  727.  
  728.     * src/tree.cc (tree_matrix::eval): Plug memory leak.
  729.  
  730.     * src/tree.cc (tree_builtin::tree_builtin): Check to see that nm,
  731.     not my_name, is non-NULL before saving it.
  732.  
  733.     * src/tree.cc (tree_identifier::eval, tree_gobal_command::eval):
  734.     After performing the assignment, delete the identifier created
  735.     for temporary asssignment since the destrucotr for
  736.     tree_simple_assignment_expression doesn't do it for us.
  737.  
  738.     * src/tree.cc (tree_function::stash_m_file_name): Delete file_name
  739.     before saving it.
  740.     (tree_function::stash_function_name): Likewise, for fcn_name.
  741.  
  742.     * src/lex.l, src/lex.h: Make quote_is_transpose globally visible.
  743.     * src/parse.y (param_list): Use it, and recognize empty parameter
  744.     lists here.
  745.  
  746.     * src/parse.y (simple_expr1): Recognize empty matrices here.
  747.     (matrix): Not here.
  748.  
  749.     * src/arith-ops.cc (do_binary_op): The matrix product and quotient
  750.     functions aren't class member functions now.
  751.  
  752.     * src/tc-index.cc, src/tc-assign.cc, src/symtab.cc,
  753.     src/tree-plot.cc, src/idx-vector.cc, src/tree-const.cc:
  754.     Call ::error, not just error, since g++ now complains about not
  755.     being able to find a non-hidden member function by that name.
  756.  
  757.     * src/tree-const.cc: Call ::real and ::imag, not just real and imag,
  758.     since g++ now complains about not being able to find non-hidden
  759.     member functions by those names.
  760.  
  761.     * src/tree-const.cc (tree_constant_rep::force_numeric): Handle case
  762.     of zero-length strings.
  763.  
  764.     * src/tree-const.cc (tree_constant_rep::convert_to_str): Null
  765.     terminate strings created from scalars.
  766.  
  767.     * src/tc-index.cc (tree_constant_rep::fortran_style_matrix_index): Use
  768.     data(), not fortran_vec().
  769.     * src/idx-vector.cc (idx_vector::idx_vector): Likewise.
  770.  
  771.     * src/SLStack.cc: Move function definitions here.
  772.     * src/SLStack.h: From here.  Include SLStack.cc if not using
  773.     external templates.
  774.  
  775.     * src/unwind-prot.h: Move class declaration here.
  776.     * src/unwind-prot.cc: From here.
  777.  
  778.     * src/xdiv.h, src/xpow.h, src/variables.h, src/utils.h,
  779.     src/user-prefs.h, src/t-builtins.h, src/sighandlers.h,
  780.     src/pr-output.h, src/pager.h, src/octave-hist.h, src/mappers.h,
  781.     src/input.h, src/help.h, src/gripes.h, src/g-builtins.h,
  782.     src/f-syl.h, src/f-svd.h, src/f-schur.h, src/f-rand.h,
  783.     src/f-qzval.h, src/f-quad.h, src/f-qr.h, src/f-qpsol.h,
  784.     src/f-npsol.h, src/f-lu.h, src/f-lsode.h, src/f-lpsolve.h,
  785.     src/f-inv.h, src/f-ifft.h, src/f-hess.h, src/f-givens.h,
  786.     src/f-fsqp.h, src/f-fsolve.h, src/f-fft.h, src/f-expm.h,
  787.     src/f-eig.h, src/f-det.h, src/f-dassl.h, src/f-colloc.h,
  788.     src/f-chol.h, src/f-balance.h, src/error.h, src/dynamic-ld.h,
  789.     src/builtins.h, src/arith-ops.h, src/tree-const.h, src/tree.h,
  790.     src/token.h, src/symtab.h, src/procstream.h, src/idx-vector.h,
  791.     src/file-io.h, src/tree-base.h, src/unwind-prot.h, src/Stack.h,
  792.     liboctave/LinConst.h, liboctave/FEGrid.h, liboctave/NLEqn.h,
  793.     liboctave/NLConst.h, liboctave/LPsolve.h, liboctave/LP.h,
  794.     liboctave/FSQP.h, liboctave/DAEFunc.h, liboctave/DAE.h,
  795.     liboctave/CollocWt.h, liboctave/Bounds.h, liboctave/Objective.h,
  796.     liboctave/ODEFunc.h, liboctave/NLFunc.h, liboctave/Range.h,
  797.     liboctave/Quad.h, liboctave/QP.h, liboctave/QPSOL.h,
  798.     liboctave/QLD.h, liboctave/NPSOL.h, liboctave/NLP.h,
  799.     liboctave/f77-uscore.h, liboctave/lo-error.h,
  800.     liboctave/Matrix.h:
  801.     Don't use #pragma interface.
  802.  
  803.     * src/tc-index.cc, src/tc-assign.cc, src/symtab.cc,
  804.     src/procstream.cc, src/gripes.cc, src/f-syl.cc, src/f-svd.cc,
  805.     src/f-schur.cc, src/f-rand.cc, src/f-quad.cc, src/f-qr.cc,
  806.     src/f-qpsol.cc, src/f-npsol.cc, src/f-lu.cc, src/f-lsode.cc,
  807.     src/f-lpsolve.cc, src/f-inv.cc, src/f-ifft.cc, src/f-hess.cc,
  808.     src/f-givens.cc, src/f-fsqp.cc, src/f-fsolve.cc, src/f-fft.cc,
  809.     src/f-eig.cc, src/f-det.cc, src/f-dassl.cc, src/f-colloc.cc,
  810.     src/f-chol.cc, src/f-balance.cc, src/t-builtins.cc,
  811.     src/octave-hist.cc, src/input.cc, src/g-builtins.cc,
  812.     src/xdiv.cc, src/xpow.cc, src/user-prefs.cc, src/unwind-prot.cc,
  813.     src/tree-plot.cc, src/token.cc, src/tc-extras.cc, src/sysdep.cc,
  814.     src/sighandlers.cc, src/pr-output.cc, src/pager.cc,
  815.     src/mappers.cc, src/idx-vector.cc, src/help.cc, src/f-qzval.cc,
  816.     src/f-expm.cc, src/error.cc, src/dynamic-ld.cc, src/builtins.cc,
  817.     src/arith-ops.cc, src/variables.cc, src/utils.cc,
  818.     src/tree-const.cc, src/file-io.cc, src/tree.cc,
  819.     liboctave/sun-utils.cc, liboctave/mx-inlines.cc,
  820.     liboctave/RowVector.cc, liboctave/ColVector.cc,
  821.     liboctave/DiagMatrix.cc, liboctave/Matrix.cc,
  822.     liboctave/Matrix-ext.cc, liboctave/Quad.cc, liboctave/ODE.cc,
  823.     liboctave/LPsolve.cc, liboctave/FSQP.cc, liboctave/DAE.cc,
  824.     liboctave/DAEFunc.cc, liboctave/QP.cc, liboctave/Objective.cc,
  825.     liboctave/ODEFunc.cc, liboctave/NLFunc.cc, liboctave/NLConst.cc,
  826.     liboctave/LP.cc, liboctave/lo-error.cc, liboctave/Range.cc,
  827.     liboctave/QPSOL.cc, liboctave/NPSOL.cc, liboctave/NLEqn.cc,
  828.     liboctave/Matrix.cc, liboctave/Matrix-ext.cc,
  829.     liboctave/LinConst.cc, liboctave/FEGrid.cc,
  830.     liboctave/DiagMatrix.cc, liboctave/CollocWt.cc,
  831.     liboctave/ColVector.cc, liboctave/Bounds.cc:
  832.     Don't use #pragma implementation.
  833.  
  834.     * src/lex.l, src/parse.y, src/procstream.cc, src/gripes.cc,
  835.     src/f-syl.cc, src/f-svd.cc, src/f-schur.cc, src/f-rand.cc,
  836.     src/f-quad.cc, src/f-qr.cc, src/f-qpsol.cc, src/f-npsol.cc,
  837.     src/f-lu.cc, src/f-lsode.cc, src/f-lpsolve.cc, src/f-inv.cc,
  838.     src/f-ifft.cc, src/f-hess.cc, src/f-givens.cc, src/f-fsqp.cc,
  839.     src/f-fsolve.cc, src/f-fft.cc, src/f-eig.cc, src/f-det.cc,
  840.     src/f-dassl.cc, src/f-colloc.cc, src/f-chol.cc,
  841.     src/f-balance.cc, src/t-builtins.cc, src/octave-hist.cc,
  842.     src/input.cc, src/g-builtins.cc, src/xdiv.cc, src/xpow.cc,
  843.     src/user-prefs.cc, src/unwind-prot.cc, src/tree-plot.cc,
  844.     src/token.cc, src/tc-extras.cc, src/sysdep.cc,
  845.     src/sighandlers.cc, src/pr-output.cc, src/pager.cc,
  846.     src/mappers.cc, src/idx-vector.cc, src/help.cc, src/f-qzval.cc,
  847.     src/f-expm.cc, src/error.cc, src/dynamic-ld.cc, src/builtins.cc,
  848.     src/arith-ops.cc, src/variables.cc, src/utils.cc,
  849.     src/tree-const.cc, src/file-io.cc, src/tree.cc: If HAVE_CONFIG_H
  850.     is defined, include config.h.
  851.  
  852.     * config.h.in, acconfig.h: New files
  853.     * Makefile.in (DISTFILES): Add them to the list.
  854.  
  855.     * Makeconf.in (root_srcdir): Define.
  856.     (INCFLAGS): Clean up.
  857.     (UGLY_ALL_CFLAGS): New macro.
  858.     (UGLY_ALL_CXXFLAGS): Likewise.
  859.     (UGLY_ALL_LDFLAGS): Likewise.
  860.  
  861.     * configure.in: Convert to generate config.h.
  862.     Substitute root_srcdir in Makefiles.
  863.     Use AC_DEFINE(foo, 1) instead of DEFS="$DEFS -Dfoo=1".
  864.     If using g++ 2.5 or later, define USE_EXTERNAL_TEMPLATES.
  865.     Use UGLY_DEFS for what would have been substited in DEFS, for
  866.     those cases when we need DEFS instead of config.h.
  867.  
  868. Tue Nov 16 04:59:19 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  869.  
  870.     * src/f-expm.cc, src/f-givens.cc, src/f-qzval.cc, src/f-syl.cc:
  871.     Include f77-uscore.h here.
  872.  
  873.     * liboctave/ColVector.cc, liboctave/Matrix.cc,
  874.     liboctave/Matrix-ext.cc, liboctave/RowVector.cc: Move declarations
  875.     for Fortran functions here.
  876.     * liboctave/Matrix.h: From here. Don't include f77-uscore.h here.
  877.  
  878. Mon Nov 15 04:03:34 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  879.  
  880.     * src/tc-extras.cc (min): For two-arg versions, use error(), not
  881.     FAIL.
  882.     (max): Likewise.
  883.     * src/idx-vector.cc (checkelem): Likewise.
  884.  
  885.     * liboctave/Matrix.h, liboctave/Matrix.cc, liboctave/RowVector.cc,
  886.     liboctave/ColVector.cc, liboctave/DiagMatrix.cc,
  887.     liboctave/Matrix-ext.cc, liboctave/Bounds.cc, liboctave/DAE.cc,
  888.     liboctave/CollocWt.cc, liboctave/FEGrid.cc, liboctave/LinConst.cc,
  889.     liboctave/ODE.cc, liboctave/NLEqn.cc: Don't abort or exit on
  890.     errors.  Instead print some message by calling the function
  891.     pointed to by current_liboctave_error_handler and then return.
  892.  
  893.     * liboctave/lo-error.cc: New file, for liboctave error handling
  894.     stuff.
  895.  
  896. Sun Nov 14 23:28:12 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  897.  
  898.     * src/utils.cc (default_path): Handle OCTAVE_PATH from the
  899.     environment like TeX handles TEXINPUTS.  If the path starts with
  900.     `:', prepend the standard path.  If it ends with `:' append the
  901.     standard path.  If it begins and ends with `:', do both (which is
  902.     useless, but the luser asked for it...).
  903.     (octave_lib_dir): Plug memory leak.
  904.  
  905. Sat Nov 13 02:41:24 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  906.  
  907.     * src/symtab.h (symbol_record::context): New data member, to allow
  908.     recursive functions to work.
  909.     * src/symtab.cc (symbol_record::push_context): New function
  910.     (symbol_record::pop_context): Ditto.
  911.     (symbol_table::pop_context): Ditto.
  912.     (symbol_table::push_context): Ditto.
  913.  
  914.     * src/tree.cc (tree_function::eval): If call_depth is > 1, push
  915.     symbol table context and add unwind protect to pop it on exit or
  916.     error.
  917.     (pop_symbol_table_context): New function for unwind protect.
  918.  
  919.     * configure.in: Use AC_HAVE_HEADERS(unistd.h) instead of
  920.     AC_UNISTD_H.
  921.  
  922.     * src/lex.l, src/f-quad.cc, src/f-rand.cc, src/f-lpsolve.cc,
  923.     src/f-fsqp.cc, src/f-fsolve.cc, src/f-det.cc, src/f-dassl.cc,
  924.     src/f-colloc.cc, src/utils.cc, src/variables.cc, src/tree.cc,
  925.     src/tree-const.cc, src/tc-extras.cc, src/sysdep.cc, src/symtab.cc,
  926.     src/octave-hist.cc, src/pr-output.cc, src/input.cc,
  927.     src/g-builtins.cc, src/f-det.cc, src/f-inv.cc, src/file-io.cc:
  928.     Convert most calls to message() to calls to warning() or error()
  929.     instead.
  930.  
  931.     * src/f-npsol.cc (npsol): Don't try to create the linear
  932.     constraint object before checking array sizes.
  933.  
  934. Fri Nov 12 04:36:12 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  935.  
  936.     * src/tc-inlines.cc (is_one_zero): New function.
  937.     * src/tc-assign.cc: Everywhere we check for is_zero_one, also
  938.     check for is_one_zero.  Some people write ranges that go in
  939.     decreasing order...
  940.     * src/tc-index.cc: Likewise.
  941.  
  942.     * src/tc-inlines (index_check (Range&, int&, char*)): Eliminate
  943.     second arg -- there is no need to return the max value of the
  944.     range.  Correctly compute and check the minimum value.
  945.     * src/tc-index.cc: Change all callers, and check the max value
  946.     there.
  947.     * src/tc-assign.cc: Likewise.
  948.  
  949.     * src/tc-assign.cc (do_vector_assign): Handle assignment of empty
  950.     matrix for int, idx_vector, and Range cases.
  951.     (do_matrix_assign): Likewise, for cases when one of the indices is
  952.     a colon and the other is an int, idx_vector, or Range.
  953.  
  954.     * liboctave/Range.h (Range): Rename private data members rng_foo
  955.     instead of just _foo.
  956.     * liboctave/Range.cc: Change names where used.
  957.  
  958.     * liboctave/Range.cc (max): Return correct value even when the
  959.     elements in the range don't line up exactly with the limit.
  960.     (min): Likewise.
  961.     (sort): New function.
  962.  
  963.     * src/tc-assign.cc (delete_row (int)): New function.
  964.     (delete_rows (idx_vector&)): Ditto.
  965.     (delete_rows (Range&)): Ditto.
  966.     (delete_column (int)): New function.
  967.     (delete_columns (idx_vector&)): Ditto.
  968.     (delete_columns (Range&)): Ditto.
  969.  
  970.     * src/tree-const.h (is_empty): Don't try checking rows and columns
  971.     if type is magic_colon or unknown.  Return false instead.
  972.     (is_zero_by_zero): New function.
  973.  
  974.     * src/idx-vector.cc (sort): New function.
  975.     (intcmp): New static function, for sorting.
  976.  
  977. Thu Nov 11 02:31:13 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  978.  
  979.     * scripts/menu.m: Update to use new va_start() and va_arg()
  980.     functions.
  981.  
  982.     * src/g-builtins.cc (builtin_va_arg): Rename from
  983.     builtin_get_next_arg.
  984.     (builtin_va_start): New function.
  985.     * src/builtins.cc (builtin_general_functions): Fix up list.
  986.  
  987.     * src/tree.cc (tree_function::va_arg): Rename from get_next_arg.
  988.     (tree_function::va_start): New function.
  989.  
  990.     * src/tree.h (tree_function::num_named_args): New data member.
  991.     * src/tree.cc (tree_function::define_param_list): Set it.
  992.     (tree_function::eval): Unwind-protect it.
  993.  
  994. Wed Nov 10 03:37:44 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  995.  
  996.     * src/tree.cc (tree_identifier::assign): Also check to make sure
  997.     that the symbol record is defined since symbol_record::is_variable
  998.     may return true even if the record is undefined.
  999.     * src/variables.cc (link_to_global_variable): Don't try to copy a
  1000.     NULL_TREE_CONST.
  1001.  
  1002.     * src/tree-const.cc (tree_constant_rep::matrix_value): If the
  1003.     current value is a scalar, return 1x1 matrix.
  1004.     * src/tc-assign.cc (tree_constant_rep::check_vector_assign):
  1005.     Handle case of zero size LHS.
  1006.     Clean up formatting of some error messages.
  1007.  
  1008.     * src/lex.l ({EL}): Recognize ... when not at end of line.
  1009.     * src/octave.cc (curr_function): New global variable.
  1010.     * src/g-buitlins.cc (builtin_get_next_arg): New function.
  1011.     * src/builtins.cc (builtin_general_functions): Add it to the list.
  1012.     * src/parse.y (param_list1): Handle ... at end of parameter list.
  1013.     Abort parse on error.
  1014.     (ELLIPSIS): New token, for variable argument lists.
  1015.     * src/tree.h (tree_function): Add varargs_ok, args_passed,
  1016.     num_args_passed, and curr_arg_number data members to handle
  1017.     variable argument lists.
  1018.     (tree_parameter_list::marked_for_varargs): New data member.
  1019.     * src/tree.cc (tree_function::takes_varargs): New function.
  1020.     (tree_function::get_next_arg): New function.
  1021.     (tree_parameter_list::mark_varargs): New function.
  1022.     (tree_parameter_list::takes_varargs): New function.
  1023.     (tree_function::eval): Set curr_function, args_passed, and
  1024.     num_args_passed for use by get_next_arg.
  1025.  
  1026. Mon Nov  8 14:22:34 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1027.  
  1028.     * Version 0.79 released.
  1029.  
  1030.     * src/builtins.cc (builtin_text_functions):  Correct usage message
  1031.     for who.
  1032.  
  1033.     * scripts/dgram.m: New function, from R. Bruce Tenison
  1034.     (btenison@eng.auburn.edu).
  1035.     * scripts/dlqe.m: Ditto.
  1036.     * scripts/dlqr.m: Ditto.
  1037.     * scripts/c2d.m: Ditto.
  1038.  
  1039.     * src/tree.cc (tree_identifier::name): Make it const.
  1040.     (tree_builtin::name): Ditto.
  1041.     (tree_parameter_list::name): Ditto.
  1042.     (tree_word_list::name): Ditto.
  1043.  
  1044.     * src/symtab.cc (symbol_table::save): Delete list of names after
  1045.     saving.
  1046.  
  1047.     * src/symtab.h (symbol_table): Move #defines outside of class
  1048.     declaration.
  1049.  
  1050. Sun Nov  7 07:03:12 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1051.  
  1052.     * Makeconf.in (CXX): Don't set from C++.  Do set from @CXX@, which
  1053.     is determined by configure.  Don't set C++FLAGS.
  1054.  
  1055.     * src/tree.cc: (tree_function::eval (int, int)): Simply call
  1056.     eval (tree_constant *, int, int, int) with nargin = 1 and args =
  1057.     NULL_TREE_CONST instead of duplicating most of that function in place.
  1058.  
  1059.     * src/parse.y (func_def2): Reset id_name after renaming identifier.
  1060.     Clear id_name from top level symbol table before defining identifier.
  1061.  
  1062. Sat Nov  6 04:38:57 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1063.  
  1064.     * configure.in: When checking for g++, set CXX, not GXX.
  1065.  
  1066.     Merge min changes from Bruce Tenison (btenison@eng.auburn.edu) and
  1067.     make the corresponding changes for max.
  1068.  
  1069.         * src/tc-extras.cc (min (ComplexMatrix&, ComplexMatrix&)): New
  1070.     function.
  1071.     (max (ComplexMatrix&, ComplexMatrix&)): Ditto.
  1072.     (column_min): Handle complex args and two return values.
  1073.     (column_max): Likewise.
  1074.  
  1075.         * liboctave/Matrix.cc (row_min_loc): New function.
  1076.     (row_max_loc): New function.
  1077.     (column_min_loc): Ditto.
  1078.     (column_max_loc): Ditto.
  1079.  
  1080. Fri Nov  5 03:12:55 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1081.  
  1082.     * Version 0.78.
  1083.  
  1084.     * src/octave.h (clean_up_and_exit): Change form of declaration for
  1085.     GCC 2.5.x and beyond.
  1086.  
  1087.     * src/tree.cc (tree_identifier::eval): Correctly handle printing
  1088.     of identifier tags and conversion to assignment to `ans'.
  1089.     * src/parse.y (maybe_convert_to_ans_assign): Simplify.
  1090.     For identifiers, defer decision about making an ans assignment
  1091.     until evaluation time since identifiers can be undefined at parse
  1092.     time, and we can't tell what to do until we know what the def is.
  1093.     * src/tree.cc (tree_identifier::mark_for_possible_ans_assgin): New
  1094.     function.
  1095.     * src/tree.cc (tree_index_expression::mark_for_possible_ans_assign):
  1096.     New function.
  1097.     * src/tree.h (tree_identifier): Add new private data,
  1098.     maybe_do_ans_assign.
  1099.  
  1100.     * src/t-builtins.cc (builtin_who): Major overhaul.  Support long
  1101.     listings.
  1102.     (print_symbol_info_line): New function.
  1103.     (print_long_listing): Ditto.
  1104.     (maybe_list): Ditto.
  1105.  
  1106.     * src/user-prefs.cc (sv_editor): New function for builtin variable
  1107.     EDITOR.
  1108.     * src/octave-hist.cc (do_edit_history): Use user_pref.editor, not
  1109.     just the EDITOR environment variable.
  1110.  
  1111.     * src/user-prefs.cc (ignore_function_time_stamp): New function for
  1112.     new builtin variable ignore_function_time_stamp.
  1113.     * src/variables.cc (symbol_out_of_date): Use value of new
  1114.     user_pref.ignore_function_time_stamp to decide whether to check to
  1115.     see if a file has changed.
  1116.     * src/tree.h (tree_function): Add new private data, system_m_file.
  1117.  
  1118.     * src/builtins.cc (string_variables): Add EDITOR and
  1119.     ignore_function_time_stamp EDITOR to the list.
  1120.     (bultin_general_functions): Add is_global to the list.
  1121.  
  1122.     * src/t-builtins.cc (builtin_clear): Make it work with new
  1123.     variable scoping rules.
  1124.     (builtin_document): Likewise, using new document_symbol()
  1125.     function.
  1126.     (builtin_save): Likewise.  Allow regular expression arguments.
  1127.     Don't save builtin variables that are read-only.
  1128.  
  1129.     * src/utils.cc (octave_home): Don't declare static.
  1130.     (octave_lib_dir): Likewise.
  1131.     (octave_info_dir): Likewise.
  1132.     (default_editor): New function.
  1133.  
  1134.     * src/tree.cc (tree_builtin::def): Delete function.
  1135.     (tree_identifier::def): Likewise.
  1136.     (tree_identifier::symrec): Likewise.
  1137.  
  1138.     * src/tree.h (tree_builtin): Store name of function, not pointer
  1139.     to symbol record.
  1140.  
  1141.     * src/user-prefs.cc (warn_assign_as_truth_value): Lookup
  1142.     "warn_assign_as_truth_value", not "user_pref.warn...".
  1143.  
  1144.     * src/tree-base.h (def): Delete unused virtual function.
  1145.     (is_prefix_expression): New virtual function.
  1146.     (mark_for_possible_ans_assign): Likewise.
  1147.     (is_system_m_file): Likewise.
  1148.     (stash_m_file_name): No longer needs to be virtual.
  1149.     (stash_m_file_time): Likewise.
  1150.  
  1151.     * src/octave.cc (octave_Complex_error_handler): Define, to keep
  1152.     errors in the Complex class from aborting Octave.  This is only a
  1153.     temporary fix, I hope.
  1154.     (main): Install it.
  1155.     (initialize_globals): Get default editor.
  1156.     (main): Call initialize_symbol_tables to do that instead of
  1157.     creating them directly in main.
  1158.  
  1159.     * src/variables.cc (document_symbol): New function.
  1160.     (initialize_symbol_tables): Likewise.
  1161.     (install_builtin_mapper_function): Likewise.
  1162.     (install_builtin_text_function): Likewise.
  1163.     (install_builtin_general_function): Likewise.
  1164.     (install_builtin_variable): Likewise.
  1165.     (install_builtin_variable_as_function): Likewise.
  1166.     (bind_nargin_and_nargout): Likewise.
  1167.     (bind_builtin_variable): Likewise.
  1168.     (link_to_global_variable): Likewise.
  1169.     (link_to_builtin_variable): Likewise.
  1170.     (link_to_builtin_or_function): Likewise.
  1171.     (force_link_to_function): Likewise.
  1172.     (is_globally_visible): Likewise.
  1173.     (is_builtin_variable): Likewise.
  1174.  
  1175.     * src/tree.cc (print_as_scalar): Avoid trying to print row vectors
  1176.     on one line.
  1177.  
  1178.     * src/builtins.cc (install_buitlins): Simplify installation of
  1179.     builtin functions using new install_builtin_*_function functions.
  1180.     Ditto for using bind_builtin_variable for installing variables.
  1181.  
  1182.     * src/tree.h (tree_global_command): New class.
  1183.     * src/tree.cc (tree_global_command::*): Implement new class to
  1184.     make global command executable.
  1185.     * src/parse.y (global_decl): Make global an executable statement.
  1186.  
  1187.     * src/parse.y (func_def2): Rework to match new way of handling
  1188.     global variables and function names in the symbol table.
  1189.     Mark functions as `system' or not.
  1190.     Don't use id_to_define.
  1191.     If m-file and function names disagree, rename function to match
  1192.     m-file name.
  1193.     * src/tree.cc (tree_identifier::rename): New function.
  1194.     * src/parse.cc, src/parse.h (id_to_define): Delete unused global
  1195.     variable.
  1196.  
  1197.     * src/varables.cc (builtin_string_variable): Fix to match new
  1198.     rules for global and builtin variables.
  1199.     (builtin_real_scalar_variable): Likewise.
  1200.  
  1201.     * src/tree.cc (tree_identifier::assign): Make it work with new
  1202.     rules for global variables.
  1203.     (tree_identifier::parse_m_file): Likewise.
  1204.     (tree_identifier::do_lookup): Likewise.
  1205.  
  1206.     * src/tree.cc (mark_as_system_m_file): New function.
  1207.     (is_system_m_file): Ditto.
  1208.  
  1209.     * src/tree.cc (clear_symbol_table): New function, to be used in an
  1210.     unwined_protect element for clearing function symbol tables on
  1211.     exit or error.
  1212.  
  1213.     * src/tree.cc (tree_function::eval): Simplify using
  1214.     bind_nargin_and_nargout.
  1215.     Clear symbol table on exit or error with unwind_protect.
  1216.  
  1217.     * src/tree.cc (tree_prefix_expression::is_prefix_expression): New
  1218.     function.
  1219.  
  1220.     * src/g-builtins.cc (builtin_is_global): New function.
  1221.  
  1222.     * src/lex.l (lookup_identifier): Now that global variable binding
  1223.     has been fixed, only look for symbols in the current symbol table.
  1224.     Really.  I mean it this time.
  1225.  
  1226.     * src/symtab.cc: Complete overhaul, to make global variables work
  1227.     a bit more reasonably.
  1228.  
  1229. Mon Nov  1 15:03:39 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1230.  
  1231.     * src/Matrix.h (DiagMatrix::rows): Return nr, not len.
  1232.     (ComplexDiagMatrix::rows): Ditto.
  1233.     * src/Matrix.h (DiagMatrix::cols): Return nc, not len.
  1234.     (ComplexDiagMatrix::cols): Ditto.
  1235.     (DiagMatrix::columns): Ditto.
  1236.     (ComplexDiagMatrix::columns): Ditto.
  1237.  
  1238.     * liboctave/DiagMatrix.cc (DiagMatrix::row): Make it work for
  1239.     square case.
  1240.     (DiagMatrix::column): Likewise.
  1241.     (ComplexDiagMatrix::row): Likewise.
  1242.     (ComplexDiagMatrix::column): Likewise.
  1243.  
  1244.     * liboctave/DiagMatrix.cc (DiagMatrix::operator <<): Print spaces
  1245.     between elements.
  1246.     (ComplexDiagMatrix::operator <<): Likewise.
  1247.  
  1248. Fri Oct 29 15:32:12 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1249.  
  1250.     * Version 0.77.1.
  1251.  
  1252.     * src/symtab.cc (symbol_record::alias): Don't copy formal_param or
  1253.     forced_global attribute.
  1254.  
  1255.     * src/symtabl.cc (symbol_table::bind_globals): Don't bind to
  1256.     global symbol unless it has forced_global attribute set.
  1257.  
  1258.     * src/tree.cc (print_as_scalar): New function.
  1259.     (tree_identifier::eval): Use it.
  1260.     (tree_simple_assignment_expression::eval): Likewise.
  1261.     (tree_multi_assignment_expression::eval): Likewise.
  1262.  
  1263.     * src/lex.l (is_keyword): Give better error message for attempts
  1264.     to define nested functions.
  1265.  
  1266.     * src/parse.y (global_decl): Return a command_list to execute
  1267.     (this makes assignments in global declarations executable).
  1268.  
  1269.     * src/tree.cc (tree_for_command): Handle line and column info in
  1270.     constructors and for error messages.
  1271.     (tree_while_command): Ditto.
  1272.     (tree_if_command): Ditto.
  1273.     (tree_break_command): Ditto.
  1274.     (tree_continue_command): Ditto.
  1275.     (tree_return_command): Ditto.
  1276.     (*::eval_error): Only print messages if error_state > 0.
  1277.     (various): Only need to check that error_state is non-zero before
  1278.     calling eval_error().
  1279.  
  1280.     * src/parse.y: Handle line and column information for FOR WHILE IF
  1281.     ELSEIF ELSE BREAK CONTINUE and FUNC_RET tokens.
  1282.     * src/lex.l: Likewise.
  1283.  
  1284.     * src/octave.cc (parse_and_execute): Reset parser before starting
  1285.     new parse.
  1286.  
  1287.     * src/tree-plot.cc (various): Check error_state in many more
  1288.     places, and issue more meaningful error messages.
  1289.  
  1290.     * src/tree-const.cc (maybe_resize): Don't call
  1291.     jump_to_top_level() on errors.
  1292.     (tree_constant_rep (Range)): Likewise.
  1293.  
  1294.     * src/g-builtins.cc (builtin_error): Use error(), not
  1295.     print_if_string() to print error messages.
  1296.     * src/tree-const.cc (print_if_string): Delete unused function.
  1297.  
  1298.     * src/tc-assign.cc (various): Check error_state after calls to
  1299.     maybe_resize().
  1300.  
  1301.     * src/tc-index.cc (various): Always check the state of idx_vectors
  1302.     after trying to create them.
  1303.     * src/tc-assign.cc (various): Likewise.
  1304.  
  1305.     * src/idx-vector.cc: Use 0, not NULL.
  1306.     Don't include stdlib.h.
  1307.     (initialized): New data member, set nonzero if the idx_vector has
  1308.     been properly initialized.
  1309.     Never call jump_to_top_level () if initialization fails.
  1310.     Add operator void *(), so we can test the state of an idx_vector
  1311.     with `if (vector)'.
  1312.  
  1313.     * src/pager.cc: Explicitly initialize pager_buf to NULL.
  1314.  
  1315.     * src/tree-base.h: Move includes ahead of other definitions.
  1316.  
  1317.     * liboctave/NLEqn.cc (NLEqn::NLEqn (const Vector&, const NLFunc)):
  1318.     Initialize n from xvec, not x.
  1319.  
  1320. Mon Oct 25 18:01:12 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1321.  
  1322.     * src/user-prefs.cc (sv_info_file): New function.
  1323.     * src/user-prefs.h (user_pref): Add info_file to the list.
  1324.     * src/t-builtins.cc (try_info): Use it instead of
  1325.     DEFAULT_INFO_FILE.
  1326.  
  1327.     * src/utils.cc (default_info_file): New function.
  1328.     (octave_info_dir): Likewise.
  1329.  
  1330.     * src/defaults.h.in (DEFAULT_INFO_FILE): Delete unnecessary
  1331.     definition since we figure out what it should be in utils.cc now.
  1332.     * src/Makefile.in (defaults.h): Don't substitute DEFAULT_INFO_FILE.
  1333.     * src/Makeconf.in (DEFAULT_INFO_FILE): Delete definition.
  1334.  
  1335.     * src/octave.cc (info_file): New global variable.
  1336.     (initialize_globals): Call default_info_file () to initialize it.
  1337.     (--info-file): New command line option.
  1338.  
  1339.     * src/builtins.cc (string_variables): Add INFO_FILE to the list.
  1340.     (install_builtins): Define it.
  1341.  
  1342.     * info/filesys.c (compress_suffixes): Choose gunzip for .gz files.
  1343.  
  1344. Sat Oct 23 17:46:09 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1345.  
  1346.     * Version 0.77 released.
  1347.  
  1348.     * src/Makefile.in (INCFLAGS): Don't include info or dld
  1349.     directories.
  1350.     * dynamic-ld.cc: Include dld/dld.h, not just dld.h.
  1351.     * t-buitlins.cc: Include info/info.h, info/dribble.h, and
  1352.     info/terminal.h, not just info.h, dribble.h, and terminal.h.
  1353.  
  1354.     * src/t-builtins.cc (builtin_help): New option, -i, for invoking
  1355.     info browser.  If -i is not given, just do what we used to do, but
  1356.     point to help -i as a way to get additional information.
  1357.  
  1358.     * builtins.cc (print_usage): New function.
  1359.  
  1360.     * g-builtins.cc (all builtins): Call print_usage to get usage message.
  1361.     * t-builtins.cc (all builtins): Likewise.
  1362.  
  1363. Fri Oct 22 15:56:16 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1364.  
  1365.     * Cholesky changes from R. Bruce Tenison (btenison@eng.auburn.edu):
  1366.  
  1367.     * src/f-chol.cc, src/f-chol.h: New files for the Cholesky
  1368.     Factorization.
  1369.     * src/Makefile.in (SOURCES, OBJECTS, DLD_OBJECTS): Add to lists.
  1370.     * src/g-builtins.cc (builtin_chol): New function.
  1371.     * src/g-builtins.h: Declare it.
  1372.  
  1373.     * liboctave/Matrix-ext.cc (CHOL, ComplexCHOL): New classes.
  1374.  
  1375.     * libcruft/lapack: dpotrf.f, zpotrf.f, dpotf2.f, zpotf2.f: New
  1376.     files.
  1377.  
  1378.     * libcruft/blas: dsyrk.f, zherk.f: New files.
  1379.  
  1380. Fri Oct 22 14:04:16 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1381.  
  1382.     * src/g-builtins.cc (builtin_schur): Fourth arg for DLD_BUILTIN is
  1383.     schur, not hess.
  1384.  
  1385.     * scripts/dare.m: Correct usage of fprintf.
  1386.  
  1387.     * src/utils.cc (raw_mode): Only complain about stdin not a tty if
  1388.     interactive or forced interactive.
  1389.  
  1390. Thu Oct 21 17:00:57 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1391.  
  1392.     * src/builtins.cc (install_builtins): Try harder to make
  1393.     initialization of NaN work.  Make note about possible fixes if it
  1394.     still doesn't work.
  1395.  
  1396.     * src/utils.cc (raw_mode): [HAVE_TERMIOS_H] and [HAVE_TERMIO_H]
  1397.     Don't set TAB3 since it doesn't seem necessary and some systems
  1398.     don't have it by this name.
  1399.     [HAVE_SGTTY_H] To be consistent, don't set XTABS here either.
  1400.  
  1401.     * src/error.c (error): Call flush_output_to_pager before printing
  1402.     error message.
  1403.     (panic): Likewise, before aborting.
  1404.  
  1405.     * src/symtab.cc (symbol_record::undefine): Delete unused function.
  1406.     (symbol_table::undefine): Likewise.
  1407.  
  1408.     * src/symtab.cc (clear): Never delete symbol records from the
  1409.     table.  Only delete the definitions.  This makes clear and
  1410.     undefine equivalent, so we don't need them
  1411.     * src/tree.cc (tree_function::eval): Call symbol_table::clear, not
  1412.     symbol_table::undefine.
  1413.  
  1414.     * src/t-builtins.cc (builtin_clear): Only clear global symbols if
  1415.     we are at the top level.
  1416.     * src/parse.y (CLEAR): Delete token.
  1417.     (word_list_command): Remove code to handle CLEAR as special case.
  1418.     (expect): Only 19 now.
  1419.     * src/lex.l (handle_identifier): Remove special code for clear.
  1420.     It's ok to use it in a function body now.
  1421.  
  1422.     * src/t-builtins.cc: Include extern "C" declarations for Info stuff.
  1423.     (builtin_help): If given an argument, try to get help directly
  1424.     from info file first.  If that fails, do as before.
  1425.     (help_syms_list): New function:
  1426.     (simple_help): New function.
  1427.     (try_info): New function.
  1428.     (help_from_list): New function.
  1429.  
  1430.     * src/defaults.h.in (DEFAULT_INFO_FILE): Define new macro.
  1431.     * Makeconf.in: Set value of DEFAULT_INFO_FILE.
  1432.     * Makeconf.in (INSTALL_PROGRAM): Add definition.
  1433.     * Makefile.in (SUBDIRS): Add info directory.
  1434.     (info): New target.
  1435.     * configure.in: Add autoconf macros to handle info configuration.
  1436.  
  1437.     * info/Makefile.in: Major changes to make it work with Octave's
  1438.     Makeconf file, etc.  The default action is now to build a
  1439.     libinfo.a file.
  1440.  
  1441.     * info/error.c: New file.  Move error functions here from info.c.
  1442.  
  1443.     * info/signals.c (clear_info_signal_handler): New function, useful
  1444.     if info is used directly in another program.
  1445.  
  1446.     * info/termdep.h: Handle termios too.
  1447.     * info/terminal.c (terminal_prep_terminal): Handle termios.
  1448.     * (terminal_unprep_terminal): Likewise
  1449.  
  1450.     * info/session.c (initialize_info_session): Add arg to make
  1451.     clearing the screen conditional.  Useful if we want to call
  1452.     index_entry_exists() first before displaying anything.
  1453.     Change all callers.
  1454.  
  1455.     * info/session.c (finish_info_session): New function.
  1456.  
  1457.     * info/session.c (dispatch_error): Change message to include info
  1458.     about how to get help and how to quit.
  1459.  
  1460.     * info/info.c (index_search_p): New flag.
  1461.     (--index-search): New option, like apropos, but search the indices
  1462.     and display the first node found.
  1463.  
  1464.     * info/indices.c (do_info_index_search): New function, modified
  1465.     from info_index_search to allow searching the index for a string
  1466.     without prompting for it.
  1467.     (info_index_search): Just call do_info_index_search.
  1468.     (index_entry_exists): New function, to allow us to find out if
  1469.     there is an index entry for a given string without actually
  1470.     displaying anything.
  1471.  
  1472.     * info: New directory, containing source for GNU info browser.
  1473.  
  1474. Tue Oct 19 00:14:33 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1475.  
  1476.     * src/octave-hist.cc (input_from_tmp_history_file): New global flag.
  1477.     (do_edit_history): Protect and set it.
  1478.     (do_run_history): Likewise.
  1479.     * src/parse.y (func_def2): Use it to see that input is coming from
  1480.     a temporary file.  This means that we shouldn't exit when we're
  1481.     done reading it, and we should treat it just as if the input were
  1482.     coming from the keyboard.
  1483.  
  1484.     * variables.cc (force_global): Force aliasing so it will happen
  1485.     even if the symbol record is undefined.
  1486.  
  1487.     * src/lex.l (lookup_identifier): Simplify
  1488.  
  1489.     * src/lex.l (reset_parser): Reset error_state here.
  1490.     * src/octave.cc (main): Not here.
  1491.  
  1492. Mon Oct 18 14:27:02 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1493.  
  1494.     * src/tree-const.cc: Delete constructor for tree_constant from
  1495.     String.
  1496.  
  1497.     * In src: tree.h, mappers.h, unwind-prot.h, parse.h, file-io.h,
  1498.     arith-ops.h, tree-base.h, tree-const.h, g-builtins.h,
  1499.     idx-vector.h, builtins.h, dynamic-ld.h, xdiv.h, xpow.h,
  1500.     pr-output.h, input.h, symtab.h, utils.h: Avoid including files
  1501.     unnecessarily.
  1502.  
  1503.     * In src: tc-inlines.cc, mappers.cc, variables.cc, arith-ops.cc,
  1504.     tree.cc, tree-const.cc, g-builtins.cc, file-io.cc, idx-vector.cc,
  1505.     tc-assign.cc, tc-index.cc, builtins.cc, dynamic-ld.cc, xdiv.cc,
  1506.     xpow.cc, pr-output.cc, tc-extras.cc, input.cc, symtab.cc,
  1507.     utils.cc: Sprinkle liberally with const.
  1508.  
  1509.     * In src: f-syl.cc, f-svd.cc, f-schur.cc, f-rand.cc, f-qzval.cc,
  1510.     f-quad.cc, f-qr.cc, f-qpsol.cc, f-npsol.cc, f-lu.cc,
  1511.     f-lsode.cc, f-lpsolve.cc, f-inv.cc, f-ifft.cc, f-hess.cc,
  1512.     f-givens.cc, f-fsqp.cc, f-fsolve.cc, f-fft.cc, f-expm.cc,
  1513.     f-eig.cc, f-det.cc, f-dassl.cc, f-colloc.cc, f-balance.cc:
  1514.     Add const qualifier to tree-constant arg.
  1515.  
  1516. Sat Oct 16 12:22:24 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1517.  
  1518.     * src/tree-const.h, src/tree-const.cc: Add const qualifier to
  1519.     constructor arguments passed by reference.
  1520.     Pass Complex arguments by const reference instead of by value.
  1521.  
  1522.     * liboctave/Matrix.h, liboctave/Matrix.cc, liboctave/ColVector.cc,
  1523.     liboctave/RowVector.cc liboctave/DiagMatrix.cc: Pass Complex
  1524.     arguments by const reference instead of by value.
  1525.  
  1526. Wed Oct 13 14:13:29 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1527.  
  1528.     * src/utils.cc (decode_prompt_string): ctime returns time_t, which
  1529.     might not be a long.
  1530.  
  1531.     * src/variables.cc (identifier_exists):    Only return non-zero if
  1532.     the name has a definition.
  1533.  
  1534.     * src/f-npsol.cc (npsol): Call error(), not message(), to print
  1535.     error messages.
  1536.     (linear_constraints_ok): Likewise.
  1537.     (nonlinear_constraints_ok): Likewise.
  1538.  
  1539.     * src/f-qpsol.cc (qpsol): Don't try to create the linear
  1540.     constraint object before checking array sizes.  Wouldn't exception
  1541.     handling be nice?
  1542.     Call error(), not message(), to print error messages.
  1543.     Check to ensure that the bounds on linear constraints are
  1544.     vectors.
  1545.  
  1546.     * src/lex.l (lookup_identifier): Don't bind global variables
  1547.     immediately in loops or conditionals, even at the top level.
  1548.  
  1549. Sun Oct 10 8:48:00 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  1550.  
  1551.     * README.doc: New file.
  1552.     * Makefile.in (doc-dist): New target.
  1553.     * doc/Makefile.in (FORMATTED): New macro.
  1554.     (doc-dist): New target.
  1555.  
  1556.     * src/tree.cc (tree_identifier::eval): Don't print anything if an
  1557.     error is encountered.
  1558.     (tree_simple_assignment_expression::eval): Likewise.
  1559.  
  1560.     * src/tc-assign.cc (do_matrix_assignment): Handle resizing
  1561.     correctly when indices are (:,range), (:,matrix), (range,:), or
  1562.     (matrix,:) and the lhs is empty or undefined.
  1563.  
  1564. Tue Oct  5 04:02:37 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1565.  
  1566.     * Version 0.76 released.
  1567.  
  1568.     * src/octave.cc (main):    Print usage message if we are given more
  1569.     than one extra argument on the command line.
  1570.     Delay printing startup message until just before setting the toplevel
  1571.     jump context.
  1572.  
  1573.     * src/lex.h (DO_COMMA_INSERT_CHECK): Delete unused macro.
  1574.  
  1575.     * src/lex.l (handle_identifier): New function.
  1576.     ({IDENT}/{S}*=, {IDENT}{S}*): Use it instead of duplicating code.
  1577.     (do_comma_insert_check): Use yyunput instad of returning original
  1578.     character count.
  1579.     Call directly instead of using DO_COMMA_INSERT_CHECK macro.
  1580.  
  1581. Mon Oct  4 08:06:10 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1582.  
  1583.     * Version 0.75.4.
  1584.  
  1585.     * src/tree-const.cc (tree_constant_rep::eval ()): Avoid calling
  1586.     rows() and columns() for things like magic_colon.
  1587.  
  1588. Sun Oct  3 19:39:33 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1589.  
  1590.     Changes to add line and column info to run-time error messages:
  1591.  
  1592.     * src/tree.cc (tree_identifier, tree_prefix_expression,
  1593.     tree_postfix_expression, tree_simple_assignment_expression,
  1594.     tree_multi_assignment_expression, tree_colon_expression,
  1595.     tree_index_expression): Modify constructors to allow line and
  1596.     column information to be stored.
  1597.     (abort_on_undefined): Delete (now) unnecessary static variable.
  1598.     (all eval() functions): If error_state, return immediately.
  1599.     (tree_matrix::eval ()): Call error and return tree_constant()
  1600.     instead of jumping to top level on error.
  1601.     (tree_identifier::parse_m_file ()): When starting to read an
  1602.     M-file, initialize current_input_column to 1, not 0.
  1603.     (tree_identifier::eval_undefined_error ()): Improve error message
  1604.     with line and column info if it is available.  Don't abort to top
  1605.     level on errors.
  1606.     (tree_function::traceback_error ()): New function.
  1607.     (tree_function::eval ()): Don't jump to top level on errors.
  1608.     Call traceback_error if there is an error evaluating the command
  1609.     list.
  1610.  
  1611.     * src/tree.cc (tree_prefix_expression::eval_error ()): New function.
  1612.     (tree_postfix_expression::eval_error ()): Ditto.
  1613.     (tree_unary_expression::eval_error ()): Ditto.
  1614.     (tree_binary_expression::eval_error ()): Ditto.
  1615.     (tree_simple_assignment_expression::eval_error ()): Ditto.
  1616.     (tree_multi_assignment_expression::eval_error ()): Ditto.
  1617.     (tree_colon_expression::eval_error ()): Ditto.
  1618.     (tree_index_expression::eval_error ()): Ditto.
  1619.  
  1620.     * src/tree.cc (tree_function::stash_function_name ()): New function.
  1621.     * src/parse.y (FCN): Use it.
  1622.  
  1623.     * src/lex.l: Return line and column info for many (but not all)
  1624.     tokens.
  1625.  
  1626.     * src/parse.y: Handle token values with the token class defined in
  1627.     token.cc.
  1628.     (check_end ()): New function.
  1629.     (end_error ()): Improve error messages by including line and
  1630.     column info.
  1631.  
  1632.     * src/arith-ops.cc (lots of functions): Don't jump to top level on
  1633.     errors.
  1634.     * src/tree.cc (tree_unary_expression::eval ()),
  1635.     tree_binary_expression::eval ()): Handle error condition here.
  1636.  
  1637.     * src/gripes.cc (gripe_nonconformant): Add additional form of this
  1638.     function to allow message to include dimensions.  Change most
  1639.     callers to use new form
  1640.  
  1641.     * src/octave.cc: Initialize column counter to 1, not 0.
  1642.     (main): Reset error_state before evaluating each top level
  1643.     command.
  1644.  
  1645.     * src/tree-plot.cc (tree_plot_command::eval ()): If error_state,
  1646.     return immediately.
  1647.  
  1648.     * src/tree-const.cc (do_binary_op ()): Return tree_constant() instead
  1649.     of jumping to top level on errors.
  1650.     (do_unary_op): Likewise.
  1651.     (tree_constant_rep::eval ()): If error_state, return immediately.
  1652.     Convert 1x1 matrices to scalars.
  1653.  
  1654.     * src/tc-assign.cc (tree_constant_rep::do_scalar_assignment ()):
  1655.     Don't jump to top level on error.
  1656.     If there is an error while attempting to convert an undefined
  1657.     variable to a matrix, don't suddenly create an empty matrix.
  1658.     (tree_constant_rep::fortran_style_matrix_assignment ()): Check
  1659.     return value of range_max_check() and don't jumpt to top level on
  1660.     errors.
  1661.     (tree_constant_rep::vector_assignment ()): Check return value of
  1662.     index_check and don't jump to top level on errors.
  1663.     (tree_constant_rep::check_vector_assign ()): Don't jump to top
  1664.     level on errors.
  1665.     (tree_constant_rep::do_matrix_assignment ()): Check return value
  1666.     of index_check and don't jump to top level on errors.
  1667.  
  1668.     * src/tc-extras.cc (get_dimensions ()): Call error (sets error state)
  1669.     but don't jump to top level on errors.
  1670.     (fill_matrix): Return tree_constant() on error.
  1671.     (identity_matrix): Likewise.
  1672.  
  1673.     * src/error.cc (error_state): New global variable, initialize to zero.
  1674.     (error): Set it to one.
  1675.  
  1676.     * src/tc-index.cc (tree_constant_rep::valid_as_scalar_index ()):
  1677.     Don't declare unused variable retval.
  1678.     (tree_constant_rep::do_scalar_index ()): Return tree_constant()
  1679.     instead of jumping to top level on error.
  1680.     (tree_constant_rep::fortran_style_matrix_index): Don't jump to top
  1681.     level on indexing or range errors.
  1682.     (tree_constant_rep::do_vector_index ()): Likewise.
  1683.     (tree_constant_rep::do_matrix_index ()): Likewise.
  1684.  
  1685.     * src/tc-inlines (range_max_check): Return -1 instead of jumping
  1686.     to top level on error.
  1687.     (index_check): Likewise.
  1688.  
  1689.     * src/utils.cc (check_dimensions): Call error, not warning, and
  1690.     don't jump to top level.
  1691.  
  1692.     * src/tree-base.h (line_num, column_num): New data members for all
  1693.     tree classes.
  1694.     (line (), column ()): New virtual functions to access line and
  1695.     column info.
  1696.  
  1697.     * src/lex.l (enum end_tok_type, enum plot_tok_type): Delete
  1698.     declarations (now in token.h).
  1699.  
  1700.     * src/lex.h (YY_INPUT, YY_FATAL_ERROR, DO_COMMA_INSERT_CHECK,
  1701.     TOK_RETURN, BIN_OP_RETURN): Move macro definition here, from
  1702.     lex.l.  Rename RETURN TOK_RETURN.
  1703.  
  1704.     * src/token.cc, token.h: New files that define a class for tokens
  1705.     that includes line and column information.
  1706.  
  1707. Wed Sep 29 11:15:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1708.  
  1709.     * src/octave.cc: Use GNU getopt to handle option parsing.
  1710.     * src/getopt.h src/getopt.c src/getopt1.c: New files for GNU
  1711.     getopt.
  1712.     * src/Makefile.in: Add them to the appropriate lists.
  1713.  
  1714.     * src/utils.cc (raw_mode): Use the termios.h terminal driver
  1715.     interface if it is available.
  1716.     * configure.in: Check for termios.h
  1717.  
  1718.     * src/tree-plot.cc (tree_subplot_list::print (int, ostrstream&)):
  1719.     If the data to be plotted is a string but it doesn't name a file,
  1720.     try sending it to gnuplot directly.
  1721.  
  1722. Tue Sep 28 16:06:42 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1723.  
  1724.     * liboctave/QPSOL.cc (QPSOL::minimize (double&, int&, Vector&)):
  1725.     Correct dimensions of work arrays, based on QPSOL source.
  1726.     Pass ncon, which is max (1, nclin), not n, as the row dimension of
  1727.     clin.
  1728.  
  1729.     * src/f-npsol.cc (linear_constraints_ok): Improve warning for the
  1730.     case of constraints with zero dimensions.
  1731.     (nonlinear_constraints_ok): Likewise.
  1732.  
  1733. Mon Sep 27 01:20:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1734.  
  1735.     * Version 0.75.3.
  1736.  
  1737.     * Makefile.in (dist): Make file permissions for distribution rw.
  1738.     (binary-dist): Ditto.
  1739.     (local-dist): Ditto.
  1740.  
  1741. Sat Sep 25 15:29:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1742.  
  1743.     * src/pr-output.cc: Include stdio.h, for sprintf.
  1744.  
  1745.     * src/input.cc (octave_gets): Set octave_gets_line to NULL after
  1746.     freeing it.
  1747.  
  1748.     * Version 0.75.2.
  1749.  
  1750.     * liboctave/Matrix.cc (Matrix::operator * (const ColumnVector&):
  1751.     Correct dimension of return value.
  1752.     (ComplexMatrix::operator * (const ComplexColumnVector&)): Ditto.
  1753.  
  1754. Tue Sep 21 20:42:10 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1755.  
  1756.     * src/tree.cc (tree_identifier::assign (tree_constant&)):
  1757.     Correctly handle case of hiding a function with a variable when
  1758.     the variable has not been flagged as global.
  1759.     tree_identifier::assign (tree_constant&, tree_constant*, int)):
  1760.     Likewise.
  1761.  
  1762.     * src/variables.cc (force_global): When a variable is moved to the
  1763.     global symbol table, mark it as global.
  1764.  
  1765.     * src/symtab.cc (symbol_record::symbol_record ()): Initialize
  1766.     forced_global.
  1767.     (symbol_record::clear_visible ()): Reset forced_global to zero.
  1768.     (symbol_record::clear_all ()): Ditto.
  1769.     (symbol_record::mark_as_forced_global ()): New function.
  1770.     (symbol_record::is_forced_global ()): New function.
  1771.     (symbol_record::alias ()): Also copy forced_global attribute.
  1772.  
  1773.     * src/symtab.h (symbol_record::forced_global): New private data
  1774.     member, used to record when a variable has been explicitly
  1775.     declared global.
  1776.  
  1777.     * src/lex.l (lookup_identifier): Look in current scope first.
  1778.  
  1779. Mon Sep 20 03:15:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1780.  
  1781.     * src/parse.y, src/tree.cc, src/tree.h: Allow `for' command to
  1782.     assign to an index expression, not just an identifier.
  1783.  
  1784.     * src/t-builtins.cc (builtin_clear (int, char **)): Don't delete
  1785.     g_names twice.
  1786.  
  1787.     * src/symtab.cc    (symbol_table::list (int&)): Make sure count is
  1788.     initialized to zero.
  1789.     (symbol_table::var_list (int&)): Ditto.
  1790.     (symbol_table::fcn_list (int&)): Ditto.
  1791.  
  1792. Sat Sep 18 04:06:42 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1793.  
  1794.     * src/lex.l, src/parse.y, src/parse.h: Use new global variable
  1795.     past_plot_range to make gplot and gsplot smarter about
  1796.     distinguishing plot ranges and literal matrices.
  1797.  
  1798. Fri Sep 17 01:06:30 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1799.  
  1800.     * Version 0.75.1 released.
  1801.  
  1802.     * src/f-qzval.cc: Include <float.h> for DBL_EPSILON.
  1803.  
  1804.     * src/symtab.cc (symbol_record::save (ostream&, int)): Don't print
  1805.     a warning for ans being undefined.  Call warning to print the
  1806.     message, and change the text to make it clearer.
  1807.     (symbol_table::save (ostream&, int)): Don't crash if there aren't
  1808.     any symbols to save.
  1809.  
  1810. Thu Sep 16 00:21:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1811.  
  1812.     * src/t-builtins.cc (builtin_help): When trying harder to find
  1813.     help for M-files, only insert the symbol into the global symbol
  1814.     table if there really is an M-file of the given name in the path.
  1815.  
  1816. Wed Sep 15 02:08:27 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1817.  
  1818.     * Version 0.75.
  1819.  
  1820.     * src/Makefile.in (INCLUDES): Distribute defaults.h
  1821.     (%.d: %.cc): Don't fail if we can't determine dependencies.
  1822.     (DISTFILES): Include move-if-change.
  1823.  
  1824. Tue Sep 14 21:23:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1825.  
  1826.     * scripts/perror.m: Use err, not info for fsolve section.
  1827.  
  1828. Mon Sep 13 19:29:26 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1829.  
  1830.     * src/utils.cc (get_m_file_names): Call closedir(), not free(), to
  1831.     dispose of directory structure.
  1832.  
  1833. Sun Sep 12 19:07:36 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1834.  
  1835.     * src/tree-const.cc (tree_constant_rep::double_value): Rearrange
  1836.     to avoid warning about reaching end of non-void function.
  1837.     (tree_constant_rep::matrix_value): Ditto.
  1838.  
  1839.     * src/error.cc (panic): Declare volatile.
  1840.     * src/utils.cc (jump_to_top_level): Declare as `void volatile',
  1841.     not `volatile void'.
  1842.  
  1843.     * src/tree-const.cc (tree_constant_rep::complex_matrix_value):
  1844.     Make it work even if the internal representation is really a real
  1845.     or complex scalar or a real matrix.
  1846.     (tree_constant_rep::complex_scalar_value): Make it work even if
  1847.     the internal representation is really a real scalar.
  1848.  
  1849.     * src/f-syl.cc (syl): Delete ComplexMatrixLoad().
  1850.     Use complex_matrix_value(), not ComplexMatrixLoad().
  1851.  
  1852.     * src/tree-const.cc (vector_of_empties): Renamed from empty_tree,
  1853.     moved from f-syl.cc.
  1854.  
  1855.     * src/f-syl.cc (syl): Call vector_of_empties() instead of empty_tree().
  1856.     * src/f-qzval.cc (qzvalue): Ditto.
  1857.  
  1858.     * src/tree-const.h (tree_constant::is_empty): New inline function.
  1859.  
  1860.     * src/f-syl.cc (syl): Call is_empty instead of empty_arg.
  1861.     * src/f-qzval.cc (qzvalue): Ditto.
  1862.     * src/f-expm.cc (matrix_exp): Ditto.
  1863.  
  1864. Thu Sep  9 22:40:16 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1865.  
  1866.     * liboctave/Matrix.cc (Matrix::transpose): Make it work for empty
  1867.     matrices.
  1868.     (ComplexMatrix::transpose): Ditto.
  1869.  
  1870. Mon Sep  6 04:56:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1871.  
  1872.     * src/tree-plot.cc (tree_subplot_list::print):     If the plot data
  1873.     is a string and it names a file, plot the data in the file.
  1874.  
  1875.     * src/octave.cc (execute_startup_files): Try harder to avoid
  1876.     executing $HOME/.octaverc twice.
  1877.  
  1878.     * liboctave/DAE.cc (DAE::integrate (Vector&, Matrix&, Vector&)):
  1879.     Add missing parameter in call to integrate() if no critical points
  1880.     are specified.
  1881.  
  1882. Sat Sep  4 16:18:49 1993  John W. Eaton  (jwe@ward.che.utexas.edu)
  1883.  
  1884.     * src/octave.cc (execute_startup_files): Don't execute
  1885.     $HOME/.octaverc twice.
  1886.  
  1887. Mon Aug 30 11:25:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1888.  
  1889.     * src/t-builtins.cc (builtin_clear): Handle regular expressions.
  1890.  
  1891. Fri Aug 27 07:25:32 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1892.  
  1893.     * liboctave/RowVector.cc:
  1894.     (RowVector::operator * (const ColumnVector& a) const): Fix brain-o.
  1895.  
  1896. Wed Aug 18 00:29:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1897.  
  1898.     * list_primes.m: New M-file.
  1899.  
  1900.     * src/tc-index.cc (do_scalar_index): Handle two vector args of all
  1901.     ones.
  1902.  
  1903. Tue Aug 17 06:26:04 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1904.  
  1905.     * src/file-io.cc (process_printf_format): Use NINT for * modifier
  1906.     argument.
  1907.  
  1908. Mon Aug 16 19:30:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1909.  
  1910.     * src/mappers.cc: (arg (double)): Return pi for negative real values.
  1911.  
  1912. Sun Aug 15 05:08:48 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1913.  
  1914.     * src/octave-hist.cc (mk_tmp_hist_file): New function, extracted
  1915.     from do_edit_history.
  1916.     (do_edit_history): Simplify using mk_tmp_hist_file.
  1917.     (do_run_history): New function.
  1918.     (edit_history_repl_hist): New function.
  1919.  
  1920.     * src/t-builtins.cc (builtin_run_history): New function.
  1921.  
  1922.     * src/builtins.cc (text_functions): Add run_history to the list.
  1923.  
  1924. Fri Aug 13 16:04:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1925.  
  1926.     * tzero.m: New M-file.
  1927.     * abcdchk.m: New M-file.
  1928.     * is_symmetric.m: Use tol and norm (A) to decide if A' is close
  1929.     enough to A to be considered the same.
  1930.  
  1931. Wed Aug 11 15:50:59 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1932.  
  1933.     * Version 0.74.1.
  1934.  
  1935.     Merge in expm changes from A. S. Hodel <scotte@eng.auburn.edu>:
  1936.  
  1937.     * f-expm.{h,cc}: New files.
  1938.     * src/Makefile.in: Include them in the usual places.
  1939.     * src/g-builtins.cc (builtin_expm): The new matrix_exp returns a
  1940.     tree_constant by value.
  1941.     Include f-expm.h
  1942.     * src/tc-extras.cc (matrix_exp): Delete function.
  1943.  
  1944. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1945.  
  1946.     Merge in qzval changes from A. S. Hodel <scotte@eng.auburn.edu>:
  1947.  
  1948.     * f-qzval.{h,cc}: New files.
  1949.     * src/Makefile.in: Include them in the usual places.
  1950.     * src/g-builtins.cc (builtin_qzval): New function.
  1951.     Include f-qzval.h
  1952.     * src/g-builtins.h: Declare builtin_qzval.
  1953.     * src/builtins.cc (general_functions): Add qzval to the list.
  1954.  
  1955.     * libcruft/eispack: New directory.
  1956.     * libcruft/Makefile.in (SUBDIRS): Include it.
  1957.  
  1958. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1959.  
  1960.     * configure.in: Add libcruft/balgen/Makefile and
  1961.     libcruft/eispack/Makefile to the list of files to frob.
  1962.  
  1963. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1964.  
  1965.     Merge in syl changes from A. S. Hodel <scotte@eng.auburn.edu>:
  1966.  
  1967.     * lyap.m: New M-file.
  1968.  
  1969.     * f-syl.{h,cc}: New files.
  1970.     * src/Makefile.in: Include them in the usual places.
  1971.     * src/g-builtins.cc (builtin_syl): New function.
  1972.     Include f-syl.h
  1973.     * src/g-builtins.h: Declare builtin_syl.
  1974.     * src/builtins.cc (general_functions): Add syl to the list.
  1975.  
  1976. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1977.  
  1978.     * src/g-builtins.cc (builtin_balance): Fix typo in doc string.
  1979.  
  1980. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1981.  
  1982.     Merge in givens changes from A. S. Hodel <scotte@eng.auburn.edu>:
  1983.  
  1984.     * f-givens.{h,cc}: New files.
  1985.     * src/Makefile.in: Include them in the usual places.
  1986.     * src/g-builtins.cc (builtin_givens): New function.
  1987.     Include f-givens.h
  1988.     * src/g-builtins.h: Declare builtin_givens.
  1989.     * src/builtins.cc (general_functions): Add givens to the list.
  1990.  
  1991.     * src/Makefile.in: (defaults.h) Quote substitutions.
  1992.     Use %foo%, not @foo@ to mark substitution.
  1993.     * src/defaults.h.in: Use %foo%, no @foo@ to do mark things to
  1994.     substitute.
  1995.  
  1996.     * qzhess.m: New M-file.
  1997.  
  1998. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  1999.  
  2000.     Merge in balance changes from A. S. Hodel <scotte@eng.auburn.edu>:
  2001.  
  2002.     * are, is_controllable.m, is_observable.m, is_square.m,
  2003.     is_symmetric.m:  New M-files.
  2004.  
  2005.     * Matrix.h (AEPBALANCE): New class.
  2006.     (ComplexAEPBALANCE): New class.
  2007.     (GEPBALANCE): New class.
  2008.     * Matrix-ext.cc: Add init functions for balancing classes.
  2009.  
  2010.     * src/f-balance.{h,cc}: New files.
  2011.     * src/Makefile.in: Include them in the usual places.
  2012.     * src/g-builtins.cc (builtin_balance): New function.
  2013.     Include f-givens.h
  2014.     * src/g-builtins.h: Declare builtin_balance.
  2015.     * src/builtins.cc (general_functions): Add balance to the list.
  2016.  
  2017.     * libcruft/balgen: New directory.
  2018.     * libcruft/Makefile.in (SUBDIRS): Include it.
  2019.  
  2020. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2021.  
  2022.     * configure.in: Use AC_HAVE_LIBRARY to check for -lm.
  2023.  
  2024.     * src/Makefile.in (defaults.h): Quote substitutions.
  2025.  
  2026. Mon Aug  9 13:30:07 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2027.  
  2028.     * README.NLP: New file.
  2029.     * Makefile.in (DISTFILES): Distribute it.
  2030.  
  2031. Sun Aug  8 19:05:48 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2032.  
  2033.     * src/move-if-change: New file.
  2034.     * src/Makefile.in (DISTFILES): Distribute it.
  2035.     (defaults.h): New rule.
  2036.     (utils.o): Delete rule, since extra defines are no longer needed.
  2037.     (INCLUDES): Distribute defaults.h.in.
  2038.     * src/utils.cc: Include defaults.h to get DEFAULT_PAGER and
  2039.     OCTAVE_HOME instead of depending on having them defined by the
  2040.     compile command.
  2041.  
  2042.     * configure.in (DEFAULT_PAGER): Use AC_PROGRAMS_CHECK.
  2043.     If we find less, add `-e' flag, so users won't have to type q to
  2044.     quit paging.
  2045.  
  2046. Sat Aug  7 13:34:06 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2047.  
  2048.     * f-*.cc: Renamed from tc-*.cc.  (Use f- as the file prefix
  2049.     because most of these functions are ultimately implemented in
  2050.     Fortran, and, most importantly, it keeps them grouped together.)
  2051.     * f-*.h: New files, for external declarations of visible functions
  2052.     defined in f-*.cc.
  2053.     * g-builtins.cc: Include them all.
  2054.     * tree-const.h: Don't declare these functions as friends.
  2055.     * Makefile.in: Cope with new names.
  2056.  
  2057.     * octave.cc (parse_and_execute (char *, int)): Don't declare static.
  2058.     * octave.h: Declare it extern here.
  2059.     * octave-hist.cc (do_edit_history): Use it here.
  2060.  
  2061.     * octave-hist.cc (do_edit_history): New function.
  2062.     * t-builtins.cc (builtin_edit_history): Use it.
  2063.  
  2064.     * t-builtins.cc, t-builtins.h, builtins.cc: Rename edit to
  2065.     edit_history.
  2066.  
  2067.     * octave-hist.cc (do_history): Print line numbers by default.
  2068.     Allow quieter output with -q option.
  2069.  
  2070.     * g-builtins.cc (builtin_hess): Use DLD_BUILTIN macro to call hess.
  2071.     * g-builtins.cc (builtin_schur): Likewise
  2072.  
  2073.     * tc-hess.cc (builtin_hess_2): Call hess with corrrect args.
  2074.     * tc-schur.cc (builtin_schur_2): Likewise, for schur dude :-).
  2075.  
  2076.     * tc-fsqp.cc (builtin_fsqp_2): Fix typo.
  2077.  
  2078. Thu Aug  5 23:14:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2079.  
  2080.     * input.cc (octave_read): Ensure that the last character in the
  2081.     buffer is a new line.
  2082.  
  2083. Wed Aug  4 19:25:54 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2084.  
  2085.     * parse.y (func_def2): Also warn if we encounter a function
  2086.     definition with the same name as the script file we are reading.
  2087.  
  2088.     * tree.cc (tree_identifier::do_lookup): Always return NULL_TREE if
  2089.     a script file was executed.
  2090.  
  2091. Tue Aug  3 23:25:45 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2092.  
  2093.     * file-io.cc: Delete useless static keyword from File_info class
  2094.     declaration.
  2095.     * unwind-prot.cc: Likewise, for unwind_elem and saved_variable
  2096.     classes.
  2097.     * tc-rand.cc: Likewise, for enum rand_dist declaration.
  2098.     * arith-ops.cc:  Likewise, for enum Matrix_bool_op declaration.
  2099.     * tree.cc: Likewise, for struct const_matrix_list declaration.
  2100.  
  2101. Fri Jul 23 01:40:38 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2102.  
  2103.     * sysdep.cc (malloc_handler): Add missing arg to call to message().
  2104.  
  2105. Tue Jul 20 04:09:32 1993  John W. Eaton  (jwe@june.che.utexas.edu)
  2106.  
  2107.     * Version 0.74 released.
  2108.  
  2109.     * doinstall.sh (version): Run `./octave -v' to get the version
  2110.     number instead of grabbing it from version.h.
  2111.     * Fail if we can't get a version number.
  2112.     * Install ./octave, not src/octave.
  2113.  
  2114.     * Makefile.in (binary-dist): Don't depend on all.
  2115.     * Link src/octave to ./octave.  (Now that there's no source in
  2116.     binary distributions, why have a src directory?)
  2117.  
  2118.     * file-io.cc (process_scanf_format): Rename local variable `i' to
  2119.     `chars_from_fmt_str'.
  2120.     * (process_printf_format): Likewise.
  2121.  
  2122.     * sighandlers.cc (can_interrupt): New global variable.
  2123.     * (sigint_handler): Use it to decide whether to jump to top level.
  2124.     * octave.cc (main): Set it after calling setjmp.
  2125.  
  2126.     * octave.cc (main): Declare saved_sigint_handler to be volatile.
  2127.  
  2128.     * tree.cc, tree-plot.cc, t-builtins.cc, pager.cc, g-builtins.cc,
  2129.     file-io.cc: Terminate strstream strings with ends instead of just
  2130.     using '\0'.
  2131.  
  2132.     * file-io.cc (process_scanf_format): Skip leading white space for
  2133.     %s conversions.
  2134.     * (fopen_file_for_user): Pass tree_constant arg by reference.
  2135.     * (do_scanf): If doing fprintf, don't fail if first arg is a
  2136.     string.
  2137.  
  2138. Mon Jul 19 16:00:22 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2139.  
  2140.     * symtab.cc (pstrcmp): Declare to take char** args, not char*.
  2141.  
  2142. Sun Jul 18 13:02:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2143.  
  2144.     * file-io.cc (return_valid_file): Pass arg by reference.
  2145.  
  2146.     * file-io.cc (fclose_internal, fgets_internal, fseek_internal):
  2147.     Eliminate unnecessary casts to double.
  2148.  
  2149.     * file-io.cc (return_valid_file, fgets_internal, fopen_internal,
  2150.     do_printf, do_scanf): Use is_string_type instead of doing the
  2151.     comparison ourselves.
  2152.     * g-builtins.cc (builtin_exist, builtin_getenv,
  2153.     builtin_shell_command): Ditto.
  2154.     * tc-colloc.cc (collocation_weights): Ditto.
  2155.     * tc-extras.cc (eval_string, get_user_input): Ditto.
  2156.     * tc-rand.cc (rand_internal): Ditto.
  2157.     * tree-plot.cc (tree_subplot_list::print): Ditto.
  2158.     * variables.cc (is_valid_function, octave_string_variable): Ditto.
  2159.  
  2160. Thu Jul 15 02:29:03 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2161.  
  2162.     * doc/Makefile.in (TEXINFO): Distribute texinfo.tex too.
  2163.  
  2164.     * t-builtins.cc (load_variable): Warn if replacing local symbol
  2165.     with global from file.
  2166.     * Warn if variable is not marked as global in a file, but already
  2167.     exists as a global symbol, then go ahead and load it as a global.
  2168.  
  2169. Tue Jul 13 01:47:48 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2170.  
  2171.     * lex.l (lookup_identifier): Never alias to global here.
  2172.     * tree.cc (do_lookup): Don't alias formal parameters to global.
  2173.     * variables.cc (force_global): Likewise.
  2174.     * symtab.cc (symbol_table::bind_globals): Likewise.
  2175.  
  2176.     * symtab.h (symbol_record::formal_param): New field.
  2177.     * symtab.cc (symbol_record::mark_as_global_parameter): New function.
  2178.     * (symbol_record::is_formal_parameter): Ditto.
  2179.     * tree.cc (tree_identifier::mark_as_formal_parameter): Ditto.
  2180.     * (tree_parameter_list::mark_as_formal_parameters): Ditto.
  2181.     * parse.y (param_list): Use it to tag formal parameters.
  2182.     * (func_def1): Ditto.
  2183.  
  2184.     * arith-ops.cc (DIVIDE_BY_ZERO_ERROR): On IEEE machines, allow
  2185.     divide by zero errors to be suppressed.
  2186.     * user-prefs.h (warn_divide_by_zero): New user preference.
  2187.     * user-prefs.cc (warn_divide_by_zero): New function.
  2188.     * builtins.cc (builtin_string_variables): Install it with default
  2189.     value of true.
  2190.  
  2191.     * tree.cc (tree_multi_assignemnt_expression): Use tree_return_list
  2192.     instead of tree_param_list.
  2193.     * (tree_multi_assignment_expression:eval): Make it work.
  2194.  
  2195.     * tree.cc (tree_return_list): New class.  Allow index expressions
  2196.     and identifiers in return lists.
  2197.     * (tree_matrix::to_return_list): Rename from to_param_list.
  2198.     * parse.y (expression): Use it.
  2199.  
  2200.     * parse.y: Increment and decrement maybe_screwed_again instead of
  2201.     just setting it to zero or one.
  2202.  
  2203. Mon Jul 12 03:23:40 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2204.  
  2205.     * tc-assign.cc (tree_constant_rep::do_matrix_assignment): Handle
  2206.     case of lhs being of unknown type.
  2207.  
  2208.     * lex.l (check_for_garbage_after_fcn_def): Also ignore trailing
  2209.     commas and semicolons.
  2210.  
  2211. Sun Jul 11 00:08:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2212.  
  2213.     * Version 0.73.1 released.
  2214.  
  2215.     * symtab.cc (symbol_record::alias): Also copy pointer to sv_fcn.
  2216.  
  2217. Sat Jul 10 14:34:00 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2218.  
  2219.     * tree.cc (tree_function::eval (int, char **, int): New function.
  2220.  
  2221.     * symtab.cc (symbol_table::bind_globals): New function.
  2222.     * tree.cc (tree_function::eval): Use it to associate local symbols
  2223.     with global data.
  2224.  
  2225.     * symtab.cc (alias): Add optional parameter `force'.
  2226.  
  2227.     * Version 0.73 released.
  2228.  
  2229.     * pr-output.cc: Use D_NINT instead of NINT in some cases to avoid
  2230.     overflow problems on systems that don't have IEEE Inf.
  2231.     * mappers.cc (round): Likewise.  Also avoids conversion of Inf to
  2232.     INT_MAX on systems that do have IEEE Inf.
  2233.  
  2234.     * builtins.h: Remove definition of NINT.
  2235.     * tree.h: Likewise.
  2236.     * tree-const.h: Likewise.
  2237.  
  2238.     * utils.cc (NINT): Move function here and improve handling of
  2239.     extreme values.
  2240.     * (D_NINT): New function.
  2241.  
  2242.     * scripts/isempty.m: Don't require the number of rows and columns
  2243.     to both be zero.
  2244.  
  2245. Thu Jul  8 16:25:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2246.  
  2247.     * Version 0.72.2.
  2248.  
  2249.     * configure.in: Do a better job of grabbing the last argument as
  2250.     the target_host_type and avoiding setting it to things like
  2251.     --prefix=/foo/bar
  2252.  
  2253.     * tree-const.cc (tree_constant_rep::save): Add default case for
  2254.     mark_as_global switch to avoid warnings from gcc.
  2255.  
  2256.     * variables.cc (force_global): Cope with symbol table changes.
  2257.     * tree.cc: (tree_identifier::do_lookup): Likewise.
  2258.     * lex.l (lookup_identifier): Likewise.
  2259.     * builtins.cc (install_builtins): Likewise.
  2260.  
  2261.     * symtab.cc, symtab.h: Massive internal rewrite.
  2262.  
  2263. Wed Jul  7 02:18:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2264.  
  2265.     * tc-assign.cc (tree_constant_rep::do_scalar_assignment): If rhs
  2266.     is a scalar type, also handle case of lhs being of unknown type.
  2267.     * Be sure to set the new type of the lhs.
  2268.  
  2269.     * tree-base.h: Don't include symtab.h.
  2270.     * tree-const.h: Ditto.
  2271.  
  2272. Tue Jul  6 22:47:28 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2273.  
  2274.     * parse.y (func_def2): Remove the function name from the top-level
  2275.     symbol table if defining on command line (an M-file would never be
  2276.     parsed if there was already an entry with the same name in the top
  2277.     level symbol table).
  2278.  
  2279.     * parse.y (word_list_command): Allow clear without any arguments.
  2280.     * tree.cc (word_list_command::eval): Handle word list commands
  2281.     with no arguments.
  2282.  
  2283. Mon Jul  5 14:43:30 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2284.  
  2285.     * Version 0.72.1.
  2286.  
  2287.     * help.cc (operators): Document the double quote character.
  2288.  
  2289.     * lex.l (getting_help): Delete unused variable.
  2290.     * (HELP_FCN): New exclusive start state.
  2291.     * ({IDENT}{S}*): Set start state to HELP_FCN instead of setting
  2292.     getting_help.
  2293.     * ({IDENT}/{S}*=): Likewise.
  2294.  
  2295.     * symtab.cc (symbol_table::load): Delete unused function.
  2296.  
  2297.     * tree-const.cc (tree_constant::load): Return flag telling whether
  2298.     the constant is global.
  2299.     * t-builtins.cc (builtin_load): Handle global variables.
  2300.     * (builtin_save): Likewise.
  2301.  
  2302.     * symtab.cc (symbol_record::save): Don't save builtin variables
  2303.     (variables marked as eternal are assumed to be builtin).
  2304.  
  2305.     * symtab.cc (symbol_record::mark_from_global): New function.
  2306.     * (symbol_def::undefine): Add optional argument to prevent
  2307.     deleting symbol's definition.
  2308.     * (symbol_table::undefine): If this variable has been marked as
  2309.     defined from a global, call symbol_def::undefine with arg = 1.
  2310.     * tree.cc (tree_identifier::do_lookup): If a local symbol is
  2311.     defined from a global, mark it as such.
  2312.  
  2313.     * symtab.cc (symbol_record::define (symbol_record*)): Delete
  2314.     unused function.
  2315.  
  2316.     * tree.cc (tree_identifier::do_lookup (int&)): Use operator=
  2317.     instead of symbol_record::define().
  2318.     * variables.cc (force_global (char*)): Likewise.
  2319.  
  2320. Sun Jul  4 01:27:44 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2321.  
  2322.     * symtab.cc (symbol_record): Define copy constructor and operator=.
  2323.  
  2324.     * builtins.cc (install_builtins): Make `i' and `j' read-only
  2325.     functions.
  2326.  
  2327.     * symtab.cc (symbol_record::define): Respect read-only status of
  2328.     variables and functions.
  2329.  
  2330. Sat Jul  3 19:11:31 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2331.  
  2332.     * user-prefs.h (print_empty_dimensions): New user preference variable.
  2333.     * user-prefs.cc (print_empty_dimensions): New function.
  2334.     * builtins.cc (print_empty_dimesions): Make default value true.
  2335.     * tree-const.cc (tree_constant_rep::eval): Use value here.
  2336.  
  2337.     * cond.m: Handle empty matrices.
  2338.     * tc-det.m (determinant): Likewise.
  2339.     * tc-inv.m (inverse): Likewise.
  2340.  
  2341.     * tc-hess.cc (hess): Use gripe_square_matrix_required instead of
  2342.     calling error.
  2343.     * tc-schur.cc (schur): Likewise.
  2344.  
  2345.     * builtins.cc (propagate_empty_matrices): Change default value to
  2346.     true.
  2347.  
  2348.     * tree-const.cc (tree_constant_rep::eval): If a matrix has zero
  2349.     rows or columns, also print the dimension along with the `[]'
  2350.     symbol.
  2351.  
  2352.     * tree-const.cc (do_binary_op): If ok to propagate empty matrices,
  2353.     go ahead and do the binary operation so that the result will have
  2354.     consistent dimensions.
  2355.     * (do_unary_op): Likewyse.
  2356.  
  2357.     * tc-extras.cc (get_dimensions): Don't force both nr and nc to
  2358.     zero if one is.
  2359.     * Matrix.cc, DiagMatrix.cc, ColVector.cc, RowVector.cc: Handle
  2360.     matrices with zero dimensions in a more consistent fashion.
  2361.  
  2362. Thu Jul  1 00:27:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2363.  
  2364.     * perror.m: New M-file.
  2365.  
  2366.     * LP.h, LP.cc: New interface for linear programmming.
  2367.     * LPsolve.h LPsolve.cc: New files to implement linear programming
  2368.     using lp_solve.
  2369.  
  2370.     * NPSOL.cc (minimize): Also return the vector of Lagrange
  2371.     multipliers.
  2372.     * tc-npsol.cc (npsol): Optionally return them.
  2373.  
  2374.     * QPSOL.cc (minimize): Also return the vector of Lagrange
  2375.     multipliers.
  2376.     * tc-qpsol.cc (qpsol): Optionally return them.
  2377.  
  2378.     * tc-qpsol.cc (qpsol): Make it work.
  2379.  
  2380. Wed Jun 30 02:19:00 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2381.  
  2382.     * g-builtins.cc (builtin_lpsolve): New function.
  2383.     * (builtin_qpsol): Ditto.
  2384.     * builtins.cc (general_functions): Add them to the list.
  2385.  
  2386.     * tc-lpsolve.cc: New file.
  2387.     * tc-qpsol.cc: Ditto.
  2388.     * src/Makefile.in: Add them to the list of SOURCES and DLD_OBJECTS.
  2389.  
  2390. Tue Jun 29 15:02:07 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2391.  
  2392.     * liboctave/DAE.cc (integrate): If stop_time_set is false, reset
  2393.     default value for info[3].
  2394.     * liboctave/ODE.cc (integrate): Likewise, reset default values of
  2395.     iopt and itask.
  2396.  
  2397.     From Thorsten Ohl <ohl@physics.harvard.edu>:
  2398.     * config.guess: Add check for NeXT.
  2399.     * configure.in: Add check for NeXT so that readline is configured
  2400.     properly (really need to improve readline's configuration scheme).
  2401.     * sysdep.cc (malloc_handler): New function for handling malloc
  2402.     errors on NeXT systems.
  2403.  
  2404.     * octave.cc (main): Call sysdep_init before anything else.
  2405.  
  2406.     * sysdep.cc: New file for system dependent things.
  2407.  
  2408.     * octave.cc (initialize_globals): Only pass argv[0] since that's
  2409.     the only thing that's used.
  2410.  
  2411. Sat Jun 26 13:00:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2412.  
  2413.     * tree.cc (tree_builtin::eval (int, char**, int)): Don't panic if
  2414.     called for something other than a text_fcn.
  2415.  
  2416.     * t-builtins.cc (builtin_cd): Rewrite to fix bogus memory
  2417.     problems.
  2418.  
  2419. Fri Jun 25 15:23:03 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2420.  
  2421.     * t-builtins.cc (builtin_cd): Don't delete value returned by
  2422.     get_working_directory.
  2423.     * g-builtins.cc (builtin_pwd): Likewise, and simplify.
  2424.  
  2425.     * utils.cc (make_absolute): Always create a new copy to return.
  2426.     * utils.cc (change_to_directory): Don't delete pointer returned
  2427.     from get_working_directory().
  2428.     * (file_in_path): Likewise.
  2429.  
  2430. Thu Jun 24 16:48:38 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2431.  
  2432.     * lex.l ({IDENT}{S}*): Always insert a comma if the next token
  2433.     doesn't look like some sort of operator, not just if
  2434.     convert_spaces_to_comma is also true (it may have been turned off
  2435.     by BIN_OP_RETURN).
  2436.  
  2437.     * tree-const.h (matrix_ptr): Delete function.
  2438.     * tc-extras.cc (frobit): Delete function.
  2439.     * (get_dimensions): New function.
  2440.     * (identity_matrix): Completely rewrite.
  2441.     * (fill_matrix): Likewise.
  2442.  
  2443. Wed Jun 23 13:50:16 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2444.  
  2445.     * Matrix-ext.cc (SCHUR::init): Also allow ord flag to be lowercase.
  2446.     * (ComplexSCHUR::init): Ditto.
  2447.     * tc-schur.cc (schur): Likewise.
  2448.  
  2449.     * Matrix-ext.cc (SCHUR::init): Declare sort as char, not char*,
  2450.     and pass its address to Lapack.
  2451.     * (ComplexSCHUR::init): Ditto.
  2452.  
  2453.     * Matrix-ext.cc (SCHUR::select_dig): Make static, and move ahead
  2454.     of first reference in file.
  2455.     * (SCHUR::select_ana): Likewise.
  2456.     * (ComplexSCHUR::select_complex_dig): Likewise.
  2457.     * (ComplexSCHUR::select_complex_ana): Likewise.
  2458.  
  2459.     * builtins.cc (install_builtins): Add `J' as an alias for `I'.
  2460.  
  2461.     * builtins.cc (install_builtins): Always create a new
  2462.     tree_constant for each variable, since the symbol table doesn't
  2463.     know how to share them.
  2464.  
  2465.     * tc-schur.cc (schur): Use warning and error functions instead of
  2466.     writing directly to cerr.
  2467.     * tc-hess.cc (hess): Ditto.
  2468.  
  2469.     * src/Makefile.in (DLD_OBJECTS): Include tc-schur.o and tc-hess.o.
  2470.     * (SOURCES): Add tc-schur.cc tc-hess.cc.
  2471.  
  2472.     * Merge Schur and Hessenberg changes:
  2473.  
  2474.     Fri Mar 19 11:01:19 1993  R. Bruce Tenison (btenison@eng.auburn.edu)
  2475.  
  2476.     * src/builtins.cc: Changed schur definition to include one more
  2477.     input.  Also changed the help line description
  2478.     * src/g-builtins.cc: Changed builtin_schur to accept two inputs
  2479.     Also changed the information to explain ordered schur operation.
  2480.     * src/tc-schur.cc Added extensions to the SCHUR and ComplexSCHUR
  2481.     calls to pass extra paramater.  Also added check for proper param.
  2482.     * liboctave/Matrix.h: Modified declarations dgeesx and zgeesx to
  2483.     accept address of select function.  Modified class structures for
  2484.     SCHUR and ComplexSCHUR to accept extra ordered schur param.
  2485.     * liboctave/Matrix-ext.cc: Added extensions for the extra ordered
  2486.     schur paramater.
  2487.  
  2488.     Wed Mar 17 15:23:14 1993  R. Bruce Tenison (btenison@eng.auburn.edu)
  2489.  
  2490.     * liboctave/Matrix-ext.cc (HESS and ComplexHESS): Added the
  2491.     Hessenburg decomposition routines.
  2492.     * liboctave/Matrix.h Added fortran lapack functions definitions
  2493.     used in the Hessenburg procedure.
  2494.     * src/g-builtins.cc (builtin_hess): Hessenburg Decomposition routine
  2495.     added
  2496.     * src/g-builtins.h (builtin_hess): Added extern definition.
  2497.     * liboctave/Matrix.h Added classed HESS and ComplexHESS
  2498.     * src/tree_const.h added defs for hess.
  2499.     * src/tc-hess.cc (hess): New file for hess function.
  2500.  
  2501.     Tue Mar 16 10:46:32 1993  R. Bruce Tenison (btenison@eng.auburn.edu)
  2502.  
  2503.     * src/g-builtins.cc (builtin_schur): Schur Decomposition routine
  2504.     added.
  2505.     * src/g-builtins.h (builtin_schur): Added extern definition.
  2506.     * liboctave/Matrix.h Added Classes SCHUR and Complex SCHUR, and
  2507.     added defs for zgeesx and dgeesx (lapack schur decomp)
  2508.     * liboctave/Matrix-ext.cc (SCHUR and Complex SCHUR): Ditto.
  2509.     * src/tree-const.h added defs for schur.
  2510.     * src/tc-schur.cc (schur): New file for schur function.
  2511.  
  2512. Tue Jun 22 20:18:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2513.  
  2514.     * lex.l (check_for_garbage_after_fcn_def): New function
  2515.     * parse.y (fcn_end_or_eof): If reading from an M-file, use it to
  2516.     print warning about trailing garbage after the end of a function
  2517.     has been found.
  2518.  
  2519. Mon Jun 21 20:21:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2520.  
  2521.     * tc-assign.cc (tree_constant_rep::assign): Handle case of
  2522.     assignment to unknown constant too.
  2523.     * (tree_constant_rep::do_scalar_assignment): Don't fail for
  2524.     unknown_constant type.
  2525.     * (tree_constant_rep::do_matrix_assignment): Likewise.
  2526.  
  2527.     * tree-const.cc (rows): Return 0 for unknown_constant type.
  2528.     * (columns): Likewise.
  2529.  
  2530.     * tree.cc (tree_identifier::assign): Defer defining symbol until
  2531.     assignment is successful.
  2532.     * When creating a new dummy tree_constant to assign a value to,
  2533.     leave it an unknown_constant type.
  2534.  
  2535.     * tc-assign.cc (do_scalar_assignment): If the right hand side
  2536.     isn't a scalar, maybe try to resize instead.
  2537.     * (do_matrix_assignment): For A(:,int) and A(int,:) cases, also
  2538.     resize if left hand side is a scalar.
  2539.  
  2540.     * norm.m: Allow "fro" to work for scalars and vectors too.
  2541.  
  2542. Sun Jun 20 01:17:03 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2543.  
  2544.     * NLConst.cc: New file.  Move inline function definitions here
  2545.     from NLConst.h.
  2546.  
  2547.     * Objective.cc: New file.  Move inline function definitions here
  2548.     from Objective.h
  2549.  
  2550.     * tree.cc (tree_word_list_command::eval): Call strsave for argv[0]
  2551.     too, and delete argv before returning.
  2552.     * (tree_builtin::eval): Likewise, for text functions with no
  2553.     arguments.
  2554.  
  2555. Sat Jun 19 01:37:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2556.  
  2557.     * octave.cc (parse_and_execute): Delete calls to delete_buffer
  2558.     and switch_to_buffer, since that is taken care of by unwinding the
  2559.     frame.
  2560.  
  2561. Fri Jun 18 00:08:36 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2562.  
  2563.     * tree.cc (tree_matrix::eval): Delete useless direct = ptr->direct
  2564.     and ptr = ptr->next statements from size-determining loop.
  2565.  
  2566.     * parse.y (opt_list): New rule.  Replace all occurrences of list
  2567.     with opt_list.
  2568.  
  2569.     * tree.cc: (tree_index_expression::eval (int, int)): Don't
  2570.     complain if the index expression has an empty argument list.
  2571.  
  2572.     * octave.cc (initialize_globals): Check return value of
  2573.     getenv ("HOME") against NULL, not the global variable
  2574.     home_directory that we are trying to initialize.
  2575.  
  2576.     * tree.cc (tree_function::eval): Quick return if command list
  2577.     is empty.
  2578.     * parse.y (func_def3): Allow empty function bodies.
  2579.  
  2580. Thu Jun 17 02:08:02 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2581.  
  2582.     * tree.cc (tree_while_command): Add constructor for case of
  2583.     expression only.
  2584.     * parse.y (statement): Allow empty command list for while commands.
  2585.  
  2586.     * parse.y (list): Allow empty commands in more places.  This ups
  2587.     the shift/reduce error count by 6, to 19.
  2588.  
  2589.     * octave.cc (execute_startup_files): Don't delete sd.
  2590.  
  2591.     * octave.cc (initialize_globals): Make copies of all strings.
  2592.     * Store more humorous messages if things fail.
  2593.  
  2594. Tue Jun 15 11:03:39 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2595.  
  2596.     * tc-extras.cc (get_user_input): Finish incomplete change to get
  2597.     input using readline.
  2598.  
  2599.     * tc-extras.cc (match_sans_spaces): New function.
  2600.     * (get_user_input): Use it when checking to see if the user
  2601.     entered a `quit' command.
  2602.  
  2603.     * liboctave/Makefile.in: Don't distribute Makedeps.in or include
  2604.     Makedeps since we generate dependencies automatically now.
  2605.     * configure.in: Don't create liboctave/Makedeps.
  2606.  
  2607. Sun Jun 13 18:31:17 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2608.  
  2609.     * src/xdiv.cc (xdiv): Solve least-squares problem if system of
  2610.     equations is not square, or if it is singular.
  2611.     * (xleftdiv): Likewise.
  2612.  
  2613.     * liboctave/Matrix.h (Matrix::lssolve): New functions for
  2614.     least-squares solutions of linear systems.
  2615.     * (ComplexMatrix::lssove): Ditto.
  2616.  
  2617. Sat Jun 12 19:07:07 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2618.  
  2619.     * libcruft/misc/xstopx.f (xstopx): Call dostop, not do_stop.
  2620.     * libcruft/misc/dostop.c: Rename from do_stop.c
  2621.     * (dostop): Likewise.
  2622.  
  2623.     * src/mappers.cc (xisnan (double)): Define even for systems that
  2624.     don't have xisnan by always returning false.
  2625.     * (xisnan (const Complex&)): Likewise.
  2626.  
  2627. Fri Jun 11 19:54:58 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2628.  
  2629.     * doc/Makefile.in (install): Try harder to install info files.
  2630.  
  2631.     * libcruft/Makefile.in (install): Run ranlib on installed library.
  2632.     * liboctave/Makefile.in (install): Ditto.
  2633.     * readline/Makefile.in (install): Ditto.
  2634.  
  2635. Thu Jun 10 00:15:41 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2636.  
  2637.     * Version 0.72 released.
  2638.  
  2639.     * libcruft/*/*.f: Don't call xstopx with '' since some Fortran
  2640.     compilers object to zero-length strings.
  2641.     * libcruft/misc/xstopx.f (xstopx): Don't print empty strings or
  2642.     single blanks.
  2643.     * libcruft/misc/gen-d1mach.c (main): Likewise, for generated code.
  2644.  
  2645.     * test/Makefile.in (check): Set the Tcl variable OCTAVE_PATH.
  2646.     * test/config/unix-octave.exp: Pass OCTAVE_PATH to OCTAVE using
  2647.     the new -p flag.
  2648.  
  2649.     * builtins.cc (install_builtins): Use load_path instead of calling
  2650.     default_path().
  2651.  
  2652.     * octave.cc (load_path): New global variable.
  2653.     * (initialize_globals): Initialize it here by calling default_path().
  2654.     * (main): Call initialize_globals() before getting command line
  2655.     arguments.
  2656.     * Accept new argument, -p PATH.
  2657.  
  2658.     * octave.cc (clean_up_and_exit): Don't print a message when Octave
  2659.     exits.
  2660.  
  2661.     * doinstall.sh: Install M-files in $(libsubdir), not $(libdir).
  2662.     * Use mkpath to create directories.
  2663.     * Extract version from version.h.
  2664.  
  2665.     * Makeconf.in (version): Compute version just once.
  2666.  
  2667.     * (libsubdir): New directory that includes version number, for
  2668.     installing M-files in (old versions of Octave may not be able to
  2669.     understand new M-files).
  2670.  
  2671.     * src/Makefile.in, libcruft/Makefile.in, liboctave/Makefile.in,
  2672.     doc/Makefile.in, readline/Makefile.in, scripts/Makefile.in
  2673.     (install): Use mkpath to create directories.
  2674.     * scripts/Makefile.in (install): Install M-files in $(libsubdir),
  2675.     not $(libdir).
  2676.  
  2677.     * mkpath.c: New file, from Emacs-19.
  2678.     * Makefile.in (mkpath): New rule.
  2679.     * (all): Depend on mkpath
  2680.     * (binary-dist): Distribute it.
  2681.  
  2682.     * config.guess: Update from bothner@cygnus.com.
  2683.  
  2684.     * lex.l (<STRING>{QSTR}*[\n\']): Set start state to 0 or MATRIX,
  2685.     depending on value of braceflag.
  2686.     * (<DQSTRING>{DQSTR}*[\n\"]): Ditto.
  2687.  
  2688.     * tree.cc (tree_matrix::eval): Make sure that strings are nul
  2689.     terminated.
  2690.  
  2691. Tue Jun  8 16:08:10 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2692.  
  2693.     * octave.cc (clean_up_and_exit): Print `bye-bye' here.
  2694.     * g-builtins.cc (builtin_quit): Not here.
  2695.  
  2696.     * pager.cc (terminal_columns): If screenwidth <= 0, return a
  2697.     default value of 80 columns.
  2698.     * (terminal_rows): Likewise for screenheight and a default of 24
  2699.     rows.
  2700.  
  2701.     * octave.cc (parse_and_execute): Don't fiddle with interactive
  2702.     states since that screws paging output.
  2703.     * tree.cc (parse_m_file): Likewise.
  2704.  
  2705.     * parse.y (input): For `simple_list error END_OF_INPUT' and
  2706.     `error END_OF_INPUT' use ABORT_PARSE.
  2707.     * Always accept `simple_list END_OF_INPUT'.
  2708.     * Always abort for `END_OF_INPUT'.
  2709.  
  2710. Mon Jun  8 13:55:41 1993  John C. Campbell  (jcc@schoch.che.utexas.edu)
  2711.  
  2712.     * file-io.h (fopen_file_for_user): New function declaration.
  2713.  
  2714.     * file-io.cc (fopen_file_for_user): New function.
  2715.     * (fgets_internal): If file doesn't exist open it for user,
  2716.     also return (double) -1 on EOF
  2717.     * (fseek_internal), (ftell_internal), (frewind_internal),
  2718.     (do_printf): Ditto.
  2719.     * (fopen_internal): Remove warn_on_not_open flag, limit warns.
  2720.  
  2721. Mon Jun  7 00:28:13 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2722.  
  2723.     * file-io.cc (do_scanf): Use `type' wherever possible instead of
  2724.     hardcoding name in messages.
  2725.     * (do_printf): Ditto.
  2726.  
  2727.     * file-io.cc (fflush_internal): If flushing stdout, flush output
  2728.     to the pager instead of calling fflush on a stream.
  2729.     * (do_printf): Make fprintf (stdout, ...) exactly the same as
  2730.     printf (...).
  2731.     * (do_scanf): Make fscanf (stdin, ...) exactly the same as
  2732.     scanf (...).
  2733.  
  2734.     * tc-extras.cc (get_user_input): Flush output to pager before
  2735.     prompting for input.
  2736.  
  2737.     * libcruft/Makefile.in (DISTFILES): Distribute STOP.patch to show
  2738.     the changes made to the Fortran sources.
  2739.  
  2740.     * libcruft/*/*.f: Replace STOP statements with calls to xstopx, so
  2741.     that Fortran programs won't just quit on us.
  2742.  
  2743.     * libcruft/misc/xstopx.f: New file.
  2744.     * libcruft/misc/do_stop.c: New file.
  2745.     * libcruft/misc/Makefile.in (SPECIAL): Add do_stop.c to the list.
  2746.     * (SPECIAL_DEPEND): Likewise, for do_stop.o.
  2747.     * libcruft/Makefile.in (CRUFT_OBJ): Ditto.
  2748.  
  2749.     * lex.l (")"): Don't pop the top of the in_brace_or_paren stack if
  2750.     it's empty.
  2751.  
  2752. Sun Jun  6 00:41:28 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2753.  
  2754.     * liboctave/CollocWt.cc (init): Always compute Gaussian quadrature
  2755.     weights instead of trying to compute Radau or Lobatto weights if
  2756.     the endpoints are included.
  2757.     * Really do compute roots and derivative weights corresponding to
  2758.     Legendre polynomials if alpha and beta are zero, even if the
  2759.     endpoints are included.
  2760.  
  2761. Sat Jun  5 22:19:55 1993  John C. Campbell  (jcc@schoch.che.utexas.edu)
  2762.  
  2763.     * builtins.cc (builtin_general_functions): Correct max arg counts
  2764.     for fscanf, scanf, and sscanf.
  2765.  
  2766.     * g-builtins.cc (builtin_fscanf): Correct argument checks.
  2767.     * (builtin_sscanf): Likewise.
  2768.  
  2769.     * file-io.cc (fopen_internal): Don't warn for opening new file.
  2770.  
  2771.     * file-io.cc (process_printf_format): Handle * for field width and
  2772.     precision.
  2773.     * Pass array of arguments and nargin instead of just one arg.
  2774.     * (do_printf): Call process_printf_format() with new args.
  2775.  
  2776.     * file-io.cc (process_scanf_format): New function to handle scanf
  2777.     dirty work.
  2778.     * (do_scanf): New function.
  2779.  
  2780. Sat Jun  5 14:09:41 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2781.  
  2782.     * lex.l (YY_FATAL_ERROR): Redefine here to keep from exiting on
  2783.     fatal scanner errors.
  2784.  
  2785. Fri Jun  4 16:35:25 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2786.  
  2787.     * tree.cc (tree_multi_assignment_expression::eval (int)): Check to
  2788.     see if result is NULL before trying to use it.
  2789.  
  2790.     * tc-extras.cc (get_user_input): Call gnu_readline() to get input.
  2791.  
  2792. Thu Jun  3 00:30:28 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2793.  
  2794.     * scripts/*.m: Convert single-quoted strings to use double quotes
  2795.     since the manual says they are better.
  2796.  
  2797.     * Version 0.71.10.
  2798.  
  2799.     * doc/Makefile.in (DISTFILES): Distribute octave.info*.
  2800.  
  2801.     * Makefile.in (.fname): Delete target and move actions back to the
  2802.     individual dist targets because this always needs to be done.
  2803.     * (binary-dist): Strip src/octave.
  2804.  
  2805.     * doinstall.sh: New file, for binary distributions.
  2806.  
  2807. Wed Jun  2 15:11:54 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2808.  
  2809.     * Makefile.in (binary-dist): New target, just like dist, except
  2810.     also distribute libcruft.a, liboctave.a, libreadline.a and
  2811.     src/octave.
  2812.  
  2813.     * Makefile.in (.fname): New target.
  2814.     * (links-for-dist): New target.
  2815.     * (local-dist): Depend on .fname.
  2816.     * (dist): Depend on .fname and use links-for-dist.
  2817.  
  2818.     * octave.cc: Move code to print startup message to just after
  2819.     option processing so that any messages from startup files will
  2820.     appear after the normal startup message.
  2821.  
  2822.     * utils.cc (get_site_defaults): New function.
  2823.     * (OCTAVE_HOME): Provide default definition.
  2824.  
  2825.     * (SITE_DEFAULTS): Delete definition.
  2826.     * octave.cc (execute_startup_files): Use get_site_defaults instead.
  2827.  
  2828.     * src/Makefile.in (utils.o): Define OCTAVE_HOME to be $(prefix)
  2829.     here.
  2830.  
  2831.     * Makeconf.in: Don't define SITE_DEFAULTS or OCTAVE_M_FILE_DIR.
  2832.  
  2833.     * lex.l (do_string_escapes): Recognize `\"'.
  2834.  
  2835. Tue Jun  1 01:28:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2836.  
  2837.     * Version 0.71.9.
  2838.  
  2839.     * parse.y (maybe_convert_to_ans_assign): Greatly simplify.
  2840.  
  2841.     * file-io.cc (File_info): Convert from struct to proper class.
  2842.     * (valid_mode): New function.
  2843.  
  2844.     * parse.y, parse.h, lex.l, tree-extras.cc (convert_to_ans_assign):
  2845.     Delete unused variable.
  2846.  
  2847.     * builtins.cc (SEEK_CUR): Set to 1 to match (normal) system values.
  2848.     * (SEEK_END): Likewise, set to 2.
  2849.  
  2850.     * statdefs.h: New file.
  2851.     * Makefile.in (INCLUDES): Add it to the list.
  2852.     * octave-hist.cc: Include it.
  2853.     * variables.cc (identifier_exists): Likewise.
  2854.     * utils.cc (is_newer): Likewise.
  2855.  
  2856.     * builtins.cc (SEEK_SET): New builtin varible.
  2857.     * (SEEK_CUR): Ditto.
  2858.     * (SEEK_END): Ditto.
  2859.     * (stdin): Ditto.
  2860.     * (stdout): Ditto.
  2861.     * (stderr): Ditto.
  2862.  
  2863.     * lex.l (strip_trailing_whitespace): New function.
  2864.     * ({IDENT}{S}*): Use it.
  2865.     * (<TEXT_FCN>[^ \t\n\;\,]*): Fix to grab trailing spaces.
  2866.     Use strip_trailing_whitespce() to delete it before returning.
  2867.  
  2868. Mon May 31 21:00:00 1993  John C. Campbell  (jcc@june.che.utexas.edu)
  2869.  
  2870.     * file-io.cc, file-io.h: New files to implement C-style file
  2871.     handling and I/O functions.
  2872.     * (do_printf): Move here from tc-extras.cc.
  2873.     * (process_printf_format): Likewise.  Also renamed from
  2874.     process_format.
  2875.  
  2876. Mon May 31 00:52:55 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2877.  
  2878.     * (tree_function::eval): Now that we can restore values, enable
  2879.     code to give error for attempts to call functions recursively.
  2880.  
  2881.     * octave.cc (parse_and_execute): Use unwind-protect functions to
  2882.     save and restore state.
  2883.     * tree.cc (parse_m_file): Likewise.
  2884.     * (tree_function::eval): Likewise.
  2885.     * tc-extras (eval_string): Likewise.
  2886.  
  2887.     * unwind-prot.cc (saved_variable): New class to hold values of and
  2888.     pointers to variables we want to restore.
  2889.     * (restore_saved_variable): New function.
  2890.  
  2891.     * unwind-prot.cc (unwind_protect_int_internal): New function.
  2892.     * (unwind_protect_ptr_internal): Ditto.
  2893.     * (unwind_protect_var_internal): Ditto.
  2894.  
  2895.     * unwind-prot.h (unwind_prot_int): New macro.
  2896.     * unwind-prot.h (unwind_prot_ptr): Ditto.
  2897.     * unwind-prot.h (unwind_prot_var): Ditto.
  2898.  
  2899.     * variables.cc (symbol_out_of_date ()): Move here from tree.cc.
  2900.     * (is_valid_function): Fix logic for finding a function
  2901.     definition, including checking to see if the current symbol
  2902.     definition is out of date.
  2903.  
  2904.     * tree-const.h (is_numeric_or_range_type): New function.
  2905.     * tree-const.h (is_string_type): New function.
  2906.     * tree.cc (tree_matrix::eval): Use !is_string_type() instead of
  2907.     is_numeric_type() to decide that we've seen something other than
  2908.     a string.
  2909.  
  2910.     * parse.y (maybe_warn_assign_as_truth_value ()): New function.
  2911.     * user-prefs.h (warn_assign_as_truth_value): New preference.
  2912.     * user-prefs.cc (warn_assign_as_truth_value ()): New function.
  2913.     * builtins.cc (string_variables): Add it to the list.
  2914.  
  2915.     * tree.h (tree_simple_assignment_expression): Rename class from
  2916.     tree_assignment_expression.
  2917.     * (tree_assignment_expression): New class, derived from
  2918.     tree_expression.
  2919.     * (tree_simple_assignment_expression): Derive from new
  2920.     tree_assignment_expression class, not tree_expression class.
  2921.     * (tree_multi_assignment_expression): Ditto.
  2922.  
  2923. Sun May 30 22:40:58 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2924.  
  2925.     * src/Makefile.in (%.d: %.cc): First remove target file, then
  2926.     redirect into tmp file, and finally move tmp file to target file
  2927.     only if creating tmp file was successful.
  2928.     * liboctave/Makefile.in (%.d: %.cc): Ditto.
  2929.  
  2930. Sat May 29 18:18:16 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2931.  
  2932.     * tree.cc (tree_constant *tree_multi_assignment_expression
  2933.     ::eval (int print, int nargout)): New function.
  2934.     * (tree_constant tree_multi_assignment_expression::eval (int print)):
  2935.     Use it to do the real work.
  2936.  
  2937.     * tree.cc (tree_matrix::to_param_list ()): Also allow index
  2938.     expressions as long as the argument list is missing.
  2939.  
  2940.     * parse.y (ans_expression): Now that assignments are just
  2941.     expressions, don't convert expressions to assignemnts to `ans' if
  2942.     they already are assignments.
  2943.     * maybe_convert_to_ans_assign (tree *expr): New function to do the
  2944.     real work.
  2945.  
  2946.     * tree.cc (tree_multi_assignment_expression::
  2947.     is_assignement_expression ()): Return 1.
  2948.  
  2949.     * tree-base.h (tree::is_index_expression ()): New virtual
  2950.     function, returns 0.
  2951.     * tree.cc (tree_index_expression::is_index_expression ()): Return 1.
  2952.  
  2953.     * tree.cc (tree_assignment): Construct from tree_index_expression
  2954.     and a tree.
  2955.     * (tree_index_expression::ident ()): New function.
  2956.     * (tree_index_expression::arg_list ()): New function.
  2957.  
  2958.     * parse.y (variable): New rule, returns tree_index_expression.
  2959.  
  2960.     * parse.y: Rewrite assignment rules so that they are simply
  2961.     expressions, not special cases.
  2962.     * Rearrange fact and expression rules into expression (assignement
  2963.     or simple expression), simple_expr (binary and postfix expressions
  2964.     or secondary simple expression), and simple_expr1 (constants and
  2965.     prefix expressions) rules.
  2966.     * Delete fact rules.
  2967.  
  2968.     * parse.y: Make EXPR_EQ and EXPR_NE have the same precedence as
  2969.     the other relational operators.
  2970.  
  2971. Fri May 28 10:14:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2972.  
  2973.     * unix-octave.exp: Delete use of OCTAVEFLAGS.
  2974.  
  2975.     * test/config: New directory.
  2976.     * test/config/Makefile.in: New file.
  2977.     * test/config/unix-octave.exp: Rename from test/octave-init.exp.
  2978.     * test/Makefile.in (SOURCES): Delete octave-init.exp from list.
  2979.     * configure.in: Add test/config/Makefile to the list of Makefiles
  2980.     to build.
  2981.  
  2982.     * utils.cc (send_to_plot_stream): Plot lines by default.
  2983.  
  2984. Thu May 27 08:03:31 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  2985.  
  2986.     * lex.l (\]): Don't pop the top of the in_brace_or_paren stack if
  2987.     it's empty.
  2988.  
  2989.     * tree.cc (tree_matrix::eval): Make it work for single element
  2990.     strings as well.
  2991.  
  2992.     * Version 0.71.8.
  2993.  
  2994.     * lex.l (next_token_is_postfix_unary_op): New function.
  2995.     * (<MATRIX>{SN}*\]{S}*): Use it as well, to decide whether to
  2996.     insert a comma.
  2997.     * (<MATRIX>{S}+): Likewise.
  2998.     * ({IDENT}{S}*): Likewise.
  2999.  
  3000. Wed May 26 15:37:27 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3001.  
  3002.     * pr-otput.cc (pr_any_float): Use form() now that iostream
  3003.     formatting bug has been fixed (libg++-2.3.1).
  3004.  
  3005. Mon May 24 15:36:22 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3006.  
  3007.     * tree.cc (any_arg_is_magic_colon): New function.
  3008.     * (tree_builtin::eval) Use it to avoid calling builtin functions
  3009.     with `:' arguments.
  3010.  
  3011. Sun May 23 14:07:19 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3012.  
  3013.     * g-builtins.cc (builtin_fprintf): Correct usage message.
  3014.  
  3015. Fri May 21 10:35:40 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3016.  
  3017.     * Version 0.71.7.
  3018.  
  3019.     * octave.cc (main): Always reset_parser() before every call to
  3020.     yyparse(), not just on a longjmp return.
  3021.  
  3022.     * doc/Makefile.in (install): For now, don't try to install
  3023.     anything.
  3024.  
  3025.     * lex.l (<MATRIX>{S}+): Call next_token_is_bin_op() instead of
  3026.     making the check in line.
  3027.     * (<MATRIX>{SN}*\]{S}*): Likewise.
  3028.     * (<MATRIX>{S}+): Likewise.
  3029.  
  3030.     * lex.l (looks_like_bin_op): New function.
  3031.     * (next_char_is_space): Ditto.
  3032.     * (next_token_is_bin_op): Ditto.
  3033.  
  3034.     * lex.l ({IDENT}{S}*): If we're in a brace context and the next
  3035.     character is an open paren, set convert_spaces_to_comma to 0.
  3036.     * tree-const.cc (convert_to_str): New function.
  3037.     * g-builtins.cc (builtin_setstr): New function.
  3038.     * builtins.cc (builtin_general_functions): Add it to the list.
  3039.  
  3040. Thu May 20 17:56:15 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3041.  
  3042.     * doc/Makefile.in (SOURCES): Define to be all .texi files.
  3043.     * (octave.info): Depend on $(SOURCES).
  3044.     * (octave.dvi): New target.
  3045.     * Don't distribute the man page.
  3046.  
  3047.     * lex.l (<MATRIX>{S}+): If the next character is a plus or minus
  3048.     followed by a space or tab, don't insert a comma.  This makes
  3049.     input like [1 + 1] == 2 and input like [1 +1] == [1 1].
  3050.     * (<MATRIX>{SN}*\]{S}*): Likewise.
  3051.  
  3052.     * lex.l (<MATRIX>{S}+): Use in_brace_or_paren and
  3053.     convert_spaces_to_comma to decide whether to convert spaces to a
  3054.     comma.
  3055.  
  3056.     * lex.l ({IDENT}{S}*): If we're in a brace context and the next
  3057.     character is an open paren, set convert_spaces_to_comma to 0.
  3058.  
  3059.     * lex.l (<MATRIX>{SN}*\]{S}*): Even if we're still inside some braces,
  3060.     don't always push a comma onto the input.
  3061.  
  3062.     * lex.l (<MATRIX>{SN}*\]): Also grab trailing spaces.
  3063.     * ({IDENT}): Ditto.
  3064.  
  3065.     * lex.l (in_brace_or_paren): New stack to keep track of whether
  3066.     the closest enclosing scope is a pair of braces or parens.  When
  3067.     we see a `[' or a `(', push a flag on the stack.  When we see a
  3068.     `]' or a `)', pop the top of the stack.
  3069.  
  3070.     * lex.l (convert_spaces_to_comma): New flag to control lexer behavior.
  3071.     * (RETURN): Reset it to 1.
  3072.     * (most other returns): Reset it to 1.
  3073.  
  3074.     * lex.l (BIN_OP_RETURN): New macro.  Set convert_spaces_to_comma to 0.
  3075.     * (most binary operators): Use it instead of RETURN.
  3076.  
  3077.     * lex.l (match_any): New function.
  3078.  
  3079. Wed May 19 12:51:54 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3080.  
  3081.     * Range.cc (nelem_internal): Don't allow ranges with more than
  3082.     INT_MAX elements.  Return -1 to indicate failure.
  3083.     * tree-const.cc (tree_constant_rep::tree_constant_rep (double,
  3084.     double, double)): Check nelem() to see if the range is valid.
  3085.  
  3086.     * pr-output.cc (all_elements_are_ints (Range&)): We only need to
  3087.     check the base and the increment, not the limit too.
  3088.  
  3089.     * Range.cc (nelem_internal): Move function definition here from
  3090.     Range.h and do a better job of determining the number of elements
  3091.     in the range.
  3092.  
  3093. Tue May 18 09:06:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3094.  
  3095.     * Version 0.71.6.
  3096.  
  3097.     * tc-extras.cc (find_nonzero_elem_idx): Declare inner loop
  3098.     iteration variables that are used inside later nested loops
  3099.     in the outer enclosing scope to make this work for old and new
  3100.     language definitions (see the ARM, chapter 19: "ANSI/ISO
  3101.     Resolutions", 6.4/6.5: "The statement or statements immediately
  3102.     controlled by the condition in a selection-statement, or an
  3103.     iteration-statement introduce an implicit local scope".
  3104.     * xpow.cc (elem_xpow (Matrix&, Matrix&)): Likewise.
  3105.  
  3106.     * tree.cc (tree_identifier::parse_m_file (char*, int)): Set
  3107.     reading_script_file before calling parse_m_file and restore it
  3108.     afterward.
  3109.  
  3110. Mon May 17 20:04:54 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3111.  
  3112.     * octave.h (prog_name): Declare extern.
  3113.     * (raw_prog_name): Ditto.
  3114.  
  3115.     * f2c-compat.sh (ctest.c): Also write a dummy MAIN_ since gcc 2.4
  3116.     doesn't seem to create an executable now if there are unresolved
  3117.     externals, and the linker wants to see it on Suns.
  3118.  
  3119. Thu May 13 01:06:18 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3120.  
  3121.     * Makefile.in (DISTFILES): Include Makeconf.in.
  3122.  
  3123.     * configure.in: Set defaults for CFLAGS, CXXFLAGS, LDFLAGS, and
  3124.     FFLAGS.
  3125.     * Don't substitute CDEBUG, COPTIMIZE, FOPTIMIZE, or CXXOPTIMIZE.
  3126.     * Use AC_PROGRAMS_CHECK instead of our own code for checking for a
  3127.     Fortran compiler.
  3128.     * Add Makeconf to the list of files to create.
  3129.  
  3130.     * src/Makefile.in (octave): Use ALL_LDFLAGS instead of LDFLAGS.
  3131.  
  3132.     * Makeconf.in (ALL_CFLAGS, ALL_CXXFLAGS, ALL_LDFLAGS): New macros.
  3133.     * Allow the user to set CFLAGS, CXXFLAGS, and FFLAGS without
  3134.     screwing things up.
  3135.     * (CDEBUG, COPTIMIZE, FOPTIMIZE, CXXOPTIMIZE): Delete.
  3136.     * Provide rules for making .o from .cc or .c files that use
  3137.     ALL_CXXFLAGS and ALL_CFLAGS.
  3138.  
  3139.     * src/Makefile.in: Generate dependencies automatically using the
  3140.     method described in the GNU make manual.
  3141.     * liboctave/Makefile.in: Likewise.
  3142.  
  3143.     * All Makefile.in files: Set TOPDIR and include $(TOPDIR)/Makeconf.
  3144.     * Makeconf.in: New file, for most configuration options.
  3145.  
  3146.     * tc-rand.cc (rand_internal): Return an empty matrix for rand (0).
  3147.  
  3148. Wed May 12 01:32:36 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3149.  
  3150.     * octave.cc (clean_up_and_exit): Call close_plot_stream before
  3151.     quitting.
  3152.  
  3153.     * Version 0.71.4.
  3154.  
  3155.     * pr-output.cc (octave_print_internal (ostrstream&, Matrix&)):
  3156.     Handle wrapping columns neatly, respecting value of split_long_rows.
  3157.     * (octave_print_internal (ostrstream&, ComplexMatrix&)): Ditto.
  3158.     * (octave_print_internal (ostrstream&, Range&)): Ditto.
  3159.  
  3160.     * user-prefs.cc (split_long_rows): New preference variable and
  3161.     function.
  3162.     * builtins.cc (builtin_string_variables): Add to list with default
  3163.     value == true.
  3164.  
  3165. Tue May 11 02:20:43 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3166.  
  3167.     * pr-output.cc (pr_max_internal): Don't count Inf or NaN when
  3168.     looking for max value.
  3169.     * (pr_min_internal): Likewise, for min values.
  3170.  
  3171.     * pr-output.cc (pr_any_float): Merge pr_float and pr_imag_float.
  3172.  
  3173.     * pr-output.cc (any_element_is_inf_or_nan (Matrix&)): New function.
  3174.     * (any_element_is_inf_or_nan (ComplexMatrix&)): New function.
  3175.     * (all set_format functions (except Range)): Consider Inf and NaN
  3176.     when computing field width (we'll either print "Inf" (possibly
  3177.     with a sign) or "NaN").
  3178.  
  3179.     * pr-output.cc (pr_float): Handle Inf and NaN.
  3180.     * (pr_imag_float): Ditto.
  3181.  
  3182.     * pr-output.cc (set_format_style): Make format short set precision
  3183.     to 3 and max field width to 8.
  3184.  
  3185.     * pr-output.cc (pr_float): Don't print a sign for -0.0.
  3186.     * (pr_imag_float): Ditto.
  3187.  
  3188.     * pr-output.cc (all set_format functions): Return the actual field
  3189.     width computed or 0 if free format.  For complex, return both real
  3190.     and imaginary field widths.
  3191.     * Include pager.h for terminal_rows() and terminal_columns().
  3192.  
  3193.     * pr-output.cc (pr_complex): If imaginary part is -0.0, print a
  3194.     minus sign but convert the value to 0.0 before printing.
  3195.  
  3196.     * octave.cc (parse_and_execute (FILE *, int)): Don't use readline
  3197.     to read commands from files.
  3198.     * (parse_and_execute (char *, int)): Set reading_script_file
  3199.     before calling get_input_from_file.
  3200.  
  3201.     * Version 0.71.3.
  3202.  
  3203.     * src/Makefile.in (deps): New target.
  3204.     * Update dependencies using the output from running `make deps'.
  3205.  
  3206.     * pr-output.cc (set_output_prec_and_fw): New function.
  3207.     * (set_format_style): Use it.
  3208.     * (set_format functions): Use user_pref variables for precision
  3209.     and field width.
  3210.  
  3211.     * variables.cc (octave_real_scalar_variable): New function.
  3212.     * buitlins.cc (builtin_string_varaibles): Add output_precision and
  3213.     max_field_width to the list (really need a separate list for
  3214.     numeric values...).
  3215.     * user-prefs.cc (set_output_max_field_width): New function to be
  3216.     called when output_max_field_width changes.
  3217.     * (output_precision): Likewise, for output_precision.
  3218.  
  3219.     * sighandlers.cc (pipe_handler_error_count): New global variable.
  3220.     * (sigpipe_handler): Use it to keep from printing more than one
  3221.     broken pipe message between prompts.
  3222.     * (input.cc): Reset pipe_handler_error_count before printing the
  3223.     prompt.
  3224.  
  3225. Mon May 10 13:06:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3226.  
  3227.     * sighandlers.cc (sigpipe_handler): Issue warning and return
  3228.     instead of aborting.
  3229.  
  3230.     * user-prefs.cc (all sv_* functions): Don't delete previous value
  3231.     of a preference string if the new value is bogus.
  3232.  
  3233.     * user-prefs.cc (all sv_* functions and all functions that handle
  3234.     user preferences): Return 0 for success, -1 for failure.
  3235.     * symbtab.cc (symbol_record::define): Check return value of sv_fcn
  3236.     and restore previous value on failure.
  3237.     * symtab.h (sv_Function typedef): Change to return int, not void.
  3238.     * builtins.h (sv_Function typedef): Ditto.
  3239.  
  3240. Sun May  9 18:25:00 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3241.  
  3242.     * user-prefs.cc (all sv_* functions): Issue a warning if the user
  3243.     gives us something that's not a string.
  3244.  
  3245. Sat May  8 23:40:59 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3246.  
  3247.     * ColVector.cc (ColumnVector::min): Upper loop limit is len, not 0.
  3248.     * (ComplexColumnVector::min): Ditto.
  3249.     * RowVector.cc (RowVector::min): Ditto.
  3250.     * (ComplexRowVector::min): Ditto.
  3251.  
  3252. Fri May  7 18:41:29 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3253.  
  3254.     * pr-output.cc (set_format_style): New function, extracted from
  3255.     builtin_format().
  3256.     * t-builtins.cc (builtin_format): Call set_format_style to do real
  3257.     work.
  3258.  
  3259.     * pr-output.cc: New file for special formatted printing funcions.
  3260.     * tree-const.cc (tree_constant_rep::eval): Use new functions.
  3261.  
  3262.     * user-prefs.cc (sv_pager_binary): New function.
  3263.     * user-prefs.h (user_preferences) Add new field, pager_binary.
  3264.     * builtins.cc (builtin_string_variables): Add PAGER to the list.
  3265.     * utils.cc (default_pager): New function.
  3266.     * Makefile.in: Define DEFAULT_PAGER for utils.cc, not pager.cc.
  3267.     * pager.cc (get_pager): Delete function.
  3268.     * Use user_pref.pager_binary instead of calling get_pager().
  3269.  
  3270. Thu May  6 11:05:06 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3271.  
  3272.     * pager.cc (pager_buf): Declare as static pointer to ostrstream.
  3273.     * (initialze_pager): Delete old pager_buf and create new one for
  3274.     each batch of output.  This is needed because once str() is called
  3275.     for pager buf, it will no longer grow.
  3276.  
  3277.     * pager.cc (maybe_page_output): Take care of deleting buffer after
  3278.     str() is called.
  3279.     * (flush_output_to_pager): Likewise.
  3280.     * t-builtins.cc (builtin_ls): Likewise.
  3281.     * (builtin_set): Likewise.
  3282.     * (builtin_show): Likewise.
  3283.     * tc-extras.cc (process_format): Likewise.
  3284.     * (process_format): Likewise.
  3285.     * tree-plot.cc (tree_plot_command::eval): Likewise.
  3286.  
  3287. Wed May  5 10:45:39 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3288.  
  3289.     * g-builtins.cc (builtin_shell_command): Buffer characters with an
  3290.     ostrstream and call maybe_page_output instead of writing directly
  3291.     to cout.
  3292.     * (builtin_warranty): Likewise.
  3293.     * tc-extras (do_printf): Likewise.
  3294.     * tree.cc (tree_identifier::eval): Likewise.
  3295.     * (tree_assignment_expression::eval): Likewise.
  3296.     * (tree_multi_assignment_expression::eval): Likewise.
  3297.     * tree-const.cc (tree_constant_rep::eval): Likewise.
  3298.     * t-builtins.cc (builtin_help): Likewise.
  3299.     * (builtin_ls): Likewise.
  3300.     * (builtin_who): Likewise.
  3301.  
  3302.     * user-prefs.h user-prefs.cc (page_screen_output): New preference.
  3303.     * builtins.cc (string_variables): Add to list with default value
  3304.     of true.
  3305.  
  3306.     * input.cc (octave_gets): If interactive, call flush_to_pager()
  3307.     before prompting.
  3308.  
  3309.     * utils.cc (terminal_rows): Move to pager.cc
  3310.     * (terminal_columns): Likewise.
  3311.     * (get_pager): Likewise.
  3312.  
  3313.     * pager.h, pager.cc: New file to handle pager stuff.
  3314.     * src/Makefile.in: Fix things to distribute and compile them.
  3315.  
  3316.     * libcruft/Makefile.in (CRUFT_OBJ): Strip $(srcdir)/ and convert
  3317.     from .f to .o in two steps since some versions of GNU make strip
  3318.     the leading ./ from the output of $(wildcard), causing my pattern
  3319.     match to fail if compiling in the source tree.
  3320.  
  3321. Tue May  4 09:13:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3322.  
  3323.     * symtab.cc (symbol_record::define (symbol_record *)): Delete old
  3324.     name before saving new name.
  3325.     * (symbol_record::document): Likewise, for var.help and fcn.help.
  3326.  
  3327.     * parse.y (ABORT_PARSE): Renamed from DO_ABORT.
  3328.  
  3329. Mon May  3 01:00:04 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3330.  
  3331.     * tree.cc: Define destructors for every class in tree.h.  It
  3332.     appears that it should always be ok to delete everything in a
  3333.     command tree once we're done executing it.  Function definitions
  3334.     are still ok because the parser doesn't set global_command to the
  3335.     tree_function we've built (that's saved somewhere in the symbol
  3336.     table and shouldn't be deleted until we clear or redefine the
  3337.     function).
  3338.  
  3339.     * utils.cc (pathstring_to_vector): Do memory management here so
  3340.     callers don't have to.
  3341.     * (default_path): Likewise.
  3342.  
  3343.     * utils.cc (make_absolute): Return current_path (not a copy) since
  3344.     it is static.
  3345.     * (get_working_directory): Return the_current_working_directory
  3346.     (not a copy) since it is global.
  3347.  
  3348.     * utils.cc (cleanup_tmp_files): Delete filename when done.
  3349.  
  3350.     * parse.y: Replace output to cerr with calls to error() or warning().
  3351.     * DO_ABORT: New macro.  Use it instead of YYERROR for errors that
  3352.     we detect, and call yyerror since bison doesn't.
  3353.     * (param_list1): Detect invalid parameter lists.
  3354.     * (yyerror): Don't print pointer if it is past the end of the line.
  3355.  
  3356. Sun May  2 13:03:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3357.  
  3358.     * tc-extras.cc (process_format): Use ostrstream instead of a
  3359.     fixed-size character string to buffer the format.
  3360.  
  3361.     * utils.cc (terminal_rows): Get info from readline variable
  3362.     instead of hardcoded constants.
  3363.     * (terminal_columns): Likewise.
  3364.  
  3365.     * utils.cc (maybe_page_output): New function.
  3366.     * t-builtins.cc (builtin_help): Use it.
  3367.     * (builtin_who): Ditto.
  3368.     * Don't include procstream.h anymore since we no longer need it.
  3369.  
  3370.     * utils.cc (jump_to_top_level): Call run_all_unwind_protects ()
  3371.     before jumping back to the top level.
  3372.  
  3373. Sat May  1 20:59:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3374.  
  3375.     * unwind-prot.cc unwind-prot.h: New files to implement memory
  3376.     cleanup stuff.
  3377.     * src/Makefile.in: Distribute them.
  3378.  
  3379.     * Version 0.71.2.
  3380.  
  3381.     * computer.m: Delete file.
  3382.     * scripts/Makefile.in (computer.m): Add $(srcdir)/ prefix to
  3383.     computer.in.
  3384.  
  3385. Fri Apr 30 17:03:04 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3386.  
  3387.     * Matrix.h (<CLASS>::row (int i)): New function for extracting a
  3388.     row of a matrix where CLASS is one of Matrix, DiagMatrix,
  3389.     ComplexMatrix, or ComplexDiagMatrix.
  3390.     * (<CLASS>:: column (int i)): Likewise for columns.
  3391.     * (<CLASS>::row (char *s)): Likewise, but selection is done with a
  3392.     character string.  Currently we accept anything beginning with `F'
  3393.     or `f' to mean the first row and anything beginning with `l' or
  3394.     `L' to mean the last row.
  3395.  
  3396. Wed Apr 28 14:23:49 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3397.  
  3398.     * scripts/computer.in: New template file for computer.m.
  3399.     * scripts/Makefile.in (computer.m): Generate a custom computer.m
  3400.     file using $target_host_type.
  3401.     * (clean): Delete computer.m.
  3402.  
  3403.     * configure.in: If last argument is not empty, use its value as
  3404.     the TARGET.
  3405.     * If we aren't given a TARGET, use config.guess to find one.
  3406.     * Substitute target_host_type.
  3407.  
  3408.     * config.guess: New file, taken from gdb distribution.
  3409.     * Makefile.in: Distribute it.
  3410.  
  3411.     * tree-const.cc (force_numeric): New parameter, force_str_conv to
  3412.     allow us to ignore user preference on string to numeric
  3413.     conversion.
  3414.     * (make_numeric): Likewise.
  3415.  
  3416.     * tree.cc (tree_matrix::eval): Allow range constants in matrix
  3417.     lists by simply converting them to matrices.
  3418.     * Ditto for string constants.
  3419.  
  3420. Tue Apr 27 17:21:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3421.  
  3422.     * utils.cc (smells_like_X11): Delete unneeded function.
  3423.     * builtins.cc (install_builtins): Don't initialize
  3424.     graphics_terminal since it's no longer needed.
  3425.  
  3426.     * utils.cc (pathstring_to_vector): Call tilde_expand on each
  3427.     element of the path.
  3428.  
  3429.     * mappers.cc: Include float.h for DBL_MAX.
  3430.  
  3431. Wed Apr 21 19:31:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3432.  
  3433.     * mappers.cc (xisnan (Complex&)): Rename from isnan.
  3434.     * builtins.cc (mapper_functions): Use xisnan instead of isnan.
  3435.     * (install_builtins): Special case for linux for geenerating
  3436.     infinity and NaN.
  3437.  
  3438. Mon Apr 19 14:10:55 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3439.  
  3440.     * Version 0.71.1 released.
  3441.  
  3442.     * symtab.cc (char **sorted_list (int& count)) New function.
  3443.     * (char **sorted_var_list (int& count)): Ditto.
  3444.     * (char **sorted_fcn_list (int& count)): Ditto.
  3445.     * t-builtins.cc (builtin_who): Check symbol count too.
  3446.  
  3447.     * utils.cc (send_to_plot_stream): Check is_open(), not just the
  3448.     state of the stream.
  3449.     * (close_plot_stream): Likewise.
  3450.  
  3451.     * procstream.cc, procstream.h: Rewrite, taking a hint from the GNU
  3452.     fstream class.
  3453.  
  3454. Sun Apr 18 17:40:54 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3455.  
  3456.     * t-builtins.cc (builtin_help): Don't call list_in_columns if
  3457.     there isn't anything to list.
  3458.  
  3459. Fri Apr 16 20:57:15 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3460.  
  3461.     * Makefile.in (DISTDIRS): List dld here.
  3462.     * (DISTSUBDIRS): Not here.
  3463.  
  3464. Thu Apr 15 12:17:08 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3465.  
  3466.     * Version 0.71 released.
  3467.  
  3468.     * scripts/*.m: Improve help messages for most files.
  3469.  
  3470.     * libcruft/Makefile.in: Make libcruft.a here.
  3471.     * libcruft/Makerules.in: Not here.
  3472.  
  3473.     * PLOTTING: New file.
  3474.     * Makefile.in: Add it to the list of files we distribute.
  3475.  
  3476.     * g-builtins.cc (builtin_shell_command): New function.
  3477.     * builtins.cc (general_functions): Add it to the list.
  3478.  
  3479.     * procstream.h, procstream.cc (iprocstream): New class.
  3480.  
  3481.     * lex.l (<MATRIX>{SN}*\]): Maybe insert a comma after reading a `]'.
  3482.  
  3483.     * t-builtins.cc (builtin_load): Do tilde expansion for the file name.
  3484.     * (builtin_save): Ditto.
  3485.  
  3486. Wed Apr 14 10:40:44 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3487.  
  3488.     * tree.cc (tree_function::eval): Until we have a proper call frame
  3489.     unwinding scheme, comment out previous change.
  3490.  
  3491.     * tree.cc (tree_matrix::eval): Brain Transplant.
  3492.     * (tree_matrix::length): New function.
  3493.  
  3494.     * tree-base.h (matrix_dir): Delete md_none, md_left, and md_up.
  3495.     The only valid values are md_unknown, md_right, and md_down.
  3496.  
  3497. Tue Apr 13 20:07:25 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3498.  
  3499.     * tree.h (tree_function::call_depth): New member variable.
  3500.     * tree.cc (tree_function::eval): Check it to make recursive
  3501.     function calls fail (waiting for proper symbol table handling).
  3502.  
  3503.     * utils.cc (pathstring_to_vector): Don't prepend `.' here.  We do
  3504.     that already in default_path() if the user hasn't given us a
  3505.     loadpath.
  3506.  
  3507.     * t-builtins.cc (builtin_help): Get help for M-files even if they
  3508.     haven't been compiled yet.
  3509.     * List M-files we find in the loadpath.
  3510.  
  3511.     * utils.cc (get_m_file_names): Split into two functions, add
  3512.     parameter to specify whether .m suffix is deleted.
  3513.  
  3514.     * lex.l (grab_help_text): New function.
  3515.     * (beginning_of_function): New global variable.
  3516.     * (%|#): Call grab_help_text() if at beginning of a function.
  3517.     * tree.cc (tree_identifier::document): New function.
  3518.     * parse.y (func_def2): Use it.
  3519.     * (help_buf): New global buffer for help text.
  3520.  
  3521. Mon Apr 12 00:31:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3522.  
  3523.     * utils.cc (get_m_file_names): New function.
  3524.     * variables.cc (make_name_list): Use it.
  3525.  
  3526.     * t-builtins.cc (list_in_columns): Put output on an strstream
  3527.     instead of in a String.
  3528.     * (builtin_help): Use an strstream instead of a String for buffering.
  3529.     * (builtin_who): Likewise.
  3530.  
  3531.     * g-builtins.cc (builtin_keyboard): New function.
  3532.     * builtins.cc (general_functions): Add to list.
  3533.  
  3534.     * tc-extras.cc (get_user_input): If the user enters `exit',
  3535.     `quit', or `return', return instead of eval'ing the string.
  3536.     * Don't abort on empty input.
  3537.     * Add additional argument to handle debugging via new `keyboard'
  3538.     function.  If doing debugging, keep reading until we see `exit',
  3539.     `quit', or `return'.
  3540.  
  3541.     * menu.m: New M-file.
  3542.  
  3543.     * New top level plotting functions:
  3544.  
  3545.         plot.m    semilogx.m  semilogy.m  loglog.m   polar.m
  3546.         title.m   xlabel.m    ylabel.m    grid.m     bar.m
  3547.             stairs.m  mesh.m      meshdom.m   contour.m
  3548.  
  3549.     * New internal plotting functions:
  3550.  
  3551.         plot_int.m    plot_2_s_s.m  plot_2_v_v.m  plot_2_v_m.m
  3552.         plot_2_m_v.m  plot_2_m_m.m  polar_int.m
  3553.  
  3554.     * New utility functions:
  3555.  
  3556.         is_scalar.m  is_vector.m  is_matrix.m
  3557.  
  3558. Sun Apr 11 11:10:29 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3559.  
  3560.     * t-buitlins.cc (builtin_ls): New function.
  3561.     * builtins.cc (text_functions): Add it to the list under the names
  3562.     `ls' and `dir'.
  3563.  
  3564. Sat Apr 10 15:13:05 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3565.  
  3566.     * procstream.cc (oprocstream::close): Set badbit for stream after
  3567.     it is closed.
  3568.  
  3569.     * utils.cc (close_plot_stream): New function.
  3570.     * g-buitlins.cc (closeplot): New builtin function.
  3571.     * builtins.cc (general_functions): Add to list.
  3572.  
  3573.     * lex.l (cant_be_identifier): New cruft to properly handle the
  3574.     plot command's `using', `title', and `with' keywords.
  3575.  
  3576. Fri Apr  9 09:38:25 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3577.  
  3578.     * configure.in: Warn if it looks like gnuplot isn't installed.
  3579.  
  3580.     * utils.cc (send_to_plot_stream): Check the user's preference for
  3581.     the gnuplot binary.
  3582.  
  3583.     * user-prefs.cc (sv_graphics_terminal): Delete function.
  3584.     * user-prefs.h (graphics_terminal): Delete variable.
  3585.  
  3586.     * tree-plot.cc (tree_subplot_using::print): Add argument to allow
  3587.     checking of columns given in using command and use it.
  3588.     * (tree_plot_command::eval): Change caller.
  3589.  
  3590.     * parse.y (title): Allow plot title to be any expression.
  3591.     * tree-plot.cc (subplot_list): Likewise.
  3592.  
  3593.     * tree-plot.cc (tree_plot_command::eval): Don't let lusers try to
  3594.     make 2D parametric plots, since that seems to crash gnuplot.
  3595.  
  3596.     * tree.cc (tree_identifier::parse_m_file): Don't try to stash
  3597.     m-file name or time parsed if we were actually executing a script
  3598.     file.
  3599.  
  3600.     * sombrero.m: New M-file to demonstrate 3D plotting.
  3601.  
  3602.     * parse.y (plot_options): Allow them to be specified in any order.
  3603.  
  3604.     * g-builtins.cc (builtin_purge_tmp_files): New function.
  3605.     * builtins.cc (general_functions): Add to list.
  3606.  
  3607.     * g-builtins.cc, g-builtins.h (builtin_plot): Delete.
  3608.     * builtins.cc (general_functions): Delete entry for builtin_plot.
  3609.  
  3610.     * t-builtins.cc (builtin_set): Check to see if the user is setting
  3611.     up parametric plotting.
  3612.     * tree-plot.cc (parametric_plot): New global variable.
  3613.     * tree_const.cc (save_three_d): New function.
  3614.     * tree-plot.cc (tree_subplot_list::print): Handle 3D plots.
  3615.  
  3616.     * Makefile.in: Delete everything having to do with distributing or
  3617.     making gnuplot.
  3618.     * configure.in: Likewise.
  3619.  
  3620. Thu Apr  8 10:02:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3621.  
  3622.     * utils.cc (send_to_plot_stream): New function.  Move declaration
  3623.     of plot_stream to utils.cc and make static.
  3624.  
  3625.     * t-builtins.cc (builtin_set): New function.
  3626.     * (builtin_show): Ditto.
  3627.  
  3628.     * lex.l: Handle set command.
  3629.     * (doing_set): Yet another global variable to control behavior of
  3630.     the lexer.
  3631.  
  3632.     * tree-plot.cc (tree_subplot_using::print): Print warning if scanf
  3633.     format string is given.
  3634.  
  3635.     * parse.y (ranges1): Allow lower and upper bounds to be optional.
  3636.     * tree-plot.cc (tree_plot_range::print): Make it work.
  3637.  
  3638.     * tree-plot.cc: New file, extracted from tree.cc.
  3639.  
  3640.     * sighandlers.cc (install_signals): New function.
  3641.     * (*_handler): New set of functions to handle signals that would
  3642.     otherwise cause us to abort.
  3643.     * (my_friendly_exit): Call exit from most signal_handlers to clean
  3644.     up tmp files, etc.
  3645.  
  3646.     * lex.l (do_string_escapes): Correctly handle '' quotes.
  3647.     * Warn about unrecognized escape sequences but convert them to the
  3648.     escaped character anyway.
  3649.     * (EXPON): New definition.  Use it and ? qualifier to shorten the
  3650.     expressions for matching numbers.
  3651.     * (ECHAR): New definition.  Use it to correctly match
  3652.     backslash-escaped characters in strings.
  3653.     * Definitions: Surround multi-character definitions in ()'s to
  3654.     avoid potential problems with things like {DEF}*.
  3655.     * (QQ): Rename from DQ.
  3656.     * (DQSTR): New definition for strings in double quotes.
  3657.     * (DQSTRING): New start state.  Recognizing a naked " puts us here.
  3658.     * ("\n"): Turn off quote_is_transpose at the beginning of each line.
  3659.     * Use error functions instead of writing messages directly.
  3660.     * Don't include iostream.h -- we don't need it now.
  3661.     * Do include error.h.
  3662.  
  3663. Wed Apr  7 13:12:17 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3664.  
  3665.     * sighandlers.h, sighandlers.cc: New files for signal handling
  3666.     functions.
  3667.     * Makefile.in: Include them in the usual places.
  3668.     * octave.cc (interrupt_handler): Move to sighandlers.cc and rename
  3669.     to sigint_handler.
  3670.  
  3671.     * utils.cc (mark_for_deletion): New function.
  3672.     * octave.cc (cleanup_tmp_files): New function.
  3673.     * octave.cc (main): Register cleanup_tmp_files with atexit
  3674.     (on_exit for sun).
  3675.  
  3676.     * Stack.h: Template based stack class converted from libg++
  3677.     genclass files.
  3678.     * SLStack.h: Likewise.
  3679.     * (SLStack::pop): Avoid apparent bug in SLList::remove_front.
  3680.  
  3681. Tue Apr  6 10:01:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3682.  
  3683.     * lex.l (almost_match): New function.
  3684.     * (plot_style_token): New function.
  3685.  
  3686.     * t-buitlins.cc: Include procstream.h instead of procbuf.h.
  3687.     * (builtin_help): Simplyfy opening of process output stream.
  3688.     * (builtin_who): Likewise.
  3689.  
  3690. Mon Apr  5 13:48:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3691.  
  3692.     * tc-extras.cc (tree_constant_to_scalar): Move to tree-const.cc
  3693.     and make it a member function called to_scalar.
  3694.     * (tree_constant_to_vector): Likewise.
  3695.     * (tree_constant_to_matrix): Likewise.
  3696.  
  3697.     * procstream.h, procstream.cc: New files/classes that implement
  3698.     an ostream to a process.  Built on top of procbuf from libg++.
  3699.     * src/Makefile.in: Add them to the lists of files/objects.
  3700.  
  3701. Sat Apr  3 23:11:56 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3702.  
  3703.     * Lots of clean-up changes to parse.y, tree.cc, tree.h, and
  3704.     tree-base.h.  Use more specific types than just <tree *> for
  3705.     nonterminals.  This allows us to have fewer virtual functions in
  3706.     the base class.  Safer.  Cleaner.  Should have always been this
  3707.     way...
  3708.  
  3709. Fri Apr  2 10:04:32 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3710.  
  3711.     * parse.y, lex.l: Fix grammar to accept plot command very similar
  3712.     to the gnuplot plot command.
  3713.  
  3714. Wed Mar 31 13:11:56 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3715.  
  3716.     * tree.cc (eval_undefined_error): Until we can figure out how to
  3717.     clear names without causing problems later on, just remove the
  3718.     symbol name.
  3719.  
  3720.     * tree.h (tree_plot_command): New class.
  3721.     * (tree_plot_limits): Ditto.
  3722.     * (tree_plot_range): Ditto.
  3723.     * (tree_subplot_list): Ditto.
  3724.     * (tree_subplot_using): Ditto.
  3725.     * (tree_subplot_style): Ditto.
  3726.  
  3727.     * tree-base.h (command_type): Add plot_command to list.
  3728.  
  3729. Mon Mar 29 09:53:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3730.  
  3731.     * find_exec.c (ABSOLUTE_FILENAME_P): Also return true if the
  3732.     given filename begins with `.'.
  3733.  
  3734.     * DAE.cc, DAE.h, DAEFunc.h, tc-dassl.cc: Make sure all calls to
  3735.     dassl and the user-supplied functions have consistent argument
  3736.     lists.
  3737.  
  3738.     * octave.cc (raw_program_name): New global variable to hold the
  3739.     unprocessed argv[0].  This is to help dld find the absolute path
  3740.     to the executing program.
  3741.     * (initialize_globals): Pass in argc and argv from main.
  3742.     Initialize raw_prog_name.
  3743.  
  3744.     * builtins.cc (general_functions): Correct help message for dassl.
  3745.     * g-builtins.cc (dassl_usage): Likewise.
  3746.  
  3747.     * src/Makefile.in: Lots of changes to make things work with or
  3748.     without dld.
  3749.     * Makefile.in: Likewise.
  3750.     * configure.in: Likewise.
  3751.  
  3752.     * dld: New directory, containing our copy of the dld sources.
  3753.  
  3754.     * dynamic-ld.cc, dynamic-ld.h: New files to implement dynamic
  3755.     loading functions.
  3756.     * src/Makefile.in: Add them to the distribution, compile them if
  3757.     doing dynamic loading.
  3758.  
  3759. Sun Mar 28 11:03:15 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3760.  
  3761.     * configure.in: When looking for Fortran compilers, check for fc
  3762.     last to avoid confusion with some vendor's /bin/sh fc builtin.
  3763.     * Handle new argument --with-dld.
  3764.  
  3765.     * g-builtins.cc (builtin_warranty): Add 1993 to list of copyright
  3766.     dates.
  3767.  
  3768. Sat Mar 27 17:58:23 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3769.  
  3770.     * tc-extras.cc: Rename from tree-extras.cc.
  3771.     * tc-colloc.cc, tc-dassl.cc, tc-det.cc tc-eig.cc, tc-fft.cc,
  3772.     tc-fsolve.cc, tc-fsqp.cc, tc-ifft.cc, tc-inv.cc, tc-lsode.cc,
  3773.     tc-lu.cc, tc-npsol.cc, tc-qr.cc, tc-quad.cc, tc-rand.cc,
  3774.     tc-svd.cc: Split individual functions from tree-extras.cc.
  3775.  
  3776.     * g-builtins.cc (npsol_usage): Improve message.
  3777.     * (dassl_usage): Likewise.
  3778.     * (builtin_lsode): Likewise.
  3779.     * (builtin_fsolve): Likewise.
  3780.     * (builtin_quad): Likewise.
  3781.     * builtins.cc (general_functions): Improve corresponding messages.
  3782.  
  3783.     * libcruft/fftpack: New directory for fftpack functions.
  3784.     * libcrutf/fftpack/*.f: Add implicit double precision (a-h,o-z) at
  3785.     the top of every subroutine.
  3786.  
  3787.     * tree-extras.cc (fft): Allow propagation of empty matrices.
  3788.     * (ifft): Ditto.
  3789.  
  3790.     * Matrix.cc (Matrix::fourier): New function.
  3791.     * (Matrix::ifourier): Ditto.
  3792.     * mx-inlines (make_complex): New function.
  3793.     * tree-extras.cc (fft): Use Matrix::fourier instead of doing real
  3794.     to complex conversion here and calling ComplexMatrix::fourier.
  3795.     * (ifft): Likewise, for ifourier.
  3796.  
  3797. Sat Mar 27 17:56:59 1993  Fook Fah Yap (ffy@eng.cam.ac.uk)
  3798.  
  3799.     * Matrix.cc (ComplexMatrix::fourier): New function for fft.
  3800.     * (ComplexMatrix::ifourier): New function for inverse fft.
  3801.  
  3802.     * builtins.cc (general_functions): Add fft and ifft to the list of
  3803.     builtin functions.
  3804.  
  3805.     * g-builtins.cc (fft): New function.
  3806.     * (ifft): Ditto.
  3807.  
  3808.     * tree-extras.cc (fft): New function.
  3809.     * (ifft): Ditto.
  3810.  
  3811. Sat Mar 27 13:53:39 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3812.  
  3813.     * octave.cc (usage_string): New file scope constant.
  3814.     * (getopt_option_string): Ditto.
  3815.  
  3816.     * error.cc: Declare all arguments const since we don't change them.
  3817.  
  3818.     * utils.cc (print_str_or_null): Delete unused function.
  3819.     * utils.h: Delete declaration.
  3820.  
  3821.     * tc-assign.cc, tc-index.cc, tc-inlines.cc, tree.cc,
  3822.     tree-const.cc: More error message cleanups.
  3823.  
  3824.     * tree-const.cc (print_if_string): Don't write to cerr
  3825.     unconditionally.
  3826.  
  3827. Fri Mar 26 22:00:18 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3828.  
  3829.     * tree-extras.cc (min): Avoid function calls as arguments for MIN.
  3830.     * (column_min): Ditto.
  3831.     * (max): Likewise, for MAX.
  3832.     * (column_max): Ditto.
  3833.  
  3834.     * tree-const.h (NINT): Make it an inline function instead of a
  3835.     macro.
  3836.  
  3837.     * tree-extras.cc (fill_matrix (tree_constant&, double, char*)):
  3838.     Convert to scalar type for complex values too.
  3839.  
  3840.     * error.h (panic_impossible): New macro to be used in place of
  3841.     assert (0) calls.
  3842.     * All .cc files: Replace calls to assert (0) and abort () with
  3843.     panic_impossible ().
  3844.  
  3845.     * Many .cc files:: Replace many instances of `cerr << ...' with
  3846.     calls to gripe() functions.
  3847.  
  3848.     * gripes.h, gripes.cc: New functions for reporting common errors.
  3849.     * Makefile.in: Include them in the usual places.
  3850.  
  3851. Thu Mar 25 18:42:49 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3852.  
  3853.     * Many .cc files:: Replace many instances of `cerr << ...' with
  3854.     calls to error() functions.
  3855.  
  3856.     * error.h, error.cc: New functions for reporting errors in a
  3857.     consistent way.
  3858.     * Makefile.in: Include them in the usual places.
  3859.  
  3860. Wed Mar 17 17:29:44 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3861.  
  3862.     * symtab.cc (symbol_table::save): New functions.
  3863.     * t-buitlins.cc (builtin_save): Use new functions for saving
  3864.     symbols.  Handle case of saving all variables.
  3865.  
  3866.     * g-builtins.cc (builtin_pause): If one argument is given, pause
  3867.     for that many seconds before continuing.  Otherwise, wait for user
  3868.     input.
  3869.  
  3870.     * symtab.cc (clear): Actually delete undefined symbol_records and
  3871.     remove their names from the list.
  3872.  
  3873.     * lex.l (lookup_identifier): New function.  Avoid putting global
  3874.     names in the local symbol table.
  3875.     * ({IDENT}): Use it
  3876.     * ({IDENT}/{S}*=): Ditto.
  3877.  
  3878.     * tc-index.cc (do_scalar_index (tree_constant*, int)): Make
  3879.     indexing like a([1,1,1,1]) work for scalars.  GAG.
  3880.  
  3881. Tue Mar 16 20:08:23 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3882.  
  3883.     * t-buitlins.cc (builtin_cd): Call tilde_expand (from readline) on
  3884.     the argument.
  3885.  
  3886.     * lex.l (discard_until): Delete unused function.
  3887.     * When reading numbers, abort if scanf fails to read a number that
  3888.     we think it should.
  3889.     * (IDENT): New macro to match identifiers.
  3890.     * ([_a-zA-Z][_a-zA-Z0-9]*): Use the / operator for trailing
  3891.     context and split into two cases instead of trying to do the
  3892.     lookahead ourselves.
  3893.  
  3894.         * lex.l (do_comma_insert_check): Return the value yyleng had
  3895.         before yyinput() is called.
  3896.         * (DO_COMMA_INSERT_CHECK): New macro.  This avoids the use of
  3897.         unput() in do_comma_insert_check() since there seems to be a bug
  3898.         in flex when calling unput() for '\n'.
  3899.  
  3900.     Note that this change is necessary if we want to use yyless()
  3901.     since we cant call yyless() from outside of yylex(), because
  3902.     Flex's yyless() is a macro that uses some variables local to
  3903.     yylex().
  3904.  
  3905. Mon Mar 15 11:03:43 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3906.  
  3907.     * tree.cc (tree_matrix::eval): Undo part of previous change to
  3908.     make a = [1,2;3,4]; [a,a;a,a] work again.
  3909.  
  3910.     * parse.y (input): Don't abort for simple_list followed by EOF.
  3911.  
  3912. Sun Mar 14 14:38:56 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3913.  
  3914.     * RowVector.cc (RowVector::operator << ()): Insert a space between
  3915.     each element.
  3916.     * (ComplexRowVector::operator << ()): Ditto.
  3917.  
  3918.     * g-buitlins.cc (plot): Don't declare plot_prog or plot_term as
  3919.     static, and don't delete them.
  3920.  
  3921.     * Matrix.h (all checkelem functions): Don't check for range errors
  3922.     if NO_RANGE_CHECK is defined.
  3923.  
  3924. Sat Mar 13 10:18:51 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3925.  
  3926.     * Matrix.cc (ComplexMatrix::prod): Make it work.
  3927.  
  3928. Thu Mar 11 00:08:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3929.  
  3930.     * Matrix.h (ellum): Delete function.
  3931.     * Declare and define new const elem, checkelem, and operator()
  3932.     functions.
  3933.  
  3934.     * ColVector.cc, DiagMatrix.cc, RowVector.cc, Matrix.cc, ODE.cc,
  3935.     LinConst.cc, FEGrid.cc, DAE.cc, Bounds.cc, FEGrid.h:
  3936.     Change all callers.
  3937.     * tree-const.cc, tree-extras.cc, xdiv.cc, xpow.cc: Ditto.
  3938.  
  3939.     * tree.cc (tree_matrix::eval): Improve row and column mismatch
  3940.     checking -- [[1,2];[3,4]] works now, and [1,2;3,4,[5,6]] is
  3941.     rejected.
  3942.     * Reformat error messages to include `error:' prefix.
  3943.  
  3944. Wed Mar 10 14:02:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3945.  
  3946.     * lex.l (do_comma_insert): New global variable.
  3947.     * (reset_parser): Reset it.
  3948.     * lex.l (do_comma_insert_check): New function.  Call it wherever a
  3949.     token can be directly followed by '['.
  3950.     * (\[{S}*): Check the value of do_comma_insert.
  3951.  
  3952.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only look for names in the
  3953.     current symbol table.
  3954.  
  3955.     * parse.y (word_list_cmd): Special case to disallow use of clear
  3956.     inside a fuction body.
  3957.  
  3958.     * parse.y (CLEAR): New %token.
  3959.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Return it if token is "clear".
  3960.  
  3961.     * t-builtins.cc (builtin_clear): Allow global symbols to be
  3962.     cleared.
  3963.  
  3964.     * symtab.cc (symbol_table::undefine): Clarify comment.
  3965.     * (symbol_table::clear): Don't actually remove names from the
  3966.     table, just force them to be undefined.
  3967.  
  3968.     * tree.h (tree_function): Delete unused data member `id'.
  3969.     * tree.cc (tree_function constructors): Don't initialize id.
  3970.  
  3971. Mon Mar  8 15:50:28 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3972.  
  3973.     * Version 0.70 released.
  3974.  
  3975.     * src/Makefile.in: Update dependencies.
  3976.  
  3977.     * tree.h: Include stdio.h, for FILE.
  3978.  
  3979.     * gnuplot-build: For now, always define -DNOGAMMA.
  3980.     * configure.in: Don't check for gamma().
  3981.  
  3982.     * libcruft/Makerules.in: Don't use lib.a(obj.o) style dependencies
  3983.     because it's too slow for large archives.
  3984.     * liboctave/Makefile.in: Ditto.
  3985.  
  3986. Sun Mar  7 16:33:39 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  3987.  
  3988.     * octave.cc (parse_and_execute): Save and restore current column
  3989.     number.  Set input line and column number to zero.
  3990.     * tree.cc (parse_m_file): Likewise.
  3991.  
  3992.     * tree.cc (tree_identifier::parse_m_file (FILE*, int*)): New
  3993.     function.  If a parse error occurs, ensure that the symbol is
  3994.     cleared from the global symbol table.
  3995.     * (tree_identifier::parse_m_file (char*, int): Use it.
  3996.  
  3997.     * tree.cc (tree_identifier::do_lookup): New function.
  3998.     * (tree_identifier::eval): Use it.
  3999.  
  4000.     * utils.cc (decode_prompt_string): Really do use value of PWD.
  4001.  
  4002.     * user_prefs.cc (sv_loadpath, sv_ps1, sv_ps2, sv_pwd,
  4003.     sv_gnuplot_binary, sv_graphics_terminal): New functions.
  4004.     * (sv_graphics_terminal): Warn if terminal isn't valid, but set it
  4005.     anyway (it's too late to do anything by the time the function is
  4006.     called).
  4007.     * In functions that use these variables:  Use the value from the
  4008.     user_pref structure instead of doing a symbol table lookup.
  4009.  
  4010.     * builtins.cc (builtin_string_variables): Add functions to call
  4011.     for LOADPATH, PS1, PS2, PWD, gnuplot_binary, and graphics_terminal.
  4012.  
  4013.     * builtins.cc (PS2): New builtin_string_variables.  Set default
  4014.     value to "> ".
  4015.     * input.cc (octave_gets): Use it instead of no prompt for
  4016.     continued input.
  4017.  
  4018.     * parse.y (yyerror): Use line, column, file name, and text of
  4019.     current input line to print better parse error messages.
  4020.  
  4021.     * lex.l (NEW_MATRIX): New exclusive start state.  Need this to be
  4022.     able to match \[{SN}* _and_ get secondary prompting right.
  4023.  
  4024.     * input.cc (octave_read): Keep track of current input line.
  4025.     * tree.cc (parse_m_file): Save and restore current line number.
  4026.  
  4027.     * lex.l (all patterns): Keep track of current input column.
  4028.     * (fixup_column_count): New function to deal with patterns that
  4029.     match more than one line.
  4030.  
  4031.     * input.h, input.cc (current_input_line): Global pointer to
  4032.     the text of the current input line.
  4033.  
  4034.     * parse.y, parse.h (input_line_number, current_input_column): New
  4035.     global variables.
  4036.  
  4037.     * Almost all source files: Finish (for now, at least) the
  4038.     reorganization we started for global variables.
  4039.  
  4040. Wed Mar  3 14:49:59 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4041.  
  4042.     * tc-assign.cc, tc-index.cc, tc-inlines.cc: New files, split out
  4043.     from tree-const.cc.
  4044.  
  4045.     * Almost all source files: reorganize so that all global data is
  4046.     declared in some include file or another.  It probably wouldn't
  4047.     hurt to do some more reorganizing to try to eliminate the amount
  4048.     of global information...
  4049.  
  4050. Tue Mar  2 20:49:35 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4051.  
  4052.     * variables.h, variables.cc: New files for handling things that
  4053.     need symbol table information.  Lots of files changed to include
  4054.     variables.h, which now includes the extern declarations for the
  4055.     symbol tables.  The declarations of the symbol tables are now in
  4056.     variables.cc, but they are still initialized in octave.cc.
  4057.  
  4058. Mon Mar  1 11:35:03 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4059.  
  4060.     * builtins.h (builtin_string_variables): New field, sv_function,
  4061.     holds a pointer to the function to call when a variable changes.
  4062.     * builtins.cc (string_variables): Initialize sv_function field.
  4063.     * (install_builtins): While installing builtin string variables,
  4064.     stash sv_function and, if it isn't NULL, call it to initialize
  4065.     global variable user_pref.
  4066.  
  4067.     * symtab.h (symbol_record): New field, sv_fcn, holds a pointer to
  4068.     the function to call when a variable changes.
  4069.     * symtab.cc (symbol_record::define): Call sv_fcn if it isn't NULL.
  4070.     * symtab.cc (symbol_record::set_sv_function): New function.
  4071.  
  4072.     * utils.cc, parse.y, tree.cc, tree-extras.cc, tree-const.cc,
  4073.     idx-vector.cc, builtins.cc, symtab.cc: Instead of calling
  4074.     functions like do_fortran_indexing(), get the user's preference
  4075.     from the global struct user_pref.
  4076.  
  4077.     * utils.h, utils.cc: Delete all functions like do_fortran_indexing()
  4078.     that lookup user variables to find integer values.
  4079.     * user-prefs.h, user-prefs.cc: Move them here, but instead of
  4080.     returning values, set elements of the new global struct user_pref.
  4081.  
  4082.     * user-prefs.h, user-prefs.cc: New files for handling global
  4083.     variables for user preferences.
  4084.     * Makefile.in: Add them to the SOURCES and INCLUDES macros.
  4085.  
  4086.     * bsd-math/{acosh,asinh,atanh,log1p}.c: Declare all external
  4087.     functions used in each file since they might not be in math.h.
  4088.     * bsd-math/{scalb,copysign,logb,finite,drem,sqrt}.c: New files
  4089.     from BSD's support.c.  Only using scalb, copysign, logb, and
  4090.     finite for now.
  4091.  
  4092.     * configure.in: Move tests for f77 closer to the top.
  4093.     * Allow configuration to proceed even if we can't find a Fortran
  4094.     compiler or f2c.
  4095.     * Use `here' documents instead of multiple echos for multi-line
  4096.     messages.
  4097.     * Imrpoved checking for missing math functions.
  4098.  
  4099. Sun Feb 28 17:45:53 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4100.  
  4101.     * test/Makefile.in (check): Try to avoid errors from cp.
  4102.  
  4103.     * mappers.cc (xfinite): Put test for HAVE_FINITE first.
  4104.  
  4105.     * libcruft/Makerules.in (LIBCRUFT_DEPEND): Use `=' in assignment
  4106.     instead of `:='.
  4107.  
  4108.     * liboctave/Makefile.in: Make an explicit list of sources instead
  4109.     of using $(wildcard).
  4110.  
  4111. Thu Feb 25 20:18:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4112.  
  4113.     * bsd-math/copysign.c: New file.  HP's don't have this?
  4114.     * configure.in (LIBOBJS): Also check for copysign, log1p, and
  4115.     log__L.  For each missing user-level function, add -DFOO_MISSING=1
  4116.     to DEFS.
  4117.     * src/missing-math.h: For each function we declare, check the
  4118.     corresponding XXX_MISSING macro.  Add declarations for copysign
  4119.     and log1p.
  4120.  
  4121. Wed Feb 24 20:39:32 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4122.  
  4123.     * lex.l (<MATRIX>{SN}*\]/{S}*==): Change scanning pattern to
  4124.     <MATRIX>{SN}*\]{S}*/== in order to keep flex from generating any
  4125.     backtracking code.
  4126.     * (<MATRIX>{SN}*\]/{S}*=): Likewise.
  4127.  
  4128. Tue Feb 23 02:45:00 1993  John W. Eaton  (jwe@ward.che.utexas.edu)
  4129.  
  4130.     * Version 0.69 released.
  4131.  
  4132.     * mappers.cc [_AIX && __GNUG__] : Provide a definition for
  4133.     finite(), since whatever version we get from the system when using
  4134.     g++ doesn't work (note that it does seem to work with gcc, xlc,
  4135.     and xlC).
  4136.  
  4137.     * bugs.texi: Note that the math.h file from libg++ declares
  4138.     finite() incorrectly for some systems.
  4139.  
  4140. Mon Feb 22 02:04:16 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4141.  
  4142.     * configure.in: Look for runtest, but only believe that it exists
  4143.     if we can also find expect.
  4144.     * test/Makefile.in (check): Run tests in build directory, not
  4145.     source directory.
  4146.  
  4147.     * tree.cc (reading_script_file): New global variable.
  4148.     * (parse_m_file): Use it, and properly save and restore state so
  4149.     that nested script files will work.
  4150.  
  4151.     * octave.cc (parse_and_execute): Properly save and restore state
  4152.     so that nested script files will work.
  4153.     * Don't close input file here.
  4154.  
  4155.     * input.cc (get_input_from (FILE*)): Don't declare mf_instream
  4156.     static.  Set mf_instream if reading and M-file or a script file.
  4157.  
  4158.     * parse.y: Minor changes to accomodate new lexer.
  4159.  
  4160.     * lex.l: Major overhaul in an attempt to do better string
  4161.     handling.  Looks much simpler and even seems to work.
  4162.     * (do_string_escapes): New function.
  4163.  
  4164. Sat Feb 20 00:40:32 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4165.  
  4166.     * g-builtins.cc (builtin_npsol): If npsol is missing, return empty
  4167.     matrices for x and phi, and -1 for inform.
  4168.  
  4169.     * num2str.m: Use %g, not %f.
  4170.  
  4171.     * tree.cc (parse_m_file): Save and restor curr_sym_tab, because
  4172.     yyparse may mess with it if it encounters a function definition.
  4173.     * tree-extras.cc (eval_string): Ditto
  4174.     * octave.cc (parse_and_execute): Ditto
  4175.  
  4176.     * Makefile.in (DISTDIRS): Add bsd-math to list.
  4177.  
  4178.     * src/Makefile.in (LIBOBJS): New macro, value set by configure.
  4179.     (vpath): Add @srcdir@/../bsd-math for LIBOBJS.
  4180.     (octave): Add $(LIBOBJS) to deps.
  4181.     * gnuplot-build/Makefile.in: Likewise, for notgnuplot.
  4182.  
  4183.     * configure.in: Use AC_REPLACE_FUNCS to Check for acosh, asinh,
  4184.     atanh, and gamma.
  4185.  
  4186.     * bsd-math: New directory for functions from the BSD math library
  4187.     to use as replacements for missing functions.
  4188.  
  4189.     * parse.y (semi_comma, comma_semi): New rules.
  4190.     (simple_list, simple_list1): Use them to allow empty statements.
  4191.     (list, list1): Likewise.  This allows empty commands as long as
  4192.     the empty command doesn't contain any newlines.
  4193.  
  4194.     * parse.y (simple_assign): New rule, allows things like a = b = c.
  4195.     (multi_assign): Extracted from assignment.
  4196.     (assignment): Split into simple_assign and multi_assign.
  4197.     (expression): Allow '(' simple_assign ')' to be an expression.
  4198.  
  4199.     * tree-extras.cc (eval_string): Return result of last expression
  4200.     evaluated, to make things like `eval ('1+1;')*2' work.
  4201.  
  4202. Fri Feb 19 19:45:21 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4203.  
  4204.     * g-builtins.cc (builtin_pwd): Use getcwd, which is defined in
  4205.     unistd.h, instead of getwd, which seems to be a BSDISM.
  4206.     * utils.cc (decode_prompt_string): Ditto.
  4207.     * (get_working_directory): Ditto.
  4208.  
  4209.     * arith_ops.cc (DIVIDE_BY_ZERO_ERROR):  Don't rely on
  4210.     HAVE_IEEE_MATH, use HAVE_ISINF, HAVE_FINITE, and HAVE_ISNAN
  4211.     instead.
  4212.     * configure.in: Don't define HAVE_IEEE_MATH.
  4213.  
  4214.     * tree-extras.cc: Include stdio.h for FILE.
  4215.  
  4216. Thu Feb 18 10:17:38 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4217.  
  4218.     * tree.cc (gobble_leading_white_space): New function.
  4219.     * (is_function_file): New function.
  4220.  
  4221.     * (parse_m_file): Handle case of .m file being just a file of
  4222.     commands to execute.
  4223.     * Add optional argument to specify whether to execute a script
  4224.     file.
  4225.     * Return whether a script file was executed.
  4226.     * (tree.cc, tree-extras.cc): Change callers.
  4227.  
  4228.     * octave.cc (parse_and_execute): new functions.
  4229.     * (execute_startup_files): Use them.
  4230.  
  4231.     * lex.l (<COMMENT>\n): Don't gobble new line.
  4232.  
  4233.     * num2str.m: Don't print '\n'.
  4234.  
  4235. Wed Feb 17 21:59:55 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4236.  
  4237.     * mappers.cc: Simplify and correct finite, isinf, isnan functions.
  4238.     * test/octave/t7.oct: New test for finite, isinf, and isnan
  4239.     functions.
  4240.  
  4241.     * configure.in: Define HAVE_IEEE_MATH if isnan and either finite
  4242.     or isinf is available.
  4243.  
  4244.     * builtins.cc (mapper_functions): Check HAVE_ISNAN instead of
  4245.     HAVE_IEEE_MATH to determine whether or not to define isnan().
  4246.  
  4247.     * mappers.cc: Don't check for HAVE_IEEE_MATH.  Just check for
  4248.     individual functions directly.
  4249.  
  4250.     * g-builtins.cc (npsol_usage): Correct usage message.
  4251.  
  4252.     * g-builtins.cc: Don't include unistd.h unless HAVE_UNISTD_H is
  4253.     defined.
  4254.     * t-builtins.cc: Ditto.
  4255.     * utils.cc: Ditto.
  4256.  
  4257. Tue Feb 16 00:35:44 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4258.  
  4259.     * Version 0.68 released.
  4260.  
  4261.     * tree.cc (parse_m_file): Set reading_m_file before calling
  4262.     get_input_from_file.
  4263.     * Don't mess with current_infile.
  4264.  
  4265.     * input.cc (get_input_from_file): Set mf_instream if we are
  4266.     reading an M-file.  Otherwise, set rl_instream, (even if we aren't
  4267.     really using readline -- this is just the `normal' input stream).
  4268.     * Don't use current_infile.
  4269.     * (octave_read): If not interactive, check reading_m_file to
  4270.     determine where to look for input.
  4271.  
  4272.     * octave.cc (main): Don't use readline if we aren't interactive.
  4273.  
  4274.     * libcruft/misc/Makefile.in (local-dist): Make sure we don't
  4275.     distribute a bogus d1mach.f.
  4276.     (dist): Ditto.
  4277.  
  4278.     * tree-extras.cc (convert_to_ans_assign): New global variable.
  4279.     (eval_string): Conditionally turn off assignment to `ans', for
  4280.     get_user_input ().
  4281.     * parse.y (ans_expression): Use it.
  4282.     * lex.l (reset_parser): Reset it.
  4283.  
  4284.     * g-builtins.cc (builtin_input): New function.
  4285.     * builtins.cc (general_fucntions): Add it to the list.
  4286.     * tree-extras.cc (get_user_input): Do most of the real work.
  4287.  
  4288. Mon Feb 15 01:14:40 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4289.  
  4290.     * t-builtins.cc (load_variable): New function.
  4291.     (builtin_load): Use it.
  4292.  
  4293.     * Makefile.in (SUBDIRS): Add the test directory.
  4294.     (check): Don't depend on all.
  4295.  
  4296. Sat Feb 13 05:17:53 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4297.  
  4298.     * tree-extras.cc (determinant, lu, matrix_exp, matrix_log,
  4299.     matrix_sqrt): Handle empty matrix argument.
  4300.  
  4301.     * Matrix.h: Add constructors of the form Matrix (double a) and
  4302.     ColumnVector (double a) to make it even easier to form single
  4303.     element vectors.
  4304.  
  4305. Fri Feb 12 03:27:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4306.  
  4307.     * octave.cc (main): Add -v option that will print the version
  4308.     string and quit with a successful exit status.
  4309.  
  4310. Thu Feb 11 00:46:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4311.  
  4312.     * tree-extras.cc (eig): If given an empty argument, return enough
  4313.     empty matrices to fill all possible LHS variables.
  4314.     (qr): Likewise.
  4315.     (svd): Likewise.
  4316.  
  4317.     * tree-const.cc (fortran_style_matrix_assignment): Do the right
  4318.     thing if LHS is an empty matrix.
  4319.  
  4320.     * tree-extras.cc (qr): Handle empty matrix argument.
  4321.  
  4322.     * Matrix-ext.cc (QR): Make it work (really!).
  4323.     (ComplexQR): Ditto.
  4324.  
  4325. Wed Feb 10 00:56:31 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4326.  
  4327.     * xdiv.cc (xdiv (ComplexMatrix& a, ComplexMatrix& b)): Do
  4328.     btmp.solve (atmp), like the other three xdiv's.  Argh!
  4329.  
  4330.     * tree-extras.cc (eval_string): New function.  Mostly works but
  4331.     could be very fragile.  We desperately need some sort of
  4332.     `unwind-protect' scheme to avoid disaster when octave is
  4333.     interrupted.
  4334.  
  4335.     * g-builtins.cc (builtin_eval): Instead of just aborting, call
  4336.     eval_string if given one argument.
  4337.  
  4338.     * input.cc (octave_read): If get_input_from_eval_string is
  4339.     nonzero, stuff current_eval_string into buf for flex to read.
  4340.  
  4341.     * tree-extras.cc (char *current_eval_string): New global variable
  4342.     for eval().
  4343.     * (int get_input_from_eval_string): Ditto.
  4344.  
  4345.     * Update copyright notices to include 1993 (now that it's
  4346.     February...).
  4347.  
  4348. Tue Feb  9 14:35:08 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4349.  
  4350.     * Version 0.67 released.
  4351.  
  4352.     * tree-extras.cc, tree-const.cc: Check the value of the variable
  4353.     `propagate_empty_matrices' to decide what to do about empty
  4354.     matrices in binary and unary operations and some function calls.
  4355.  
  4356.     * builtins.cc (builtin_string_variables): New global variable
  4357.     `propagate_empty_matrices' with initial value `warn'.
  4358.     * utils.cc (propagate_empty_matrices): New function.
  4359.  
  4360. Mon Feb  8 19:46:51 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4361.  
  4362.     * tree-const.cc: Finish changes required to make zero-one indexing
  4363.     work for indexing and assignment.
  4364.  
  4365. Sat Feb  6 15:54:10 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4366.  
  4367.     * builtins.cc (builtin_string_variables): New global variable
  4368.     `prefer_zero_one_indexing' with initial value `false'.
  4369.     * utils.c (prefer_zero_one_indexing): New function.
  4370.  
  4371. Fri Feb  5 13:03:14 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4372.  
  4373.     * idx-vector.h, idx-vector.cc: Major overhaul to help with
  4374.     zero-one style indexing.
  4375.     * tree-const.cc (matrix_to_index_vector): Delete functions.
  4376.     * (functions that use idx_vectors): Update for new idx-vector
  4377.     stuff.
  4378.  
  4379.     * arith-ops.cc: Don't declare matrix_to_fortran_indices.
  4380.  
  4381.     * tree-const.cc (matrix_to_index_vector): Add new argument,
  4382.     allow_neg_one, with default value of false.
  4383.     * (matrix_to_fortran_indices): Add new argument, allow_zero, with
  4384.     default value of false.
  4385.  
  4386.     * g-builtins.cc (builtin_find): New function.
  4387.     * builtins.cc (general_fucntions): Add it to the list.
  4388.     * tree-extras.cc (find_nonzero_elem_idx (tree_constant)): Do
  4389.     most of the real work.
  4390.     * tree-extras.cc (find_nonzero_elem_idx (const Matrix&): Do the rest.
  4391.     * (find_nonzero_elem_idx (const ComplexMatrix&): Ditto, for complex.
  4392.  
  4393. Wed Feb  3 00:54:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4394.  
  4395.     * configure.in (DEFAULT_DOT_O_FROM_DOT_F): If using f2c, quote
  4396.     with single quotes instead of double quotes to avoid problems on
  4397.     systems (like the NeXT) that strip \'s from double quoted strings.
  4398.  
  4399.     * utils.c (empty_list_elements_ok): New function.
  4400.     * tree.cc (matrix_list::eval): Use it.
  4401.     * builtins.cc (builtin_string_variables): New global variable
  4402.     `empty_list_elements_ok' with initial value `warn'.
  4403.  
  4404.     * utils.cc (check_str_pref): New function.
  4405.     * (resize_on_range_error, prefer_column_vectors,
  4406.     warn_comma_in_global_decl, do_fortran_indexing,
  4407.     implicit_str_to_num_ok, treat_neg_dim_as_zero,
  4408.     ok_to_lose_imaginary_part, return_last_computed_value,
  4409.     silent_functions, print_answer_id_name): Use it instead of
  4410.     needlessly duplicating code.
  4411.  
  4412. Tue Feb  2 16:58:02 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4413.  
  4414.     * lex.l ("'"): If it looks like we're defining a matrix, don't set
  4415.     the start condition to be MAYBE_QSTRING.  GAK.  There has to be a
  4416.     better way...
  4417.  
  4418.     * lex.l: Increment and decrement promptflag instead of just
  4419.     setting its value.  This should help get prompting right for
  4420.     things like if [1,2;3,4] NL ...
  4421.     * input.cc (octave_gets): In order to issue a prompt, Require
  4422.     propmtflag to be greater than zero, not just nonzero.
  4423.  
  4424.     * tree.cc (tree_if_command): Allow matrices as the expression to
  4425.     test.  Unlike Matlab, a complex value is false only if both the
  4426.     real and imaginary parts are 0.
  4427.     * tree.cc (tree_while_command): Ditto.
  4428.  
  4429.     * tree.cc (tree_for_command): Allow matrices and complex values
  4430.     in the expression.  For matrices, assign each column in turn to
  4431.     the dummy variable.
  4432.  
  4433.     * Matrix-ext.cc (qr): Make it work.  The LAPACK book gags me again!
  4434.  
  4435.     * xdiv.cc: When computing right division with complex matrices,
  4436.     use hermitian() instead of transpose().
  4437.  
  4438.     * lex.l: Return IMAG_NUM for a numeric constant followed by
  4439.     [iIjJ], but don't allow spaces between the numeric constant and
  4440.     the letter (it causes problems inside `[]' where spaces matter...
  4441.  
  4442. Mon Feb  1 17:15:19 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4443.  
  4444.     * tree_extras.cc (rand_internal): Make the random number generator
  4445.     give us a different sequence every time we start octave unless we
  4446.     specifically set the seed.
  4447.  
  4448. Thu Jan 28 00:10:24 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4449.  
  4450.     * Version 0.66 released.
  4451.  
  4452.     * configure.in: Define PLOTLIB in addition to adding -DUNIXPLOT to
  4453.     DEFS if we find -lplot, and call AC_SUBST for PLOTLIB.
  4454.  
  4455.     * QP.cc: Define constructors here.
  4456.     * QP.h: Not here.
  4457.  
  4458.     * QP.cc (All constructors that are given H): Force H to be
  4459.     symmetric.
  4460.     * (make_h_symmetric): New function.
  4461.  
  4462. Wed Jan 27 01:35:53 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4463.  
  4464.     * arith-ops.cc (do_unary_op): Do the right thing for complex
  4465.     logical not operator.
  4466.     * Matrix.cc (ComplexMatrix::operator ! (void)): Return Matrix
  4467.     instead of ComplexMatrix.
  4468.     * mx-inlines.cc (not (Complex *d, int len)): For each element of
  4469.     d, return (d[i] == 0.0), not (d[i] != 0.0), and return it as a
  4470.     pointer to double, not Complex.
  4471.  
  4472.     * configure.in: Check for libcruft/qpsol/qpsol.f.
  4473.     * Create Makefile in libcruft/qpsol.
  4474.  
  4475.     * libcruft/qpsol: New directory.  Copy QPSOL sources here.
  4476.     * libcruft/qpsol/Makefile.in: New file.
  4477.     * libcruft/qpsol/README.MISSING: New file.
  4478.     * libcuft/Makefile.in: Include qpsol in list of directories to
  4479.     make.
  4480.  
  4481.     * QPSOL.h, QPSOL.cc: New file for solving QPs with Gill and
  4482.     Murray's QPSOL.
  4483.  
  4484.     * QLD.h, QLD.cc: Delete all minimize functions except
  4485.     Vector minimize (double&, int&).
  4486.  
  4487.     * QP.h: Declare minimize functions virtual.
  4488.     * (Vector minimize (double&, int&): Declare as a pure virtual
  4489.     function.
  4490.  
  4491.     * QP.cc: New file to implement generic minimize functions.
  4492.  
  4493. Tue Jan 26 00:27:13 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4494.  
  4495.     * lex.l: Recognize numbers of the form .{digits}E{digits} and
  4496.     .{digits}E[+-]{digits}
  4497.  
  4498.     * lex.l: Recognize .\ as ELEFTDIV.
  4499.     * parse.y: Handle ELEFTDIV.
  4500.     * tree.cc (tree_binary_expression::eval): Handle el_leftdiv.
  4501.  
  4502.     * arith-ops.cc (do_binary_op): Handle element by element left
  4503.     division.  Fix some errors in element by element right division.
  4504.  
  4505.     * tree-base.h (enum expression_type): Add el_leftdiv.
  4506.  
  4507.     * Version 0.65 released.
  4508.  
  4509.     * tree-const.cc (tree_constant_rep::eval (tree_constant *args, int
  4510.     nargin, int nargout, int print)): Fix another brain-o in making
  4511.     recursive call.s
  4512.  
  4513.     * src/Makefile.in: Complete changes for CXX instead of C++ make
  4514.     variables.
  4515.  
  4516.     * tree-const.cc: For assignment and indexing functions, treat
  4517.     complex scalars and matrices in the same branch of the switch as
  4518.     real scalars and matrices -- the double_value() and matrix_value()
  4519.     functions take care of checking to see if it's ok to lose the
  4520.     imaginary part.
  4521.  
  4522.     * tree-const.h (tree_constant_rep::is_numeric_type): New function.
  4523.     * tree-const.h (tree_constant::make_numeric functions): Use it.
  4524.  
  4525.     * tree-const.h (tree_constant::make_numeric functions): Return
  4526.     *this for complex constants too.
  4527.  
  4528. Mon Jan 25 18:31:06 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4529.  
  4530.     * tree-extras.cc (Matrix min (Matrix&, Matrix&)): Loop over nc and
  4531.     nr, not nr and nr.
  4532.     * (Matrix max (Matrix&, Matrix&)): Ditto.
  4533.  
  4534.     * tree-const.cc (tree_constant_rep::mapper): Fix brain-o in making
  4535.     recursive call.
  4536.  
  4537. Sun Jan 24 20:05:39 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4538.  
  4539.     * configure.in: If using f2c, explicitly check for -lf2c.  If it's
  4540.     not found, look for -lF77 and -lI77.  If a suitable combination
  4541.     isn't found, print a warning.
  4542.  
  4543.     * src/Makefile.in liboctave/Makefile.in: GNU Make 3.63 uses CXX
  4544.     and CXXFLAGS instead of C++ and C++FLAGS.  Fix things so that 3.63
  4545.     will work without sacrificing compatibility with earlier versions.
  4546.  
  4547.     * tree-const.cc (tree_constant_rep::diag (tree_constant&)): Fix
  4548.     brain-o in forcing argument to be numeric.
  4549.  
  4550. Fri Jan 22 15:03:42 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4551.  
  4552.     * octave.cc (interrupt_handler): Declare to take int argument.
  4553.  
  4554.     * NPSOL.cc (npsol_objfun): Delete leftover debugging message.
  4555.  
  4556. Thu Jan 21 14:28:24 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4557.  
  4558.     * configure.in: Check version of gcc and issue a warning if it
  4559.     looks like 1.something.
  4560.     * Check for g++.  Issue a warning if it is missing or if it is
  4561.     there but it looks like verion 1.something.
  4562.  
  4563.     * flibs.sh, f2c-compat.sh: Change file permission to 755 to avoid
  4564.     problems if the uid of the installer is different from the uid of
  4565.     the owner of the files.
  4566.  
  4567. Wed Jan 20 04:18:49 1993  John W. Eaton  (jwe@june.che.utexas.edu)
  4568.  
  4569.     * libcruft/Makerules.in (@DOT_O_DOT_F_C[1234]@): Patterns deleted.
  4570.     * configure.in: Do multiple line sed substitutions the right way.
  4571.  
  4572. Tue Jan 19 14:50:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4573.  
  4574.     * configure.in: Use new AC_WITH to accept --with-f2c instead of
  4575.     --use-f2c.
  4576.     * Use new AC_HAVE_LIBRARY to find -lplot.
  4577.  
  4578.     * flibs.sh: Actually avoid including duplicate -lflags.
  4579.     * Use test, not `['.
  4580.  
  4581. Sun Jan 17 16:57:02 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4582.  
  4583.     * Matrix.h: Declare operator+ and operator- functions for vectors.
  4584.     * RowVector.cc: Define half of them.
  4585.     * ColVector.cc: Define the other half.
  4586.  
  4587. Fri Jan 15 03:00:46 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4588.  
  4589.     * src/Makefile.in (install): Include version number in name of
  4590.     installed binary and make a link to $(bindir)/octave.
  4591.  
  4592.     * Version 0.64 released.
  4593.  
  4594.     * t-builtins.cc (builtin_clear): Don't allow the user to clear
  4595.     global symbols by name.  If he tries, issue a warning.
  4596.  
  4597.     * tree.cc (tree_identifier::eval_undefined_error):  Don't clear
  4598.     undefined symbols from the global or local (function) symbol
  4599.     tables.
  4600.  
  4601. Thu Jan 14 02:10:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4602.  
  4603.     * tree.cc (tree_function::eval): Save old and set current symbol
  4604.     table context, so eval_undefined_error() doesn't wipe out top
  4605.     level symbols.
  4606.  
  4607.     * Version 0.63 released.
  4608.  
  4609. Wed Jan 13 13:16:56 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4610.  
  4611.     * Nearly every .h and .cc file: Add interface and implementation
  4612.     #pragmas for G++ in hopes of making smaller objects with -g.
  4613.  
  4614.     * tree-const: Properly handle assignments like A(:) = RHS when
  4615.     do_fortran_indexing is true.
  4616.  
  4617.     * g-builtins.cc (builtin_eig): Correct usage message.
  4618.  
  4619.     * tree-const.cc (tree_constant_rep (ComplexDiagMatrix&)): Create
  4620.     and initialize a new complex_scalar.  Don't just try to copy the
  4621.     value...
  4622.  
  4623.     * Matrix.h: Declare new fill functions for diagonal matrices.
  4624.     * DiagMatrix.cc: Define them.
  4625.  
  4626.     * Matrix.h: Declare map functions for row and column vectors.
  4627.     * RowVector.cc: Define them.
  4628.     * ColumnVector.cc: Likewise.
  4629.  
  4630.     * CollocWt.h: Declare data protected instead of private.
  4631.     * CollocWt.cc (CollocWt::CollocWt (const CollocWt&)): Fix brain-o.
  4632.  
  4633.     * lex.l: Return IMAG_NUM for a numeric constant followed by
  4634.     [ \t]*[iIjJ].
  4635.  
  4636.     * parse.y (IMAG_NUM): New token.
  4637.     * (fact): Recogize IMAG_NUM and convert its value to a complex
  4638.     constant.
  4639.  
  4640.     * Version 0.62 released.
  4641.  
  4642.     * Makefile.in (local-dist): Include -local in tar.Z filename.
  4643.     * (split-local-dist): New target.
  4644.     * (dist): Don't depend on newversion.
  4645.     * (local-dist): Ditto.
  4646.  
  4647.     * tree-extras.cc (npsol): If the first argument isn't a vector,
  4648.     print an error message and return.
  4649.  
  4650.     * tree.cc (tree_matrix::eval): Always set prev_row_total and
  4651.     prev_column_total when starting out.
  4652.  
  4653.     * octave.cc (main): Don't try to detect signal handler failures,
  4654.     but do call signal() to set up the interrupt handler.
  4655.  
  4656. Tue Jan 12 19:59:33 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4657.  
  4658.     * tree-extras.cc (npsol): Fix brain-o in checking length of bounds
  4659.     vectors.
  4660.  
  4661. Mon Jan 11 20:32:24 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4662.  
  4663.     * tree-extras.cc (set_rand_seed): New function.
  4664.     (force_to_fit_range): New function.
  4665.     (current_seed): Really return current seed.
  4666.     (rand_internal): Allow the user to actually set the seed for the
  4667.     random number generator.
  4668.  
  4669. Sun Jan 10 16:46:06 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4670.  
  4671.     * Version 0.61 released.
  4672.  
  4673.     * builtins.h, builtins.cc: Rename from builtin-fcns.h,
  4674.     builtin-fcns.cc (too long for Linux/SysV).
  4675.  
  4676.     * mappers.cc (xisinf): For non-IEEE machines, consider DBL_MAX to
  4677.     be infinite.
  4678.  
  4679. Fri Jan  8 09:15:57 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4680.  
  4681.     * gnuplot-build/Makefile.in (x11targets): Don't worry about
  4682.     checking HAVE_X11_X_H.
  4683.  
  4684.     * configure.in: Check for gamma and lgamma for gnuplot.
  4685.  
  4686.     * gnuplot-build/Makefile.in (Makefile.X11): Only move Makefile to
  4687.     ../Makefile.X11 if xmkmf succeeds.
  4688.  
  4689.     * gnuplot-build/Makefile.in (x11targets): Check to see that XMKMF
  4690.     is set *and* that Makefile.X11 exists.
  4691.     * If making notgnuplot_x11 with Makefile.X11 fails, try again with
  4692.     Makefile.
  4693.  
  4694.     * gnuplot-build/Makefile.in: Use @PLOTLIB@ in definintion of LIBS.
  4695.     * Don't define UNIXPLOT in TERMFLAGS.
  4696.     * Don't define LN_S; it isn't used anywhere, and configure doesn't
  4697.     give it a value.
  4698.  
  4699.     * configure.in: Check for closepl().  If found, define UNIXPLOT,
  4700.     and substitute -lplot for @PLOTLIB@.
  4701.  
  4702.     * arith-ops.cc (DIVIDE_BY_ZERO_ERROR): New macro.  On systems that
  4703.     have IEEE math, give a warning but also go ahead and divide by
  4704.     zero.  On systems that don't have IEEE math, just give an error
  4705.     message and return an undefined tree_constant (it would probably
  4706.     be possible to handle this so that it works the same everywhere,
  4707.     but I'm not sure it's worth the effort...).
  4708.  
  4709.     * builtin-fcns.cc (install_builtins): On systems that don't have
  4710.     IEEE_MATH, define Inf to be MAX_DBL, but don't define NaN at all.
  4711.  
  4712.     * configure.in: Check for finite, isnan, and isinf.
  4713.     * Set HAVE_IEEE_MATH if we find finite and isnan.
  4714.  
  4715.     * builtin-fcns.cc (install_builtins): Use HAVE_IEEE_MATH instead
  4716.     of IEEE_MATH.
  4717.     * mappers.cc: Check HAVE_IEEE_MATH and HAVE_ISINF macros rather
  4718.     than checking system type.
  4719.  
  4720.     * graph3d.c (hidden_line_plot): Declare dy and y as double, not
  4721.     float, since VERYLARGE can be DBL_MAX.
  4722.  
  4723.     * lsoda.f, lsodar.f, lsodes.f, lsodi.f, lsoibt.f, stoda.f,
  4724.     stodi.f, zrotg.f, sdot.f: Remove unused files.
  4725.  
  4726.     * texas_lotto.m: Renamed from win_texas_lotto.m to keep the
  4727.     filename less than 14 characters.
  4728.  
  4729. Thu Jan  7 15:45:29 1993  John W. Eaton  (jwe@june.che.utexas.edu)
  4730.  
  4731.     * utils.cc: Declare ioctl extern "C".
  4732.  
  4733.     * tree.cc: Include stdio.h to be sure FILE is defined (apparently
  4734.     not required by older versions of GNU iostream library).
  4735.     * t-builtins.cc: Likewise.
  4736.     * g-builtins.cc: Likewise, but for tmpnam.
  4737.  
  4738.     * tree-const.h (rand_internal): Rename from rand to avoid
  4739.     conflict with standard library rand (a macro in Linux).
  4740.     * tree-extras.cc (rand_internal): Fix function definition.
  4741.     * g-builtins.cc (builtin_rand): Call rand_internal instead of rand.
  4742.  
  4743.     * octave.cc (main): Don't try to detect signal handler failures.
  4744.     What's the proper way to do this if RETSIGTYPE is void?
  4745.  
  4746. Tue Jan  5 08:14:29 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4747.  
  4748.     * tree.cc (tree_matrix::eval): When adding a matrix down or to the
  4749.     right, column or row dimension mismatches are always errors.
  4750.  
  4751. Mon Jan  4 04:58:55 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4752.  
  4753.     * Version 0.60 released.
  4754.  
  4755.     * xdiv.h, xdiv.cc: New files for Octave-specific matrix division
  4756.     stuff.
  4757.     * src/Makefile.in (INCLUDES, SOURCES, OBJECTS): Add xdiv stuff.
  4758.  
  4759.     * arith-ops.cc: Include xdiv.h.
  4760.  
  4761. Sun Jan  3 12:24:04 1993  John W. Eaton  (jwe@ward.che.utexas.edu)
  4762.  
  4763.     * gnuplot-build/Imakefile.in (notgnuplot_x11): In the compile
  4764.     command, put source file before    libraries.
  4765.  
  4766.     * libcruft/misc/Makefile.in: Don't use -O to compile gen-dimach.c.
  4767.  
  4768. Thu Dec 31 00:45:50 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4769.  
  4770.     * tree-extras.cc (matrix_sqrt): Don't create D until it is really
  4771.     needed.
  4772.     * (matrix_log): Ditto.
  4773.     * (matrix_exp): Ditto.
  4774.     [this should really be just one function instead of three...]
  4775.  
  4776.     * g-builtins.cc (builtin_sqrtm): New function.
  4777.     * builtin-fcns.cc (general_fucntions): Add it to the list.
  4778.     * tree-extras.cc (matrix_sqrt): Do the real work.
  4779.  
  4780.     * Makefile.in: Distribute INSTALL.OCTAVE and configure.in.
  4781.     * (INSTALL.info): Make ../INSTALL.OCTAVE, not ../INSTALL.
  4782.  
  4783.     * doc/Makefile.in: Make ../INSTALL.OCTAVE, not ../INSTALL.
  4784.  
  4785.     * INSTALL.OCTAVE: Rename from INSTALL.
  4786.     Refer to INSTALL for more info.
  4787.  
  4788.     * INSTALL: Copy from autoconf distribution.
  4789.     Refer to INSTALL.OCTAVE for more info.
  4790.  
  4791.     * octave.cc (main): Remove leading blank line from startup message.
  4792.     * Don't print it everytime the user types C-c...
  4793.  
  4794.     * xpow.cc: Finish off remaining cases.
  4795.  
  4796.     * tree-extras.cc (process_format): New function.
  4797.     (do_printf): Use it.
  4798.  
  4799. Wed Dec 30 00:43:14 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4800.  
  4801.     * Version 0.56.
  4802.  
  4803.     * g-builtins.cc (builtin_logm): New function.
  4804.     * builtin-fcns.cc (general_fucntions): Add it to the list.
  4805.     * tree-extras.cc (matrix_log): Do the real work.
  4806.  
  4807.     * g-builtins.cc (builtin_expm): New function.
  4808.     * builtin-fcns.cc (general_fucntions): Add it to the list.
  4809.     * tree-extras.cc (matrix_exp): Do the real work.
  4810.  
  4811.     * Matrix-ext.cc (LU): Construct LU decomp. here, not in Matrix class.
  4812.     (ComplexLU): Likewise.
  4813.     * Matrix.cc (lu): Deleted.  Use LU constructor instead.
  4814.     Change all uses in octave sources.
  4815.  
  4816.     * Matrix-ext.cc (EIG): Construct EIG object here, not in Matrix class.
  4817.     * Matrix.cc (eig): Deleted.  Use EIG constructor instead.
  4818.     Change all uses in octave sources.
  4819.  
  4820.     * Matrix-ext.cc (SVD): Construct SVD here, not in Matrix class.
  4821.     (ComplexSVD): Likewise.
  4822.     * Matrix.cc (svd): Deleted.  Use SVD constructor instead.
  4823.     Change all uses in octave sources.
  4824.  
  4825.     * Makefile.in: Update for new Matrix file organization.
  4826.     Don't compile mx-inlines separately -- it's included where needed.
  4827.     * Matrix.h: Declare Fortran routines we call here, not in Matrix.cc.
  4828.     Don't declare every class to be a friend of every other class.
  4829.     * mx-inlines.cc: New file, included by all Matrix-related .cc files.
  4830.     * Matrix.cc: Split into several files.
  4831.     * ColVector.cc: New file, from Matrix.cc
  4832.     * RowVector.cc: Ditto.
  4833.     * DiagMatrix.cc: Ditto.
  4834.     * Matrix-ext.cc: Ditto.
  4835.  
  4836.     * tree-extras.cc (svd): Take advantage of new constructors and
  4837.     diag functions.
  4838.  
  4839.     * Matrix.cc (DiagMatrix::diag) New function.
  4840.     (ComplexDiagMatrix::diag) Ditto.
  4841.  
  4842.     * tree-extras.cc (eig): Take advantage of new constructors.
  4843.  
  4844.     * tree-const.cc (tree_constant (DiagMatrix)): New constructor.
  4845.     (tree_constant (ComplexDiagMatrix)): Ditto.
  4846.  
  4847.     * Matrix.cc (Matrix (const DiagMatrix)): New constructor.
  4848.     (ComplexMatrix (const DiagMatrix)): Ditto.
  4849.     (ComplexMatrix (const ComplexDiagMatrix)): Ditto.
  4850.  
  4851. Tue Dec 29 01:14:49 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4852.  
  4853.     * octave.cc (main): Print message at startup by default.
  4854.     Don't print it until just before main loop.
  4855.     * New -q option (inhibit_startup_message) turns it off.
  4856.     * New -f option (read_init_files) inhibits reading of startup files.
  4857.     * Delete -v option.
  4858.     * (verbose_usage): Reflect changes in arguments, document -d.
  4859.  
  4860.     * win_texas_lotto.m: Sort picks before returning.
  4861.  
  4862.     * tree-extras.cc (eig): Return [v,d], not [l,v], where d is a
  4863.     diagonal matrix made from l.
  4864.  
  4865.     * builtin-fcns.cc (mapper_functions): Fix last element of
  4866.     initialization list to have correct number of elements.
  4867.  
  4868.     * Version 0.55.
  4869.  
  4870.     * Quad.h: Move all inline functions to Quad.cc to avoid apparent
  4871.     g++ bug on the RS/6000.
  4872.  
  4873.     * configure.in: If we find flex, don't define LEXLIB.
  4874.  
  4875.     * COPYING.LIB: Deleted -- we're not actually distributing anything
  4876.     under these terms.
  4877.     * Makefile.in: Don't distribute COPYING.LIB.
  4878.  
  4879. Mon Dec 28 00:46:21 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4880.  
  4881.     * xpow.h, xpow.cc: New files for safer pow() interface for octave.
  4882.     * src/Makefile.in (INCLUDES, SOURCES, OBJECTS): Add xpow stuff.
  4883.  
  4884.     * arith-ops.cc: Include xpow.h.
  4885.     * Don't declare toplevel jmp_buf.
  4886.  
  4887.     * t-builtins.cc (builtin_save): Make file and stream static to
  4888.     avoid dumping core on return (is this a bug in libg++ or g++?).
  4889.     * (builtin_load): Ditto.
  4890.  
  4891.     * symtab.cc (load): Make it work again.  Yikes!  This hasn't
  4892.     worked since the big symbol table overhaul...
  4893.  
  4894.     * tree-const.cc (tree_constant_rep::save): Handle complex scalars
  4895.     and matrices.
  4896.  
  4897.     * (symbol_def::undefine): Delete previous symbol definition before
  4898.     defining.  This should be ok now, after the parse_m_file fix of
  4899.     27 Dec.
  4900.  
  4901.     * getting_help: New global flag.
  4902.     * ([_a-zA-Z][_a-zA-Z0-9]*): Set it if looking at "help".
  4903.     * (reset_parser): Clear it.
  4904.     * lex.l (STRING): Use it to determine what to do with ' ; and , .
  4905.  
  4906.     * lex.l (QSTRING): Handle the following (C-style) backslash escape
  4907.     sequences correctly(?).
  4908.  
  4909.       \a  bell       \r  carriage return
  4910.       \b  backspace    \t  horizontal tab
  4911.       \f  formfeed     \v  vertical tab
  4912.       \n  newline       \\  backslash
  4913.  
  4914.     * median.m: New M-file.
  4915.  
  4916.     * g-builtins.cc (builtin_sort): New function.
  4917.     * builtin-fcns.cc (general_fucntions): Add it to the list.
  4918.     * tree-extras.cc (sort): Do most of the real work.
  4919.     * tree-extras.cc (mx_sort): Do the rest.
  4920.  
  4921. Sun Dec 27 17:40:24 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4922.  
  4923.     * t-builtins.cc (builtin_casesen): New function.
  4924.     * builtin-fcns.cc (text_functions): Add it to the list.
  4925.  
  4926.     * strcmp.m: Temporarily allow string to numeric conversions.
  4927.     Maybe strcmp() should be built in to the interpreter?
  4928.  
  4929.     * norm.m: New M-file.
  4930.  
  4931.     * builtin-fcns.cc (install_builtins): Treat i and j as functions,
  4932.     not variables.
  4933.     * Install inf as an alias for Inf.
  4934.     * Install nan as an alias for NaN.
  4935.  
  4936.     * tree.cc (tree_identifier::parse_m_file (char*)): Force new
  4937.     global symbol to be a function, not a variable.
  4938.  
  4939. Tue Dec 22 14:15:57 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4940.  
  4941.     * tree.cc (tree_function::eval): Check with silent_functions()
  4942.     and return_last_value_computed() to determine proper behavoir.
  4943.  
  4944.     * builtin-fcns.cc (silent_functions): New builtin variable.
  4945.     * (return_last_value_computed) Ditto.
  4946.  
  4947.     * utils.cc (silent_functions): New function.
  4948.     * (return_last_value_computed) Ditto.
  4949.     [This scheme for determining preferences needs to be reworked...]
  4950.  
  4951.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only force yytext[len] to be the
  4952.     end of the identifier if we gobbled some whitespace.
  4953.     * Always unput the last character read.
  4954.  
  4955.     * tree.cc (tree_function::eval) Always turn on printing for
  4956.     commands inside functions.
  4957.  
  4958. Sat Dec 19 14:03:49 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4959.  
  4960.     * Version 0.54.
  4961.  
  4962. Fri Dec 18 16:02:59 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4963.  
  4964.     * (symbol_def::undefine): Undo previous change.  Someone is
  4965.     calling this function when they shouldn't be...
  4966.  
  4967.     * tree.cc (parse_m_file): If the script file is successfully
  4968.     parsed, Ensure that the new symbol is defined in the global
  4969.     symbol table.
  4970.  
  4971.     * lex.l: Handle continuation lines with the pattern
  4972.     {EL}{S}*\n { promptflag = 0; }  // Line continuation.
  4973.  
  4974. Thu Dec 17 01:47:14 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4975.  
  4976.     * symtab.cc (symbol_def::define): Delete previous symbol
  4977.     definition before defining.
  4978.     (symbol_def::undefine): Ditto, but new definition is always NULL.
  4979.  
  4980.     * readline/Makefile.in:  Don't compile emacs_keymap.c and
  4981.     vi_keymap.c since they are included by keymaps.c.
  4982.  
  4983.     * configure.in: If RETSIGTYPE isn't int, then define
  4984.     VOID_SIGHANDLER="-DVOID_SIGHANDLER=1".
  4985.     Substitute VOID_SIGHANDLER.
  4986.  
  4987.     * readline/Makefile.in (CFLAGS): Add -DVOID_SIGHANDLER if
  4988.     appropriate.
  4989.  
  4990.     * tilde.c: Declare xmalloc, not malloc.
  4991.  
  4992.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only call unput if we've
  4993.     actually read something.
  4994.  
  4995.     * Version 0.53.
  4996.  
  4997. Wed Dec 16 01:35:48 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  4998.  
  4999.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Look in the global symbol table
  5000.     for names, but ignore functions.
  5001.  
  5002.     * tree.cc (tree_identifier::eval): Use symbol_out_of_date() to
  5003.     simplify logic for re-parsing M-files.
  5004.     Always look in global symbol table for functions in case the
  5005.     definition has changed (shouldn't the local symbols be undefined
  5006.     anyway??).
  5007.  
  5008.     * tree.cc (symbol_out_of_date): New function.
  5009.  
  5010.     * symtab.cc (symbol_table::undefine): Actually do something.
  5011.     * (symbol_table::remove_name): Ditto.
  5012.     * (symbol_table::clear): And so on.
  5013.  
  5014.     * Matrix.cc (ComplexMatrix::svd): Use complex conjugate transpose,
  5015.     not simple transpose, for V.
  5016.  
  5017.     * Version  0.52.
  5018.  
  5019.     * gnuplot-build/Imakefile (notgnuplot_x11): In the compile
  5020.     command, put source file before    libraries.
  5021.  
  5022.     * parse.y (assignment): If trying to warn against assignment to a
  5023.     function, check is_function() instead of !is_variable().
  5024.  
  5025.     * src/Makefile.in: Distribute input.h.
  5026.  
  5027. Tue Dec 15 10:48:22 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5028.  
  5029.     * octave.cc (main): Call initialize_readline to set up completion
  5030.     functions.
  5031.  
  5032.     * input.cc (make_name_list, command_generator, command_completer,
  5033.     initialize_readline): New functions.
  5034.  
  5035.     * input.h: New file.
  5036.     * lex.l: Include it instead of input.cc.
  5037.     * src/Makefile.in: Create input.o rather than including it
  5038.     directly in lex.l.
  5039.  
  5040.     * builtin-fcns.cc: do_fortran_indexing is now initially false.
  5041.     prefer_column_vectors is now initially true.
  5042.  
  5043.     * builtin-fcns.cc (install_builtins): Install i and j
  5044.      (== sqrt(-1)) as permanent global variables.
  5045.  
  5046.     * g-builtins.cc (MAXPATHLEN) Provide default definition here.
  5047.     * t-builtins.cc: Not here.
  5048.  
  5049.     * g-builtins.cc (quitting_gracefully, interactive,
  5050.     clean_up_and_exit, verbatim_pwd, getwd) Declare here.
  5051.     * t-builtins.cc: Not here.
  5052.  
  5053.     * g-builtins.cc: Also include readline.h and history.h.
  5054.  
  5055.     * g-builtins.cc: Include version.h and sys/param.h here.
  5056.     * t-builtins.cc: Not here.
  5057.  
  5058.     * g-builtins.cc: Move builtin_clc, builtin_clock, builtin_date,
  5059.     builtin_pause, builtin_quit, builtin_warranty here from
  5060.     t-builtins.cc.
  5061.  
  5062.     * builtin-fcns.cc (general_functions): Move builtin_clc,
  5063.     builtin_clock, builtin_date, builtin_pause, builtin_quit,
  5064.     builtin_warranty here from text_functions to limit the number of
  5065.     reserved words.
  5066.  
  5067.     * scripts/*.m: Check for correct number of input arguments before
  5068.     proceeding.
  5069.  
  5070.     * configure.in (DEFAULT_PAGER): Look for less, more, page, and pg.
  5071.  
  5072.     * t-buitlins.cc (builtin_help): If no arguments are given, list
  5073.     all the known operators, keywords, functions, and variables.
  5074.  
  5075.     * t-builtins.cc (builtin_help) Pass the output through PAGER using
  5076.     a libg++ procbuf.
  5077.     (builtin_who): Ditto.
  5078.  
  5079.     * utils.cc (get_pager): New function.
  5080.  
  5081.     * help.h, help.cc: New files to manage lists of help info for
  5082.     keywords and operators.
  5083.  
  5084.     * symtab.cc (symbol_record): Implement the Matlab-style semantics
  5085.     of functions using two symbol_def objects.
  5086.     * (symbol_table): Store identifier names in a hash table instead
  5087.     of a linear list.
  5088.     * symtab.cc (symbol_def): New class.
  5089.  
  5090. Sat Dec 12 00:00:00 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5091.  
  5092.     * parse.y (yyerror): Change error text to be more accurate.
  5093.  
  5094.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only look in the current symbol
  5095.     table for names.  Function names and other global symbols are now
  5096.     resolved at execution time.
  5097.  
  5098.     * symtab.cc (sorted_var_list): New function.
  5099.     * (sorted_fcn_list): Ditto.
  5100.     * (var_list): Ditto.
  5101.     * (fcn_list): Ditto.
  5102.     These should probably not all be separate functions...
  5103.  
  5104.     * t-functions.cc (builtin_who): Call sorted_var_list for each
  5105.     symbol table to print variable names only.
  5106.     * Accept -fcn, -fcns, or -functions to also list function names.
  5107.     * Make -all list function names, but under a separate heading from
  5108.     other symbols.
  5109.  
  5110.     * builtin-fcns.cc (is_text_function_name): New function.
  5111.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Use is_text_function_name to
  5112.     find if a name is a text function name instead of relying on the
  5113.     symbol tables.
  5114.  
  5115.     * lex.l (is_keyword): New function.
  5116.     ([_a-zA-Z][_a-zA-Z0-9]*): Use is_keyword instead of having a
  5117.     special lex pattern for each keyword.
  5118.  
  5119. Thu Dec 10 12:25:12 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5120.  
  5121.     * t-builtins.cc: Declare top_level_sym_tab extern.
  5122.  
  5123.     * Version 0.51.
  5124.  
  5125. Wed Dec  9 02:00:38 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5126.  
  5127.     * tree-extras.cc (all user_functions): If the return value from a
  5128.     user's function is bogus, print an error message and abort to the
  5129.     top level.
  5130.  
  5131.     * tree-const.cc (all do_matrix_index functions): Major overhaul to
  5132.     simplify and apply range checking before doing the indexing.
  5133.  
  5134.     * tree-const.cc (fortran_row, fortran_column, valid_scalar_indices,
  5135.     matrix_to_fortran_indices): Move here from arith-ops.cc and
  5136.     declare as `static inline'.  Delete declarations from arith-ops.h.
  5137.  
  5138.     * arith-ops.cc (gripe_nonconformant_assignment): Delete function.
  5139.  
  5140.     * tree-const.h (TREE_TO_MAT_IDX): Delete macro.
  5141.     * tree-const.cc (tree_to_mat_idx): Make it an inline function.
  5142.  
  5143.     * tree-const.cc (all do_matrix_assignment functions): Major
  5144.     overhaul to simplify resizing and range checking.
  5145.  
  5146.     * tree-const.cc (): Move here from arith-ops.cc.
  5147.     Jump to top level on errors.
  5148.     Return max value.
  5149.     (indexed_assign_conforms) New function.
  5150.     (index_check (int)): New function.
  5151.     (index_check (Range)): New function.
  5152.  
  5153. Tue Dec  8 21:07:23 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5154.  
  5155.     * tree-const.cc (tree_constant_rep::tree_constant_rep (Range):
  5156.     Don't create range constants that have less than 2 elements.
  5157.  
  5158.     * utils.cc (jump_to_top_level): New function.
  5159.     * All: Replace calls to longjmp with calls to jump_to_top_level().
  5160.     Don't include <setjmp.h>, except in octave.cc, and utils.cc.
  5161.  
  5162. Mon Dec  7 01:57:30 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5163.  
  5164.     * configure.in: Create Imakefile in gnuplot-build directory.
  5165.     Look for xmkmf, then X11/X.h.
  5166.     * gnuplot-build/Makefile.in: Try harder to get notgnuplot_x11 to
  5167.     build correctly.
  5168.     * gnuplot-build/Imakefile.in: New file, for building
  5169.     notgnuplot_x11 if xmkmf is available.
  5170.  
  5171.     * Version 0.50.
  5172.  
  5173.     * gnuplot-build/Makefile.in (SUBDIRS): Add docs.
  5174.  
  5175.     * tree-const.h (make_numeric_or_range_or_magic): New function.
  5176.     * tree-const.cc (do_matrix_index): Use it instead of make_numeric
  5177.     so that we actually take advantage of all the special cases we
  5178.     have for range types as matrix indices.
  5179.  
  5180.     * tree-const.cc (tree_constant_rep::do_matrix_index (int, Matrix)):
  5181.     Fix typo.
  5182.  
  5183.     * DAE.cc (integrate): If returning a matrix of values, don't mix
  5184.     time with the states.
  5185.     * ODE.cc (integrate): Likewise.
  5186.  
  5187. Sun Dec  6 16:58:41 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5188.  
  5189.     * tree-extras.cc (dassl): New function.
  5190.     * g-builtins.cc (builtin_dassl): Make it work.
  5191.     * doc/octave.1: Document it.
  5192.  
  5193.     * DAEFunc.h, DAEFunc.cc, DAE.h, DAE.cc: New files.
  5194.  
  5195.     * tree-extras.cc (lsode): Clean up.  Use available functions
  5196.     instead of doing everything in line.
  5197.  
  5198.     * tree.cc (tree_multi_assignment_expression::eval): Don't define
  5199.     constants that are of unknown type.
  5200.     Try to be smarter about padding after last value.
  5201.  
  5202.     * tree-extras.cc (lu): Don't bother trying to return the LU
  5203.     factorization in a single matrix since this isn't really useful
  5204.     and isn't compatible with Matlab anyway (they use Linpack, we use
  5205.     Lapack).
  5206.  
  5207.     * tree.cc (tree_identifier::assign (rhs, args, nargs)): Only try
  5208.     to do assignment if rhs is defined.
  5209.  
  5210. Sat Dec  5 18:23:55 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5211.  
  5212.     * tree-extras.cc (qr): New function.
  5213.     * g-builtins.cc (builtin_qr): New function.
  5214.     * builtins.cc: Add builtin_qr to list of builtin functions.
  5215.     * doc/octave.1: Document it.
  5216.  
  5217.     * Matrix.cc (Matrix::lu): Use dgesv from Lapack instead of dgefa
  5218.     since it returns L and U, not some factors that need decoding.
  5219.     (ComplexMatrix:lu): Likewise.
  5220.  
  5221. Fri Dec  4 01:51:05 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5222.  
  5223.     * configure.in (INCDIRS): Don't include /usr/local/include.
  5224.     (LIBDIRS): Don't include /usr/local/lib.
  5225.  
  5226.     * tree-extras.cc (lu): New function.
  5227.     * g-builtins.cc (builtin_lu): New function.
  5228.     * builtins.cc: Add builtin_lu to list of builtin functions.
  5229.     * doc/octave.1: Document it.
  5230.  
  5231.     * Matrix.cc (Matrix:lu, ComplexMatrix:lu): New functions.
  5232.     * Matrix.h, Matrix.cc (LU, ComplexLU): New classes.
  5233.  
  5234.     * tree-extras.cc (do_quad): New function.
  5235.     * g-builtins.cc (builtin_quad): New function.
  5236.     * builtins.cc: Add builtin_quad to list of builtin functions.
  5237.     * doc/octave.1: Document it.
  5238.  
  5239.     * doc/Makefile.in (install): Edit the manpage to substitute
  5240.     correct values in the FILES section.
  5241.     (dist) Depend on octave.info.
  5242.     (local-dist): Ditto.
  5243.  
  5244.     * Quad.h, Quad.cc: New files to implement quadrature.
  5245.  
  5246.     * NPSOL.cc (npsol_objfun): If compiling with GCC on a Sun, assign
  5247.     to objf via assign_double().
  5248.  
  5249.     * sun-utils.h, sun-utils.cc: New files.
  5250.     * sun-utils.cc: Move declaration and definition of MAIN_ here from
  5251.     utils.cc.
  5252.     (access_double): New function, from GCC manual.
  5253.     (assign_double): New function, after access_double.
  5254.  
  5255. Thu Dec  3 03:16:03 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5256.  
  5257.     * NEWS: New file.
  5258.     * Makefile.in: Distribute it.
  5259.  
  5260.     * scripts/*.m: Change to use new end feature.
  5261.  
  5262.     * lex.l: Recognize `endif', `endfor', `endfunction', `endif', and
  5263.     `endwhile', in addtion to `end'.
  5264.     * parse.y: Check for command/end mismatches.
  5265.     (end_error): New function.
  5266.     * doc/octave.1: Document it.
  5267.  
  5268. Wed Dec  2 11:57:18 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5269.  
  5270.     * libcruft/villad: New directory.  Move and split villad.f here
  5271.     from libcruft/misc.
  5272.     * configure.in: Create Makefile in libcruft/villad.
  5273.     * libcruft/Makefile.in: Add libcruft/villad to list of dirs to make.
  5274.  
  5275.     * All Makefile.in (uninstall): New target.
  5276.     (distclean): Likewise.
  5277.     (check): Ditto.
  5278.     * Try to make clean targets conform with GNU coding standards.
  5279.  
  5280.     * utils.cc (smells_like_X11): New function.
  5281.     * builtin-fcns.cc (install_builtins): Don't set graphics terminal
  5282.     to x11 unless it looks like we're running X11.
  5283.  
  5284.     * win_texas_lotto.m: New M-file.
  5285.     * octave.1: Document it.
  5286.  
  5287.     * arith-ops.h: New file.
  5288.     * src/Makefile.in: Build arith-ops.o, distribute arith-ops.cc,
  5289.     arith-ops.h.  Maybe this will at least speed up recompiles.
  5290.  
  5291.     * THANKS: New file
  5292.     * Makefile.in: Distribute it.
  5293.  
  5294.     * configure.in: Create Makefile in gnuplot-build/docs.
  5295.     * gnuplot-build/docs/Makefile.in: New file.
  5296.     * Create and install notgnuplot.gih.
  5297.  
  5298. Tue Dec  1 00:15:48 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5299.  
  5300.     * tree.cc (tree_identifier::eval (int)): Only pad after if printing.
  5301.     (tree_multi_assignment_expression::eval (int)): Ditto.
  5302.     (tree_assignment_expression::eval (int)): Ditto.
  5303.  
  5304.     * hankel.m: Use disp to print message.
  5305.     * toeplitz.m: Ditto.
  5306.  
  5307.     * lex.l (<MATRIX>{SN}*\]/{S}*=): Check maybe_screwed_again to
  5308.     decide whether to return SCREW_TWO or ']'.
  5309.  
  5310.     * doc/Makefile.in (install): Really install the manpage.
  5311.  
  5312.     * Version 0.49.
  5313.  
  5314.     * Matrix.cc (ComplexMatrix::operator !): New function.
  5315.     * arith-ops.cc (do_unar_op): Use it.
  5316.  
  5317.     * tree-extras.cc (inverse, svd, eig): Don't try to operate on
  5318.     empty matrices.
  5319.  
  5320.     * Matrix.h, Matrix.cc: (EIG): New class.
  5321.     (Matrix::eig): New functions.
  5322.     (ComplexMatrix::eig): Ditto.
  5323.     * tree-extras (eig): Use them.
  5324.     * g-builtins.cc (builtin_eig): New function.
  5325.     * builtin-fcns.cc (general_functions): Add eig to list.
  5326.     * dococtave.1: Document it.
  5327.  
  5328.     * Matrix.h, Matrix.cc: (ComplexDET): New class.
  5329.     * tree-extras (determinant): Use it.
  5330.  
  5331. Mon Nov 30 04:02:29 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5332.  
  5333.     * Matrix.h, Matrix.cc (ComplexSVD): New class.
  5334.     * tree-extras (svd): Use it.
  5335.  
  5336.     * Matrix.cc (svd): Use lapack instead of linpack to compute SVD.
  5337.  
  5338.     * libcruft/Makefile.in: Replace eispack with lapack in
  5339.     subdirectory list.
  5340.     * libcruft/eispack: Delete directory.
  5341.     * libcruft/lapack/Makefile.in: New file.
  5342.     * configure.in: Create Makefile in libcruft/lapack, not
  5343.     libcruft/eispack.
  5344.  
  5345.     * libcruft/lapack: New directory.
  5346.     * Copy files for SVD and Eigenvalue computation here.
  5347.  
  5348.     * lex.l (<MATRIX>{SN}*\]/{S}*=): Only return SCREW_TWO if not
  5349.     defining a function.
  5350.  
  5351.     * arith-ops.cc (do_binary_op (double, double)): For pow operator,
  5352.     don't create complex value if exponent is really an int.
  5353.  
  5354.     * configure.in: Check for f77 last.
  5355.     * Print warnings if bison or lex is not found.
  5356.     * Reformat fatal no f2c/f77 error message.
  5357.  
  5358.     * flib.sh: Make it work even if xlf is called f77.
  5359.  
  5360. Sun Nov 29 01:55:41 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5361.  
  5362.     * tree-extras.cc: Include f77-uscore.h.
  5363.     * Use F77_FCN macro when declaring or calling Fortran functions.
  5364.  
  5365.     * configure.in: After checking to see that it's not garbage, add
  5366.     the output of f2c-compat.sh to DEFS.
  5367.  
  5368.     * f2c-compat.sh: Figure out whether or not we need to append an
  5369.     underscore to Fortran function names.
  5370.  
  5371.     * flibs.sh: Handle xlf -v output as special case.
  5372.  
  5373.     * octave.cc: Only define BADSIG if it isn't already defined.
  5374.     * g-builtins.cc: Ditto.
  5375.  
  5376.     * configure.in: Don't create man/Makefile.
  5377.     * man: Directory deleted.
  5378.     * doc/Makefile.in: Distribute and install octave.1.
  5379.     * doc/octave.1: Renamed from man/octave.1.
  5380.  
  5381. Sat Nov 28 15:54:39 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5382.  
  5383.     * man/Makefile.in (install): Install manpage.
  5384.     * octave.1: rename from octave.man
  5385.     * octave.1: Document builtin variables and command line editing
  5386.     (stolen from bash man page).
  5387.  
  5388.     * tree-const.cc (eval (int print)): Convert complex values to real
  5389.     if imaginary part is zero.
  5390.  
  5391.     * octave.cc (log_usage): Deleted.
  5392.     (main): Don't call log_usage.
  5393.  
  5394.     * g-builtins.cc (builtin_sqrt): Delete.
  5395.     (builtin_log): Ditto.
  5396.     (builtin_log10): Ditto.
  5397.  
  5398.     * tree-const.h, tree-const.cc (sqrt_internal): Delete.
  5399.     (log_internal): Ditto.
  5400.     (log10_internal): Ditto.
  5401.  
  5402.     * tree-const.cc (mapper): Handle neg_arg_complex.
  5403.  
  5404.     * builtin-fcns.h (Mapper_fcn): New field neg_arg_complex.
  5405.     * builtin-fcns.cc: (mapper_functions[]): Initialize it for list of
  5406.     mapper functions.
  5407.     * builtin-fcns.cc: (mapper_functions[]): Move log, log10, and sqrt
  5408.     back here from general_functions[].
  5409.  
  5410. Fri Nov 27 17:05:21 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5411.  
  5412.     * tree-extras.cc (tree_constant_to_vector): Handle complex scalars
  5413.     and matrices.
  5414.  
  5415. Wed Nov 25 17:32:42 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5416.  
  5417.     * man/octave.man: New file, very incomplete.
  5418.     * man/Makefile.in: Include octave.man in list of files to
  5419.     distribute.
  5420.  
  5421.     * g-buitlins.cc (builtin_rand): Handle nargin == 1.
  5422.     * tree-extras.cc (rand): Likewise.
  5423.  
  5424.     * rem.m: New M-file.  Implemented as M-file because it's much
  5425.     simpler!
  5426.  
  5427.     * configure.in (DEFAULT_DOT_C_FROM_DOT_F): Escape % characters in
  5428.     rule to avoid problems with autoconf, which uses % for sed command
  5429.     delimeters.
  5430.     (DEFAULT_DOT_O_FROM_DOT_F): Ditto.
  5431.  
  5432. Tue Nov 24 00:21:34 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5433.  
  5434.     * tree-extras.cc (fill_matrix): Don't try to create matrices with
  5435.     negative dimensions.
  5436.     (frobit): Likewise.
  5437.  
  5438.     * utils.cc (check_dimensions): New function.
  5439.  
  5440.     * utils.cc (treat_neg_dim_as_zero): New function.
  5441.     * builtin-fcns.cc (treat_neg_dim_as_zero): New builtin variable,
  5442.     default value is false.
  5443.  
  5444.     * tree-const.h (tree_constant::bump_value): Like, assign, check
  5445.     reference count and possibly make a new copy before changing
  5446.     anything.
  5447.  
  5448.     * tree-base.h (is_builtin): New virtual function.
  5449.     * tree.cc (tree_builtin::is_builtin): New function.
  5450.  
  5451.     * parse.y (ans_expression): Also check to see if the lone
  5452.     expression is a builtin text-style function invoked without any
  5453.     arguments.
  5454.  
  5455.     * octave.cc, t-builtins.cc: Print copyright and other normal
  5456.     (non-error) message on cout instead of cerr.
  5457.  
  5458.     * t-builtins.cc (builtin_warranty): Don't return message in
  5459.     retval.
  5460.     (builtin_history): Likewise.
  5461.     (builtin_help): Also.
  5462.     (builtin_who): Ditto.
  5463.  
  5464.     * Version 0.48.
  5465.  
  5466.     * tree-extras.cc: Fix most functions to handle complex arguments.
  5467.     Still need to finish SVD and DET (waiting for these functions in
  5468.     the Matrix class).
  5469.  
  5470.     * tree.cc (tree_multi_assignment::eval): Optionally print names
  5471.     for result variables.
  5472.  
  5473.     * tree-const.h (tree_constant::eval (int print, int nargout)):
  5474.     New function.  Simply ignore nargout.
  5475.     * tree.cc (tree_matrix::eval (int print, int nargout)): Ditto.
  5476.  
  5477.     * tree.cc (tree_parameter_list::name): New function.
  5478.  
  5479.     * lex.l (<NEWMAT>): Delete rules, start condition because they are
  5480.     unecessary.
  5481.  
  5482.     * lex.l (<MATRIX>{SN}*\]): Split into three rules.  Use trailing
  5483.     context instead of home-brew lookahead.
  5484.  
  5485. Mon Nov 23 00:51:51 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5486.  
  5487.     * utils.cc (ok_to_lose_imaginary_part): New function.
  5488.     * builtin-fcns.cc (ok_to_lose_imaginary_part): New builtin
  5489.     variable, default value is warn.
  5490.  
  5491.     * tree-const.h (double_value): Maybe return real part if invoked
  5492.     for complex tree_constant.
  5493.     * tree-const.h (matrix_value): Ditto.
  5494.  
  5495.     * Version 0.47.  This one wasn't tested, but there have been a lot
  5496.     of significant changes and I wanted a backup.
  5497.  
  5498.     * tree-const.cc (sqrt_internal): New function.  Sqrt isn't
  5499.     implemented as a mapper function since negative real arguments
  5500.     give complex results.
  5501.     (log_internal): Ditto.
  5502.     (log10_internal): Ditto.
  5503.     * builtin-fcns.cc: Move sqrt, log, and log10 from mapper struct
  5504.     initializer to general function struct initializer.
  5505.  
  5506.     * rot90.m: New M-file.  Still needs rem() to be complete.
  5507.  
  5508.     * tree-const.cc (mapper): Handle mapper functions for complex
  5509.     variables.
  5510.  
  5511.     * mappers.h, mappers.cc: New file for mapper functions.
  5512.  
  5513.     * builtin-fcns.h, builtin-fcns.cc: Rename from builtins.h
  5514.     builtins.cc.
  5515.  
  5516.     * flipud.m: Don't do indexing on lhs.
  5517.     * fliplr.m: Likewise.
  5518.  
  5519. Sun Nov 22 17:09:36 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5520.  
  5521.     * arith-ops.cc (do_binary_op (double, double)): Handle a^b for
  5522.     a < 0.
  5523.  
  5524.     * builtins.cc: Make sqrt a general builtin function instead of a
  5525.     mapper function.
  5526.     * g-builtins.cc (builtin_sqrt): New function.
  5527.     * tree-const.cc (sqrt_internal): New function.
  5528.  
  5529. Sat Nov 21 16:41:02 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5530.  
  5531.     * tree-const.h, tree-const.cc:  Complete most changes required to
  5532.     handle complex types.  There are lots of details, most will be
  5533.     omitted here.
  5534.  
  5535.     * tree-const.h (is_real_type) New function.
  5536.     (is_complex_type): Ditto.
  5537.     (is_scalar_type): Ditto.
  5538.     (is_matrix_type): Ditto.
  5539.  
  5540.     * tree-const.h (REP_RHS_MATRIX, REP_ELEM_ASSIGN, CRMATRIX,
  5541.     ASSIGN_CRMATRIX_TO, CRMATRIX_ASSIGN_REP_ELEM,
  5542.     CRMATRIX_ASSIGN_ELEM): New macro for dealing with real and complex
  5543.     matrices in the same tree_constant_rep function.
  5544.  
  5545.     * tree-const.cc: Include arith-ops.cc.
  5546.  
  5547.     * arith-op.cc: New file for functions that implement unary and
  5548.     binary operations for the tree_constat classes.
  5549.     * Mark all operations that aren't implemented yet with a
  5550.     XXX FIXME XXX comment.  There are about 35-40 things left to fix
  5551.     in this file.
  5552.  
  5553. Thu Nov 19 00:25:16 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5554.  
  5555.     * Version 0.46.
  5556.     [ This one wasn't tested, but there have been a lot of significant
  5557.     changes and I wanted a backup. ]
  5558.  
  5559.     * tree-const.cc (tree_constant_rep::do_unary_op): Handle Complex.
  5560.     (do_unary_op (Complex&, tree::expression_type)): New function.
  5561.     (do_unary_op (ComplexMatrix&, tree_expression_type): Ditto.
  5562.  
  5563.     * tree-const.cc (tree_constant_rep::assign): Handle Complex
  5564.     (still needs updated support functions in order to work).
  5565.  
  5566.     * tree.cc (tree_matrix::eval): Handle Complex.
  5567.     (tree_identifier::eval): Ditto.
  5568.     (tree_for_command::eval): Ditto.
  5569.  
  5570. Wed Nov 18 23:33:13 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5571.  
  5572.     * tree_const.cc (tree_constant_rep::rows): Handle Complex.
  5573.     (tree_constant_rep::columns): Ditto.
  5574.     (tree_constant_rep::all): Ditto.
  5575.     (tree_constant_rep::any): Ditto.
  5576.     (tree_constant_rep::cumprod): Ditto.
  5577.     (tree_constant_rep::cumsum): Ditto.
  5578.     (tree_constant_rep::prod): Ditto.
  5579.     (tree_constant_rep::sum): Ditto.
  5580.     (tree_constant_rep::sumsq): Ditto.
  5581.  
  5582.     * tree_const.h, tree_const.cc (tree_constant::complex_value): New
  5583.     function.
  5584.     (tree_constant_rep::complex_value): Ditto
  5585.     (tree_constant::complex_matrix_value): New
  5586.     (tree_constant_rep::complex_matrix_value): New
  5587.  
  5588.     * tree_const.cc (tree_constant_rep::~tree_constant_rep): Handle
  5589.     complex scalars and matrices.
  5590.     (tree_constant_rep::force_numeric): Ditto.
  5591.     (tree_constant_rep::make_numeric): Ditto.
  5592.     (tree_constant_rep::eval): Ditto.
  5593.     (tree_constant_rep::bump_value): Ditto.  C++, for C == a
  5594.     complex value is C = C + 1.  Should I even do this?  Hmmm.
  5595.  
  5596.     * tree-const.h, tree-const.cc: Begin adding support for Compelex.
  5597.     * Add complex_scalar and complex_matrix to value union.
  5598.     * Add complex_scalar_constant and complex_matrix_constant to type
  5599.     tag enum.
  5600.     * New constructors.
  5601.  
  5602.     * Matrix.h, Matrix.cc: Major changes to add Complex support.
  5603.  
  5604. Tue Nov 17 14:40:45 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5605.  
  5606.     * Matrix.cc (RowVector::operator (const Matrix&)): New function.
  5607.  
  5608.     * Matrix.cc (ColumnVector::transpose): New function.
  5609.     Eliminate friend function that served the same purpose.
  5610.     (RowVector::transpose): Ditto.
  5611.  
  5612. Mon Nov 16 09:57:33 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5613.  
  5614.     * lex.l (QSTRING): Fix to allow '' inside a string to represent a
  5615.     single quote.  Makes computer.m a little funnier.
  5616.  
  5617. Fri Nov 13 18:46:39 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5618.  
  5619.     * Version 0.45.
  5620.  
  5621.     * computer.m: New M-file.
  5622.     * tril.m: Ditto.
  5623.     * triu.m: Ditto.
  5624.  
  5625.     * doc (*.texi): Can now produce BUGS, INSTALL, and octave.info
  5626.     files without generating errors, though the organization is
  5627.     probably till very wrong.
  5628.  
  5629.     * Makefile.in (newversion): Add magic to handle major versions
  5630.     other than 0, and major/minor versions of any length.
  5631.  
  5632. Thu Nov 12 01:37:45 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5633.  
  5634.     * g-builtins.h, tree-const.h, builtins.cc, g-builtins.cc,
  5635.     tree-extras.cc: Conditionally compile code for NPSOL and FSQP
  5636.     based on FSQP_MISSING and NPSOL_MISSING.
  5637.     * g-builtins.cc (builtin_npsol): If NPSOL is missing, always call
  5638.     npsol_usage() to print out message indicating why NPSOL doesn't
  5639.     work.
  5640.     * g-builtins.cc (builtin_fsqp): Likewise for FSQP.
  5641.  
  5642.     * configure.in: Check for srcdir/libcruft/npsol/npsol.f and
  5643.     srcdir/libcruft/fsqp/fsqp.f.  If missing, define NPSOL_MISSING or
  5644.     FSQP_MISSING and add them to DEFS.
  5645.  
  5646.     * libcruft/npsol/README.MISSING: New file.
  5647.     * libcruft/fsqp/README.MISSING: Ditto.
  5648.  
  5649.     * libcruft/npsol/Makefile.in (dist): Don't distribute sources
  5650.     because of license restriction.  Do distribute Makefile.in and
  5651.     README.MISSING.
  5652.     * libcruft/fsqp/Makefile.in (dist): Ditto.
  5653.  
  5654.     * All Makefile.in files (local-dist): New target, usually the same
  5655.     as dist.
  5656.  
  5657.     * parse.y (ans_expression): Check to see that the RHS isn't just
  5658.     an identifier.
  5659.     * tree.cc (tree_identifier::eval (int)): Maybe print id name.
  5660.     * tree.cc (tree_assignment::eval (int)): Ditto.
  5661.     * buitlins.cc (print_answer_id_name): New builtin variable.
  5662.     * utils.cc (print_answer_id_name): New function.
  5663.  
  5664. Tue Nov 10 10:58:36 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5665.  
  5666.     * octave.cc (log_usage): Surround with #if 0/#endif.
  5667.  
  5668. Mon Nov  9 13:42:54 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5669.  
  5670.     * symtab.cc (load): Only issue error mesasge if attempt to find
  5671.     _first_ name keyword fails.
  5672.  
  5673.     * tree-const.cc (make_numeric_or_magic): New function.  Like
  5674.     make_numeric except also pass magic_colons.
  5675.     * tree-const.cc (all do_matrix_index functions): Matrix ndices can
  5676.     be naked colons, so use make_numeric_or_magic on index arguments
  5677.     instead of make_numeric.
  5678.  
  5679.     * liboctave/Makefie.in (install): Install .h files in $(includedir).
  5680.     (includedir): New macro, default value $(prefix)/include.
  5681.  
  5682.     * tree.cc (tree_function::eval (int print)): Force arguments to be
  5683.     undefined.
  5684.  
  5685.     * tree-const.h (tree_constant::assign (rhs, args, nargs)): Check
  5686.     reference count before assigning.
  5687.     * tree.cc (tree_identifier::assign (rhs, args, nargs)): Don't eval
  5688.     lhs before doing assignment.
  5689.  
  5690.     * tree.cc (parse_m_file): Gobble leading white space, including
  5691.     comments.
  5692.  
  5693. Fri Nov  6 16:52:59 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5694.  
  5695.     * Version 0.44.
  5696.  
  5697.     * g-builtins.cc (builtin_getenv): New function.
  5698.  
  5699.     * isempty.m: New M-file.
  5700.  
  5701.     * g-builtins.cc (builtin_exist): New function.
  5702.     * utils.cc (identifier_exists): Handle the dirty details.
  5703.  
  5704.     * utils.cc (warn_comma_in_global_decl): New function.
  5705.     * builtins.cc (warn_comma_in_global_decl): New builtin variable.
  5706.     Initial value is true.
  5707.     * parse.y (global_decl): Handle global declarations here,
  5708.     including optional initialization.
  5709.     * t-builtins.cc (builtin_global): Deleted.
  5710.  
  5711. Thu Nov  5 23:59:39 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5712.  
  5713.     * g-builtins.cc (builtin_feval): New function.
  5714.     * tree-extras.cc (feval): Handle the dirty details.
  5715.  
  5716.     * g-builtins.cc (builtin_rand): New function.
  5717.     * tree-extras.cc (rand): Handle the dirty details.
  5718.  
  5719. Wed Nov  4 14:54:17 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5720.  
  5721.     * num2str.m: New M-file.
  5722.     * int2str.m: Ditto.
  5723.  
  5724.     * g-builtins.cc (builtin_disp): New function.
  5725.  
  5726.     * g-builtins.cc (builtin_fprintf, builtin_printf,
  5727.     builtin_sprintf):  New functions.
  5728.     * tree-extras.cc (do_printf): New function to handle the gory
  5729.     details.
  5730.  
  5731.     * g-builtins.cc (builtin_flops): Implement here because we may
  5732.     actually want to count operations at some point.
  5733.  
  5734. Tue Nov  3 17:06:40 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5735.  
  5736.     * tree-const.cc (do_binary_op): Detect and give error message for
  5737.     optations on empty matrices.
  5738.     (do_unary_op): Likewise.
  5739.  
  5740.     * parse.y (matrix): Convert `[]' and `[;]' to empty matrices
  5741.     instead of (tree_matrix *) NULL.
  5742.  
  5743. Mon Nov  2 11:23:40 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5744.  
  5745.     * src/Makefile.in: Update dependencies.
  5746.     * liboctave/Makefile.in: Ditto.
  5747.  
  5748.     * tree-const.cc (force_numeric): Consult matlab_strings()
  5749.     before doing string to number conversion.
  5750.     * builtins.cc (matlab_strings): New builtin variable.
  5751.     * utils.cc (matlab_strings): New function.
  5752.  
  5753.     * tree-extras.cc (linear_constraints_ok): New function.
  5754.     (linear_constraints_ok): Ditto.
  5755.     (npsol): Use them to avoid creating inconsistent sets of
  5756.     constraints and crashing.  It would really be nice to have
  5757.     exception handling.
  5758.  
  5759.     * symtab.cc (load): Issue error mesasges if attempt to find
  5760.     name keyword fails.
  5761.  
  5762.     * Version 0.43.
  5763.  
  5764.     * tree-extras.cc (npsol): Use new minimize (phi, inform).
  5765.     Handle nargout == 3.
  5766.  
  5767.     * g-builtins.cc (builtin_npsol): Allow nargout == 3.
  5768.  
  5769.     * NPSOL.cc (set_default_options): New function.
  5770.     (all constructors): Use it.
  5771.     (operator =): Use it and print warning message (setting default
  5772.     options doesn't represent a true copy and it would be somewhat
  5773.     difficult to fix this...).
  5774.  
  5775.     * npchkd.f (npchkd): Only write message if msglvl > 0.
  5776.  
  5777. Sun Nov  1 00:58:16 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5778.  
  5779.     * gnuplot-build/Makefile.in (LIBDIRS): Set correctly.
  5780.     (notgnuplot): Use it.
  5781.  
  5782.     * libcruft/misc/gen-d1mach.c: Generate d1mach.f at build time
  5783.     instead of depending on the installer to get it right.
  5784.     * libcruft/Makefile.in (gen-d1mach): New target.
  5785.  
  5786.     * libcruft/Makerules.in (SPECIAL): New macro.
  5787.     (DISTFILES): Include it.
  5788.  
  5789.     * libcruft/Makerules.in (SPECIAL_DEPEND): Ditto.
  5790.     (../../libcruft.a): Use it.
  5791.  
  5792. Mon Oct 26 02:25:11 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5793.  
  5794.     * tree-extras.cc (is_valid_function): Try harder to find M-files
  5795.     that may not have been parsed yet.
  5796.  
  5797.     * symtab.cc (define (symbol_record*)): New function.  Make it
  5798.     simple to copy all fields of a symbol_record if we already have
  5799.     one.
  5800.     * utils.cc (force_global): Use it.
  5801.  
  5802.     * utils.cc (valid_identifier): Allow underscores in names.
  5803.  
  5804.     * tree-extras.cc (npsol): Force column vector to be returned.
  5805.     (fsolve): Ditto.
  5806.  
  5807.     * Version 0.42.
  5808.  
  5809.     * tree-extras.cc (fsolve): New function for solving nonlinear
  5810.     algebraic equations.  This needs much more work if it is to
  5811.     provide all the functionality of Matlab's fsolve.
  5812.  
  5813.     * tree-extras.cc (fsolve_user_function): New function.
  5814.  
  5815.     * libcruft/minpack: Import needed functions.
  5816.  
  5817.     * tree-extras.cc: (npsol (tree_constant*, int, int): Completely
  5818.     rewrite to handle all of the follwing:
  5819.  
  5820.       1. npsol (x, phi)
  5821.       2. npsol (x, phi, lb, ub)
  5822.       3. npsol (x, phi, lb, ub, llb, c, lub)
  5823.       4. npsol (x, phi, lb, ub, llb, c, lub, nllb, g, nlub)
  5824.       5. npsol (x, phi, lb, ub,              nllb, g, nlub)
  5825.       6. npsol (x, phi,         llb, c, lub, nllb, g, nlub)
  5826.       7. npsol (x, phi,         llb, c, lub)
  5827.       8. npsol (x, phi,                      nllb, g, nlub)
  5828.  
  5829.     * tree-extras.cc (npsol_constraint_function): New function.
  5830.  
  5831.     * tree-extras.cc (tree_constant_to_vector): New function.
  5832.     (tree_constant_to_matrix): Ditto.
  5833.     (takes_correct_nargs): Ditto.
  5834.  
  5835. Fri Oct 23 10:19:51 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5836.  
  5837.     * tree-extras.cc (is_valid_function): New function.
  5838.     (npsol): Use it.
  5839.  
  5840.     * utils.cc (s_plural): New function.
  5841.     (es_plural): Ditto.
  5842.  
  5843.     * tree-extras.cc (npsol): Improve checks for valid objective
  5844.     function.
  5845.  
  5846.     * tree.cc (tree_function::max_expected_args): New function.
  5847.  
  5848. Thu Oct 22 18:42:07 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5849.  
  5850.     * g-builtins.cc (builtin_lsode): Quick check of arguments, then
  5851.     call lsode (tree_constant *, int, int).
  5852.     * Move rest of code for implementing builtin_lsode to
  5853.     tree-extras.cc.
  5854.  
  5855.     * g-builtins.cc (builtin_npsol: Quick check of arguments, then
  5856.     call npsol (tree_constant *, int, int).
  5857.     * Move rest of code for implementing builtin_npsol to
  5858.     tree-extras.cc.
  5859.  
  5860.     * tree-const.cc: Simplify functions that require numeric arguments
  5861.     by always calling make_numeric for them instead of doing it
  5862.     conditionally.
  5863.     * tree.cc: Ditto.
  5864.     * tree-extras.cc: Ditto.
  5865.  
  5866.     * tree-const.h (tree_constant::make_numeric): Return *this if
  5867.     already a numeric type.
  5868.  
  5869.     * NLP.cc: In constructors, don't try to assign NULL to bounds
  5870.     objects.
  5871.  
  5872.     * tree-const.cc (tree_constant_rep::valid_as_scalar_index (void)):
  5873.     New function.
  5874.     * tree-const.cc (valid_scalar_indices (tree_constant*, int):
  5875.     New function.
  5876.     * tree-const.cc (tree_constant_rep::do_scalar_index): Simplify by
  5877.     using functions to determine if arguments are valid as indices.
  5878.     (tree_constant_rep::do_scalar_assignment): Likewise.
  5879.  
  5880. Wed Oct 21 14:11:58 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5881.  
  5882.     * tree-extras.cc (determinant): Make it work again.
  5883.  
  5884.     * tree.cc (tree_identifier::eval (tree_constant*, int, int, int):
  5885.     Simplify logic.  Only have one ans->eval() call.
  5886.  
  5887.     * tree-const.cc (tree_constant_rep::eval (tree_constant*, int,
  5888.     int, int): Properly handle indexing of range constants.
  5889.  
  5890.     * tree-const.cc (stupid_fortran_style_matrix_index): Preserve row
  5891.     or column orientation for vectors.
  5892.  
  5893.     * toeplitz.m: New M-file.
  5894.     * invhilb.m: Ditto.
  5895.     * hankel.m: Ditto.
  5896.  
  5897.     * tree-extras.cc (max): Handle two arg case.
  5898.     tree-extras.cc (max): Likewise.
  5899.     (min (Matrix&, Matrix&): New function.
  5900.     (max (Matrix&, Matrix&): Ditto.
  5901.  
  5902. Tue Oct 20 15:13:57 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5903.  
  5904.     * Version 0.41.
  5905.  
  5906. Mon Oct 19 16:46:35 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5907.  
  5908.     * rows.m: New M-file.
  5909.     * g-builtins.cc (builtin_rows): Delete function.
  5910.     * g-builtins.h (builtin_rows): Delete declaration.
  5911.     * builtins.cc (general_functions): Delete from initialization list.
  5912.  
  5913.     * columns.m: New M-file.
  5914.     * g-builtins.cc (builtin_columns): Delete function.
  5915.     * g-builtins.h (builtin_columns): Delete declaration.
  5916.     * builtins.cc (general_functions): Delete from initialization list.
  5917.  
  5918.     * length.m: New M-file.
  5919.     * g-builtins.cc (builtin_length): Delete function.
  5920.     * g-builtins.h (builtin_length): Delete declaration.
  5921.     * builtins.cc (general_functions): Delete from initialization list.
  5922.  
  5923.     * g-builtins.cc (builtin_size): If two values are expected to be
  5924.     returned, put nr and nc in separate registers.
  5925.  
  5926. Sun Oct 18 13:37:17 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5927.  
  5928.     * tree-base.h: Extract base tree class declarations from tree.h.
  5929.     * tree-const.cc, tree-const.h: Extract tree_constant class from
  5930.     from tree.cc, tree.h.
  5931.     Change all uses of tree.h to use either or both of tree-base.h and
  5932.     tree-const.h.
  5933.  
  5934.     * Matrix.cc (solve): Replaces LinEqn class.
  5935.     tree.cc (do_binary_op) Use it.
  5936.  
  5937.     * g-builtins.cc (builtin_max): New function.
  5938.     tree.cc (tree_constant::max): New friend.
  5939.  
  5940.     * g-builtins.cc (builtin_min): New function.
  5941.     tree.cc (tree_constant::min): New friend.
  5942.  
  5943.     * cond.m: New M-file.
  5944.  
  5945.     * rank.m: New M-file.
  5946.  
  5947.     * g-builtins.cc (builtin_svd): New function.
  5948.     tree.cc (tree_constant::svd): New friend function.
  5949.  
  5950.     * g-builtins.cc (builtin_svd): New function.
  5951.     tree.cc (tree_constant::svd): New friend function.
  5952.  
  5953.     * t-builtins.cc (builtin_format): New function.  Implement some of
  5954.     the Matlab options (sort of).
  5955.  
  5956.     * Major changes to liboctave source.  A new Matrix.cc/Matrix.h
  5957.     completely replaces the old Matrix/Vec/AVec code.  All other
  5958.     classes that use Matrix/Vector objects have been updated (or
  5959.     deleted, if they are no longer needed).  All callers changed in
  5960.     octave sources.
  5961.  
  5962. Sun Oct 11 21:22:16 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5963.  
  5964.     * tree.cc (tree_function::eval): Don't define more function
  5965.     parameters than are expected.  If fewer arguments than expected
  5966.     are actually supplied, force them to be undefined.
  5967.  
  5968.     * parse.y (fact): Give warning and abort for identifiers followed
  5969.     by '['.  This should catch most improper uses of [] instead of ()
  5970.     for indexing operators.
  5971.  
  5972.     * tree.cc (do_binary_op (Matrix&, Matrix&, tree::expression_type):
  5973.     Handle element by element exponentiation.
  5974.  
  5975. Tue Sep 22 10:09:06 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5976.  
  5977.     * Version 0.40.
  5978.  
  5979. Mon Sep 21 13:09:06 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5980.  
  5981.     * lex.l: Accept ** and .** as well as ^ and .^ as exponentiation
  5982.     operators.
  5983.  
  5984. Fri Sep 18 15:19:51 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5985.  
  5986.     * tree.h tree.cc utils.cc g-builtins.cc: Elimitate need for
  5987.     overloaded operator-> in the tree_constant class.  Also eliminate
  5988.     uses of ->string, ->scalar, etc.  Instead, always call
  5989.     .string_value(), .double_value(), etc.
  5990.  
  5991.     * builtins.cc (install_builtins): Reserve `ans' as an
  5992.     uninitialized global variable (should it really be global?).
  5993.  
  5994.     * parse.y (ans_expression): Handle default assignemnt to builtin
  5995.     variable ans.
  5996.     (command): Use it.
  5997.  
  5998. Tue Sep 15 14:06:12 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5999.  
  6000.     * Version 0.39.
  6001.  
  6002.     * tree.cc (tree_identifier::bump_value): Don't try to increment
  6003.     undefined symbols or values.
  6004.     (tree_prefix_expression::eval): Don't call bump_value if id is a
  6005.     NULL_TREE.
  6006.     (tree_prefix_expression::eval): Likewise.
  6007.  
  6008.     * g-builtins.cc (lsode_builtin): Handle extra arguments.
  6009.     liboctave/ODE.cc (integ): Add template for handling bad returns
  6010.     from lsode.
  6011.  
  6012.     * tree.cc (class tree_return_command): Implementation is just like
  6013.     break and continue.  Something seems wrong about this...
  6014.     lex.l (return): Recognize return statement.
  6015.     parse.y (statement): Handle function returns.
  6016.     tree.cc (various eval functions): Check to see if we are returning
  6017.     from a function.
  6018.  
  6019.     * tree.cc (tree_for_command::eval): Set abort_on_undefined when
  6020.     evaluating the loop body.
  6021.     (tree_while_command::eval): Ditto.
  6022.  
  6023.     * tree.cc (class tree_idenfier): Improve searching/parsing M-files
  6024.     when handling undefined names.
  6025.     tree.cc (tree_identifier::parse_m_file (char*)): New function.
  6026.     (tree_identifier::parse_m_file (void)): Use it.
  6027.  
  6028.     * utils.cc (force_global): New function.
  6029.     * symtab.cc (symbol_table::remove_name(char *)): New function.
  6030.  
  6031.     * tree.h, tree.cc (class tree_constant): Split into two classes,
  6032.     tree_constant (handle) and tree_constant_rep (body) to enable use
  6033.     of `smart pointers' and reference counted memory management.
  6034.     (Lots of things are different with this change.)
  6035.  
  6036. Sat Aug 22 11:58:27 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6037.  
  6038.     * Version 0.38.
  6039.  
  6040.     * lex.l (COMMA_KLUDGE): Delete production, all uses.  This doesn't
  6041.     seem to be necessary anymore, and the mystery output lines
  6042.     disappear without it.
  6043.  
  6044.     * builtins.cc (make_eternal (char *)): New function.
  6045.     (install_builtins): Make LOADPATH, eps, pi, Inf, and NaN eternal.
  6046.  
  6047.     * New M-files: mean.m, std.m, hadamard.m, vander.m, hilb.m,
  6048.     linspace.m, logspace.m.
  6049.  
  6050.     * tree.cc (tree_function::eval): Don't check number of arguments
  6051.     supplied against total number possible (previously thought to be
  6052.     `expected') so that user-defined functions can have variable
  6053.     numbers of arguments.
  6054.  
  6055.     * tree.cc (tree_identifier::eval_undefined_error): New function.
  6056.     (tree_identifier::eval): Use it.
  6057.  
  6058.     * octave.cc (abort_on_undefined): New global symbol to control
  6059.     whether we should jump to top level after an undefined symbol has
  6060.     been encountered.
  6061.     tree.cc (tree_function::eval) Set it before evaluating function
  6062.     body, restore to previous value after successful completion.
  6063.     tree.cc (tree_identifier::eval_undefined_error): Use it
  6064.  
  6065. Fri Aug 20 09:31:14 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6066.  
  6067.     * g-builtins.cc:  New mapper functions:
  6068.     isnan: Uses xisnan, which calls IEEE function isnan.
  6069.     isinf: Uses xisinf which calls IEEE functions finite and isnan,
  6070.     or isinf if available.
  6071.     finite: Uses xfinite, which calls IEEE function finite.
  6072.     abs: Uses fabs.
  6073.  
  6074.     * g-builtins.cc    (sumsq): New function.
  6075.     (diag): New function.
  6076.  
  6077.     * tree.cc (tree_constant::sumsq): New function
  6078.     (tree_constant::diag): New function
  6079.  
  6080.     * Matrix.cc (sumsq): New function.
  6081.     (diag): Ditto.
  6082.  
  6083. Thu Aug 20 00:36:44 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6084.  
  6085.     * g-builtins.cc (builtin_error): New function.
  6086.  
  6087.     * gnuplot-build/Makefile.in (dist): Actually create `term'
  6088.     subdirectory.
  6089.  
  6090.     * Lots of changes to tree.cc tree_assignment_expression::eval and
  6091.     tree_index_expression::eval to make matrix indexing work like
  6092.     Matlab.
  6093.     (do_fortran_indexing): New user-level variable to control this
  6094.     behavior.  If this variable is false, things like
  6095.  
  6096.       a([1,2;3,4], [1,2;3,4]) = b
  6097.  
  6098.     become syntax errors.  Otherwise, Matlab braindamage prevails.
  6099.  
  6100. Tue Aug 18 13:15:46 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6101.  
  6102.     * Version 0.37.
  6103.  
  6104.     * tree.cc (do_matrix_assignment): Conditionally allow single
  6105.     indices for Matrix assignments.
  6106.     (do_matrix_index): Ditto.
  6107.  
  6108.     * utils.cc (do_fortran_indexing): New function.
  6109.     utils.h: Declare it.
  6110.     builtins.cc (install_builtins): Default value for new
  6111.     do_fortran_indexing variable.
  6112.  
  6113.     * builtins.cc (install_builtins): Bind eps to the value
  6114.     DBL_EPSILON from float.h.  Make it read only (will this cause
  6115.     trouble)?
  6116.     * Bind Inf to 1/0 (will only work for IEEE machines.
  6117.     * Bind NaN to 0/0 (will only work for IEEE machines.
  6118.     * Add round, fix, floor, ceil, and sign to builtin mapper functions.
  6119.     (round): New function.
  6120.     (fix): Ditto.
  6121.     (signum): Ditto.
  6122.     * Add clc (clear screen function).
  6123.     * Add home (clear screen function).  To be just like Matlab, this
  6124.     wouldn't clear the screen.
  6125.  
  6126.     * New M-files: fliplr.m, flipud.m, trace.m, reshape.m.
  6127.  
  6128.     * utils.cc (bind_variable): Revise bind_string_variable so that it
  6129.     takes a tree_constant as an argument.
  6130.     (bind_protected_variable): Likewise for the function
  6131.     bind_protected_string_variable.
  6132.     (bind_string_variable): Delete.
  6133.     (bind_protected_string_variable): Ditto.
  6134.     utils.h: Fix declarations.
  6135.     builtins.cc t-builtins.cc: Fix callers.
  6136.  
  6137.     * builtins.cc (install_builtins): Bind LOADPATH here.
  6138.     octave.cc (initialize_globals): Not here.
  6139.  
  6140.     * Makefile.in (SOURCES): Add new scripts directory.
  6141.     (scripts): New target.
  6142.     libcruft/Makefile.in (install): Don't depend on all.
  6143.  
  6144.     * utils.cc (m_file_in_path): Get path from LOADPATH variable.
  6145.     tree.cc (tree_identifier::parse_m_file): Modify caller.
  6146.  
  6147.     * src/Makefile.in (OCTAVE_M_FILE_DIR): New variable.
  6148.     (utils.o): Use it.
  6149.     utils.cc (default_path): Use it.
  6150.  
  6151.     * utils.cc (pathstring_to_vector): New function.
  6152.     (default_path): Return colon separated path instead of vector of
  6153.     paths.
  6154.     * octave.cc (initialize_globals): Use pathstring_to_vector here.
  6155.     Bind output of default_path to LOADPATH variable.
  6156.     Eliminate octave_path global variable.
  6157.  
  6158.     * tree.cc (isstr): New function.
  6159.     (all): Ditto.
  6160.     (any): Ditto.
  6161.     (cumprod): Ditto.
  6162.     (cumsum): Ditto.
  6163.     (prod): Ditto.
  6164.     (sum): Ditto.
  6165.  
  6166.     * g-builtins.cc (builtin_isstr): New function.
  6167.     (builtin_all): Ditto.
  6168.     (builtin_any): Ditto.
  6169.     (builtin_cumprod): Ditto.
  6170.     (builtin_cumsum): Ditto.
  6171.     (builtin_prod): Ditto.
  6172.     (builtin_sum): Ditto.
  6173.  
  6174.     * Matrix.cc (all): New function.
  6175.     (any): Ditto.
  6176.     (cumprod): Ditto.
  6177.     (cumsum): Ditto.
  6178.     (prod): Ditto.
  6179.     (sum): Ditto.
  6180.  
  6181.     * scripts: New directory.
  6182.     scripts/strcmp.m: New file (first M-file function in distribution!).
  6183.     scripts/Makefile.in: New file.
  6184.     configure.in: Include scripts/Makefile in list of files to create.
  6185.  
  6186. Sat Aug 15 18:32:24 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6187.  
  6188.     * Version 0.36.
  6189.  
  6190. Fri Aug 14 08:44:10 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6191.  
  6192.     * tree.cc (id_to_define): New global variable.
  6193.     (curr_m_file_name): Ditto.
  6194.     (current_infile): Ditto.
  6195.  
  6196.     * tree.h tree.cc (tree_identifier::parse_m_file): New function.
  6197.     (tree_identifier::eval): Handle M-files.
  6198.  
  6199.     * tree.h (stash_m_file_name): New virtual function.
  6200.     (stash_m_file_time): Ditto.
  6201.     (time_parsed): Ditto.
  6202.     (m_file_name): Ditto.
  6203.  
  6204.     * tree.h tree.cc (tree_function::stash_m_file_name) New function.
  6205.     (tree_function::stash_m_file_time): Ditto.
  6206.     (tree_function::time_parsed): Ditto.
  6207.     (tree_function::m_file_name): Ditto.
  6208.  
  6209.     * lex.l (reading_m_file): New global variable.
  6210.     (delete_buffer): New function.
  6211.     (yywrap): New function.  Always return 0 (is this a smart thing to
  6212.     do?).
  6213.  
  6214.     * parse.y (func_def2): Handle input from m-files (sort of).
  6215.  
  6216.     * octave.cc (octave_path): New global variable.
  6217.     (using_readline): Ditto.
  6218.     (no_line_editing): Ditto.
  6219.  
  6220.     * octave.cc (main): Initialize current_command_number before
  6221.     calling setjmp.
  6222.     * Increment it in main command loop, not in parse.y.
  6223.  
  6224.     * utils.h utils.cc (default_path): New function.
  6225.     (m_file_in_path): Ditto.
  6226.     (is_newer): Ditto.
  6227.  
  6228.     * octave.cc (main): Execute commands here.
  6229.     * parse.y (input): Not here.
  6230.  
  6231.     * octave.cc (tree *global_command): New global variable that
  6232.     points to the current command to be executed.
  6233.  
  6234. Thu Aug 13 07:08:11 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6235.  
  6236.     * parse.y: Make word_list_cmd a fact, not a command, so that
  6237.     things like `y = who -all' can work.  You can't do that in Matlab.
  6238.  
  6239.     * t-builtins.cc (builtin_who): Print symbols in columns, sorted.
  6240.     (list_in_columns) New function, mostly stolen from GNU ls.
  6241.  
  6242.     * symtab.h symtab.cc (char **list (void)) New function.
  6243.     (char **sorted_list (void) New function.
  6244.  
  6245.     * tree.cc (various eval functions): Handle printing results of
  6246.     text and general functions here.  Straighten out other printing
  6247.     stuff, maybe...
  6248.  
  6249.     * t-builtins.h t-builtins.cc: Make text functions return
  6250.     tree_constant* instead of int, delete print flag argument.
  6251.  
  6252.     * g-builtins.h g-builtins.cc: Delete print flag argument.
  6253.  
  6254.     * Version 0.35.
  6255.  
  6256. Wed Aug 12 15:12:23 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6257.  
  6258.     * tree.cc (tree_builtin::eval): Call mapper function with
  6259.     print = 0 to avoid getting two answers.
  6260.     (specific do_matrix_assignment functions): Handle resizing
  6261.     correctly for `:' indices.
  6262.     (tree_colon_expression::eval): Don't crash if the evaluation of
  6263.     an operand yields a NULL_TREE_CONST.
  6264.  
  6265. Mon Aug 10 07:31:37 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6266.  
  6267.     * tree.cc (tree_identifier::define):  Return NULL_TREE_CONST if
  6268.     symbol_record::define fails.
  6269.     (tree_identifier::assign): Likewise.
  6270.  
  6271.     * symtab.h (symbol_lifetime): New attribute for symbol_records.
  6272.     Can be either temporary or eternal.
  6273.     (symbol_class): Delete eternal attribute.
  6274.     * builtins.cc (install_builtins): Mark all builtins as eternal.
  6275.  
  6276.     * Version 0.34.
  6277.  
  6278.     * tree.h: Delete ttype, enum list of tree types.
  6279.  
  6280.     * g-builtins.h g-builtins.cc (builtin_colloc): New function.
  6281.  
  6282.     * liboctave (various): Add missing return values, etc. so that
  6283.     liboctave compiles cleanly.
  6284.  
  6285.     * tree.h tree.cc (tree_multi_assignment): New class to implement
  6286.     assignments to more than one variable.  Does it work?  Maybe...
  6287.  
  6288.     * tree.h (tree_constant **eval (int, int)): New virtual function.
  6289.     (is_identifier): Another one.
  6290.  
  6291.     * symtab.h (eternal): New class for symbol_records.
  6292.     * symtab.h symtab.cc (make_eternal): New function.
  6293.     * builtins.cc (install_builtins): Make builtin variables eternal.
  6294.  
  6295.     * tree.cc (list_to_vector): Surround by `#if 0/#endif' to avoid
  6296.     compilation warning.
  6297.  
  6298. Sun Aug  9 03:18:38 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6299.  
  6300.     * t-builtins.h t-builtins.cc (builtin_cd): New function adapted
  6301.     from bash for changing the current working directory.
  6302.     (builtin_pwd): New function adapted from bash for printing the
  6303.     current working directory.
  6304.  
  6305.     * utils.h utils.cc: New functions from bash for changing and
  6306.     printing the current working directory:
  6307.  
  6308.             pathname_backup        make_absolute
  6309.             get_working_directory  change_to_directory
  6310.  
  6311.     * utils.h utils.cc (bind_string_variable): New function.
  6312.     (bind_protected_string_variable): Likewise.
  6313.  
  6314.     * octave.cc (initialze_globals): New function.
  6315.  
  6316.     * utils.h utils.cc: New functions from bash, mostly for fancy
  6317.     prompting:
  6318.  
  6319.         polite_directory_format  absolute_pathname
  6320.         absolute_program         base_pathname
  6321.         read_octal               sub_append_string
  6322.         decode_prompt_string
  6323.  
  6324. Thu Aug  6 02:39:31 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6325.  
  6326.     * octave.cc (initialize_history): Fix up to
  6327.     (octave_hist_file) New global variable.
  6328.     (octave_hist_size) Ditto.
  6329.     (history_lines_this_session) Ditto.
  6330.     (history_lines_in_file) Ditto.
  6331.  
  6332.     * input.cc (octave_gets): Keep track of number of lines read
  6333.     during the current session.
  6334.  
  6335.     * utils.cc (default_history_file): New function.  Look for
  6336.     OCTAVE_HISTFILE environment variable and use its value if
  6337.     possible.
  6338.     (default_history_size): New function.  Look for OCTAVE_HISTSIZE
  6339.     environment variable and use its value if possible.
  6340.  
  6341.     * t-builtins.cc (builtin_history): Steal from bash and modify to
  6342.     work with octave.
  6343.  
  6344.     * g-builtins.cc (builtin_det): New function.
  6345.  
  6346.     * tree.h tree.cc (determinant): New function
  6347.  
  6348.     * g-builtins.cc: Rewrite functions that use fill_matrix, inverse,
  6349.     and identity_matrix to use new versions implemented as friends of
  6350.     tree_constant.  This is being done in an attempt to get rid of all
  6351.     calls to tree_constant::const_type() outside of tree.cc.
  6352.  
  6353.     * tree.cc (tree_constant): Implement new functions for filling
  6354.     and inverting tree constants as matrices, and for creating an
  6355.     identity matrix from a tree_constant.
  6356.  
  6357.     * g-builtins.cc (builtin_inv): New function.
  6358.     builtins.cc: Allow builtin_inv to be called as either inv(A) or
  6359.     inverse(A).
  6360.  
  6361.     * tree.cc (do_binary_op (Matrix, Matrix)): Better handling of
  6362.     solution of linear equations for square coefficient matrices.
  6363.  
  6364.     * LinEqn.cc (solve): Don't exit on singular matrices.  Implement
  6365.     new variations of these functions that will allow status checking.
  6366.  
  6367.     * src/Makefile.in: Define GNUPLOT_BINARY and SITE_DEFAULTS.
  6368.     Specific rules for octave.o and builtins.o to avoid defining
  6369.     GNUPLOT_BINARY and SITE_DEFAULTS for all .cc targets.
  6370.  
  6371.     * builtins.cc: Use macro GNUPLOT_BINARY.
  6372.  
  6373.     * octave.cc (execute_startup_files): Use macro SITE_DEFAULTS.
  6374.     Execute commands from SITE_DEFAULTS file.
  6375.  
  6376.     * t-buitlins.cc (builtin_pause): Make it work.
  6377.  
  6378.     * configure.in: Check for termio.h and/or sgtty.h.
  6379.  
  6380.     * octave.cc (clean_up): Reset terminal state to cooked mode.
  6381.     (main) Likewise, after return from SIGINT signal handler.
  6382.  
  6383.     * utils.h utils.cc (raw_mode): New function (mostly stolen from
  6384.     less(1)) toggle input processing for stdin to raw/cooked modes.
  6385.     (kbhit): New function to read one character from cin in raw mode
  6386.     without echoing it.
  6387.  
  6388.     * builtins.cc: Fix expected number of arguments in lists of
  6389.     builtins.
  6390.  
  6391.     * tree.h tree.cc (max_args_expected (void)): New virtual function.
  6392.     (tree_builtins::) Provide a definition of it.
  6393.  
  6394.     * lex.l (identifier): Before gobbling up text function arguments,
  6395.     check to see that we expect some.
  6396.  
  6397.     * symtab.h symtab.cc (max_args_expected): Return max args expected
  6398.     by a symbol (currently only valid for tree_builtins).
  6399.  
  6400. Wed Aug  5 05:03:59 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6401.  
  6402.     * utils.h utils.cc (resize_on_range_error): Decide what to return
  6403.     based on value of global variable of same name.
  6404.     (prefer_column_vectors): Likewise.
  6405.  
  6406.     * Version 0.33.
  6407.  
  6408.     * parse.y (func_def2): Call define (tree *, symbol_type), not
  6409.     define (tree *), so that the symbol type is set for user-defined
  6410.     functions.
  6411.     (assignment): Catch assignments to functions here.
  6412.  
  6413.     * tree.h tree.cc (tree_identifier::define (tree *, symbol_type):
  6414.     New function (be careful out there...).
  6415.  
  6416.     * symtab.h (symbol_type): Add new `user_function' enum value.
  6417.  
  6418.     * tree.cc (do_matrix_assignment): Call prefer_column_vectors().
  6419.  
  6420.     * tree.h tree.cc (do_matrix_assignment (...)): New functions to
  6421.     implement assignment to indexed matrices.
  6422.     (do_scalar_assignment (...)): New function to implement assignment
  6423.     to an indexed scalar.
  6424.  
  6425.     * utils.h utils.cc (resize_on_range_error): New function.  Should
  6426.     eventually decide what to return based on value of global variable
  6427.     of same name.
  6428.     (prefer_column_vectors): New function.
  6429.  
  6430. Tue Aug  4 05:37:47 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6431.  
  6432.     * tree.cc (tree_constant::save): New function.
  6433.     (tree_constant::load): New function.
  6434.  
  6435.     * symtab.cc (symbol_record::save): New function.
  6436.     (symbol_table::load): New function.
  6437.  
  6438.     * t-builtins.cc (builtin_load): Start implementation.  Yikes, this
  6439.     is probably going to need a lot of work to be very robust...
  6440.  
  6441.     * t-builtins.cc (builtin_save): Implement by asking the
  6442.     symbol_record to save itself.  Maybe this should really be done by
  6443.     asking the symbol table to save a symbol...
  6444.  
  6445.     * utils.cc (extract_keyword): New function.
  6446.     (valid_identifier): New function.
  6447.  
  6448. Fri Jul 31 04:16:24 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6449.  
  6450.     * parse.y (func_def3): Extra error cases for empty function
  6451.     bodies.
  6452.     (func_def1, func_def1a, func_def1b): Slighly straighten out some
  6453.     truly twisted logic, eliminate func_def1a, rename func_def1b to
  6454.     func_def1a, and make statementss like function [x,y] = foo() end
  6455.     work properly (I think).
  6456.     (func_def*): Put function name in global symbol table, not top
  6457.     level symbold table.  This makes them accessible from other
  6458.     functions, eh?
  6459.  
  6460.     * t-builtins.cc (builtin_who): Accept -all, -local, -global, and
  6461.     -top flags.
  6462.  
  6463. Thu Jul 30 00:39:40 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6464.  
  6465.     * lex.l (current_buffer): New function to return current flex
  6466.     input buffer.  Will need this to be able to switch file contexts.
  6467.  
  6468.     * Version 0.32.
  6469.  
  6470.     * lex.l (create_buffer, switch_to_buffer): New functions to handle
  6471.     input from various streams.  This should be enough to allow us to
  6472.     implement Matlab-like M-files.
  6473.     octave.cc (main, execute_startup_files): Use them.
  6474.  
  6475.     * octave.cc (execute_startup_files): Execute commands from
  6476.     $HOME/.octaverc and ./.octaverc.
  6477.  
  6478.     * g-builtins.cc (builtin_plot): Delete temporary files.
  6479.     Ignore SIGINT while gnuplot is executing.
  6480.  
  6481. Wed Jul 29 20:16:25 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6482.  
  6483.     * tree.cc (all_args_defined): New function to check a
  6484.     tree_constant** vector to see if all elements are non-null.
  6485.     (tree_index_expression::eval (int)): Use it, and abort the
  6486.     evaluation if test fails.
  6487.  
  6488.     * terminals.h, terminals.cc: New files for doing things with
  6489.     gnuplot graphics terminal names.
  6490.     src/Makefile.in: Handle new files.
  6491.  
  6492. Tue Jul 28 00:25:24 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6493.  
  6494.     * g-builtins.cc (builtin_plot): Make it work, at least halfway.
  6495.  
  6496.     * g-builtins.cc (builtin_save): New function.
  6497.  
  6498.     * gnuplot-build/Makefile.in: Add -DREADLINE and remove readline.o
  6499.     from list of objects to actually enable the GNU command line
  6500.     editing.
  6501.  
  6502.     * configure.in: Use AC_PROG_CHECK macro to search for f2c and f77.
  6503.     Check for several common Un*x Fortran compilers.
  6504.     Add extra messages.
  6505.  
  6506.     * g-builtins.cc g-builtins.h: New files for builtin general
  6507.     functions extracted from builtins.cc.
  6508.  
  6509.     * t-builtins.cc t-builtins.h: New files for builtin text functions
  6510.     extracted from builtins.cc.
  6511.  
  6512.     * Makefile.in (split-dist): New target.
  6513.  
  6514.     * Version 0.31.
  6515.  
  6516. Mon Jul 27 22:01:58 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6517.  
  6518.     * tree.cc (tree_constant::do_matrix_index (tree_constant **, int):
  6519.     Allow single argument to work for matrices that are really row or
  6520.     column vectors.
  6521.  
  6522.     * lex.l: Accept `<>' in addition to `!=' and `~=' as `not equal'
  6523.     comparison operators.
  6524.  
  6525.     * libcruft/Makerules: Allow for compiling the Fortran routines
  6526.     with the native Fortran compiler instead of translating to C.
  6527.  
  6528.     * f2c-compat.sh, flibs.sh: New scripts which try to determine
  6529.     whether it will be possible for us to use the system's Fortran
  6530.     compiler directly, and if so, what libraries to add to the loader
  6531.     command.  These scripts are known to work on SPARCstations running
  6532.     SunOS and DECstations running Ultrix.  Not tested elsewhere...
  6533.     * configure.in: Use them.
  6534.     * Makefile.in: Distribute them.
  6535.  
  6536. Wed Jul 22 00:04:48 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6537.  
  6538.     * builtins.cc: Begin implementation of NLP solver using NPSOL.
  6539.  
  6540. Tue Jul 21 13:44:13 1992  John W. Eaton  (jwe@june.che.utexas.edu)
  6541.  
  6542.     * octave.cc: If printing version information, also print pointer
  6543.     to warranty info.
  6544.  
  6545.     * builtins.cc: Implement the Matlab functions ones, zeros, eye,
  6546.     clock, date, size, length, and global.
  6547.     Implement warranty builtin.
  6548.     (builtin_clear): Fix to work with global variables.
  6549.  
  6550.     * symtab.cc (clear): Fix to work properly with global variables.
  6551.  
  6552. Mon Jul 20 11:58:23 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6553.  
  6554.     * tree.cc (tree_constant::do_matrix_index (tree_constant**, int)):
  6555.     Make string indices work.
  6556.     (tree_constant::force_numeric): Don't special case
  6557.     single-character strings (this uncovers a flaw in the design of
  6558.     the constructor for the magic colon operator...).
  6559.  
  6560. Fri Jul 17 16:33:00 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6561.  
  6562.     * Version 0.30.
  6563.  
  6564.     * tree.cc: Delete undefined identifiers when trying to eval them.
  6565.  
  6566.     * builtins.cc: Add beginnings of builtin who and clear functions.
  6567.  
  6568.     * symtab.cc symtab.h (clear): New function.
  6569.  
  6570.     * tree.cc, tree.h, parse.y: Implement matrix indexing with colon
  6571.     expressions, implement the magic colon operator for column and row
  6572.     selection.
  6573.  
  6574.     * tree.cc tree.h: Completely rework colon expressions.
  6575.  
  6576. Thu Jul 16 09:27:48 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6577.  
  6578.     * gnuplot-dist: Rename from gnuplot-3.2 so we're not tied to a
  6579.     version number.
  6580.  
  6581. Tue Jul 14 11:22:35 1992  John W. Eaton  (jwe@ward.che.utexas.edu)
  6582.  
  6583.     * tree.cc builtins.cc: Make argc/nargs/nargin work like C:
  6584.     the argument count is the number of command line arguments plus
  6585.     the function name.  This goes for `argument lists' for matrices as
  6586.     well as functions.  It seems a bit awkward but at it's consistent,
  6587.     and it's like C.  Hmm.  Maybe this is a bad choice...
  6588.  
  6589.     * utils.cc utils.h: New files for utility functions.
  6590.  
  6591. Mon Jul 13 00:29:50 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6592.  
  6593.     * Version 0.29.
  6594.  
  6595.     * tree.cc tree_constant::tree_constant (matrix): Automatically
  6596.     convert 1x1 matrices to scalars.
  6597.  
  6598.     * parse.y lex.l: Fix up a bunch of stupid stuff and reduce the
  6599.     number of shift/reduce conflicts to 16 (all but one because of the
  6600.     optional separator garbage).
  6601.  
  6602.     * parse.y lex.l: Allow for assignments to lists of identifiers to
  6603.     be partially parsed.  This will still require some error checking
  6604.     in tree.cc to ensure that the list is made up of identifiers only,
  6605.     since that's not enforced by the grammar (I don't see a way to do
  6606.     it, do you?)
  6607.  
  6608. Sun Jul 12 11:24:33 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6609.  
  6610.     * tree.cc tree.h parse.y lex.l: Implement logical AND (symbol &),
  6611.     OR (symbol |), and not (symbol ~).  Also provide the C-style
  6612.     operators &&, ||, and !).
  6613.  
  6614.     * Matrix.cc Matrix.h: Provide stupid element-wise logical
  6615.     operators for matrices.
  6616.  
  6617.     * Version 0.28.
  6618.  
  6619.     * parse.y lex.l tree.cc tree.h: Implement C-style prefix and
  6620.     postfix increment and decrement operators (symbols ++ and --
  6621.     respectively).
  6622.  
  6623.     * parse.y lex.l tree.cc tree.h: Implement break and continue.
  6624.  
  6625.     * tree.cc tree.h: Assignment to matrix elements roughed out.
  6626.  
  6627.     * gnuplot/tree.cc: Solution of linear equations via the lift
  6628.     division operator partially implemented.  Singular coefficient
  6629.     matrices aren't handled very well yet...
  6630.  
  6631.     * gnuplot-build/Makefile.in: Make this work to build gnuplot for
  6632.     generic X11/unix environments.
  6633.     * Remove -Wall from CFLAGS to avoid loads of warnings.
  6634.     * Use GNU readline instead of the one that comes with gnuplot.
  6635.  
  6636.     * gnuplot-build/*.diff: Various patches for various things.
  6637.  
  6638. Sat Jul 11 10:14:12 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6639.  
  6640.     * Version 0.26
  6641.  
  6642.     * src/Makefile.in: Distribute lex.cc, parse.cc, y.tab.h.
  6643.     * src/Makefile.in (dist): Depend on lex.cc and parse.cc.
  6644.  
  6645.     * gnuplot-build: New directory for patching and building gnuplot.
  6646.     This is apparenty required because the gnuplot license won't allow
  6647.     distrubution of modified versions, but will allow patches to be
  6648.     distributed.
  6649.     * gnuplot-build/Makefile.in: New file.
  6650.  
  6651.     * gnuplot-3.2: New directory.
  6652.  
  6653.     * readline: New directory from the bash-1.12 distribution, plus
  6654.     tilde.c from bash's lib/glob directory and xmalloc.c from bash's
  6655.     lib/malloc directory.
  6656.     * readline/Makefile.in, readline/doc/Makefile.in,
  6657.     readline/examples/Makefile.in: New files.
  6658.  
  6659.     * All Makefie.in files: Allow make to work from any directory, not
  6660.     just the top level one.
  6661.  
  6662. Fri Jul 10 22:20:56 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6663.  
  6664.     * SERVICE: Remove, since it seems too specific to GNU products.
  6665.  
  6666. Thu Jul  9 07:48:33 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6667.  
  6668.     * Version 0.20.
  6669.  
  6670.     * Solution of ODEs with LSODE partially implemented.  It's
  6671.     possible to solve some simple equations.
  6672.  
  6673.     * tree.cc tree.h (tree_constant): Add string constants and make
  6674.     them work more or less like string constants in Matlab (implicit
  6675.     conversion to ASCII numbers -- gag.  This isn't complete, and it
  6676.     it assumes that ASCII is the character set for the host
  6677.     machine/compiler...).
  6678.  
  6679. Tue Jul  7 07:28:35 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6680.  
  6681.     * Version 0.19.
  6682.  
  6683.     * User defined function definitions and calls to them mostly work.
  6684.     Still need to implement multiple return values correctly.
  6685.  
  6686. Mon Jul  6 04:23:37 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6687.  
  6688.     * Version 0.18.
  6689.  
  6690.     * lex.l parse.y tree.cc tree.h: Begin implementation of
  6691.     user-defined functions.
  6692.  
  6693. Sun Jul  5 19:27:08 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6694.  
  6695.     * Version 0.17.
  6696.  
  6697.     * lex.l: Replace SAVE_STRING macro with a function.
  6698.  
  6699.     * builtins.cc (builtin_document): New builtin function.
  6700.     (builtin_help): Make it work.
  6701.  
  6702.     * lex.l: More rules for gathering text.  These are still not quite
  6703.     as they should be, but they will work in most cases.  I think the
  6704.     flex generated scanner is either going to have to be reworked or
  6705.     replaced with a handemade version at some point (probably soon)...
  6706.  
  6707.     * tree.cc tree.h: Add tree_word_list and tree_word_list_command
  6708.     classes for text functions.
  6709.  
  6710. Fri Jul  3 05:13:15 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6711.  
  6712.     * Version 0.16.
  6713.  
  6714.     * builtins.h builtins.cc: New files for builtin functions.
  6715.     Implement a few simple builtin functions.
  6716.  
  6717.     * tree.cc tree.h: Add tree_builtin type for builtin functions.
  6718.  
  6719.     * tree.cc tree.h: eval (args...) New virtual function.
  6720.  
  6721. Thu Jul  2 01:27:38 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6722.  
  6723.     * Version 0.15.
  6724.  
  6725.     * symtab.h, symtab.cc: Allow variables and functions to be tagged
  6726.     as read-only or read-write.
  6727.  
  6728. Wed Jul  1 15:54:36 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6729.  
  6730.     * input.cc and octave.cc: allow input to come from a file.
  6731.  
  6732.     * lex.l: to accept `#' as a comment character (allows one to
  6733.     use the `#!/bin/octave' style script hack).
  6734.  
  6735.     * doc: New directory containing skeleton stuff
  6736.     * SERVICE: New file from GCC.
  6737.     * BUGS: New file, now produced from doc/bugs.texi.
  6738.     * INSTALL: New file, now produced from doc/install.texi.
  6739.  
  6740. Sat Jun 27 15:52:37 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6741.  
  6742.     * Version 0.14.
  6743.  
  6744.     * Fixed parser to eliminate reduce/reduce conflicts.
  6745.  
  6746.     * Fixed parser to recognize assignment to multiple identifiers
  6747.     (e.g., [E,V] = eig (A); ).
  6748.  
  6749.     * Quickie implementation of indexed array evaluation.  Works for
  6750.     scalar indices, but not range/array indices.
  6751.  
  6752. Fri Jun 26 04:23:12 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6753.  
  6754.     * Version 0.12.
  6755.  
  6756.     * Hooks added for indexed array evaluation and assignment.
  6757.     * Colon expression implementation improved.
  6758.     * Implementation of for command eval() improved.
  6759.  
  6760. Thu Jun 25 00:28:12 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6761.  
  6762.     * Version 0.11.
  6763.  
  6764.     * Colon expressions added.
  6765.     * For command added, but the implementation needs work.
  6766.  
  6767. Wed Jun 24 15:09:36 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6768.  
  6769.     * Version 0.10.
  6770.  
  6771.     * Cheesy signal handler added to catch interrupts.
  6772.  
  6773.     * Matrix input works, even for nested matrices.  Some error
  6774.     checking is done while the matrix is evaluated to ensure that
  6775.     the number of rows and columns match up.
  6776.  
  6777. Mon Jun 22 00:21:49 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6778.  
  6779.     * Version 0.9.
  6780.  
  6781.     * Command line matrix input partially implemented.  It's not yet
  6782.     possible to enter nested matrices, but it is possible to enter
  6783.     simple matrices (e.g. [1,2;a,b+c], where a, b, and c are scalars.
  6784.  
  6785.     * Version 0.8.
  6786.  
  6787.     * If commands added.
  6788.  
  6789.     * Version 0.7.
  6790.  
  6791.     * Command chains added.
  6792.     * Boolean operations added, tested for scalars.
  6793.     * While loop added, tested for simple commands.
  6794.  
  6795. Fri Jun 19 05:50:44 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6796.  
  6797.     * Version 0.6.
  6798.  
  6799.     At this early stage, while a lot of changes are being made very
  6800.     quickly, ChangeLog entries will probably just list features added.
  6801.  
  6802.     * Variable assignment works for scalars.
  6803.     * Simple scalar expressions work.
  6804.  
  6805. Thu Jun 18 06:44:24 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6806.  
  6807.     * Version 0.5.
  6808.  
  6809.     * src/version.h: For all the pre-alpha distributions, count
  6810.     versions as 0.1, etc. instead of 0.01.
  6811.  
  6812.     * Makefile: (dist) Automatically update version_string in
  6813.     src/version.h.
  6814.  
  6815.     * symtab.h, symbtab.cc: New files for symbol tables.
  6816.  
  6817.     * tree.h, tree.cc: New files for parse trees.
  6818.  
  6819.     * Lots of work unrecorded here.  Octave is now self-contained, the
  6820.     tree routines are being redesigned, etc.
  6821.  
  6822. Fri Mar 20 17:03:16 1992  John W. Eaton  (jwe@andy.che.utexas.edu)
  6823.  
  6824.     * Version 0.02.  Octave understands some simple matrix
  6825.     expressions, but it is not yet possible for matrix elements to
  6826.     be constructed from expressions.
  6827.  
  6828. Thu Mar 19 06:13:39 1992  John W. Eaton  (jwe@andy.che.utexas.edu)
  6829.  
  6830.     * Version 0.01.  Octave understands simple scalar expressions.
  6831.     Hey, Hey!  It is not yet self contained -- I'm still linking to
  6832.     the old libraries in /usr/local/c++-classes, and this isn't likely
  6833.     to change for a while.  (Other things are much more important than
  6834.     making the distribution work on other machines.  Sorry...)
  6835.  
  6836. Fri Feb 21 05:06:38 1992  John W. Eaton  (jwe@andy.che.utexas.edu)
  6837.  
  6838.     * Version 0.00.  This includes the basic directory structure,
  6839.     makefiles, and a lot of the old Fortran source, including a way to
  6840.     make a libcruft.a.  Octave compiles and accepts input (with
  6841.     history and editing) but doesn't do much else.
  6842.  
  6843. Wed Feb 19 06:20:44 1992  John W. Eaton  (jwe@andy.che.utexas.edu)
  6844.  
  6845.     * ChangeLog: New file.
  6846.