home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / octa21fb.zip / octave / ChangeLog.1 < prev    next >
Text File  |  2000-01-15  |  382KB  |  10,393 lines

  1. Thu Feb 23 09:32:01 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  2.  
  3.     * Version 1.1.1 released.
  4.  
  5.     * src/idx-vector.cc (idx_vector (const Range&)): Always initialize
  6.     data to 0.
  7.     (idx_vector (const Matrix&, int, const char *, int)): Likewise.
  8.     (idx_vector (const idx_vector&): Likewise, do it first.
  9.     * src/idx-vector.h (~idx_vector): Simply delete data.
  10.  
  11.     * octMakefile.in: Combine libcruft, liboctave,dld, info, readline,
  12.     kpathsea, src, scripts, and doc targets into just one.
  13.     (all): Depend on $(SUBDIRS).
  14.     * libcruft/Makefile.in (make-objects): Change to $(SUBDIRS)
  15.     target that doesn't use a loop.
  16.     (all): Depend on $(SUBDIRS).
  17.  
  18. Wed Feb 22 07:27:18 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  19.  
  20.     * Don't leave @LIBDLD@ on a line by itself.
  21.  
  22.     * src/tc-rep-idx.cc (fortran_style_matrix_index): Handle zero-one
  23.     indexing as a separate case.
  24.     (fortran_style_matrix_index): Check for out-of-bounds index.
  25.  
  26.     * src/idx-vector.cc (init_state): Don't forget len, num_zeros, and
  27.     the one_zero flag for vectors of all zero elements.
  28.     (convert_one_zero_to_idx): Set data to zero after deleting it.
  29.  
  30.     * src/data.cc (check_dimensions):
  31.     Handle case of treat_neg_dim_as_zero = "warn".
  32.  
  33. Tue Feb 21 08:18:19 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  34.  
  35.     * src/tree-misc.cc (initialize_undefined_elements): Don't declare
  36.     arg const.
  37.  
  38.     * src/sysdepl.cc (octave_getcwd): Declare arg as char *, not
  39.     const char *.
  40.  
  41.     * src/input.cc (match_sans_spaces): Initialize ep from copy of
  42.     arg, not arg itself.
  43.  
  44.     * octMakefile.in (snapshot-version): Look for OCTAVE_VERSION,
  45.     not just VERSION.  Don't end #define with a semicolon.
  46.  
  47. Mon Feb 20 15:57:17 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  48.  
  49.     * scripts/image/Makefile.in (clean): Delete octtopnm.o and octtopnm.
  50.  
  51. Fri Feb 17 08:12:09 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  52.  
  53.     * src/variables.cc (maybe_add_default_load_path): New function,
  54.     extracted from default_path(), which no longer needs it.
  55.     * src/user-prefs.cc (sv_loadpath): Call it here.
  56.  
  57. Wed Feb 15 15:13:22 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  58.  
  59.     * src/octave.cc (verbose_usage): Format help message more like
  60.     the help messages of other GNU programs.
  61.  
  62.     * src/variables.cc (install_builtin_variables): New builtin
  63.     variable, suppress_verbose_help_message.
  64.     * src/user-prefs.cc (user_prefs): New field,
  65.     suppress_verbose_help_message.
  66.     * src/user-prefs.cc (suppress_verbose_help_message): New function.
  67.     * src/help.cc (additional_help_message): Check
  68.     user_pref.suppress_verbose_help_message before printing message.
  69.  
  70. Tue Feb 14 15:36:01 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  71.  
  72.     * src/sysdep.cc (octave_chdir): New function.
  73.     * src/dirfns.cc (change_to_directory): Use it.
  74.  
  75.     * src/sysdep.cc (octave_getcwd): New function.
  76.     * src/dirfns.cc (get_working_directory, Fpwd): Use it.
  77.     * src/input.cc (decode_prompt_string): Likewise.
  78.  
  79.     * src/version.h (VERSION): New #define.
  80.     (version_string): Use it.
  81.     (OCTAVE_COPYRIGHT): New #define.
  82.     (OCTAVE_NAME_AND_VERSION): New #define.
  83.     (OCTAVE_NAME_VERSION_AND_COPYRIGHT): New #define.
  84.     (OCTAVE_STARTUP_MESSAGE): New #define.
  85.     * src/octave.cc (main): Use new macros from version.h
  86.     (print_version_and_exit): Likewise.
  87.     (verbose_usage): Likewise.
  88.     (Fwarranty): Likewise.
  89.  
  90.     * Makeconf.in (version): Make work with new version.h.
  91.     * octMakefile.in (snapshot-version): Likewise.
  92.  
  93.     * src/variables.cc (default_path): Use SEPCHAR instead of literal ':'.
  94.     * src/utils.cc (pathstring_to_vector): Likewise.
  95.     * src/octave.cc (initialize_globals): Likewise, use SEPCHAR_STR to
  96.     construct format string instead of using literal `:'.
  97.  
  98.     * configure.in: Call AC_DEFINE for SEPCHAR and SEPCHAR_STR.
  99.     * acconfig.h: Add #undefs for SEPCHAR and SEPCHAR_STR.
  100.  
  101.     * src/dynamic-ld.cc: Don't include dld.h unless WITH_DLD.
  102.  
  103.     * src/octave.cc (parse_and_execute): Close file.
  104.  
  105. Mon Feb 13 19:39:12 1995  John Eaton  (jwe@bullwinkle.che.utexas.edu)
  106.  
  107.     * scripts/general/linspace.m: Delete.
  108.     * src/data.cc (Flinspace): New function.
  109.     * liboctave/dRowVector.cc (linspace): New function.
  110.     * liboctave/CRowVector.cc (linspace): New function.
  111.  
  112. Sun Feb 12 21:23:54 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  113.  
  114.     * src/load-save.cc (read_mat_binary_data): Only convert to string
  115.     if the number of rows is 1.
  116.  
  117.     * scripts/image/saveimage.m: Force ASCII save.
  118.  
  119. Thu Feb  9 08:46:09 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  120.  
  121.     * scripts/elfun/sec.m: Returned variable is `w', not `y'.
  122.     * scripts/elfun/sech.m: Likewise.
  123.  
  124. Wed Feb  8 10:51:33 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  125.  
  126.     * src/f-find.cc (find_nonzero_elem_idx): Increment i, j indices by
  127.     1 before stashing them.
  128.  
  129. Fri Feb  3 15:44:03 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  130.  
  131.     * src/tree-misc.cc
  132.     (tree_parameter_list::initialize_undefined_elements): New function. 
  133.     * src/tree-expr.cc (tree_function::eval): Use it to define return
  134.     values.
  135.     (tree_simple_assignment_expression:eval): Complain if RHS is undefined.
  136.     (tree_multi_assignment_expression:eval): Complain if any of the
  137.     RHS values are undefined. 
  138.     * src/user-prefs.h (init_user_prefs): New structure element,
  139.     define_all_return_values.
  140.     * src/user-prefs.cc (define_all_return_values): New function.
  141.     * src/variables.cc (install_builtin_variables): Add DEFVARs for
  142.     default_return_value and define_all_return_values.
  143.     (builtin_any_variable): New function.
  144.  
  145. Wed Feb  1 08:02:28 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  146.  
  147.     * src/parse.y (parse_error): Call yyerror() here.
  148.     (input): Not here.    
  149.  
  150.     * src/lex.l (handle_string): Call have_continuation and
  151.     have_ellipsis_continuation with 0 arg, to disallow comments after
  152.     continuation characters inside strings.
  153.     (have_continuation): New arg, trailing_comments_ok with default
  154.     value of 1.  If !trailing_comments_ok, don't allow comments to
  155.     follow continuation token.
  156.     (have_ellipsis_continuation): New arg, trailing_comments_ok, with
  157.     default value of 1.  Pass it along to have_continuation.
  158.  
  159.     * src/parse.y (yyerror): Call parse_error with first arg == "%s",
  160.     since msg might contain format specifiers.
  161.  
  162.     * src/tree-expr.cc (tree_index_expression::eval (int)): Detect
  163.     undefined elements in argument list and print error message.
  164.     (tree_index_expression::eval (int, int, const Octave_object&)):
  165.     Likewise.
  166.  
  167.     * configure.in: Only set CFLAGS, CXXFLAGS, LDFLAGS, FFLAGS, and
  168.     F2CFLAGS if they are not already set in the environment.
  169.  
  170.     * doinstall.sh: Add -print to find commands.
  171.  
  172. Tue Jan 31 13:26:53 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  173.  
  174.     * src/lex.l (<MATRIX>{S}*\,{S}*): Eat any trailing continuation
  175.     here.  Use value returned from eat_continuation to decide whether
  176.     to insert a row separator.
  177.     (<MATRIX>{S}+): Likewise.
  178.     (<MATRIX>{SNLCMT}*\n{SNLCMT}*): Eat any trailing whitespace here.
  179.  
  180.     * lex.l (ATE_SPACE_OR_TAB, ATE_NEWLINE): New macros.
  181.     (eat_whitespace): Use them to set return value.
  182.  
  183. Mon Jan 30 14:02:24 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  184.  
  185.     * src/user-prefs.cc (set_output_precision): Don't pass NaN to NINT.
  186.     (set_output_max_field_width): Likewise.
  187.     (set_save_precision): Likewise.
  188.     * src/file-io.cc (return_valid_file): Likewise.
  189.     (fgets_internal): Likewise.
  190.     (fseek_internal): Likewise.
  191.     (process_printf_format): Likewise.
  192.     (fread_internal): Likewise.
  193.     * src/f-colloc.cc (Fcolloc): Likewise.
  194.     * src/f-fft.cc (Ffft): Likewise.
  195.     * src/f-fft2.cc (Ffft2): Likewise.
  196.     * src/f-ifft.cc (Fifft): Likewise.
  197.     * src/f-ifft2.cc (Fifft2): Likewise.
  198.     * src/f-npsol.cc (do_npsol_option): Likewise.
  199.     * src/f-qpsol.cc (do_qpsol_option): Likewise.
  200.     * src/f-rand.cc (Frand): Likewise.
  201.     * src/pr-output.cc (all_elements_are_ints): Likewise.
  202.     * src/tree-plot.cc (subplot_using::eval): Likewise.
  203.     (subplot_style::print): Likewise.
  204.     * src/sysdep.cc (Fpause): Likewise.
  205.     * src/tc-rep.cc (TC_REP::valid_as_scalar_index): Likewise.
  206.     (TC_REP::valid_as_zero_index): Likewise.
  207.     (TC_REP::convert_to_str): Likewise.
  208.     * src/tc-rep-idx.cc (TC_REP::do_scalar_index): Likewise.
  209.     (TC_REP::fortran_style_matrix_index): Likewise.
  210.     * src/tc-rep-ass.cc (TC_REP::fortran_style_matrix_assignment):
  211.     Likewise.
  212.  
  213. Sat Jan 28 13:09:44 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  214.  
  215.     * scripts/general/tril.m: Allow the k == nc for k > 0 and
  216.     -k == nr for k < 0.  Make faster by eliminating nested loops.
  217.     * scripts/general/triu.m: Likewise.
  218.  
  219. Fri Jan 27 08:32:10 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  220.  
  221.     * libcruft/lapack: Update with files from LAPACK 2.0.
  222.  
  223.     * src/lex.l (\[{S}*): Don't call fixup_column_count() here.
  224.     Don't use TOK_RETURN here, since we call eat_whitespace().
  225.     (eat_whitespace): Decrement current_input_column when calling
  226.     yyunput().
  227.     (<MATRIX>{SNLCMT}*\n{SNLCMT}): Always call fixup_column_count().
  228.  
  229.     * src/parse.y (rows): Don't accept repeated semicolons.
  230.     (matrix_row): Likewise, for commas.
  231.  
  232.     * src/Makefile.in (LIBOBJS): Delete.
  233.  
  234.     * liboctave/f77-uscore.h: Don't use C++ style comments.
  235.  
  236.     * octMakefile.in (DISTDIRS): Don't include bsd-math.
  237.     * src/Makefile.in (VPATH): Don't include bsd-math directory.
  238.     (SOURCES): Include acosh.c, asinh.c, atanh.c, erf.c erfc.c, and
  239.     lgamma.c.
  240.     * configure.in: Create libcruft/slatec-fn/Makefile.
  241.     Use AC_CHECK_FUNCS to look for acosh, asinh, atanh.
  242.     Don't do anything special if they are missing.
  243.     * src/acosh.c, src/asinh.c, src/atanh.c, src/erf.c, src/erfc.c,
  244.     src/lgamma.c: New files.
  245.     * acconfig.h: Delete #undefs for ACOSH_MISSING, ASINH_MISSING,
  246.     and ATANH_MISSING.
  247.     * libcruft/Makefile.in (CRUFT_DIRS): Add slatec-fn.
  248.     * libcruft/slatec-fn: New directory.
  249.  
  250.     * configure.in: Don't try to use IEEE floating point on m68k HP
  251.     systems.
  252.     
  253. Thu Jan 26 12:57:05 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  254.  
  255.     * src/lex.l (maybe_unput_comma):  New function, extracted from
  256.     handle_identifier().  Correctly handle the dot in things like
  257.     `a.b' inside matrix lists.
  258.     (handle_identifier): Use it.  Don't allow things like [a .1] or
  259.     [a.b .1] to fool us.
  260.  
  261. Wed Jan 25 08:04:16 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  262.  
  263.     * scripts/Makefile.in (realclean): Don't depend on distclean.  Do
  264.     delete Makefile here.
  265.  
  266.     * flibs.sh: Also check for /*values-*.o, for Sun Fortran 2.x.
  267.     * configure.in (FLIB_LIST, CXXLIB_LIST, FLIB_PATH, CXXLIB_PATH):
  268.     Delete any .o files found here.
  269.     When checking for -lm, also append -lc on Linux systems.
  270.  
  271.     * mkinstalldirs: Create directories with mode 0755, to avoid
  272.     problems because the installers umask is too restrictive.
  273.  
  274.     * octave-bug.in: Don't use rmail, it crashes on Ultrix systems if
  275.     the message file isn't just right.  Use nested if statements
  276.     instead of ||, for Ultrix /bin/sh.  Avoid Ultrix awk crash.
  277.  
  278.     * scripts/linear-algebra/trace.m: Handle row and column vectors as
  279.     a special case.
  280.     * scripts/linear-algebra/null.m: Likewise.
  281.     * scripts/linear-algebra/orth.m: Likewise.
  282.  
  283. Tue Jan 24 08:11:51 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  284.  
  285.     * octave-bug.in: Add F2C, F2CFLAGS, FLIBS, and LDFLAGS to report.
  286.     * Makefile.in (octave-bug): Substitute them.
  287.  
  288. Mon Jan 23 20:42:55 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  289.  
  290.     * src/tree-misc.cc (tree_if_clause::is_else_clause): New function.
  291.     (tree_if_command_list::print_code): Use it to decide whether to
  292.     print "else" or "elseif" here.
  293.     (tree_if_clause::print_code): Don't print "else" here.
  294.  
  295.     * scripts/image/colormap.m: Fix logic for initializing default
  296.     colormap and handling subsequent calls with no arguments.
  297.  
  298.     * src/lex.h (TOK_PUSH_AND_RETURN): Correct last change.
  299.  
  300. Sun Jan 22 18:02:37 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  301.  
  302.     * src/lex.l (handle_identifier): Handle incrementing
  303.     current_input_column here.
  304.     ({IDENT}{S}*): Not here.
  305.  
  306.     * src/lex.h (TOK_PUSH_AND_RETURN): New macro.
  307.     * src/lex.l: Use it.
  308.  
  309.     * src/parse.y (yyerror): If printing input line, always print `^'
  310.     error marker too.
  311.  
  312.     * src/parse.y (command [BREAK]): Allow break to occur in function
  313.     bodies too.
  314.     * src/tree-expr.cc (tree_function::eval): Also check to see if
  315.     function exited because of a break statement.
  316.  
  317. Fri Jan 20 10:48:18 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  318.  
  319.     * config.guess: Replace with current version from FSF.
  320.     * config.sub: Likewise.
  321.  
  322.     * src/tempname.c: Include statdefs.h.
  323.  
  324.     * src/tree-expr.cc (eval): Improve error messages.
  325.  
  326. Thu Jan 19 08:33:50 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  327.  
  328.     * src/lex.l (handle_string): Properly handle pending escapes.
  329.     Call error() for unterminated string constants.
  330.     * src/parse.y (input): For parse errors, call yyerror().
  331.  
  332.     * test/config/unix-octave.exp (octave_start): Correctly set OSPATH
  333.     from $OCTAVE_SCRIPT_PATH, not to the string OCTAVE_SCRIPT_PATH.
  334.  
  335.     * test/Makefile.in (OCTAVE_SCRIPT_PATH): Delete surrounding quotes
  336.     in definition.
  337.  
  338.     * doc/texinfo.tex: Move to version 2.140.
  339.  
  340.     * src/f-rand.cc (Frand): Use different method for generating
  341.     initial seed so that it varies more each time Octave starts.
  342.  
  343.     * src/file-io.cc (feof_internal): Use args(0), not args(1).
  344.  
  345.     * src/Makefile.in (SOURCES): Use tempnam.c, not tmpnam.c.
  346.     * src/tempnam.c: New file, from the GNU C library.
  347.  
  348. Wed Jan 18 08:10:31 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  349.  
  350.     * src/user-prefs.h (user_prefs): New field, read_only_constants.
  351.     * src/user-prefs.cc (read_only_constants): New function.
  352.     * src/variables.cc (install_builtin_variables): Add DEFVAR for
  353.     read_only_constants, but leave it #if 0'd out since we're not
  354.     really ready for it yet..
  355.     * src/symtab.cc (symbol_record::read_only_error): Check
  356.     user_prefs.read_only_constants to see if it is ok to redefine
  357.     constants that are marked as read-only.
  358.  
  359.     * src/user-prefs.h (user_prefs): New field, ps4.
  360.     * src/user-prefs.cc (sv_ps4): New function.
  361.     * src/variables.cc (install_builtin_variables): Add DEFVAR for PS4.
  362.     * src/input.cc (do_input_echo): New function.  Use PS4 variable as
  363.     prefix of echoed input.  Send echoed input through the pager.
  364.  
  365.     * flibs.sh: Ignore -lang* options.
  366.  
  367.     * src/load-save.cc (Fsave): Send `save - ...' output through the
  368.     pager.
  369.  
  370.     * doc/Makefile.in: Create and distribute refcards of various sizes.
  371.     Delete rules for making refcard.tex from refcard.tex.in.
  372.     Don't make or distribute refcard-local.
  373.     * doc/refcard.tex: Handle setting paper size with \refcardsize.
  374.     * doc/refcard-a4.tex, doc/refcard-legal.tex, doc/refcard-letter.tex:
  375.     New files.
  376.  
  377. Mon Jan 16 13:19:29 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  378.  
  379.     * src/tc-rep-ass.cc (TC_REP::do_scalar_assignment): Handle
  380.     assignments like a(0) = [].
  381.     * src/tc-inlines.h (valid_zero_index): New function.
  382.     * src/tc-rep.cc (valid_as_zero_index): New function.
  383.     * src/tree-const.h (valid_as_zero_index): New function.
  384.  
  385.     * src/parse.y (func_def2): Check user_prefs before warning about
  386.     function name and function file name conflict.
  387.     * src/user-prefs.h (user_prefs): New field, warn_function_name_clash.
  388.     * src/user-prefs.cc (warn_function_name_clash): New function.
  389.     * src/variables.cc (install_builtin_variables): Add DEFVAR for
  390.     warn_function_name_clash.
  391.  
  392.     * scripts/image/octtopnm.c: Include stdlib.h instead of malloc.h.
  393.  
  394. Sun Jan 15 15:08:04 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  395.  
  396.     * readline/rldefs.h: Use new #defines for directory headers now
  397.     that we are using autoconf 2.
  398.  
  399.     * scripts/special-matrix/hankel.m: Use .', instead of '.
  400.  
  401.     * src/input.cc (match_sans_spaces): Use strcmp, not strncmp.
  402.  
  403.     * src/tc-rep-ass.cc (TC_REP::fortran_style_matrix_assignment):
  404.     For scalar index, don't do assignment if RHS and LHS are both empty.
  405.  
  406.     * src/data.cc (Fsize): Handle optional second arg.
  407.  
  408.     * src/tree-expr.cc (tree_function::eval (int)): Correctly set
  409.     nargin and nargout to zero when evaluating function.
  410.  
  411.     * src/lex.l (handle_string): Correct handling of string escapes.
  412.  
  413. Thu Jan 12 15:25:34 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  414.  
  415.     * Version 1.1.0 released.
  416.  
  417.     * octMakefile.in (bin-dist-tar): Ignore errors on strip commands.
  418.  
  419.     * src/tree-expr.cc (tree_builtin::eval (int)): Set nargout to 0
  420.     when calling function.
  421.  
  422.     * doc/Makefile.in (FORMATTED): Add refcard.dvi and refcard.ps so
  423.     that they are distributed along with the other docs.
  424.     * octMakefile.in (clean-doc-dist-tar): Delete target.
  425.     (doc-dist): Depend on doc-dist-tar, not    clean-doc-dist-tar. 
  426.  
  427. Tue Jan 10 14:29:43 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  428.  
  429.     * src/help.cc (print_usage): Print warning if symbol isn't found.
  430.  
  431.     * src/utils.cc (Fundo_string_escapes): Fix typo in call to
  432.     print_usage().
  433.  
  434.     * src/octave.cc (Fsystem): Correctly compute exit code.
  435.  
  436.     * scripts/miscellaneous/etime.m: Complain if args are not the
  437.     right length, not if they are.  Reverse sense of test for years.
  438.     Duh.
  439.  
  440.     * src/f-find.cc (find_to_fortran_idx): For the case of one output
  441.     argument, return a row vector if the original argument to find was
  442.     a row vector.
  443.  
  444. Mon Jan  9 12:57:27 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  445.  
  446.     * src/lex.l (grab_help_text): Always overwrite help_buf.
  447.     ({CCHAR}): Don't call grab_help_text() if there is already
  448.     something in help_buf.
  449.  
  450. Sat Jan  7 12:28:35 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  451.  
  452.     * configure.in (HOST_CXXFLAGS): New variable to substitute.
  453.     * Makeconf.in (ALL_CXXFLAGS, UGLY_ALL_CXXFLAGS, BUG_CXXFLAGS):
  454.     Add $(HOST_CXXFLAGS).
  455.  
  456. Fri Jan  6 13:07:09 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  457.  
  458.     * scripts/special-matrix/toeplitz.m: Use .' instead of '.
  459.  
  460. Tue Jan  3 18:14:33 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  461.  
  462.     * test: Rewrite many tests to not run Octave interactively.  This
  463.     makes the log files much more readable.
  464.  
  465.     * octMakefile.in (clean-tar): Delete octave-test/npsol directory,
  466.     not just test/octave.test/npsol.exp.  Likewise, add a command for
  467.     deleting qpsol tests.
  468.  
  469. Mon Jan  2 20:02:10 1995  John Eaton  <jwe@schoch.che.utexas.edu>
  470.  
  471.     * src/octave.cc (main): Return 0 if error_state is not set.
  472.  
  473.     * src/error.cc (error_1): New function.
  474.     (error): Use it.
  475.     (parse_error): New function.
  476.     * src/parse.y: Never call error and yyerror; just use yyerror.
  477.     (yyerror): Improve logic.  Use new parse_error() function so that
  478.     error_state is always set for a parse error.  Don't use
  479.     ostream::form().
  480.     (ABORT_PARSE): Don't call reset parser here.
  481.     (colon_expr): Don't call yyerror here.  An error message is
  482.     printed by tree_colon_expression::chain() if it fails.
  483.  
  484. Mon Dec 26 20:11:01 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  485.  
  486.     * src/tree-expr.cc (eval): Only call multi-arg form of eval for
  487.     object_to_eval if necessary.
  488.  
  489. Fri Dec 23 00:08:08 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  490.  
  491.     * src/lex.l: Don't increment promptflag anywhere.
  492.     (eat_continuation): New function.
  493.     (eat_whitespace): Handle embedded continuations.  Return nonzero
  494.     if whitespace consumed.
  495.     (handle_close_brace): Don't pass yytext.  Do pass flag indicating
  496.     whether whitespace follows brace.
  497.     (handle_identifier): Check for next token being `=' here.  Pass
  498.     flag indicating whether whitespace follows identifier.
  499.     (<MATRIX>{SNLCMT}*;{SNLCMT}*): Call eat_whitespace() here.
  500.     ({IDENT}{S}*): Call eat_continuation() here.
  501.     (do_comma_insert_check): And here, but put a space back if
  502.     whitespace is gobbled.
  503.     (have_continuation, have_ellipsis_continuation): Decrement
  504.     promptflag here.
  505.  
  506. Wed Dec 21 09:56:49 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  507.  
  508.     * src/tree-plot.cc (Fclearplot): Send "set nolabel" too.
  509.  
  510. Mon Dec 19 17:50:15 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  511.  
  512.     * src/tree-plot.h, src/tree-plot.cc (subplot): Rename using to
  513.     using_clause to avoid new C++ keyword.  Rename title and style to
  514.     match.
  515.  
  516. Fri Dec 16 00:09:01 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  517.  
  518.     * configure.in: Don't check for fpsetmask.
  519.     * src/sysdep.cc (sysdep_init): Don't check HAVE_FPSETMASK
  520.  
  521. Thu Dec 15 00:28:52 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  522.  
  523.     * src/variables.cc (install_builtin_variables) [default_save_format]: 
  524.     Fix doc string.
  525.  
  526.     * configure.in: Rework DEFAULT_DOT_O_FROM_DOT_F and
  527.     DEFAULT_DOT_C_FROM_DOT_F to avoid embedded newlines.
  528.     * Makeconf.in: Likewise.
  529.  
  530.     * src/pager.cc (flush_output_to_pager): Close stream before
  531.     resetting signal handler.
  532.  
  533.     * src/help.cc (Fhelp): Call fcn_file_in_path here.  Delete it too.
  534.     Print file name before help message.
  535.     * src/variables.cc (get_help_from_file): Don't call
  536.     fcn_file_in_path here.
  537.     (gobble_leading_white_space): Correctly grab only first set of
  538.     comments.
  539.     
  540. Wed Dec 14 11:42:13 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  541.  
  542.     * src/parse.y (pager_buf): Don't make it a fixed-size array.
  543.     * src/variables.cc (get_help_from_file): New function.
  544.     (gobble_leading_white_space): Return first block of comments for
  545.     later use as help string.
  546.     (looks_like_octave_copyright): New function.
  547.     (parse_fcn_file): Stash help from gobble_leading_white_space in
  548.     global help_buf.
  549.     * src/lex.l (grab_help_text): Don't overwrite help found by
  550.     gobble_leading_white_space.
  551.     (reset_parser): Delete help_buf.
  552.     * src/help.cc (Fhelp): Only try to get help from symbol records
  553.     that are defined.  If all else fails, try get_help_from_file.
  554.  
  555.     * src/pager.cc (flush_output_to_pager): Re-initialize pager_buf
  556.     immediately after extracting message.  Delete message immediately
  557.     after sending it to the output stream.  Ignore interrupts while
  558.     running pager.
  559.  
  560.     * octMakefile.in (clean-tar): Delete npsol.exp and any .m files
  561.     that are in the test/octave.test directory.
  562.     (install): Use $(INSTALL), not just install.
  563.  
  564.     * src/lex.l (reset_parser): Don't reset input column or line
  565.     number if reading from a script file or a function file.
  566.     (is_keyword): Don't set line number to 1 if reading function file
  567.     or script file.
  568.     * src/variables.cc (gobble_leading_whitespace): Count lines.
  569.     * src/octave.cc (main): If reading file, set reading_script_file
  570.     and curr_fcn_file_name before calling get_input_from_file().
  571.  
  572.     * src/tc-rep.cc (TC_REP::matrix_value): If implicit_str_to_num_ok,
  573.     convert empty string to empty matrix.
  574.  
  575. Tue Dec 13 20:25:34 1994  Frederick (Rick) A Niles <niles@axp745.gsfc.nasa.gov>
  576.  
  577.     * liboctave/dbleQR.cc, liboctave/dbleQRP.cc, liboctave/CmplxQR.cc,
  578.     liboctave/CmplxQRP.cc: Get economy-sized dimensions correct.
  579.  
  580.     * libcruft/misc/i1mach.f, libcruft/misc/gen-d1mach.c,
  581.     libcruft/ranlib/ignuin.f: Prevent warnings about variable may be
  582.     used before defined.
  583.  
  584. Tue Dec 13 11:07:34 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  585.  
  586.     * src/variables.cc: Change commas_in_literal_matrix to
  587.     whitespace_in_literal_matrix.
  588.     * src/user-prefs.h (user_preferences): Likewise.
  589.     * src/user-prefs.cc (init_user_prefs): Likewise.
  590.     (whitespace_in_literal_matrix): Likewise, rename function.
  591.     * src/lex.l: Likewise.
  592.     (nesting_level): Rename from in_brace_or_paren.
  593.     (<MATRIX>{SNLCMT}*\n{SNLCMT}*): Make separate case from
  594.     <MATRIX>{SNLCMT}*;{SNLCMT}.  Check nesting level to decide whether
  595.     to convert newline to semicolon.
  596.     ({NL}, {CCHAR}): Check nesting level to decide whether to eat
  597.     or return newline. 
  598.     ("("): Decrement promptflag.
  599.     (")"): Increment promptflag.
  600.  
  601. Mon Dec 12 00:02:51 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  602.  
  603.     * scripts/Makefile.in, scripts/*/Makefile.in (install): Don't
  604.     depend on all.
  605.  
  606.     * octMakefile.in: Put doc dir last.
  607.     * doc/Makefile.in (dir): New file.
  608.     (DISTFILES): Distribute dir.
  609.     (install): Install dir if it does not already exist in $(infodir).
  610.     Otherwise, print message.
  611.  
  612.     * src/lex.l: Handle {IDENT}{S}*/= with yyinput() instead of
  613.     trailing context.
  614.     (handle_close_brace): New function.
  615.     (handle_number): New function.
  616.     (have_continuation, handle_ellipsis_continuation, handle_string):
  617.     New functions for handling strings and continuation lines in
  618.     string constants.
  619.     (eat_whitespace): New function eliminates need for NEW_MATRIX
  620.     start state.
  621.  
  622. Sun Dec 11 15:53:03 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  623.  
  624.     * src/lex.l: Eliminate special case for eating whitespace when
  625.     start state is <TEXT_FCN>.
  626.     Merge three cases for handling `]' for <MATRIX> start state.
  627.  
  628. Fri Dec  9 12:21:35 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  629.  
  630.     * src/lex.l: Handle `\' as a continuation character too.
  631.     Allow comments and blanks to follow continuation characters.
  632.     Improve handling of comments in matrices.  Create a few more
  633.     definitions for patterns.  Restructure source.
  634.  
  635.     * configure.in: Check for bcopy too.
  636.  
  637.     * configure.in (gxx_version): Don't use -fno-implicit-templates on
  638.     AIX systems with g++ 2.6.x.
  639.  
  640.     * octave-bug.in: Check for CC: lines too.  Use case-insensitive
  641.     match for To: and Cc: lines.  Actually send file that has header
  642.     separator stripped.  Print list of CC: addresses too.
  643.  
  644.     * src/input.cc (get_user_input): If user enters empty string,
  645.     return empty matrix or empty string.
  646.  
  647.     * src/help.cc (Fhelp, Ftype, Fwhich): Don't allow lookup_by_name
  648.     to execute script files.
  649.  
  650. Thu Dec  8 23:20:02 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  651.  
  652.     * src/tc-rep.cc (print): Don't check `print', which is not a
  653.     variable in this context.
  654.  
  655. Wed Dec  7 10:52:59 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  656.  
  657.     * src/configure.in: Check for fpsetmask.
  658.     * src/sysdep.cc (sysdep_init): Check HAVE_FPSETMASK.  Only call it
  659.     if either __386BSD__ or __FreeBSD__ is defined.
  660.     Don't check __386BSD__ as a condition for including
  661.     floatingpoint.h.
  662.  
  663. Mon Dec  5 12:29:07 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  664.  
  665.     * src/utils.cc: Update directory header macro names for autoconf 2.
  666.     * src/dirfns.cc: Likewise.
  667.  
  668. Sun Dec  4 22:00:40 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  669.  
  670.     * octMakefile.in (DISTFILES): Don't distribute GCC.PATCH, since it
  671.     is not needed with gcc 2.6.3.
  672.  
  673.     * configure.in: Really do disable IEEE floating point functions on
  674.     the Alpha.
  675.  
  676. Wed Nov 30 11:42:44 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  677.  
  678.     * doc/FAQ.texi: New file.
  679.     * doc/Makefile.in: Create info, dvi, and ps files and distribute
  680.     them.
  681.  
  682.     * Makefile.in (all): Expand initial message.
  683.  
  684. Sat Nov 26 21:47:05 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  685.  
  686.     * src/octave.cc (Fcomputer): Always append ios::ends to ostrstream
  687.     before returning.
  688.  
  689. Mon Nov 21 09:41:34 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  690.  
  691.     * src/lex.l: When start state is TEXT_FCN, gobble blanks with
  692.     pattern that matches only blanks before other patterns that can
  693.     also match just blanks.  Always check whether in_brace_or_paren
  694.     stack is empty before trying to use it.
  695.  
  696.     * src/parse.y (make_multi_val_ret): Call constructor for
  697.     tree_simple_assignment_expression with correct number of args.
  698.  
  699.     * scripts/plot/shg.m: New function.
  700.  
  701.     * src/f-qpsol.cc (Fqpsol): Correct for changes in meaning of
  702.     nargin and the way args is loaded.
  703.     * src/f-npsol.cc (Fnpsol): Likewise.
  704.  
  705.     * scripts/polynomial/roots.m: Return empty matrix for scalar or
  706.     empty matrix args.
  707.  
  708.     * src/tree-plot.cc (gnuplot_terminal_type): New static variable.
  709.     (Fset): If this is a set term command, set gnuplot_terminal_type.
  710.     (open_plot_stream): Use gnuplot_terminal_type if it is set.
  711.  
  712.     * src/idx-vector.cc (idx_vector::init): Don't check max value of
  713.     index vector against dimension here.  We may need to resize.
  714.     * src/tc-rep-idx.cc (do_scalar_index): Do check idx-vector max
  715.     value here.
  716.  
  717.     * src/lex.l (is_plot_keyword): Don't set past_plot_range here.
  718.     Don't accept abbreviations for clear.
  719.     (handle_identifier): Don't call is_plot_keyword unless plotting.
  720.     Set past_plot_range here, before checking for plot option keywords.
  721.  
  722. Fri Nov 18 17:25:59 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  723.  
  724.     * src/data.cc (Fis_struct): New function.
  725.  
  726. Thu Nov 17 18:13:56 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  727.  
  728.     * octMakefile.in (DISTFILES): Distribute GCC.PATCH.  Don't
  729.     distribute LIBG++.PATCH.
  730.  
  731.     * src/tree-plot.cc (Fclearplot): Turn off grid and reset
  732.     plot_line_count to zero.
  733.  
  734.     * configure.in: Check for sys/resource.h.
  735.     Create scripts/strings/Makefile too.
  736.  
  737.     * src/timefns.cc: Surround inclusion of sys/resource.h in extern "C".
  738.     Only include sys/resource.h if both HAVE_SYS_RESOURCE_H and
  739.     HAVE_GETRUSAGE are defined.
  740.  
  741. Wed Nov 16 09:26:10 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  742.  
  743.     * scripts/plot/plot_opt.m: New function.
  744.     * scripts/plot/semilogx.m, scripts/plot/semilogx.m,
  745.     scripts/plot/loglog.m, scripts/plot/plot.m: Handle additional
  746.     args and format strings.
  747.     * scripts/plot/polar.m: Handle format arg.
  748.     * scripts/plot/polar_int_1.m, scripts/plot/polar_int_2.m: Extract
  749.     from polar_int.m.
  750.     * scripts/plot/plot_int_1.m, scripts/plot/plot_int_2.m: Extract
  751.     from plot_int.m.
  752.     * scripts/plot/plot_2_s_s.m, scripts/plot/plot_2_v_v.m,
  753.     scripts/plot/plot_2_m_m.m, scripts/plot/plot_2_v_m.m,
  754.     scripts/plot/plot_2_m_v.m: Handle format arg.
  755.  
  756.     * scripts/strings/strcmp.m: Move here.
  757.     * scripts/general/strcmp.m: From here.
  758.  
  759.     * src/xdiv.cc (result_ok): Issue warning instead of error if warn
  760.     is nonzero.
  761.  
  762. Tue Nov 15 15:54:19 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  763.  
  764.     * src/tree-plot.cc (Fcloseplot): Clear title and labels too.
  765.  
  766.     * src/help.cc (keywords): Add entries for all_va_args,
  767.     unwind_protect, unwind_protect_cleanup, and end_unwind_protect.
  768.  
  769.     * liboctave/Makefile.in: Use -include for dependency files.
  770.     * src/Makefile.in: Likewise.
  771.  
  772. Mon Nov 14 10:28:23 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  773.  
  774.     * src/tree-misc.cc (convert_to_const_vector): Resize vector before
  775.     returning.
  776.  
  777.     * src/lex.l (plot_style_token): Also allow "steps", "boxes", and
  778.     "boxerrorbars".
  779.  
  780.     * src/parse.y (UNWIND): Rename from UNWIND_PROTECT.
  781.     (CLEANUP): Rename from UNWIND_PROTECT_CLEANUP.
  782.     (command): Allow optsep after UNWIND and CLEANUP tokens.
  783.     * src/lex.l (is_keyword): Use new token names
  784.  
  785.     * src/tree-const.h (tree_constant::all_va_args): New enum.
  786.     (tree_constant (tree_constant::all_va_args t)): New constructor.
  787.     (is_all_va_args): New function.
  788.     (is_empty, is_zero_by_zero, make_numeric_or_magic,
  789.     make_numeric_or_range_or_magic): Handle    all_va_args type.
  790.     * src/tc-rep.h (constant_type::all_va_args): New enum element.
  791.     (is_all_va_args): New function.
  792.     * src/tc-rep.cc (TC_REP::tree_constant_rep (TC_REP::constant_type),
  793.     TC_REP::print_code): Handle all_va_args.
  794.     * src/tree-misc.cc (tree_argument_list::convert_to_const_vector):
  795.     Handle all_va_args.
  796.     * src/tree-expr.cc (tree_index_expression::eval): After call to 
  797.     tree_argument_list::convert_to_const_vector (), check error_state.
  798.     (tree_simple_assignment_expression::eval): Likewise.
  799.     (tree_function::octave_all_va_args): New function.
  800.     * src/parse.y (ALL_VA_ARGS): New token.
  801.     (arg_list): Handle ALL_VA_ARGS.
  802.     * src/lex.l (is_keyword): Handle all_va_args.
  803.  
  804.     * src/tree-expr.cc (tree_identifier::bump_value): Check read-only
  805.     status of sym before altering value.
  806.     (tree_prefix_expression::eval): Check error_state after call to
  807.     tree_identifier::bump_value ().
  808.  
  809.     * src/variables.cc (bind_nargin_and_nargout): Don't make nargin
  810.     and nargout read only.
  811.  
  812.     * scripts/strings: New subdirectory for string functions.
  813.     * scripts/Makefile.in (SUBDIRS): Add strings.
  814.     * scripts/strings/strcat.m: New function.
  815.  
  816. Fri Nov 11 14:17:31 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  817.  
  818.     * src/load-save.cc (extract_keyword): Allow trailing blanks on the
  819.     input line. 
  820.  
  821. Thu Nov 10 09:53:35 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  822.  
  823.     * scripts/general/reshape.m, scripts/image/ind2gray.m,
  824.     scripts/image/ind2gray.m, scripts/image/ind2rgb.m,
  825.     scripts/image/rgb2ind.m: unwind_protect do_fortran_indexing.
  826.     * scripts/general/strcmp.m: unwind_protect implicit_str_to_num_ok.
  827.     * scripts/miscellaneous/menu.m: unwind_protect page_screen_output.
  828.  
  829.     * src/parse.y (UNWIND_PROTECT, UNWIND_PROTECT_CLEANUP): New tokens.
  830.     (command): Handle unwind-protect.
  831.     * src/lex.l (is_keyword): Handle unwind_protect,
  832.     unwind_protect_cleanup, and end_unwind_protect.
  833.     * src/tree-cmd.cc (tree_unwind_protect_command): New class, to
  834.     handle unwind-protect.
  835.  
  836.     * src/token.h (end_tok_type): New field, end_unwind_protect.
  837.  
  838.     * src/error.cc (verror): Flush pending output to pager here.
  839.     (error): Not here.
  840.  
  841.     * src/tc-rep.cc (force_numeric): Don't jump to top level on error.
  842.     * src/tc-rep.cc, src/tc-rep-ass.cc, src/tc-rep-idx.cc: Check
  843.     error_state after calls to make_numeric* functions.
  844.  
  845.     * src/f-lpsolve.cc: Define Flp_solve and Flp_solve_options, not
  846.     Flpsolve or Flpsolve_options.
  847.  
  848.     * src/utils.cc (Ffile_in_path): Define Ffile_in_path, not
  849.     Ffile_in_pat.
  850.  
  851.     * src/f-inv.cc: Add DEFUN for inverse.
  852.  
  853. Wed Nov  9 09:30:15 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  854.  
  855.     * src/load-save.cc (read_mat_file_header): Check for mopt < 0 too.
  856.     Don't fail if reading mopt fails.
  857.     (save_mat_binary_data): Handle range data as a special case.
  858.     (get_default_save_format): Also accept `mat-binary' and
  859.     `mat_binary'.
  860.     (Fsave): Add ios::trunc to flags for opening output file.
  861.  
  862.     * src/parse.y (func_def2): Stash function name before stashing
  863.     file name.
  864.  
  865.     * src/utils.cc (fcn_file_in_path): Don't append `.m' if the name
  866.     already ends in `.m'.
  867.     (oct_file_in_path): Likewise, for `.oct'.
  868.  
  869.     * src/error.cc (usage): Set error state to -1, so we get traceback
  870.     information after a call to usage.
  871.  
  872.     * src/tree-expr.cc (stash_fcn_file_name): Store full name of the
  873.     file.
  874.  
  875.     * scripts/*/*.m: Change messages to say `invalid' instead of
  876.     `illegal', since no laws are being broken by using these functions
  877.     incorrectly.
  878.  
  879.     * src/timefns.cc (Fcputime): New function.
  880.     * configure.in: Check for getrusage.
  881.  
  882.     * src/scripts/miscellaneous/tic.m: New function.
  883.     * src/scripts/miscellaneous/toc.m: New function.
  884.     * src/scripts/miscellaneous/etime.m: New function.
  885.     * src/scripts/miscellaneous/is_leap_year.m: New function.
  886.  
  887.     * src/error.cc (Fwarning, Fusage): New functions.
  888.     * scripts/*/*.m: Use them instead of printing warning and usage
  889.     messages directly with disp, printf, or fprintf.
  890.  
  891.     * src/file-io.cc (close_files): Check Pix before using.
  892.     (file_count): Delete unnecessary variable.  Instead, use
  893.     DLList::length to get the number of files in the list.
  894.  
  895.     * src/sighandlers.cc (install_signal_handlers): Explicitly ignore
  896.     SIGPOLL and SIGIO.
  897.  
  898. Tue Nov  8 15:26:50 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  899.  
  900.     * scripts/general/logspace.m: Lose fractional part of third arg.
  901.     Don't round, for compatibility with Matlab.
  902.     * scripts/general/linspace.m: Likewise.
  903.  
  904.     * liboctave/CMatrix.cc (row_min, row_max, row_min_loc, row_max_loc):
  905.     Handle case of row containing only real elements.
  906.     (column_min, column_max, column_min_loc, column_max_loc):
  907.     Likewise, for columnwise operations.
  908.     * src/f-minmax.cc (two-complex-arg min, max): Handle case of both
  909.     columns containing only real elements.
  910.  
  911.     * src/variables.cc (Fclear): Pass 0 to symbol_table::list() for
  912.     pats and npats.
  913.  
  914. Mon Nov  7 20:22:36 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  915.  
  916.     * liboctave/dColVector.cc (operator +=): Don't return reference to
  917.     temporary.
  918.     (operator -=): Likewise.
  919.     * liboctave/CMatrix.cc (operator +=, operator -=): Likewise.
  920.  
  921. Sun Nov  6 23:15:24 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  922.  
  923.     * octMakefile.in (DISTSUBDIRS): Don't use $(SUBDIRS) here.
  924.  
  925.     * src/load-save.cc (Fsave): Open output file with mode ==
  926.     ios::out, not ios::in.
  927.  
  928. Sat Nov  5 18:18:11 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  929.  
  930.     * configure.in (HAVE_SYS_SIGLIST): Check for sys_siglist variable,
  931.     even if it isn't declared in a system header.
  932.     * acconfig.h (HAVE_SYS_SIGLIST): Add #undef.
  933.     * src/sighandlers.cc (sys_siglist): Define our own if
  934.     HAVE_SYS_SIGLIST is not defined, not if SYS_SIGLIST_DECLARED is
  935.     not defined.
  936.  
  937.     * src/tree-plot.cc (Fclearplot): New function.
  938.     (clg): Alias for clearplot.
  939.  
  940.     * src/parse.y (CLEAR): New token.
  941.     (statement): Handle PLOT CLEAR as a special case.
  942.     * src/lex.l (is_plot_keyword): Handle CLEAR here too.
  943.  
  944. Fri Nov  4 08:44:57 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  945.  
  946.     * All: Remove remaining #pragma interface/implementation statements.
  947.  
  948.     * src/tree-plot.cc (subplot): Move actual code here from .h file.
  949.  
  950.     * src/tree-expr.cc (tree_expression): Declare destructor virtual.
  951.     Delete unnecessary destructors.
  952.  
  953.     * src/SLStack.h, src/SLStack.cc (operator =): Return reference to
  954.     SLStack, not void.
  955.  
  956.     * src/f-qzval.cc (Fqzval): Rename from Fqzvalue.  Change Help
  957.     and usage messages too.
  958.  
  959.     * scripts/plot/plot_int.m: Really figure out if there are any
  960.     imaginary parts.
  961.  
  962.     * scripts/control/are.m: Fix typo.
  963.  
  964. Thu Nov  3 18:44:11 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  965.  
  966.     * src/load-save.cc (save_ascii_data): Handle new arg,
  967.     strip_nan_and_inf.  Change callers.
  968.     (strip_infnan): New functions.
  969.     (save_three_d): Strip inf and nan values here too.
  970.  
  971.     * src/tree-plot.h (subplot_using): New data have_values and val.
  972.     * src/tree-plot.cc (subplot_using::eval, subplot_using::values):
  973.     New functions.
  974.     (subplot_style::errorbars): New function.
  975.     (subplot::extract_plot_data, subplot::handle_plot_data): New functions.
  976.     (subplot::print): Improve handling of data.
  977.  
  978. Wed Nov  2 08:11:08 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  979.  
  980.     * src/file-io.cc (do_scanf): If reading from stdin, flush stdout
  981.     first.
  982.  
  983.     * configure.in: Leave some comments in the configure file.
  984.     Improve checking for termios.h, termio.h, and sgtty.h.
  985.  
  986.     * src/variables.cc (install_builtin_variables): DEFVAR realmax and
  987.     realmin here.
  988.     * src/sysdep.cc: Instead of DEFUNing them here.
  989.  
  990.     * src/variables.cc (do_who): Accept globbing patterns as args.
  991.     (maybe_list): Handle them here.
  992.  
  993.     * src/symtab.cc (matches_patterns): New function.
  994.     (symbol_table::list, symbol_table::long_list): Accept list of
  995.     patterns, and use matches_patterns to see if the given string is a
  996.     match.  Change all callers.
  997.  
  998.     * src/load-save.cc (read_binary_data): Don't fail if reading
  999.     name_len fails.
  1000.     (do_load): Quit quietly if nothing is left to read.  Clean up doc
  1001.     and name in all cases.
  1002.  
  1003. Tue Nov  1 16:34:20 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1004.  
  1005.     * src/lex.l (")"): Set cant_be_identifier to 1 here too.
  1006.  
  1007.     * src/tree-plot.cc: Use abbreviations for gnpulot plot, splot,
  1008.     replot, with, using, and title commands.
  1009.  
  1010. Mon Oct 31 14:26:12 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1011.  
  1012.     * src/variables.cc (Fclear): Look in global symbol table for
  1013.     user-defined function names.
  1014.  
  1015.     * src/load-save.cc (do_load): New function.
  1016.     (Fload): Use it to avoid assigning streams.
  1017.     (write_binary_header): New function.
  1018.     (save_vars): New function.
  1019.     (Fsave): Use it to avoid assigning streams.
  1020.  
  1021.     * libcruft/linpack/zgesl.f (zgesl): Comment out unused varialbes
  1022.     and statement functions.
  1023.  
  1024.     * src/sysdep.cc (Fisieee): New function.
  1025.     (Frealmax, Frealmin): Ditto.
  1026.  
  1027.     * scripts/miscellaneous/version.m: New file.
  1028.  
  1029. Fri Oct 28 14:52:08 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1030.  
  1031.     * octMakefile.in (distclean): Also delete config.cache and
  1032.     config.log.
  1033.  
  1034.     * Makeconf.in (CPPFLAGS): Allow substitution.
  1035.  
  1036.     * configure.in: Use AC_PREFIX_DEFAULT.
  1037.  
  1038.     * configure.in: Use AC_CANONICAL_HOST instead of doing this
  1039.     ourselves.
  1040.  
  1041.     * install-sh: Rename from install.sh.
  1042.     * octMakefile.in (DISTFILES): Distribute install-sh, not install.sh.
  1043.  
  1044. Mon Oct 24 10:04:27 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1045.  
  1046.     * octave-bug.in: Print message if bug report appears to have been
  1047.     mailed successfully.  Otherwise, exit with error status.
  1048.  
  1049. Fri Oct 21 14:05:10 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1050.  
  1051.     * src/tc-rep-ass.cc (TC_REP::do_vector_assign (rhs, idx-vector)):
  1052.     Handle all four cases of row/colum mixing.  Report an error if the
  1053.     RHS is a matrix.
  1054.  
  1055.     * src/tc-rep-idx.cc (TC_REP::do_index): Don't barf on indexing an
  1056.     empty matrix with colon(s).
  1057.     (TC_REP::do_scalar_index): Create index vector with  z_len = 1.
  1058.     (TC_REP::do_matrix_index (Range, tree_constant)): Correctly handle
  1059.     case of colon as second arg.
  1060.  
  1061.     * octave-bug.in: Put mail commands in subshells so error message
  1062.     really do go away.
  1063.  
  1064. Thu Oct 20 11:05:36 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1065.  
  1066.     * octave-bug.in: If passing $SUBJECT on the command line to a
  1067.     mailer, quote it.  Don't assume /bin/mail takes any args other
  1068.     than a recipient address.  Do the right thing if the To: line
  1069.     changes.
  1070.  
  1071.     * src/tc-rep.cc (TC_REP::rows, TC_REP::columns): Return -1 for
  1072.     anything that doesn't really have rows or columns.
  1073.  
  1074.     * src/tc-rep-idx.cc (fortran_style_matrix_index): Check max and
  1075.     min index values.
  1076.  
  1077.     * Makefile.in (FORCE): New phony target.  Used instead of .PHONY
  1078.     to be portable.
  1079.  
  1080.     * octave-bug.in: Try harder to mail the message.
  1081.  
  1082.     * src/dynamic-ld.cc: Undefine true, false, and boolean after
  1083.     including kpathse/pathsearch.h.
  1084.  
  1085.     * src/sysdep.cc: Include <float.h>.
  1086.  
  1087. Wed Oct 19 10:28:49 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1088.  
  1089.     * configure.in (CXXLIB_LIST, FLIB_LIST, CXXLIB_PATH, FLIB_PATH):
  1090.     Be careful not to match -l or -L in the middle of a word.
  1091.  
  1092.     * src/f-minmax.cc: Correctly handle mixed scalar/matrix args.
  1093.  
  1094.     * octMakefile.in: Rename from Makefile.in.
  1095.     * Makefile.in: New file.  For `all' target, print message and
  1096.     execute make again using octMakefile.  For other targets, just
  1097.     execute make again using octMakefile.
  1098.  
  1099.     * configure.in: Check for sys_siglist.
  1100.     * src/sighandlers.h [! HAVE_SYS_SIGLIST]: Provide an external
  1101.     declaration.
  1102.     * src/sighandlers.cc (generic_sig_handler): New function, replaces
  1103.     most individual signal handler functions.
  1104.     (sigint_handler, sigpipe_handler): Restore signal handler before
  1105.     doing anything else.
  1106.     [! HAVE_SYS_SIGLIST] (sys_siglist): Provide our own definition.
  1107.  
  1108.     * config.guess: Update from FSF sources.
  1109.  
  1110. Tue Oct 18 23:36:24 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1111.  
  1112.     * flibs.sh: Don't pass -Y P,path.  Instead, turn it into a series
  1113.     of -L dir args.
  1114.  
  1115.     * configure.in: Update for autoconf 2.0.
  1116.     Delete support for --enable-run-in-place (it is too hard to make
  1117.     this work reliably...).
  1118.  
  1119. Mon Oct 17 11:40:49 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1120.  
  1121.     * src/user-prefs.cc (init_user_prefs): Declare to return void,
  1122.     not int.
  1123.  
  1124.     * configure.in: Change quote characters around tr command.  Some
  1125.     systems actually do need the []'s for ranges...
  1126.  
  1127. Sun Oct 16 12:22:14 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1128.  
  1129.     * src/tempname.c, src/tmpnam.c: New files.
  1130.     * src/Makefile.in (SOURCES): Add them.
  1131.     * src/dirfns.cc: Delete functions extracted from glibc.
  1132.  
  1133.     * configure.in (localfcnfiledir, localoctfiledir, imagedir):
  1134.     New variables.  Use them to define localfcnfilepath,
  1135.     localoctfilepath, and imagepath.
  1136.     * Makeconf.in: Substitute them here.
  1137.  
  1138.     * src/utils.cc (get_fcn_file_names) [WITH_DLD]: Also match .oct
  1139.     files.
  1140.  
  1141.     * dld/find_exec.c (dld_find_executable): Don't be fooled by
  1142.     directories or other special files in PATH.
  1143.     (ABSOLUTE_FILENAME_P): Also return true if the name includes a
  1144.     `/'.  This isn't necessarily an absolute path, but we will turn it
  1145.     into one later.
  1146.     * src/dynamic-ld.cc (octave_dld_init): Call make_absolute() on
  1147.     value returned from dld_find_executable().
  1148.  
  1149. Sat Oct 15 08:35:13 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1150.  
  1151.     * flibs.sh: Undo previous change.  Only substitute spaces for
  1152.     commas if it looks like we have output from xlf.  Handle -Y and
  1153.     LD_RUN_PATH using gcc's -Xlinker option.
  1154.  
  1155.     * Makefile.in (snapshot-version): Use move-if-change for version.h.
  1156.  
  1157. Fri Oct 14 09:18:08 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1158.  
  1159.     * scripts/image/Makefile.in (SOURCES): Don't forget octtopnm.c.
  1160.  
  1161.     * Makefile.in (BINDISTFILES): Distribute octave-bug too.
  1162.  
  1163.     * configure.in (imagepath): Install at same level as fcnfiledir,
  1164.     not below it.
  1165.  
  1166.     * doinstall.sh: Correctly extract version numbers that are not all
  1167.     digits.  Also install images too.  Also install octaverc.  Ask
  1168.     octave for the target host type.  Also create site/m and
  1169.     site/oct directories.  Also install octave-bug.
  1170.  
  1171.     * scripts/image/Makefile.in (DISTFILES): Distribute demo image
  1172.     files too.
  1173.  
  1174.     * doinstall.sh: Update for new directory organization.
  1175.  
  1176.     * src/variables.cc (subst_octave_home): Make it work for multiple
  1177.     substitutions.
  1178.  
  1179.     * flibs.sh: Handle -Y P,path:of:lib:dirs output from f77 on Solaris.
  1180.  
  1181.     * src/strfns.cc (Ftoascii): New file, new function.
  1182.     (Fisstr, Fsetstr): Move here, fromd ata.cc.
  1183.  
  1184.     * src/Makefile.in (SOURCES): Include it.
  1185.  
  1186. Thu Oct 13 11:58:03 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1187.  
  1188.     * scripts/signal/filter.m: Postpad `b' before reshaping.
  1189.  
  1190.     * mkinstalldirs: New file.
  1191.     * Makefile.in: Distribute it, don't make mkpath.
  1192.     * All Makefile.in files: Use it instead of mkpath.
  1193.  
  1194.     * src/utils.cc (Foctave_tmp_file): New function.
  1195.  
  1196.     * src/utils.cc (undo_string_escape): Move here from tc-rep.cc,
  1197.     rename from undo_string_escapes, and make extern.
  1198.     (undo_string_escapes): New function, for undoing a whole string.
  1199.     (Fundo_string_escapes): New function.
  1200.  
  1201.     * scripts/miscellaneous/dump_prefs.m,
  1202.     scripts/miscellaneous/dump_1_pref.m: New functions.
  1203.     * scripts/miscellaneous/bug_report.m: Record user preferences in a
  1204.     file and pass the name of the file to octave-bug.  Use
  1205.     octave_tmp_file to generate tmp file name.
  1206.     * octave-bug.in: Accept a final file-name arg as a file that
  1207.     contains a list of user-preferences.
  1208.  
  1209. Wed Oct 12 09:09:37 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1210.  
  1211.     * configure.in: Redefine archlibdir and octfiledir so that oct
  1212.     and exec directories are at the same level as the m directory.
  1213.     Redefine localoctfilepath so that site/oct is a the same level as
  1214.     site/m.
  1215.  
  1216.     * Makeconf.in (F77): Substitute it.
  1217.     (BUG_CFLAGS, BUG_CXXFLAGS): New vars.
  1218.     * configure.in:
  1219.     * scripts/bug_report.m: New file.
  1220.     * octave-bug.in: New file.
  1221.     * Makefile.in (DISTFILES): Distribute octave-bug.in.
  1222.     (dirs_to_make): Add $bindir.
  1223.     (all): Add octave-bug.
  1224.     (octave-bug): New target.
  1225.     (install): Install it.
  1226.     * src/defaults.h.in: Add defines for bindir.
  1227.     * src/Makefile.in (defaults.h): Substitute it.
  1228.     * src/variables.cc (octave_bin_dir): New function.
  1229.     * src/octave.cc (initialize_globals): Also add $bindir to path.
  1230.  
  1231.     * configure.in: Check for gettimeofday. Add AC_TIME_WITH_SYS_TIME.
  1232.     * src/systime.h: New file.
  1233.     * src/timefns.h: Use gettimeofday if available.
  1234.     * src/Makefile.in (INCLUDES): Add systime.h.
  1235.  
  1236. Mon Oct 10 14:34:56 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1237.  
  1238.     * src/octave.cc (verbose_flag): New global variable.
  1239.     (long_opts): Add "verbose".
  1240.     (usage_string): Update.
  1241.     (main): Set verbose_flag if given --verbose.
  1242.     (execute_startup_files): Don't print messages about reading
  1243.     startup files if verbose_flag is not set.
  1244.  
  1245.     * src/tree-expr.cc (apply_mapper_fcn): Handle scalars as a special
  1246.     case, but then just try to convert other arg types to a matrix.
  1247.  
  1248.     * src/f-det.cc (Fdet): Check if arg is complex type, but not
  1249.     necessarily a complex matrix.
  1250.     * src/f-schur.cc (Fschur): Likewise, and also for real types.
  1251.     * src/f-lu.cc (Flu): Likewise.
  1252.     * src/f-minmax.cc (Fmin, Fmax): Likewise.
  1253.  
  1254. Sun Oct  9 21:04:17 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1255.  
  1256.     * src/tc-rep-ass.cc (TC_REP::assign): If LHS is undefined, don't
  1257.     try to force it to be a numeric type.
  1258.  
  1259. Fri Oct  7 09:05:10 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1260.  
  1261.     * configure.in: Define LD_STATIC_FLAG for Alpha OSF/1 1.3 systems.
  1262.  
  1263.     * src/tc-rep-idx.cc (TC_REP::do_index): Only work for numeric
  1264.     types, but don't panic if conversion doesn't work.
  1265.     * src/tc-rep-ass.cc (TC_REP::assign): Likewise.
  1266.  
  1267.     * src/tc-rep.cc (TC_REP::gripe_wrong_type_arg): New function.
  1268.  
  1269.     * src/gripes.cc (gripe_wrong_type_arg): Define here.
  1270.     * src/tree-const.cc: Not here.
  1271.  
  1272. Wed Oct  5 16:24:38 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1273.  
  1274.     * src/file-io.cc (do_scanf): Don't panic if string is NULL.
  1275.  
  1276.     * src/gripes.cc (gripe_unrecognized_float_fmt): New function.
  1277.     (gripe_2_or_3_dim_plot): Ditto.
  1278.     (gripe_unrecognized_data_fmt): Ditto.
  1279.     (gripe_data_conversion): Ditto.  Use it in load-save.cc data
  1280.     conversion routines that aren't implemented yet.
  1281.  
  1282.     * src/load-save.cc (do_double_format_conversion): Don't panic on
  1283.     unrecognized floating point formats.
  1284.     (do_float_format_conversion): Likewise.
  1285.     (write_doubles): Don't panic if data format is unrecognized.
  1286.     (do_save): Likewise
  1287.     (install_loaded_variable): Don't panic for unknown symbol types.
  1288.     (read_binary_data): Also check error_state after calls to read_doubles.
  1289.  
  1290.     * src/symtab.cc (symbol_table::rename): Don't panic if symbol
  1291.     can't be renamed.
  1292.     * src/parse.y (return_list): Abort parse if renaming results in an
  1293.     error.
  1294.  
  1295.     * src/tree-misc.cc (tree_if_command::eval): Don't panic if all
  1296.     (all (cond)) is not a scalar.
  1297.  
  1298.     * src/tree-expr.cc (tree_unary_expression::print_code): Don't
  1299.     panic if expression type is unknown.
  1300.  
  1301.     * src/tree-plot.cc (tree_plot_command::eval): Don't panic if plot
  1302.     is not 2 or 3 dimensional.
  1303.     (tree_plot_command::print_code, subplot::print, save_in_tmp_file):
  1304.     Likewise.
  1305.  
  1306.     * src/variables.cc (alias_builtin): Panic with better message.
  1307.     (subst_octave_home): Don't panic if OCTAVE_HOME doesn't contain
  1308.     OCTAVE_PREFIX.
  1309.  
  1310.     * src/tc-inlines.h (REP_RHS_MATRIX): Use panic_impossible()
  1311.     instead of abort().
  1312.     (REP_ELEM_ASSIGN, CRMATRIX): Likewise.
  1313.  
  1314.     * src/data.cc (Fdiag, make_diag): Do work here.
  1315.     * src/tc-rep.cc (TC_REP::diag, make_diag): Not here.
  1316.     * src/tc-rep.h (TC_REP::diag): Delete.
  1317.     * src/tree-const.h (tree_constant::diag): Delete.
  1318.  
  1319. Tue Oct  4 08:35:37 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1320.  
  1321.     * src/f-fft.cc (Ffft): Correctly set n_points for row vectors if
  1322.     nargin == 1.
  1323.     * src/f-ifft.cc (Fifft): Likewise.
  1324.  
  1325.     * src/load-save.cc (Fsave): Declare file and stream static.
  1326.  
  1327. Mon Oct  3 10:40:50 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1328.  
  1329.     * src/tree-expr.cc (octave_va_arg): Correct arg count and index to
  1330.     match recent change to arg passing/nargin.
  1331.     (define_param_list): Always set num_named_args = param_list->length ().
  1332.  
  1333.     * readline/Makefile.in (install): Don't install libreadline.a by
  1334.     default.
  1335.     (uninstall): Now no need to delete it.
  1336.  
  1337.     * configure.in (localfcnfilepath, localoctfilepath): Change to 
  1338.     match organization of system fcn and oct files, and enable
  1339.     recursive searching in both.  Enable recursive searching in
  1340.     $(octfiledir).
  1341.     (includedir): Change to $(prefix)/include/octave.
  1342.  
  1343. Sun Oct  2 10:14:18 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1344.  
  1345.     * configure.in: For now, disable IEEE floating point functions on
  1346.     the Alpha.  This is braindead, but at least prevents divide by
  1347.     zero crashes...
  1348.  
  1349.     * src/file-io.cc (fseek_internal): Use values for origin that
  1350.     match what we use to define SEEK_SET, SEEK_CUR, and SEEK_END in
  1351.     variables.cc.
  1352.  
  1353.     * dld: Merge various changes for Linux from dld 3.2.4 that is
  1354.     being distributed with jacal.
  1355.  
  1356.     * src/file-io.cc (fwrite_internal): Correct indexing of args.
  1357.  
  1358.     * src/tree-expr.cc (apply_mapper_fcn): New function.
  1359.     (tree_builtin::eval): Use it instead of tree_constant::mapper().
  1360.     * src/tree-const.h (tree_constant::mapper): Delete.
  1361.     * src/tc-rep.cc, src/tc-rep.h (TC_REP::mapper): Delete.
  1362.  
  1363.     * src/data.cc (Fcumprod, Fcumsum, Fprod, Fsum, Fsumsq): Do work here.
  1364.     * src/tc-rep.cc (TC_REP::cumprod, TC_REP::cumsum, TC_REP::prod,
  1365.     TC_REP::sum, TC_REP::sumsq): Not here.  Delete. 
  1366.     * src/tc-rep.h (TC_REP::cumprod, TC_REP::cumsum, TC_REP::prod,
  1367.     TC_REP::sum, TC_REP::sumsq): Delete
  1368.     * src/tree-const.h (tree_constant::cumprod, tree_constant::cumsum,
  1369.     tree_constant::prod, tree_constant::sum, tree_constant::sumsq):
  1370.     Delete.
  1371.  
  1372.     * tree-const.h: Don't check gcc minor version number.
  1373.     * tc-rep.h: Likewise.
  1374.  
  1375.     * src/file-io.h (class file_info): Declare here.
  1376.     * src/file-io.cc: Not here.
  1377.  
  1378.     * configure.in (LIBOCTDLD, LIBDLD): Remove ../ prefix.
  1379.     * Makefile.in (distclean, realclean): Don't remove *.a.
  1380.     * src/Makefile.in (OCTAVE_LIBS): Correct directory spec for libs.
  1381.     Build, install, and clean liboctdld.a, not ../liboctdld.a.
  1382.     * dld/Makefile.in: Build, install, and clean libdld.a, not ../libdld.a.
  1383.     * info/Makefile.in: Likewise, for libinfo.a.
  1384.     * kpathsea/Makefile.in: Likewise, for libkpathsea.a.
  1385.     * libcruft/Makefile.in: Likewise, for libcruft.a.
  1386.     * liboctave/Makefile.in: Likewise, for liboctave.a.
  1387.     * readline/Makefile.in: Likewise, for libreadline.a.
  1388.  
  1389.     * configure.in (gxx_version): Require 2.6.x or later.  Don't
  1390.     define EXTERNAL_TEMPLATES.  Do define NO_IMPLICIT_TEMPLATES.
  1391.     * liboctave/Array-C.cc, liboctave/Array-d.cc, src/Array-tc.cc,
  1392.     src/DLList-fi.cc src/SLStack-tok.cc, src/SLStack-ue.cc,
  1393.     src/SLStack-tm.cc, src/SLStack-pc.cc, src/SLStack-i.cc,
  1394.     src/SLList-tc.cc, src/SLStack-sym.cc, src/SLStack-ui.cc,
  1395.     src/SLList-misc.cc, src/SLList-expr.cc, src/SLList-plot.cc,
  1396.     src/Map-tc.cc: New files.  Instantiate templates here.
  1397.     * libocave/Array.cc, src/Map.cc, src/Stack.cc, src/SLStack.cc:
  1398.     Not here.  Remove #pragma implementation hack.
  1399.     * liboctave/Array.h, src/Stack.h, src/Map.h, src/SLStack.h: Remove
  1400.     #pragma interface hack.
  1401.     * Makeconf.in: Substitute NO_IMPLICIT_TEMPLATES, not
  1402.     EXTERNAL_TEMPLATES.
  1403.     (ALL_CXX_FLAGS, UGLY_ALL_CXX_FLAGS): Use $(NO_IMPLICIT_TEMPLATES),
  1404.     not $(EXTERNAL_TEMPLATES).
  1405.     * acconfig.h: Remove USE_EXTERNAL_TEMPLATES #undef.
  1406.     * src/Makefile.in (XALL_CXX_FLAGS): Delete -fno-implicit-templates.
  1407.     (TI_SRC, TI_OBJ): New variables.
  1408.     (libtinst.a): New target.
  1409.     * liboctave/Makefile.in (TI_SRC): New variable.
  1410.     (SOURCES): Add it to list.
  1411.  
  1412. Fri Sep 30 09:52:15 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1413.  
  1414.     * src/Makefile.in: Automatically generate more lists.
  1415.     Use := in more places.
  1416.     * src/Array-C.cc src/Array-d.cc src/Array-tc.cc src/Map-tc.cc
  1417.     src/Stack-i.cc src/SLStack-pc.cc src/SLStack-sym.cc
  1418.     src/SLStack-tok.cc src/SLStack-tm.cc src/SLStack-ue.cc:
  1419.     New template instantiation files.
  1420.     * configure.in: If using gcc 2.6.x or later, use
  1421.     -fno-implicit-templates instead of -fexternal-templates.
  1422.  
  1423.     * src/tc-inlines.h: Rename from tc-inlines.cc.
  1424.  
  1425.     * src/parse.y (looking_at_indirect_ref): New global flag, for
  1426.     parser feedback.
  1427.     (tree_indirect_ref_type): New token type.
  1428.     (TEXT_ID): New token.
  1429.     (indirect_ref): New non-terminal.
  1430.     (make_index_expression): New function.
  1431.     (variable): Use it to build variable from indirect_ref, not just
  1432.     identifier.
  1433.  
  1434.     * src/lex.l (handle_identifier): Handle identifiers differently if
  1435.     looking at an indirect reference.  Add `.' to list of other ops.
  1436.  
  1437.     * src/tree-expr.cc (tree_identifier::do_lookup): Handle new
  1438.     exec_script arg.
  1439.     (tree_identifier::assign): New functions for assignment to a
  1440.     strucutre element.
  1441.     (print_constant): New function.
  1442.     (tree_identifier::eval, tree_indirect_ref::eval): Use it.
  1443.     (
  1444.     
  1445.     * src/tree-expr.h (tree_indirect_ref): New class for handling
  1446.     structure references.
  1447.     (tree_expression::is_indirect_ref): New virtual function.
  1448.     (tree_fvc::lookup_map_element): New virtual function.
  1449.     (tree_index_expression, tree_simple_assignment_expression):
  1450.     Add new constructors for handling indirect references.
  1451.  
  1452.     * src/oct-map.h: New file, for class managing Octave's
  1453.     structure/map type.
  1454.  
  1455.     * src/tree-misc.cc (tree_global::eval): Don't allow individual
  1456.     structure elements to be tagged global.
  1457.  
  1458.     * src/tc-rep.h (tree_constant_rep): Add new field, a_map, and a
  1459.     new type_tag, map_constant.
  1460.     * src/tree-const.cc (tree_constant::is_map): New function.
  1461.     * src/tree-const.cc (tree_constant::map_value,
  1462.     tree_constant::assign_map_element, tree_constant::make_unique,
  1463.     tree_constant::lookup_map_element,
  1464.     tree_constant::make_unique_map_element): New functions.
  1465.  
  1466.     * src/Map.h (CHNode::CHNode): Copy key.
  1467.     (CHNode::~CHNode): Delete it.
  1468.     (CHMap::contents): Don't declare return value const.
  1469.  
  1470.     * src/tc-inlines.cc: Move some macros here from tc-rep.cc so they
  1471.     can appear in one place and be shared by tc-rep-idx.cc,
  1472.     tc-rep-ass.cc, and tc-pre.cc.
  1473.  
  1474.     * src/tc-rep-idx.cc, src/tc-rep-ass.cc: New files, extracted from
  1475.     tc-rep.cc to make compilation of tc-rep stuff faster and require
  1476.     less memory.
  1477.  
  1478.     * src/variables.cc (Fwhos): Correctly insert "-long" into arg list
  1479.     for Fwho.
  1480.  
  1481. Mon Sep 26 12:59:55 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1482.  
  1483.     * test/Makefile.in (OCTAVE_SCRIPT_PATH): Append `//' for recursive
  1484.     searching.
  1485.  
  1486. Fri Sep 23 07:53:13 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1487.  
  1488.     * scripts/plot/bar.m: Don't return values if nargout == 0.
  1489.     * scripts/plot/hist.m: Likewise.
  1490.     * scripts/plot/stairs.m: Likewise.
  1491.  
  1492.     * src/tree-plot.cc (Fishold): New function.
  1493.     (plot_line_count, parametric_plot, clear_before_plotting):
  1494.     Declare static.
  1495.  
  1496.     * src/f-fft.cc (Ffft): Handle row vector as a special case.
  1497.     * src/f-ifft.cc (Fifft): Ditto.
  1498.  
  1499. Thu Sep 22 13:20:53 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1500.  
  1501.     * src/help.cc (print_symbol_type): New function, extracted from Fwhich.
  1502.     (Fwhich): Use it.
  1503.     (Fhelp): Use it to print type info before help message.
  1504.  
  1505.     * src/dynamic-ld.cc: Hide all DLD-specific functions behind
  1506.     #ifdef WITH_DLD.
  1507.  
  1508.     * scripts/startup: New directory.
  1509.     * scripts/startup/Makefile.in: New file.
  1510.     * scripts/startup/octaverc: New file.  Don't overwrite existing
  1511.     file when nstalling.
  1512.     * configure.in: Generate Makefile in scripts/startup.
  1513.     * scripts/Makefile.in (SUBDIRS): Add startup.
  1514.     * src/defaults.h.in (OCTAVE_STARTUPFILEDIR): New macro.
  1515.     * src/variables.cc (get_site_defaults): Look for octaverc in
  1516.     OCTAVE_STARTUPFILEDIR.
  1517.  
  1518.     * configure.in (fcnfiledir): Make it end in `//'.
  1519.  
  1520.     * src/error.cc (Ferror): Correct indexing error.
  1521.  
  1522.     * src/Map.h, src/Map.cc: New files implementing associative arrays.
  1523.     * src/Makefile.in: Include them in the list of files to distribute
  1524.     and compile.
  1525.  
  1526. Wed Sep 21 09:50:19 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1527.  
  1528.     * Makefile.in (DISTSUBDIRS): Add dld to the list.
  1529.  
  1530.     * scripts/plot/hist.m: New function file.
  1531.  
  1532.     * src/tc-rep.cc (TC_REP::do_matrix_index (tree_constant,
  1533.     tree_constant): For case of scalar as first arg, move call to
  1534.     index check to the TC_REP::do_matrix_index (int, tree_constant)
  1535.     function.
  1536.     (TC_REP::do_matrix_index (int, tree_constant): Be compatible with
  1537.     Matlab for indexing of the form row_vector (0, :).
  1538.     (TC_REP::do_matrix_index (tree_constant, int): Likewise, for
  1539.     indexing of the form col_vector (:, 0).
  1540.     (TC_REP::do_matrix_assignment): Similar changes for assignment.
  1541.  
  1542. Tue Sep 20 17:48:39 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1543.  
  1544.     * src/parse.y (return_list, return_list1): New nonterminals.
  1545.     Rename from func_def1a.  Handle variable number of return values.
  1546.     * src/tree-expr.h (tree_function::vr_list): New field.
  1547.     * src/tree-expr.cc (delete_vr_list): New function.
  1548.     (tree_function::octave_vr_val, tree_function::takes_var_return):
  1549.     New functions, for variable return lists.
  1550.     (tree_function::define_ret_list, tree_function::eval): Handle vr_list.
  1551.     (Fvr_val): New function.
  1552.     * src/tree-misc.h (tree_va_return_list): New list class.
  1553.     * src/tree-misc.cc (tree_parameter_list::convert_to_const_vector):
  1554.     Take pointer to tree_va_return_list as arg, and append the values
  1555.     found there.
  1556.  
  1557.     * src/arith-ops.cc (mx_stupid_bool_op): Correctly handle empty
  1558.     matrices for == and != ops.
  1559.  
  1560.     * src/variables.cc (Fis_global): Check args(0), not args(1).
  1561.     (Fexist): Likewise.
  1562.     (install_builtin_mapper): Set nargin_max to 1, not 2.
  1563.  
  1564.     * src/dynamic-ld.cc (octave_dld_init): Make raw program name
  1565.     absolute before calling dld_find_executable.
  1566.  
  1567.     * src/octave.cc (initialize_error_handlers): New function.
  1568.     (main): Call init_user_prefs and initialize_error_handlers.
  1569.     Rearrange order of calls to initialization functions.
  1570.  
  1571.     * src/user-prefs.cc (init_user_prefs): New function.
  1572.  
  1573.     * src/data.cc (map): Correct condition for assert ().  Correct
  1574.     handling of empty args.
  1575.  
  1576.     * src/f-lsode.cc src/f-dassl.cc src/f-quad.cc src/f-npsol.cc
  1577.     src/f-fsolve.cc: Pass correct number of args to
  1578.     takes_correct_nargs ().
  1579.     * src/variables.cc (takes_correct_nargs): Use %s, not %c in format
  1580.     string.
  1581.  
  1582.     * src/f-ifft2.cc src/f-expm.cc src/f-det.cc src/f-svd.cc
  1583.     src/f-syl.cc src/f-schur.cc src/f-qzval.cc src/f-qr.cc
  1584.     src/f-pinv.cc src/f-lu.cc src/f-log.cc src/f-inv.cc src/f-hess.cc
  1585.     src/f-eig.cc src/f-chol.cc src/f-balance.cc src/f-lsode.cc
  1586.     src/f-dassl.cc src/f-quad.cc src/f-npsol.cc src/f-fsolve.cc:
  1587.     Correctly handle return value from empty_arg ().
  1588.     * src/utils.cc (empty_arg): Clarify usage, correct return value if
  1589.     arg is empty but no message is printed.
  1590.  
  1591.     * src/Makefile.in (dist): Delete builtins.cc too.
  1592.  
  1593.     * configure.in (DYNAMIC_LD_OBJ): Delete.
  1594.     * src/Makefile.in (OBJECTS): Don't substitute DYNAMIC_LD_OBJ.
  1595.     Always include dynamic-ld.o.
  1596.  
  1597.     * configure.in: Generate Makefile in scripts/elfun and
  1598.     scripts/specfun.
  1599.  
  1600.     * Makeconf.in (version): Use `:=' and `$(shell )', not just `='
  1601.     and backticks, so we only extract the version number once.
  1602.  
  1603. Mon Sep 19 09:04:30 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1604.  
  1605.     * src/tc-rep.h (represent_strings_with_doubles): New field in
  1606.     tree_constant_rep class.
  1607.  
  1608.     * tree-misc.cc (tree_argument_list::convert_to_const_vector):
  1609.     Don't allocate extra arg for function name.
  1610.     * sysdep.cc, pr-output.cc, input.cc, file-io.cc, error.cc,
  1611.     tc-rep.cc, tree-expr.cc, f-svd.cc, f-sort.cc, f-schur.cc,
  1612.     f-rand.cc, f-qzval.cc, f-quad.cc, f-qr.cc, f-qpsol.cc, f-pinv.cc,
  1613.     f-npsol.cc, f-minmax.cc, f-lu.cc, f-lsode.cc, f-log.cc, f-inv.cc,
  1614.     f-ifft2.cc, f-ifft.cc, f-hess.cc, f-givens.cc, f-fsolve.cc,
  1615.     f-fft2.cc, f-fft.cc, f-expm.cc, f-eig.cc, f-det.cc, f-dassl.cc,
  1616.     f-colloc.cc, f-chol.cc, f-balance.cc, f-syl.cc, variables.cc,
  1617.     tree-misc.cc, data.cc, octave.cc, utils.cc, defun-int.h:
  1618.     Change meaning and usage of nargin and args.length() to cope with
  1619.     above change.  This makes nargin mean the same thing in built-in
  1620.     functions as it does in M-files.
  1621.  
  1622. Sat Sep 17 09:29:08 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1623.  
  1624.     * scripts/general/nargchk.m: New function.
  1625.  
  1626. Fri Sep 16 08:48:13 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1627.  
  1628.     * Makeconf.in (FLIB_LIST, FLIB_PATH, CXXLIBS, CXXLIB_LIST,
  1629.     CXXLIB_PATH): Set these.
  1630.  
  1631.     * cxxlibs.sh: New file.
  1632.     * configure.in: Use it to determine extra C++ libraries to link
  1633.     to.  Use sed magic to extract list of libraries and directories
  1634.     from FLIBS and CXXLIBS.
  1635.     * Makefile.in: (DISTFILES): Include cxxlibs.sh.
  1636.  
  1637.     * configure.in: Change AC_VERBOSE messages to match
  1638.     autoconf-generated messages.
  1639.  
  1640.     * src/dynamic-ld.cc (dld_octave_resolve_reference): Search library
  1641.     path for list of files to link.
  1642.  
  1643.     * src/utils.cc (pathstring_to_vector): Un-#if 0 it.
  1644.  
  1645.     * Makefile.in: Install liboctdld.a if not linking to it.
  1646.     (defaults.h): Substitute FLIB_LIST, FLIB_PATH, CXXLIB_LIST,
  1647.     CXXLIB_PATH.
  1648.  
  1649. Thu Sep 15 09:31:29 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1650.  
  1651.     * Makeconf.in (LD_STATIC_FLAG): Actually substitute LD_STATIC_FLAG.
  1652.     (ALL_LDFLAGS): Include it here.
  1653.  
  1654.     * configure.in: Check for signgam declaration in math.h
  1655.     * acconfig.h: Add #undef for SIGNGAM_DECLARED.
  1656.     * src/mappers.h: Provide our own declaration of signgam if
  1657.     HAVE_LGAMMA but not SIGNGAM_DECLARED.
  1658.  
  1659. Wed Sep 14 11:28:09 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1660.  
  1661.     * src/dynamic-ld.cc (mangled_octave_builtin_name,
  1662.     mangle_octave_oct_file_name, load_octave_builtin,
  1663.     load_octave_oct_file, init_dynamic_linker): New functions.
  1664.     [WITH_DLD] (octave_dld_init, dld_octave_resolve_reference,
  1665.     dld_octave_builtin, dld_octave_oct_file): New functions to handle
  1666.     details of dynamic linking using dld.
  1667.  
  1668.     * src/variables.cc (load_fcn_from_file) [WITH_DLD]: Handle looking
  1669.     for .oct file to link at run time.
  1670.  
  1671.     * src/tree-expr.cc (tree_builtin::tree_builtin): Always init my_name.
  1672.     (tree_builtin::eval): If no definition, try to load one using
  1673.     load_octave_builtin().
  1674.  
  1675.     * src/octave.cc (main): Initialize dynamic linking here.
  1676.  
  1677.     * src/defun-int.h (DEFINE_FUN_STRUCT, DEFINE_FUN_STRUCT_FUN):
  1678.     New macros.
  1679.     * src/defun-dld.h (DEFUN_DLD_BUILTIN): Rename from DEFUN_DLD and
  1680.     handle case of WITH_DLD && OCTAVE_LITE && MAKE_BUITLINS.
  1681.     (DEFUN_DLD): Use this for external user-supplied functions that
  1682.     are intended to be dynamically linked.
  1683.  
  1684.     * configure.in: Handle --enable-lite-kernel.  Call AC_SUBST for
  1685.     use_dld and lite_kernel.  Define LIBOCTDLD unless doing dynamic
  1686.     linking and small kernel requested.
  1687.     * acconfig.h: Add #undefs for OCTAVE_LITE and SMART_PUTENV.
  1688.     * Makeconf.in: Define WITH_DLD from @use_dld@ and OCTAVE_LITE from
  1689.     @lite_kernel@.
  1690.  
  1691.     * src/octave.cc (Fsystem): Rename from shell_cmd.
  1692.     (Fshell_cmd): Define as alias to Fsystem.
  1693.  
  1694. Mon Sep 12 20:19:20 1994  John Eaton  <jwe@schoch.che.utexas.edu>
  1695.  
  1696.     * src/mappers.cc: Include error.h and math.h.
  1697.  
  1698. Sat Sep 10 11:49:11 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1699.  
  1700.     * Makefile.in: Clean up rules for making distributions.
  1701.     (DISTDIRS): Distribute kpathsea
  1702.  
  1703. Fri Sep  9 08:46:03 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1704.  
  1705.     * liboctave/dMatrix.cc (pseudo_inverse): New function.
  1706.     * liboctave/CMatrix.cc (pseudo_inverse): New function.
  1707.     * src/f-pinv.cc: New file, for pinv().
  1708.     * src/Makefile.in (DLD_SRC): Add f-pinv.cc.
  1709.     (DLD_OBJ): Add f-pinv.o.
  1710.     * scripts/linear-algebra/pinv.m: Delete.
  1711.  
  1712.     * configure.in: Define and substitute $imagepath.
  1713.     * src/Makefile.in: Substitute OCTAVE_IMAGEPATH.
  1714.     * src/defaults.h.in: Add OCTAVE_IMAGEPATH.
  1715.     * src/variables.cc (install_builtin_variables): Define IMAGEPATH.
  1716.     * src/user-prefs.cc (image_path): New function.
  1717.     * Makeconf.in (imagepath): substitute it.
  1718.  
  1719.     * src/octave.cc (initialize_globals): Ensure that $archlibdir is
  1720.     in the user's PATH.
  1721.  
  1722.     * utils.cc (search_path_for_file, Ffile_in_path): New functions.
  1723.  
  1724.     * configure.in: Append `//' to $fcnfiledir, for recursive
  1725.     searching.
  1726.     (AC_OUTPUT): Edit makefiles in script subdirectories too.
  1727.  
  1728.     * scripts: Regroup function files in the following directories,
  1729.     each with its own Makefile.in:
  1730.  
  1731.            image           plot        signal          control
  1732.        linear-algebra  polynomial  special-matrix  general
  1733.            miscellaneous   set         statistics
  1734.  
  1735.     * src/help.cc (simple_help): Use kpathsea functions to find files
  1736.     in path.
  1737.     * src/utils.cc (get_fcn_file_names): Likewise.
  1738.     (pathstring_to_vector): #if 0 out.
  1739.  
  1740. Thu Sep  8 16:59:42 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1741.  
  1742.     * src/Makefile.in (OCTAVE_LIBS): Include ../libkpathsea.a.
  1743.     * configure.in: Include configure stuff for kpathsea here too.
  1744.     * Makefile.in (kpathsea): New target.
  1745.     * src/utils.cc (file_in_path): Use kpathsea function instead of
  1746.     doing our own searching.
  1747.     * kpathsea/Makefile.in (lib): Define as ../libkpathsea.a, not just
  1748.     kpathsea.a.
  1749.  
  1750. Wed Sep  7 09:39:20 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1751.  
  1752.     * src/user-prefs.cc (check_str_pref): Fix comment.
  1753.  
  1754.     * src/utils.cc (empty_arg): Check flag == 0, not is_empty > 0.
  1755.  
  1756.     * src/f-fft2.cc (Ffft2): New file and function.
  1757.     * src/f-ifft2.cc (Fifft2): Likewise.
  1758.     * src/fft2.m, src/ifft2.m: Delete.
  1759.  
  1760.     * src/f-fft.cc (Ffft): Handle second arg.  Depending on value of
  1761.     propagate_empty_matrices, return empty matrix for empty arg.
  1762.     * src/f-ifft.cc (Fifft): Likewise.
  1763.  
  1764.     * liboctave/CMatrix.cc (fourier2d, ifourier2d): New functions.
  1765.     * liboctave/dMatrix.cc (fourier2d, ifourier2d): New functions.
  1766.  
  1767.     * src/tree-misc.cc (eval (int, int)): New function.
  1768.     * src/octave.cc (eval_string, Feval): Handle multiple output args.
  1769.  
  1770.     * src/error.cc (suppress_octave_error_messages): New global.
  1771.     (error): Check it to see if messages should be printed.
  1772.     * src/octave/cc (Feval): Set it if `catch' arg is supplied.
  1773.  
  1774.     * src/octave.cc (Feval): Handle second `catch' arg.
  1775.  
  1776.     * src/load-save.cc (read_mat_file_header): Init swap to zero.
  1777.  
  1778.     * doc/octave.1: New simple man page.
  1779.     * doc/Makefile.in: Distribute and install it.
  1780.  
  1781.     * src/variables.cc (Fclear): Handle -x option for exclusive clear.
  1782.  
  1783. Tue Sep  6 16:00:34 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1784.  
  1785.     * src/load-save.cc (save_mat_binary_data): New function.
  1786.     (do_save): Handle LS_MAT_BINARY.
  1787.     (Fsave): Handle -mat-binary.
  1788.     (Changes from G. Beyerle <gbeyerle@AWI-Potsdam.DE>.)
  1789.  
  1790.     * src/variables.cc (subs_octave_home, octave_arch_lib_dir):
  1791.     New functions.
  1792.     (octave_home, octave_info_dir, octave_lib_dir, default_path):
  1793.     Fix for new directory organization.
  1794.  
  1795.     * src/tree-expr.h (tree_multi_val_ret): New class to serve as a
  1796.     base for objects that can produce more than one value when
  1797.     evaluated.
  1798.     (tree_fvc, tree_index_expression, tree_multi_assignment_expression):
  1799.     Use it as a base. 
  1800.  
  1801.     * src/parse.y (make_multi_val_re): New function.
  1802.     (expression): Use it to construct multiple value assignments.
  1803.  
  1804.     * configure.in, Makefile.in, Makeconf.in, src/defaults.h.in:
  1805.     Revamp directory structure used for installed versions of Octave.
  1806.  
  1807.     * src/f-schur.cc (Fschur): Correct argument count in error message.
  1808.  
  1809.     * src/octave.cc (Fcomputer): New function.
  1810.     * scripts/computer.in: Delete.
  1811.     * scripts/Makefile.in: Don't edit or distribute computer.in.
  1812.  
  1813. Thu Sep  1 09:02:06 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1814.  
  1815.     * src/variables.cc (install_builtin_variables): New builtin
  1816.     variable, OCTAVE_VERSION.
  1817.  
  1818. Tue Aug 30 17:18:14 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1819.  
  1820.     * tree-expr.cc: Include string.h
  1821.     (tree_matrix::eval): Fix handling of strings to work as in 1.0.
  1822.  
  1823. Mon Aug 29 14:55:14 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1824.  
  1825.     * src/lex.l: Handle ".+" and ".-" too.
  1826.  
  1827.     * src/dirfns.cc (dir_acess, exists, gen_tempname, tempnam): New
  1828.     functions from glibc.
  1829.     * src/utils.cc (octave_tmp_file_name): Use tempnam.
  1830.     (choose_temp_base_try): Delete.
  1831.     * configure.in: Check for tempnam.
  1832.  
  1833.     * src/load-save.cc (Fsave): Only write floating point format if
  1834.     doing binary save.
  1835.  
  1836.     * liboctave/Array.cc (operator =): Check to see if assignment is
  1837.     to same object.
  1838.  
  1839. Sun Aug 28 23:32:59 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1840.  
  1841.     * liboctave/CollocWt.cc (CollocWt::init): Call delete [] on vectors.
  1842.     * liboctave/NPSOL.cc (NPSOL::minimize): Eliminate some memory leaks.
  1843.     * liboctave/QPSOL.cc (QPSOL::minimize): Likewise.
  1844.     * liboctave/NLEqn.cc (NLEqn::solve): Likewise.
  1845.  
  1846. Thu Aug 25 09:27:04 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1847.  
  1848.     * info/session.c (info_get_input_char): Don't exit immediately if
  1849.     we see EOF on the input stream.
  1850.  
  1851.     * scripts/kurtosis.m, scripts/skewness.m: Update from KH.
  1852.  
  1853. Wed Aug 24 00:19:49 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1854.  
  1855.     * dld/Makefile.in, scripts/Makefile.in, doc/Makefile.in,
  1856.     readline/Makefile.in, info/Makefile.in, libcruft/Makefile.in,
  1857.     liboctave/Makefile.in, src/Makefile.in (INSTALL, INSTALL_PROGRAM,
  1858.     INSTALL_DATA): Define here.
  1859.     * Makeconf.in: Not here.
  1860.  
  1861.     * src/tree-plot.cc (send_to_plot_stream): Handle
  1862.     user_pref.automatic_replot.
  1863.     * src/variables.cc (install_builtin_variables):
  1864.     Add DEFVAR for automatic_replot.
  1865.     * src/user-prefs.cc (automatic_replot): New function.
  1866.     * src/user-prefs.h (user_preferences): Add automatic_replot to the
  1867.     list.
  1868.  
  1869.     * src/data.cc (Fatan2): Make work for mixed scalar and Matrix args.
  1870.     (map): New functions for two arg mappers (like atan2).
  1871.  
  1872.     * src/f-fsqp.cc: Don't surround everything in FSQP_MISSING, so
  1873.     that trying to use fsqp will result in a message about fsqp not
  1874.     being freely redistributable.
  1875.     * src/f-npsol.cc: Likewise, for NPSOL_MISSING.
  1876.     * src/f-qpsol.cc: Likewise, for QPSOL_MISSING.
  1877.  
  1878. Tue Aug 23 12:56:47 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1879.  
  1880.     * src/tree-expr.cc (tree_identifier::eval): Don't call delete for
  1881.     ans_id.  The destructor for tree_simple_assignment_expression does
  1882.     this now.
  1883.  
  1884.     * src/Makefile.in (%.def : %.cc): Use sed, not awk.
  1885.     (realclean, distclean, local-dist, dist): Delete .d and .def files.
  1886.  
  1887.     * liboctave/Array.h (DiagArray::Proxy): Make compilation
  1888.     conditional on gcc version, not just _AIX.
  1889.  
  1890.     * src/utils.cc (octave_tmp_file_name, choose_temp_base_try): New
  1891.     functions, stolen from GCC.  If HAVE_MKTEMP is not defined, just
  1892.     call tmpnam; otherwise, try harder to please.
  1893.     * src/tree-plot.cc (save_in_tmp_file): Use it, instead of calling
  1894.     tmpnam() directly.
  1895.     * src/file-io.cc (do_scanf): Likewise.
  1896.     * src/octave-hist.cc (mk_tmp_hist_file): Likewise.
  1897.     * configure.in: Check for mktemp.
  1898.  
  1899.     * src/tree-const.h (is_matrix_type, is_scalar_type): Make private.
  1900.     * src/tc-rep.h (is_matrix_type, is_scalar_type): Likewise.
  1901.  
  1902.     * src/tc-rep.h (force_numeric, make_numeric,
  1903.     make_numeric_or_magic, make_numeric_or_range_or_magic): Make
  1904.     private.
  1905.     (make_numeric_or_range): #if 0 out.
  1906.  
  1907.     * src/utils.cc (empty_arg): Correctly set return value.
  1908.  
  1909.     * src/arith-ops.cc: Don't include setjmp.h.
  1910.     * src/utils.cc: Surround setjmp.h with extern "C".
  1911.     * src/octave.cc: Likewise.
  1912.  
  1913.     * src/sighandlers.cc (octave_new_handler): New function.
  1914.     (install_signal_handlers): Call it.
  1915.  
  1916.     * src/f-qzval.cc (Fqzvalue): Don't call make_numeric for args.
  1917.     Check error state after attempting to extract values.  Simplify
  1918.     where possible.
  1919.     * src/f-colloc.cc (Fcolloc): Likewise.
  1920.     * src/f-rand.cc (Frand): Likewise.
  1921.     * src/f-sort.cc (Fsort): Likewise.
  1922.     * src/f-find.cc (Ffind): Likewise.
  1923.     * src/f-minmax.cc (Fmin, Fmax): Likewise.
  1924.     * src/f-fft.cc (Ffft): Likewise.
  1925.     * src/f-ifft.cc (Fifft): Likewise.
  1926.     * src/f-svd.cc (Fsvd): Likewise.
  1927.     * src/f-inv.cc (Finv): Likewise.
  1928.     * src/f-det.cc (Fdet): Likewise.
  1929.     * src/f-eig.cc (Feig): Likewise.
  1930.     * src/f-lu.cc (Flu): Likewise.
  1931.     * src/f-hess.cc (Fhess): Likewise.
  1932.     * src/f-qr.cc (Fqr): Likewise.
  1933.     * src/f-givens.cc (Fgivens): Likewise.
  1934.     * src/f-syl.cc (Fsyl): Likewise.
  1935.     * src/f-log.cc (Flog): Likewise.
  1936.     * src/f-expm.cc (Fexpm): Likewise.
  1937.     * src/f-balance.cc (Fbalance): Likewise.
  1938.     * src/f-schur.cc (Fschur): Likewise.
  1939.     * src/f-chol.cc (Fchol): Likewise.
  1940.     * src/f-npsol.cc (Fnpsol, npsol_options): Likewise.
  1941.     * src/f-fsolve.cc (Ffsolve, fsolve_options): Likewise.
  1942.     * src/f-dassl.cc (Fdassl, dassl_options): Likewise.
  1943.     * src/f-lsode.cc (Flsode, lsode_options): Likewise.
  1944.     * src/f-quad.cc (Fquad, quad_options): Likewise.
  1945.     * src/tree-expr.cc (tree_matrix::eval): Likewise, while building
  1946.     matrix.
  1947.     (tree_colon_expression::eval): Likewise, for elements of range.
  1948.     * src/variables.cc (is_valid_function, Fis_global, Fexist):
  1949.     Likewise.
  1950.     * src/sysdep.cc (Fgetenv, Fpause): Likewise.
  1951.     * src/octave.cc (eval_string, Fshell_cmd): Likewise.
  1952.     * src/input.cc (get_user_input): Likewise.
  1953.     * src/file-io.cc (return_valid_file, fopen_file_for_user,
  1954.     fgets_internal, fseek_internal, process_printf_format, do_printf,
  1955.     do_scanf, fread_internal, fwrite_internal, feof_internal):
  1956.     Likewise.
  1957.  
  1958.     * src/tc-rep.cc (TC_REP::string_value): Call error() and return 0
  1959.     instead of crashing if not string_constant.
  1960.  
  1961.     * src/file-io.cc (fopen_file_for_user): Take string as first arg,
  1962.     not tree_constant.  Change callers.
  1963.     (fgets_internal, fseek_internal): Correct check for int arg.
  1964.     (process_scanf_format): Use isspace instead of checking directly
  1965.     (and incorrectly) for white space characters.
  1966.  
  1967.     * src/tree-expr.cc (tree_matrix::eval, tree_unary_expression::eval,
  1968.     tree_binary_expression::eval, tree_colon_expression::eval,
  1969.     tree_simple_assignment_expression::eval ): Eliminate uneccesary
  1970.     conversions to and from Octave_object/tree_constant.
  1971.  
  1972. Mon Aug 22 18:35:05 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1973.  
  1974.     * src/data.cc (Fatan2): New function.
  1975.  
  1976.     * src/data.cc (get_dimensions): Don't call make_numeric for args.
  1977.     Check error state after attempting to extract values.
  1978.  
  1979. Fri Aug 19 08:28:24 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  1980.  
  1981.     * src/tree-misc.h (tree_parameter_list::tree_parameter_list)):
  1982.     Initialize marked_for_varargs to zero.
  1983.  
  1984.     * src/load-save.cc: Add float variants of the conversion routines.
  1985.     (LS_DO_READ): Add swap parameter and only swap bytes if it is true.
  1986.     (read_doubles): Pass swap to LS_DO_READ.  Handle float data.
  1987.     (LS_DO_WRITE): Copy data to tmp buffer to avoid destroying data.
  1988.     (do_double_format_conversion): Rename from do_float_format_conversion.
  1989.     (do_float_format_conversion): New function to handle conversion
  1990.     for float data.
  1991.     (read_mat_binary_data): Use read_doules for all cases.  Handle
  1992.     float data.
  1993.     (too_large_for_float): New function.
  1994.     (save_binary_data): Save data format for scalars and ranges too.
  1995.     (read_binary_data): Read data format for scalars and ranges too.
  1996.     (do_save, save_vars): New arg, save_as_floats.
  1997.     (Fsave): New option, -float-binary.
  1998.  
  1999.     * src/utils.cc (empty_arg): New function.
  2000.     * src/f-balance.cc (Fbalance): Use it to simplify handling of
  2001.     empty arguments.
  2002.     * src/f-chol.cc (Fchol): Likewise.
  2003.     * src/f-det.cc (Fdet): Likewise.
  2004.     * src/f-eig.cc (Feig): Likewise.
  2005.     * src/f-expm.cc (Fexpm): Likewise.
  2006.     * src/f-fft.cc (Ffft): Likewise.
  2007.     * src/f-hess.cc (Fhess): Likewise.
  2008.     * src/f-ifft.cc (Fifft): Likewise.
  2009.     * src/f-inv.cc (Finv): Likewise.
  2010.     * src/f-log.cc (Flogm, Fsqrtm): Likewise.
  2011.     * src/f-lu.cc (Flu): Likewise.
  2012.     * src/f-qr.cc (Fqr): Likewise.
  2013.     * src/f-schur.cc (Fschur): Likewise.
  2014.     * src/f-svd.cc (Fsvd): Likewise.
  2015.  
  2016.     * src/tc-rep.cc (tupe_as_string): Move here.
  2017.     * src/tree-const.cc: From here.
  2018.  
  2019.     * src/gripes.cc (gripe_invalid_conversion): New function.
  2020.  
  2021. Thu Aug 18 21:02:19 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2022.  
  2023.     * src/(print_empty_matrix): New function.
  2024.     * src/pr-output.cc (octave_print_internal): Use it to print empty
  2025.     matrices.
  2026.     * src/tc-rep.cc (TC_REP::print_code, TC_REP::print): Rely on
  2027.     octave_print_internal() to handle printing empty matrices.
  2028.  
  2029.     * src/pr-output.cc (octave_print_internal (all variants)):
  2030.     New arg, pr_as_read_syntax.  If nonzero, print the value in a form
  2031.     that Octave can parse.    Declare os as ostream&, not ostrstream&.
  2032.     * src/tc-rep.cc (TC_REP::print_code): Handle all types, not just
  2033.     real and imaginary constants.
  2034.     * src/help.cc (Ftype): Also print values of variables.
  2035.  
  2036. Wed Aug 17 08:46:44 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2037.  
  2038.     * src/octave.cc (Fshell_cmd): Return output if nargout > 0 or
  2039.     nargin > 2, otherwise, just send output to the pager.
  2040.  
  2041.     * src/mappers.cc (xerf, xerfc, xgamma, xlgamma): New functions.
  2042.     Put preprocessor conditionals here.
  2043.     (install_mapper_functions): Not here.
  2044.  
  2045. Tue Aug 16 09:55:25 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2046.  
  2047.     * configure.in: Check for erf, erfc, and lgamma.
  2048.     * src/mappers.cc (erf, erfc, lgamma): New mappers.
  2049.     * src/mappers.h (Mapper_fcn): Add new field `name'.
  2050.     * src/variables.cc (install_builtin_mapper): Save the name.
  2051.     * src/tc-rep.cc (TC_REP::mapper): Don't crash if a mapper function
  2052.     is missing.
  2053.  
  2054.     * src/tc-rep-1.cc (warn_invalid_conversion): New function.
  2055.     * src/gripes.cc (gripe_invalid_conversion): New function.
  2056.  
  2057.     * src/parse.y (list1, parse_error): New non-terminals.
  2058.     (list): Use them.
  2059.     * src/lex.l: Return LEXICAL_ERROR instead of calling
  2060.     jump_to_top_level.
  2061.  
  2062.     * liboctave/Range.cc (matrix_value): New function.
  2063.     * src/tc-rep.cc (TC_REP::matrix_value): Use it.
  2064.  
  2065.     * src/tree-const.h (to_matrix, to_vector, to_scalar): Delete
  2066.     unecessary functions.
  2067.     * src/tc-rep.cc (TC_REP::to_matrix, TC_REP::to_vector,
  2068.     TC_REP::to_scalar): Likewise.  Change all callers to use
  2069.     matrix_value, vector_value, and scalar_value instead. 
  2070.  
  2071.     * src/tree-const.cc (TC_REP::matrix_value): If at all possible,
  2072.     produce a matrix from the current constant.  Otherwise, print an
  2073.     error message.  Don't abort or jump to the top level.
  2074.     (TC_REP::scalar_value, TC_REP::complex_scalar_value,
  2075.     TC_REP::vector_value, TC_REP::complex_vector_value,
  2076.     TC_REP::complex_matrix_value): Likewise, for appropriate types.
  2077.  
  2078.     * src/utils.cc (empty_arg): New function.
  2079.     * src/f-svd.cc (Fsvd): Use it.    Don't call make_numeric; rely on
  2080.     value functions to do conversion.
  2081.  
  2082.     * src/load-save.cc (Fload): Handle -list and -verbose.
  2083.  
  2084. Mon Aug 15 09:32:57 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2085.  
  2086.     * src/tc-rep.cc (TC_REP): New define, so we don't have to write
  2087.     tree_constant::tree_constant_rep:: everywhere.
  2088.     * src/tree-const.h (class tree_constant): Nest tree_constant_rep
  2089.     class inside tree_constant class by including tc-rep.h here.
  2090.     * src/tc-rep.h: Don't include any other files, delete forward
  2091.     class declarations.
  2092.  
  2093.     * src/tc-rep.h (constant_type): Make private.
  2094.  
  2095.     * src/parse.y (arg_list): Use tree_constant::magic_colon in
  2096.     constructor call, not tree_constant_rep::magic_colon.
  2097.     * src/tree-const.h (tree_constant::tree_constant
  2098.     (tree_constant::magic_colon)): Convert arg from
  2099.     tree_constant_rep::constant_type.
  2100.  
  2101.     * src/f-svd.cc (Fsvd): Simplify.
  2102.  
  2103.     * src/tree-expr.cc (any_arg_is_magic_colon): Don't use values from
  2104.     tree_constant_rep::constant_type enum.
  2105.     (tree_matrix::eval): Likewise.
  2106.     * src/tree-misc.cc (tree_parameter_list::define_from_arg_vector,
  2107.     tree_if_clause::eval):    Likewise.
  2108.     * src/tree-cmd.cc (tree_while_command::eval,
  2109.     tree_for_command::eval): Likewise.
  2110.     * src/symtab.cc (symbol_record_info::symbol_record_info): Likewise.
  2111.     * src/f-colloc.cc (Fcolloc): Likewise.
  2112.     * src/f-npsol.cc (npsol_objective_function): Likewise.
  2113.     * src/f-chol.cc (Fchol): Likewise.
  2114.     * src/f-det.cc (Fdet): Likewise.
  2115.     * src/f-eig.cc (Feig): Likewise.
  2116.     * src/f-expm.cc (Fexpm): Likewise.
  2117.     * src/f-fft.cc (Ffft): Likewise.
  2118.     * src/f-find.cc (Ffind): Likewise.
  2119.     * src/f-hess.cc (Fhess): Likewise.
  2120.     * src/f-ifft.cc (Fifft): Likewise.
  2121.     * src/f-inv.cc (Finv): Likewise.
  2122.     * src/f-log.cc (Flog): Likewise.
  2123.     * src/f-lu.cc (Flu): Likewise.
  2124.     * src/f-minmax.cc (Fmin, Fmax): Likewise.
  2125.     * src/f-qr.cc (Fqr): Likewise.
  2126.     * src/f-rand.cc (rand): Likewise.
  2127.     * src/f-schur.cc (schur): Likewise.
  2128.     * src/f-sort.cc (Fsort): Likewise.
  2129.     * src/f-svd.cc (Fsvd): Likewise.
  2130.  
  2131.     * src/f-lu.cc (Flu): Handle case of nargout == 0 the same as
  2132.     nargout == 1.
  2133.  
  2134.     * src/tree-const.h (force_numeric): Don't return type info.
  2135.     * src/tc-rep.cc (tree_matrix::eval): Ditto.
  2136.     * src/tree-expr.cc (tree_matrix::eval): Don't use return value
  2137.     from tree_constant::force_numeric().
  2138.  
  2139.     * src/tree-const.h (is_magic_colon): New function.
  2140.     * src/tc-rep.h (is_magic_colon): New function.
  2141.  
  2142.     * src/load-save.cc (ascii_save_type): New function.
  2143.     (save_binary_data, save_ascii_data, save_three_d): Don't use
  2144.     values from tree_constant_rep::constant_type enum. Fail if write
  2145.     is unsuccessful.  Fail but don't panic if type is unrecognized.
  2146.     (save_vars): Check error state after call to do_save().
  2147.  
  2148.     * src/tc-rep.cc (isstr): Delete, since we have is_string.
  2149.     * src/tree-const.h (isstr): Ditto.
  2150.     * src/data.cc (Fisstr): Use is_string(), not isstr().
  2151.  
  2152. Sun Aug 14 16:12:10 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2153.  
  2154.     * src/load-save.cc (save_type): Add LS_U_INT, LS_CHAR and LS_FLOAT.
  2155.     (get_save_type): Handle them.
  2156.     (read_doubles, write_doubles): Likewise.
  2157.  
  2158.     * src/load-save.cc (get_floating_point_format): New function.
  2159.     (read_mat_binary_data, read_binary_file_header): Use it.
  2160.  
  2161.     * src/lex.l: Combine {D}+\.{D}*{EXPON}?{Im} and {D}+{EXPON}?{Im}
  2162.     patterns into the single pattern {D}+\.?{D}*{EXPON}?{Im}
  2163.     Likewise, combine {D}+\.{D}*{EXPON}? and {D}+{EXPON}? into the
  2164.     single pattern {D}+\.?{D}*{EXPON}?
  2165.     ({D}+/\.[\*/\\^']): New pattern to force expressions like `1./m'
  2166.     to be parsed the same as `1 ./ m'.
  2167.  
  2168.     * src/tree-expr.cc (do_lookup): Correctly set script_file_executed.
  2169.  
  2170.     * src/octave.cc (long_opts): Add --silent as an alias for --quiet,
  2171.     and --ignore-init-file as an alias for --norc.
  2172.  
  2173.     * src/octave.cc (verbose_usage): Exit successfully to conform to
  2174.     the GNU coding standards.
  2175.  
  2176. Sat Aug 13 11:06:23 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2177.  
  2178.     * src/dirfns.cc (chdir): New alias for cd.
  2179.  
  2180.     * src/lex.l (")"): Set convert_spaces_to_comma.
  2181.  
  2182.     * src/*.cc: Use tree_constant::is_string(), not
  2183.     tree_constant::is_string_type().
  2184.  
  2185.     * src/f-balance.cc (Fbalance): Use is_string() rather than
  2186.     checking const_type() against tree_constant_rep::string_constant.
  2187.  
  2188.     * src/tc-rep.h (tree_constant_rep::is_string_type): Delete.
  2189.     * src/tree-const.h (tree_constant::is_string_type): Delete.
  2190.  
  2191.     * src/Makefile.in (%.def : %.cc): Complain if generated file is
  2192.     empty.
  2193.  
  2194.     * configure.in (gcc_version): Set LDFLAGS to -g, not "-g -O".
  2195.  
  2196.     * src/lex.l (looks_like_bin_op): Also return true for things like
  2197.     [ 1+ 2 ].
  2198.  
  2199.     * src/data.cc (Feye, Fones): With no args, return 1.0.
  2200.     (Fzeros): With no args, return 0.0.
  2201.  
  2202.     * src/Makefile.in (XALL_CXXFLAGS): ALL_CXXFLAGS without
  2203.     -fextternal-templates.
  2204.     (%.def : %.cc): Use it instead of ALL_CXXFLAGS.
  2205.  
  2206.     * configure.in: Don't use -O for compiling float-type.c.
  2207.  
  2208.     * libcruft/misc/Makefile.in (XCC): Use patsubst to delete any -O#
  2209.     flags, not just -O.
  2210.  
  2211. Fri Aug 12 18:20:35 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2212.  
  2213.     Changes for binary load/save, and reading .mat files:
  2214.  
  2215.     * src/variables.cc (is_globally_visible): Declare extern, not
  2216.     static.
  2217.  
  2218.     * src/user-prefs.cc (sv_default_save_format): New function.
  2219.     * src/user-prefs.h (default_save_format): New field in
  2220.     user_preferences struct.
  2221.     src/variables.cc (install_builtin_variables): Add DEFVAR for
  2222.     default_save_format.
  2223.  
  2224.     * src/tc-rep.h (tree_constant_rep::is_unknown,
  2225.     tree_constant_rep::is_scalar, tree_constant_rep::is_matrix,
  2226.     tree_constant_rep::is_complex_scalar,
  2227.     tree_constant_rep::is_complex_matrix,
  2228.     tree_constant_rep::is_string, tree_constant_rep::is_range):
  2229.     New functions.
  2230.  
  2231.     * src/tree-const.h (tree_constant::is_unknown,
  2232.     tree_constant::is_scalar, tree_constant::is_matrix,
  2233.     tree_constant::is_complex_scalar, tree_constant::is_complex_matrix,
  2234.     tree_constant::is_string, tree_constant::is_range):
  2235.     New functions.
  2236.  
  2237.     * src/tc-rep.cc (tree_constant_rep::save,
  2238.     tree_constant_rep::save_three_d): Move to load-save.cc and convert
  2239.     to nonmember functions.
  2240.  
  2241.     * src/tree-const.h (tree_constant::save,
  2242.     tree_constant::save_three_d): Delete functions.
  2243.  
  2244.     * src/tree-plot.cc (save_in_tmp_file): Call nonmember functions
  2245.     save_ascii_file and save_three_d instead of tree_constant class
  2246.     member functions.
  2247.  
  2248.     * src/symtab.cc (symbol_table::glob): New function.
  2249.     (symbol_table::save, symbol_record::save, symbol_def::save):
  2250.     Delete unneeded functions.
  2251.  
  2252.     * src/load-save.cc: New file, for load/save related functions
  2253.     extracted from src/variables.cc and src/tc-rep.cc.
  2254.  
  2255.     * src/error.cc (verror): Don't print name if it is null.
  2256.  
  2257. Tue Aug  9 14:31:43 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2258.  
  2259.     * src/file-io.cc (process_printf_format): Use
  2260.     tree_constant::is_scalar_type() and is_string_type() functions
  2261.     instead of comparing directly with elements of the
  2262.     tree_constant_rep::constant_type enum.
  2263.     * src/variables.cc (builtin_real_scalar_variable): Likewise.
  2264.     (install_loaded_variable): Likewise.
  2265.  
  2266.     * src/tree-plot.cc (open_plot_stream): New function.
  2267.     (send_to_plot_stream): Use it.  Do our own check for replot with
  2268.     nothing to plot.
  2269.     (tree_plot_command::eval): Open plot stream before doing anything.
  2270.  
  2271.     * src/data.cc (check_dimensions): When changing negative
  2272.     dimensions to zero, handle nr and nc separately.
  2273.  
  2274. Mon Aug  8 20:18:17 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2275.  
  2276.     * variables.cc (is_valid_fcn): Use lookup_by_name() instead of
  2277.     looking in the global symbol table directly.
  2278.  
  2279.     * variables.cc (load_variable): Move code here.
  2280.     * src/tc-rep.cc (tree_constant_rep::load): From here.
  2281.     * src/tree-const.h (tree_constant::load): Delete.
  2282.  
  2283.     * src/tree-plot.cc: Derive classes from tree_print_code and
  2284.     implement print_code() member functions.
  2285.  
  2286.     * src/tree-plot.cc (subplot_list::print): New function.
  2287.     (tree_plot_command::print): Use it, and don't crash if plot_list
  2288.     is null.
  2289.  
  2290.     * scripts/axis.m: New function file.
  2291.  
  2292. Sun Aug  7 17:06:16 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2293.  
  2294.     * configure.in: Check for size of short, int, and long.
  2295.  
  2296.     * float-type.c: New file.
  2297.     * configure.in: Use it to determine the native floating point
  2298.     format.
  2299.     * Makefile.in: Add it to the list of files to distribute.
  2300.     * acconfig.h (IEEE_BIG_ENDIAN, IEEE_LITTLE_ENDIAN, VAX_D_FLOAT,
  2301.     VAX_G_FLOAT): Add #undefs.
  2302.  
  2303. Sat Aug  6 18:23:47 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2304.  
  2305.     * config.guess: Update with new copy from gcc 2.6.0.
  2306.  
  2307.     * src/*.cc, src/*.h, src/*.l, src/*.y: Eliminate need for tree.h.
  2308.     * src/Makefile.in (INCLUDES): Delete it from the list.
  2309.  
  2310.     * src/token.cc (token::token (double)): Handle saving original
  2311.     text of constants for later use by print_code() functions.
  2312.     (token::~token): Delete original text.
  2313.     (token::text_rep): New function.
  2314.     * src/lex.l: Save original text for NUM and IMAG_NUM tokens.
  2315.     * src/parse.y: Likewise.
  2316.  
  2317.     * src/parse.y (yyerror): Use the pager.
  2318.  
  2319.     * src/tree-base.h (tree_print_code): New base class for trees and
  2320.     lists of trees.
  2321.     (tree): Derive from tree_print_code.
  2322.     * src/tree-base.cc: New file, for tree_print_code functions, and
  2323.     for initializing tree_print_code static members.
  2324.     * src/tree-const.cc, src/tc-rep.cc, src/tree-plot.cc,
  2325.     src/tree-expr.cc, src/tree-cmd.cc (all tree classes):
  2326.     Provide print_code() member function. 
  2327.     * src/tree-misc.cc: Also derive list classes from tree-base.h and
  2328.     provide print_code() member functions.
  2329.  
  2330.     * src/help.cc (Ftype, Fwhich): New functions.
  2331.  
  2332.     * src/octave-hist (do_history): Send history output through the
  2333.     pager.
  2334.  
  2335.     * src/variables.cc (do_who, Fwhos): New functions.
  2336.  
  2337.     * src/tree-expr.h (tree_expression::in_parens): Declare here.
  2338.     (tree_simple_assignment_expression::in_parens): Not here.
  2339.     * src/parse.y (maybe_warn_assign_as_truth_value): Eliminate cast.
  2340.  
  2341.     * src/variables.cc (load_fcn_from_file, lookup, lookup_by_name):
  2342.     New functions, extracted from tree_identifier class.
  2343.     (gobble_leading_whitespace, is_function_file, parse_fcn_file):
  2344.     Move here from tree-expr.cc.
  2345.     * src/help.cc (Fhelp): Use lookup_by_name so that looking up
  2346.     symbols is handled in a consistent way.
  2347.  
  2348.     * tree-expr.cc (tree_unary_expression::oper,
  2349.     tree_binary_expression::oper, tree_prefix_expression::oper,
  2350.     tree_postfix_expression::oper): New functions.
  2351.  
  2352.     * tc-rep.cc (valid_scalar_indices): Define here.
  2353.     * tc-inlines.cc: Not here.
  2354.  
  2355.     * src/tree-const.h (tree_constant::stash_original_text): New
  2356.     function.
  2357.     * src/tc-rep.cc (tree_constant_rep::stash_original_text): Ditto.
  2358.     (undo_string_escapes): Ditto.
  2359.  
  2360.     * src/tc-rep (tree_constant_rep::do_matrix_index): Don't just
  2361.     return *this.
  2362.     * src/tree-const.h (tree_constant::tree_constant (tree_constant_re&)):
  2363.     Delete.
  2364.  
  2365.     * src/pager.cc (open_diary_file, close_diary_file,
  2366.     maybe_write_to_diary_file, Fdiary): New functions.
  2367.     (flush_output_to_pager): Call maybe_write_to_diary_file before
  2368.     sending output to the screen.
  2369.     * src/input.cc (octave_gets): Call maybe_write_to_diary file to
  2370.     save the prompt and the user input.
  2371.     * src/error.cc (verror): Use C++ streams, not C I/O functions.
  2372.     Call maybe_write_to_diary file to save error messges too.
  2373.     * src/octave.cc (clean_up_and_exit): Close diary file here.
  2374.  
  2375.     * src/octave.cc (main): Initialize pager first.
  2376.  
  2377.     * src/input.cc (get_user_input): Return empty matrix for no input.
  2378.  
  2379.     * src/tree-plot.cc: Include readline/tilde.h instead of declaring
  2380.     tilde_expand() directly.
  2381.     * src/utils.cc: Likewise.
  2382.  
  2383.     * src/tree-plot.cc (tree_plot_command::print_code): New function.
  2384.     * src/tree-const.h (tree_constant::print_code): Likewise.
  2385.  
  2386.     * src/tree-expr.h (tree_simple_assignment_expression::ans_ass):
  2387.     New data member to flag assignments to ans.
  2388.     * src/tree-expr.cc (tree_identifier::eval): Set it when
  2389.     constructing assignments to ans.
  2390.     * src/parse.y (maybe_convert_to_ans_assign): Likewise.
  2391.  
  2392.     * src/tree-expr.h (tree_simple_assignment_expression::preserve):
  2393.     New data member to allow preserving left hand side args that
  2394.     shouldn't be deleted in some cases (ugh).
  2395.     * src/tree-expr.cc (tree_multi_assignment_expression::eval):
  2396.     Create assignment with preserve flag set.
  2397.  
  2398. Wed Aug  3 14:27:25 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2399.  
  2400.     Yet another massive reorganization of sources, once again
  2401.     hopefully for the better.  A fair amount of work is not detailed
  2402.     here, but these are the major points.  The grammar file and the
  2403.     derivation of the tree classes are somewhat cleaner now.
  2404.  
  2405.     * src/parse.y: Cope with changes to derivation scheme.
  2406.  
  2407.     * src/tree-misc.cc: New file.
  2408.     (tree_statement, tree_global): New classes.
  2409.     (tree_global_init_list): New class, derived from SLList for the
  2410.     list of expressions in a global command.
  2411.     * src/tree-cmd.cc (tree_global_command): Use tree_global_init_list.
  2412.  
  2413.     * src/tree-misc.cc (tree_argument_list): Move here from
  2414.     tree-expr.cc, and derive from SLList instead of tree.
  2415.     (tree_parameter_list): Likewise.
  2416.     (tree_return_list): Likewise.
  2417.  
  2418.     * src/tree-cmd.cc (tree_command_list): Delete class.
  2419.     * src/tree-misc.cc (tree_statement_list): New class for keeping a
  2420.     list of commands or expressions to evaluate.  Derive from SLList,
  2421.     not tree.
  2422.  
  2423.     * src/tree-plot.cc (subplot_list, plot_limits, plot_range,
  2424.     subplot_using, subplot_style): Rename from tree_*, and
  2425.     don't derive from tree class.
  2426.  
  2427.     * src/tree-plot.cc: Eliminate eval member function for classes not
  2428.     derived from tree class.
  2429.  
  2430.     * src/tree-plot.cc, src/tree-cmd.cc: For classes derived from
  2431.     tree-command, the eval() member function is now void eval (void).
  2432.  
  2433.     * src/tree-base.h (tree::tree): New constructor, to initialize the
  2434.     line and column info.  For all classes that are derived from the
  2435.     tree class, use it instead of manipulating the data directly.
  2436.     (line_num, column_num): Make private.
  2437.  
  2438.     * src/tree-expr.cc (tree_simple_assignment_expression::preserve):
  2439.     New data member, set in constructors and used by the destructor
  2440.     when the left-hand side of the expression should not be deleted
  2441.     (as for some temporary assignments not constructed in the parser).
  2442.  
  2443.     * src/tree-expr.h (tree_expression::type) Rename and move here from
  2444.     tree-base.h.  Change all uses.
  2445.     (tree_matrix::dir): Likewise.  Change all uses.
  2446.  
  2447.     * src/utils.cc (make_argv): Stash function name in argv[0].
  2448.  
  2449.     * src/octave.cc (global_command): Declare as tree_statement_list,
  2450.     not tree.
  2451.  
  2452.     * src/parse.y (make_binary_op, make_unary_op, make_prefix_op,
  2453.     make_postfix_op): New functions.
  2454.  
  2455.     * src/parse.y (GLOBAL): Make it a tok_val type.
  2456.     * src/lex.l (is_keyword): Give GLOBAL a value.
  2457.  
  2458. Mon Aug  1 22:37:22 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2459.  
  2460.     * src/lex.l (grab_help_text): Unput the last character read.
  2461.  
  2462. Sun Jul 31 21:17:07 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2463.  
  2464.     * src/pr-output.cc (set_format (double, int&)): Avoid calling
  2465.     log10 for Inf and NaN.
  2466.  
  2467. Fri Jul 29 16:08:32 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2468.  
  2469.     * src/octave.cc (reading_startup_message_printed): New flag.
  2470.     (parse_and_execute): New arg, verbose.  If true, print name of
  2471.     file as it is read.
  2472.     (execute_startup_files): Don't print message if
  2473.     inhibit_startup_message is true.
  2474.     (main): Move startup message before reading init files.
  2475.  
  2476. Thu Jul 28 00:25:42 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2477.  
  2478.     * liboctave/Makefile.in (MATRIX_INC): Delete CmplxColVec.h from list.
  2479.  
  2480.     * src/symtab.cc (symbol_table::rename): New function.
  2481.     * src/parse.y (func_def2): Use it instead of tree_identifier::rename.
  2482.     * src/tree-expr.cc (tree_identifier::rename): Delete unused function.
  2483.  
  2484.     * src/tree-expr.cc (tree_identifier::load_fcn_from_file): New function.
  2485.     (tree_identifier::do_lookup): Use it instead of parse_fcn_file.
  2486.     * src/variables.cc (is_valid_function): Ditto.
  2487.     * src/help.cc (Fhelp): Ditto.
  2488.  
  2489.     * src/utils.cc (oct_file_in_path): New function.
  2490.  
  2491. Wed Jul 27 08:59:32 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2492.  
  2493.     * src/tree-expr.cc (tree_identifier::parse_fcn_file): Combine
  2494.     three functions into one.
  2495.  
  2496.     * src/utils.cc: Delete uneeded declaration of ioctl().
  2497.     * src/sysdep.cc: Likewise.
  2498.  
  2499.     * install.sh: New file, from autoconf distribution.
  2500.     * Makefile.in (DISTFILES): Distribute it.
  2501.  
  2502. Tue Jul 26 16:08:58 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2503.  
  2504.     * scripts/Makefile.in (DISTDIRS): New variable, for directories
  2505.     below scripts to distribute.
  2506.     (dist): Handle distributing whole directories named by $(DISTDIRS).
  2507.     (local-dist): Ditto.
  2508.  
  2509. Mon Jul 25 12:57:09 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2510.  
  2511.     * liboctave/CmplxQRP.cc: Provide declaration for zungqr.
  2512.     * liboctave/dbleQRP.cc: Provide declaration for dorgqr.
  2513.  
  2514.     * src/Makefile.in (dist): Also remove y.output and defaults.h.
  2515.     (local-dist): Ditto.
  2516.     (realclean): Ditto.
  2517.  
  2518.     * src/oct-obj.h (Octave_object::Octave_object (int)): Make
  2519.     private, to avoid problems with different meanings of
  2520.     Octave_object (int) and Octave_object (double) constructors.
  2521.  
  2522.     * scripts/amr-image: New files for image processing from Tony
  2523.     Richardson.  These are not in the default octave LOADPATH yet.
  2524.     See the README file in the amr-image directory for more info on
  2525.     how to use them.
  2526.  
  2527.     * src/octave.cc (Fshell_cmd): Restore accidentally deleted
  2528.     function.
  2529.  
  2530.     * scripts/conv-amr.m, scripts/deconv-amr.m, scripts/roots-amr.m,
  2531.     scripts/poly-amr.m, scripts/roots-tuwien.m, scripts/conv-tuwien.m,
  2532.     scripts/deconv-tuwien.m, scripts/poly-tuwien.m:
  2533.     New files.
  2534.     XXX FIXME XXX -- For each of these functions, either one of the
  2535.     versions will need to be selected, or they will need to be merged
  2536.     before the next release.
  2537.  
  2538.     * scripts/null.m, scripts/orth.m, scripts/fft2.m, scripts/ifft2.m,
  2539.     scripts/filter.m, scripts/compan.m, scripts/polyderiv.m,
  2540.     scripts/polyinteg.m, scripts/polyreduce.m, scripts/polyval.m,
  2541.     scripts/polyvalm.m, scripts/postpad.m, scripts/prepad.m,
  2542.     scripts/residue.m, scripts/sinc.m, scripts/freqz.m,
  2543.     scripts/complement.m, scripts/intersection.m,
  2544.     scripts/create_set.m, scripts/union.m:
  2545.     New files.
  2546.  
  2547.     * scripts/hilb.m: Eliminate inner loop, for speed.  From
  2548.     romolo@URSAMAJOR.ENG.UNIPR.IT (Romolo Manfredini).
  2549.  
  2550. Sun Jul 24 22:08:48 1994  Castor Fu (castor@drizzle.stanford.edu)
  2551.  
  2552.     * libcruft/ranlib/genf.f (genf): Use 1.2E-38 instead of 1.0E-38
  2553.     when checking to see if generated numbers will cause overflow.
  2554.     This helps DEC's f77 compiler on the Alpha, which refuses to
  2555.     generate denormalized constants.
  2556.     * libcruft/ranlib/gennf.f (gennf): Likewise.
  2557.  
  2558. Fri Jul 22 10:27:00 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2559.  
  2560.     * src/Makefile.in (DEF_FILES): Depend on defun header files too.
  2561.  
  2562. Thu Jul 21 14:40:30 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2563.  
  2564.     * liboctave/NLFunc.h (nonlinear_fcn): Declare as pointer to
  2565.     function taking const ColumnVector arg.
  2566.     (jacobian_fcn): Ditto.
  2567.  
  2568.     * src/defun-int.h (DEFINE_ARGV): Declare and define save_argc and
  2569.     save_argv for functions that mess with argc and argv directly.
  2570.     (DELETE_ARGV): Use save_argc and save_argv instead of argc and argv.
  2571.  
  2572.     * src/f-lsode.cc (ODE_OPTIONS): Add const qualifier for string elts.
  2573.     (print_lsode_option_list): Declare keyword as const char *.
  2574.     * src/f-npsol.cc, src/f-qpsol.cc, src/f-dassl.cc, src/f-quad.cc:
  2575.     Likewise, for corresponding structs and functions.
  2576.  
  2577.     * liboctave/dbleSVD.h (SVD::type): New enum, for choosing type of
  2578.     factorization.
  2579.     * liboctave/CmplxSVD.cc (SVD::SVD): Add new optional arg for type.
  2580.     (init): Handle case of type == SVD::economy.
  2581.     * liboctave/dbleSVD.cc: Likewise.
  2582.  
  2583.     QR changes from R. Bruce Tenison (btenison@eng.auburn.edu) adapted
  2584.     for new way of defining builtin functions:
  2585.  
  2586.     * doc/linalg.texi:  Changed QR description to include QRP
  2587.     factorization
  2588.  
  2589.     * src/f-qr.cc (Fqr): Handle permuted and economy QR
  2590.     factorizations.  Handle case of 1 output arg.
  2591.  
  2592.     * liboctave/Makefile.in (MATRIX_INC, MATRIX_SRC): Add new QRP files.
  2593.  
  2594.     * liboctave/dbleQRP.h, liboctave/dbleQRP.cc, liboctave/CmplxQRP.h,
  2595.     liboctave/CmplxQRP.h: New files, for QR with pivoting.
  2596.  
  2597.     * liboctave/dbleQR.h (QR::type): New enum, for choosing type of
  2598.     factorization.
  2599.     * liboctave/CmplxQR.cc (QR): Add new optional arg for type.
  2600.     Handle case of type == SVD::economy and SVD::raw.
  2601.     * liboctave/dbleQR.cc (QR): Likewise.
  2602.  
  2603.     * libcruft/lapack/dgeqpf.f: New file.
  2604.     * libcruft/lapack/zgeqpf.f: Ditto.
  2605.  
  2606. Wed Jul 20 13:12:55 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2607.  
  2608.     * liboctave/*.cc, liboctave/*.h: Various cleanups to remove use of
  2609.     NULL.  Only mention default argument values in function
  2610.     declarations, not in their definitions (required for gcc 2.6.x).
  2611.  
  2612.     * configure.in: If configuring for alpha-dec-osf, check for sgtty
  2613.     first. If not found, go ahead and check for Posix terminal driver.
  2614.  
  2615. Tue Jul 19 09:25:45 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2616.  
  2617.     * liboctave/mx-defs.h (FILE): Don't declare as struct FILE just to
  2618.     avoid including stdio.h.
  2619.     * liboctave/dMatrix.cc: Do include stdio.h here.
  2620.  
  2621.     * liboctave matrix classes: Declare operator>> correctly, and
  2622.     return istream object.  Get friend stuff right.
  2623.  
  2624.     * liboctave/DAE.cc (DAE::integrate): To see if the user provided a
  2625.     Jacobian function, call DAEFunc::jacobian_function ().
  2626.  
  2627.     * liboctave/DAE.cc (user_fun, user_jac): Qualify with class name.
  2628.     * liboctave/ODE.cc (user_fun, user_jac): Ditto.
  2629.  
  2630.     * liboctave/DAFunc.h (DAEJac): Declare inside class.
  2631.     (DAERHSFunc, DAEJacFunc): Define types inside class.
  2632.     * liboctave/ODEFunc.h (ODERHSFunc, ODEJacFunc) Likewise.
  2633.  
  2634.     Massive reorganization of sources, hopefully for the better.
  2635.     A fair amount of work is not detailed here, but these are the
  2636.     major points...
  2637.  
  2638.     * src/symtab.h (symbol_def::TYPE) Add new elements for recording
  2639.     whether a symbol is a text function or mapper function.
  2640.     * src/symtab.cc (symbol_def::is_text_function,
  2641.     symbol_record::is_text_function, symbol_def::is_mapper_function,
  2642.     symbol_record::is_mapper_function): New functions.
  2643.     Modify existing is_* functions to cope with these changes.
  2644.     (symbol_def::symbol_def (tree_builtin*, unsigned)): New 2nd arg.
  2645.     (symbol_def::symbol_def (tree_function*, unsigned)): Ditto
  2646.     (symbol_def::define (tree_builtin*, unsigned)): Ditto.
  2647.     (symbol_def::define (tree_function*, unsigned)): Ditto.
  2648.     * src/variables.cc (is_text_function_name): Use the new symbol
  2649.     table functions, since we can no longer tell by looking in a
  2650.     simple list.
  2651.  
  2652.     * tree-expr.cc (class tree_builtin): Text functions are no longer
  2653.     handled as a special case here.
  2654.  
  2655.     * src/sysdep.cc (octave_ieee_init): Special case Alpha for
  2656.     initializing Inf and NaN.
  2657.  
  2658.     * src/tc-rep.cc: Use const in more places.
  2659.  
  2660.     * src/data.cc src/timefns.cc, src/dirfns.cc, src/dirfns.h: New
  2661.     files.
  2662.  
  2663.     * src/*.cc, src/*.y, src/*.l, src/*.h: Various cleanups to remove
  2664.     use of NULL.  Only mention default argument values in function
  2665.     declarations, not in their definitions (required for gcc 2.6.x).
  2666.  
  2667.     * src/g-builtins.cc, src/g-builtins.h, src/t-builtins.cc
  2668.     src/t-builtins.h: Removed.  Functions moved to various other
  2669.     files, where they more logically belong.
  2670.     * src/utils.cc:  Likewise, various functions moved to other files,
  2671.     where they more logically belong.
  2672.     * src/mappers.cc (install_mapper_functions): Declare all mapper
  2673.     functions here with the new DEFUN_MAPPER() macro.
  2674.     * src/variables.cc (install_builtin_variables): Declare all
  2675.     builtin variables here, with the new DEFVAR() macro.
  2676.  
  2677.     * src/f-*.h: Deleted.
  2678.     * src/f-*.cc: Delete #ifdef WITH_DLD code and use DEFUN_DLD()
  2679.     instead to declare builtin functions that will be dynamically
  2680.     loaded.  Give all functions a uniform return type and argument
  2681.     list.
  2682.  
  2683.     * src/mkdefs, src/mkbuiltins: New scripts.
  2684.     * src/Makefile.in: Use them to generate builtins.cc automatically
  2685.     from source files that use DEFUN.
  2686.  
  2687.     * src/defun.h, src/defun-dld.h, src/defun-int.h: New files, to
  2688.     define DEFUN() and DEFVAR() macros to make it possible to define
  2689.     functions together with their help strings in one place.  The code
  2690.     to install functions in the symbol table is now generated by
  2691.     mkbuiltins.
  2692.  
  2693.     * configure.in (LIBOCTDLD): New variable to define.
  2694.     Only call AC_VERBOSE() for DYNAMIC_LD_OBJ, DLD_DIR, LIBDLD,
  2695.     LIBOCTDLD, and LD_STATIC_FLAG if they are set.
  2696.     * move-if-change: Move here, from src/move-if-change.
  2697.     * Makeconf.in (%.d: %.cc): Echo simple message instead of the
  2698.     commands actually executed.
  2699.     (%.d: %.c): Likewise.
  2700.  
  2701.     * src/unwind-prot.h: Include stddef.h, for size_t.
  2702.  
  2703. Tue Jul 12 12:51:25 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2704.  
  2705.     * src/f-eval.cc, src/f-fill.cc, src/f-find.cc, src/f-input.cc,
  2706.     src/f-minmax.cc, src/f-log.cc, src/f-sort.cc, src/f-eval.h,
  2707.     src/f-fill.h, src/f-find.h, src/f-input.h, src/f-log.h,
  2708.     src/f-minmax.h, src/f-sort.h: New files, for functions extracted
  2709.     from tree-const.cc.
  2710.     * src/Makefile.in: Add them to the list of INCLUDES, SOURCES, and
  2711.     OBJECTS.
  2712.  
  2713.     * src/f-*.cc: Clean up things a bit by letting the compiler
  2714.     generate the tree_constant constructor calls.
  2715.  
  2716.     * src/unwind-prot.h: Include stddef.h, for size_t.
  2717.  
  2718.     * src/oct-obj.h (Octave_object (int, const tree_constant&)):
  2719.     New constructor form.
  2720.     * src/tree-const.cc (find_nonzero_elem_idx): Rewrite to handle 2
  2721.     and 3 return values.
  2722.  
  2723.     * src/g-builtins.cc (builtin_find): Check nargout too.
  2724.     * src/builtins.cc (general_functions): Fix help message for find.
  2725.  
  2726. Mon Jul 11 13:36:15 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2727.  
  2728.     * src/tc-rep.cc    (tree_constant_rep::convert_to_row_or_column_vector):
  2729.     If already have a row or column vector, return without doing
  2730.     anything.
  2731.  
  2732. Sat Jul  9 01:02:51 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2733.  
  2734.     * src/oct-obj.h (Octave_object): Make it a class, not just a
  2735.     typedef.
  2736.  
  2737.     * src/tree-expr.h (tree_function::curr_va_arg_number): Rename from
  2738.     curr_arg_number.
  2739.     (tree_function::varargs_ok): Delete unused member variable.
  2740.     * src/tree-expr.cc (tree_function::octave_va_arg): Increment
  2741.     cur_va_arg_number before indexing args_passed.
  2742.     (tree_function::octave_va_start): Set curr_va_arg_number to
  2743.     num_args_passed, not num_args_passed + 1.
  2744.     (tree_function::takes_varargs): Call param_list::takes_varargs,
  2745.     don't just return varargs_ok.
  2746.     (tree_function::define_param_list): If param_list is not NULL, set
  2747.     num_named_args and curr_va_arg_number even if function doesn't
  2748.     take varargs.
  2749.  
  2750.     * src/tree-expr.cc (tree_identifier::eval (int)): Only pass empty
  2751.     arg list if evaluating a constant.
  2752.     (tree_function::eval (int)): Always pass least one arg.
  2753.  
  2754.     * Makeconf.in (TMP_IF_1): Add `-I../src'.
  2755.     (TMP_IF_2): Add `-I$(TOPDIR)/src' and `-I$(top_srcdir)/src'.
  2756.  
  2757.     * src/t-builtins.h, src/variables.h, src/file-io.h, src/f-syl.h,
  2758.     src/f-svd.h, src/f-schur.h, src/f-rand.h, src/f-qzval.h,
  2759.     src/f-quad.h, src/f-qpsol.h, src/f-npsol.h, src/f-lsode.h,
  2760.     src/f-lpsolve.h, src/f-hess.h, src/f-givens.h, src/f-fsqp.h,
  2761.     src/f-fsolve.h, src/f-eig.h, src/f-dassl.h, src/f-colloc.h,
  2762.     src/f-balance.h, src/dynamic-ld.h, src/builtins.cc,
  2763.     src/tree-const.cc, src/file-io.cc, src/f-syl.cc, src/f-svd.cc,
  2764.     src/f-schur.cc, src/f-rand.cc, src/f-qzval.cc, src/f-qr.cc,
  2765.     src/f-qpsol.cc, src/f-lu.cc, src/f-lpsolve.cc, src/f-inv.cc,
  2766.     src/f-ifft.cc, src/f-hess.cc, src/f-givens.cc, src/f-fsqp.cc,
  2767.     src/f-fft.cc, src/f-expm.cc, src/f-eig.cc, src/f-det.cc,
  2768.     src/f-colloc.cc, src/f-chol.cc, src/f-balance.cc,
  2769.     src/dynamic-ld.cc, src/f-dassl.cc, src/f-fsolve.cc,
  2770.     src/f-lsode.cc, src/f-npsol.cc, src/f-quad.cc, src/tree-expr.h,
  2771.     src/tc-rep.cc, src/tc-inlines.cc, src/tc-rep.h, src/tree-const.h,
  2772.     src/g-builtins.cc, src/g-builtins.h, src/tree-expr.cc,
  2773.     src/variables.cc: Delete nargin in favor of using args.length().
  2774.  
  2775.     * configure.in: Check for struct exception in math.h.
  2776.     * src/sysdep.cc (matherr): New function.
  2777.  
  2778. Fri Jul  8 15:31:53 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2779.  
  2780.     * src/tc-rep.cc: Include arith-ops.h.
  2781.     (tree_constant_rep::do_scalar_index): Use `invalid', not `illegal'
  2782.     in messages.
  2783.  
  2784.     * src/oct-obj.h: Protect contents from multiple inclusion.
  2785.  
  2786.     * src/tree-const.h, src/tree-expr.h: Don't include Array.h.
  2787.  
  2788.     * src/parse.y (param_list): Allow ELLIPSIS by itself.
  2789.     * src/tree-expr.cc (tree_identifier::mark_varargs_only,
  2790.     tree_identifier::vararg_only): New functions.
  2791.     (tree_function::eval): Only call define_from_arg_vector if
  2792.     param_list is non-null and not marked as varargs_only.
  2793.  
  2794.     * src/f-balance.h, src/f-chol.h, src/f-colloc.h, src/f-dassl.h,
  2795.     src/f-eig.h, src/f-fsolve.h, src/f-fsqp.h, src/f-givens.h,
  2796.     src/f-hess.h, src/f-lpsolve.h, src/f-lsode.h, src/f-lu.h,
  2797.     src/f-npsol.h, src/f-qpsol.h, src/f-qr.h, src/f-quad.h,
  2798.     src/f-qzval.h, src/f-rand.h, src/f-schur.h, src/f-svd.h,
  2799.     src/f-syl.h: Include oct-obj.h, not tree-const.h to get
  2800.     declaration of Octave_object.
  2801.  
  2802.     * src/f-givens.cc (givens): Handle case of nargout == 0.
  2803.     Use `invalid', not `illegal' in messages.
  2804.     * src/f-balance.cc (balance): Likewise.
  2805.  
  2806.     * src/f-balance.cc (balance): Print warning about two output
  2807.     arguments for complex-valued case too.
  2808.  
  2809.     * src/tc-rep.cc: Include arith-ops.h.
  2810.  
  2811. Thu Jul  7 20:54:12 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2812.  
  2813.     * src/parse.y (identifier): Add missing semicolon.
  2814.     (param_list): Ditto.
  2815.  
  2816.     * src/f-svd.cc (svd): Handle nargout == 0 the same as nargout == 1.
  2817.     * src/f-schur.cc (schur): Likewise.
  2818.     * src/f-hess.cc (hess): Likewise.
  2819.     * src/f-eig.cc (eig): Likewise.
  2820.     * src/f-syl.cc (syl): Likewise.
  2821.     * src/f-qzval.cc (qzvalue): Likewise.
  2822.     * src/f-npsol.cc (npsol): Likewise.
  2823.     * src/f-qpsol.cc (qpsol): Likewise.
  2824.     * src/f-givens.cc (givens): Likewise.
  2825.     * src/f-fsolve.cc (fsolve): Likewise.
  2826.     * src/f-balance.cc (balance): Likewise.
  2827.     * src/file-io.cc (process_scanf_format): Likewise.
  2828.     * src/g-builtins.cc (builtin_balance, builtin_chol, builtin_dassl,
  2829.     builtin_eig, builtin_fsolve, builtin_fsqp, builtin_lsode,
  2830.     builtin_max, builtin_min, builtin_npsol, builtin_qpsol,
  2831.     builtin_quad, builtin_rand, builtin_size, builtin_sort,
  2832.     builtin_svd, builtin_schur, builtin_syl, builtin_givens,
  2833.     builtin_hess): Likewise.
  2834.     * src/tree-const.cc (vector_of_empties, column_max, column_min):
  2835.     Likewise.
  2836.  
  2837.     * src/variables.h, src/symtab.h: Include builtins.h for typedefs.
  2838.  
  2839.     * src/tree-expr.cc(tree_multi_assignment_expression::eval): Rework
  2840.     handling of undefined values returned from functions.
  2841.  
  2842.     * src/tree-expr.cc (tree_identifier::is_defined): New function.
  2843.     (tree_parameter_list::is_defined): New function.
  2844.     (tree_parameter_list::convert_to_const_vector): Use it to avoid
  2845.     evaluating undefined objects.
  2846.  
  2847.     * src/f-balance.cc, src/f-eig.h, src/f-hess.cc, src/f-lu.h,
  2848.     src/f-rand.cc, src/f-balance.h, src/f-expm.cc, src/f-hess.h,
  2849.     src/f-npsol.cc, src/f-rand.h, src/f-chol.cc, src/f-expm.h,
  2850.     src/f-ifft.cc, src/f-npsol.h, src/f-schur.cc, src/f-chol.h,
  2851.     src/f-fft.cc, src/f-ifft.h, src/f-qpsol.cc, src/f-schur.h,
  2852.     src/f-colloc.cc, src/f-fft.h, src/f-inv.cc, src/f-qpsol.h,
  2853.     src/f-svd.cc, src/f-colloc.h, src/f-fsolve.cc, src/f-inv.h,
  2854.     src/f-qr.cc, src/f-svd.h, src/f-dassl.cc, src/f-fsolve.h,
  2855.     src/f-lpsolve.cc, src/f-qr.h, src/f-syl.cc, src/f-dassl.h,
  2856.     src/f-fsqp.cc, src/f-lpsolve.h, src/f-quad.cc, src/f-syl.h,
  2857.     src/f-det.cc, src/f-fsqp.h, src/f-lsode.cc, src/f-quad.h,
  2858.     src/f-det.h, src/f-givens.cc, src/f-lsode.h, src/f-qzval.cc,
  2859.     src/f-eig.cc, src/f-givens.h, src/f-lu.cc, src/f-qzval.h,
  2860.     src/dynamic-ld.cc, src/dynamic-ld.h, src/file-io.cc,
  2861.     src/file-io.h, src/t-biultins.cc, src/t-builtins.h,
  2862.     src/tree-expr.cc, src/tree-expr.h, src/tree-const.cc,
  2863.     src/tree-const.h, src/tc-inlines.cc, src/tc-rep.cc, src/tc-rep.h,
  2864.     src/g-builtins.cc, src/g-builtins.h:
  2865.     Cope with inital round of Octave_object changes.
  2866.  
  2867.     * src/oct-obj.h: New file for Octave_object typedef.
  2868.     * src/dynamic-ld.h, src/file-io.h, src/tree-const.h,
  2869.     src/tree-expr.h: Include it.
  2870.     * src/Makefile.in (INCLUDES): Add it to the list.
  2871.  
  2872. Wed Jul  6 09:28:28 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2873.  
  2874.     * libocsrc/tree-const.h: 
  2875.  
  2876.     * src/parse.y (maybe_convert_to_ans_assign,
  2877.     maybe_warn_assign_as_truth_value): Pass tree_expression*, not tree*.
  2878.     (ans_expression, expression, simple_expr, simple_expr1, title):
  2879.     Declare as tree_expression_type, not tree_type.
  2880.     (opt_list): Add missing semicolon.
  2881.  
  2882.     * src/tc-rep.h, src/tc-rep.cc: New files, extracted from
  2883.     tree-const.h and tree-const.cc, for the tree_constant_rep class.
  2884.     Leave most friend functions behind, in tree-const.h.
  2885.     Don't declare do_binary_op or do_unary_op as friends.
  2886.  
  2887.     * src/lex.l: Include tree-plot.h and tree-const.h.
  2888.  
  2889.     * src/variables.cc (takes_correct_nargs): Pass tree_fvc* not tree*.
  2890.     * src/variables.cc (is_valid_function): Return tree_fvc* not tree*.
  2891.     Change all callers.
  2892.  
  2893.     * src/symtab.h, symtab.cc: Change declaration of symbol definition to
  2894.     be tree_fvc* instead of tree*.  Change all callers.
  2895.  
  2896.     * src/f-dassl.cc (dassl_fcn): Declare as tree_fvc*, not tree*.
  2897.     * src/f-quad.cc (quad_fcn): Likewise.
  2898.     * src/f-lsode.cc (lsode_fcn): Likewise.
  2899.     * src/f-fsolve.cc (fsolve_fcn): Likewise.
  2900.     * src/f-npsol.cc (npsol_fcn, npsol_constraints): Likewise.
  2901.  
  2902.     * src/tree-plot.cc: All operations are now on tree_expression types,
  2903.     not tree types.
  2904.  
  2905.     * src/tree-expr.h (tree_matrix): Derive from tree_expression, not tree.
  2906.  
  2907.     * src/tree-expr.h (tree_builtin, tree_function, tree_identifier):
  2908.     Derive from tree_fvc, not tree.    
  2909.     * src/tree-const.h (class tree_constant): Likewise.
  2910.  
  2911.     * src/tree-expr.h (is_identifier, is_index_expression,
  2912.     is_assignment_expression, is_prefix_expression,
  2913.     mark_for_possible_ans_assign, eval (with args)): Declare in
  2914.     tree_expression class, not tree class.
  2915.  
  2916.     * src/tree-expr.h (tree_fvc): New class, derived from
  2917.     tree_expression, to provide a connection between functions,
  2918.     variables, and constants.
  2919.     (is_constant, assign, name, bump_value, max_expected_args,
  2920.     fcn_file_name, time_parsed, is_system_fcn_file, save): Declare
  2921.     in tree_fvc class, not in tree class.
  2922.  
  2923.     * src/tree.h: Simply include tree-expr.h and tree-cmd.h.
  2924.     * src/tree-expr.h, tree-expr.cc: New files, extracted from tree.h
  2925.     and tree.cc for classes derived from tree_expression, plus some
  2926.     helper classes.
  2927.     * src/tree-cmd.h, tree-cmd.cc: Likewise, for classes derived from
  2928.     tree_command.
  2929.  
  2930.     * src/tree.cc (eval (int, int)): Merge with eval (int,
  2931.     tree_constant*, int, int) by rearranging order of args and using
  2932.     default arg values.  Change all callers.    
  2933.  
  2934. Tue Jul  5 14:33:33 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2935.  
  2936.     * doc/Makefile.in (refcard.dvi): Run TeX on $(srcdir)/refcard.tex,
  2937.     not just refcard.tex.
  2938.     (refcard-local.tex): Likewise, for the local version.
  2939.  
  2940.     * src/tree-const.cc (tree_constant_rep::do_index): Check for empty
  2941.     matrix here.
  2942.     (tree_constant_rep::do_vector_index) Not here.
  2943.  
  2944. Thu Jun 30 09:41:03 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2945.  
  2946.     * src/g-builtins.cc (builtin_shell_command): Only take one
  2947.     argument and return [status, output].
  2948.     * src/procstream.cc (procstreambase::close): Return process exit
  2949.     status.
  2950.  
  2951.     * src/tree.cc (tree_builtin::eval (int)): Handle new style of
  2952.     calling text functions.
  2953.     (tree_builtin::eval (int, int): Likewise.
  2954.     (tree_builtin::eval (tree_constant*, int, int, int): Likewise.
  2955.     (tree_identifier::eval (tree_constant*, int, int, int)): Don't
  2956.     count the output arguments that we create automatically (ans) when
  2957.     figuring nargout.
  2958.     (tree_identifier::eval (int)): Likewise.
  2959.  
  2960.     * src/tree-const.cc: Delete text-style eval() functions.
  2961.     * src/tree.cc: Ditto.
  2962.  
  2963.     * src/tree-const.h: Change typedef of Text_fcn to return a pointer
  2964.     to a tree_constant, and to include the number of output arguments
  2965.     in the parameter list.
  2966.     * src/t-builtins.h: Change declarations of all builtin text-style
  2967.     functions to match.
  2968.     * src/t-builtins.cc: Change definitions too.
  2969.  
  2970.     * src/parse.y (word_list): Build an argument_list, not a word_list.
  2971.     (word_list_command): Create an index_expression, not a
  2972.     word_list_command.
  2973.     * src/tree.cc (tree_word_list): Delete unneeded class.
  2974.     (tree_word_list_command): Likewise.
  2975.  
  2976.     * src/tc-extras.cc (get_dimensions): For one-arg version, expect
  2977.     2-element vector or scalar specifying dimensions.  Don't simply
  2978.     use the dimensions of a matrix arg.
  2979.  
  2980. Wed Jun 29 09:52:15 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2981.  
  2982.     * src/f-det.cc (determinant): Return 0 if matrix is singular to
  2983.     machine precision.
  2984.  
  2985.     * liboctave/dMatrix.cc (Matrix::inverse): Declare rcond as
  2986.     volatile to prevent optimization of the expression
  2987.     `rcond + 1.0 == 1.0'.
  2988.     (Matrix::determinant): Ditto.
  2989.     (Matrix::solve): Ditto.
  2990.     * liboctave/CMatrix.cc (ComplexMatrix::inverse): Ditto.
  2991.     (ComplexMatrix::determinant): Ditto.
  2992.     (ComplexMatrix::solve): Ditto.
  2993.  
  2994. Tue Jun 28 10:53:31 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  2995.  
  2996.     * src/utils.cc (default_info_file): Add directory separator when
  2997.     appending "octave.info".
  2998.  
  2999.     * src/tree-plot.cc (plot_line_count): Make global.
  3000.     * src/utils.cc (send_to_plot_stream): If the plot stream is not
  3001.     open, set plot_line_count to zero.
  3002.     (close_plot_stream): Likewise, set it to zero when closing the
  3003.     stream.
  3004.  
  3005.     * src/parse.y (plot_command): Allow replot without args.
  3006.  
  3007.     * src/tree-plot.cc (clear_before_plotting): New global variable.
  3008.     (tree_plot_command::eval): Use it to handle hold on/off.
  3009.     * src/t-builtins.cc (builtin_hold): New function.
  3010.     * src/builtins.cc (text_functions): Add it to the list.
  3011.  
  3012. Fri Jun 24 11:08:36 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3013.  
  3014.     * src/token.h (plot_tok_type): Add new field, replot.
  3015.     * src/lex.l (is_keyword): Handle replot here.
  3016.     * src/parse.y (plot_command): And here.
  3017.     * src/g-builtins.cc (builtin_replot): Not here.
  3018.     * src/builtins.cc (general_functions): Or here.
  3019.  
  3020. Tue Jun 21 10:47:08 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3021.  
  3022.     * src/g-builtins.cc (builtin_kbhit): New function.
  3023.     * src/builtins.cc (general_functions): Add it to the list.
  3024.  
  3025.     * src/tree-const.cc (tree_constant_rep::rows (void)): For strings
  3026.     and ranges, only return 1 if the string or range is not empty.
  3027.  
  3028. Thu Jun  9 20:42:06 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3029.  
  3030.     * src/tree.cc (tree_builtin::eval (int)): Delete ancient code that
  3031.     eval()'d the return value.
  3032.     (tree_builtin::eval (int, int)): Likewise.
  3033.     (tree_builtin::eval (int, char**, int)): Likewise.
  3034.     (tree_builtin::eval (tree_constant*, int, int, int)): Likewise.
  3035.     (tree_function::eval (tree_constant*, int, int, int)): Likewise.
  3036.     (tree_colon_expression::eval (int)): Likewise.
  3037.     (tree_unary_expression::eval (int)): Likewise.
  3038.     (tree_binary_expression::eval (int)): Likewise.
  3039.  
  3040. Mon Jun  6 03:48:32 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3041.  
  3042.     * src/file-io.cc (fread_internal): Make it work.
  3043.     (fwrite_internal): Likewise.
  3044.     (num_items_remaining): Renamed from get_whats_left().  Don't pass
  3045.     nr/nc as last arg, simply return the number of items of size that
  3046.     are left to read.
  3047.     (get_size_conv): Delete unnecessary function.
  3048.     * liboctave/dMatrix.cc (Matrix::read): Make it work.
  3049.     (Matrix::write): Likewise.
  3050.     * liboctave/dMatrix.h (conversion): Delete unecessary enum.
  3051.  
  3052.     * src/sysdep.cc: Include <math.h>.
  3053.     (octave_ieee_init): Cast return value of infinity() and
  3054.     quiet_nan() to double.
  3055.  
  3056. Sun Jun  5 14:35:32 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3057.  
  3058.     * Makeconf.in (getversion): Get everything between the double
  3059.     quotes, not just numbers and periods.
  3060.  
  3061.     * src/tree-const.cc (tree_constant_rep::do_scalar_assignment): Correct
  3062.     typo in last change.
  3063.  
  3064.     * src/parse.y: Include tree-plot.h and tree-const.h.
  3065.  
  3066.     * src/Makefile.in (SOURCES): Delete tc-assign.cc and tc-index.cc
  3067.     (INCLUDES): Add tree-plot.h.
  3068.  
  3069.     * src/tree-plot.h: New file.  Declare plotting classes here.
  3070.     * src/tree.h: Not here.
  3071.  
  3072.     * src/tc-index.cc, tc-assign.cc: Delete unnecessary files.
  3073.  
  3074.     * src/tc-extras.cc: Include EIG.h
  3075.  
  3076.     * src/tree-const.cc (tree_constant_rep::tree_constant_rep (RowVector&,
  3077.     int)): Provide default value for int arg.
  3078.     (tree_constant_rep::tree_constant_rep (ColumnwVector&, int)): Ditto
  3079.     (tree_constant_rep::tree_constant_rep (ComplexRowVector&, int)): Ditto
  3080.     (tree_constant_rep::tree_constant_rep (ComplexColumnwVector&, int)):
  3081.     Ditto.
  3082.     (tree_constant_rep::tree_constant_rep (RowVector&)): Delete, now
  3083.     handled by corresponding two arg constructor.
  3084.     (tree_constant_rep::tree_constant_rep (ColumnwVector&)): Likewise.
  3085.     (tree_constant_rep::tree_constant_rep (ComplexRowVector&)): Likewise.
  3086.     (tree_constant_rep::tree_constant_rep (ComplexColumnwVector&)):
  3087.     Likewise.
  3088.  
  3089.     * src/tree-const.cc: Add pragma implementation.  Merge in contents of
  3090.     tc-index.cc and tc-assign.cc so that the pragma interface/pragma
  3091.     implementation hack will do some good.
  3092.     * src/tree-const.h: Include mx-base.h, not Matrix.h.  Add pragma
  3093.     interface.  Delete unnecessary constructor declarations.
  3094.  
  3095.     * src/unwind-prot.h, src/unwind-prot.cc (unwind_elem_tag): Rename
  3096.     from _tag.
  3097.     (unwind_elem_fptr): Rename from _fptr.
  3098.     (unwind_elem_ptr): Rename from _ptr.
  3099.  
  3100.     * NLConst.cc (NLConst::NLConst): Pass vector args by reference.
  3101.  
  3102.     * src/procstream.h, src/procstream.cc, src/idx-vector.h,
  3103.     src/idx-vector.cc, src/token.h, src/token.cc, src/unwind-prot.h,
  3104.     src/unwind-prot.cc, src/symtab.h, src/symtab.cc, src/tree.h,
  3105.     src/tree.cc, liboctave/Range.h, liboctave/Range.cc,
  3106.     liboctave/QLD.h, liboctave/QLD.cc, liboctave/ODE.h,
  3107.     liboctave/ODE.cc, liboctave/Quad.h, liboctave/Quad.cc,
  3108.     liboctave/Objective.h, liboctave/Objective.cc, liboctave/NPSOL.h,
  3109.     liboctave/NPSOl.cc, liboctave/NLFunc.h, liboctave/NLFunc.cc,
  3110.     liboctave/Bounds.h, liboctave/Bounds.cc, liboctave/QP.h,
  3111.     liboctave/QP.cc, liboctave/NLConst.cc, liboctave/LinConst.cc,
  3112.     liboctave/LPsolve.cc, liboctave/LP.cc, liboctave/FSQP.cc,
  3113.     liboctave/FEGrid.cc, liboctave/QPSOL.cc, liboctave/CollocWt.cc,
  3114.     liboctave/DAEFunc.cc, liboctave/DAEFunc.h, liboctave/DAE.cc,
  3115.     liboctave/NLEqn.cc, liboctave/ODEFunc.cc, liboctave/QPSOL.h,
  3116.     liboctave/ODEFunc.h, liboctave/NLP.h, liboctave/NLEqn.h,
  3117.     liboctave/NLConst.h, liboctave/LinConst.h, liboctave/LPsolve.h,
  3118.     liboctave/LP.h, liboctave/FSQP.h, liboctave/FEGrid.h,
  3119.     liboctave/DAE.h, liboctave/CollocWt.h:
  3120.     Add pragma interface/implementation.
  3121.  
  3122.     * src/f-svd.cc, src/f-schur.cc, src/f-qr.cc, src/f-lu.cc,
  3123.     src/f-hess.cc, src/f-det.cc, src/f-chol.cc, src/f-qzval.cc,
  3124.     src/f-inv.cc, src/f-ifft.cc, src/f-givens.cc, src/f-fft.cc, 
  3125.     src/f-balance.cc, src/f-expm.cc, src/f-fsqp.cc, src/f-syl.cc,
  3126.     src/xdiv.cc, src/xpow.cc, src/idx-vector.cc, src/pr-output.cc,
  3127.     src/unwind-prot.cc, src/file-io.cc, liboctave/Bounds.h,
  3128.     liboctave/CollocWt.h, liboctave/DAE.h, liboctave/EIG.h,
  3129.     liboctave/FEGrid.h, liboctave/LP.h, liboctave/LPsolve.cc,
  3130.     liboctave/LinConst.h, liboctave/NLEqn.cc, liboctave/NLEqn.h,
  3131.     liboctave/NLP.h, liboctave/NPSOL.cc, liboctave/NPSOL.h,
  3132.     liboctave/ODE.h, liboctave/Objective.h, liboctave/QLD.cc,
  3133.     liboctave/QP.h, liboctave/QPSOL.h, liboctave/Quad.h:
  3134.     Instead of including Matrix.h, only include the individual
  3135.     matrix/vector/etc. header files that are needed.
  3136.  
  3137.     * liboctave/QLD.cc, liboctave/ODE.cc, liboctave/NLFunc.cc,
  3138.     liboctave/DAEFunc.cc, liboctave/DAE.cc, liboctave/NLEqn.cc,
  3139.     liboctave/ODEFunc.cc:
  3140.     Use 0, not NULL.
  3141.  
  3142.     * liboctave/mx-inlines.cc: Include Complex.h.
  3143.  
  3144.     * liboctave/mx-kludge.h: Don't enclose contents in extern "C++".
  3145.  
  3146.     * liboctave/Matrix.h: Simply include mx-base.h and mx-ext.h.
  3147.  
  3148.     * liboctave/mx-base.h: New file, includes all basic matrix/vector
  3149.     header files.
  3150.     * liboctave/mx-ext.h: New file, includes all extra matrix/vector
  3151.     related header files.
  3152.     * liboctave/mx-defs.h: New file, for matrix/vector related
  3153.     defines.  Also provides forward declarations for all matrix/vector
  3154.     classes.
  3155.  
  3156.     * liboctave/Makefile.in: Cope with new files.
  3157.  
  3158.     * liboctave/CmplxAEPBAL.cc, liboctave/CmplxDET.h,
  3159.     liboctave/CmplxQR.cc, liboctave/CmplxSVD.h, liboctave/dbleDET.cc,
  3160.     liboctave/dbleHESS.h, liboctave/dbleSCHUR.cc,
  3161.     liboctave/CmplxAEPBAL.h, liboctave/CmplxHESS.cc,
  3162.     liboctave/CmplxQR.h, liboctave/dbleAEPBAL.cc, liboctave/dbleDET.h,
  3163.     liboctave/dbleLU.cc, liboctave/dbleSCHUR.h,
  3164.     liboctave/CmplxCHOL.cc, liboctave/CmplxHESS.h,
  3165.     liboctave/CmplxSCHUR.cc, liboctave/dbleAEPBAL.h,
  3166.     liboctave/dbleGEPBAL.cc, liboctave/dbleLU.h, liboctave/dbleSVD.cc,
  3167.     liboctave/CmplxCHOL.h, liboctave/CmplxLU.cc,
  3168.     liboctave/CmplxSCHUR.h, liboctave/dbleCHOL.cc
  3169.     liboctave/dbleGEPBAL.h, liboctave/dbleQR.cc, liboctave/dbleSVD.h,
  3170.     liboctave/CmplxDET.cc, liboctave/CmplxLU.h, liboctave/CmplxSVD.cc,
  3171.     liboctave/dbleCHOL.h, liboctave/dbleHESS.cc, liboctave/dbleQR.h,
  3172.     liboctave/EIG.h, liboctave/EIG.cc:
  3173.     New files, extracted from Matrix-ext.cc, in an attempt to allow
  3174.     effective use of pragma interface/implementation and make
  3175.     generated code somewhat smaller.
  3176.     * liboctave/dColVector.cc liboctave/CColVector.cc: Likewise, from
  3177.     ColVector.{cc,h}.
  3178.     * liboctave/dRowVector.cc liboctave/CRowVector.cc: Likewise, from
  3179.     RowVector.{cc,h}.
  3180.     * liboctave/dMatrix.cc liboctave/CMatrix.cc: Likewise, from
  3181.     Matrix.{cc,h}.
  3182.     * liboctave/dDiagMatrix.cc liboctave/CDiagMatrix.cc: Likewise,
  3183.     from DiagMatrix.{cc,h}.
  3184.  
  3185. Fri Jun  3 15:32:53 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3186.  
  3187.     * liboctave/Array.h: Include assert.h.
  3188.     (DiagArray<T>::operator T ()): [! _AIX] Only call get() if i is
  3189.     also equal to j.
  3190.  
  3191.     * scripts/rem.m: Allow mixing of scalar/matrix args, but complain
  3192.     if both args are matrices and the dimensions don't agree.
  3193.  
  3194.     * src/lex.l (grab_help_text): Correct previous change.
  3195.  
  3196. Thu Jun  2 12:08:18 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3197.  
  3198.     * Matrix.h (conversion): New enum, for binary read/write
  3199.     functions.
  3200.     * Matrix.cc (read, write) New functions.
  3201.     * file-io.cc (feof_internal, ferror_internal, fread_internal,
  3202.     fwrite_internal, get_size_conv, get_whats_left): New functions.
  3203.     * g-builtins.cc (builtin_feof, builtin_ferror, builtin_fread,
  3204.     builtin_fwrite): New functions.
  3205.     * builtins.cc (general_functions): Add them to the list.
  3206.  
  3207.     * configure.in: Check for infinity() and quiet_nan().
  3208.     * sysdep.h (octave_Inf, octave_NaN): New global variables.
  3209.     * sysdep.cc (octave_ieee_init): New function.  Initialize
  3210.     octave_Inf and octave_NaN.
  3211.     (sysdep_init): Call it.
  3212.     * builtins.cc (initialize_builtins): Don't compute Inf and NaN
  3213.     values here.
  3214.     
  3215. Tue May 31 20:06:27 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3216.  
  3217.     * src/variables.cc (identifier_exists): Only return 1 for
  3218.     variables if they are also defined.
  3219.  
  3220. Sun May 29 20:40:55 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3221.  
  3222.     * src/lex.l: Don't declare beginning_of_function as static.
  3223.     (COMMENT): Delete unnecessary exclusive start state.
  3224.     (\#, \%): Handle comments directly.  Try to be smart about not
  3225.     returning a newline character when reading a matrix list.
  3226.     (grab_help_text): Don't put a newline back on the input stream.
  3227.     * src/parse.y (list1): Set beginning_of_function to zero here.
  3228.  
  3229. Wed May 25 03:34:17 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3230.  
  3231.     * src/error.cc (error): If error_state is -2, don't do anything.
  3232.     If the format string ends in a new line character, strip it, print
  3233.     the error message, and set the error state to -2.
  3234.     * src/tree.cc (tree_function::traceback_error): Don't set the
  3235.     error_state if it is already negative.
  3236.  
  3237.     * src/tree-const.cc (convert_to_row_or_column_vector): New function.
  3238.     * src/idx-vector.cc (idx_vector::shorten): New function.
  3239.     * src/tc-assign.cc (fortran_style_matrix_assignment
  3240.     (tree_constant&, tree_constant&)): Handle deleting elements by
  3241.     assignment of `[]'.  Use convert_to_row_or_column_vector to handle
  3242.     conversion to a vector in the case of deleting some elements from
  3243.     a matrix.  Use idx_vector::shorten() to remove unnecessary index
  3244.     vector elements.
  3245.     (do_scalar_assignment (tree_constant&, tree_constant*, int)):
  3246.     Handle assignment of empty matrix.
  3247.     If converting complex to real, delete old complex value.
  3248.     (delete_rows (idx_vector&)): If deleting all rows of a column
  3249.     vector, convert to empty matrix.
  3250.     (delete_rows (Range&)): Ditto.
  3251.     (delete_columns (idx_vector&)): If deleting all columns of a row
  3252.     vector, convert to empty matrix.
  3253.     (delete_columns (Range&)): Ditto.
  3254.  
  3255.     * src/tc-extras.cc (column_max (tree_constant*, int, int)):
  3256.     Use MAX, not MIN when trying to find the biggest scalar.
  3257.     Likewise, find the complex scalar with the largest, not the
  3258.     smallest absolute value.
  3259.  
  3260.     * src/tc-assign.cc (do_matrix_assignment (tree_constant&,
  3261.     tree_constant_rep::constant_type, tree_constant&): For case of
  3262.     j_arg == matrix constant, don't negate return value of
  3263.     indexed_assign_conforms().
  3264.  
  3265.     * src/user-prefs.cc (commas_in_literal_matrix): New function.
  3266.     Put functions in alphabetical order.
  3267.     * src/user-prefs.h (commas_in_literal_matrix): New structure element.
  3268.     Alphabetize structure elements and lists of functions.
  3269.     * src/builtins.cc (string_variables): Add commas_in_literal_matrix
  3270.     to the list.
  3271.     * src/lex.l (<MATRIX>{SN}*\]{S}*): Pay attention to the value of
  3272.     usre_pref.commas_in_literal_matrix when deciding whether to insert
  3273.     a comma after seeing a ']' character.
  3274.     (handle_identifier): Likewise.
  3275.     (<MATRIX>{S}+): If commas are required, just eat the spaces.
  3276.  
  3277. Tue May 24 19:49:51 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3278.  
  3279.     * src/tc-assign.cc (tree_constant_rep::do_matrix_assignment
  3280.       (tree_constant&, tree_constant*, int)): Handle empty arguments
  3281.     for two index values.
  3282.     (tree_constant_rep::do_matrix_assignment
  3283.       (tree_constant&, tree_constant&)):
  3284.     Likewise, for single index values.
  3285.  
  3286. Mon May 23 01:43:23 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3287.  
  3288.     * Makefile.in (snapshot, snapshot-version): New targets.
  3289.  
  3290.     * configure.in: Handle --enable-run-in-place (was easier than
  3291.     doing the work to parse --run-in-place like Emacs uses).
  3292.  
  3293.     * acconfig.h: Add #undef for RUN_IN_PLACE.
  3294.  
  3295.     * Makeconf.in (OCTAVE_HOME): New macro.
  3296.     * src/Makefile.in (defaults.h): Use it instead of ${prefix}.
  3297.  
  3298.     * Makeconf.in (OCTAVE_INFO_DIR, OCTAVE_LIB_DIR): New macros.
  3299.     * src/Makefile.in (defaults.h): Substitute them too.
  3300.  
  3301.     * src/defaults.h.in (OCTAVE_INFO_DIR): New macro, used if
  3302.     RUN_IN_PLACE is defined.
  3303.     (OCTAVE_LIB_DIR): Likewise.
  3304.  
  3305.     * src/utils.cc (octave_home): Handle RUN_IN_PLACE
  3306.     (octave_info_dir): Ditto.
  3307.     (octave_lib_dir): Ditto.
  3308.  
  3309.     * src/tree-const.cc (tree_constant_rep::diag (void)): For empty
  3310.     matrix, return empty matrix.
  3311.     (tree_constant_rep::diag (tree_constant &)): Likewise, regardless
  3312.     of value of arg.
  3313.  
  3314.     * scripts/int2str.m: Format as integer, not float.
  3315.     Don't add trailing new line character.
  3316.  
  3317. Sun May 22 22:13:01 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3318.  
  3319.     * scripts/plot_int.m: When looking for imaginary arguments, check
  3320.     if any element has an imaginary component, not if all elements
  3321.     have imaginary components.
  3322.  
  3323. Thu May 19 19:46:23 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3324.  
  3325.     * src/parse.y (EXPR_AND_AND, EXPR_OR_OR): New tokens, for
  3326.     short-circuit logical AND and OR operators.
  3327.     (simple_expression): Handle new tokens.
  3328.     * src/lex.l (&&) [SHORT_CIRCUIT_LOGICALS]: Return EXPR_AND_AND.
  3329.     (||) [SHORT_CIRCUIT_LOGICALS]: Return EXPR_OR_OR.
  3330.     * src/tree.cc (tree_binary_expression::eval): Handle short-circuit
  3331.     boolean operators.
  3332.     (tree_binary_expression::eval_error): Print different messages for
  3333.     or_or/or and and_and/and.
  3334.     * src/tree-base.h (tree_expression_type): Add new structure
  3335.     elements and_and and or_or.
  3336.     * src/tree-const.cc (tree_constant_rep::is_true): New function.
  3337.  
  3338. Tue May 17 17:04:00 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3339.  
  3340.     * src/idx-vector.cc (idx_vector::sort_uniq ()): New function.
  3341.     * src/tc-assign.cc (tree_constant_rep::delete_rows ()): Use it.
  3342.     (tree_constant_rep::delete_columns ()): Likewise.
  3343.  
  3344. Mon May 16 13:31:33 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3345.  
  3346.     * scripts/linspace.m: Replace for loop with range operation.
  3347.     * scripts/logspace.m: Replace for loop with element by element
  3348.     exponentiation.
  3349.  
  3350. Sun May  8 00:49:38 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3351.  
  3352.     * scripts/lqe.m: Correct comment.
  3353.     Transpose k before returning. 
  3354.  
  3355. Fri May  6 00:47:24 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3356.  
  3357.     * src/tree.cc (quit_loop_now): New function.
  3358.     (tree_while_command::eval): Use it.
  3359.     (tree_for_command::eval): Ditto.
  3360.  
  3361.     * src/tree.cc (tree_for_command::do_for_loop_once): New function.
  3362.     (tree_for_command::eval): Use it.
  3363.  
  3364. Mon May  2 19:45:39 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3365.  
  3366.     * src/tree.cc (tree_for_command::eval): Handle returning,
  3367.     breaking, and continuing for case of scalar expression in loop
  3368.     control statement.
  3369.  
  3370. Wed Apr 20 00:38:26 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3371.  
  3372.     * src/lex.l (\[{S}*): Don't return ',' for this    match when
  3373.     convert_spaces_to_comma is true, since that can never be the right
  3374.     thing to do.
  3375.  
  3376.     * All Makefile.in files: Set top_srcdir here.
  3377.     * Makeconf.in: Not here.
  3378.  
  3379.     * Makeconf.in: Use top_srcdir instead of root_srcdir
  3380.  
  3381.     * configure.in: Update for autoconf-1.8.  Use AC_VERBOSE for
  3382.     verbose messages.  Use AC_WARN and AC_ERROR instead of echo for
  3383.     warning and error messages.  Organize feature tests a bit better.
  3384.     Use new autoconf macros to check for C++ compiler.  Add copyright
  3385.     notice.  Recognize --enable-dld instead of --with-dld since that
  3386.     seems to be more in line with the intent of the --enable/--with
  3387.     options for configure scripts.  Use new autoconf macros
  3388.     AC_REVISION and AC_PREREQ.  Don't add -Wall to CFLAGS and CXXFLAGS
  3389.     until after all feature tests are done.  Etc.
  3390.  
  3391. Fri Apr 15 01:56:20 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3392.  
  3393.     * acconfig.h: Add #undefs for HAVE_FINITE, HAVE_ISINF, and
  3394.     HAVE_ISNAN.
  3395.     * configure.in: Check for floatingpoint.h.
  3396.     * src/sysdep.cc (sysdep_init): Disable trapping on common
  3397.     exceptions for 386BSD systems that have floatingpoint.h.
  3398.  
  3399.     * src/utils.cc: Don't declare ioctl() with prototype.
  3400.  
  3401. Sat Apr  9 17:48:07 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3402.  
  3403.     * src/tc-assign.cc (tree_constant_rep::fortran_style_matrix_assignment
  3404.       (tree_constant&, tree_constant&)):
  3405.     Handle case of M (X) = scalar, where X is a zero-one vector with
  3406.     only one nonzero element.
  3407.  
  3408.     * src/tc-assign.cc (tree_constant_rep::do_vector_assign
  3409.       (tree_constant&, Range&):
  3410.     Handle case of right hand side being a scalar.
  3411.     (tree_constant_rep::do_vector_assign (tree_constant&, idx_vector&):
  3412.     Ditto.
  3413.  
  3414.     * src/tc-assign.cc (tree_constant_rep::do_matrix_assignment
  3415.       (int,tree_constant_rep::constant_type)):
  3416.     Allow assignment of complex scalar too. 
  3417.     (tree_constant_rep::do_matrix_assignment
  3418.       (tree_constant_rep::constant_type, int)):
  3419.     Ditto.
  3420.  
  3421.     * src/tree-const.h (REP_RHS_MATRIX): Initialize nr and nc.
  3422.     Abort if rhs is not a real or complex matrix.
  3423.  
  3424. Wed Apr  6 13:59:37 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3425.  
  3426.     * liboctave/Range.cc (Range::nelem_internal): Use an integer, not
  3427.     a double, for the number of intervals.    Avoid possible problems
  3428.     with extended precision registers on some systems (e.g. x86/Linux).
  3429.  
  3430. Mon Mar 28 17:23:18 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3431.  
  3432.     * src/utils.cc (raw_mode): For OCRNL, ONOCR, and ONLRET, check to
  3433.     see if they are defined before using them instead of checking to
  3434.     see if NeXT is defined.
  3435.  
  3436.     * info/terminal.c (terminal_prep_terminal): Check to see if OCRNL
  3437.     is defined before using it instead of checking to see if NeXT is
  3438.     defined.
  3439.  
  3440. Thu Mar 24 03:21:01 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3441.  
  3442.     * src/tree.cc (tree_parameter_list::define_from_arg_vector):
  3443.     New function.
  3444.     (tree_parameter_list::convert_to_const_vector): Ditto.
  3445.     (tree_function::eval): Use them instead of trying to do this
  3446.     in-line.
  3447.  
  3448.     * src/symtab.h (symbol_record::global_link_context): New stack for
  3449.     saving linked_to_global flag.
  3450.     * src/symtab.cc (symbol_record::push_context): Save
  3451.     linked_to_global too.
  3452.     (symbol_record::pop_context): And restore it.
  3453.  
  3454. Wed Mar 23 16:18:19 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3455.  
  3456.     * doc/refcard.tex.in: New file.
  3457.     * doc/Makefile.in: Create refcard.* and refcard-local.* from
  3458.     refcard.tex.in.
  3459.  
  3460. Tue Mar 22 15:23:55 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3461.  
  3462.     * octave.sh: exec $OCTAVE_HOME/bin/octave.bin, not just
  3463.     octave.bin.
  3464.  
  3465. Thu Mar 17 01:06:10 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3466.  
  3467.     * src/arith-ops.cc (do_binary_op (ComplexMatrix&, Matrix& b)):
  3468.     Correctly handle element by element left division.
  3469.  
  3470.     * src/g-builtins.cc (builtin_error): Return without calling error
  3471.     (and setting error_state) if the message is empty.
  3472.  
  3473.     * src/help.cc (operators): Correct help message for `.^'.
  3474.  
  3475.     * src/tc-index.cc (tree_contant_rep::fortran_style_matrix_index):
  3476.     Preserve vector orientation when indexing with a zero-one vector.
  3477.  
  3478.     * src/tc-index.cc (tree_constant_rep::do_scalar_index): Handle
  3479.     indexing a scalar with `0'.
  3480.  
  3481.     * src/tc-index.cc (tree_constant_rep::do_scalar_index): Handle the
  3482.     index `:' the same as the index `1'.
  3483.  
  3484. Tue Mar 15 17:22:00 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3485.  
  3486.     * liboctave/Array.cc: Fix typo in comments about compiler flags.
  3487.  
  3488. Wed Mar  9 15:08:21 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3489.  
  3490.     * Version 1.0.1.
  3491.  
  3492.     * src/*.h: Use the macro octave_FOO_h instead of _FOO_h to protect
  3493.     against multiple inclusion.
  3494.     * liboctave/*.h: Likewise.
  3495.  
  3496.     * liboctave/*.h: Surround contents of files in extern "C++" { }.
  3497.  
  3498. Tue Mar  8 18:06:54 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3499.  
  3500.     * src/tc-index.cc (tree_constant_rep::do_vector_index (const
  3501.     tree_constant&) const): Don't crash if matrix is empty.
  3502.  
  3503.     * scripts/norm.m: Return empty matrix for empty argument.
  3504.  
  3505. Mon Mar  7 23:34:44 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3506.  
  3507.     * doinstall.sh: chmod new directories to 755.
  3508.  
  3509. Sat Mar  5 13:15:10 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3510.  
  3511.     * bsd-math/log1p.c: Declare finite as returning int, not double.
  3512.     * bsd-math/finite.c (finite): Add return type.
  3513.  
  3514. Thu Mar  3 14:42:00 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3515.  
  3516.     * liboctave/DiagMatrix.cc (operator *): Provide definitions for
  3517.     DiagMatrix * DiagMatrix, ComplexDiagMatrix * ComplexDiagMatrix, 
  3518.     ComplexDiagMatrix * DiagMatrix, and DiagMatrix * ComplexDiagMatrix.
  3519.  
  3520.     * liboctave/ColVector.cc (operator >>): Provide definitions for
  3521.     real and complex column vectors.
  3522.  
  3523.     * liboctave/RowVector.cc (operator >>): Provide definitions for
  3524.     real and complex row vectors.
  3525.  
  3526. Wed Mar  2 18:00:47 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3527.  
  3528.     * liboctave/Array.h (DiagArray::Proxy::operator & ()): Provide
  3529.     function body.
  3530.  
  3531. Tue Mar  1 13:18:35 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3532.  
  3533.     * src/tree-const.cc (tree_constant::load (istream&)): Don't skip
  3534.     past first type keyword if not global.
  3535.     (tree_constant::load (istream&, tree_constant_rep::constant_type)): 
  3536.     Allocate storage for reading complex scalar.
  3537.  
  3538. Sun Feb 20 14:17:47 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3539.  
  3540.     * scripts/menu.m: Don't fail on input that is empty or not a
  3541.     scalar.
  3542.  
  3543.     * Makefile.in (DISTFILES): Distribute ChangeLog.[0-9].
  3544.  
  3545.     * src/lex.l (reset_parser): Don't resynch line number to command
  3546.     history number if reading a script file.
  3547.  
  3548. Thu Feb 17 01:36:19 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3549.  
  3550.     * Version 1.0 released.
  3551.  
  3552.     * src/file-io.cc (fopen_file_for_user): Improve error message.
  3553.     (fopen_internal): Likewise.
  3554.  
  3555. Wed Feb 16 02:21:05 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3556.  
  3557.     * configure.in: Try harder to find finite, isnan, and isinf.
  3558.     Use m4 `dnl' comments, not shell `#' comments.
  3559.  
  3560.     * src/file-io.cc (file_io_get_file): New function.
  3561.     (fgets_internal): Use it instead of trying to do this in line.
  3562.     (frewind_internal, fseek_internal, ftell_internal, do_printf,
  3563.     do_scanf): Likewise.
  3564.     * (do_scanf): Allow file name as string for fscanf.
  3565.     * (procss_scanf_format): Delete unused argument `args'.  Delete
  3566.     unused local variable `arg_type'.  Don't complain if we can't
  3567.     store the result of a requested conversion.  Only return
  3568.     successfully if a conversion actually occurs, even if we are not
  3569.     storing the value.
  3570.  
  3571. Sun Feb 13 13:32:03 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3572.  
  3573.     * Version 0.83 released.
  3574.  
  3575.     * Array.h (DiagArray): Move inline definitions of get() and set()
  3576.     before use by other inline functions.
  3577.  
  3578. Sat Feb 12 14:15:45 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3579.  
  3580.     * configure.in: Check for g77 last.  Even if it is ever actually
  3581.     released, it probably won't be stable for quite a while.
  3582.  
  3583.     * MAKEINFO.PATCH: New file.
  3584.     * Makefile.in (DISTFILES): Distribute it.
  3585.  
  3586.     * liboctave/Matrix.cc (operator + (Complex, const Matrix&)):
  3587.     Make it work.
  3588.     (operator - (Complex, const Matrix&)): Ditto.
  3589.     (operator * (Complex, const Matrix&)): Ditto.
  3590.     (operator / (Complex, const Matrix&)): Ditto.
  3591.  
  3592. Fri Feb 11 00:03:39 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3593.  
  3594.     * configure.in: Check for strerror too.
  3595.  
  3596.     * configure.in: When saving CFLAGS as XCFLAGS and then restoring
  3597.     the value, quote the RHS.
  3598.  
  3599.     * src/g-builtins.cc (builtin_clc): Do the dirty work to clear the
  3600.     screen here instead of using rl_clear_screen to avoid printing
  3601.     prompt unnecessarily.
  3602.  
  3603. Thu Feb 10 00:26:32 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3604.  
  3605.     * src/utils.cc: Add all the cruft that the autoconf manual
  3606.     suggests for including dirent.h.
  3607.  
  3608.     * info/terminal.c (terminal_prep_terminal): [HAVE_TERMIOS_H &&
  3609.     NeXT]: Don't use OCRNL, as someone says NeXT's termios.h doesn't
  3610.     have it.
  3611.  
  3612.     * configure.in (GCC_IEEE_FP_FLAG): Correct check for ix86 Linux.
  3613.     Don't try to check for CC == gcc.
  3614.     Add GCC_IEEE_FP_FLAG to CFLAGS while checking for IEEE FP
  3615.     functions finite, isnan, and isinf.
  3616.  
  3617.     * readline/rldefs.h: Make definition of HAVE_POSIX_SIGNALS
  3618.     conditional on definition of _POSIX_VERSION, not HAVE_TERMIOS_H.
  3619.  
  3620. Wed Feb  9 02:41:32 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3621.  
  3622.     * src/tree.cc (tree_function::octave_va_start): Rename from
  3623.     va_start to avoid conflict with va_start macro.
  3624.     (tree_function::octave_var_arg): Likewise, rename from va_arg.
  3625.     * src/g-builtins.cc (builtin_va_arg): Call octave_va_arg for the
  3626.     current function instead of va_arg.
  3627.     (builtin_va_start): Likewise, for octave_va_start.
  3628.  
  3629.     * Version 0.82.1.
  3630.  
  3631.     * doc/Makefile.in (clean): Also remove octave.in, octave.rd,
  3632.     octave.ins, and octave.rds.
  3633.  
  3634.     * src/t-builtins.cc (load_variable): Make it work for all
  3635.     combinations of loading global or local variables when the
  3636.     variable to be loaded is already a global variable, local
  3637.     variable, a function, or even undefined.
  3638.  
  3639. Tue Feb  8 00:33:09 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3640.  
  3641.     * Version 0.82 released.
  3642.  
  3643.     * liboctave/mx-kludge.cc (operator + (KL_MAT_TYPE, KL_MAT_TYPE)):
  3644.     For an empty matrix with one nonzero dimension, be sure to return
  3645.     a result of the same size.
  3646.     (operator - (KL_MAT_TYPE, KL_MAT_TYPE)): Ditto.
  3647.     (product (KL_MAT_TYPE, KL_MAT_TYPE)): Ditto.
  3648.     (quotient (KL_MAT_TYPE, KL_MAT_TYPE)): Ditto.
  3649.  
  3650. Mon Feb  7 01:30:19 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3651.  
  3652.     * liboctave/Array.h, liboctave/array.cc (DiagArray): Back off on
  3653.     indexing via Proxy class changes for AIX systems to avoid gcc (or
  3654.     possibly AIX assembler?) bug.
  3655.  
  3656.     * src/tree-const.cc (tree_constant_rep::maybe_resize (int,
  3657.     force_orient)): Don't abort for a max index of zero.
  3658.  
  3659.     * liboctave/Matrix.h (class RowVector, friend double operator *
  3660.     (const RowVector&, const ColumnVector&)): Add missing const in
  3661.     declaration.
  3662.  
  3663.     * liboctave/Matrix.cc (Matrix::fill (val, r1, c1, r2, c2)): Set nc
  3664.     to cols(), not rows().
  3665.     (ComplexMatrix::fill (double val, r1, c1, r2, c2)): Likewise.
  3666.     (ComplexMatrix::fill (Complex val, r1, c1, r2, c2)): Likewise.
  3667.  
  3668.     * All source files: To match the documenation, refer to function
  3669.     files, not M-files.  Rename functions and variables that refer to
  3670.     _m_file_,  mfile, or mf to refer to _fcn_file, ffile, or ff.
  3671.  
  3672. Sun Feb  6 19:08:26 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3673.  
  3674.     * src/parse.y (yyerror): Don't crash if a parse error happens and
  3675.     the current input line is NULL.
  3676.  
  3677. Sat Feb  5 18:53:04 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3678.  
  3679.     * src/file-io.cc (initialize_file_io): Don't use variable names
  3680.     that start with `_'.
  3681.     * src/file-io.cc (class file_info): Likewise.
  3682.  
  3683. Fri Feb  4 01:15:59 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3684.  
  3685.     * src/builtins.cc (general_functions): In usage message for fopen,
  3686.     use `Valid' instead of `Legal'.
  3687.  
  3688.     * src/file-io.cc (do_printf): Use `invalid' instead of `illegal'
  3689.     in error message.
  3690.     (do_scanf): Likewise.
  3691.  
  3692.     * src/mappers.cc (atanh): Use correct formula.
  3693.  
  3694. Thu Feb  3 22:08:40 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3695.  
  3696.     * doc/refcard.tex: New file.
  3697.     * doc/Makefile.in (all): Make refcard.ps.
  3698.     (DISTFILES): Distribute refcard.tex, refcard.dvi, and refcard.ps.
  3699.  
  3700.     * src/tree-const.cc (any_element_is_negative): Delete function.
  3701.     (any_element_less_than): New function.
  3702.     (any_element_greater_than): Ditto.
  3703.     (tree_constant_rep::mapper): Use struct elements lower_limit,
  3704.     upper_limit, and can_return_complex_for_real_arg to properly
  3705.     handle functions like acos, asin, atanh, and acosh.
  3706.  
  3707.     * src/builins.h (struct Mapper_fcn): Rename neg_arg_complex to 
  3708.     can_return_complex_for_real_arg.  New elements, lower_limit and
  3709.     upper_limit.
  3710.     (struct builtin mappers functions): Rename neg_arg_complex to 
  3711.     can_return_complex_for_real_arg.  New elements, lower_limit and
  3712.     upper_limit.  Delete elements nargin_max and nargout_max.
  3713.     * src/variables.cc (install_builtin_mapper_function): Handle new
  3714.     struct elements can_return_complex_for_real_arg, lower_limit, and
  3715.     upper_limit.  Don't use nargin_max and nargout_max -- they are
  3716.     the same for all mapper functions.
  3717.  
  3718. Wed Feb  2 05:06:56 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3719.  
  3720.     * liboctave/Matrix.h: Don't include values.h.
  3721.     * liboctave/Matrix-ext.cc: Include float.h
  3722.     (DET::value_will_overflow): Use DBL_MAX, not MAXDOUBLE.
  3723.     (ComplexDET::value_will_overflow): Likewise.
  3724.     (DET::value_will_underflow): Use DBL_MIN, not MINDOUBLE.
  3725.     (ComplexDET::value_will_underflow): Likewise.
  3726.     * src/tree.cc: Include limits.h, not values.h.
  3727.     (tree_builtin::max_expected_args): Use INT_MAX, not MAXINT.
  3728.  
  3729.     * configure.in: If compiling on an ix86, set GCC_IEEE_FP_FLAG to
  3730.     -mieee-fp.  We should no longer require the modified crt0 code on
  3731.     Linux systems in order to get IEEE functions.
  3732.     * Makeconf.in (GCC_IEEE_FP_FLAG): Substitute value.
  3733.     (ALL_CFLAGS, UGLY_ALL_CFLAGS, ALL_CXX_FLAGS, UGLY_ALL_CXX_FLAGS,
  3734.     ALL_LDFLAGS): Use it.
  3735.  
  3736. Tue Feb  1 22:30:46 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3737.  
  3738.     * src/builtins.cc (install_builtins): Make SEEK_SET, SEEK_CUR, and
  3739.     SEEK_END constants.
  3740.  
  3741.     * src/tree-plot.cc (tree_subplot_using::print): Only check column
  3742.     number against max if max is greater than 0.
  3743.  
  3744. Mon Jan 31 15:59:31 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3745.  
  3746.     * scripts/strcmp.m: Correctly handle empty strings.
  3747.  
  3748.     * src/parse.y (input): Recognize lone simple_list and simple_list
  3749.     followed by error and '\n'.
  3750.  
  3751. Fri Jan 28 00:20:30 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3752.  
  3753.     * Version 0.81 released.
  3754.  
  3755.     * src/octave.cc (clean_up_and_exit): Call cleanup_tmp_files() here
  3756.     too.
  3757.  
  3758.     * configure.in: Check for atexit and on_exit.
  3759.     * src/octave.cc: Use HAVE_ATEXIT and HAVE_ON_EXIT (instead of
  3760.     just checking to see if sun is defined) to decide whether to
  3761.     define atexit as on_exit.
  3762.     (main): Don't try to call atexit if it's missing and we don't have
  3763.     on_exit either.
  3764.  
  3765. Thu Jan 27 22:16:48 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3766.  
  3767.     * configure.in: Check for gethostname and sys/utsname.h.
  3768.     * utils.cc (gethostname): Steal replacement from bash.  Provide
  3769.     definition if it looks like it's missing and we have
  3770.     sys/utsname.h.
  3771.  
  3772.     * liboctave/Array.h (DiagArray): Define non-const indexing
  3773.     functions here.
  3774.     * liboctave/Array.cc (DiagArray): Not here.
  3775.  
  3776.     * liboctave/Array.h (DiagArray::Proxy): New class to handle
  3777.     non-const reference indexing.  Allows different action if indexing
  3778.     on left side of assignment operator.
  3779.  
  3780.     * src/octave.cc (main): Call initialize_pager(),
  3781.     initialize_readline(), and install_signal_handlers() before trying
  3782.     to read startup files.
  3783.  
  3784.     * src/octave.cc (input_from_startup_file): New global flag.
  3785.     (execute_startup_files): Set it to 1 before reading startup files.
  3786.     * src/parse.y (func_def_2): If input_from_startup_file, don't try
  3787.     to compare file name and function name.
  3788.  
  3789. Wed Jan 26 14:39:27 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3790.  
  3791.     * readline/rldefs.h: Make better use of autoconf defines.
  3792.  
  3793. Tue Jan 25 17:19:19 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3794.  
  3795.     * liboctave/Matrix.cc (ComplexMatrix (DiagMatrix)): Make sure off
  3796.     diagonal elements are zero.
  3797.     (ComplexMatrix (ComplexDiagMatrix): Likewise.
  3798.     (Matrix (DiagMatrix): Likewise.
  3799.  
  3800. Fri Jan 21 17:43:11 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3801.  
  3802.     * flibs.sh: Recognize libraries that match `/*.a'.
  3803.  
  3804. Thu Jan 20 18:12:01 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3805.  
  3806.     * Version 0.80.1.
  3807.  
  3808. Wed Jan 19 14:48:27 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3809.  
  3810.     * libcruft/odepack/stode.f: Don't try to `RETURN 0'.  This causes
  3811.     lsode to fail, at least with Sun's f77.
  3812.  
  3813.     * src/tree-const.cc (tree_constant_rep::load): Delete string
  3814.     returned from extract_keyword.
  3815.     * src/t-builtins.cc (builtin_load): Likewise.
  3816.     * src/variables.cc (extract_keyword): Return new storage, not
  3817.     static buffer.
  3818.  
  3819.     * src/t-builtins.cc (builtin_save): If saving a named list of
  3820.     variables, use is_globally_visible to decide whether to mark
  3821.     variables in the current symbol table as global.
  3822.  
  3823. Tue Jan 18 11:57:03 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3824.  
  3825.     * Version 0.80 released.
  3826.  
  3827.     * doc/Makefile.in (install): Delete commands for installing
  3828.     liboctave.info instead of trying to comment them out.
  3829.  
  3830.     * liboctave/Array.cc: Allow users to compile with
  3831.     -fexternal-stemplates and USE_EXTERNAL_TEMPLATES defined to
  3832.     generate their own .o files with new types.
  3833.  
  3834.     * Makeconf.in (includedir): Install include files in
  3835.     $prefix/include/octave by default.
  3836.  
  3837.     * liboctave/Makefile.in (TEMPLATE_SRC): New macro.
  3838.     (install): Install files listed in $(TEMPLATE_SRC) too.
  3839.  
  3840.     * info/search.h: Conditionally declare stricmp and strnicmp.
  3841.     * info/search.c: Conditionally define stricmp and strnicmp.
  3842.     * config.h.in: Add undefs for HAVE_STRICMP and HAVE_STRNICMP.
  3843.  
  3844.     * configure.in: Check for stricmp and strnicmp too.
  3845.  
  3846.     * doc/Makefile.in: For now, don't format or try to install the
  3847.     liboctave manual. 
  3848.     Don't distribute formatted copies of liboctave manual.
  3849.  
  3850. Mon Jan 17 01:10:54 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3851.  
  3852.     * doc/Makefile.in (clean): Remove all index files.
  3853.  
  3854.     * src/Makefile.in (defaults.h): Depend on Makefile too.
  3855.     * doc/Makefile.in (conf.texi): New rule for making conf.texi from
  3856.     conf.texi.in.
  3857.  
  3858.     * doc/conf.texi.in: New file.
  3859.     * doc/octave.texi: Include conf.texi to get VERSION, OCTAVE_HOME,
  3860.     and other variables that need to be set depending on the
  3861.     configuration.
  3862.  
  3863.     * Makefile.in (DISTFILES): Don't distribute PLOTTING.  Current
  3864.     plotting info is in the Texinfo docs.
  3865.  
  3866. Sat Jan 15 15:43:34 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3867.  
  3868.     * config.sub: New file, from libg++-2.5.2.
  3869.     * Makefile.in: Distribute config.sub.
  3870.     * configure.in: Use config.sub to validate system types.  If it
  3871.     fails, continue with target_host_type and canonical_host_type set
  3872.     to unknown.  Leave target_host_type set to any alias given as the
  3873.     TARGET argument to configure.
  3874.  
  3875.     * readline/rldefs.h: If ultrix and HAVE_SGTTY_H, avoid Posix
  3876.     terminal driver.
  3877.     * configure.in: If configuring for ultrix, check for sgtty first.
  3878.     If not found, go ahead and check for Posix terminal driver.
  3879.  
  3880.     * configure.in: Don't try to do anything special for readline on
  3881.     NeXT systems.
  3882.     
  3883.     * Makeconf.in: Define rules for making .d files here.
  3884.     liboctave/Makefile.in: Not here.
  3885.     src/Makefile.in: Or here.
  3886.  
  3887.     * liboctave/Matrix.h (all Matrix/Vector operator = functions):
  3888.     Simply call the base class operator =, then return *this.
  3889.     (class ColumnVector): Declare RowVector a friend class, so it can
  3890.     access the private constructor for the transpose operator.
  3891.     (class RowVector): Likewise, for ColumnVector.
  3892.     (class ComplexColumnVector): Likewise, for CommplexRowVector.
  3893.     (class ComplexRowVector): Likewise, for ComplexColumnVector.
  3894.     Numerous formatting cleanups.
  3895.  
  3896. Thu Jan 13 13:17:47 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3897.  
  3898.     * Version 0.79.90.
  3899.  
  3900.     * builtins.cc: Include missing-math.h.
  3901.  
  3902.     * src/missing-math.h: Provide declarations for acosh, asinh,
  3903.     atanh, and gamma whether they are actually missing or not, because
  3904.     they are not part of the standard math.h, and the g++/libg++
  3905.     installation no longer provides declarations for them.
  3906.  
  3907.     * src/sighandlers.h (RETSIGTYPE): Define here.
  3908.     (BADSIG): Likewise.
  3909.     (sig_handler): Likewise.
  3910.  
  3911.     * src/g-builtins.cc: Include sighandlers.h
  3912.     Don't define RETSIGTYPE, BADSIG, or sig_handler here.
  3913.     * src/octave.cc: Or here.
  3914.  
  3915. Wed Jan 12 16:12:27 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3916.  
  3917.     * src/g-builtins.cc: Don't check nargin/nargout in *_options
  3918.     functions.
  3919.  
  3920.     * src/f-qpsol.cc, src/f-quad.cc, src/f-lsode.cc, src/f-fsolve.cc,
  3921.     src/f-dassl.cc, liboctave/QPSOL.cc, liboctave/Quad.cc,
  3922.     liboctave/ODE.cc, liboctave/NLEqn.cc, liboctave/DAE.cc:
  3923.     Similar changes for these classes/functions as the following
  3924.     changes for src/f-npsol.cc and liboctave/NPSOL.cc:
  3925.  
  3926.     * src/f-npsol.cc (npsol_opts): New static variable to hold Octave's
  3927.     current idea of npsol options.
  3928.     (npsol): Call nlp.copy (npsol_opts) after creating NPSOL object.
  3929.     (npsol_option_table): New static list of options for npsol.
  3930.     (print_npsol_option_list): New function.
  3931.     (do_npsol_option): New function.
  3932.     (npsol_options): Make it work.
  3933.  
  3934.     * liboctave/NPSOL.cc (NPSOL_options): New class.
  3935.     * (NPSOL): Also derive from NPSOL_options.
  3936.     * (minimize): Call pass_options_to_npsol before calling npsol.
  3937.     * (NPSOL::option): No longer works.  Print error message instead.
  3938.     * (NPSOL::set_default_options): Now a member of NPSOL_options class.
  3939.  
  3940.     * src/utils.cc: If missing, declare strcasecmp, strncasecmp.
  3941.     * (almost_match): Add new argument to do case-insensitive matches.
  3942.     * (keyword_almost_match): New function to match a string against a
  3943.     list of keywords.
  3944.  
  3945.     * liboctave/NLP.h (NLP): Add destructor and copy constructor.
  3946.  
  3947.     * configure.in: Check for strcasecmp and strncasecmp.
  3948.     * config.h.in: Add #undefs for HAVE_STRCASECMP and STRNCASECMP.
  3949.     * src/strcasecmp.c, src/strncase.c: New files, from glibc.
  3950.     * src/Makefile.in (SOURCES, OBJECTS): List them.
  3951.  
  3952.     * src/builtins.cc (general_functions): Improve usage message for
  3953.     the *_options functions.
  3954.     (print_usage): New arg, just_usage with default value of 0.
  3955.     If nonzero, don't print info about where to find additional help.
  3956.  
  3957.     * src/Makefile.in (INCLUDES): Add error.h.
  3958.     (SOURCES): Add error.h.
  3959.  
  3960.     * src/tree.cc (tree_identifier::parse_m_file): call reset_parser
  3961.     before calling yyparse ().
  3962.     * src/tc-extras.cc (eval_string): Likewise.
  3963.     Don't save previous symbol table.  That is handled by the
  3964.     unwind protect.
  3965.  
  3966.     * src/lex.l (reset_parser): Don't unconditionally call yyreset.
  3967.     Add a couple of comments.
  3968.     (yywrap): Always return 1, not 0.
  3969.     (yy_flex_alloc, yy_flex_realloc, yy_flex_free): #if 0 out.
  3970.  
  3971.     * src/utils.cc (raw_mode): Only complain about stdin not being a
  3972.     tty if we are really interactive.
  3973.  
  3974.     * src/octave.cc (main): End startup message with endl to ensure
  3975.     flushing before other output.
  3976.     * Turn of readline's blink_matching_paren feature if not
  3977.     interactive, or if reading from a file specified on the command
  3978.     line.
  3979.  
  3980.     * src/octave.cc (main): Set the symbol table context just before
  3981.     calling reset_parser in the main loop.
  3982.     * src/lex.l (reset_parser): Not here.
  3983.  
  3984.     * src/input.cc (octave_gets): Declare static.
  3985.     (octave_read): Also handle echoing input if not using readline.
  3986.  
  3987.     * Makefile.in (DISTFILES): Add SENDING-PATCHES to the list.
  3988.  
  3989. Mon Jan 10 14:30:13 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3990.  
  3991.     * scripts/corrcoef.m, scripts/fortran_vec.m, scripts/kurtosis.m,
  3992.     scripts/ols.m, scripts/skewness.m, scripts/cov.m, scripts/gls.m,
  3993.     scripts/mahalanobis.m, scripts/pinv.m: New script files from Kurt
  3994.     Hornik (hornik@neuro.tuwien.ac.at) and the Department of
  3995.     Probability Theory and Statistics TU Wien, Austria. 
  3996.  
  3997. Sun Jan  9 01:11:05 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  3998.  
  3999.     * src/g-builtins.cc (builtin_fsqp_options): If FSQP_MISSING is
  4000.     defined, don't call fsqp_options; just print usage message.
  4001.     (builtin_npsol_options): Likewise, for npsol_options.
  4002.     (builtin_qpsol_options): Likewise, for qpsol_options.
  4003.     * src/builtins.cc (general_functions): Provide different usage
  4004.     message for fsqp_options depending on whether FSQP_MISSING is
  4005.     defined.  Likewise for npsol_options and qpsol_options.
  4006.  
  4007. Sat Jan  8 16:45:57 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  4008.  
  4009.     * libcruft/misc/dostop.c: Include config.h.
  4010.  
  4011.     * src/variables.cc (extract_keyword): Use ostrstream instead of
  4012.     fixed length buffer.  For keywords with string values, return
  4013.     value in static buffer.
  4014.     * src/t-builtins.cc (builtin_load): Handle new argument list for
  4015.     extract_keyword.  Handle possiblity of load_variable setting
  4016.     error_state.
  4017.     * src/tree-const.cc (tree_constant_rep::load): Handle new argument
  4018.     list for extract_keyword.
  4019.  
  4020. Fri Jan  7 13:20:47 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  4021.  
  4022.     * src/f-eig.cc (builtin_eig_2): Rename from builtin_eig.
  4023.     * src/f-fsolve.cc (builtin_fsolve_2): Rename from builtin_fsolve.
  4024.     * src/f-inv.cc (builtin_inv_2): Rename from builtin_inv.
  4025.  
  4026. Thu Jan  6 12:29:41 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  4027.  
  4028.     * src/tree-base.h (tree::save): Add optional argument `precision'.
  4029.     * src/tree-const.cc (tree_constant::save): Ditto.
  4030.     (tree_constant_rep::save): Ditto.
  4031.     * src/symtab.cc (symbol_def::save): Ditto.
  4032.     (symbol_record::save): Ditto.
  4033.     (symbol_table::save): Ditto.
  4034.  
  4035.     * src/t-builtins.cc (builtin_save): Pass user_pref.save_precision
  4036.     to symbol table save functions.
  4037.     * src/builtns.cc (string_variables): Add save precision to thelist.
  4038.     (install_builtins): Initialize it.
  4039.     * src/user-prefs.cc (set_save_precision): New function.
  4040.     * src/user-prefs.h (user_pref.save_precision): New data element.
  4041.  
  4042.     * liboctave/Matrix-ext.cc: Provide correct prototypes for dgeesx
  4043.     and zgeesx.
  4044.     * (SCHUR::init): Don't declare a dummy_select function pointer,
  4045.     just pass `(void *) 0' instead, since the dummy argument is never
  4046.     supposed to be used anyway.
  4047.  
  4048.     * src/input.cc (initialize_readline): Cast command_completer to
  4049.     CPPFunction, not Function, now that readline has more than one
  4050.     function typedef.
  4051.     * Add extern declaration for free_undo_list ().
  4052.  
  4053.     * Replace readline source from GDB with readline source from bash.
  4054.     This allows paren matching.
  4055.  
  4056. Wed Jan  5 01:20:26 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  4057.  
  4058.     * configure.in: Also check for sys/select.h.
  4059.  
  4060.     * liboctave/RowVector.cc (ComplexRowVector::operator *): Complete
  4061.     function body.  Put code in-line rather than making a call to the
  4062.     BLAS routine zdotu to avoid having to cope with the various ways
  4063.     that Fortran compilers might translate this.
  4064.  
  4065.     * src/input.cc (operate_and_get_next): New function, from bash.
  4066.     (initialize_readline): Bind operate_and_get_next to C-O here.
  4067.  
  4068.     * src/input.cc (command_completer, command_generator):
  4069.     Declare static here.
  4070.     * srs/input.h (command_completer, command_generator):
  4071.     Not extern here.
  4072.  
  4073.     * g-builtins.cc (builtin_warranty): Change copyright info.
  4074.     * octave.cc (verbose_usage): Likewise.
  4075.     (main): Likewise.
  4076.  
  4077. Mon Jan  3 15:49:41 1994  John Eaton  (jwe@schoch.che.utexas.edu)
  4078.  
  4079.     * src/fnmatch.c, src/fnmatch.h: New files for pattern matching
  4080.     from the GNU C library.
  4081.     * src/Makefile.in: Add them to the appropriate lists.
  4082.     * src/t-builtins.cc (builtin_save): Use fnmatch to do pattern
  4083.     matching instead of using regular expressions.
  4084.     (builtin_clear): Likewise.
  4085.     (glob_pattern_p): New function.
  4086.     (builtin_save): Print error message and return if only given one
  4087.     argument that contains globbing characters.
  4088.  
  4089.     * src/symtab.cc (symbol_record::save): Don't attempt to save
  4090.     undefined variables.
  4091.  
  4092. Wed Dec 29 02:55:08 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4093.  
  4094.     * scripts/rank.m: Also need to compute SVD when nargin == 2.
  4095.     Correct usage message.
  4096.  
  4097. Wed Dec 15 01:44:18 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4098.  
  4099.     * src/f-lpsolve.cc, src/f-fsqp.cc, src/f-npsol.cc, src/f-qpsol.cc,
  4100.     src/f-lsode.cc, src/f-dassl.cc, src/f-fsolve.cc, src/f-quad.cc:
  4101.     New stub options functions, XXX_options, and XXX_options_2 (for
  4102.     future dld use), where XXX is lpsolve, fsqp, npsol, etc.
  4103.     * src/f-lpsolve.h, src/f-fsqp.h, src/f-npsol.h, src/f-qpsol.h,
  4104.     src/f-lsode.h, src/f-dassl.h, src/f-fsolve.h, src/f-quad.h:
  4105.     Declare XXX_options functions.
  4106.     * src/builtins.cc (builtin_general_functions): Add new XXX_options
  4107.     functions to the list of builtin functions.
  4108.     * src/g-builtins.cc: Define builtin_XXX_options functions.
  4109.     * src/g-builtins.h: Declare them.
  4110.  
  4111.     * scripts/tzero.m: Add missing comma in fprintf call.
  4112.  
  4113. Tue Dec 14 00:24:35 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4114.  
  4115.     * libcruft/quadpack/*.f: Modify to handle user-requested
  4116.     termination from inside the user-supplied function.
  4117.     * src/f-quad.cc (quad_user_function): Set quad_integration_error
  4118.     if an error is encountered in the user-supplied function.
  4119.     * liboctave/Quad.h (quad_integration_error): New global variable.
  4120.     * liboctave/Quad.cc (user_function): Handle
  4121.     quad_integration_error, and error flag for modified Quadpack
  4122.     functions.
  4123.  
  4124.     * src/tree.cc (tree_simple_assignment_expression::eval): Check
  4125.     error status after calling convert_to_const_vector () on the
  4126.     argument list.
  4127.     (tree_index_expression::eval): Ditto.
  4128.  
  4129.     * src/tree.cc (tree_argument_list::convert_to_const_vector):
  4130.     If an error is encountered while evaluating an element of the
  4131.     list, print an error message including the element number.
  4132.  
  4133.     * liboctave/ODE.cc (integration_error): New private data member.
  4134.     (ODE constructors): Initialize it to zero.
  4135.     (ODE::integrate (double)): Reset it to zero before each
  4136.     integration step.
  4137.     (lsode_f): Treat empty vector returned from user-supplied function
  4138.     as an error.
  4139.     * src/f-lsode.cc (lsode_user_function): Return empty vector if
  4140.     error is encountered in user-supplied function.  Don't jump to top
  4141.     level on error.
  4142.  
  4143.     * libcruft/odepack/lsode.f (lsode): Return with istate = -13 on
  4144.     error from user supplied subroutine.
  4145.     * libcruft/odepack/lsode.f (lsode): Handle extra argument returned
  4146.     from user-supplied function.
  4147.     * libcruft/odepack/stode.f (stode): Likewise.
  4148.     * libcruft/odepack/prepj.f (prepj): Likewise.
  4149.  
  4150. Wed Dec  8 01:30:57 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4151.  
  4152.     * liboctave/DAE.cc (integration_error): New private data member.
  4153.     (DAE constructors): Initialize it to zero.
  4154.     (DAE::integrate (double)): Reset it to zero before each
  4155.     integration step.
  4156.     (dassl_f): Treat empty vector returned from user-supplied function
  4157.     as an error.
  4158.     * src/f-dassl.cc (dassl_user_function): Return empty vector if
  4159.     error is encountered in user-supplied function.  Don't jump to top
  4160.     level on error.
  4161.  
  4162.     * liboctave/NPSOL.cc (npsol_objective_error): New global variable.
  4163.     (npsol_objfun): Set to zero before calling user-supplied function.
  4164.     Check after calling user-supplied function.
  4165.     Set mode to -1 on error.
  4166.     (npsol_confun): Set mode to -1 on error.
  4167.     (npsol declaration): Declare args for user-supplied functions.
  4168.     * src/f-npsol.cc (npsol_objective_function): If an error is
  4169.     encountered in the calculation of the objective function, set
  4170.     npsol_objective_error to 1.
  4171.     (npsol_constraint_function): Treat empty vector returned from
  4172.     user-supplied function as an error.
  4173.  
  4174.     * liboctave/Array.cc (*::checkelem): Correct bounds checking.  On
  4175.     error, return uninitialized value of type T.  This avoids placing
  4176.     an extra requirement on the class that can be used as an array
  4177.     element.
  4178.     (*::operator ()): Likewise.
  4179.  
  4180. Mon Dec  6 07:24:49 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4181.  
  4182.     * liboctave/NLEqn.cc (hybrd1 declaration): Declare args for
  4183.     user-supplied fuction.
  4184.     (hybrj1): Likewise.
  4185.     (hybrd1_fcn): Treat return of empty vector from user supplied
  4186.     function as an error by setting iflag to -1.
  4187.     (hybrj1_fcn): Likewise.
  4188.     (solve): Handle case of info < 0 returned from hybrd1.
  4189.  
  4190.     * src/f-fsolve.cc (fsolve_user_function): Don't jump to top level
  4191.     on error in user-supplied function.  Treat empty vector returned
  4192.     from user-supplied function as error.
  4193.     (hybrd_info_to_fsolve_info): Translate -1 (failure in evaluation
  4194.     of user-supplied function) to -2.
  4195.     * scripts/perror.m (fsolve case): Handle -2.
  4196.  
  4197.     * info/error.c (program_name): Initialize to info, not NULL.
  4198.  
  4199.     * info/session.c (initialize_info_session): Don't exit if term is
  4200.     too dumb or too small to use info.  Return int status instead.
  4201.     * info/info.h (TERM_TOO_SMALL): New macro.
  4202.  
  4203.     * src/t-buitlins.cc (try_info): Check return value from
  4204.     initialize_info_session ().
  4205.  
  4206.     * liboctave/Array.cc (DiagArray<T>::DiagArray (int n, const T& val)):
  4207.     Set number of rows and columns to n, not 0.
  4208.  
  4209. Sat Dec  4 14:01:41 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4210.  
  4211.     * src/lex.h (YY_INPUT): Undefine if defined, then always define
  4212.     the way we want.
  4213.     (YY_FATAL_ERROR): Likewise.
  4214.  
  4215.     * src/lex.l (yywrap): Declare static.
  4216.     (yy_flex_alloc): New function, so we don't have to link with
  4217.     libfl.a when using flex 2.4.x.
  4218.     (yy_flex_realloc): Ditto.
  4219.     (yy_flex_free): Ditto.
  4220.  
  4221. Thu Dec  2 19:23:43 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4222.  
  4223.     * scripts/*.m: Add copying notice to script files.
  4224.  
  4225.     * src/input.cc (command_generator): Return copy of matching string.
  4226.  
  4227.     * src/input.cc (command_generator): Correctly delete array of
  4228.     character strings.
  4229.     * src/symtab.cc (symbol_table::save): Likewise.
  4230.     * src/utils.cc (pathstring_to_vector): Likewise.
  4231.  
  4232.     * src/utils.cc (get_m_file_names): When reallocating vector of
  4233.     strings, delete original vector of pointers, but not the strings
  4234.     they point to.
  4235.  
  4236. Tue Nov 30 12:36:41 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4237.  
  4238.     * liboctave/RowVector.cc, liboctave/ColVector.cc,
  4239.     liboctave/DiagMatrix.cc, liboctave/Matrix.cc,
  4240.     liboctave/Matrix-ext.cc: Massive rewrite to cope with new
  4241.     derivation scheme.
  4242.  
  4243.     * liboctave/Matrix.h: Include Array.h, and derive Matrix,
  4244.     ComplexMatrix, etc. from Array<double>.  Derive Complex
  4245.     versions from Array<Complex>.  Delete declarations of functions
  4246.     now inherited from the Array classes.
  4247.     * Include mx-kludge.h with appropriate #defines in each class that
  4248.     needs it.
  4249.     * liboctave/Matrix.cc: Include mx-kludge.cc with appropriate
  4250.     #defines in each class that needs it.
  4251.  
  4252.     * liboctave/Makefile.in (INCLUDES): Add Array.h, MArray.h, and
  4253.     mx-kludge.h.
  4254.     (SOURCES): Add Array.cc.
  4255.     (EXTRAS): Add MArray.cc and mx-kludge.cc.
  4256.  
  4257.     * liboctave/mx-kludge.h, liboctave/mx-kludge.cc: New files to
  4258.     implement the MArray functionality with macros until g++ can
  4259.     handle the MArray stuff.
  4260.  
  4261.     * liboctave/MArray.h, liboctave/MArray.cc: New files for generic
  4262.     arrays with simple math functions for like-types.  This won't
  4263.     quite work with g++ yet, so it's not used anywhere.
  4264.  
  4265.     * liboctave/Array.h, liboctave/Array.cc: New files for generic
  4266.     arrays.
  4267.  
  4268.     * liboctave/mx-inlines.cc: Add const for const arguments.
  4269.  
  4270.     * src/file-io.cc (file_info): Rename class from File_info.
  4271.     (file_info::operator =): Fix memory leak by deleting old name
  4272.     and mode before saving new.  Don't do copy if source and
  4273.     destination are the same.
  4274.  
  4275.     * src/tree.cc (tree_matrix::eval): Plug memory leak.
  4276.  
  4277.     * src/tree.cc (tree_builtin::tree_builtin): Check to see that nm,
  4278.     not my_name, is non-NULL before saving it.
  4279.  
  4280.     * src/tree.cc (tree_identifier::eval, tree_gobal_command::eval):
  4281.     After performing the assignment, delete the identifier created
  4282.     for temporary asssignment since the destrucotr for
  4283.     tree_simple_assignment_expression doesn't do it for us.
  4284.  
  4285.     * src/tree.cc (tree_function::stash_m_file_name): Delete file_name
  4286.     before saving it.
  4287.     (tree_function::stash_function_name): Likewise, for fcn_name.
  4288.  
  4289.     * src/lex.l, src/lex.h: Make quote_is_transpose globally visible.
  4290.     * src/parse.y (param_list): Use it, and recognize empty parameter
  4291.     lists here.
  4292.  
  4293.     * src/parse.y (simple_expr1): Recognize empty matrices here.
  4294.     (matrix): Not here.
  4295.  
  4296.     * src/arith-ops.cc (do_binary_op): The matrix product and quotient
  4297.     functions aren't class member functions now.
  4298.  
  4299.     * src/tc-index.cc, src/tc-assign.cc, src/symtab.cc,
  4300.     src/tree-plot.cc, src/idx-vector.cc, src/tree-const.cc:
  4301.     Call ::error, not just error, since g++ now complains about not
  4302.     being able to find a non-hidden member function by that name.
  4303.  
  4304.     * src/tree-const.cc: Call ::real and ::imag, not just real and imag,
  4305.     since g++ now complains about not being able to find non-hidden
  4306.     member functions by those names.
  4307.  
  4308.     * src/tree-const.cc (tree_constant_rep::force_numeric): Handle case
  4309.     of zero-length strings.
  4310.  
  4311.     * src/tree-const.cc (tree_constant_rep::convert_to_str): Null
  4312.     terminate strings created from scalars.
  4313.  
  4314.     * src/tc-index.cc (tree_constant_rep::fortran_style_matrix_index): Use
  4315.     data(), not fortran_vec().
  4316.     * src/idx-vector.cc (idx_vector::idx_vector): Likewise.
  4317.  
  4318.     * src/SLStack.cc: Move function definitions here.
  4319.     * src/SLStack.h: From here.  Include SLStack.cc if not using
  4320.     external templates.
  4321.  
  4322.     * src/unwind-prot.h: Move class declaration here.
  4323.     * src/unwind-prot.cc: From here.
  4324.  
  4325.     * src/xdiv.h, src/xpow.h, src/variables.h, src/utils.h,
  4326.     src/user-prefs.h, src/t-builtins.h, src/sighandlers.h,
  4327.     src/pr-output.h, src/pager.h, src/octave-hist.h, src/mappers.h,
  4328.     src/input.h, src/help.h, src/gripes.h, src/g-builtins.h,
  4329.     src/f-syl.h, src/f-svd.h, src/f-schur.h, src/f-rand.h,
  4330.     src/f-qzval.h, src/f-quad.h, src/f-qr.h, src/f-qpsol.h,
  4331.     src/f-npsol.h, src/f-lu.h, src/f-lsode.h, src/f-lpsolve.h,
  4332.     src/f-inv.h, src/f-ifft.h, src/f-hess.h, src/f-givens.h,
  4333.     src/f-fsqp.h, src/f-fsolve.h, src/f-fft.h, src/f-expm.h,
  4334.     src/f-eig.h, src/f-det.h, src/f-dassl.h, src/f-colloc.h,
  4335.     src/f-chol.h, src/f-balance.h, src/error.h, src/dynamic-ld.h,
  4336.     src/builtins.h, src/arith-ops.h, src/tree-const.h, src/tree.h,
  4337.     src/token.h, src/symtab.h, src/procstream.h, src/idx-vector.h,
  4338.     src/file-io.h, src/tree-base.h, src/unwind-prot.h, src/Stack.h,
  4339.     liboctave/LinConst.h, liboctave/FEGrid.h, liboctave/NLEqn.h,
  4340.     liboctave/NLConst.h, liboctave/LPsolve.h, liboctave/LP.h,
  4341.     liboctave/FSQP.h, liboctave/DAEFunc.h, liboctave/DAE.h,
  4342.     liboctave/CollocWt.h, liboctave/Bounds.h, liboctave/Objective.h,
  4343.     liboctave/ODEFunc.h, liboctave/NLFunc.h, liboctave/Range.h,
  4344.     liboctave/Quad.h, liboctave/QP.h, liboctave/QPSOL.h,
  4345.     liboctave/QLD.h, liboctave/NPSOL.h, liboctave/NLP.h,
  4346.     liboctave/f77-uscore.h, liboctave/lo-error.h,
  4347.     liboctave/Matrix.h:
  4348.     Don't use #pragma interface.
  4349.  
  4350.     * src/tc-index.cc, src/tc-assign.cc, src/symtab.cc,
  4351.     src/procstream.cc, src/gripes.cc, src/f-syl.cc, src/f-svd.cc,
  4352.     src/f-schur.cc, src/f-rand.cc, src/f-quad.cc, src/f-qr.cc,
  4353.     src/f-qpsol.cc, src/f-npsol.cc, src/f-lu.cc, src/f-lsode.cc,
  4354.     src/f-lpsolve.cc, src/f-inv.cc, src/f-ifft.cc, src/f-hess.cc,
  4355.     src/f-givens.cc, src/f-fsqp.cc, src/f-fsolve.cc, src/f-fft.cc,
  4356.     src/f-eig.cc, src/f-det.cc, src/f-dassl.cc, src/f-colloc.cc,
  4357.     src/f-chol.cc, src/f-balance.cc, src/t-builtins.cc,
  4358.     src/octave-hist.cc, src/input.cc, src/g-builtins.cc,
  4359.     src/xdiv.cc, src/xpow.cc, src/user-prefs.cc, src/unwind-prot.cc,
  4360.     src/tree-plot.cc, src/token.cc, src/tc-extras.cc, src/sysdep.cc,
  4361.     src/sighandlers.cc, src/pr-output.cc, src/pager.cc,
  4362.     src/mappers.cc, src/idx-vector.cc, src/help.cc, src/f-qzval.cc,
  4363.     src/f-expm.cc, src/error.cc, src/dynamic-ld.cc, src/builtins.cc,
  4364.     src/arith-ops.cc, src/variables.cc, src/utils.cc,
  4365.     src/tree-const.cc, src/file-io.cc, src/tree.cc,
  4366.     liboctave/sun-utils.cc, liboctave/mx-inlines.cc,
  4367.     liboctave/RowVector.cc, liboctave/ColVector.cc,
  4368.     liboctave/DiagMatrix.cc, liboctave/Matrix.cc,
  4369.     liboctave/Matrix-ext.cc, liboctave/Quad.cc, liboctave/ODE.cc,
  4370.     liboctave/LPsolve.cc, liboctave/FSQP.cc, liboctave/DAE.cc,
  4371.     liboctave/DAEFunc.cc, liboctave/QP.cc, liboctave/Objective.cc,
  4372.     liboctave/ODEFunc.cc, liboctave/NLFunc.cc, liboctave/NLConst.cc,
  4373.     liboctave/LP.cc, liboctave/lo-error.cc, liboctave/Range.cc,
  4374.     liboctave/QPSOL.cc, liboctave/NPSOL.cc, liboctave/NLEqn.cc,
  4375.     liboctave/Matrix.cc, liboctave/Matrix-ext.cc,
  4376.     liboctave/LinConst.cc, liboctave/FEGrid.cc,
  4377.     liboctave/DiagMatrix.cc, liboctave/CollocWt.cc,
  4378.     liboctave/ColVector.cc, liboctave/Bounds.cc:
  4379.     Don't use #pragma implementation.
  4380.  
  4381.     * src/lex.l, src/parse.y, src/procstream.cc, src/gripes.cc,
  4382.     src/f-syl.cc, src/f-svd.cc, src/f-schur.cc, src/f-rand.cc,
  4383.     src/f-quad.cc, src/f-qr.cc, src/f-qpsol.cc, src/f-npsol.cc,
  4384.     src/f-lu.cc, src/f-lsode.cc, src/f-lpsolve.cc, src/f-inv.cc,
  4385.     src/f-ifft.cc, src/f-hess.cc, src/f-givens.cc, src/f-fsqp.cc,
  4386.     src/f-fsolve.cc, src/f-fft.cc, src/f-eig.cc, src/f-det.cc,
  4387.     src/f-dassl.cc, src/f-colloc.cc, src/f-chol.cc,
  4388.     src/f-balance.cc, src/t-builtins.cc, src/octave-hist.cc,
  4389.     src/input.cc, src/g-builtins.cc, src/xdiv.cc, src/xpow.cc,
  4390.     src/user-prefs.cc, src/unwind-prot.cc, src/tree-plot.cc,
  4391.     src/token.cc, src/tc-extras.cc, src/sysdep.cc,
  4392.     src/sighandlers.cc, src/pr-output.cc, src/pager.cc,
  4393.     src/mappers.cc, src/idx-vector.cc, src/help.cc, src/f-qzval.cc,
  4394.     src/f-expm.cc, src/error.cc, src/dynamic-ld.cc, src/builtins.cc,
  4395.     src/arith-ops.cc, src/variables.cc, src/utils.cc,
  4396.     src/tree-const.cc, src/file-io.cc, src/tree.cc: If HAVE_CONFIG_H
  4397.     is defined, include config.h.
  4398.  
  4399.     * config.h.in, acconfig.h: New files
  4400.     * Makefile.in (DISTFILES): Add them to the list.
  4401.  
  4402.     * Makeconf.in (root_srcdir): Define.
  4403.     (INCFLAGS): Clean up.
  4404.     (UGLY_ALL_CFLAGS): New macro.
  4405.     (UGLY_ALL_CXXFLAGS): Likewise.
  4406.     (UGLY_ALL_LDFLAGS): Likewise.
  4407.  
  4408.     * configure.in: Convert to generate config.h.
  4409.     Substitute root_srcdir in Makefiles.
  4410.     Use AC_DEFINE(foo, 1) instead of DEFS="$DEFS -Dfoo=1".
  4411.     If using g++ 2.5 or later, define USE_EXTERNAL_TEMPLATES.
  4412.     Use UGLY_DEFS for what would have been substited in DEFS, for
  4413.     those cases when we need DEFS instead of config.h.
  4414.  
  4415. Tue Nov 16 04:59:19 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4416.  
  4417.     * src/f-expm.cc, src/f-givens.cc, src/f-qzval.cc, src/f-syl.cc:
  4418.     Include f77-uscore.h here.
  4419.  
  4420.     * liboctave/ColVector.cc, liboctave/Matrix.cc,
  4421.     liboctave/Matrix-ext.cc, liboctave/RowVector.cc: Move declarations
  4422.     for Fortran functions here.
  4423.     * liboctave/Matrix.h: From here. Don't include f77-uscore.h here.
  4424.  
  4425. Mon Nov 15 04:03:34 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4426.  
  4427.     * src/tc-extras.cc (min): For two-arg versions, use error(), not
  4428.     FAIL.
  4429.     (max): Likewise.
  4430.     * src/idx-vector.cc (checkelem): Likewise.
  4431.  
  4432.     * liboctave/Matrix.h, liboctave/Matrix.cc, liboctave/RowVector.cc,
  4433.     liboctave/ColVector.cc, liboctave/DiagMatrix.cc,
  4434.     liboctave/Matrix-ext.cc, liboctave/Bounds.cc, liboctave/DAE.cc,
  4435.     liboctave/CollocWt.cc, liboctave/FEGrid.cc, liboctave/LinConst.cc,
  4436.     liboctave/ODE.cc, liboctave/NLEqn.cc: Don't abort or exit on
  4437.     errors.  Instead print some message by calling the function
  4438.     pointed to by current_liboctave_error_handler and then return.
  4439.  
  4440.     * liboctave/lo-error.cc: New file, for liboctave error handling
  4441.     stuff.
  4442.  
  4443. Sun Nov 14 23:28:12 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4444.  
  4445.     * src/utils.cc (default_path): Handle OCTAVE_PATH from the
  4446.     environment like TeX handles TEXINPUTS.  If the path starts with
  4447.     `:', prepend the standard path.  If it ends with `:' append the
  4448.     standard path.  If it begins and ends with `:', do both (which is
  4449.     useless, but the luser asked for it...).
  4450.     (octave_lib_dir): Plug memory leak.
  4451.  
  4452. Sat Nov 13 02:41:24 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4453.  
  4454.     * src/symtab.h (symbol_record::context): New data member, to allow
  4455.     recursive functions to work.
  4456.     * src/symtab.cc (symbol_record::push_context): New function
  4457.     (symbol_record::pop_context): Ditto.
  4458.     (symbol_table::pop_context): Ditto.
  4459.     (symbol_table::push_context): Ditto.
  4460.  
  4461.     * src/tree.cc (tree_function::eval): If call_depth is > 1, push
  4462.     symbol table context and add unwind protect to pop it on exit or
  4463.     error.
  4464.     (pop_symbol_table_context): New function for unwind protect.
  4465.  
  4466.     * configure.in: Use AC_HAVE_HEADERS(unistd.h) instead of
  4467.     AC_UNISTD_H.
  4468.  
  4469.     * src/lex.l, src/f-quad.cc, src/f-rand.cc, src/f-lpsolve.cc,
  4470.     src/f-fsqp.cc, src/f-fsolve.cc, src/f-det.cc, src/f-dassl.cc,
  4471.     src/f-colloc.cc, src/utils.cc, src/variables.cc, src/tree.cc,
  4472.     src/tree-const.cc, src/tc-extras.cc, src/sysdep.cc, src/symtab.cc,
  4473.     src/octave-hist.cc, src/pr-output.cc, src/input.cc,
  4474.     src/g-builtins.cc, src/f-det.cc, src/f-inv.cc, src/file-io.cc:
  4475.     Convert most calls to message() to calls to warning() or error()
  4476.     instead.
  4477.  
  4478.     * src/f-npsol.cc (npsol): Don't try to create the linear
  4479.     constraint object before checking array sizes.
  4480.  
  4481. Fri Nov 12 04:36:12 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4482.  
  4483.     * src/tc-inlines.cc (is_one_zero): New function.
  4484.     * src/tc-assign.cc: Everywhere we check for is_zero_one, also
  4485.     check for is_one_zero.  Some people write ranges that go in
  4486.     decreasing order...
  4487.     * src/tc-index.cc: Likewise.
  4488.  
  4489.     * src/tc-inlines (index_check (Range&, int&, char*)): Eliminate
  4490.     second arg -- there is no need to return the max value of the
  4491.     range.  Correctly compute and check the minimum value.
  4492.     * src/tc-index.cc: Change all callers, and check the max value
  4493.     there.
  4494.     * src/tc-assign.cc: Likewise.
  4495.  
  4496.     * src/tc-assign.cc (do_vector_assign): Handle assignment of empty
  4497.     matrix for int, idx_vector, and Range cases.
  4498.     (do_matrix_assign): Likewise, for cases when one of the indices is
  4499.     a colon and the other is an int, idx_vector, or Range.
  4500.  
  4501.     * liboctave/Range.h (Range): Rename private data members rng_foo
  4502.     instead of just _foo.
  4503.     * liboctave/Range.cc: Change names where used.
  4504.  
  4505.     * liboctave/Range.cc (max): Return correct value even when the
  4506.     elements in the range don't line up exactly with the limit.
  4507.     (min): Likewise.
  4508.     (sort): New function.
  4509.  
  4510.     * src/tc-assign.cc (delete_row (int)): New function.
  4511.     (delete_rows (idx_vector&)): Ditto.
  4512.     (delete_rows (Range&)): Ditto.
  4513.     (delete_column (int)): New function.
  4514.     (delete_columns (idx_vector&)): Ditto.
  4515.     (delete_columns (Range&)): Ditto.
  4516.  
  4517.     * src/tree-const.h (is_empty): Don't try checking rows and columns
  4518.     if type is magic_colon or unknown.  Return false instead.
  4519.     (is_zero_by_zero): New function.
  4520.  
  4521.     * src/idx-vector.cc (sort): New function.
  4522.     (intcmp): New static function, for sorting.
  4523.  
  4524. Thu Nov 11 02:31:13 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4525.  
  4526.     * scripts/menu.m: Update to use new va_start() and va_arg()
  4527.     functions.
  4528.  
  4529.     * src/g-builtins.cc (builtin_va_arg): Rename from
  4530.     builtin_get_next_arg.
  4531.     (builtin_va_start): New function.
  4532.     * src/builtins.cc (builtin_general_functions): Fix up list.
  4533.  
  4534.     * src/tree.cc (tree_function::va_arg): Rename from get_next_arg.
  4535.     (tree_function::va_start): New function.
  4536.  
  4537.     * src/tree.h (tree_function::num_named_args): New data member.
  4538.     * src/tree.cc (tree_function::define_param_list): Set it.
  4539.     (tree_function::eval): Unwind-protect it.
  4540.  
  4541. Wed Nov 10 03:37:44 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4542.  
  4543.     * src/tree.cc (tree_identifier::assign): Also check to make sure
  4544.     that the symbol record is defined since symbol_record::is_variable
  4545.     may return true even if the record is undefined.
  4546.     * src/variables.cc (link_to_global_variable): Don't try to copy a
  4547.     NULL_TREE_CONST.
  4548.  
  4549.     * src/tree-const.cc (tree_constant_rep::matrix_value): If the
  4550.     current value is a scalar, return 1x1 matrix.
  4551.     * src/tc-assign.cc (tree_constant_rep::check_vector_assign):
  4552.     Handle case of zero size LHS.
  4553.     Clean up formatting of some error messages.
  4554.  
  4555.     * src/lex.l ({EL}): Recognize ... when not at end of line.
  4556.     * src/octave.cc (curr_function): New global variable.
  4557.     * src/g-buitlins.cc (builtin_get_next_arg): New function.
  4558.     * src/builtins.cc (builtin_general_functions): Add it to the list.
  4559.     * src/parse.y (param_list1): Handle ... at end of parameter list.
  4560.     Abort parse on error.
  4561.     (ELLIPSIS): New token, for variable argument lists.
  4562.     * src/tree.h (tree_function): Add varargs_ok, args_passed,
  4563.     num_args_passed, and curr_arg_number data members to handle
  4564.     variable argument lists.
  4565.     (tree_parameter_list::marked_for_varargs): New data member.
  4566.     * src/tree.cc (tree_function::takes_varargs): New function.
  4567.     (tree_function::get_next_arg): New function.
  4568.     (tree_parameter_list::mark_varargs): New function.
  4569.     (tree_parameter_list::takes_varargs): New function.
  4570.     (tree_function::eval): Set curr_function, args_passed, and
  4571.     num_args_passed for use by get_next_arg.
  4572.  
  4573. Mon Nov  8 14:22:34 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4574.  
  4575.     * Version 0.79 released.
  4576.  
  4577.     * src/builtins.cc (builtin_text_functions):  Correct usage message
  4578.     for who.
  4579.  
  4580.     * scripts/dgram.m: New function, from R. Bruce Tenison
  4581.     (btenison@eng.auburn.edu).
  4582.     * scripts/dlqe.m: Ditto.
  4583.     * scripts/dlqr.m: Ditto.
  4584.     * scripts/c2d.m: Ditto.
  4585.  
  4586.     * src/tree.cc (tree_identifier::name): Make it const.
  4587.     (tree_builtin::name): Ditto.
  4588.     (tree_parameter_list::name): Ditto.
  4589.     (tree_word_list::name): Ditto.
  4590.  
  4591.     * src/symtab.cc (symbol_table::save): Delete list of names after
  4592.     saving.
  4593.  
  4594.     * src/symtab.h (symbol_table): Move #defines outside of class
  4595.     declaration.
  4596.  
  4597. Sun Nov  7 07:03:12 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4598.  
  4599.     * Makeconf.in (CXX): Don't set from C++.  Do set from @CXX@, which
  4600.     is determined by configure.  Don't set C++FLAGS.
  4601.  
  4602.     * src/tree.cc: (tree_function::eval (int, int)): Simply call
  4603.     eval (tree_constant *, int, int, int) with nargin = 1 and args =
  4604.     NULL_TREE_CONST instead of duplicating most of that function in place.
  4605.  
  4606.     * src/parse.y (func_def2): Reset id_name after renaming identifier.
  4607.     Clear id_name from top level symbol table before defining identifier.
  4608.  
  4609. Sat Nov  6 04:38:57 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4610.  
  4611.     * configure.in: When checking for g++, set CXX, not GXX.
  4612.  
  4613.     Merge min changes from Bruce Tenison (btenison@eng.auburn.edu) and
  4614.     make the corresponding changes for max.
  4615.  
  4616.         * src/tc-extras.cc (min (ComplexMatrix&, ComplexMatrix&)): New
  4617.     function.
  4618.     (max (ComplexMatrix&, ComplexMatrix&)): Ditto.
  4619.     (column_min): Handle complex args and two return values.
  4620.     (column_max): Likewise.
  4621.  
  4622.         * liboctave/Matrix.cc (row_min_loc): New function.
  4623.     (row_max_loc): New function.
  4624.     (column_min_loc): Ditto.
  4625.     (column_max_loc): Ditto.
  4626.  
  4627. Fri Nov  5 03:12:55 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4628.  
  4629.     * Version 0.78.
  4630.  
  4631.     * src/octave.h (clean_up_and_exit): Change form of declaration for
  4632.     GCC 2.5.x and beyond.
  4633.  
  4634.     * src/tree.cc (tree_identifier::eval): Correctly handle printing
  4635.     of identifier tags and conversion to assignment to `ans'.
  4636.     * src/parse.y (maybe_convert_to_ans_assign): Simplify.
  4637.     For identifiers, defer decision about making an ans assignment
  4638.     until evaluation time since identifiers can be undefined at parse
  4639.     time, and we can't tell what to do until we know what the def is.
  4640.     * src/tree.cc (tree_identifier::mark_for_possible_ans_assgin): New
  4641.     function.
  4642.     * src/tree.cc (tree_index_expression::mark_for_possible_ans_assign):
  4643.     New function.
  4644.     * src/tree.h (tree_identifier): Add new private data,
  4645.     maybe_do_ans_assign.
  4646.  
  4647.     * src/t-builtins.cc (builtin_who): Major overhaul.  Support long
  4648.     listings.
  4649.     (print_symbol_info_line): New function.
  4650.     (print_long_listing): Ditto.
  4651.     (maybe_list): Ditto.
  4652.  
  4653.     * src/user-prefs.cc (sv_editor): New function for builtin variable
  4654.     EDITOR.
  4655.     * src/octave-hist.cc (do_edit_history): Use user_pref.editor, not
  4656.     just the EDITOR environment variable.
  4657.  
  4658.     * src/user-prefs.cc (ignore_function_time_stamp): New function for
  4659.     new builtin variable ignore_function_time_stamp.
  4660.     * src/variables.cc (symbol_out_of_date): Use value of new
  4661.     user_pref.ignore_function_time_stamp to decide whether to check to
  4662.     see if a file has changed.
  4663.     * src/tree.h (tree_function): Add new private data, system_m_file.
  4664.  
  4665.     * src/builtins.cc (string_variables): Add EDITOR and
  4666.     ignore_function_time_stamp EDITOR to the list.
  4667.     (bultin_general_functions): Add is_global to the list.
  4668.  
  4669.     * src/t-builtins.cc (builtin_clear): Make it work with new
  4670.     variable scoping rules.
  4671.     (builtin_document): Likewise, using new document_symbol()
  4672.     function.
  4673.     (builtin_save): Likewise.  Allow regular expression arguments.
  4674.     Don't save builtin variables that are read-only.
  4675.  
  4676.     * src/utils.cc (octave_home): Don't declare static.
  4677.     (octave_lib_dir): Likewise.
  4678.     (octave_info_dir): Likewise.
  4679.     (default_editor): New function.
  4680.  
  4681.     * src/tree.cc (tree_builtin::def): Delete function.
  4682.     (tree_identifier::def): Likewise.
  4683.     (tree_identifier::symrec): Likewise.
  4684.  
  4685.     * src/tree.h (tree_builtin): Store name of function, not pointer
  4686.     to symbol record.
  4687.  
  4688.     * src/user-prefs.cc (warn_assign_as_truth_value): Lookup
  4689.     "warn_assign_as_truth_value", not "user_pref.warn...".
  4690.  
  4691.     * src/tree-base.h (def): Delete unused virtual function.
  4692.     (is_prefix_expression): New virtual function.
  4693.     (mark_for_possible_ans_assign): Likewise.
  4694.     (is_system_m_file): Likewise.
  4695.     (stash_m_file_name): No longer needs to be virtual.
  4696.     (stash_m_file_time): Likewise.
  4697.  
  4698.     * src/octave.cc (octave_Complex_error_handler): Define, to keep
  4699.     errors in the Complex class from aborting Octave.  This is only a
  4700.     temporary fix, I hope.
  4701.     (main): Install it.
  4702.     (initialize_globals): Get default editor.
  4703.     (main): Call initialize_symbol_tables to do that instead of
  4704.     creating them directly in main.
  4705.  
  4706.     * src/variables.cc (document_symbol): New function.
  4707.     (initialize_symbol_tables): Likewise.
  4708.     (install_builtin_mapper_function): Likewise.
  4709.     (install_builtin_text_function): Likewise.
  4710.     (install_builtin_general_function): Likewise.
  4711.     (install_builtin_variable): Likewise.
  4712.     (install_builtin_variable_as_function): Likewise.
  4713.     (bind_nargin_and_nargout): Likewise.
  4714.     (bind_builtin_variable): Likewise.
  4715.     (link_to_global_variable): Likewise.
  4716.     (link_to_builtin_variable): Likewise.
  4717.     (link_to_builtin_or_function): Likewise.
  4718.     (force_link_to_function): Likewise.
  4719.     (is_globally_visible): Likewise.
  4720.     (is_builtin_variable): Likewise.
  4721.  
  4722.     * src/tree.cc (print_as_scalar): Avoid trying to print row vectors
  4723.     on one line.
  4724.  
  4725.     * src/builtins.cc (install_buitlins): Simplify installation of
  4726.     builtin functions using new install_builtin_*_function functions.
  4727.     Ditto for using bind_builtin_variable for installing variables.
  4728.  
  4729.     * src/tree.h (tree_global_command): New class.
  4730.     * src/tree.cc (tree_global_command::*): Implement new class to
  4731.     make global command executable.
  4732.     * src/parse.y (global_decl): Make global an executable statement.
  4733.  
  4734.     * src/parse.y (func_def2): Rework to match new way of handling
  4735.     global variables and function names in the symbol table.
  4736.     Mark functions as `system' or not.
  4737.     Don't use id_to_define.
  4738.     If m-file and function names disagree, rename function to match
  4739.     m-file name.
  4740.     * src/tree.cc (tree_identifier::rename): New function.
  4741.     * src/parse.cc, src/parse.h (id_to_define): Delete unused global
  4742.     variable.
  4743.  
  4744.     * src/varables.cc (builtin_string_variable): Fix to match new
  4745.     rules for global and builtin variables.
  4746.     (builtin_real_scalar_variable): Likewise.
  4747.  
  4748.     * src/tree.cc (tree_identifier::assign): Make it work with new
  4749.     rules for global variables.
  4750.     (tree_identifier::parse_m_file): Likewise.
  4751.     (tree_identifier::do_lookup): Likewise.
  4752.  
  4753.     * src/tree.cc (mark_as_system_m_file): New function.
  4754.     (is_system_m_file): Ditto.
  4755.  
  4756.     * src/tree.cc (clear_symbol_table): New function, to be used in an
  4757.     unwined_protect element for clearing function symbol tables on
  4758.     exit or error.
  4759.  
  4760.     * src/tree.cc (tree_function::eval): Simplify using
  4761.     bind_nargin_and_nargout.
  4762.     Clear symbol table on exit or error with unwind_protect.
  4763.  
  4764.     * src/tree.cc (tree_prefix_expression::is_prefix_expression): New
  4765.     function.
  4766.  
  4767.     * src/g-builtins.cc (builtin_is_global): New function.
  4768.  
  4769.     * src/lex.l (lookup_identifier): Now that global variable binding
  4770.     has been fixed, only look for symbols in the current symbol table.
  4771.     Really.  I mean it this time.
  4772.  
  4773.     * src/symtab.cc: Complete overhaul, to make global variables work
  4774.     a bit more reasonably.
  4775.  
  4776. Mon Nov  1 15:03:39 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4777.  
  4778.     * src/Matrix.h (DiagMatrix::rows): Return nr, not len.
  4779.     (ComplexDiagMatrix::rows): Ditto.
  4780.     * src/Matrix.h (DiagMatrix::cols): Return nc, not len.
  4781.     (ComplexDiagMatrix::cols): Ditto.
  4782.     (DiagMatrix::columns): Ditto.
  4783.     (ComplexDiagMatrix::columns): Ditto.
  4784.  
  4785.     * liboctave/DiagMatrix.cc (DiagMatrix::row): Make it work for
  4786.     square case.
  4787.     (DiagMatrix::column): Likewise.
  4788.     (ComplexDiagMatrix::row): Likewise.
  4789.     (ComplexDiagMatrix::column): Likewise.
  4790.  
  4791.     * liboctave/DiagMatrix.cc (DiagMatrix::operator <<): Print spaces
  4792.     between elements.
  4793.     (ComplexDiagMatrix::operator <<): Likewise.
  4794.  
  4795. Fri Oct 29 15:32:12 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4796.  
  4797.     * Version 0.77.1.
  4798.  
  4799.     * src/symtab.cc (symbol_record::alias): Don't copy formal_param or
  4800.     forced_global attribute.
  4801.  
  4802.     * src/symtabl.cc (symbol_table::bind_globals): Don't bind to
  4803.     global symbol unless it has forced_global attribute set.
  4804.  
  4805.     * src/tree.cc (print_as_scalar): New function.
  4806.     (tree_identifier::eval): Use it.
  4807.     (tree_simple_assignment_expression::eval): Likewise.
  4808.     (tree_multi_assignment_expression::eval): Likewise.
  4809.  
  4810.     * src/lex.l (is_keyword): Give better error message for attempts
  4811.     to define nested functions.
  4812.  
  4813.     * src/parse.y (global_decl): Return a command_list to execute
  4814.     (this makes assignments in global declarations executable).
  4815.  
  4816.     * src/tree.cc (tree_for_command): Handle line and column info in
  4817.     constructors and for error messages.
  4818.     (tree_while_command): Ditto.
  4819.     (tree_if_command): Ditto.
  4820.     (tree_break_command): Ditto.
  4821.     (tree_continue_command): Ditto.
  4822.     (tree_return_command): Ditto.
  4823.     (*::eval_error): Only print messages if error_state > 0.
  4824.     (various): Only need to check that error_state is non-zero before
  4825.     calling eval_error().
  4826.  
  4827.     * src/parse.y: Handle line and column information for FOR WHILE IF
  4828.     ELSEIF ELSE BREAK CONTINUE and FUNC_RET tokens.
  4829.     * src/lex.l: Likewise.
  4830.  
  4831.     * src/octave.cc (parse_and_execute): Reset parser before starting
  4832.     new parse.
  4833.  
  4834.     * src/tree-plot.cc (various): Check error_state in many more
  4835.     places, and issue more meaningful error messages.
  4836.  
  4837.     * src/tree-const.cc (maybe_resize): Don't call
  4838.     jump_to_top_level() on errors.
  4839.     (tree_constant_rep (Range)): Likewise.
  4840.  
  4841.     * src/g-builtins.cc (builtin_error): Use error(), not
  4842.     print_if_string() to print error messages.
  4843.     * src/tree-const.cc (print_if_string): Delete unused function.
  4844.  
  4845.     * src/tc-assign.cc (various): Check error_state after calls to
  4846.     maybe_resize().
  4847.  
  4848.     * src/tc-index.cc (various): Always check the state of idx_vectors
  4849.     after trying to create them.
  4850.     * src/tc-assign.cc (various): Likewise.
  4851.  
  4852.     * src/idx-vector.cc: Use 0, not NULL.
  4853.     Don't include stdlib.h.
  4854.     (initialized): New data member, set nonzero if the idx_vector has
  4855.     been properly initialized.
  4856.     Never call jump_to_top_level () if initialization fails.
  4857.     Add operator void *(), so we can test the state of an idx_vector
  4858.     with `if (vector)'.
  4859.  
  4860.     * src/pager.cc: Explicitly initialize pager_buf to NULL.
  4861.  
  4862.     * src/tree-base.h: Move includes ahead of other definitions.
  4863.  
  4864.     * liboctave/NLEqn.cc (NLEqn::NLEqn (const Vector&, const NLFunc)):
  4865.     Initialize n from xvec, not x.
  4866.  
  4867. Mon Oct 25 18:01:12 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4868.  
  4869.     * src/user-prefs.cc (sv_info_file): New function.
  4870.     * src/user-prefs.h (user_pref): Add info_file to the list.
  4871.     * src/t-builtins.cc (try_info): Use it instead of
  4872.     DEFAULT_INFO_FILE.
  4873.  
  4874.     * src/utils.cc (default_info_file): New function.
  4875.     (octave_info_dir): Likewise.
  4876.  
  4877.     * src/defaults.h.in (DEFAULT_INFO_FILE): Delete unnecessary
  4878.     definition since we figure out what it should be in utils.cc now.
  4879.     * src/Makefile.in (defaults.h): Don't substitute DEFAULT_INFO_FILE.
  4880.     * src/Makeconf.in (DEFAULT_INFO_FILE): Delete definition.
  4881.  
  4882.     * src/octave.cc (info_file): New global variable.
  4883.     (initialize_globals): Call default_info_file () to initialize it.
  4884.     (--info-file): New command line option.
  4885.  
  4886.     * src/builtins.cc (string_variables): Add INFO_FILE to the list.
  4887.     (install_builtins): Define it.
  4888.  
  4889.     * info/filesys.c (compress_suffixes): Choose gunzip for .gz files.
  4890.  
  4891. Sat Oct 23 17:46:09 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4892.  
  4893.     * Version 0.77 released.
  4894.  
  4895.     * src/Makefile.in (INCFLAGS): Don't include info or dld
  4896.     directories.
  4897.     * dynamic-ld.cc: Include dld/dld.h, not just dld.h.
  4898.     * t-buitlins.cc: Include info/info.h, info/dribble.h, and
  4899.     info/terminal.h, not just info.h, dribble.h, and terminal.h.
  4900.  
  4901.     * src/t-builtins.cc (builtin_help): New option, -i, for invoking
  4902.     info browser.  If -i is not given, just do what we used to do, but
  4903.     point to help -i as a way to get additional information.
  4904.  
  4905.     * builtins.cc (print_usage): New function.
  4906.  
  4907.     * g-builtins.cc (all builtins): Call print_usage to get usage message.
  4908.     * t-builtins.cc (all builtins): Likewise.
  4909.  
  4910. Fri Oct 22 15:56:16 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4911.  
  4912.     * Cholesky changes from R. Bruce Tenison (btenison@eng.auburn.edu):
  4913.  
  4914.     * src/f-chol.cc, src/f-chol.h: New files for the Cholesky
  4915.     Factorization.
  4916.     * src/Makefile.in (SOURCES, OBJECTS, DLD_OBJECTS): Add to lists.
  4917.     * src/g-builtins.cc (builtin_chol): New function.
  4918.     * src/g-builtins.h: Declare it.
  4919.  
  4920.     * liboctave/Matrix-ext.cc (CHOL, ComplexCHOL): New classes.
  4921.  
  4922.     * libcruft/lapack: dpotrf.f, zpotrf.f, dpotf2.f, zpotf2.f: New
  4923.     files.
  4924.  
  4925.     * libcruft/blas: dsyrk.f, zherk.f: New files.
  4926.  
  4927. Fri Oct 22 14:04:16 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4928.  
  4929.     * src/g-builtins.cc (builtin_schur): Fourth arg for DLD_BUILTIN is
  4930.     schur, not hess.
  4931.  
  4932.     * scripts/dare.m: Correct usage of fprintf.
  4933.  
  4934.     * src/utils.cc (raw_mode): Only complain about stdin not a tty if
  4935.     interactive or forced interactive.
  4936.  
  4937. Thu Oct 21 17:00:57 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  4938.  
  4939.     * src/builtins.cc (install_builtins): Try harder to make
  4940.     initialization of NaN work.  Make note about possible fixes if it
  4941.     still doesn't work.
  4942.  
  4943.     * src/utils.cc (raw_mode): [HAVE_TERMIOS_H] and [HAVE_TERMIO_H]
  4944.     Don't set TAB3 since it doesn't seem necessary and some systems
  4945.     don't have it by this name.
  4946.     [HAVE_SGTTY_H] To be consistent, don't set XTABS here either.
  4947.  
  4948.     * src/error.c (error): Call flush_output_to_pager before printing
  4949.     error message.
  4950.     (panic): Likewise, before aborting.
  4951.  
  4952.     * src/symtab.cc (symbol_record::undefine): Delete unused function.
  4953.     (symbol_table::undefine): Likewise.
  4954.  
  4955.     * src/symtab.cc (clear): Never delete symbol records from the
  4956.     table.  Only delete the definitions.  This makes clear and
  4957.     undefine equivalent, so we don't need them
  4958.     * src/tree.cc (tree_function::eval): Call symbol_table::clear, not
  4959.     symbol_table::undefine.
  4960.  
  4961.     * src/t-builtins.cc (builtin_clear): Only clear global symbols if
  4962.     we are at the top level.
  4963.     * src/parse.y (CLEAR): Delete token.
  4964.     (word_list_command): Remove code to handle CLEAR as special case.
  4965.     (expect): Only 19 now.
  4966.     * src/lex.l (handle_identifier): Remove special code for clear.
  4967.     It's ok to use it in a function body now.
  4968.  
  4969.     * src/t-builtins.cc: Include extern "C" declarations for Info stuff.
  4970.     (builtin_help): If given an argument, try to get help directly
  4971.     from info file first.  If that fails, do as before.
  4972.     (help_syms_list): New function:
  4973.     (simple_help): New function.
  4974.     (try_info): New function.
  4975.     (help_from_list): New function.
  4976.  
  4977.     * src/defaults.h.in (DEFAULT_INFO_FILE): Define new macro.
  4978.     * Makeconf.in: Set value of DEFAULT_INFO_FILE.
  4979.     * Makeconf.in (INSTALL_PROGRAM): Add definition.
  4980.     * Makefile.in (SUBDIRS): Add info directory.
  4981.     (info): New target.
  4982.     * configure.in: Add autoconf macros to handle info configuration.
  4983.  
  4984.     * info/Makefile.in: Major changes to make it work with Octave's
  4985.     Makeconf file, etc.  The default action is now to build a
  4986.     libinfo.a file.
  4987.  
  4988.     * info/error.c: New file.  Move error functions here from info.c.
  4989.  
  4990.     * info/signals.c (clear_info_signal_handler): New function, useful
  4991.     if info is used directly in another program.
  4992.  
  4993.     * info/termdep.h: Handle termios too.
  4994.     * info/terminal.c (terminal_prep_terminal): Handle termios.
  4995.     * (terminal_unprep_terminal): Likewise
  4996.  
  4997.     * info/session.c (initialize_info_session): Add arg to make
  4998.     clearing the screen conditional.  Useful if we want to call
  4999.     index_entry_exists() first before displaying anything.
  5000.     Change all callers.
  5001.  
  5002.     * info/session.c (finish_info_session): New function.
  5003.  
  5004.     * info/session.c (dispatch_error): Change message to include info
  5005.     about how to get help and how to quit.
  5006.  
  5007.     * info/info.c (index_search_p): New flag.
  5008.     (--index-search): New option, like apropos, but search the indices
  5009.     and display the first node found.
  5010.  
  5011.     * info/indices.c (do_info_index_search): New function, modified
  5012.     from info_index_search to allow searching the index for a string
  5013.     without prompting for it.
  5014.     (info_index_search): Just call do_info_index_search.
  5015.     (index_entry_exists): New function, to allow us to find out if
  5016.     there is an index entry for a given string without actually
  5017.     displaying anything.
  5018.  
  5019.     * info: New directory, containing source for GNU info browser.
  5020.  
  5021. Tue Oct 19 00:14:33 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  5022.  
  5023.     * src/octave-hist.cc (input_from_tmp_history_file): New global flag.
  5024.     (do_edit_history): Protect and set it.
  5025.     (do_run_history): Likewise.
  5026.     * src/parse.y (func_def2): Use it to see that input is coming from
  5027.     a temporary file.  This means that we shouldn't exit when we're
  5028.     done reading it, and we should treat it just as if the input were
  5029.     coming from the keyboard.
  5030.  
  5031.     * variables.cc (force_global): Force aliasing so it will happen
  5032.     even if the symbol record is undefined.
  5033.  
  5034.     * src/lex.l (lookup_identifier): Simplify
  5035.  
  5036.     * src/lex.l (reset_parser): Reset error_state here.
  5037.     * src/octave.cc (main): Not here.
  5038.  
  5039. Mon Oct 18 14:27:02 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  5040.  
  5041.     * src/tree-const.cc: Delete constructor for tree_constant from
  5042.     String.
  5043.  
  5044.     * In src: tree.h, mappers.h, unwind-prot.h, parse.h, file-io.h,
  5045.     arith-ops.h, tree-base.h, tree-const.h, g-builtins.h,
  5046.     idx-vector.h, builtins.h, dynamic-ld.h, xdiv.h, xpow.h,
  5047.     pr-output.h, input.h, symtab.h, utils.h: Avoid including files
  5048.     unnecessarily.
  5049.  
  5050.     * In src: tc-inlines.cc, mappers.cc, variables.cc, arith-ops.cc,
  5051.     tree.cc, tree-const.cc, g-builtins.cc, file-io.cc, idx-vector.cc,
  5052.     tc-assign.cc, tc-index.cc, builtins.cc, dynamic-ld.cc, xdiv.cc,
  5053.     xpow.cc, pr-output.cc, tc-extras.cc, input.cc, symtab.cc,
  5054.     utils.cc: Sprinkle liberally with const.
  5055.  
  5056.     * In src: f-syl.cc, f-svd.cc, f-schur.cc, f-rand.cc, f-qzval.cc,
  5057.     f-quad.cc, f-qr.cc, f-qpsol.cc, f-npsol.cc, f-lu.cc,
  5058.     f-lsode.cc, f-lpsolve.cc, f-inv.cc, f-ifft.cc, f-hess.cc,
  5059.     f-givens.cc, f-fsqp.cc, f-fsolve.cc, f-fft.cc, f-expm.cc,
  5060.     f-eig.cc, f-det.cc, f-dassl.cc, f-colloc.cc, f-balance.cc:
  5061.     Add const qualifier to tree-constant arg.
  5062.  
  5063. Sat Oct 16 12:22:24 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  5064.  
  5065.     * src/tree-const.h, src/tree-const.cc: Add const qualifier to
  5066.     constructor arguments passed by reference.
  5067.     Pass Complex arguments by const reference instead of by value.
  5068.  
  5069.     * liboctave/Matrix.h, liboctave/Matrix.cc, liboctave/ColVector.cc,
  5070.     liboctave/RowVector.cc liboctave/DiagMatrix.cc: Pass Complex
  5071.     arguments by const reference instead of by value.
  5072.  
  5073. Wed Oct 13 14:13:29 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  5074.  
  5075.     * src/utils.cc (decode_prompt_string): ctime returns time_t, which
  5076.     might not be a long.
  5077.  
  5078.     * src/variables.cc (identifier_exists):    Only return non-zero if
  5079.     the name has a definition.
  5080.  
  5081.     * src/f-npsol.cc (npsol): Call error(), not message(), to print
  5082.     error messages.
  5083.     (linear_constraints_ok): Likewise.
  5084.     (nonlinear_constraints_ok): Likewise.
  5085.  
  5086.     * src/f-qpsol.cc (qpsol): Don't try to create the linear
  5087.     constraint object before checking array sizes.  Wouldn't exception
  5088.     handling be nice?
  5089.     Call error(), not message(), to print error messages.
  5090.     Check to ensure that the bounds on linear constraints are
  5091.     vectors.
  5092.  
  5093.     * src/lex.l (lookup_identifier): Don't bind global variables
  5094.     immediately in loops or conditionals, even at the top level.
  5095.  
  5096. Sun Oct 10 8:48:00 1993  John Eaton  (jwe@schoch.che.utexas.edu)
  5097.  
  5098.     * README.doc: New file.
  5099.     * Makefile.in (doc-dist): New target.
  5100.     * doc/Makefile.in (FORMATTED): New macro.
  5101.     (doc-dist): New target.
  5102.  
  5103.     * src/tree.cc (tree_identifier::eval): Don't print anything if an
  5104.     error is encountered.
  5105.     (tree_simple_assignment_expression::eval): Likewise.
  5106.  
  5107.     * src/tc-assign.cc (do_matrix_assignment): Handle resizing
  5108.     correctly when indices are (:,range), (:,matrix), (range,:), or
  5109.     (matrix,:) and the lhs is empty or undefined.
  5110.  
  5111. Tue Oct  5 04:02:37 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5112.  
  5113.     * Version 0.76 released.
  5114.  
  5115.     * src/octave.cc (main):    Print usage message if we are given more
  5116.     than one extra argument on the command line.
  5117.     Delay printing startup message until just before setting the toplevel
  5118.     jump context.
  5119.  
  5120.     * src/lex.h (DO_COMMA_INSERT_CHECK): Delete unused macro.
  5121.  
  5122.     * src/lex.l (handle_identifier): New function.
  5123.     ({IDENT}/{S}*=, {IDENT}{S}*): Use it instead of duplicating code.
  5124.     (do_comma_insert_check): Use yyunput instad of returning original
  5125.     character count.
  5126.     Call directly instead of using DO_COMMA_INSERT_CHECK macro.
  5127.  
  5128. Mon Oct  4 08:06:10 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5129.  
  5130.     * Version 0.75.4.
  5131.  
  5132.     * src/tree-const.cc (tree_constant_rep::eval ()): Avoid calling
  5133.     rows() and columns() for things like magic_colon.
  5134.  
  5135. Sun Oct  3 19:39:33 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5136.  
  5137.     Changes to add line and column info to run-time error messages:
  5138.  
  5139.     * src/tree.cc (tree_identifier, tree_prefix_expression,
  5140.     tree_postfix_expression, tree_simple_assignment_expression,
  5141.     tree_multi_assignment_expression, tree_colon_expression,
  5142.     tree_index_expression): Modify constructors to allow line and
  5143.     column information to be stored.
  5144.     (abort_on_undefined): Delete (now) unnecessary static variable.
  5145.     (all eval() functions): If error_state, return immediately.
  5146.     (tree_matrix::eval ()): Call error and return tree_constant()
  5147.     instead of jumping to top level on error.
  5148.     (tree_identifier::parse_m_file ()): When starting to read an
  5149.     M-file, initialize current_input_column to 1, not 0.
  5150.     (tree_identifier::eval_undefined_error ()): Improve error message
  5151.     with line and column info if it is available.  Don't abort to top
  5152.     level on errors.
  5153.     (tree_function::traceback_error ()): New function.
  5154.     (tree_function::eval ()): Don't jump to top level on errors.
  5155.     Call traceback_error if there is an error evaluating the command
  5156.     list.
  5157.  
  5158.     * src/tree.cc (tree_prefix_expression::eval_error ()): New function.
  5159.     (tree_postfix_expression::eval_error ()): Ditto.
  5160.     (tree_unary_expression::eval_error ()): Ditto.
  5161.     (tree_binary_expression::eval_error ()): Ditto.
  5162.     (tree_simple_assignment_expression::eval_error ()): Ditto.
  5163.     (tree_multi_assignment_expression::eval_error ()): Ditto.
  5164.     (tree_colon_expression::eval_error ()): Ditto.
  5165.     (tree_index_expression::eval_error ()): Ditto.
  5166.  
  5167.     * src/tree.cc (tree_function::stash_function_name ()): New function.
  5168.     * src/parse.y (FCN): Use it.
  5169.  
  5170.     * src/lex.l: Return line and column info for many (but not all)
  5171.     tokens.
  5172.  
  5173.     * src/parse.y: Handle token values with the token class defined in
  5174.     token.cc.
  5175.     (check_end ()): New function.
  5176.     (end_error ()): Improve error messages by including line and
  5177.     column info.
  5178.  
  5179.     * src/arith-ops.cc (lots of functions): Don't jump to top level on
  5180.     errors.
  5181.     * src/tree.cc (tree_unary_expression::eval ()),
  5182.     tree_binary_expression::eval ()): Handle error condition here.
  5183.  
  5184.     * src/gripes.cc (gripe_nonconformant): Add additional form of this
  5185.     function to allow message to include dimensions.  Change most
  5186.     callers to use new form
  5187.  
  5188.     * src/octave.cc: Initialize column counter to 1, not 0.
  5189.     (main): Reset error_state before evaluating each top level
  5190.     command.
  5191.  
  5192.     * src/tree-plot.cc (tree_plot_command::eval ()): If error_state,
  5193.     return immediately.
  5194.  
  5195.     * src/tree-const.cc (do_binary_op ()): Return tree_constant() instead
  5196.     of jumping to top level on errors.
  5197.     (do_unary_op): Likewise.
  5198.     (tree_constant_rep::eval ()): If error_state, return immediately.
  5199.     Convert 1x1 matrices to scalars.
  5200.  
  5201.     * src/tc-assign.cc (tree_constant_rep::do_scalar_assignment ()):
  5202.     Don't jump to top level on error.
  5203.     If there is an error while attempting to convert an undefined
  5204.     variable to a matrix, don't suddenly create an empty matrix.
  5205.     (tree_constant_rep::fortran_style_matrix_assignment ()): Check
  5206.     return value of range_max_check() and don't jumpt to top level on
  5207.     errors.
  5208.     (tree_constant_rep::vector_assignment ()): Check return value of
  5209.     index_check and don't jump to top level on errors.
  5210.     (tree_constant_rep::check_vector_assign ()): Don't jump to top
  5211.     level on errors.
  5212.     (tree_constant_rep::do_matrix_assignment ()): Check return value
  5213.     of index_check and don't jump to top level on errors.
  5214.  
  5215.     * src/tc-extras.cc (get_dimensions ()): Call error (sets error state)
  5216.     but don't jump to top level on errors.
  5217.     (fill_matrix): Return tree_constant() on error.
  5218.     (identity_matrix): Likewise.
  5219.  
  5220.     * src/error.cc (error_state): New global variable, initialize to zero.
  5221.     (error): Set it to one.
  5222.  
  5223.     * src/tc-index.cc (tree_constant_rep::valid_as_scalar_index ()):
  5224.     Don't declare unused variable retval.
  5225.     (tree_constant_rep::do_scalar_index ()): Return tree_constant()
  5226.     instead of jumping to top level on error.
  5227.     (tree_constant_rep::fortran_style_matrix_index): Don't jump to top
  5228.     level on indexing or range errors.
  5229.     (tree_constant_rep::do_vector_index ()): Likewise.
  5230.     (tree_constant_rep::do_matrix_index ()): Likewise.
  5231.  
  5232.     * src/tc-inlines (range_max_check): Return -1 instead of jumping
  5233.     to top level on error.
  5234.     (index_check): Likewise.
  5235.  
  5236.     * src/utils.cc (check_dimensions): Call error, not warning, and
  5237.     don't jump to top level.
  5238.  
  5239.     * src/tree-base.h (line_num, column_num): New data members for all
  5240.     tree classes.
  5241.     (line (), column ()): New virtual functions to access line and
  5242.     column info.
  5243.  
  5244.     * src/lex.l (enum end_tok_type, enum plot_tok_type): Delete
  5245.     declarations (now in token.h).
  5246.  
  5247.     * src/lex.h (YY_INPUT, YY_FATAL_ERROR, DO_COMMA_INSERT_CHECK,
  5248.     TOK_RETURN, BIN_OP_RETURN): Move macro definition here, from
  5249.     lex.l.  Rename RETURN TOK_RETURN.
  5250.  
  5251.     * src/token.cc, token.h: New files that define a class for tokens
  5252.     that includes line and column information.
  5253.  
  5254. Wed Sep 29 11:15:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5255.  
  5256.     * src/octave.cc: Use GNU getopt to handle option parsing.
  5257.     * src/getopt.h src/getopt.c src/getopt1.c: New files for GNU
  5258.     getopt.
  5259.     * src/Makefile.in: Add them to the appropriate lists.
  5260.  
  5261.     * src/utils.cc (raw_mode): Use the termios.h terminal driver
  5262.     interface if it is available.
  5263.     * configure.in: Check for termios.h
  5264.  
  5265.     * src/tree-plot.cc (tree_subplot_list::print (int, ostrstream&)):
  5266.     If the data to be plotted is a string but it doesn't name a file,
  5267.     try sending it to gnuplot directly.
  5268.  
  5269. Tue Sep 28 16:06:42 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5270.  
  5271.     * liboctave/QPSOL.cc (QPSOL::minimize (double&, int&, Vector&)):
  5272.     Correct dimensions of work arrays, based on QPSOL source.
  5273.     Pass ncon, which is max (1, nclin), not n, as the row dimension of
  5274.     clin.
  5275.  
  5276.     * src/f-npsol.cc (linear_constraints_ok): Improve warning for the
  5277.     case of constraints with zero dimensions.
  5278.     (nonlinear_constraints_ok): Likewise.
  5279.  
  5280. Mon Sep 27 01:20:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5281.  
  5282.     * Version 0.75.3.
  5283.  
  5284.     * Makefile.in (dist): Make file permissions for distribution rw.
  5285.     (binary-dist): Ditto.
  5286.     (local-dist): Ditto.
  5287.  
  5288. Sat Sep 25 15:29:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5289.  
  5290.     * src/pr-output.cc: Include stdio.h, for sprintf.
  5291.  
  5292.     * src/input.cc (octave_gets): Set octave_gets_line to NULL after
  5293.     freeing it.
  5294.  
  5295.     * Version 0.75.2.
  5296.  
  5297.     * liboctave/Matrix.cc (Matrix::operator * (const ColumnVector&):
  5298.     Correct dimension of return value.
  5299.     (ComplexMatrix::operator * (const ComplexColumnVector&)): Ditto.
  5300.  
  5301. Tue Sep 21 20:42:10 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5302.  
  5303.     * src/tree.cc (tree_identifier::assign (tree_constant&)):
  5304.     Correctly handle case of hiding a function with a variable when
  5305.     the variable has not been flagged as global.
  5306.     tree_identifier::assign (tree_constant&, tree_constant*, int)):
  5307.     Likewise.
  5308.  
  5309.     * src/variables.cc (force_global): When a variable is moved to the
  5310.     global symbol table, mark it as global.
  5311.  
  5312.     * src/symtab.cc (symbol_record::symbol_record ()): Initialize
  5313.     forced_global.
  5314.     (symbol_record::clear_visible ()): Reset forced_global to zero.
  5315.     (symbol_record::clear_all ()): Ditto.
  5316.     (symbol_record::mark_as_forced_global ()): New function.
  5317.     (symbol_record::is_forced_global ()): New function.
  5318.     (symbol_record::alias ()): Also copy forced_global attribute.
  5319.  
  5320.     * src/symtab.h (symbol_record::forced_global): New private data
  5321.     member, used to record when a variable has been explicitly
  5322.     declared global.
  5323.  
  5324.     * src/lex.l (lookup_identifier): Look in current scope first.
  5325.  
  5326. Mon Sep 20 03:15:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5327.  
  5328.     * src/parse.y, src/tree.cc, src/tree.h: Allow `for' command to
  5329.     assign to an index expression, not just an identifier.
  5330.  
  5331.     * src/t-builtins.cc (builtin_clear (int, char **)): Don't delete
  5332.     g_names twice.
  5333.  
  5334.     * src/symtab.cc    (symbol_table::list (int&)): Make sure count is
  5335.     initialized to zero.
  5336.     (symbol_table::var_list (int&)): Ditto.
  5337.     (symbol_table::fcn_list (int&)): Ditto.
  5338.  
  5339. Sat Sep 18 04:06:42 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5340.  
  5341.     * src/lex.l, src/parse.y, src/parse.h: Use new global variable
  5342.     past_plot_range to make gplot and gsplot smarter about
  5343.     distinguishing plot ranges and literal matrices.
  5344.  
  5345. Fri Sep 17 01:06:30 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5346.  
  5347.     * Version 0.75.1 released.
  5348.  
  5349.     * src/f-qzval.cc: Include <float.h> for DBL_EPSILON.
  5350.  
  5351.     * src/symtab.cc (symbol_record::save (ostream&, int)): Don't print
  5352.     a warning for ans being undefined.  Call warning to print the
  5353.     message, and change the text to make it clearer.
  5354.     (symbol_table::save (ostream&, int)): Don't crash if there aren't
  5355.     any symbols to save.
  5356.  
  5357. Thu Sep 16 00:21:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5358.  
  5359.     * src/t-builtins.cc (builtin_help): When trying harder to find
  5360.     help for M-files, only insert the symbol into the global symbol
  5361.     table if there really is an M-file of the given name in the path.
  5362.  
  5363. Wed Sep 15 02:08:27 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5364.  
  5365.     * Version 0.75.
  5366.  
  5367.     * src/Makefile.in (INCLUDES): Distribute defaults.h
  5368.     (%.d: %.cc): Don't fail if we can't determine dependencies.
  5369.     (DISTFILES): Include move-if-change.
  5370.  
  5371. Tue Sep 14 21:23:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5372.  
  5373.     * scripts/perror.m: Use err, not info for fsolve section.
  5374.  
  5375. Mon Sep 13 19:29:26 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5376.  
  5377.     * src/utils.cc (get_m_file_names): Call closedir(), not free(), to
  5378.     dispose of directory structure.
  5379.  
  5380. Sun Sep 12 19:07:36 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5381.  
  5382.     * src/tree-const.cc (tree_constant_rep::double_value): Rearrange
  5383.     to avoid warning about reaching end of non-void function.
  5384.     (tree_constant_rep::matrix_value): Ditto.
  5385.  
  5386.     * src/error.cc (panic): Declare volatile.
  5387.     * src/utils.cc (jump_to_top_level): Declare as `void volatile',
  5388.     not `volatile void'.
  5389.  
  5390.     * src/tree-const.cc (tree_constant_rep::complex_matrix_value):
  5391.     Make it work even if the internal representation is really a real
  5392.     or complex scalar or a real matrix.
  5393.     (tree_constant_rep::complex_scalar_value): Make it work even if
  5394.     the internal representation is really a real scalar.
  5395.  
  5396.     * src/f-syl.cc (syl): Delete ComplexMatrixLoad().
  5397.     Use complex_matrix_value(), not ComplexMatrixLoad().
  5398.  
  5399.     * src/tree-const.cc (vector_of_empties): Renamed from empty_tree,
  5400.     moved from f-syl.cc.
  5401.  
  5402.     * src/f-syl.cc (syl): Call vector_of_empties() instead of empty_tree().
  5403.     * src/f-qzval.cc (qzvalue): Ditto.
  5404.  
  5405.     * src/tree-const.h (tree_constant::is_empty): New inline function.
  5406.  
  5407.     * src/f-syl.cc (syl): Call is_empty instead of empty_arg.
  5408.     * src/f-qzval.cc (qzvalue): Ditto.
  5409.     * src/f-expm.cc (matrix_exp): Ditto.
  5410.  
  5411. Thu Sep  9 22:40:16 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5412.  
  5413.     * liboctave/Matrix.cc (Matrix::transpose): Make it work for empty
  5414.     matrices.
  5415.     (ComplexMatrix::transpose): Ditto.
  5416.  
  5417. Mon Sep  6 04:56:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5418.  
  5419.     * src/tree-plot.cc (tree_subplot_list::print):     If the plot data
  5420.     is a string and it names a file, plot the data in the file.
  5421.  
  5422.     * src/octave.cc (execute_startup_files): Try harder to avoid
  5423.     executing $HOME/.octaverc twice.
  5424.  
  5425.     * liboctave/DAE.cc (DAE::integrate (Vector&, Matrix&, Vector&)):
  5426.     Add missing parameter in call to integrate() if no critical points
  5427.     are specified.
  5428.  
  5429. Sat Sep  4 16:18:49 1993  John W. Eaton  (jwe@ward.che.utexas.edu)
  5430.  
  5431.     * src/octave.cc (execute_startup_files): Don't execute
  5432.     $HOME/.octaverc twice.
  5433.  
  5434. Mon Aug 30 11:25:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5435.  
  5436.     * src/t-builtins.cc (builtin_clear): Handle regular expressions.
  5437.  
  5438. Fri Aug 27 07:25:32 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5439.  
  5440.     * liboctave/RowVector.cc:
  5441.     (RowVector::operator * (const ColumnVector& a) const): Fix brain-o.
  5442.  
  5443. Wed Aug 18 00:29:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5444.  
  5445.     * list_primes.m: New M-file.
  5446.  
  5447.     * src/tc-index.cc (do_scalar_index): Handle two vector args of all
  5448.     ones.
  5449.  
  5450. Tue Aug 17 06:26:04 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5451.  
  5452.     * src/file-io.cc (process_printf_format): Use NINT for * modifier
  5453.     argument.
  5454.  
  5455. Mon Aug 16 19:30:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5456.  
  5457.     * src/mappers.cc: (arg (double)): Return pi for negative real values.
  5458.  
  5459. Sun Aug 15 05:08:48 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5460.  
  5461.     * src/octave-hist.cc (mk_tmp_hist_file): New function, extracted
  5462.     from do_edit_history.
  5463.     (do_edit_history): Simplify using mk_tmp_hist_file.
  5464.     (do_run_history): New function.
  5465.     (edit_history_repl_hist): New function.
  5466.  
  5467.     * src/t-builtins.cc (builtin_run_history): New function.
  5468.  
  5469.     * src/builtins.cc (text_functions): Add run_history to the list.
  5470.  
  5471. Fri Aug 13 16:04:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5472.  
  5473.     * tzero.m: New M-file.
  5474.     * abcdchk.m: New M-file.
  5475.     * is_symmetric.m: Use tol and norm (A) to decide if A' is close
  5476.     enough to A to be considered the same.
  5477.  
  5478. Wed Aug 11 15:50:59 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5479.  
  5480.     * Version 0.74.1.
  5481.  
  5482.     Merge in expm changes from A. S. Hodel <scotte@eng.auburn.edu>:
  5483.  
  5484.     * f-expm.{h,cc}: New files.
  5485.     * src/Makefile.in: Include them in the usual places.
  5486.     * src/g-builtins.cc (builtin_expm): The new matrix_exp returns a
  5487.     tree_constant by value.
  5488.     Include f-expm.h
  5489.     * src/tc-extras.cc (matrix_exp): Delete function.
  5490.  
  5491. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5492.  
  5493.     Merge in qzval changes from A. S. Hodel <scotte@eng.auburn.edu>:
  5494.  
  5495.     * f-qzval.{h,cc}: New files.
  5496.     * src/Makefile.in: Include them in the usual places.
  5497.     * src/g-builtins.cc (builtin_qzval): New function.
  5498.     Include f-qzval.h
  5499.     * src/g-builtins.h: Declare builtin_qzval.
  5500.     * src/builtins.cc (general_functions): Add qzval to the list.
  5501.  
  5502.     * libcruft/eispack: New directory.
  5503.     * libcruft/Makefile.in (SUBDIRS): Include it.
  5504.  
  5505. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5506.  
  5507.     * configure.in: Add libcruft/balgen/Makefile and
  5508.     libcruft/eispack/Makefile to the list of files to frob.
  5509.  
  5510. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5511.  
  5512.     Merge in syl changes from A. S. Hodel <scotte@eng.auburn.edu>:
  5513.  
  5514.     * lyap.m: New M-file.
  5515.  
  5516.     * f-syl.{h,cc}: New files.
  5517.     * src/Makefile.in: Include them in the usual places.
  5518.     * src/g-builtins.cc (builtin_syl): New function.
  5519.     Include f-syl.h
  5520.     * src/g-builtins.h: Declare builtin_syl.
  5521.     * src/builtins.cc (general_functions): Add syl to the list.
  5522.  
  5523. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5524.  
  5525.     * src/g-builtins.cc (builtin_balance): Fix typo in doc string.
  5526.  
  5527. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5528.  
  5529.     Merge in givens changes from A. S. Hodel <scotte@eng.auburn.edu>:
  5530.  
  5531.     * f-givens.{h,cc}: New files.
  5532.     * src/Makefile.in: Include them in the usual places.
  5533.     * src/g-builtins.cc (builtin_givens): New function.
  5534.     Include f-givens.h
  5535.     * src/g-builtins.h: Declare builtin_givens.
  5536.     * src/builtins.cc (general_functions): Add givens to the list.
  5537.  
  5538.     * src/Makefile.in: (defaults.h) Quote substitutions.
  5539.     Use %foo%, not @foo@ to mark substitution.
  5540.     * src/defaults.h.in: Use %foo%, no @foo@ to do mark things to
  5541.     substitute.
  5542.  
  5543.     * qzhess.m: New M-file.
  5544.  
  5545. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5546.  
  5547.     Merge in balance changes from A. S. Hodel <scotte@eng.auburn.edu>:
  5548.  
  5549.     * are, is_controllable.m, is_observable.m, is_square.m,
  5550.     is_symmetric.m:  New M-files.
  5551.  
  5552.     * Matrix.h (AEPBALANCE): New class.
  5553.     (ComplexAEPBALANCE): New class.
  5554.     (GEPBALANCE): New class.
  5555.     * Matrix-ext.cc: Add init functions for balancing classes.
  5556.  
  5557.     * src/f-balance.{h,cc}: New files.
  5558.     * src/Makefile.in: Include them in the usual places.
  5559.     * src/g-builtins.cc (builtin_balance): New function.
  5560.     Include f-givens.h
  5561.     * src/g-builtins.h: Declare builtin_balance.
  5562.     * src/builtins.cc (general_functions): Add balance to the list.
  5563.  
  5564.     * libcruft/balgen: New directory.
  5565.     * libcruft/Makefile.in (SUBDIRS): Include it.
  5566.  
  5567. Tue Aug 10 20:06:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5568.  
  5569.     * configure.in: Use AC_HAVE_LIBRARY to check for -lm.
  5570.  
  5571.     * src/Makefile.in (defaults.h): Quote substitutions.
  5572.  
  5573. Mon Aug  9 13:30:07 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5574.  
  5575.     * README.NLP: New file.
  5576.     * Makefile.in (DISTFILES): Distribute it.
  5577.  
  5578. Sun Aug  8 19:05:48 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5579.  
  5580.     * src/move-if-change: New file.
  5581.     * src/Makefile.in (DISTFILES): Distribute it.
  5582.     (defaults.h): New rule.
  5583.     (utils.o): Delete rule, since extra defines are no longer needed.
  5584.     (INCLUDES): Distribute defaults.h.in.
  5585.     * src/utils.cc: Include defaults.h to get DEFAULT_PAGER and
  5586.     OCTAVE_HOME instead of depending on having them defined by the
  5587.     compile command.
  5588.  
  5589.     * configure.in (DEFAULT_PAGER): Use AC_PROGRAMS_CHECK.
  5590.     If we find less, add `-e' flag, so users won't have to type q to
  5591.     quit paging.
  5592.  
  5593. Sat Aug  7 13:34:06 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5594.  
  5595.     * f-*.cc: Renamed from tc-*.cc.  (Use f- as the file prefix
  5596.     because most of these functions are ultimately implemented in
  5597.     Fortran, and, most importantly, it keeps them grouped together.)
  5598.     * f-*.h: New files, for external declarations of visible functions
  5599.     defined in f-*.cc.
  5600.     * g-builtins.cc: Include them all.
  5601.     * tree-const.h: Don't declare these functions as friends.
  5602.     * Makefile.in: Cope with new names.
  5603.  
  5604.     * octave.cc (parse_and_execute (char *, int)): Don't declare static.
  5605.     * octave.h: Declare it extern here.
  5606.     * octave-hist.cc (do_edit_history): Use it here.
  5607.  
  5608.     * octave-hist.cc (do_edit_history): New function.
  5609.     * t-builtins.cc (builtin_edit_history): Use it.
  5610.  
  5611.     * t-builtins.cc, t-builtins.h, builtins.cc: Rename edit to
  5612.     edit_history.
  5613.  
  5614.     * octave-hist.cc (do_history): Print line numbers by default.
  5615.     Allow quieter output with -q option.
  5616.  
  5617.     * g-builtins.cc (builtin_hess): Use DLD_BUILTIN macro to call hess.
  5618.     * g-builtins.cc (builtin_schur): Likewise
  5619.  
  5620.     * tc-hess.cc (builtin_hess_2): Call hess with corrrect args.
  5621.     * tc-schur.cc (builtin_schur_2): Likewise, for schur dude :-).
  5622.  
  5623.     * tc-fsqp.cc (builtin_fsqp_2): Fix typo.
  5624.  
  5625. Thu Aug  5 23:14:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5626.  
  5627.     * input.cc (octave_read): Ensure that the last character in the
  5628.     buffer is a new line.
  5629.  
  5630. Wed Aug  4 19:25:54 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5631.  
  5632.     * parse.y (func_def2): Also warn if we encounter a function
  5633.     definition with the same name as the script file we are reading.
  5634.  
  5635.     * tree.cc (tree_identifier::do_lookup): Always return NULL_TREE if
  5636.     a script file was executed.
  5637.  
  5638. Tue Aug  3 23:25:45 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5639.  
  5640.     * file-io.cc: Delete useless static keyword from File_info class
  5641.     declaration.
  5642.     * unwind-prot.cc: Likewise, for unwind_elem and saved_variable
  5643.     classes.
  5644.     * tc-rand.cc: Likewise, for enum rand_dist declaration.
  5645.     * arith-ops.cc:  Likewise, for enum Matrix_bool_op declaration.
  5646.     * tree.cc: Likewise, for struct const_matrix_list declaration.
  5647.  
  5648. Fri Jul 23 01:40:38 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5649.  
  5650.     * sysdep.cc (malloc_handler): Add missing arg to call to message().
  5651.  
  5652. Tue Jul 20 04:09:32 1993  John W. Eaton  (jwe@june.che.utexas.edu)
  5653.  
  5654.     * Version 0.74 released.
  5655.  
  5656.     * doinstall.sh (version): Run `./octave -v' to get the version
  5657.     number instead of grabbing it from version.h.
  5658.     * Fail if we can't get a version number.
  5659.     * Install ./octave, not src/octave.
  5660.  
  5661.     * Makefile.in (binary-dist): Don't depend on all.
  5662.     * Link src/octave to ./octave.  (Now that there's no source in
  5663.     binary distributions, why have a src directory?)
  5664.  
  5665.     * file-io.cc (process_scanf_format): Rename local variable `i' to
  5666.     `chars_from_fmt_str'.
  5667.     * (process_printf_format): Likewise.
  5668.  
  5669.     * sighandlers.cc (can_interrupt): New global variable.
  5670.     * (sigint_handler): Use it to decide whether to jump to top level.
  5671.     * octave.cc (main): Set it after calling setjmp.
  5672.  
  5673.     * octave.cc (main): Declare saved_sigint_handler to be volatile.
  5674.  
  5675.     * tree.cc, tree-plot.cc, t-builtins.cc, pager.cc, g-builtins.cc,
  5676.     file-io.cc: Terminate strstream strings with ends instead of just
  5677.     using '\0'.
  5678.  
  5679.     * file-io.cc (process_scanf_format): Skip leading white space for
  5680.     %s conversions.
  5681.     * (fopen_file_for_user): Pass tree_constant arg by reference.
  5682.     * (do_scanf): If doing fprintf, don't fail if first arg is a
  5683.     string.
  5684.  
  5685. Mon Jul 19 16:00:22 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5686.  
  5687.     * symtab.cc (pstrcmp): Declare to take char** args, not char*.
  5688.  
  5689. Sun Jul 18 13:02:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5690.  
  5691.     * file-io.cc (return_valid_file): Pass arg by reference.
  5692.  
  5693.     * file-io.cc (fclose_internal, fgets_internal, fseek_internal):
  5694.     Eliminate unnecessary casts to double.
  5695.  
  5696.     * file-io.cc (return_valid_file, fgets_internal, fopen_internal,
  5697.     do_printf, do_scanf): Use is_string_type instead of doing the
  5698.     comparison ourselves.
  5699.     * g-builtins.cc (builtin_exist, builtin_getenv,
  5700.     builtin_shell_command): Ditto.
  5701.     * tc-colloc.cc (collocation_weights): Ditto.
  5702.     * tc-extras.cc (eval_string, get_user_input): Ditto.
  5703.     * tc-rand.cc (rand_internal): Ditto.
  5704.     * tree-plot.cc (tree_subplot_list::print): Ditto.
  5705.     * variables.cc (is_valid_function, octave_string_variable): Ditto.
  5706.  
  5707. Thu Jul 15 02:29:03 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5708.  
  5709.     * doc/Makefile.in (TEXINFO): Distribute texinfo.tex too.
  5710.  
  5711.     * t-builtins.cc (load_variable): Warn if replacing local symbol
  5712.     with global from file.
  5713.     * Warn if variable is not marked as global in a file, but already
  5714.     exists as a global symbol, then go ahead and load it as a global.
  5715.  
  5716. Tue Jul 13 01:47:48 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5717.  
  5718.     * lex.l (lookup_identifier): Never alias to global here.
  5719.     * tree.cc (do_lookup): Don't alias formal parameters to global.
  5720.     * variables.cc (force_global): Likewise.
  5721.     * symtab.cc (symbol_table::bind_globals): Likewise.
  5722.  
  5723.     * symtab.h (symbol_record::formal_param): New field.
  5724.     * symtab.cc (symbol_record::mark_as_global_parameter): New function.
  5725.     * (symbol_record::is_formal_parameter): Ditto.
  5726.     * tree.cc (tree_identifier::mark_as_formal_parameter): Ditto.
  5727.     * (tree_parameter_list::mark_as_formal_parameters): Ditto.
  5728.     * parse.y (param_list): Use it to tag formal parameters.
  5729.     * (func_def1): Ditto.
  5730.  
  5731.     * arith-ops.cc (DIVIDE_BY_ZERO_ERROR): On IEEE machines, allow
  5732.     divide by zero errors to be suppressed.
  5733.     * user-prefs.h (warn_divide_by_zero): New user preference.
  5734.     * user-prefs.cc (warn_divide_by_zero): New function.
  5735.     * builtins.cc (builtin_string_variables): Install it with default
  5736.     value of true.
  5737.  
  5738.     * tree.cc (tree_multi_assignemnt_expression): Use tree_return_list
  5739.     instead of tree_param_list.
  5740.     * (tree_multi_assignment_expression:eval): Make it work.
  5741.  
  5742.     * tree.cc (tree_return_list): New class.  Allow index expressions
  5743.     and identifiers in return lists.
  5744.     * (tree_matrix::to_return_list): Rename from to_param_list.
  5745.     * parse.y (expression): Use it.
  5746.  
  5747.     * parse.y: Increment and decrement maybe_screwed_again instead of
  5748.     just setting it to zero or one.
  5749.  
  5750. Mon Jul 12 03:23:40 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5751.  
  5752.     * tc-assign.cc (tree_constant_rep::do_matrix_assignment): Handle
  5753.     case of lhs being of unknown type.
  5754.  
  5755.     * lex.l (check_for_garbage_after_fcn_def): Also ignore trailing
  5756.     commas and semicolons.
  5757.  
  5758. Sun Jul 11 00:08:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5759.  
  5760.     * Version 0.73.1 released.
  5761.  
  5762.     * symtab.cc (symbol_record::alias): Also copy pointer to sv_fcn.
  5763.  
  5764. Sat Jul 10 14:34:00 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5765.  
  5766.     * tree.cc (tree_function::eval (int, char **, int): New function.
  5767.  
  5768.     * symtab.cc (symbol_table::bind_globals): New function.
  5769.     * tree.cc (tree_function::eval): Use it to associate local symbols
  5770.     with global data.
  5771.  
  5772.     * symtab.cc (alias): Add optional parameter `force'.
  5773.  
  5774.     * Version 0.73 released.
  5775.  
  5776.     * pr-output.cc: Use D_NINT instead of NINT in some cases to avoid
  5777.     overflow problems on systems that don't have IEEE Inf.
  5778.     * mappers.cc (round): Likewise.  Also avoids conversion of Inf to
  5779.     INT_MAX on systems that do have IEEE Inf.
  5780.  
  5781.     * builtins.h: Remove definition of NINT.
  5782.     * tree.h: Likewise.
  5783.     * tree-const.h: Likewise.
  5784.  
  5785.     * utils.cc (NINT): Move function here and improve handling of
  5786.     extreme values.
  5787.     * (D_NINT): New function.
  5788.  
  5789.     * scripts/isempty.m: Don't require the number of rows and columns
  5790.     to both be zero.
  5791.  
  5792. Thu Jul  8 16:25:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5793.  
  5794.     * Version 0.72.2.
  5795.  
  5796.     * configure.in: Do a better job of grabbing the last argument as
  5797.     the target_host_type and avoiding setting it to things like
  5798.     --prefix=/foo/bar
  5799.  
  5800.     * tree-const.cc (tree_constant_rep::save): Add default case for
  5801.     mark_as_global switch to avoid warnings from gcc.
  5802.  
  5803.     * variables.cc (force_global): Cope with symbol table changes.
  5804.     * tree.cc: (tree_identifier::do_lookup): Likewise.
  5805.     * lex.l (lookup_identifier): Likewise.
  5806.     * builtins.cc (install_builtins): Likewise.
  5807.  
  5808.     * symtab.cc, symtab.h: Massive internal rewrite.
  5809.  
  5810. Wed Jul  7 02:18:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5811.  
  5812.     * tc-assign.cc (tree_constant_rep::do_scalar_assignment): If rhs
  5813.     is a scalar type, also handle case of lhs being of unknown type.
  5814.     * Be sure to set the new type of the lhs.
  5815.  
  5816.     * tree-base.h: Don't include symtab.h.
  5817.     * tree-const.h: Ditto.
  5818.  
  5819. Tue Jul  6 22:47:28 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5820.  
  5821.     * parse.y (func_def2): Remove the function name from the top-level
  5822.     symbol table if defining on command line (an M-file would never be
  5823.     parsed if there was already an entry with the same name in the top
  5824.     level symbol table).
  5825.  
  5826.     * parse.y (word_list_command): Allow clear without any arguments.
  5827.     * tree.cc (word_list_command::eval): Handle word list commands
  5828.     with no arguments.
  5829.  
  5830. Mon Jul  5 14:43:30 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5831.  
  5832.     * Version 0.72.1.
  5833.  
  5834.     * help.cc (operators): Document the double quote character.
  5835.  
  5836.     * lex.l (getting_help): Delete unused variable.
  5837.     * (HELP_FCN): New exclusive start state.
  5838.     * ({IDENT}{S}*): Set start state to HELP_FCN instead of setting
  5839.     getting_help.
  5840.     * ({IDENT}/{S}*=): Likewise.
  5841.  
  5842.     * symtab.cc (symbol_table::load): Delete unused function.
  5843.  
  5844.     * tree-const.cc (tree_constant::load): Return flag telling whether
  5845.     the constant is global.
  5846.     * t-builtins.cc (builtin_load): Handle global variables.
  5847.     * (builtin_save): Likewise.
  5848.  
  5849.     * symtab.cc (symbol_record::save): Don't save builtin variables
  5850.     (variables marked as eternal are assumed to be builtin).
  5851.  
  5852.     * symtab.cc (symbol_record::mark_from_global): New function.
  5853.     * (symbol_def::undefine): Add optional argument to prevent
  5854.     deleting symbol's definition.
  5855.     * (symbol_table::undefine): If this variable has been marked as
  5856.     defined from a global, call symbol_def::undefine with arg = 1.
  5857.     * tree.cc (tree_identifier::do_lookup): If a local symbol is
  5858.     defined from a global, mark it as such.
  5859.  
  5860.     * symtab.cc (symbol_record::define (symbol_record*)): Delete
  5861.     unused function.
  5862.  
  5863.     * tree.cc (tree_identifier::do_lookup (int&)): Use operator=
  5864.     instead of symbol_record::define().
  5865.     * variables.cc (force_global (char*)): Likewise.
  5866.  
  5867. Sun Jul  4 01:27:44 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5868.  
  5869.     * symtab.cc (symbol_record): Define copy constructor and operator=.
  5870.  
  5871.     * builtins.cc (install_builtins): Make `i' and `j' read-only
  5872.     functions.
  5873.  
  5874.     * symtab.cc (symbol_record::define): Respect read-only status of
  5875.     variables and functions.
  5876.  
  5877. Sat Jul  3 19:11:31 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5878.  
  5879.     * user-prefs.h (print_empty_dimensions): New user preference variable.
  5880.     * user-prefs.cc (print_empty_dimensions): New function.
  5881.     * builtins.cc (print_empty_dimesions): Make default value true.
  5882.     * tree-const.cc (tree_constant_rep::eval): Use value here.
  5883.  
  5884.     * cond.m: Handle empty matrices.
  5885.     * tc-det.m (determinant): Likewise.
  5886.     * tc-inv.m (inverse): Likewise.
  5887.  
  5888.     * tc-hess.cc (hess): Use gripe_square_matrix_required instead of
  5889.     calling error.
  5890.     * tc-schur.cc (schur): Likewise.
  5891.  
  5892.     * builtins.cc (propagate_empty_matrices): Change default value to
  5893.     true.
  5894.  
  5895.     * tree-const.cc (tree_constant_rep::eval): If a matrix has zero
  5896.     rows or columns, also print the dimension along with the `[]'
  5897.     symbol.
  5898.  
  5899.     * tree-const.cc (do_binary_op): If ok to propagate empty matrices,
  5900.     go ahead and do the binary operation so that the result will have
  5901.     consistent dimensions.
  5902.     * (do_unary_op): Likewyse.
  5903.  
  5904.     * tc-extras.cc (get_dimensions): Don't force both nr and nc to
  5905.     zero if one is.
  5906.     * Matrix.cc, DiagMatrix.cc, ColVector.cc, RowVector.cc: Handle
  5907.     matrices with zero dimensions in a more consistent fashion.
  5908.  
  5909. Thu Jul  1 00:27:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5910.  
  5911.     * perror.m: New M-file.
  5912.  
  5913.     * LP.h, LP.cc: New interface for linear programmming.
  5914.     * LPsolve.h LPsolve.cc: New files to implement linear programming
  5915.     using lp_solve.
  5916.  
  5917.     * NPSOL.cc (minimize): Also return the vector of Lagrange
  5918.     multipliers.
  5919.     * tc-npsol.cc (npsol): Optionally return them.
  5920.  
  5921.     * QPSOL.cc (minimize): Also return the vector of Lagrange
  5922.     multipliers.
  5923.     * tc-qpsol.cc (qpsol): Optionally return them.
  5924.  
  5925.     * tc-qpsol.cc (qpsol): Make it work.
  5926.  
  5927. Wed Jun 30 02:19:00 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5928.  
  5929.     * g-builtins.cc (builtin_lpsolve): New function.
  5930.     * (builtin_qpsol): Ditto.
  5931.     * builtins.cc (general_functions): Add them to the list.
  5932.  
  5933.     * tc-lpsolve.cc: New file.
  5934.     * tc-qpsol.cc: Ditto.
  5935.     * src/Makefile.in: Add them to the list of SOURCES and DLD_OBJECTS.
  5936.  
  5937. Tue Jun 29 15:02:07 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5938.  
  5939.     * liboctave/DAE.cc (integrate): If stop_time_set is false, reset
  5940.     default value for info[3].
  5941.     * liboctave/ODE.cc (integrate): Likewise, reset default values of
  5942.     iopt and itask.
  5943.  
  5944.     From Thorsten Ohl <ohl@physics.harvard.edu>:
  5945.     * config.guess: Add check for NeXT.
  5946.     * configure.in: Add check for NeXT so that readline is configured
  5947.     properly (really need to improve readline's configuration scheme).
  5948.     * sysdep.cc (malloc_handler): New function for handling malloc
  5949.     errors on NeXT systems.
  5950.  
  5951.     * octave.cc (main): Call sysdep_init before anything else.
  5952.  
  5953.     * sysdep.cc: New file for system dependent things.
  5954.  
  5955.     * octave.cc (initialize_globals): Only pass argv[0] since that's
  5956.     the only thing that's used.
  5957.  
  5958. Sat Jun 26 13:00:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5959.  
  5960.     * tree.cc (tree_builtin::eval (int, char**, int)): Don't panic if
  5961.     called for something other than a text_fcn.
  5962.  
  5963.     * t-builtins.cc (builtin_cd): Rewrite to fix bogus memory
  5964.     problems.
  5965.  
  5966. Fri Jun 25 15:23:03 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5967.  
  5968.     * t-builtins.cc (builtin_cd): Don't delete value returned by
  5969.     get_working_directory.
  5970.     * g-builtins.cc (builtin_pwd): Likewise, and simplify.
  5971.  
  5972.     * utils.cc (make_absolute): Always create a new copy to return.
  5973.     * utils.cc (change_to_directory): Don't delete pointer returned
  5974.     from get_working_directory().
  5975.     * (file_in_path): Likewise.
  5976.  
  5977. Thu Jun 24 16:48:38 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5978.  
  5979.     * lex.l ({IDENT}{S}*): Always insert a comma if the next token
  5980.     doesn't look like some sort of operator, not just if
  5981.     convert_spaces_to_comma is also true (it may have been turned off
  5982.     by BIN_OP_RETURN).
  5983.  
  5984.     * tree-const.h (matrix_ptr): Delete function.
  5985.     * tc-extras.cc (frobit): Delete function.
  5986.     * (get_dimensions): New function.
  5987.     * (identity_matrix): Completely rewrite.
  5988.     * (fill_matrix): Likewise.
  5989.  
  5990. Wed Jun 23 13:50:16 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  5991.  
  5992.     * Matrix-ext.cc (SCHUR::init): Also allow ord flag to be lowercase.
  5993.     * (ComplexSCHUR::init): Ditto.
  5994.     * tc-schur.cc (schur): Likewise.
  5995.  
  5996.     * Matrix-ext.cc (SCHUR::init): Declare sort as char, not char*,
  5997.     and pass its address to Lapack.
  5998.     * (ComplexSCHUR::init): Ditto.
  5999.  
  6000.     * Matrix-ext.cc (SCHUR::select_dig): Make static, and move ahead
  6001.     of first reference in file.
  6002.     * (SCHUR::select_ana): Likewise.
  6003.     * (ComplexSCHUR::select_complex_dig): Likewise.
  6004.     * (ComplexSCHUR::select_complex_ana): Likewise.
  6005.  
  6006.     * builtins.cc (install_builtins): Add `J' as an alias for `I'.
  6007.  
  6008.     * builtins.cc (install_builtins): Always create a new
  6009.     tree_constant for each variable, since the symbol table doesn't
  6010.     know how to share them.
  6011.  
  6012.     * tc-schur.cc (schur): Use warning and error functions instead of
  6013.     writing directly to cerr.
  6014.     * tc-hess.cc (hess): Ditto.
  6015.  
  6016.     * src/Makefile.in (DLD_OBJECTS): Include tc-schur.o and tc-hess.o.
  6017.     * (SOURCES): Add tc-schur.cc tc-hess.cc.
  6018.  
  6019.     * Merge Schur and Hessenberg changes:
  6020.  
  6021.     Fri Mar 19 11:01:19 1993  R. Bruce Tenison (btenison@eng.auburn.edu)
  6022.  
  6023.     * src/builtins.cc: Changed schur definition to include one more
  6024.     input.  Also changed the help line description
  6025.     * src/g-builtins.cc: Changed builtin_schur to accept two inputs
  6026.     Also changed the information to explain ordered schur operation.
  6027.     * src/tc-schur.cc Added extensions to the SCHUR and ComplexSCHUR
  6028.     calls to pass extra paramater.  Also added check for proper param.
  6029.     * liboctave/Matrix.h: Modified declarations dgeesx and zgeesx to
  6030.     accept address of select function.  Modified class structures for
  6031.     SCHUR and ComplexSCHUR to accept extra ordered schur param.
  6032.     * liboctave/Matrix-ext.cc: Added extensions for the extra ordered
  6033.     schur paramater.
  6034.  
  6035.     Wed Mar 17 15:23:14 1993  R. Bruce Tenison (btenison@eng.auburn.edu)
  6036.  
  6037.     * liboctave/Matrix-ext.cc (HESS and ComplexHESS): Added the
  6038.     Hessenburg decomposition routines.
  6039.     * liboctave/Matrix.h Added fortran lapack functions definitions
  6040.     used in the Hessenburg procedure.
  6041.     * src/g-builtins.cc (builtin_hess): Hessenburg Decomposition routine
  6042.     added
  6043.     * src/g-builtins.h (builtin_hess): Added extern definition.
  6044.     * liboctave/Matrix.h Added classed HESS and ComplexHESS
  6045.     * src/tree_const.h added defs for hess.
  6046.     * src/tc-hess.cc (hess): New file for hess function.
  6047.  
  6048.     Tue Mar 16 10:46:32 1993  R. Bruce Tenison (btenison@eng.auburn.edu)
  6049.  
  6050.     * src/g-builtins.cc (builtin_schur): Schur Decomposition routine
  6051.     added.
  6052.     * src/g-builtins.h (builtin_schur): Added extern definition.
  6053.     * liboctave/Matrix.h Added Classes SCHUR and Complex SCHUR, and
  6054.     added defs for zgeesx and dgeesx (lapack schur decomp)
  6055.     * liboctave/Matrix-ext.cc (SCHUR and Complex SCHUR): Ditto.
  6056.     * src/tree-const.h added defs for schur.
  6057.     * src/tc-schur.cc (schur): New file for schur function.
  6058.  
  6059. Tue Jun 22 20:18:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6060.  
  6061.     * lex.l (check_for_garbage_after_fcn_def): New function
  6062.     * parse.y (fcn_end_or_eof): If reading from an M-file, use it to
  6063.     print warning about trailing garbage after the end of a function
  6064.     has been found.
  6065.  
  6066. Mon Jun 21 20:21:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6067.  
  6068.     * tc-assign.cc (tree_constant_rep::assign): Handle case of
  6069.     assignment to unknown constant too.
  6070.     * (tree_constant_rep::do_scalar_assignment): Don't fail for
  6071.     unknown_constant type.
  6072.     * (tree_constant_rep::do_matrix_assignment): Likewise.
  6073.  
  6074.     * tree-const.cc (rows): Return 0 for unknown_constant type.
  6075.     * (columns): Likewise.
  6076.  
  6077.     * tree.cc (tree_identifier::assign): Defer defining symbol until
  6078.     assignment is successful.
  6079.     * When creating a new dummy tree_constant to assign a value to,
  6080.     leave it an unknown_constant type.
  6081.  
  6082.     * tc-assign.cc (do_scalar_assignment): If the right hand side
  6083.     isn't a scalar, maybe try to resize instead.
  6084.     * (do_matrix_assignment): For A(:,int) and A(int,:) cases, also
  6085.     resize if left hand side is a scalar.
  6086.  
  6087.     * norm.m: Allow "fro" to work for scalars and vectors too.
  6088.  
  6089. Sun Jun 20 01:17:03 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6090.  
  6091.     * NLConst.cc: New file.  Move inline function definitions here
  6092.     from NLConst.h.
  6093.  
  6094.     * Objective.cc: New file.  Move inline function definitions here
  6095.     from Objective.h
  6096.  
  6097.     * tree.cc (tree_word_list_command::eval): Call strsave for argv[0]
  6098.     too, and delete argv before returning.
  6099.     * (tree_builtin::eval): Likewise, for text functions with no
  6100.     arguments.
  6101.  
  6102. Sat Jun 19 01:37:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6103.  
  6104.     * octave.cc (parse_and_execute): Delete calls to delete_buffer
  6105.     and switch_to_buffer, since that is taken care of by unwinding the
  6106.     frame.
  6107.  
  6108. Fri Jun 18 00:08:36 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6109.  
  6110.     * tree.cc (tree_matrix::eval): Delete useless direct = ptr->direct
  6111.     and ptr = ptr->next statements from size-determining loop.
  6112.  
  6113.     * parse.y (opt_list): New rule.  Replace all occurrences of list
  6114.     with opt_list.
  6115.  
  6116.     * tree.cc: (tree_index_expression::eval (int, int)): Don't
  6117.     complain if the index expression has an empty argument list.
  6118.  
  6119.     * octave.cc (initialize_globals): Check return value of
  6120.     getenv ("HOME") against NULL, not the global variable
  6121.     home_directory that we are trying to initialize.
  6122.  
  6123.     * tree.cc (tree_function::eval): Quick return if command list
  6124.     is empty.
  6125.     * parse.y (func_def3): Allow empty function bodies.
  6126.  
  6127. Thu Jun 17 02:08:02 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6128.  
  6129.     * tree.cc (tree_while_command): Add constructor for case of
  6130.     expression only.
  6131.     * parse.y (statement): Allow empty command list for while commands.
  6132.  
  6133.     * parse.y (list): Allow empty commands in more places.  This ups
  6134.     the shift/reduce error count by 6, to 19.
  6135.  
  6136.     * octave.cc (execute_startup_files): Don't delete sd.
  6137.  
  6138.     * octave.cc (initialize_globals): Make copies of all strings.
  6139.     * Store more humorous messages if things fail.
  6140.  
  6141. Tue Jun 15 11:03:39 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6142.  
  6143.     * tc-extras.cc (get_user_input): Finish incomplete change to get
  6144.     input using readline.
  6145.  
  6146.     * tc-extras.cc (match_sans_spaces): New function.
  6147.     * (get_user_input): Use it when checking to see if the user
  6148.     entered a `quit' command.
  6149.  
  6150.     * liboctave/Makefile.in: Don't distribute Makedeps.in or include
  6151.     Makedeps since we generate dependencies automatically now.
  6152.     * configure.in: Don't create liboctave/Makedeps.
  6153.  
  6154. Sun Jun 13 18:31:17 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6155.  
  6156.     * src/xdiv.cc (xdiv): Solve least-squares problem if system of
  6157.     equations is not square, or if it is singular.
  6158.     * (xleftdiv): Likewise.
  6159.  
  6160.     * liboctave/Matrix.h (Matrix::lssolve): New functions for
  6161.     least-squares solutions of linear systems.
  6162.     * (ComplexMatrix::lssove): Ditto.
  6163.  
  6164. Sat Jun 12 19:07:07 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6165.  
  6166.     * libcruft/misc/xstopx.f (xstopx): Call dostop, not do_stop.
  6167.     * libcruft/misc/dostop.c: Rename from do_stop.c
  6168.     * (dostop): Likewise.
  6169.  
  6170.     * src/mappers.cc (xisnan (double)): Define even for systems that
  6171.     don't have xisnan by always returning false.
  6172.     * (xisnan (const Complex&)): Likewise.
  6173.  
  6174. Fri Jun 11 19:54:58 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6175.  
  6176.     * doc/Makefile.in (install): Try harder to install info files.
  6177.  
  6178.     * libcruft/Makefile.in (install): Run ranlib on installed library.
  6179.     * liboctave/Makefile.in (install): Ditto.
  6180.     * readline/Makefile.in (install): Ditto.
  6181.  
  6182. Thu Jun 10 00:15:41 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6183.  
  6184.     * Version 0.72 released.
  6185.  
  6186.     * libcruft/*/*.f: Don't call xstopx with '' since some Fortran
  6187.     compilers object to zero-length strings.
  6188.     * libcruft/misc/xstopx.f (xstopx): Don't print empty strings or
  6189.     single blanks.
  6190.     * libcruft/misc/gen-d1mach.c (main): Likewise, for generated code.
  6191.  
  6192.     * test/Makefile.in (check): Set the Tcl variable OCTAVE_PATH.
  6193.     * test/config/unix-octave.exp: Pass OCTAVE_PATH to OCTAVE using
  6194.     the new -p flag.
  6195.  
  6196.     * builtins.cc (install_builtins): Use load_path instead of calling
  6197.     default_path().
  6198.  
  6199.     * octave.cc (load_path): New global variable.
  6200.     * (initialize_globals): Initialize it here by calling default_path().
  6201.     * (main): Call initialize_globals() before getting command line
  6202.     arguments.
  6203.     * Accept new argument, -p PATH.
  6204.  
  6205.     * octave.cc (clean_up_and_exit): Don't print a message when Octave
  6206.     exits.
  6207.  
  6208.     * doinstall.sh: Install M-files in $(libsubdir), not $(libdir).
  6209.     * Use mkpath to create directories.
  6210.     * Extract version from version.h.
  6211.  
  6212.     * Makeconf.in (version): Compute version just once.
  6213.  
  6214.     * (libsubdir): New directory that includes version number, for
  6215.     installing M-files in (old versions of Octave may not be able to
  6216.     understand new M-files).
  6217.  
  6218.     * src/Makefile.in, libcruft/Makefile.in, liboctave/Makefile.in,
  6219.     doc/Makefile.in, readline/Makefile.in, scripts/Makefile.in
  6220.     (install): Use mkpath to create directories.
  6221.     * scripts/Makefile.in (install): Install M-files in $(libsubdir),
  6222.     not $(libdir).
  6223.  
  6224.     * mkpath.c: New file, from Emacs-19.
  6225.     * Makefile.in (mkpath): New rule.
  6226.     * (all): Depend on mkpath
  6227.     * (binary-dist): Distribute it.
  6228.  
  6229.     * config.guess: Update from bothner@cygnus.com.
  6230.  
  6231.     * lex.l (<STRING>{QSTR}*[\n\']): Set start state to 0 or MATRIX,
  6232.     depending on value of braceflag.
  6233.     * (<DQSTRING>{DQSTR}*[\n\"]): Ditto.
  6234.  
  6235.     * tree.cc (tree_matrix::eval): Make sure that strings are nul
  6236.     terminated.
  6237.  
  6238. Tue Jun  8 16:08:10 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6239.  
  6240.     * octave.cc (clean_up_and_exit): Print `bye-bye' here.
  6241.     * g-builtins.cc (builtin_quit): Not here.
  6242.  
  6243.     * pager.cc (terminal_columns): If screenwidth <= 0, return a
  6244.     default value of 80 columns.
  6245.     * (terminal_rows): Likewise for screenheight and a default of 24
  6246.     rows.
  6247.  
  6248.     * octave.cc (parse_and_execute): Don't fiddle with interactive
  6249.     states since that screws paging output.
  6250.     * tree.cc (parse_m_file): Likewise.
  6251.  
  6252.     * parse.y (input): For `simple_list error END_OF_INPUT' and
  6253.     `error END_OF_INPUT' use ABORT_PARSE.
  6254.     * Always accept `simple_list END_OF_INPUT'.
  6255.     * Always abort for `END_OF_INPUT'.
  6256.  
  6257. Mon Jun  8 13:55:41 1993  John C. Campbell  (jcc@schoch.che.utexas.edu)
  6258.  
  6259.     * file-io.h (fopen_file_for_user): New function declaration.
  6260.  
  6261.     * file-io.cc (fopen_file_for_user): New function.
  6262.     * (fgets_internal): If file doesn't exist open it for user,
  6263.     also return (double) -1 on EOF
  6264.     * (fseek_internal), (ftell_internal), (frewind_internal),
  6265.     (do_printf): Ditto.
  6266.     * (fopen_internal): Remove warn_on_not_open flag, limit warns.
  6267.  
  6268. Mon Jun  7 00:28:13 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6269.  
  6270.     * file-io.cc (do_scanf): Use `type' wherever possible instead of
  6271.     hardcoding name in messages.
  6272.     * (do_printf): Ditto.
  6273.  
  6274.     * file-io.cc (fflush_internal): If flushing stdout, flush output
  6275.     to the pager instead of calling fflush on a stream.
  6276.     * (do_printf): Make fprintf (stdout, ...) exactly the same as
  6277.     printf (...).
  6278.     * (do_scanf): Make fscanf (stdin, ...) exactly the same as
  6279.     scanf (...).
  6280.  
  6281.     * tc-extras.cc (get_user_input): Flush output to pager before
  6282.     prompting for input.
  6283.  
  6284.     * libcruft/Makefile.in (DISTFILES): Distribute STOP.patch to show
  6285.     the changes made to the Fortran sources.
  6286.  
  6287.     * libcruft/*/*.f: Replace STOP statements with calls to xstopx, so
  6288.     that Fortran programs won't just quit on us.
  6289.  
  6290.     * libcruft/misc/xstopx.f: New file.
  6291.     * libcruft/misc/do_stop.c: New file.
  6292.     * libcruft/misc/Makefile.in (SPECIAL): Add do_stop.c to the list.
  6293.     * (SPECIAL_DEPEND): Likewise, for do_stop.o.
  6294.     * libcruft/Makefile.in (CRUFT_OBJ): Ditto.
  6295.  
  6296.     * lex.l (")"): Don't pop the top of the in_brace_or_paren stack if
  6297.     it's empty.
  6298.  
  6299. Sun Jun  6 00:41:28 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6300.  
  6301.     * liboctave/CollocWt.cc (init): Always compute Gaussian quadrature
  6302.     weights instead of trying to compute Radau or Lobatto weights if
  6303.     the endpoints are included.
  6304.     * Really do compute roots and derivative weights corresponding to
  6305.     Legendre polynomials if alpha and beta are zero, even if the
  6306.     endpoints are included.
  6307.  
  6308. Sat Jun  5 22:19:55 1993  John C. Campbell  (jcc@schoch.che.utexas.edu)
  6309.  
  6310.     * builtins.cc (builtin_general_functions): Correct max arg counts
  6311.     for fscanf, scanf, and sscanf.
  6312.  
  6313.     * g-builtins.cc (builtin_fscanf): Correct argument checks.
  6314.     * (builtin_sscanf): Likewise.
  6315.  
  6316.     * file-io.cc (fopen_internal): Don't warn for opening new file.
  6317.  
  6318.     * file-io.cc (process_printf_format): Handle * for field width and
  6319.     precision.
  6320.     * Pass array of arguments and nargin instead of just one arg.
  6321.     * (do_printf): Call process_printf_format() with new args.
  6322.  
  6323.     * file-io.cc (process_scanf_format): New function to handle scanf
  6324.     dirty work.
  6325.     * (do_scanf): New function.
  6326.  
  6327. Sat Jun  5 14:09:41 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6328.  
  6329.     * lex.l (YY_FATAL_ERROR): Redefine here to keep from exiting on
  6330.     fatal scanner errors.
  6331.  
  6332. Fri Jun  4 16:35:25 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6333.  
  6334.     * tree.cc (tree_multi_assignment_expression::eval (int)): Check to
  6335.     see if result is NULL before trying to use it.
  6336.  
  6337.     * tc-extras.cc (get_user_input): Call gnu_readline() to get input.
  6338.  
  6339. Thu Jun  3 00:30:28 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6340.  
  6341.     * scripts/*.m: Convert single-quoted strings to use double quotes
  6342.     since the manual says they are better.
  6343.  
  6344.     * Version 0.71.10.
  6345.  
  6346.     * doc/Makefile.in (DISTFILES): Distribute octave.info*.
  6347.  
  6348.     * Makefile.in (.fname): Delete target and move actions back to the
  6349.     individual dist targets because this always needs to be done.
  6350.     * (binary-dist): Strip src/octave.
  6351.  
  6352.     * doinstall.sh: New file, for binary distributions.
  6353.  
  6354. Wed Jun  2 15:11:54 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6355.  
  6356.     * Makefile.in (binary-dist): New target, just like dist, except
  6357.     also distribute libcruft.a, liboctave.a, libreadline.a and
  6358.     src/octave.
  6359.  
  6360.     * Makefile.in (.fname): New target.
  6361.     * (links-for-dist): New target.
  6362.     * (local-dist): Depend on .fname.
  6363.     * (dist): Depend on .fname and use links-for-dist.
  6364.  
  6365.     * octave.cc: Move code to print startup message to just after
  6366.     option processing so that any messages from startup files will
  6367.     appear after the normal startup message.
  6368.  
  6369.     * utils.cc (get_site_defaults): New function.
  6370.     * (OCTAVE_HOME): Provide default definition.
  6371.  
  6372.     * (SITE_DEFAULTS): Delete definition.
  6373.     * octave.cc (execute_startup_files): Use get_site_defaults instead.
  6374.  
  6375.     * src/Makefile.in (utils.o): Define OCTAVE_HOME to be $(prefix)
  6376.     here.
  6377.  
  6378.     * Makeconf.in: Don't define SITE_DEFAULTS or OCTAVE_M_FILE_DIR.
  6379.  
  6380.     * lex.l (do_string_escapes): Recognize `\"'.
  6381.  
  6382. Tue Jun  1 01:28:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6383.  
  6384.     * Version 0.71.9.
  6385.  
  6386.     * parse.y (maybe_convert_to_ans_assign): Greatly simplify.
  6387.  
  6388.     * file-io.cc (File_info): Convert from struct to proper class.
  6389.     * (valid_mode): New function.
  6390.  
  6391.     * parse.y, parse.h, lex.l, tree-extras.cc (convert_to_ans_assign):
  6392.     Delete unused variable.
  6393.  
  6394.     * builtins.cc (SEEK_CUR): Set to 1 to match (normal) system values.
  6395.     * (SEEK_END): Likewise, set to 2.
  6396.  
  6397.     * statdefs.h: New file.
  6398.     * Makefile.in (INCLUDES): Add it to the list.
  6399.     * octave-hist.cc: Include it.
  6400.     * variables.cc (identifier_exists): Likewise.
  6401.     * utils.cc (is_newer): Likewise.
  6402.  
  6403.     * builtins.cc (SEEK_SET): New builtin varible.
  6404.     * (SEEK_CUR): Ditto.
  6405.     * (SEEK_END): Ditto.
  6406.     * (stdin): Ditto.
  6407.     * (stdout): Ditto.
  6408.     * (stderr): Ditto.
  6409.  
  6410.     * lex.l (strip_trailing_whitespace): New function.
  6411.     * ({IDENT}{S}*): Use it.
  6412.     * (<TEXT_FCN>[^ \t\n\;\,]*): Fix to grab trailing spaces.
  6413.     Use strip_trailing_whitespce() to delete it before returning.
  6414.  
  6415. Mon May 31 21:00:00 1993  John C. Campbell  (jcc@june.che.utexas.edu)
  6416.  
  6417.     * file-io.cc, file-io.h: New files to implement C-style file
  6418.     handling and I/O functions.
  6419.     * (do_printf): Move here from tc-extras.cc.
  6420.     * (process_printf_format): Likewise.  Also renamed from
  6421.     process_format.
  6422.  
  6423. Mon May 31 00:52:55 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6424.  
  6425.     * (tree_function::eval): Now that we can restore values, enable
  6426.     code to give error for attempts to call functions recursively.
  6427.  
  6428.     * octave.cc (parse_and_execute): Use unwind-protect functions to
  6429.     save and restore state.
  6430.     * tree.cc (parse_m_file): Likewise.
  6431.     * (tree_function::eval): Likewise.
  6432.     * tc-extras (eval_string): Likewise.
  6433.  
  6434.     * unwind-prot.cc (saved_variable): New class to hold values of and
  6435.     pointers to variables we want to restore.
  6436.     * (restore_saved_variable): New function.
  6437.  
  6438.     * unwind-prot.cc (unwind_protect_int_internal): New function.
  6439.     * (unwind_protect_ptr_internal): Ditto.
  6440.     * (unwind_protect_var_internal): Ditto.
  6441.  
  6442.     * unwind-prot.h (unwind_prot_int): New macro.
  6443.     * unwind-prot.h (unwind_prot_ptr): Ditto.
  6444.     * unwind-prot.h (unwind_prot_var): Ditto.
  6445.  
  6446.     * variables.cc (symbol_out_of_date ()): Move here from tree.cc.
  6447.     * (is_valid_function): Fix logic for finding a function
  6448.     definition, including checking to see if the current symbol
  6449.     definition is out of date.
  6450.  
  6451.     * tree-const.h (is_numeric_or_range_type): New function.
  6452.     * tree-const.h (is_string_type): New function.
  6453.     * tree.cc (tree_matrix::eval): Use !is_string_type() instead of
  6454.     is_numeric_type() to decide that we've seen something other than
  6455.     a string.
  6456.  
  6457.     * parse.y (maybe_warn_assign_as_truth_value ()): New function.
  6458.     * user-prefs.h (warn_assign_as_truth_value): New preference.
  6459.     * user-prefs.cc (warn_assign_as_truth_value ()): New function.
  6460.     * builtins.cc (string_variables): Add it to the list.
  6461.  
  6462.     * tree.h (tree_simple_assignment_expression): Rename class from
  6463.     tree_assignment_expression.
  6464.     * (tree_assignment_expression): New class, derived from
  6465.     tree_expression.
  6466.     * (tree_simple_assignment_expression): Derive from new
  6467.     tree_assignment_expression class, not tree_expression class.
  6468.     * (tree_multi_assignment_expression): Ditto.
  6469.  
  6470. Sun May 30 22:40:58 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6471.  
  6472.     * src/Makefile.in (%.d: %.cc): First remove target file, then
  6473.     redirect into tmp file, and finally move tmp file to target file
  6474.     only if creating tmp file was successful.
  6475.     * liboctave/Makefile.in (%.d: %.cc): Ditto.
  6476.  
  6477. Sat May 29 18:18:16 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6478.  
  6479.     * tree.cc (tree_constant *tree_multi_assignment_expression
  6480.     ::eval (int print, int nargout)): New function.
  6481.     * (tree_constant tree_multi_assignment_expression::eval (int print)):
  6482.     Use it to do the real work.
  6483.  
  6484.     * tree.cc (tree_matrix::to_param_list ()): Also allow index
  6485.     expressions as long as the argument list is missing.
  6486.  
  6487.     * parse.y (ans_expression): Now that assignments are just
  6488.     expressions, don't convert expressions to assignemnts to `ans' if
  6489.     they already are assignments.
  6490.     * maybe_convert_to_ans_assign (tree *expr): New function to do the
  6491.     real work.
  6492.  
  6493.     * tree.cc (tree_multi_assignment_expression::
  6494.     is_assignement_expression ()): Return 1.
  6495.  
  6496.     * tree-base.h (tree::is_index_expression ()): New virtual
  6497.     function, returns 0.
  6498.     * tree.cc (tree_index_expression::is_index_expression ()): Return 1.
  6499.  
  6500.     * tree.cc (tree_assignment): Construct from tree_index_expression
  6501.     and a tree.
  6502.     * (tree_index_expression::ident ()): New function.
  6503.     * (tree_index_expression::arg_list ()): New function.
  6504.  
  6505.     * parse.y (variable): New rule, returns tree_index_expression.
  6506.  
  6507.     * parse.y: Rewrite assignment rules so that they are simply
  6508.     expressions, not special cases.
  6509.     * Rearrange fact and expression rules into expression (assignement
  6510.     or simple expression), simple_expr (binary and postfix expressions
  6511.     or secondary simple expression), and simple_expr1 (constants and
  6512.     prefix expressions) rules.
  6513.     * Delete fact rules.
  6514.  
  6515.     * parse.y: Make EXPR_EQ and EXPR_NE have the same precedence as
  6516.     the other relational operators.
  6517.  
  6518. Fri May 28 10:14:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6519.  
  6520.     * unix-octave.exp: Delete use of OCTAVEFLAGS.
  6521.  
  6522.     * test/config: New directory.
  6523.     * test/config/Makefile.in: New file.
  6524.     * test/config/unix-octave.exp: Rename from test/octave-init.exp.
  6525.     * test/Makefile.in (SOURCES): Delete octave-init.exp from list.
  6526.     * configure.in: Add test/config/Makefile to the list of Makefiles
  6527.     to build.
  6528.  
  6529.     * utils.cc (send_to_plot_stream): Plot lines by default.
  6530.  
  6531. Thu May 27 08:03:31 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6532.  
  6533.     * lex.l (\]): Don't pop the top of the in_brace_or_paren stack if
  6534.     it's empty.
  6535.  
  6536.     * tree.cc (tree_matrix::eval): Make it work for single element
  6537.     strings as well.
  6538.  
  6539.     * Version 0.71.8.
  6540.  
  6541.     * lex.l (next_token_is_postfix_unary_op): New function.
  6542.     * (<MATRIX>{SN}*\]{S}*): Use it as well, to decide whether to
  6543.     insert a comma.
  6544.     * (<MATRIX>{S}+): Likewise.
  6545.     * ({IDENT}{S}*): Likewise.
  6546.  
  6547. Wed May 26 15:37:27 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6548.  
  6549.     * pr-otput.cc (pr_any_float): Use form() now that iostream
  6550.     formatting bug has been fixed (libg++-2.3.1).
  6551.  
  6552. Mon May 24 15:36:22 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6553.  
  6554.     * tree.cc (any_arg_is_magic_colon): New function.
  6555.     * (tree_builtin::eval) Use it to avoid calling builtin functions
  6556.     with `:' arguments.
  6557.  
  6558. Sun May 23 14:07:19 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6559.  
  6560.     * g-builtins.cc (builtin_fprintf): Correct usage message.
  6561.  
  6562. Fri May 21 10:35:40 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6563.  
  6564.     * Version 0.71.7.
  6565.  
  6566.     * octave.cc (main): Always reset_parser() before every call to
  6567.     yyparse(), not just on a longjmp return.
  6568.  
  6569.     * doc/Makefile.in (install): For now, don't try to install
  6570.     anything.
  6571.  
  6572.     * lex.l (<MATRIX>{S}+): Call next_token_is_bin_op() instead of
  6573.     making the check in line.
  6574.     * (<MATRIX>{SN}*\]{S}*): Likewise.
  6575.     * (<MATRIX>{S}+): Likewise.
  6576.  
  6577.     * lex.l (looks_like_bin_op): New function.
  6578.     * (next_char_is_space): Ditto.
  6579.     * (next_token_is_bin_op): Ditto.
  6580.  
  6581.     * lex.l ({IDENT}{S}*): If we're in a brace context and the next
  6582.     character is an open paren, set convert_spaces_to_comma to 0.
  6583.     * tree-const.cc (convert_to_str): New function.
  6584.     * g-builtins.cc (builtin_setstr): New function.
  6585.     * builtins.cc (builtin_general_functions): Add it to the list.
  6586.  
  6587. Thu May 20 17:56:15 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6588.  
  6589.     * doc/Makefile.in (SOURCES): Define to be all .texi files.
  6590.     * (octave.info): Depend on $(SOURCES).
  6591.     * (octave.dvi): New target.
  6592.     * Don't distribute the man page.
  6593.  
  6594.     * lex.l (<MATRIX>{S}+): If the next character is a plus or minus
  6595.     followed by a space or tab, don't insert a comma.  This makes
  6596.     input like [1 + 1] == 2 and input like [1 +1] == [1 1].
  6597.     * (<MATRIX>{SN}*\]{S}*): Likewise.
  6598.  
  6599.     * lex.l (<MATRIX>{S}+): Use in_brace_or_paren and
  6600.     convert_spaces_to_comma to decide whether to convert spaces to a
  6601.     comma.
  6602.  
  6603.     * lex.l ({IDENT}{S}*): If we're in a brace context and the next
  6604.     character is an open paren, set convert_spaces_to_comma to 0.
  6605.  
  6606.     * lex.l (<MATRIX>{SN}*\]{S}*): Even if we're still inside some braces,
  6607.     don't always push a comma onto the input.
  6608.  
  6609.     * lex.l (<MATRIX>{SN}*\]): Also grab trailing spaces.
  6610.     * ({IDENT}): Ditto.
  6611.  
  6612.     * lex.l (in_brace_or_paren): New stack to keep track of whether
  6613.     the closest enclosing scope is a pair of braces or parens.  When
  6614.     we see a `[' or a `(', push a flag on the stack.  When we see a
  6615.     `]' or a `)', pop the top of the stack.
  6616.  
  6617.     * lex.l (convert_spaces_to_comma): New flag to control lexer behavior.
  6618.     * (RETURN): Reset it to 1.
  6619.     * (most other returns): Reset it to 1.
  6620.  
  6621.     * lex.l (BIN_OP_RETURN): New macro.  Set convert_spaces_to_comma to 0.
  6622.     * (most binary operators): Use it instead of RETURN.
  6623.  
  6624.     * lex.l (match_any): New function.
  6625.  
  6626. Wed May 19 12:51:54 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6627.  
  6628.     * Range.cc (nelem_internal): Don't allow ranges with more than
  6629.     INT_MAX elements.  Return -1 to indicate failure.
  6630.     * tree-const.cc (tree_constant_rep::tree_constant_rep (double,
  6631.     double, double)): Check nelem() to see if the range is valid.
  6632.  
  6633.     * pr-output.cc (all_elements_are_ints (Range&)): We only need to
  6634.     check the base and the increment, not the limit too.
  6635.  
  6636.     * Range.cc (nelem_internal): Move function definition here from
  6637.     Range.h and do a better job of determining the number of elements
  6638.     in the range.
  6639.  
  6640. Tue May 18 09:06:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6641.  
  6642.     * Version 0.71.6.
  6643.  
  6644.     * tc-extras.cc (find_nonzero_elem_idx): Declare inner loop
  6645.     iteration variables that are used inside later nested loops
  6646.     in the outer enclosing scope to make this work for old and new
  6647.     language definitions (see the ARM, chapter 19: "ANSI/ISO
  6648.     Resolutions", 6.4/6.5: "The statement or statements immediately
  6649.     controlled by the condition in a selection-statement, or an
  6650.     iteration-statement introduce an implicit local scope".
  6651.     * xpow.cc (elem_xpow (Matrix&, Matrix&)): Likewise.
  6652.  
  6653.     * tree.cc (tree_identifier::parse_m_file (char*, int)): Set
  6654.     reading_script_file before calling parse_m_file and restore it
  6655.     afterward.
  6656.  
  6657. Mon May 17 20:04:54 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6658.  
  6659.     * octave.h (prog_name): Declare extern.
  6660.     * (raw_prog_name): Ditto.
  6661.  
  6662.     * f2c-compat.sh (ctest.c): Also write a dummy MAIN_ since gcc 2.4
  6663.     doesn't seem to create an executable now if there are unresolved
  6664.     externals, and the linker wants to see it on Suns.
  6665.  
  6666. Thu May 13 01:06:18 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6667.  
  6668.     * Makefile.in (DISTFILES): Include Makeconf.in.
  6669.  
  6670.     * configure.in: Set defaults for CFLAGS, CXXFLAGS, LDFLAGS, and
  6671.     FFLAGS.
  6672.     * Don't substitute CDEBUG, COPTIMIZE, FOPTIMIZE, or CXXOPTIMIZE.
  6673.     * Use AC_PROGRAMS_CHECK instead of our own code for checking for a
  6674.     Fortran compiler.
  6675.     * Add Makeconf to the list of files to create.
  6676.  
  6677.     * src/Makefile.in (octave): Use ALL_LDFLAGS instead of LDFLAGS.
  6678.  
  6679.     * Makeconf.in (ALL_CFLAGS, ALL_CXXFLAGS, ALL_LDFLAGS): New macros.
  6680.     * Allow the user to set CFLAGS, CXXFLAGS, and FFLAGS without
  6681.     screwing things up.
  6682.     * (CDEBUG, COPTIMIZE, FOPTIMIZE, CXXOPTIMIZE): Delete.
  6683.     * Provide rules for making .o from .cc or .c files that use
  6684.     ALL_CXXFLAGS and ALL_CFLAGS.
  6685.  
  6686.     * src/Makefile.in: Generate dependencies automatically using the
  6687.     method described in the GNU make manual.
  6688.     * liboctave/Makefile.in: Likewise.
  6689.  
  6690.     * All Makefile.in files: Set TOPDIR and include $(TOPDIR)/Makeconf.
  6691.     * Makeconf.in: New file, for most configuration options.
  6692.  
  6693.     * tc-rand.cc (rand_internal): Return an empty matrix for rand (0).
  6694.  
  6695. Wed May 12 01:32:36 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6696.  
  6697.     * octave.cc (clean_up_and_exit): Call close_plot_stream before
  6698.     quitting.
  6699.  
  6700.     * Version 0.71.4.
  6701.  
  6702.     * pr-output.cc (octave_print_internal (ostrstream&, Matrix&)):
  6703.     Handle wrapping columns neatly, respecting value of split_long_rows.
  6704.     * (octave_print_internal (ostrstream&, ComplexMatrix&)): Ditto.
  6705.     * (octave_print_internal (ostrstream&, Range&)): Ditto.
  6706.  
  6707.     * user-prefs.cc (split_long_rows): New preference variable and
  6708.     function.
  6709.     * builtins.cc (builtin_string_variables): Add to list with default
  6710.     value == true.
  6711.  
  6712. Tue May 11 02:20:43 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6713.  
  6714.     * pr-output.cc (pr_max_internal): Don't count Inf or NaN when
  6715.     looking for max value.
  6716.     * (pr_min_internal): Likewise, for min values.
  6717.  
  6718.     * pr-output.cc (pr_any_float): Merge pr_float and pr_imag_float.
  6719.  
  6720.     * pr-output.cc (any_element_is_inf_or_nan (Matrix&)): New function.
  6721.     * (any_element_is_inf_or_nan (ComplexMatrix&)): New function.
  6722.     * (all set_format functions (except Range)): Consider Inf and NaN
  6723.     when computing field width (we'll either print "Inf" (possibly
  6724.     with a sign) or "NaN").
  6725.  
  6726.     * pr-output.cc (pr_float): Handle Inf and NaN.
  6727.     * (pr_imag_float): Ditto.
  6728.  
  6729.     * pr-output.cc (set_format_style): Make format short set precision
  6730.     to 3 and max field width to 8.
  6731.  
  6732.     * pr-output.cc (pr_float): Don't print a sign for -0.0.
  6733.     * (pr_imag_float): Ditto.
  6734.  
  6735.     * pr-output.cc (all set_format functions): Return the actual field
  6736.     width computed or 0 if free format.  For complex, return both real
  6737.     and imaginary field widths.
  6738.     * Include pager.h for terminal_rows() and terminal_columns().
  6739.  
  6740.     * pr-output.cc (pr_complex): If imaginary part is -0.0, print a
  6741.     minus sign but convert the value to 0.0 before printing.
  6742.  
  6743.     * octave.cc (parse_and_execute (FILE *, int)): Don't use readline
  6744.     to read commands from files.
  6745.     * (parse_and_execute (char *, int)): Set reading_script_file
  6746.     before calling get_input_from_file.
  6747.  
  6748.     * Version 0.71.3.
  6749.  
  6750.     * src/Makefile.in (deps): New target.
  6751.     * Update dependencies using the output from running `make deps'.
  6752.  
  6753.     * pr-output.cc (set_output_prec_and_fw): New function.
  6754.     * (set_format_style): Use it.
  6755.     * (set_format functions): Use user_pref variables for precision
  6756.     and field width.
  6757.  
  6758.     * variables.cc (octave_real_scalar_variable): New function.
  6759.     * buitlins.cc (builtin_string_varaibles): Add output_precision and
  6760.     max_field_width to the list (really need a separate list for
  6761.     numeric values...).
  6762.     * user-prefs.cc (set_output_max_field_width): New function to be
  6763.     called when output_max_field_width changes.
  6764.     * (output_precision): Likewise, for output_precision.
  6765.  
  6766.     * sighandlers.cc (pipe_handler_error_count): New global variable.
  6767.     * (sigpipe_handler): Use it to keep from printing more than one
  6768.     broken pipe message between prompts.
  6769.     * (input.cc): Reset pipe_handler_error_count before printing the
  6770.     prompt.
  6771.  
  6772. Mon May 10 13:06:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6773.  
  6774.     * sighandlers.cc (sigpipe_handler): Issue warning and return
  6775.     instead of aborting.
  6776.  
  6777.     * user-prefs.cc (all sv_* functions): Don't delete previous value
  6778.     of a preference string if the new value is bogus.
  6779.  
  6780.     * user-prefs.cc (all sv_* functions and all functions that handle
  6781.     user preferences): Return 0 for success, -1 for failure.
  6782.     * symbtab.cc (symbol_record::define): Check return value of sv_fcn
  6783.     and restore previous value on failure.
  6784.     * symtab.h (sv_Function typedef): Change to return int, not void.
  6785.     * builtins.h (sv_Function typedef): Ditto.
  6786.  
  6787. Sun May  9 18:25:00 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6788.  
  6789.     * user-prefs.cc (all sv_* functions): Issue a warning if the user
  6790.     gives us something that's not a string.
  6791.  
  6792. Sat May  8 23:40:59 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6793.  
  6794.     * ColVector.cc (ColumnVector::min): Upper loop limit is len, not 0.
  6795.     * (ComplexColumnVector::min): Ditto.
  6796.     * RowVector.cc (RowVector::min): Ditto.
  6797.     * (ComplexRowVector::min): Ditto.
  6798.  
  6799. Fri May  7 18:41:29 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6800.  
  6801.     * pr-output.cc (set_format_style): New function, extracted from
  6802.     builtin_format().
  6803.     * t-builtins.cc (builtin_format): Call set_format_style to do real
  6804.     work.
  6805.  
  6806.     * pr-output.cc: New file for special formatted printing funcions.
  6807.     * tree-const.cc (tree_constant_rep::eval): Use new functions.
  6808.  
  6809.     * user-prefs.cc (sv_pager_binary): New function.
  6810.     * user-prefs.h (user_preferences) Add new field, pager_binary.
  6811.     * builtins.cc (builtin_string_variables): Add PAGER to the list.
  6812.     * utils.cc (default_pager): New function.
  6813.     * Makefile.in: Define DEFAULT_PAGER for utils.cc, not pager.cc.
  6814.     * pager.cc (get_pager): Delete function.
  6815.     * Use user_pref.pager_binary instead of calling get_pager().
  6816.  
  6817. Thu May  6 11:05:06 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6818.  
  6819.     * pager.cc (pager_buf): Declare as static pointer to ostrstream.
  6820.     * (initialze_pager): Delete old pager_buf and create new one for
  6821.     each batch of output.  This is needed because once str() is called
  6822.     for pager buf, it will no longer grow.
  6823.  
  6824.     * pager.cc (maybe_page_output): Take care of deleting buffer after
  6825.     str() is called.
  6826.     * (flush_output_to_pager): Likewise.
  6827.     * t-builtins.cc (builtin_ls): Likewise.
  6828.     * (builtin_set): Likewise.
  6829.     * (builtin_show): Likewise.
  6830.     * tc-extras.cc (process_format): Likewise.
  6831.     * (process_format): Likewise.
  6832.     * tree-plot.cc (tree_plot_command::eval): Likewise.
  6833.  
  6834. Wed May  5 10:45:39 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6835.  
  6836.     * g-builtins.cc (builtin_shell_command): Buffer characters with an
  6837.     ostrstream and call maybe_page_output instead of writing directly
  6838.     to cout.
  6839.     * (builtin_warranty): Likewise.
  6840.     * tc-extras (do_printf): Likewise.
  6841.     * tree.cc (tree_identifier::eval): Likewise.
  6842.     * (tree_assignment_expression::eval): Likewise.
  6843.     * (tree_multi_assignment_expression::eval): Likewise.
  6844.     * tree-const.cc (tree_constant_rep::eval): Likewise.
  6845.     * t-builtins.cc (builtin_help): Likewise.
  6846.     * (builtin_ls): Likewise.
  6847.     * (builtin_who): Likewise.
  6848.  
  6849.     * user-prefs.h user-prefs.cc (page_screen_output): New preference.
  6850.     * builtins.cc (string_variables): Add to list with default value
  6851.     of true.
  6852.  
  6853.     * input.cc (octave_gets): If interactive, call flush_to_pager()
  6854.     before prompting.
  6855.  
  6856.     * utils.cc (terminal_rows): Move to pager.cc
  6857.     * (terminal_columns): Likewise.
  6858.     * (get_pager): Likewise.
  6859.  
  6860.     * pager.h, pager.cc: New file to handle pager stuff.
  6861.     * src/Makefile.in: Fix things to distribute and compile them.
  6862.  
  6863.     * libcruft/Makefile.in (CRUFT_OBJ): Strip $(srcdir)/ and convert
  6864.     from .f to .o in two steps since some versions of GNU make strip
  6865.     the leading ./ from the output of $(wildcard), causing my pattern
  6866.     match to fail if compiling in the source tree.
  6867.  
  6868. Tue May  4 09:13:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6869.  
  6870.     * symtab.cc (symbol_record::define (symbol_record *)): Delete old
  6871.     name before saving new name.
  6872.     * (symbol_record::document): Likewise, for var.help and fcn.help.
  6873.  
  6874.     * parse.y (ABORT_PARSE): Renamed from DO_ABORT.
  6875.  
  6876. Mon May  3 01:00:04 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6877.  
  6878.     * tree.cc: Define destructors for every class in tree.h.  It
  6879.     appears that it should always be ok to delete everything in a
  6880.     command tree once we're done executing it.  Function definitions
  6881.     are still ok because the parser doesn't set global_command to the
  6882.     tree_function we've built (that's saved somewhere in the symbol
  6883.     table and shouldn't be deleted until we clear or redefine the
  6884.     function).
  6885.  
  6886.     * utils.cc (pathstring_to_vector): Do memory management here so
  6887.     callers don't have to.
  6888.     * (default_path): Likewise.
  6889.  
  6890.     * utils.cc (make_absolute): Return current_path (not a copy) since
  6891.     it is static.
  6892.     * (get_working_directory): Return the_current_working_directory
  6893.     (not a copy) since it is global.
  6894.  
  6895.     * utils.cc (cleanup_tmp_files): Delete filename when done.
  6896.  
  6897.     * parse.y: Replace output to cerr with calls to error() or warning().
  6898.     * DO_ABORT: New macro.  Use it instead of YYERROR for errors that
  6899.     we detect, and call yyerror since bison doesn't.
  6900.     * (param_list1): Detect invalid parameter lists.
  6901.     * (yyerror): Don't print pointer if it is past the end of the line.
  6902.  
  6903. Sun May  2 13:03:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6904.  
  6905.     * tc-extras.cc (process_format): Use ostrstream instead of a
  6906.     fixed-size character string to buffer the format.
  6907.  
  6908.     * utils.cc (terminal_rows): Get info from readline variable
  6909.     instead of hardcoded constants.
  6910.     * (terminal_columns): Likewise.
  6911.  
  6912.     * utils.cc (maybe_page_output): New function.
  6913.     * t-builtins.cc (builtin_help): Use it.
  6914.     * (builtin_who): Ditto.
  6915.     * Don't include procstream.h anymore since we no longer need it.
  6916.  
  6917.     * utils.cc (jump_to_top_level): Call run_all_unwind_protects ()
  6918.     before jumping back to the top level.
  6919.  
  6920. Sat May  1 20:59:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6921.  
  6922.     * unwind-prot.cc unwind-prot.h: New files to implement memory
  6923.     cleanup stuff.
  6924.     * src/Makefile.in: Distribute them.
  6925.  
  6926.     * Version 0.71.2.
  6927.  
  6928.     * computer.m: Delete file.
  6929.     * scripts/Makefile.in (computer.m): Add $(srcdir)/ prefix to
  6930.     computer.in.
  6931.  
  6932. Fri Apr 30 17:03:04 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6933.  
  6934.     * Matrix.h (<CLASS>::row (int i)): New function for extracting a
  6935.     row of a matrix where CLASS is one of Matrix, DiagMatrix,
  6936.     ComplexMatrix, or ComplexDiagMatrix.
  6937.     * (<CLASS>:: column (int i)): Likewise for columns.
  6938.     * (<CLASS>::row (char *s)): Likewise, but selection is done with a
  6939.     character string.  Currently we accept anything beginning with `F'
  6940.     or `f' to mean the first row and anything beginning with `l' or
  6941.     `L' to mean the last row.
  6942.  
  6943. Wed Apr 28 14:23:49 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6944.  
  6945.     * scripts/computer.in: New template file for computer.m.
  6946.     * scripts/Makefile.in (computer.m): Generate a custom computer.m
  6947.     file using $target_host_type.
  6948.     * (clean): Delete computer.m.
  6949.  
  6950.     * configure.in: If last argument is not empty, use its value as
  6951.     the TARGET.
  6952.     * If we aren't given a TARGET, use config.guess to find one.
  6953.     * Substitute target_host_type.
  6954.  
  6955.     * config.guess: New file, taken from gdb distribution.
  6956.     * Makefile.in: Distribute it.
  6957.  
  6958.     * tree-const.cc (force_numeric): New parameter, force_str_conv to
  6959.     allow us to ignore user preference on string to numeric
  6960.     conversion.
  6961.     * (make_numeric): Likewise.
  6962.  
  6963.     * tree.cc (tree_matrix::eval): Allow range constants in matrix
  6964.     lists by simply converting them to matrices.
  6965.     * Ditto for string constants.
  6966.  
  6967. Tue Apr 27 17:21:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6968.  
  6969.     * utils.cc (smells_like_X11): Delete unneeded function.
  6970.     * builtins.cc (install_builtins): Don't initialize
  6971.     graphics_terminal since it's no longer needed.
  6972.  
  6973.     * utils.cc (pathstring_to_vector): Call tilde_expand on each
  6974.     element of the path.
  6975.  
  6976.     * mappers.cc: Include float.h for DBL_MAX.
  6977.  
  6978. Wed Apr 21 19:31:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6979.  
  6980.     * mappers.cc (xisnan (Complex&)): Rename from isnan.
  6981.     * builtins.cc (mapper_functions): Use xisnan instead of isnan.
  6982.     * (install_builtins): Special case for linux for geenerating
  6983.     infinity and NaN.
  6984.  
  6985. Mon Apr 19 14:10:55 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  6986.  
  6987.     * Version 0.71.1 released.
  6988.  
  6989.     * symtab.cc (char **sorted_list (int& count)) New function.
  6990.     * (char **sorted_var_list (int& count)): Ditto.
  6991.     * (char **sorted_fcn_list (int& count)): Ditto.
  6992.     * t-builtins.cc (builtin_who): Check symbol count too.
  6993.  
  6994.     * utils.cc (send_to_plot_stream): Check is_open(), not just the
  6995.     state of the stream.
  6996.     * (close_plot_stream): Likewise.
  6997.  
  6998.     * procstream.cc, procstream.h: Rewrite, taking a hint from the GNU
  6999.     fstream class.
  7000.  
  7001. Sun Apr 18 17:40:54 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7002.  
  7003.     * t-builtins.cc (builtin_help): Don't call list_in_columns if
  7004.     there isn't anything to list.
  7005.  
  7006. Fri Apr 16 20:57:15 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7007.  
  7008.     * Makefile.in (DISTDIRS): List dld here.
  7009.     * (DISTSUBDIRS): Not here.
  7010.  
  7011. Thu Apr 15 12:17:08 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7012.  
  7013.     * Version 0.71 released.
  7014.  
  7015.     * scripts/*.m: Improve help messages for most files.
  7016.  
  7017.     * libcruft/Makefile.in: Make libcruft.a here.
  7018.     * libcruft/Makerules.in: Not here.
  7019.  
  7020.     * PLOTTING: New file.
  7021.     * Makefile.in: Add it to the list of files we distribute.
  7022.  
  7023.     * g-builtins.cc (builtin_shell_command): New function.
  7024.     * builtins.cc (general_functions): Add it to the list.
  7025.  
  7026.     * procstream.h, procstream.cc (iprocstream): New class.
  7027.  
  7028.     * lex.l (<MATRIX>{SN}*\]): Maybe insert a comma after reading a `]'.
  7029.  
  7030.     * t-builtins.cc (builtin_load): Do tilde expansion for the file name.
  7031.     * (builtin_save): Ditto.
  7032.  
  7033. Wed Apr 14 10:40:44 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7034.  
  7035.     * tree.cc (tree_function::eval): Until we have a proper call frame
  7036.     unwinding scheme, comment out previous change.
  7037.  
  7038.     * tree.cc (tree_matrix::eval): Brain Transplant.
  7039.     * (tree_matrix::length): New function.
  7040.  
  7041.     * tree-base.h (matrix_dir): Delete md_none, md_left, and md_up.
  7042.     The only valid values are md_unknown, md_right, and md_down.
  7043.  
  7044. Tue Apr 13 20:07:25 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7045.  
  7046.     * tree.h (tree_function::call_depth): New member variable.
  7047.     * tree.cc (tree_function::eval): Check it to make recursive
  7048.     function calls fail (waiting for proper symbol table handling).
  7049.  
  7050.     * utils.cc (pathstring_to_vector): Don't prepend `.' here.  We do
  7051.     that already in default_path() if the user hasn't given us a
  7052.     loadpath.
  7053.  
  7054.     * t-builtins.cc (builtin_help): Get help for M-files even if they
  7055.     haven't been compiled yet.
  7056.     * List M-files we find in the loadpath.
  7057.  
  7058.     * utils.cc (get_m_file_names): Split into two functions, add
  7059.     parameter to specify whether .m suffix is deleted.
  7060.  
  7061.     * lex.l (grab_help_text): New function.
  7062.     * (beginning_of_function): New global variable.
  7063.     * (%|#): Call grab_help_text() if at beginning of a function.
  7064.     * tree.cc (tree_identifier::document): New function.
  7065.     * parse.y (func_def2): Use it.
  7066.     * (help_buf): New global buffer for help text.
  7067.  
  7068. Mon Apr 12 00:31:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7069.  
  7070.     * utils.cc (get_m_file_names): New function.
  7071.     * variables.cc (make_name_list): Use it.
  7072.  
  7073.     * t-builtins.cc (list_in_columns): Put output on an strstream
  7074.     instead of in a String.
  7075.     * (builtin_help): Use an strstream instead of a String for buffering.
  7076.     * (builtin_who): Likewise.
  7077.  
  7078.     * g-builtins.cc (builtin_keyboard): New function.
  7079.     * builtins.cc (general_functions): Add to list.
  7080.  
  7081.     * tc-extras.cc (get_user_input): If the user enters `exit',
  7082.     `quit', or `return', return instead of eval'ing the string.
  7083.     * Don't abort on empty input.
  7084.     * Add additional argument to handle debugging via new `keyboard'
  7085.     function.  If doing debugging, keep reading until we see `exit',
  7086.     `quit', or `return'.
  7087.  
  7088.     * menu.m: New M-file.
  7089.  
  7090.     * New top level plotting functions:
  7091.  
  7092.         plot.m    semilogx.m  semilogy.m  loglog.m   polar.m
  7093.         title.m   xlabel.m    ylabel.m    grid.m     bar.m
  7094.             stairs.m  mesh.m      meshdom.m   contour.m
  7095.  
  7096.     * New internal plotting functions:
  7097.  
  7098.         plot_int.m    plot_2_s_s.m  plot_2_v_v.m  plot_2_v_m.m
  7099.         plot_2_m_v.m  plot_2_m_m.m  polar_int.m
  7100.  
  7101.     * New utility functions:
  7102.  
  7103.         is_scalar.m  is_vector.m  is_matrix.m
  7104.  
  7105. Sun Apr 11 11:10:29 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7106.  
  7107.     * t-buitlins.cc (builtin_ls): New function.
  7108.     * builtins.cc (text_functions): Add it to the list under the names
  7109.     `ls' and `dir'.
  7110.  
  7111. Sat Apr 10 15:13:05 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7112.  
  7113.     * procstream.cc (oprocstream::close): Set badbit for stream after
  7114.     it is closed.
  7115.  
  7116.     * utils.cc (close_plot_stream): New function.
  7117.     * g-buitlins.cc (closeplot): New builtin function.
  7118.     * builtins.cc (general_functions): Add to list.
  7119.  
  7120.     * lex.l (cant_be_identifier): New cruft to properly handle the
  7121.     plot command's `using', `title', and `with' keywords.
  7122.  
  7123. Fri Apr  9 09:38:25 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7124.  
  7125.     * configure.in: Warn if it looks like gnuplot isn't installed.
  7126.  
  7127.     * utils.cc (send_to_plot_stream): Check the user's preference for
  7128.     the gnuplot binary.
  7129.  
  7130.     * user-prefs.cc (sv_graphics_terminal): Delete function.
  7131.     * user-prefs.h (graphics_terminal): Delete variable.
  7132.  
  7133.     * tree-plot.cc (tree_subplot_using::print): Add argument to allow
  7134.     checking of columns given in using command and use it.
  7135.     * (tree_plot_command::eval): Change caller.
  7136.  
  7137.     * parse.y (title): Allow plot title to be any expression.
  7138.     * tree-plot.cc (subplot_list): Likewise.
  7139.  
  7140.     * tree-plot.cc (tree_plot_command::eval): Don't let lusers try to
  7141.     make 2D parametric plots, since that seems to crash gnuplot.
  7142.  
  7143.     * tree.cc (tree_identifier::parse_m_file): Don't try to stash
  7144.     m-file name or time parsed if we were actually executing a script
  7145.     file.
  7146.  
  7147.     * sombrero.m: New M-file to demonstrate 3D plotting.
  7148.  
  7149.     * parse.y (plot_options): Allow them to be specified in any order.
  7150.  
  7151.     * g-builtins.cc (builtin_purge_tmp_files): New function.
  7152.     * builtins.cc (general_functions): Add to list.
  7153.  
  7154.     * g-builtins.cc, g-builtins.h (builtin_plot): Delete.
  7155.     * builtins.cc (general_functions): Delete entry for builtin_plot.
  7156.  
  7157.     * t-builtins.cc (builtin_set): Check to see if the user is setting
  7158.     up parametric plotting.
  7159.     * tree-plot.cc (parametric_plot): New global variable.
  7160.     * tree_const.cc (save_three_d): New function.
  7161.     * tree-plot.cc (tree_subplot_list::print): Handle 3D plots.
  7162.  
  7163.     * Makefile.in: Delete everything having to do with distributing or
  7164.     making gnuplot.
  7165.     * configure.in: Likewise.
  7166.  
  7167. Thu Apr  8 10:02:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7168.  
  7169.     * utils.cc (send_to_plot_stream): New function.  Move declaration
  7170.     of plot_stream to utils.cc and make static.
  7171.  
  7172.     * t-builtins.cc (builtin_set): New function.
  7173.     * (builtin_show): Ditto.
  7174.  
  7175.     * lex.l: Handle set command.
  7176.     * (doing_set): Yet another global variable to control behavior of
  7177.     the lexer.
  7178.  
  7179.     * tree-plot.cc (tree_subplot_using::print): Print warning if scanf
  7180.     format string is given.
  7181.  
  7182.     * parse.y (ranges1): Allow lower and upper bounds to be optional.
  7183.     * tree-plot.cc (tree_plot_range::print): Make it work.
  7184.  
  7185.     * tree-plot.cc: New file, extracted from tree.cc.
  7186.  
  7187.     * sighandlers.cc (install_signals): New function.
  7188.     * (*_handler): New set of functions to handle signals that would
  7189.     otherwise cause us to abort.
  7190.     * (my_friendly_exit): Call exit from most signal_handlers to clean
  7191.     up tmp files, etc.
  7192.  
  7193.     * lex.l (do_string_escapes): Correctly handle '' quotes.
  7194.     * Warn about unrecognized escape sequences but convert them to the
  7195.     escaped character anyway.
  7196.     * (EXPON): New definition.  Use it and ? qualifier to shorten the
  7197.     expressions for matching numbers.
  7198.     * (ECHAR): New definition.  Use it to correctly match
  7199.     backslash-escaped characters in strings.
  7200.     * Definitions: Surround multi-character definitions in ()'s to
  7201.     avoid potential problems with things like {DEF}*.
  7202.     * (QQ): Rename from DQ.
  7203.     * (DQSTR): New definition for strings in double quotes.
  7204.     * (DQSTRING): New start state.  Recognizing a naked " puts us here.
  7205.     * ("\n"): Turn off quote_is_transpose at the beginning of each line.
  7206.     * Use error functions instead of writing messages directly.
  7207.     * Don't include iostream.h -- we don't need it now.
  7208.     * Do include error.h.
  7209.  
  7210. Wed Apr  7 13:12:17 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7211.  
  7212.     * sighandlers.h, sighandlers.cc: New files for signal handling
  7213.     functions.
  7214.     * Makefile.in: Include them in the usual places.
  7215.     * octave.cc (interrupt_handler): Move to sighandlers.cc and rename
  7216.     to sigint_handler.
  7217.  
  7218.     * utils.cc (mark_for_deletion): New function.
  7219.     * octave.cc (cleanup_tmp_files): New function.
  7220.     * octave.cc (main): Register cleanup_tmp_files with atexit
  7221.     (on_exit for sun).
  7222.  
  7223.     * Stack.h: Template based stack class converted from libg++
  7224.     genclass files.
  7225.     * SLStack.h: Likewise.
  7226.     * (SLStack::pop): Avoid apparent bug in SLList::remove_front.
  7227.  
  7228. Tue Apr  6 10:01:52 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7229.  
  7230.     * lex.l (almost_match): New function.
  7231.     * (plot_style_token): New function.
  7232.  
  7233.     * t-buitlins.cc: Include procstream.h instead of procbuf.h.
  7234.     * (builtin_help): Simplyfy opening of process output stream.
  7235.     * (builtin_who): Likewise.
  7236.  
  7237. Mon Apr  5 13:48:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7238.  
  7239.     * tc-extras.cc (tree_constant_to_scalar): Move to tree-const.cc
  7240.     and make it a member function called to_scalar.
  7241.     * (tree_constant_to_vector): Likewise.
  7242.     * (tree_constant_to_matrix): Likewise.
  7243.  
  7244.     * procstream.h, procstream.cc: New files/classes that implement
  7245.     an ostream to a process.  Built on top of procbuf from libg++.
  7246.     * src/Makefile.in: Add them to the lists of files/objects.
  7247.  
  7248. Sat Apr  3 23:11:56 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7249.  
  7250.     * Lots of clean-up changes to parse.y, tree.cc, tree.h, and
  7251.     tree-base.h.  Use more specific types than just <tree *> for
  7252.     nonterminals.  This allows us to have fewer virtual functions in
  7253.     the base class.  Safer.  Cleaner.  Should have always been this
  7254.     way...
  7255.  
  7256. Fri Apr  2 10:04:32 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7257.  
  7258.     * parse.y, lex.l: Fix grammar to accept plot command very similar
  7259.     to the gnuplot plot command.
  7260.  
  7261. Wed Mar 31 13:11:56 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7262.  
  7263.     * tree.cc (eval_undefined_error): Until we can figure out how to
  7264.     clear names without causing problems later on, just remove the
  7265.     symbol name.
  7266.  
  7267.     * tree.h (tree_plot_command): New class.
  7268.     * (tree_plot_limits): Ditto.
  7269.     * (tree_plot_range): Ditto.
  7270.     * (tree_subplot_list): Ditto.
  7271.     * (tree_subplot_using): Ditto.
  7272.     * (tree_subplot_style): Ditto.
  7273.  
  7274.     * tree-base.h (command_type): Add plot_command to list.
  7275.  
  7276. Mon Mar 29 09:53:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7277.  
  7278.     * find_exec.c (ABSOLUTE_FILENAME_P): Also return true if the
  7279.     given filename begins with `.'.
  7280.  
  7281.     * DAE.cc, DAE.h, DAEFunc.h, tc-dassl.cc: Make sure all calls to
  7282.     dassl and the user-supplied functions have consistent argument
  7283.     lists.
  7284.  
  7285.     * octave.cc (raw_program_name): New global variable to hold the
  7286.     unprocessed argv[0].  This is to help dld find the absolute path
  7287.     to the executing program.
  7288.     * (initialize_globals): Pass in argc and argv from main.
  7289.     Initialize raw_prog_name.
  7290.  
  7291.     * builtins.cc (general_functions): Correct help message for dassl.
  7292.     * g-builtins.cc (dassl_usage): Likewise.
  7293.  
  7294.     * src/Makefile.in: Lots of changes to make things work with or
  7295.     without dld.
  7296.     * Makefile.in: Likewise.
  7297.     * configure.in: Likewise.
  7298.  
  7299.     * dld: New directory, containing our copy of the dld sources.
  7300.  
  7301.     * dynamic-ld.cc, dynamic-ld.h: New files to implement dynamic
  7302.     loading functions.
  7303.     * src/Makefile.in: Add them to the distribution, compile them if
  7304.     doing dynamic loading.
  7305.  
  7306. Sun Mar 28 11:03:15 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7307.  
  7308.     * configure.in: When looking for Fortran compilers, check for fc
  7309.     last to avoid confusion with some vendor's /bin/sh fc builtin.
  7310.     * Handle new argument --with-dld.
  7311.  
  7312.     * g-builtins.cc (builtin_warranty): Add 1993 to list of copyright
  7313.     dates.
  7314.  
  7315. Sat Mar 27 17:58:23 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7316.  
  7317.     * tc-extras.cc: Rename from tree-extras.cc.
  7318.     * tc-colloc.cc, tc-dassl.cc, tc-det.cc tc-eig.cc, tc-fft.cc,
  7319.     tc-fsolve.cc, tc-fsqp.cc, tc-ifft.cc, tc-inv.cc, tc-lsode.cc,
  7320.     tc-lu.cc, tc-npsol.cc, tc-qr.cc, tc-quad.cc, tc-rand.cc,
  7321.     tc-svd.cc: Split individual functions from tree-extras.cc.
  7322.  
  7323.     * g-builtins.cc (npsol_usage): Improve message.
  7324.     * (dassl_usage): Likewise.
  7325.     * (builtin_lsode): Likewise.
  7326.     * (builtin_fsolve): Likewise.
  7327.     * (builtin_quad): Likewise.
  7328.     * builtins.cc (general_functions): Improve corresponding messages.
  7329.  
  7330.     * libcruft/fftpack: New directory for fftpack functions.
  7331.     * libcrutf/fftpack/*.f: Add implicit double precision (a-h,o-z) at
  7332.     the top of every subroutine.
  7333.  
  7334.     * tree-extras.cc (fft): Allow propagation of empty matrices.
  7335.     * (ifft): Ditto.
  7336.  
  7337.     * Matrix.cc (Matrix::fourier): New function.
  7338.     * (Matrix::ifourier): Ditto.
  7339.     * mx-inlines (make_complex): New function.
  7340.     * tree-extras.cc (fft): Use Matrix::fourier instead of doing real
  7341.     to complex conversion here and calling ComplexMatrix::fourier.
  7342.     * (ifft): Likewise, for ifourier.
  7343.  
  7344. Sat Mar 27 17:56:59 1993  Fook Fah Yap (ffy@eng.cam.ac.uk)
  7345.  
  7346.     * Matrix.cc (ComplexMatrix::fourier): New function for fft.
  7347.     * (ComplexMatrix::ifourier): New function for inverse fft.
  7348.  
  7349.     * builtins.cc (general_functions): Add fft and ifft to the list of
  7350.     builtin functions.
  7351.  
  7352.     * g-builtins.cc (fft): New function.
  7353.     * (ifft): Ditto.
  7354.  
  7355.     * tree-extras.cc (fft): New function.
  7356.     * (ifft): Ditto.
  7357.  
  7358. Sat Mar 27 13:53:39 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7359.  
  7360.     * octave.cc (usage_string): New file scope constant.
  7361.     * (getopt_option_string): Ditto.
  7362.  
  7363.     * error.cc: Declare all arguments const since we don't change them.
  7364.  
  7365.     * utils.cc (print_str_or_null): Delete unused function.
  7366.     * utils.h: Delete declaration.
  7367.  
  7368.     * tc-assign.cc, tc-index.cc, tc-inlines.cc, tree.cc,
  7369.     tree-const.cc: More error message cleanups.
  7370.  
  7371.     * tree-const.cc (print_if_string): Don't write to cerr
  7372.     unconditionally.
  7373.  
  7374. Fri Mar 26 22:00:18 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7375.  
  7376.     * tree-extras.cc (min): Avoid function calls as arguments for MIN.
  7377.     * (column_min): Ditto.
  7378.     * (max): Likewise, for MAX.
  7379.     * (column_max): Ditto.
  7380.  
  7381.     * tree-const.h (NINT): Make it an inline function instead of a
  7382.     macro.
  7383.  
  7384.     * tree-extras.cc (fill_matrix (tree_constant&, double, char*)):
  7385.     Convert to scalar type for complex values too.
  7386.  
  7387.     * error.h (panic_impossible): New macro to be used in place of
  7388.     assert (0) calls.
  7389.     * All .cc files: Replace calls to assert (0) and abort () with
  7390.     panic_impossible ().
  7391.  
  7392.     * Many .cc files:: Replace many instances of `cerr << ...' with
  7393.     calls to gripe() functions.
  7394.  
  7395.     * gripes.h, gripes.cc: New functions for reporting common errors.
  7396.     * Makefile.in: Include them in the usual places.
  7397.  
  7398. Thu Mar 25 18:42:49 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7399.  
  7400.     * Many .cc files:: Replace many instances of `cerr << ...' with
  7401.     calls to error() functions.
  7402.  
  7403.     * error.h, error.cc: New functions for reporting errors in a
  7404.     consistent way.
  7405.     * Makefile.in: Include them in the usual places.
  7406.  
  7407. Wed Mar 17 17:29:44 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7408.  
  7409.     * symtab.cc (symbol_table::save): New functions.
  7410.     * t-buitlins.cc (builtin_save): Use new functions for saving
  7411.     symbols.  Handle case of saving all variables.
  7412.  
  7413.     * g-builtins.cc (builtin_pause): If one argument is given, pause
  7414.     for that many seconds before continuing.  Otherwise, wait for user
  7415.     input.
  7416.  
  7417.     * symtab.cc (clear): Actually delete undefined symbol_records and
  7418.     remove their names from the list.
  7419.  
  7420.     * lex.l (lookup_identifier): New function.  Avoid putting global
  7421.     names in the local symbol table.
  7422.     * ({IDENT}): Use it
  7423.     * ({IDENT}/{S}*=): Ditto.
  7424.  
  7425.     * tc-index.cc (do_scalar_index (tree_constant*, int)): Make
  7426.     indexing like a([1,1,1,1]) work for scalars.  GAG.
  7427.  
  7428. Tue Mar 16 20:08:23 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7429.  
  7430.     * t-buitlins.cc (builtin_cd): Call tilde_expand (from readline) on
  7431.     the argument.
  7432.  
  7433.     * lex.l (discard_until): Delete unused function.
  7434.     * When reading numbers, abort if scanf fails to read a number that
  7435.     we think it should.
  7436.     * (IDENT): New macro to match identifiers.
  7437.     * ([_a-zA-Z][_a-zA-Z0-9]*): Use the / operator for trailing
  7438.     context and split into two cases instead of trying to do the
  7439.     lookahead ourselves.
  7440.  
  7441.         * lex.l (do_comma_insert_check): Return the value yyleng had
  7442.         before yyinput() is called.
  7443.         * (DO_COMMA_INSERT_CHECK): New macro.  This avoids the use of
  7444.         unput() in do_comma_insert_check() since there seems to be a bug
  7445.         in flex when calling unput() for '\n'.
  7446.  
  7447.     Note that this change is necessary if we want to use yyless()
  7448.     since we cant call yyless() from outside of yylex(), because
  7449.     Flex's yyless() is a macro that uses some variables local to
  7450.     yylex().
  7451.  
  7452. Mon Mar 15 11:03:43 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7453.  
  7454.     * tree.cc (tree_matrix::eval): Undo part of previous change to
  7455.     make a = [1,2;3,4]; [a,a;a,a] work again.
  7456.  
  7457.     * parse.y (input): Don't abort for simple_list followed by EOF.
  7458.  
  7459. Sun Mar 14 14:38:56 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7460.  
  7461.     * RowVector.cc (RowVector::operator << ()): Insert a space between
  7462.     each element.
  7463.     * (ComplexRowVector::operator << ()): Ditto.
  7464.  
  7465.     * g-buitlins.cc (plot): Don't declare plot_prog or plot_term as
  7466.     static, and don't delete them.
  7467.  
  7468.     * Matrix.h (all checkelem functions): Don't check for range errors
  7469.     if NO_RANGE_CHECK is defined.
  7470.  
  7471. Sat Mar 13 10:18:51 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7472.  
  7473.     * Matrix.cc (ComplexMatrix::prod): Make it work.
  7474.  
  7475. Thu Mar 11 00:08:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7476.  
  7477.     * Matrix.h (ellum): Delete function.
  7478.     * Declare and define new const elem, checkelem, and operator()
  7479.     functions.
  7480.  
  7481.     * ColVector.cc, DiagMatrix.cc, RowVector.cc, Matrix.cc, ODE.cc,
  7482.     LinConst.cc, FEGrid.cc, DAE.cc, Bounds.cc, FEGrid.h:
  7483.     Change all callers.
  7484.     * tree-const.cc, tree-extras.cc, xdiv.cc, xpow.cc: Ditto.
  7485.  
  7486.     * tree.cc (tree_matrix::eval): Improve row and column mismatch
  7487.     checking -- [[1,2];[3,4]] works now, and [1,2;3,4,[5,6]] is
  7488.     rejected.
  7489.     * Reformat error messages to include `error:' prefix.
  7490.  
  7491. Wed Mar 10 14:02:09 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7492.  
  7493.     * lex.l (do_comma_insert): New global variable.
  7494.     * (reset_parser): Reset it.
  7495.     * lex.l (do_comma_insert_check): New function.  Call it wherever a
  7496.     token can be directly followed by '['.
  7497.     * (\[{S}*): Check the value of do_comma_insert.
  7498.  
  7499.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only look for names in the
  7500.     current symbol table.
  7501.  
  7502.     * parse.y (word_list_cmd): Special case to disallow use of clear
  7503.     inside a fuction body.
  7504.  
  7505.     * parse.y (CLEAR): New %token.
  7506.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Return it if token is "clear".
  7507.  
  7508.     * t-builtins.cc (builtin_clear): Allow global symbols to be
  7509.     cleared.
  7510.  
  7511.     * symtab.cc (symbol_table::undefine): Clarify comment.
  7512.     * (symbol_table::clear): Don't actually remove names from the
  7513.     table, just force them to be undefined.
  7514.  
  7515.     * tree.h (tree_function): Delete unused data member `id'.
  7516.     * tree.cc (tree_function constructors): Don't initialize id.
  7517.  
  7518. Mon Mar  8 15:50:28 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7519.  
  7520.     * Version 0.70 released.
  7521.  
  7522.     * src/Makefile.in: Update dependencies.
  7523.  
  7524.     * tree.h: Include stdio.h, for FILE.
  7525.  
  7526.     * gnuplot-build: For now, always define -DNOGAMMA.
  7527.     * configure.in: Don't check for gamma().
  7528.  
  7529.     * libcruft/Makerules.in: Don't use lib.a(obj.o) style dependencies
  7530.     because it's too slow for large archives.
  7531.     * liboctave/Makefile.in: Ditto.
  7532.  
  7533. Sun Mar  7 16:33:39 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7534.  
  7535.     * octave.cc (parse_and_execute): Save and restore current column
  7536.     number.  Set input line and column number to zero.
  7537.     * tree.cc (parse_m_file): Likewise.
  7538.  
  7539.     * tree.cc (tree_identifier::parse_m_file (FILE*, int*)): New
  7540.     function.  If a parse error occurs, ensure that the symbol is
  7541.     cleared from the global symbol table.
  7542.     * (tree_identifier::parse_m_file (char*, int): Use it.
  7543.  
  7544.     * tree.cc (tree_identifier::do_lookup): New function.
  7545.     * (tree_identifier::eval): Use it.
  7546.  
  7547.     * utils.cc (decode_prompt_string): Really do use value of PWD.
  7548.  
  7549.     * user_prefs.cc (sv_loadpath, sv_ps1, sv_ps2, sv_pwd,
  7550.     sv_gnuplot_binary, sv_graphics_terminal): New functions.
  7551.     * (sv_graphics_terminal): Warn if terminal isn't valid, but set it
  7552.     anyway (it's too late to do anything by the time the function is
  7553.     called).
  7554.     * In functions that use these variables:  Use the value from the
  7555.     user_pref structure instead of doing a symbol table lookup.
  7556.  
  7557.     * builtins.cc (builtin_string_variables): Add functions to call
  7558.     for LOADPATH, PS1, PS2, PWD, gnuplot_binary, and graphics_terminal.
  7559.  
  7560.     * builtins.cc (PS2): New builtin_string_variables.  Set default
  7561.     value to "> ".
  7562.     * input.cc (octave_gets): Use it instead of no prompt for
  7563.     continued input.
  7564.  
  7565.     * parse.y (yyerror): Use line, column, file name, and text of
  7566.     current input line to print better parse error messages.
  7567.  
  7568.     * lex.l (NEW_MATRIX): New exclusive start state.  Need this to be
  7569.     able to match \[{SN}* _and_ get secondary prompting right.
  7570.  
  7571.     * input.cc (octave_read): Keep track of current input line.
  7572.     * tree.cc (parse_m_file): Save and restore current line number.
  7573.  
  7574.     * lex.l (all patterns): Keep track of current input column.
  7575.     * (fixup_column_count): New function to deal with patterns that
  7576.     match more than one line.
  7577.  
  7578.     * input.h, input.cc (current_input_line): Global pointer to
  7579.     the text of the current input line.
  7580.  
  7581.     * parse.y, parse.h (input_line_number, current_input_column): New
  7582.     global variables.
  7583.  
  7584.     * Almost all source files: Finish (for now, at least) the
  7585.     reorganization we started for global variables.
  7586.  
  7587. Wed Mar  3 14:49:59 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7588.  
  7589.     * tc-assign.cc, tc-index.cc, tc-inlines.cc: New files, split out
  7590.     from tree-const.cc.
  7591.  
  7592.     * Almost all source files: reorganize so that all global data is
  7593.     declared in some include file or another.  It probably wouldn't
  7594.     hurt to do some more reorganizing to try to eliminate the amount
  7595.     of global information...
  7596.  
  7597. Tue Mar  2 20:49:35 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7598.  
  7599.     * variables.h, variables.cc: New files for handling things that
  7600.     need symbol table information.  Lots of files changed to include
  7601.     variables.h, which now includes the extern declarations for the
  7602.     symbol tables.  The declarations of the symbol tables are now in
  7603.     variables.cc, but they are still initialized in octave.cc.
  7604.  
  7605. Mon Mar  1 11:35:03 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7606.  
  7607.     * builtins.h (builtin_string_variables): New field, sv_function,
  7608.     holds a pointer to the function to call when a variable changes.
  7609.     * builtins.cc (string_variables): Initialize sv_function field.
  7610.     * (install_builtins): While installing builtin string variables,
  7611.     stash sv_function and, if it isn't NULL, call it to initialize
  7612.     global variable user_pref.
  7613.  
  7614.     * symtab.h (symbol_record): New field, sv_fcn, holds a pointer to
  7615.     the function to call when a variable changes.
  7616.     * symtab.cc (symbol_record::define): Call sv_fcn if it isn't NULL.
  7617.     * symtab.cc (symbol_record::set_sv_function): New function.
  7618.  
  7619.     * utils.cc, parse.y, tree.cc, tree-extras.cc, tree-const.cc,
  7620.     idx-vector.cc, builtins.cc, symtab.cc: Instead of calling
  7621.     functions like do_fortran_indexing(), get the user's preference
  7622.     from the global struct user_pref.
  7623.  
  7624.     * utils.h, utils.cc: Delete all functions like do_fortran_indexing()
  7625.     that lookup user variables to find integer values.
  7626.     * user-prefs.h, user-prefs.cc: Move them here, but instead of
  7627.     returning values, set elements of the new global struct user_pref.
  7628.  
  7629.     * user-prefs.h, user-prefs.cc: New files for handling global
  7630.     variables for user preferences.
  7631.     * Makefile.in: Add them to the SOURCES and INCLUDES macros.
  7632.  
  7633.     * bsd-math/{acosh,asinh,atanh,log1p}.c: Declare all external
  7634.     functions used in each file since they might not be in math.h.
  7635.     * bsd-math/{scalb,copysign,logb,finite,drem,sqrt}.c: New files
  7636.     from BSD's support.c.  Only using scalb, copysign, logb, and
  7637.     finite for now.
  7638.  
  7639.     * configure.in: Move tests for f77 closer to the top.
  7640.     * Allow configuration to proceed even if we can't find a Fortran
  7641.     compiler or f2c.
  7642.     * Use `here' documents instead of multiple echos for multi-line
  7643.     messages.
  7644.     * Imrpoved checking for missing math functions.
  7645.  
  7646. Sun Feb 28 17:45:53 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7647.  
  7648.     * test/Makefile.in (check): Try to avoid errors from cp.
  7649.  
  7650.     * mappers.cc (xfinite): Put test for HAVE_FINITE first.
  7651.  
  7652.     * libcruft/Makerules.in (LIBCRUFT_DEPEND): Use `=' in assignment
  7653.     instead of `:='.
  7654.  
  7655.     * liboctave/Makefile.in: Make an explicit list of sources instead
  7656.     of using $(wildcard).
  7657.  
  7658. Thu Feb 25 20:18:12 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7659.  
  7660.     * bsd-math/copysign.c: New file.  HP's don't have this?
  7661.     * configure.in (LIBOBJS): Also check for copysign, log1p, and
  7662.     log__L.  For each missing user-level function, add -DFOO_MISSING=1
  7663.     to DEFS.
  7664.     * src/missing-math.h: For each function we declare, check the
  7665.     corresponding XXX_MISSING macro.  Add declarations for copysign
  7666.     and log1p.
  7667.  
  7668. Wed Feb 24 20:39:32 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7669.  
  7670.     * lex.l (<MATRIX>{SN}*\]/{S}*==): Change scanning pattern to
  7671.     <MATRIX>{SN}*\]{S}*/== in order to keep flex from generating any
  7672.     backtracking code.
  7673.     * (<MATRIX>{SN}*\]/{S}*=): Likewise.
  7674.  
  7675. Tue Feb 23 02:45:00 1993  John W. Eaton  (jwe@ward.che.utexas.edu)
  7676.  
  7677.     * Version 0.69 released.
  7678.  
  7679.     * mappers.cc [_AIX && __GNUG__] : Provide a definition for
  7680.     finite(), since whatever version we get from the system when using
  7681.     g++ doesn't work (note that it does seem to work with gcc, xlc,
  7682.     and xlC).
  7683.  
  7684.     * bugs.texi: Note that the math.h file from libg++ declares
  7685.     finite() incorrectly for some systems.
  7686.  
  7687. Mon Feb 22 02:04:16 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7688.  
  7689.     * configure.in: Look for runtest, but only believe that it exists
  7690.     if we can also find expect.
  7691.     * test/Makefile.in (check): Run tests in build directory, not
  7692.     source directory.
  7693.  
  7694.     * tree.cc (reading_script_file): New global variable.
  7695.     * (parse_m_file): Use it, and properly save and restore state so
  7696.     that nested script files will work.
  7697.  
  7698.     * octave.cc (parse_and_execute): Properly save and restore state
  7699.     so that nested script files will work.
  7700.     * Don't close input file here.
  7701.  
  7702.     * input.cc (get_input_from (FILE*)): Don't declare mf_instream
  7703.     static.  Set mf_instream if reading and M-file or a script file.
  7704.  
  7705.     * parse.y: Minor changes to accomodate new lexer.
  7706.  
  7707.     * lex.l: Major overhaul in an attempt to do better string
  7708.     handling.  Looks much simpler and even seems to work.
  7709.     * (do_string_escapes): New function.
  7710.  
  7711. Sat Feb 20 00:40:32 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7712.  
  7713.     * g-builtins.cc (builtin_npsol): If npsol is missing, return empty
  7714.     matrices for x and phi, and -1 for inform.
  7715.  
  7716.     * num2str.m: Use %g, not %f.
  7717.  
  7718.     * tree.cc (parse_m_file): Save and restor curr_sym_tab, because
  7719.     yyparse may mess with it if it encounters a function definition.
  7720.     * tree-extras.cc (eval_string): Ditto
  7721.     * octave.cc (parse_and_execute): Ditto
  7722.  
  7723.     * Makefile.in (DISTDIRS): Add bsd-math to list.
  7724.  
  7725.     * src/Makefile.in (LIBOBJS): New macro, value set by configure.
  7726.     (vpath): Add @srcdir@/../bsd-math for LIBOBJS.
  7727.     (octave): Add $(LIBOBJS) to deps.
  7728.     * gnuplot-build/Makefile.in: Likewise, for notgnuplot.
  7729.  
  7730.     * configure.in: Use AC_REPLACE_FUNCS to Check for acosh, asinh,
  7731.     atanh, and gamma.
  7732.  
  7733.     * bsd-math: New directory for functions from the BSD math library
  7734.     to use as replacements for missing functions.
  7735.  
  7736.     * parse.y (semi_comma, comma_semi): New rules.
  7737.     (simple_list, simple_list1): Use them to allow empty statements.
  7738.     (list, list1): Likewise.  This allows empty commands as long as
  7739.     the empty command doesn't contain any newlines.
  7740.  
  7741.     * parse.y (simple_assign): New rule, allows things like a = b = c.
  7742.     (multi_assign): Extracted from assignment.
  7743.     (assignment): Split into simple_assign and multi_assign.
  7744.     (expression): Allow '(' simple_assign ')' to be an expression.
  7745.  
  7746.     * tree-extras.cc (eval_string): Return result of last expression
  7747.     evaluated, to make things like `eval ('1+1;')*2' work.
  7748.  
  7749. Fri Feb 19 19:45:21 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7750.  
  7751.     * g-builtins.cc (builtin_pwd): Use getcwd, which is defined in
  7752.     unistd.h, instead of getwd, which seems to be a BSDISM.
  7753.     * utils.cc (decode_prompt_string): Ditto.
  7754.     * (get_working_directory): Ditto.
  7755.  
  7756.     * arith_ops.cc (DIVIDE_BY_ZERO_ERROR):  Don't rely on
  7757.     HAVE_IEEE_MATH, use HAVE_ISINF, HAVE_FINITE, and HAVE_ISNAN
  7758.     instead.
  7759.     * configure.in: Don't define HAVE_IEEE_MATH.
  7760.  
  7761.     * tree-extras.cc: Include stdio.h for FILE.
  7762.  
  7763. Thu Feb 18 10:17:38 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7764.  
  7765.     * tree.cc (gobble_leading_white_space): New function.
  7766.     * (is_function_file): New function.
  7767.  
  7768.     * (parse_m_file): Handle case of .m file being just a file of
  7769.     commands to execute.
  7770.     * Add optional argument to specify whether to execute a script
  7771.     file.
  7772.     * Return whether a script file was executed.
  7773.     * (tree.cc, tree-extras.cc): Change callers.
  7774.  
  7775.     * octave.cc (parse_and_execute): new functions.
  7776.     * (execute_startup_files): Use them.
  7777.  
  7778.     * lex.l (<COMMENT>\n): Don't gobble new line.
  7779.  
  7780.     * num2str.m: Don't print '\n'.
  7781.  
  7782. Wed Feb 17 21:59:55 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7783.  
  7784.     * mappers.cc: Simplify and correct finite, isinf, isnan functions.
  7785.     * test/octave/t7.oct: New test for finite, isinf, and isnan
  7786.     functions.
  7787.  
  7788.     * configure.in: Define HAVE_IEEE_MATH if isnan and either finite
  7789.     or isinf is available.
  7790.  
  7791.     * builtins.cc (mapper_functions): Check HAVE_ISNAN instead of
  7792.     HAVE_IEEE_MATH to determine whether or not to define isnan().
  7793.  
  7794.     * mappers.cc: Don't check for HAVE_IEEE_MATH.  Just check for
  7795.     individual functions directly.
  7796.  
  7797.     * g-builtins.cc (npsol_usage): Correct usage message.
  7798.  
  7799.     * g-builtins.cc: Don't include unistd.h unless HAVE_UNISTD_H is
  7800.     defined.
  7801.     * t-builtins.cc: Ditto.
  7802.     * utils.cc: Ditto.
  7803.  
  7804. Tue Feb 16 00:35:44 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7805.  
  7806.     * Version 0.68 released.
  7807.  
  7808.     * tree.cc (parse_m_file): Set reading_m_file before calling
  7809.     get_input_from_file.
  7810.     * Don't mess with current_infile.
  7811.  
  7812.     * input.cc (get_input_from_file): Set mf_instream if we are
  7813.     reading an M-file.  Otherwise, set rl_instream, (even if we aren't
  7814.     really using readline -- this is just the `normal' input stream).
  7815.     * Don't use current_infile.
  7816.     * (octave_read): If not interactive, check reading_m_file to
  7817.     determine where to look for input.
  7818.  
  7819.     * octave.cc (main): Don't use readline if we aren't interactive.
  7820.  
  7821.     * libcruft/misc/Makefile.in (local-dist): Make sure we don't
  7822.     distribute a bogus d1mach.f.
  7823.     (dist): Ditto.
  7824.  
  7825.     * tree-extras.cc (convert_to_ans_assign): New global variable.
  7826.     (eval_string): Conditionally turn off assignment to `ans', for
  7827.     get_user_input ().
  7828.     * parse.y (ans_expression): Use it.
  7829.     * lex.l (reset_parser): Reset it.
  7830.  
  7831.     * g-builtins.cc (builtin_input): New function.
  7832.     * builtins.cc (general_fucntions): Add it to the list.
  7833.     * tree-extras.cc (get_user_input): Do most of the real work.
  7834.  
  7835. Mon Feb 15 01:14:40 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7836.  
  7837.     * t-builtins.cc (load_variable): New function.
  7838.     (builtin_load): Use it.
  7839.  
  7840.     * Makefile.in (SUBDIRS): Add the test directory.
  7841.     (check): Don't depend on all.
  7842.  
  7843. Sat Feb 13 05:17:53 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7844.  
  7845.     * tree-extras.cc (determinant, lu, matrix_exp, matrix_log,
  7846.     matrix_sqrt): Handle empty matrix argument.
  7847.  
  7848.     * Matrix.h: Add constructors of the form Matrix (double a) and
  7849.     ColumnVector (double a) to make it even easier to form single
  7850.     element vectors.
  7851.  
  7852. Fri Feb 12 03:27:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7853.  
  7854.     * octave.cc (main): Add -v option that will print the version
  7855.     string and quit with a successful exit status.
  7856.  
  7857. Thu Feb 11 00:46:34 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7858.  
  7859.     * tree-extras.cc (eig): If given an empty argument, return enough
  7860.     empty matrices to fill all possible LHS variables.
  7861.     (qr): Likewise.
  7862.     (svd): Likewise.
  7863.  
  7864.     * tree-const.cc (fortran_style_matrix_assignment): Do the right
  7865.     thing if LHS is an empty matrix.
  7866.  
  7867.     * tree-extras.cc (qr): Handle empty matrix argument.
  7868.  
  7869.     * Matrix-ext.cc (QR): Make it work (really!).
  7870.     (ComplexQR): Ditto.
  7871.  
  7872. Wed Feb 10 00:56:31 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7873.  
  7874.     * xdiv.cc (xdiv (ComplexMatrix& a, ComplexMatrix& b)): Do
  7875.     btmp.solve (atmp), like the other three xdiv's.  Argh!
  7876.  
  7877.     * tree-extras.cc (eval_string): New function.  Mostly works but
  7878.     could be very fragile.  We desperately need some sort of
  7879.     `unwind-protect' scheme to avoid disaster when octave is
  7880.     interrupted.
  7881.  
  7882.     * g-builtins.cc (builtin_eval): Instead of just aborting, call
  7883.     eval_string if given one argument.
  7884.  
  7885.     * input.cc (octave_read): If get_input_from_eval_string is
  7886.     nonzero, stuff current_eval_string into buf for flex to read.
  7887.  
  7888.     * tree-extras.cc (char *current_eval_string): New global variable
  7889.     for eval().
  7890.     * (int get_input_from_eval_string): Ditto.
  7891.  
  7892.     * Update copyright notices to include 1993 (now that it's
  7893.     February...).
  7894.  
  7895. Tue Feb  9 14:35:08 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7896.  
  7897.     * Version 0.67 released.
  7898.  
  7899.     * tree-extras.cc, tree-const.cc: Check the value of the variable
  7900.     `propagate_empty_matrices' to decide what to do about empty
  7901.     matrices in binary and unary operations and some function calls.
  7902.  
  7903.     * builtins.cc (builtin_string_variables): New global variable
  7904.     `propagate_empty_matrices' with initial value `warn'.
  7905.     * utils.cc (propagate_empty_matrices): New function.
  7906.  
  7907. Mon Feb  8 19:46:51 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7908.  
  7909.     * tree-const.cc: Finish changes required to make zero-one indexing
  7910.     work for indexing and assignment.
  7911.  
  7912. Sat Feb  6 15:54:10 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7913.  
  7914.     * builtins.cc (builtin_string_variables): New global variable
  7915.     `prefer_zero_one_indexing' with initial value `false'.
  7916.     * utils.c (prefer_zero_one_indexing): New function.
  7917.  
  7918. Fri Feb  5 13:03:14 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7919.  
  7920.     * idx-vector.h, idx-vector.cc: Major overhaul to help with
  7921.     zero-one style indexing.
  7922.     * tree-const.cc (matrix_to_index_vector): Delete functions.
  7923.     * (functions that use idx_vectors): Update for new idx-vector
  7924.     stuff.
  7925.  
  7926.     * arith-ops.cc: Don't declare matrix_to_fortran_indices.
  7927.  
  7928.     * tree-const.cc (matrix_to_index_vector): Add new argument,
  7929.     allow_neg_one, with default value of false.
  7930.     * (matrix_to_fortran_indices): Add new argument, allow_zero, with
  7931.     default value of false.
  7932.  
  7933.     * g-builtins.cc (builtin_find): New function.
  7934.     * builtins.cc (general_fucntions): Add it to the list.
  7935.     * tree-extras.cc (find_nonzero_elem_idx (tree_constant)): Do
  7936.     most of the real work.
  7937.     * tree-extras.cc (find_nonzero_elem_idx (const Matrix&): Do the rest.
  7938.     * (find_nonzero_elem_idx (const ComplexMatrix&): Ditto, for complex.
  7939.  
  7940. Wed Feb  3 00:54:01 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7941.  
  7942.     * configure.in (DEFAULT_DOT_O_FROM_DOT_F): If using f2c, quote
  7943.     with single quotes instead of double quotes to avoid problems on
  7944.     systems (like the NeXT) that strip \'s from double quoted strings.
  7945.  
  7946.     * utils.c (empty_list_elements_ok): New function.
  7947.     * tree.cc (matrix_list::eval): Use it.
  7948.     * builtins.cc (builtin_string_variables): New global variable
  7949.     `empty_list_elements_ok' with initial value `warn'.
  7950.  
  7951.     * utils.cc (check_str_pref): New function.
  7952.     * (resize_on_range_error, prefer_column_vectors,
  7953.     warn_comma_in_global_decl, do_fortran_indexing,
  7954.     implicit_str_to_num_ok, treat_neg_dim_as_zero,
  7955.     ok_to_lose_imaginary_part, return_last_computed_value,
  7956.     silent_functions, print_answer_id_name): Use it instead of
  7957.     needlessly duplicating code.
  7958.  
  7959. Tue Feb  2 16:58:02 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7960.  
  7961.     * lex.l ("'"): If it looks like we're defining a matrix, don't set
  7962.     the start condition to be MAYBE_QSTRING.  GAK.  There has to be a
  7963.     better way...
  7964.  
  7965.     * lex.l: Increment and decrement promptflag instead of just
  7966.     setting its value.  This should help get prompting right for
  7967.     things like if [1,2;3,4] NL ...
  7968.     * input.cc (octave_gets): In order to issue a prompt, Require
  7969.     propmtflag to be greater than zero, not just nonzero.
  7970.  
  7971.     * tree.cc (tree_if_command): Allow matrices as the expression to
  7972.     test.  Unlike Matlab, a complex value is false only if both the
  7973.     real and imaginary parts are 0.
  7974.     * tree.cc (tree_while_command): Ditto.
  7975.  
  7976.     * tree.cc (tree_for_command): Allow matrices and complex values
  7977.     in the expression.  For matrices, assign each column in turn to
  7978.     the dummy variable.
  7979.  
  7980.     * Matrix-ext.cc (qr): Make it work.  The LAPACK book gags me again!
  7981.  
  7982.     * xdiv.cc: When computing right division with complex matrices,
  7983.     use hermitian() instead of transpose().
  7984.  
  7985.     * lex.l: Return IMAG_NUM for a numeric constant followed by
  7986.     [iIjJ], but don't allow spaces between the numeric constant and
  7987.     the letter (it causes problems inside `[]' where spaces matter...
  7988.  
  7989. Mon Feb  1 17:15:19 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7990.  
  7991.     * tree_extras.cc (rand_internal): Make the random number generator
  7992.     give us a different sequence every time we start octave unless we
  7993.     specifically set the seed.
  7994.  
  7995. Thu Jan 28 00:10:24 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  7996.  
  7997.     * Version 0.66 released.
  7998.  
  7999.     * configure.in: Define PLOTLIB in addition to adding -DUNIXPLOT to
  8000.     DEFS if we find -lplot, and call AC_SUBST for PLOTLIB.
  8001.  
  8002.     * QP.cc: Define constructors here.
  8003.     * QP.h: Not here.
  8004.  
  8005.     * QP.cc (All constructors that are given H): Force H to be
  8006.     symmetric.
  8007.     * (make_h_symmetric): New function.
  8008.  
  8009. Wed Jan 27 01:35:53 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8010.  
  8011.     * arith-ops.cc (do_unary_op): Do the right thing for complex
  8012.     logical not operator.
  8013.     * Matrix.cc (ComplexMatrix::operator ! (void)): Return Matrix
  8014.     instead of ComplexMatrix.
  8015.     * mx-inlines.cc (not (Complex *d, int len)): For each element of
  8016.     d, return (d[i] == 0.0), not (d[i] != 0.0), and return it as a
  8017.     pointer to double, not Complex.
  8018.  
  8019.     * configure.in: Check for libcruft/qpsol/qpsol.f.
  8020.     * Create Makefile in libcruft/qpsol.
  8021.  
  8022.     * libcruft/qpsol: New directory.  Copy QPSOL sources here.
  8023.     * libcruft/qpsol/Makefile.in: New file.
  8024.     * libcruft/qpsol/README.MISSING: New file.
  8025.     * libcuft/Makefile.in: Include qpsol in list of directories to
  8026.     make.
  8027.  
  8028.     * QPSOL.h, QPSOL.cc: New file for solving QPs with Gill and
  8029.     Murray's QPSOL.
  8030.  
  8031.     * QLD.h, QLD.cc: Delete all minimize functions except
  8032.     Vector minimize (double&, int&).
  8033.  
  8034.     * QP.h: Declare minimize functions virtual.
  8035.     * (Vector minimize (double&, int&): Declare as a pure virtual
  8036.     function.
  8037.  
  8038.     * QP.cc: New file to implement generic minimize functions.
  8039.  
  8040. Tue Jan 26 00:27:13 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8041.  
  8042.     * lex.l: Recognize numbers of the form .{digits}E{digits} and
  8043.     .{digits}E[+-]{digits}
  8044.  
  8045.     * lex.l: Recognize .\ as ELEFTDIV.
  8046.     * parse.y: Handle ELEFTDIV.
  8047.     * tree.cc (tree_binary_expression::eval): Handle el_leftdiv.
  8048.  
  8049.     * arith-ops.cc (do_binary_op): Handle element by element left
  8050.     division.  Fix some errors in element by element right division.
  8051.  
  8052.     * tree-base.h (enum expression_type): Add el_leftdiv.
  8053.  
  8054.     * Version 0.65 released.
  8055.  
  8056.     * tree-const.cc (tree_constant_rep::eval (tree_constant *args, int
  8057.     nargin, int nargout, int print)): Fix another brain-o in making
  8058.     recursive call.s
  8059.  
  8060.     * src/Makefile.in: Complete changes for CXX instead of C++ make
  8061.     variables.
  8062.  
  8063.     * tree-const.cc: For assignment and indexing functions, treat
  8064.     complex scalars and matrices in the same branch of the switch as
  8065.     real scalars and matrices -- the double_value() and matrix_value()
  8066.     functions take care of checking to see if it's ok to lose the
  8067.     imaginary part.
  8068.  
  8069.     * tree-const.h (tree_constant_rep::is_numeric_type): New function.
  8070.     * tree-const.h (tree_constant::make_numeric functions): Use it.
  8071.  
  8072.     * tree-const.h (tree_constant::make_numeric functions): Return
  8073.     *this for complex constants too.
  8074.  
  8075. Mon Jan 25 18:31:06 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8076.  
  8077.     * tree-extras.cc (Matrix min (Matrix&, Matrix&)): Loop over nc and
  8078.     nr, not nr and nr.
  8079.     * (Matrix max (Matrix&, Matrix&)): Ditto.
  8080.  
  8081.     * tree-const.cc (tree_constant_rep::mapper): Fix brain-o in making
  8082.     recursive call.
  8083.  
  8084. Sun Jan 24 20:05:39 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8085.  
  8086.     * configure.in: If using f2c, explicitly check for -lf2c.  If it's
  8087.     not found, look for -lF77 and -lI77.  If a suitable combination
  8088.     isn't found, print a warning.
  8089.  
  8090.     * src/Makefile.in liboctave/Makefile.in: GNU Make 3.63 uses CXX
  8091.     and CXXFLAGS instead of C++ and C++FLAGS.  Fix things so that 3.63
  8092.     will work without sacrificing compatibility with earlier versions.
  8093.  
  8094.     * tree-const.cc (tree_constant_rep::diag (tree_constant&)): Fix
  8095.     brain-o in forcing argument to be numeric.
  8096.  
  8097. Fri Jan 22 15:03:42 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8098.  
  8099.     * octave.cc (interrupt_handler): Declare to take int argument.
  8100.  
  8101.     * NPSOL.cc (npsol_objfun): Delete leftover debugging message.
  8102.  
  8103. Thu Jan 21 14:28:24 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8104.  
  8105.     * configure.in: Check version of gcc and issue a warning if it
  8106.     looks like 1.something.
  8107.     * Check for g++.  Issue a warning if it is missing or if it is
  8108.     there but it looks like verion 1.something.
  8109.  
  8110.     * flibs.sh, f2c-compat.sh: Change file permission to 755 to avoid
  8111.     problems if the uid of the installer is different from the uid of
  8112.     the owner of the files.
  8113.  
  8114. Wed Jan 20 04:18:49 1993  John W. Eaton  (jwe@june.che.utexas.edu)
  8115.  
  8116.     * libcruft/Makerules.in (@DOT_O_DOT_F_C[1234]@): Patterns deleted.
  8117.     * configure.in: Do multiple line sed substitutions the right way.
  8118.  
  8119. Tue Jan 19 14:50:50 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8120.  
  8121.     * configure.in: Use new AC_WITH to accept --with-f2c instead of
  8122.     --use-f2c.
  8123.     * Use new AC_HAVE_LIBRARY to find -lplot.
  8124.  
  8125.     * flibs.sh: Actually avoid including duplicate -lflags.
  8126.     * Use test, not `['.
  8127.  
  8128. Sun Jan 17 16:57:02 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8129.  
  8130.     * Matrix.h: Declare operator+ and operator- functions for vectors.
  8131.     * RowVector.cc: Define half of them.
  8132.     * ColVector.cc: Define the other half.
  8133.  
  8134. Fri Jan 15 03:00:46 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8135.  
  8136.     * src/Makefile.in (install): Include version number in name of
  8137.     installed binary and make a link to $(bindir)/octave.
  8138.  
  8139.     * Version 0.64 released.
  8140.  
  8141.     * t-builtins.cc (builtin_clear): Don't allow the user to clear
  8142.     global symbols by name.  If he tries, issue a warning.
  8143.  
  8144.     * tree.cc (tree_identifier::eval_undefined_error):  Don't clear
  8145.     undefined symbols from the global or local (function) symbol
  8146.     tables.
  8147.  
  8148. Thu Jan 14 02:10:20 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8149.  
  8150.     * tree.cc (tree_function::eval): Save old and set current symbol
  8151.     table context, so eval_undefined_error() doesn't wipe out top
  8152.     level symbols.
  8153.  
  8154.     * Version 0.63 released.
  8155.  
  8156. Wed Jan 13 13:16:56 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8157.  
  8158.     * Nearly every .h and .cc file: Add interface and implementation
  8159.     #pragmas for G++ in hopes of making smaller objects with -g.
  8160.  
  8161.     * tree-const: Properly handle assignments like A(:) = RHS when
  8162.     do_fortran_indexing is true.
  8163.  
  8164.     * g-builtins.cc (builtin_eig): Correct usage message.
  8165.  
  8166.     * tree-const.cc (tree_constant_rep (ComplexDiagMatrix&)): Create
  8167.     and initialize a new complex_scalar.  Don't just try to copy the
  8168.     value...
  8169.  
  8170.     * Matrix.h: Declare new fill functions for diagonal matrices.
  8171.     * DiagMatrix.cc: Define them.
  8172.  
  8173.     * Matrix.h: Declare map functions for row and column vectors.
  8174.     * RowVector.cc: Define them.
  8175.     * ColumnVector.cc: Likewise.
  8176.  
  8177.     * CollocWt.h: Declare data protected instead of private.
  8178.     * CollocWt.cc (CollocWt::CollocWt (const CollocWt&)): Fix brain-o.
  8179.  
  8180.     * lex.l: Return IMAG_NUM for a numeric constant followed by
  8181.     [ \t]*[iIjJ].
  8182.  
  8183.     * parse.y (IMAG_NUM): New token.
  8184.     * (fact): Recogize IMAG_NUM and convert its value to a complex
  8185.     constant.
  8186.  
  8187.     * Version 0.62 released.
  8188.  
  8189.     * Makefile.in (local-dist): Include -local in tar.Z filename.
  8190.     * (split-local-dist): New target.
  8191.     * (dist): Don't depend on newversion.
  8192.     * (local-dist): Ditto.
  8193.  
  8194.     * tree-extras.cc (npsol): If the first argument isn't a vector,
  8195.     print an error message and return.
  8196.  
  8197.     * tree.cc (tree_matrix::eval): Always set prev_row_total and
  8198.     prev_column_total when starting out.
  8199.  
  8200.     * octave.cc (main): Don't try to detect signal handler failures,
  8201.     but do call signal() to set up the interrupt handler.
  8202.  
  8203. Tue Jan 12 19:59:33 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8204.  
  8205.     * tree-extras.cc (npsol): Fix brain-o in checking length of bounds
  8206.     vectors.
  8207.  
  8208. Mon Jan 11 20:32:24 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8209.  
  8210.     * tree-extras.cc (set_rand_seed): New function.
  8211.     (force_to_fit_range): New function.
  8212.     (current_seed): Really return current seed.
  8213.     (rand_internal): Allow the user to actually set the seed for the
  8214.     random number generator.
  8215.  
  8216. Sun Jan 10 16:46:06 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8217.  
  8218.     * Version 0.61 released.
  8219.  
  8220.     * builtins.h, builtins.cc: Rename from builtin-fcns.h,
  8221.     builtin-fcns.cc (too long for Linux/SysV).
  8222.  
  8223.     * mappers.cc (xisinf): For non-IEEE machines, consider DBL_MAX to
  8224.     be infinite.
  8225.  
  8226. Fri Jan  8 09:15:57 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8227.  
  8228.     * gnuplot-build/Makefile.in (x11targets): Don't worry about
  8229.     checking HAVE_X11_X_H.
  8230.  
  8231.     * configure.in: Check for gamma and lgamma for gnuplot.
  8232.  
  8233.     * gnuplot-build/Makefile.in (Makefile.X11): Only move Makefile to
  8234.     ../Makefile.X11 if xmkmf succeeds.
  8235.  
  8236.     * gnuplot-build/Makefile.in (x11targets): Check to see that XMKMF
  8237.     is set *and* that Makefile.X11 exists.
  8238.     * If making notgnuplot_x11 with Makefile.X11 fails, try again with
  8239.     Makefile.
  8240.  
  8241.     * gnuplot-build/Makefile.in: Use @PLOTLIB@ in definintion of LIBS.
  8242.     * Don't define UNIXPLOT in TERMFLAGS.
  8243.     * Don't define LN_S; it isn't used anywhere, and configure doesn't
  8244.     give it a value.
  8245.  
  8246.     * configure.in: Check for closepl().  If found, define UNIXPLOT,
  8247.     and substitute -lplot for @PLOTLIB@.
  8248.  
  8249.     * arith-ops.cc (DIVIDE_BY_ZERO_ERROR): New macro.  On systems that
  8250.     have IEEE math, give a warning but also go ahead and divide by
  8251.     zero.  On systems that don't have IEEE math, just give an error
  8252.     message and return an undefined tree_constant (it would probably
  8253.     be possible to handle this so that it works the same everywhere,
  8254.     but I'm not sure it's worth the effort...).
  8255.  
  8256.     * builtin-fcns.cc (install_builtins): On systems that don't have
  8257.     IEEE_MATH, define Inf to be MAX_DBL, but don't define NaN at all.
  8258.  
  8259.     * configure.in: Check for finite, isnan, and isinf.
  8260.     * Set HAVE_IEEE_MATH if we find finite and isnan.
  8261.  
  8262.     * builtin-fcns.cc (install_builtins): Use HAVE_IEEE_MATH instead
  8263.     of IEEE_MATH.
  8264.     * mappers.cc: Check HAVE_IEEE_MATH and HAVE_ISINF macros rather
  8265.     than checking system type.
  8266.  
  8267.     * graph3d.c (hidden_line_plot): Declare dy and y as double, not
  8268.     float, since VERYLARGE can be DBL_MAX.
  8269.  
  8270.     * lsoda.f, lsodar.f, lsodes.f, lsodi.f, lsoibt.f, stoda.f,
  8271.     stodi.f, zrotg.f, sdot.f: Remove unused files.
  8272.  
  8273.     * texas_lotto.m: Renamed from win_texas_lotto.m to keep the
  8274.     filename less than 14 characters.
  8275.  
  8276. Thu Jan  7 15:45:29 1993  John W. Eaton  (jwe@june.che.utexas.edu)
  8277.  
  8278.     * utils.cc: Declare ioctl extern "C".
  8279.  
  8280.     * tree.cc: Include stdio.h to be sure FILE is defined (apparently
  8281.     not required by older versions of GNU iostream library).
  8282.     * t-builtins.cc: Likewise.
  8283.     * g-builtins.cc: Likewise, but for tmpnam.
  8284.  
  8285.     * tree-const.h (rand_internal): Rename from rand to avoid
  8286.     conflict with standard library rand (a macro in Linux).
  8287.     * tree-extras.cc (rand_internal): Fix function definition.
  8288.     * g-builtins.cc (builtin_rand): Call rand_internal instead of rand.
  8289.  
  8290.     * octave.cc (main): Don't try to detect signal handler failures.
  8291.     What's the proper way to do this if RETSIGTYPE is void?
  8292.  
  8293. Tue Jan  5 08:14:29 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8294.  
  8295.     * tree.cc (tree_matrix::eval): When adding a matrix down or to the
  8296.     right, column or row dimension mismatches are always errors.
  8297.  
  8298. Mon Jan  4 04:58:55 1993  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8299.  
  8300.     * Version 0.60 released.
  8301.  
  8302.     * xdiv.h, xdiv.cc: New files for Octave-specific matrix division
  8303.     stuff.
  8304.     * src/Makefile.in (INCLUDES, SOURCES, OBJECTS): Add xdiv stuff.
  8305.  
  8306.     * arith-ops.cc: Include xdiv.h.
  8307.  
  8308. Sun Jan  3 12:24:04 1993  John W. Eaton  (jwe@ward.che.utexas.edu)
  8309.  
  8310.     * gnuplot-build/Imakefile.in (notgnuplot_x11): In the compile
  8311.     command, put source file before    libraries.
  8312.  
  8313.     * libcruft/misc/Makefile.in: Don't use -O to compile gen-dimach.c.
  8314.  
  8315. Thu Dec 31 00:45:50 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8316.  
  8317.     * tree-extras.cc (matrix_sqrt): Don't create D until it is really
  8318.     needed.
  8319.     * (matrix_log): Ditto.
  8320.     * (matrix_exp): Ditto.
  8321.     [this should really be just one function instead of three...]
  8322.  
  8323.     * g-builtins.cc (builtin_sqrtm): New function.
  8324.     * builtin-fcns.cc (general_fucntions): Add it to the list.
  8325.     * tree-extras.cc (matrix_sqrt): Do the real work.
  8326.  
  8327.     * Makefile.in: Distribute INSTALL.OCTAVE and configure.in.
  8328.     * (INSTALL.info): Make ../INSTALL.OCTAVE, not ../INSTALL.
  8329.  
  8330.     * doc/Makefile.in: Make ../INSTALL.OCTAVE, not ../INSTALL.
  8331.  
  8332.     * INSTALL.OCTAVE: Rename from INSTALL.
  8333.     Refer to INSTALL for more info.
  8334.  
  8335.     * INSTALL: Copy from autoconf distribution.
  8336.     Refer to INSTALL.OCTAVE for more info.
  8337.  
  8338.     * octave.cc (main): Remove leading blank line from startup message.
  8339.     * Don't print it everytime the user types C-c...
  8340.  
  8341.     * xpow.cc: Finish off remaining cases.
  8342.  
  8343.     * tree-extras.cc (process_format): New function.
  8344.     (do_printf): Use it.
  8345.  
  8346. Wed Dec 30 00:43:14 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8347.  
  8348.     * Version 0.56.
  8349.  
  8350.     * g-builtins.cc (builtin_logm): New function.
  8351.     * builtin-fcns.cc (general_fucntions): Add it to the list.
  8352.     * tree-extras.cc (matrix_log): Do the real work.
  8353.  
  8354.     * g-builtins.cc (builtin_expm): New function.
  8355.     * builtin-fcns.cc (general_fucntions): Add it to the list.
  8356.     * tree-extras.cc (matrix_exp): Do the real work.
  8357.  
  8358.     * Matrix-ext.cc (LU): Construct LU decomp. here, not in Matrix class.
  8359.     (ComplexLU): Likewise.
  8360.     * Matrix.cc (lu): Deleted.  Use LU constructor instead.
  8361.     Change all uses in octave sources.
  8362.  
  8363.     * Matrix-ext.cc (EIG): Construct EIG object here, not in Matrix class.
  8364.     * Matrix.cc (eig): Deleted.  Use EIG constructor instead.
  8365.     Change all uses in octave sources.
  8366.  
  8367.     * Matrix-ext.cc (SVD): Construct SVD here, not in Matrix class.
  8368.     (ComplexSVD): Likewise.
  8369.     * Matrix.cc (svd): Deleted.  Use SVD constructor instead.
  8370.     Change all uses in octave sources.
  8371.  
  8372.     * Makefile.in: Update for new Matrix file organization.
  8373.     Don't compile mx-inlines separately -- it's included where needed.
  8374.     * Matrix.h: Declare Fortran routines we call here, not in Matrix.cc.
  8375.     Don't declare every class to be a friend of every other class.
  8376.     * mx-inlines.cc: New file, included by all Matrix-related .cc files.
  8377.     * Matrix.cc: Split into several files.
  8378.     * ColVector.cc: New file, from Matrix.cc
  8379.     * RowVector.cc: Ditto.
  8380.     * DiagMatrix.cc: Ditto.
  8381.     * Matrix-ext.cc: Ditto.
  8382.  
  8383.     * tree-extras.cc (svd): Take advantage of new constructors and
  8384.     diag functions.
  8385.  
  8386.     * Matrix.cc (DiagMatrix::diag) New function.
  8387.     (ComplexDiagMatrix::diag) Ditto.
  8388.  
  8389.     * tree-extras.cc (eig): Take advantage of new constructors.
  8390.  
  8391.     * tree-const.cc (tree_constant (DiagMatrix)): New constructor.
  8392.     (tree_constant (ComplexDiagMatrix)): Ditto.
  8393.  
  8394.     * Matrix.cc (Matrix (const DiagMatrix)): New constructor.
  8395.     (ComplexMatrix (const DiagMatrix)): Ditto.
  8396.     (ComplexMatrix (const ComplexDiagMatrix)): Ditto.
  8397.  
  8398. Tue Dec 29 01:14:49 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8399.  
  8400.     * octave.cc (main): Print message at startup by default.
  8401.     Don't print it until just before main loop.
  8402.     * New -q option (inhibit_startup_message) turns it off.
  8403.     * New -f option (read_init_files) inhibits reading of startup files.
  8404.     * Delete -v option.
  8405.     * (verbose_usage): Reflect changes in arguments, document -d.
  8406.  
  8407.     * win_texas_lotto.m: Sort picks before returning.
  8408.  
  8409.     * tree-extras.cc (eig): Return [v,d], not [l,v], where d is a
  8410.     diagonal matrix made from l.
  8411.  
  8412.     * builtin-fcns.cc (mapper_functions): Fix last element of
  8413.     initialization list to have correct number of elements.
  8414.  
  8415.     * Version 0.55.
  8416.  
  8417.     * Quad.h: Move all inline functions to Quad.cc to avoid apparent
  8418.     g++ bug on the RS/6000.
  8419.  
  8420.     * configure.in: If we find flex, don't define LEXLIB.
  8421.  
  8422.     * COPYING.LIB: Deleted -- we're not actually distributing anything
  8423.     under these terms.
  8424.     * Makefile.in: Don't distribute COPYING.LIB.
  8425.  
  8426. Mon Dec 28 00:46:21 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8427.  
  8428.     * xpow.h, xpow.cc: New files for safer pow() interface for octave.
  8429.     * src/Makefile.in (INCLUDES, SOURCES, OBJECTS): Add xpow stuff.
  8430.  
  8431.     * arith-ops.cc: Include xpow.h.
  8432.     * Don't declare toplevel jmp_buf.
  8433.  
  8434.     * t-builtins.cc (builtin_save): Make file and stream static to
  8435.     avoid dumping core on return (is this a bug in libg++ or g++?).
  8436.     * (builtin_load): Ditto.
  8437.  
  8438.     * symtab.cc (load): Make it work again.  Yikes!  This hasn't
  8439.     worked since the big symbol table overhaul...
  8440.  
  8441.     * tree-const.cc (tree_constant_rep::save): Handle complex scalars
  8442.     and matrices.
  8443.  
  8444.     * (symbol_def::undefine): Delete previous symbol definition before
  8445.     defining.  This should be ok now, after the parse_m_file fix of
  8446.     27 Dec.
  8447.  
  8448.     * getting_help: New global flag.
  8449.     * ([_a-zA-Z][_a-zA-Z0-9]*): Set it if looking at "help".
  8450.     * (reset_parser): Clear it.
  8451.     * lex.l (STRING): Use it to determine what to do with ' ; and , .
  8452.  
  8453.     * lex.l (QSTRING): Handle the following (C-style) backslash escape
  8454.     sequences correctly(?).
  8455.  
  8456.       \a  bell       \r  carriage return
  8457.       \b  backspace    \t  horizontal tab
  8458.       \f  formfeed     \v  vertical tab
  8459.       \n  newline       \\  backslash
  8460.  
  8461.     * median.m: New M-file.
  8462.  
  8463.     * g-builtins.cc (builtin_sort): New function.
  8464.     * builtin-fcns.cc (general_fucntions): Add it to the list.
  8465.     * tree-extras.cc (sort): Do most of the real work.
  8466.     * tree-extras.cc (mx_sort): Do the rest.
  8467.  
  8468. Sun Dec 27 17:40:24 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8469.  
  8470.     * t-builtins.cc (builtin_casesen): New function.
  8471.     * builtin-fcns.cc (text_functions): Add it to the list.
  8472.  
  8473.     * strcmp.m: Temporarily allow string to numeric conversions.
  8474.     Maybe strcmp() should be built in to the interpreter?
  8475.  
  8476.     * norm.m: New M-file.
  8477.  
  8478.     * builtin-fcns.cc (install_builtins): Treat i and j as functions,
  8479.     not variables.
  8480.     * Install inf as an alias for Inf.
  8481.     * Install nan as an alias for NaN.
  8482.  
  8483.     * tree.cc (tree_identifier::parse_m_file (char*)): Force new
  8484.     global symbol to be a function, not a variable.
  8485.  
  8486. Tue Dec 22 14:15:57 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8487.  
  8488.     * tree.cc (tree_function::eval): Check with silent_functions()
  8489.     and return_last_value_computed() to determine proper behavoir.
  8490.  
  8491.     * builtin-fcns.cc (silent_functions): New builtin variable.
  8492.     * (return_last_value_computed) Ditto.
  8493.  
  8494.     * utils.cc (silent_functions): New function.
  8495.     * (return_last_value_computed) Ditto.
  8496.     [This scheme for determining preferences needs to be reworked...]
  8497.  
  8498.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only force yytext[len] to be the
  8499.     end of the identifier if we gobbled some whitespace.
  8500.     * Always unput the last character read.
  8501.  
  8502.     * tree.cc (tree_function::eval) Always turn on printing for
  8503.     commands inside functions.
  8504.  
  8505. Sat Dec 19 14:03:49 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8506.  
  8507.     * Version 0.54.
  8508.  
  8509. Fri Dec 18 16:02:59 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8510.  
  8511.     * (symbol_def::undefine): Undo previous change.  Someone is
  8512.     calling this function when they shouldn't be...
  8513.  
  8514.     * tree.cc (parse_m_file): If the script file is successfully
  8515.     parsed, Ensure that the new symbol is defined in the global
  8516.     symbol table.
  8517.  
  8518.     * lex.l: Handle continuation lines with the pattern
  8519.     {EL}{S}*\n { promptflag = 0; }  // Line continuation.
  8520.  
  8521. Thu Dec 17 01:47:14 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8522.  
  8523.     * symtab.cc (symbol_def::define): Delete previous symbol
  8524.     definition before defining.
  8525.     (symbol_def::undefine): Ditto, but new definition is always NULL.
  8526.  
  8527.     * readline/Makefile.in:  Don't compile emacs_keymap.c and
  8528.     vi_keymap.c since they are included by keymaps.c.
  8529.  
  8530.     * configure.in: If RETSIGTYPE isn't int, then define
  8531.     VOID_SIGHANDLER="-DVOID_SIGHANDLER=1".
  8532.     Substitute VOID_SIGHANDLER.
  8533.  
  8534.     * readline/Makefile.in (CFLAGS): Add -DVOID_SIGHANDLER if
  8535.     appropriate.
  8536.  
  8537.     * tilde.c: Declare xmalloc, not malloc.
  8538.  
  8539.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only call unput if we've
  8540.     actually read something.
  8541.  
  8542.     * Version 0.53.
  8543.  
  8544. Wed Dec 16 01:35:48 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8545.  
  8546.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Look in the global symbol table
  8547.     for names, but ignore functions.
  8548.  
  8549.     * tree.cc (tree_identifier::eval): Use symbol_out_of_date() to
  8550.     simplify logic for re-parsing M-files.
  8551.     Always look in global symbol table for functions in case the
  8552.     definition has changed (shouldn't the local symbols be undefined
  8553.     anyway??).
  8554.  
  8555.     * tree.cc (symbol_out_of_date): New function.
  8556.  
  8557.     * symtab.cc (symbol_table::undefine): Actually do something.
  8558.     * (symbol_table::remove_name): Ditto.
  8559.     * (symbol_table::clear): And so on.
  8560.  
  8561.     * Matrix.cc (ComplexMatrix::svd): Use complex conjugate transpose,
  8562.     not simple transpose, for V.
  8563.  
  8564.     * Version  0.52.
  8565.  
  8566.     * gnuplot-build/Imakefile (notgnuplot_x11): In the compile
  8567.     command, put source file before    libraries.
  8568.  
  8569.     * parse.y (assignment): If trying to warn against assignment to a
  8570.     function, check is_function() instead of !is_variable().
  8571.  
  8572.     * src/Makefile.in: Distribute input.h.
  8573.  
  8574. Tue Dec 15 10:48:22 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8575.  
  8576.     * octave.cc (main): Call initialize_readline to set up completion
  8577.     functions.
  8578.  
  8579.     * input.cc (make_name_list, command_generator, command_completer,
  8580.     initialize_readline): New functions.
  8581.  
  8582.     * input.h: New file.
  8583.     * lex.l: Include it instead of input.cc.
  8584.     * src/Makefile.in: Create input.o rather than including it
  8585.     directly in lex.l.
  8586.  
  8587.     * builtin-fcns.cc: do_fortran_indexing is now initially false.
  8588.     prefer_column_vectors is now initially true.
  8589.  
  8590.     * builtin-fcns.cc (install_builtins): Install i and j
  8591.      (== sqrt(-1)) as permanent global variables.
  8592.  
  8593.     * g-builtins.cc (MAXPATHLEN) Provide default definition here.
  8594.     * t-builtins.cc: Not here.
  8595.  
  8596.     * g-builtins.cc (quitting_gracefully, interactive,
  8597.     clean_up_and_exit, verbatim_pwd, getwd) Declare here.
  8598.     * t-builtins.cc: Not here.
  8599.  
  8600.     * g-builtins.cc: Also include readline.h and history.h.
  8601.  
  8602.     * g-builtins.cc: Include version.h and sys/param.h here.
  8603.     * t-builtins.cc: Not here.
  8604.  
  8605.     * g-builtins.cc: Move builtin_clc, builtin_clock, builtin_date,
  8606.     builtin_pause, builtin_quit, builtin_warranty here from
  8607.     t-builtins.cc.
  8608.  
  8609.     * builtin-fcns.cc (general_functions): Move builtin_clc,
  8610.     builtin_clock, builtin_date, builtin_pause, builtin_quit,
  8611.     builtin_warranty here from text_functions to limit the number of
  8612.     reserved words.
  8613.  
  8614.     * scripts/*.m: Check for correct number of input arguments before
  8615.     proceeding.
  8616.  
  8617.     * configure.in (DEFAULT_PAGER): Look for less, more, page, and pg.
  8618.  
  8619.     * t-buitlins.cc (builtin_help): If no arguments are given, list
  8620.     all the known operators, keywords, functions, and variables.
  8621.  
  8622.     * t-builtins.cc (builtin_help) Pass the output through PAGER using
  8623.     a libg++ procbuf.
  8624.     (builtin_who): Ditto.
  8625.  
  8626.     * utils.cc (get_pager): New function.
  8627.  
  8628.     * help.h, help.cc: New files to manage lists of help info for
  8629.     keywords and operators.
  8630.  
  8631.     * symtab.cc (symbol_record): Implement the Matlab-style semantics
  8632.     of functions using two symbol_def objects.
  8633.     * (symbol_table): Store identifier names in a hash table instead
  8634.     of a linear list.
  8635.     * symtab.cc (symbol_def): New class.
  8636.  
  8637. Sat Dec 12 00:00:00 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8638.  
  8639.     * parse.y (yyerror): Change error text to be more accurate.
  8640.  
  8641.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only look in the current symbol
  8642.     table for names.  Function names and other global symbols are now
  8643.     resolved at execution time.
  8644.  
  8645.     * symtab.cc (sorted_var_list): New function.
  8646.     * (sorted_fcn_list): Ditto.
  8647.     * (var_list): Ditto.
  8648.     * (fcn_list): Ditto.
  8649.     These should probably not all be separate functions...
  8650.  
  8651.     * t-functions.cc (builtin_who): Call sorted_var_list for each
  8652.     symbol table to print variable names only.
  8653.     * Accept -fcn, -fcns, or -functions to also list function names.
  8654.     * Make -all list function names, but under a separate heading from
  8655.     other symbols.
  8656.  
  8657.     * builtin-fcns.cc (is_text_function_name): New function.
  8658.     * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Use is_text_function_name to
  8659.     find if a name is a text function name instead of relying on the
  8660.     symbol tables.
  8661.  
  8662.     * lex.l (is_keyword): New function.
  8663.     ([_a-zA-Z][_a-zA-Z0-9]*): Use is_keyword instead of having a
  8664.     special lex pattern for each keyword.
  8665.  
  8666. Thu Dec 10 12:25:12 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8667.  
  8668.     * t-builtins.cc: Declare top_level_sym_tab extern.
  8669.  
  8670.     * Version 0.51.
  8671.  
  8672. Wed Dec  9 02:00:38 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8673.  
  8674.     * tree-extras.cc (all user_functions): If the return value from a
  8675.     user's function is bogus, print an error message and abort to the
  8676.     top level.
  8677.  
  8678.     * tree-const.cc (all do_matrix_index functions): Major overhaul to
  8679.     simplify and apply range checking before doing the indexing.
  8680.  
  8681.     * tree-const.cc (fortran_row, fortran_column, valid_scalar_indices,
  8682.     matrix_to_fortran_indices): Move here from arith-ops.cc and
  8683.     declare as `static inline'.  Delete declarations from arith-ops.h.
  8684.  
  8685.     * arith-ops.cc (gripe_nonconformant_assignment): Delete function.
  8686.  
  8687.     * tree-const.h (TREE_TO_MAT_IDX): Delete macro.
  8688.     * tree-const.cc (tree_to_mat_idx): Make it an inline function.
  8689.  
  8690.     * tree-const.cc (all do_matrix_assignment functions): Major
  8691.     overhaul to simplify resizing and range checking.
  8692.  
  8693.     * tree-const.cc (): Move here from arith-ops.cc.
  8694.     Jump to top level on errors.
  8695.     Return max value.
  8696.     (indexed_assign_conforms) New function.
  8697.     (index_check (int)): New function.
  8698.     (index_check (Range)): New function.
  8699.  
  8700. Tue Dec  8 21:07:23 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8701.  
  8702.     * tree-const.cc (tree_constant_rep::tree_constant_rep (Range):
  8703.     Don't create range constants that have less than 2 elements.
  8704.  
  8705.     * utils.cc (jump_to_top_level): New function.
  8706.     * All: Replace calls to longjmp with calls to jump_to_top_level().
  8707.     Don't include <setjmp.h>, except in octave.cc, and utils.cc.
  8708.  
  8709. Mon Dec  7 01:57:30 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8710.  
  8711.     * configure.in: Create Imakefile in gnuplot-build directory.
  8712.     Look for xmkmf, then X11/X.h.
  8713.     * gnuplot-build/Makefile.in: Try harder to get notgnuplot_x11 to
  8714.     build correctly.
  8715.     * gnuplot-build/Imakefile.in: New file, for building
  8716.     notgnuplot_x11 if xmkmf is available.
  8717.  
  8718.     * Version 0.50.
  8719.  
  8720.     * gnuplot-build/Makefile.in (SUBDIRS): Add docs.
  8721.  
  8722.     * tree-const.h (make_numeric_or_range_or_magic): New function.
  8723.     * tree-const.cc (do_matrix_index): Use it instead of make_numeric
  8724.     so that we actually take advantage of all the special cases we
  8725.     have for range types as matrix indices.
  8726.  
  8727.     * tree-const.cc (tree_constant_rep::do_matrix_index (int, Matrix)):
  8728.     Fix typo.
  8729.  
  8730.     * DAE.cc (integrate): If returning a matrix of values, don't mix
  8731.     time with the states.
  8732.     * ODE.cc (integrate): Likewise.
  8733.  
  8734. Sun Dec  6 16:58:41 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8735.  
  8736.     * tree-extras.cc (dassl): New function.
  8737.     * g-builtins.cc (builtin_dassl): Make it work.
  8738.     * doc/octave.1: Document it.
  8739.  
  8740.     * DAEFunc.h, DAEFunc.cc, DAE.h, DAE.cc: New files.
  8741.  
  8742.     * tree-extras.cc (lsode): Clean up.  Use available functions
  8743.     instead of doing everything in line.
  8744.  
  8745.     * tree.cc (tree_multi_assignment_expression::eval): Don't define
  8746.     constants that are of unknown type.
  8747.     Try to be smarter about padding after last value.
  8748.  
  8749.     * tree-extras.cc (lu): Don't bother trying to return the LU
  8750.     factorization in a single matrix since this isn't really useful
  8751.     and isn't compatible with Matlab anyway (they use Linpack, we use
  8752.     Lapack).
  8753.  
  8754.     * tree.cc (tree_identifier::assign (rhs, args, nargs)): Only try
  8755.     to do assignment if rhs is defined.
  8756.  
  8757. Sat Dec  5 18:23:55 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8758.  
  8759.     * tree-extras.cc (qr): New function.
  8760.     * g-builtins.cc (builtin_qr): New function.
  8761.     * builtins.cc: Add builtin_qr to list of builtin functions.
  8762.     * doc/octave.1: Document it.
  8763.  
  8764.     * Matrix.cc (Matrix::lu): Use dgesv from Lapack instead of dgefa
  8765.     since it returns L and U, not some factors that need decoding.
  8766.     (ComplexMatrix:lu): Likewise.
  8767.  
  8768. Fri Dec  4 01:51:05 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8769.  
  8770.     * configure.in (INCDIRS): Don't include /usr/local/include.
  8771.     (LIBDIRS): Don't include /usr/local/lib.
  8772.  
  8773.     * tree-extras.cc (lu): New function.
  8774.     * g-builtins.cc (builtin_lu): New function.
  8775.     * builtins.cc: Add builtin_lu to list of builtin functions.
  8776.     * doc/octave.1: Document it.
  8777.  
  8778.     * Matrix.cc (Matrix:lu, ComplexMatrix:lu): New functions.
  8779.     * Matrix.h, Matrix.cc (LU, ComplexLU): New classes.
  8780.  
  8781.     * tree-extras.cc (do_quad): New function.
  8782.     * g-builtins.cc (builtin_quad): New function.
  8783.     * builtins.cc: Add builtin_quad to list of builtin functions.
  8784.     * doc/octave.1: Document it.
  8785.  
  8786.     * doc/Makefile.in (install): Edit the manpage to substitute
  8787.     correct values in the FILES section.
  8788.     (dist) Depend on octave.info.
  8789.     (local-dist): Ditto.
  8790.  
  8791.     * Quad.h, Quad.cc: New files to implement quadrature.
  8792.  
  8793.     * NPSOL.cc (npsol_objfun): If compiling with GCC on a Sun, assign
  8794.     to objf via assign_double().
  8795.  
  8796.     * sun-utils.h, sun-utils.cc: New files.
  8797.     * sun-utils.cc: Move declaration and definition of MAIN_ here from
  8798.     utils.cc.
  8799.     (access_double): New function, from GCC manual.
  8800.     (assign_double): New function, after access_double.
  8801.  
  8802. Thu Dec  3 03:16:03 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8803.  
  8804.     * NEWS: New file.
  8805.     * Makefile.in: Distribute it.
  8806.  
  8807.     * scripts/*.m: Change to use new end feature.
  8808.  
  8809.     * lex.l: Recognize `endif', `endfor', `endfunction', `endif', and
  8810.     `endwhile', in addtion to `end'.
  8811.     * parse.y: Check for command/end mismatches.
  8812.     (end_error): New function.
  8813.     * doc/octave.1: Document it.
  8814.  
  8815. Wed Dec  2 11:57:18 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8816.  
  8817.     * libcruft/villad: New directory.  Move and split villad.f here
  8818.     from libcruft/misc.
  8819.     * configure.in: Create Makefile in libcruft/villad.
  8820.     * libcruft/Makefile.in: Add libcruft/villad to list of dirs to make.
  8821.  
  8822.     * All Makefile.in (uninstall): New target.
  8823.     (distclean): Likewise.
  8824.     (check): Ditto.
  8825.     * Try to make clean targets conform with GNU coding standards.
  8826.  
  8827.     * utils.cc (smells_like_X11): New function.
  8828.     * builtin-fcns.cc (install_builtins): Don't set graphics terminal
  8829.     to x11 unless it looks like we're running X11.
  8830.  
  8831.     * win_texas_lotto.m: New M-file.
  8832.     * octave.1: Document it.
  8833.  
  8834.     * arith-ops.h: New file.
  8835.     * src/Makefile.in: Build arith-ops.o, distribute arith-ops.cc,
  8836.     arith-ops.h.  Maybe this will at least speed up recompiles.
  8837.  
  8838.     * THANKS: New file
  8839.     * Makefile.in: Distribute it.
  8840.  
  8841.     * configure.in: Create Makefile in gnuplot-build/docs.
  8842.     * gnuplot-build/docs/Makefile.in: New file.
  8843.     * Create and install notgnuplot.gih.
  8844.  
  8845. Tue Dec  1 00:15:48 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8846.  
  8847.     * tree.cc (tree_identifier::eval (int)): Only pad after if printing.
  8848.     (tree_multi_assignment_expression::eval (int)): Ditto.
  8849.     (tree_assignment_expression::eval (int)): Ditto.
  8850.  
  8851.     * hankel.m: Use disp to print message.
  8852.     * toeplitz.m: Ditto.
  8853.  
  8854.     * lex.l (<MATRIX>{SN}*\]/{S}*=): Check maybe_screwed_again to
  8855.     decide whether to return SCREW_TWO or ']'.
  8856.  
  8857.     * doc/Makefile.in (install): Really install the manpage.
  8858.  
  8859.     * Version 0.49.
  8860.  
  8861.     * Matrix.cc (ComplexMatrix::operator !): New function.
  8862.     * arith-ops.cc (do_unar_op): Use it.
  8863.  
  8864.     * tree-extras.cc (inverse, svd, eig): Don't try to operate on
  8865.     empty matrices.
  8866.  
  8867.     * Matrix.h, Matrix.cc: (EIG): New class.
  8868.     (Matrix::eig): New functions.
  8869.     (ComplexMatrix::eig): Ditto.
  8870.     * tree-extras (eig): Use them.
  8871.     * g-builtins.cc (builtin_eig): New function.
  8872.     * builtin-fcns.cc (general_functions): Add eig to list.
  8873.     * dococtave.1: Document it.
  8874.  
  8875.     * Matrix.h, Matrix.cc: (ComplexDET): New class.
  8876.     * tree-extras (determinant): Use it.
  8877.  
  8878. Mon Nov 30 04:02:29 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8879.  
  8880.     * Matrix.h, Matrix.cc (ComplexSVD): New class.
  8881.     * tree-extras (svd): Use it.
  8882.  
  8883.     * Matrix.cc (svd): Use lapack instead of linpack to compute SVD.
  8884.  
  8885.     * libcruft/Makefile.in: Replace eispack with lapack in
  8886.     subdirectory list.
  8887.     * libcruft/eispack: Delete directory.
  8888.     * libcruft/lapack/Makefile.in: New file.
  8889.     * configure.in: Create Makefile in libcruft/lapack, not
  8890.     libcruft/eispack.
  8891.  
  8892.     * libcruft/lapack: New directory.
  8893.     * Copy files for SVD and Eigenvalue computation here.
  8894.  
  8895.     * lex.l (<MATRIX>{SN}*\]/{S}*=): Only return SCREW_TWO if not
  8896.     defining a function.
  8897.  
  8898.     * arith-ops.cc (do_binary_op (double, double)): For pow operator,
  8899.     don't create complex value if exponent is really an int.
  8900.  
  8901.     * configure.in: Check for f77 last.
  8902.     * Print warnings if bison or lex is not found.
  8903.     * Reformat fatal no f2c/f77 error message.
  8904.  
  8905.     * flib.sh: Make it work even if xlf is called f77.
  8906.  
  8907. Sun Nov 29 01:55:41 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8908.  
  8909.     * tree-extras.cc: Include f77-uscore.h.
  8910.     * Use F77_FCN macro when declaring or calling Fortran functions.
  8911.  
  8912.     * configure.in: After checking to see that it's not garbage, add
  8913.     the output of f2c-compat.sh to DEFS.
  8914.  
  8915.     * f2c-compat.sh: Figure out whether or not we need to append an
  8916.     underscore to Fortran function names.
  8917.  
  8918.     * flibs.sh: Handle xlf -v output as special case.
  8919.  
  8920.     * octave.cc: Only define BADSIG if it isn't already defined.
  8921.     * g-builtins.cc: Ditto.
  8922.  
  8923.     * configure.in: Don't create man/Makefile.
  8924.     * man: Directory deleted.
  8925.     * doc/Makefile.in: Distribute and install octave.1.
  8926.     * doc/octave.1: Renamed from man/octave.1.
  8927.  
  8928. Sat Nov 28 15:54:39 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8929.  
  8930.     * man/Makefile.in (install): Install manpage.
  8931.     * octave.1: rename from octave.man
  8932.     * octave.1: Document builtin variables and command line editing
  8933.     (stolen from bash man page).
  8934.  
  8935.     * tree-const.cc (eval (int print)): Convert complex values to real
  8936.     if imaginary part is zero.
  8937.  
  8938.     * octave.cc (log_usage): Deleted.
  8939.     (main): Don't call log_usage.
  8940.  
  8941.     * g-builtins.cc (builtin_sqrt): Delete.
  8942.     (builtin_log): Ditto.
  8943.     (builtin_log10): Ditto.
  8944.  
  8945.     * tree-const.h, tree-const.cc (sqrt_internal): Delete.
  8946.     (log_internal): Ditto.
  8947.     (log10_internal): Ditto.
  8948.  
  8949.     * tree-const.cc (mapper): Handle neg_arg_complex.
  8950.  
  8951.     * builtin-fcns.h (Mapper_fcn): New field neg_arg_complex.
  8952.     * builtin-fcns.cc: (mapper_functions[]): Initialize it for list of
  8953.     mapper functions.
  8954.     * builtin-fcns.cc: (mapper_functions[]): Move log, log10, and sqrt
  8955.     back here from general_functions[].
  8956.  
  8957. Fri Nov 27 17:05:21 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8958.  
  8959.     * tree-extras.cc (tree_constant_to_vector): Handle complex scalars
  8960.     and matrices.
  8961.  
  8962. Wed Nov 25 17:32:42 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8963.  
  8964.     * man/octave.man: New file, very incomplete.
  8965.     * man/Makefile.in: Include octave.man in list of files to
  8966.     distribute.
  8967.  
  8968.     * g-buitlins.cc (builtin_rand): Handle nargin == 1.
  8969.     * tree-extras.cc (rand): Likewise.
  8970.  
  8971.     * rem.m: New M-file.  Implemented as M-file because it's much
  8972.     simpler!
  8973.  
  8974.     * configure.in (DEFAULT_DOT_C_FROM_DOT_F): Escape % characters in
  8975.     rule to avoid problems with autoconf, which uses % for sed command
  8976.     delimeters.
  8977.     (DEFAULT_DOT_O_FROM_DOT_F): Ditto.
  8978.  
  8979. Tue Nov 24 00:21:34 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  8980.  
  8981.     * tree-extras.cc (fill_matrix): Don't try to create matrices with
  8982.     negative dimensions.
  8983.     (frobit): Likewise.
  8984.  
  8985.     * utils.cc (check_dimensions): New function.
  8986.  
  8987.     * utils.cc (treat_neg_dim_as_zero): New function.
  8988.     * builtin-fcns.cc (treat_neg_dim_as_zero): New builtin variable,
  8989.     default value is false.
  8990.  
  8991.     * tree-const.h (tree_constant::bump_value): Like, assign, check
  8992.     reference count and possibly make a new copy before changing
  8993.     anything.
  8994.  
  8995.     * tree-base.h (is_builtin): New virtual function.
  8996.     * tree.cc (tree_builtin::is_builtin): New function.
  8997.  
  8998.     * parse.y (ans_expression): Also check to see if the lone
  8999.     expression is a builtin text-style function invoked without any
  9000.     arguments.
  9001.  
  9002.     * octave.cc, t-builtins.cc: Print copyright and other normal
  9003.     (non-error) message on cout instead of cerr.
  9004.  
  9005.     * t-builtins.cc (builtin_warranty): Don't return message in
  9006.     retval.
  9007.     (builtin_history): Likewise.
  9008.     (builtin_help): Also.
  9009.     (builtin_who): Ditto.
  9010.  
  9011.     * Version 0.48.
  9012.  
  9013.     * tree-extras.cc: Fix most functions to handle complex arguments.
  9014.     Still need to finish SVD and DET (waiting for these functions in
  9015.     the Matrix class).
  9016.  
  9017.     * tree.cc (tree_multi_assignment::eval): Optionally print names
  9018.     for result variables.
  9019.  
  9020.     * tree-const.h (tree_constant::eval (int print, int nargout)):
  9021.     New function.  Simply ignore nargout.
  9022.     * tree.cc (tree_matrix::eval (int print, int nargout)): Ditto.
  9023.  
  9024.     * tree.cc (tree_parameter_list::name): New function.
  9025.  
  9026.     * lex.l (<NEWMAT>): Delete rules, start condition because they are
  9027.     unecessary.
  9028.  
  9029.     * lex.l (<MATRIX>{SN}*\]): Split into three rules.  Use trailing
  9030.     context instead of home-brew lookahead.
  9031.  
  9032. Mon Nov 23 00:51:51 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9033.  
  9034.     * utils.cc (ok_to_lose_imaginary_part): New function.
  9035.     * builtin-fcns.cc (ok_to_lose_imaginary_part): New builtin
  9036.     variable, default value is warn.
  9037.  
  9038.     * tree-const.h (double_value): Maybe return real part if invoked
  9039.     for complex tree_constant.
  9040.     * tree-const.h (matrix_value): Ditto.
  9041.  
  9042.     * Version 0.47.  This one wasn't tested, but there have been a lot
  9043.     of significant changes and I wanted a backup.
  9044.  
  9045.     * tree-const.cc (sqrt_internal): New function.  Sqrt isn't
  9046.     implemented as a mapper function since negative real arguments
  9047.     give complex results.
  9048.     (log_internal): Ditto.
  9049.     (log10_internal): Ditto.
  9050.     * builtin-fcns.cc: Move sqrt, log, and log10 from mapper struct
  9051.     initializer to general function struct initializer.
  9052.  
  9053.     * rot90.m: New M-file.  Still needs rem() to be complete.
  9054.  
  9055.     * tree-const.cc (mapper): Handle mapper functions for complex
  9056.     variables.
  9057.  
  9058.     * mappers.h, mappers.cc: New file for mapper functions.
  9059.  
  9060.     * builtin-fcns.h, builtin-fcns.cc: Rename from builtins.h
  9061.     builtins.cc.
  9062.  
  9063.     * flipud.m: Don't do indexing on lhs.
  9064.     * fliplr.m: Likewise.
  9065.  
  9066. Sun Nov 22 17:09:36 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9067.  
  9068.     * arith-ops.cc (do_binary_op (double, double)): Handle a^b for
  9069.     a < 0.
  9070.  
  9071.     * builtins.cc: Make sqrt a general builtin function instead of a
  9072.     mapper function.
  9073.     * g-builtins.cc (builtin_sqrt): New function.
  9074.     * tree-const.cc (sqrt_internal): New function.
  9075.  
  9076. Sat Nov 21 16:41:02 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9077.  
  9078.     * tree-const.h, tree-const.cc:  Complete most changes required to
  9079.     handle complex types.  There are lots of details, most will be
  9080.     omitted here.
  9081.  
  9082.     * tree-const.h (is_real_type) New function.
  9083.     (is_complex_type): Ditto.
  9084.     (is_scalar_type): Ditto.
  9085.     (is_matrix_type): Ditto.
  9086.  
  9087.     * tree-const.h (REP_RHS_MATRIX, REP_ELEM_ASSIGN, CRMATRIX,
  9088.     ASSIGN_CRMATRIX_TO, CRMATRIX_ASSIGN_REP_ELEM,
  9089.     CRMATRIX_ASSIGN_ELEM): New macro for dealing with real and complex
  9090.     matrices in the same tree_constant_rep function.
  9091.  
  9092.     * tree-const.cc: Include arith-ops.cc.
  9093.  
  9094.     * arith-op.cc: New file for functions that implement unary and
  9095.     binary operations for the tree_constat classes.
  9096.     * Mark all operations that aren't implemented yet with a
  9097.     XXX FIXME XXX comment.  There are about 35-40 things left to fix
  9098.     in this file.
  9099.  
  9100. Thu Nov 19 00:25:16 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9101.  
  9102.     * Version 0.46.
  9103.     [ This one wasn't tested, but there have been a lot of significant
  9104.     changes and I wanted a backup. ]
  9105.  
  9106.     * tree-const.cc (tree_constant_rep::do_unary_op): Handle Complex.
  9107.     (do_unary_op (Complex&, tree::expression_type)): New function.
  9108.     (do_unary_op (ComplexMatrix&, tree_expression_type): Ditto.
  9109.  
  9110.     * tree-const.cc (tree_constant_rep::assign): Handle Complex
  9111.     (still needs updated support functions in order to work).
  9112.  
  9113.     * tree.cc (tree_matrix::eval): Handle Complex.
  9114.     (tree_identifier::eval): Ditto.
  9115.     (tree_for_command::eval): Ditto.
  9116.  
  9117. Wed Nov 18 23:33:13 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9118.  
  9119.     * tree_const.cc (tree_constant_rep::rows): Handle Complex.
  9120.     (tree_constant_rep::columns): Ditto.
  9121.     (tree_constant_rep::all): Ditto.
  9122.     (tree_constant_rep::any): Ditto.
  9123.     (tree_constant_rep::cumprod): Ditto.
  9124.     (tree_constant_rep::cumsum): Ditto.
  9125.     (tree_constant_rep::prod): Ditto.
  9126.     (tree_constant_rep::sum): Ditto.
  9127.     (tree_constant_rep::sumsq): Ditto.
  9128.  
  9129.     * tree_const.h, tree_const.cc (tree_constant::complex_value): New
  9130.     function.
  9131.     (tree_constant_rep::complex_value): Ditto
  9132.     (tree_constant::complex_matrix_value): New
  9133.     (tree_constant_rep::complex_matrix_value): New
  9134.  
  9135.     * tree_const.cc (tree_constant_rep::~tree_constant_rep): Handle
  9136.     complex scalars and matrices.
  9137.     (tree_constant_rep::force_numeric): Ditto.
  9138.     (tree_constant_rep::make_numeric): Ditto.
  9139.     (tree_constant_rep::eval): Ditto.
  9140.     (tree_constant_rep::bump_value): Ditto.  C++, for C == a
  9141.     complex value is C = C + 1.  Should I even do this?  Hmmm.
  9142.  
  9143.     * tree-const.h, tree-const.cc: Begin adding support for Compelex.
  9144.     * Add complex_scalar and complex_matrix to value union.
  9145.     * Add complex_scalar_constant and complex_matrix_constant to type
  9146.     tag enum.
  9147.     * New constructors.
  9148.  
  9149.     * Matrix.h, Matrix.cc: Major changes to add Complex support.
  9150.  
  9151. Tue Nov 17 14:40:45 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9152.  
  9153.     * Matrix.cc (RowVector::operator (const Matrix&)): New function.
  9154.  
  9155.     * Matrix.cc (ColumnVector::transpose): New function.
  9156.     Eliminate friend function that served the same purpose.
  9157.     (RowVector::transpose): Ditto.
  9158.  
  9159. Mon Nov 16 09:57:33 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9160.  
  9161.     * lex.l (QSTRING): Fix to allow '' inside a string to represent a
  9162.     single quote.  Makes computer.m a little funnier.
  9163.  
  9164. Fri Nov 13 18:46:39 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9165.  
  9166.     * Version 0.45.
  9167.  
  9168.     * computer.m: New M-file.
  9169.     * tril.m: Ditto.
  9170.     * triu.m: Ditto.
  9171.  
  9172.     * doc (*.texi): Can now produce BUGS, INSTALL, and octave.info
  9173.     files without generating errors, though the organization is
  9174.     probably till very wrong.
  9175.  
  9176.     * Makefile.in (newversion): Add magic to handle major versions
  9177.     other than 0, and major/minor versions of any length.
  9178.  
  9179. Thu Nov 12 01:37:45 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9180.  
  9181.     * g-builtins.h, tree-const.h, builtins.cc, g-builtins.cc,
  9182.     tree-extras.cc: Conditionally compile code for NPSOL and FSQP
  9183.     based on FSQP_MISSING and NPSOL_MISSING.
  9184.     * g-builtins.cc (builtin_npsol): If NPSOL is missing, always call
  9185.     npsol_usage() to print out message indicating why NPSOL doesn't
  9186.     work.
  9187.     * g-builtins.cc (builtin_fsqp): Likewise for FSQP.
  9188.  
  9189.     * configure.in: Check for srcdir/libcruft/npsol/npsol.f and
  9190.     srcdir/libcruft/fsqp/fsqp.f.  If missing, define NPSOL_MISSING or
  9191.     FSQP_MISSING and add them to DEFS.
  9192.  
  9193.     * libcruft/npsol/README.MISSING: New file.
  9194.     * libcruft/fsqp/README.MISSING: Ditto.
  9195.  
  9196.     * libcruft/npsol/Makefile.in (dist): Don't distribute sources
  9197.     because of license restriction.  Do distribute Makefile.in and
  9198.     README.MISSING.
  9199.     * libcruft/fsqp/Makefile.in (dist): Ditto.
  9200.  
  9201.     * All Makefile.in files (local-dist): New target, usually the same
  9202.     as dist.
  9203.  
  9204.     * parse.y (ans_expression): Check to see that the RHS isn't just
  9205.     an identifier.
  9206.     * tree.cc (tree_identifier::eval (int)): Maybe print id name.
  9207.     * tree.cc (tree_assignment::eval (int)): Ditto.
  9208.     * buitlins.cc (print_answer_id_name): New builtin variable.
  9209.     * utils.cc (print_answer_id_name): New function.
  9210.  
  9211. Tue Nov 10 10:58:36 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9212.  
  9213.     * octave.cc (log_usage): Surround with #if 0/#endif.
  9214.  
  9215. Mon Nov  9 13:42:54 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9216.  
  9217.     * symtab.cc (load): Only issue error mesasge if attempt to find
  9218.     _first_ name keyword fails.
  9219.  
  9220.     * tree-const.cc (make_numeric_or_magic): New function.  Like
  9221.     make_numeric except also pass magic_colons.
  9222.     * tree-const.cc (all do_matrix_index functions): Matrix ndices can
  9223.     be naked colons, so use make_numeric_or_magic on index arguments
  9224.     instead of make_numeric.
  9225.  
  9226.     * liboctave/Makefie.in (install): Install .h files in $(includedir).
  9227.     (includedir): New macro, default value $(prefix)/include.
  9228.  
  9229.     * tree.cc (tree_function::eval (int print)): Force arguments to be
  9230.     undefined.
  9231.  
  9232.     * tree-const.h (tree_constant::assign (rhs, args, nargs)): Check
  9233.     reference count before assigning.
  9234.     * tree.cc (tree_identifier::assign (rhs, args, nargs)): Don't eval
  9235.     lhs before doing assignment.
  9236.  
  9237.     * tree.cc (parse_m_file): Gobble leading white space, including
  9238.     comments.
  9239.  
  9240. Fri Nov  6 16:52:59 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9241.  
  9242.     * Version 0.44.
  9243.  
  9244.     * g-builtins.cc (builtin_getenv): New function.
  9245.  
  9246.     * isempty.m: New M-file.
  9247.  
  9248.     * g-builtins.cc (builtin_exist): New function.
  9249.     * utils.cc (identifier_exists): Handle the dirty details.
  9250.  
  9251.     * utils.cc (warn_comma_in_global_decl): New function.
  9252.     * builtins.cc (warn_comma_in_global_decl): New builtin variable.
  9253.     Initial value is true.
  9254.     * parse.y (global_decl): Handle global declarations here,
  9255.     including optional initialization.
  9256.     * t-builtins.cc (builtin_global): Deleted.
  9257.  
  9258. Thu Nov  5 23:59:39 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9259.  
  9260.     * g-builtins.cc (builtin_feval): New function.
  9261.     * tree-extras.cc (feval): Handle the dirty details.
  9262.  
  9263.     * g-builtins.cc (builtin_rand): New function.
  9264.     * tree-extras.cc (rand): Handle the dirty details.
  9265.  
  9266. Wed Nov  4 14:54:17 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9267.  
  9268.     * num2str.m: New M-file.
  9269.     * int2str.m: Ditto.
  9270.  
  9271.     * g-builtins.cc (builtin_disp): New function.
  9272.  
  9273.     * g-builtins.cc (builtin_fprintf, builtin_printf,
  9274.     builtin_sprintf):  New functions.
  9275.     * tree-extras.cc (do_printf): New function to handle the gory
  9276.     details.
  9277.  
  9278.     * g-builtins.cc (builtin_flops): Implement here because we may
  9279.     actually want to count operations at some point.
  9280.  
  9281. Tue Nov  3 17:06:40 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9282.  
  9283.     * tree-const.cc (do_binary_op): Detect and give error message for
  9284.     optations on empty matrices.
  9285.     (do_unary_op): Likewise.
  9286.  
  9287.     * parse.y (matrix): Convert `[]' and `[;]' to empty matrices
  9288.     instead of (tree_matrix *) NULL.
  9289.  
  9290. Mon Nov  2 11:23:40 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9291.  
  9292.     * src/Makefile.in: Update dependencies.
  9293.     * liboctave/Makefile.in: Ditto.
  9294.  
  9295.     * tree-const.cc (force_numeric): Consult matlab_strings()
  9296.     before doing string to number conversion.
  9297.     * builtins.cc (matlab_strings): New builtin variable.
  9298.     * utils.cc (matlab_strings): New function.
  9299.  
  9300.     * tree-extras.cc (linear_constraints_ok): New function.
  9301.     (linear_constraints_ok): Ditto.
  9302.     (npsol): Use them to avoid creating inconsistent sets of
  9303.     constraints and crashing.  It would really be nice to have
  9304.     exception handling.
  9305.  
  9306.     * symtab.cc (load): Issue error mesasges if attempt to find
  9307.     name keyword fails.
  9308.  
  9309.     * Version 0.43.
  9310.  
  9311.     * tree-extras.cc (npsol): Use new minimize (phi, inform).
  9312.     Handle nargout == 3.
  9313.  
  9314.     * g-builtins.cc (builtin_npsol): Allow nargout == 3.
  9315.  
  9316.     * NPSOL.cc (set_default_options): New function.
  9317.     (all constructors): Use it.
  9318.     (operator =): Use it and print warning message (setting default
  9319.     options doesn't represent a true copy and it would be somewhat
  9320.     difficult to fix this...).
  9321.  
  9322.     * npchkd.f (npchkd): Only write message if msglvl > 0.
  9323.  
  9324. Sun Nov  1 00:58:16 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9325.  
  9326.     * gnuplot-build/Makefile.in (LIBDIRS): Set correctly.
  9327.     (notgnuplot): Use it.
  9328.  
  9329.     * libcruft/misc/gen-d1mach.c: Generate d1mach.f at build time
  9330.     instead of depending on the installer to get it right.
  9331.     * libcruft/Makefile.in (gen-d1mach): New target.
  9332.  
  9333.     * libcruft/Makerules.in (SPECIAL): New macro.
  9334.     (DISTFILES): Include it.
  9335.  
  9336.     * libcruft/Makerules.in (SPECIAL_DEPEND): Ditto.
  9337.     (../../libcruft.a): Use it.
  9338.  
  9339. Mon Oct 26 02:25:11 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9340.  
  9341.     * tree-extras.cc (is_valid_function): Try harder to find M-files
  9342.     that may not have been parsed yet.
  9343.  
  9344.     * symtab.cc (define (symbol_record*)): New function.  Make it
  9345.     simple to copy all fields of a symbol_record if we already have
  9346.     one.
  9347.     * utils.cc (force_global): Use it.
  9348.  
  9349.     * utils.cc (valid_identifier): Allow underscores in names.
  9350.  
  9351.     * tree-extras.cc (npsol): Force column vector to be returned.
  9352.     (fsolve): Ditto.
  9353.  
  9354.     * Version 0.42.
  9355.  
  9356.     * tree-extras.cc (fsolve): New function for solving nonlinear
  9357.     algebraic equations.  This needs much more work if it is to
  9358.     provide all the functionality of Matlab's fsolve.
  9359.  
  9360.     * tree-extras.cc (fsolve_user_function): New function.
  9361.  
  9362.     * libcruft/minpack: Import needed functions.
  9363.  
  9364.     * tree-extras.cc: (npsol (tree_constant*, int, int): Completely
  9365.     rewrite to handle all of the follwing:
  9366.  
  9367.       1. npsol (x, phi)
  9368.       2. npsol (x, phi, lb, ub)
  9369.       3. npsol (x, phi, lb, ub, llb, c, lub)
  9370.       4. npsol (x, phi, lb, ub, llb, c, lub, nllb, g, nlub)
  9371.       5. npsol (x, phi, lb, ub,              nllb, g, nlub)
  9372.       6. npsol (x, phi,         llb, c, lub, nllb, g, nlub)
  9373.       7. npsol (x, phi,         llb, c, lub)
  9374.       8. npsol (x, phi,                      nllb, g, nlub)
  9375.  
  9376.     * tree-extras.cc (npsol_constraint_function): New function.
  9377.  
  9378.     * tree-extras.cc (tree_constant_to_vector): New function.
  9379.     (tree_constant_to_matrix): Ditto.
  9380.     (takes_correct_nargs): Ditto.
  9381.  
  9382. Fri Oct 23 10:19:51 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9383.  
  9384.     * tree-extras.cc (is_valid_function): New function.
  9385.     (npsol): Use it.
  9386.  
  9387.     * utils.cc (s_plural): New function.
  9388.     (es_plural): Ditto.
  9389.  
  9390.     * tree-extras.cc (npsol): Improve checks for valid objective
  9391.     function.
  9392.  
  9393.     * tree.cc (tree_function::max_expected_args): New function.
  9394.  
  9395. Thu Oct 22 18:42:07 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9396.  
  9397.     * g-builtins.cc (builtin_lsode): Quick check of arguments, then
  9398.     call lsode (tree_constant *, int, int).
  9399.     * Move rest of code for implementing builtin_lsode to
  9400.     tree-extras.cc.
  9401.  
  9402.     * g-builtins.cc (builtin_npsol: Quick check of arguments, then
  9403.     call npsol (tree_constant *, int, int).
  9404.     * Move rest of code for implementing builtin_npsol to
  9405.     tree-extras.cc.
  9406.  
  9407.     * tree-const.cc: Simplify functions that require numeric arguments
  9408.     by always calling make_numeric for them instead of doing it
  9409.     conditionally.
  9410.     * tree.cc: Ditto.
  9411.     * tree-extras.cc: Ditto.
  9412.  
  9413.     * tree-const.h (tree_constant::make_numeric): Return *this if
  9414.     already a numeric type.
  9415.  
  9416.     * NLP.cc: In constructors, don't try to assign NULL to bounds
  9417.     objects.
  9418.  
  9419.     * tree-const.cc (tree_constant_rep::valid_as_scalar_index (void)):
  9420.     New function.
  9421.     * tree-const.cc (valid_scalar_indices (tree_constant*, int):
  9422.     New function.
  9423.     * tree-const.cc (tree_constant_rep::do_scalar_index): Simplify by
  9424.     using functions to determine if arguments are valid as indices.
  9425.     (tree_constant_rep::do_scalar_assignment): Likewise.
  9426.  
  9427. Wed Oct 21 14:11:58 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9428.  
  9429.     * tree-extras.cc (determinant): Make it work again.
  9430.  
  9431.     * tree.cc (tree_identifier::eval (tree_constant*, int, int, int):
  9432.     Simplify logic.  Only have one ans->eval() call.
  9433.  
  9434.     * tree-const.cc (tree_constant_rep::eval (tree_constant*, int,
  9435.     int, int): Properly handle indexing of range constants.
  9436.  
  9437.     * tree-const.cc (stupid_fortran_style_matrix_index): Preserve row
  9438.     or column orientation for vectors.
  9439.  
  9440.     * toeplitz.m: New M-file.
  9441.     * invhilb.m: Ditto.
  9442.     * hankel.m: Ditto.
  9443.  
  9444.     * tree-extras.cc (max): Handle two arg case.
  9445.     tree-extras.cc (max): Likewise.
  9446.     (min (Matrix&, Matrix&): New function.
  9447.     (max (Matrix&, Matrix&): Ditto.
  9448.  
  9449. Tue Oct 20 15:13:57 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9450.  
  9451.     * Version 0.41.
  9452.  
  9453. Mon Oct 19 16:46:35 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9454.  
  9455.     * rows.m: New M-file.
  9456.     * g-builtins.cc (builtin_rows): Delete function.
  9457.     * g-builtins.h (builtin_rows): Delete declaration.
  9458.     * builtins.cc (general_functions): Delete from initialization list.
  9459.  
  9460.     * columns.m: New M-file.
  9461.     * g-builtins.cc (builtin_columns): Delete function.
  9462.     * g-builtins.h (builtin_columns): Delete declaration.
  9463.     * builtins.cc (general_functions): Delete from initialization list.
  9464.  
  9465.     * length.m: New M-file.
  9466.     * g-builtins.cc (builtin_length): Delete function.
  9467.     * g-builtins.h (builtin_length): Delete declaration.
  9468.     * builtins.cc (general_functions): Delete from initialization list.
  9469.  
  9470.     * g-builtins.cc (builtin_size): If two values are expected to be
  9471.     returned, put nr and nc in separate registers.
  9472.  
  9473. Sun Oct 18 13:37:17 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9474.  
  9475.     * tree-base.h: Extract base tree class declarations from tree.h.
  9476.     * tree-const.cc, tree-const.h: Extract tree_constant class from
  9477.     from tree.cc, tree.h.
  9478.     Change all uses of tree.h to use either or both of tree-base.h and
  9479.     tree-const.h.
  9480.  
  9481.     * Matrix.cc (solve): Replaces LinEqn class.
  9482.     tree.cc (do_binary_op) Use it.
  9483.  
  9484.     * g-builtins.cc (builtin_max): New function.
  9485.     tree.cc (tree_constant::max): New friend.
  9486.  
  9487.     * g-builtins.cc (builtin_min): New function.
  9488.     tree.cc (tree_constant::min): New friend.
  9489.  
  9490.     * cond.m: New M-file.
  9491.  
  9492.     * rank.m: New M-file.
  9493.  
  9494.     * g-builtins.cc (builtin_svd): New function.
  9495.     tree.cc (tree_constant::svd): New friend function.
  9496.  
  9497.     * g-builtins.cc (builtin_svd): New function.
  9498.     tree.cc (tree_constant::svd): New friend function.
  9499.  
  9500.     * t-builtins.cc (builtin_format): New function.  Implement some of
  9501.     the Matlab options (sort of).
  9502.  
  9503.     * Major changes to liboctave source.  A new Matrix.cc/Matrix.h
  9504.     completely replaces the old Matrix/Vec/AVec code.  All other
  9505.     classes that use Matrix/Vector objects have been updated (or
  9506.     deleted, if they are no longer needed).  All callers changed in
  9507.     octave sources.
  9508.  
  9509. Sun Oct 11 21:22:16 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9510.  
  9511.     * tree.cc (tree_function::eval): Don't define more function
  9512.     parameters than are expected.  If fewer arguments than expected
  9513.     are actually supplied, force them to be undefined.
  9514.  
  9515.     * parse.y (fact): Give warning and abort for identifiers followed
  9516.     by '['.  This should catch most improper uses of [] instead of ()
  9517.     for indexing operators.
  9518.  
  9519.     * tree.cc (do_binary_op (Matrix&, Matrix&, tree::expression_type):
  9520.     Handle element by element exponentiation.
  9521.  
  9522. Tue Sep 22 10:09:06 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9523.  
  9524.     * Version 0.40.
  9525.  
  9526. Mon Sep 21 13:09:06 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9527.  
  9528.     * lex.l: Accept ** and .** as well as ^ and .^ as exponentiation
  9529.     operators.
  9530.  
  9531. Fri Sep 18 15:19:51 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9532.  
  9533.     * tree.h tree.cc utils.cc g-builtins.cc: Elimitate need for
  9534.     overloaded operator-> in the tree_constant class.  Also eliminate
  9535.     uses of ->string, ->scalar, etc.  Instead, always call
  9536.     .string_value(), .double_value(), etc.
  9537.  
  9538.     * builtins.cc (install_builtins): Reserve `ans' as an
  9539.     uninitialized global variable (should it really be global?).
  9540.  
  9541.     * parse.y (ans_expression): Handle default assignemnt to builtin
  9542.     variable ans.
  9543.     (command): Use it.
  9544.  
  9545. Tue Sep 15 14:06:12 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9546.  
  9547.     * Version 0.39.
  9548.  
  9549.     * tree.cc (tree_identifier::bump_value): Don't try to increment
  9550.     undefined symbols or values.
  9551.     (tree_prefix_expression::eval): Don't call bump_value if id is a
  9552.     NULL_TREE.
  9553.     (tree_prefix_expression::eval): Likewise.
  9554.  
  9555.     * g-builtins.cc (lsode_builtin): Handle extra arguments.
  9556.     liboctave/ODE.cc (integ): Add template for handling bad returns
  9557.     from lsode.
  9558.  
  9559.     * tree.cc (class tree_return_command): Implementation is just like
  9560.     break and continue.  Something seems wrong about this...
  9561.     lex.l (return): Recognize return statement.
  9562.     parse.y (statement): Handle function returns.
  9563.     tree.cc (various eval functions): Check to see if we are returning
  9564.     from a function.
  9565.  
  9566.     * tree.cc (tree_for_command::eval): Set abort_on_undefined when
  9567.     evaluating the loop body.
  9568.     (tree_while_command::eval): Ditto.
  9569.  
  9570.     * tree.cc (class tree_idenfier): Improve searching/parsing M-files
  9571.     when handling undefined names.
  9572.     tree.cc (tree_identifier::parse_m_file (char*)): New function.
  9573.     (tree_identifier::parse_m_file (void)): Use it.
  9574.  
  9575.     * utils.cc (force_global): New function.
  9576.     * symtab.cc (symbol_table::remove_name(char *)): New function.
  9577.  
  9578.     * tree.h, tree.cc (class tree_constant): Split into two classes,
  9579.     tree_constant (handle) and tree_constant_rep (body) to enable use
  9580.     of `smart pointers' and reference counted memory management.
  9581.     (Lots of things are different with this change.)
  9582.  
  9583. Sat Aug 22 11:58:27 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9584.  
  9585.     * Version 0.38.
  9586.  
  9587.     * lex.l (COMMA_KLUDGE): Delete production, all uses.  This doesn't
  9588.     seem to be necessary anymore, and the mystery output lines
  9589.     disappear without it.
  9590.  
  9591.     * builtins.cc (make_eternal (char *)): New function.
  9592.     (install_builtins): Make LOADPATH, eps, pi, Inf, and NaN eternal.
  9593.  
  9594.     * New M-files: mean.m, std.m, hadamard.m, vander.m, hilb.m,
  9595.     linspace.m, logspace.m.
  9596.  
  9597.     * tree.cc (tree_function::eval): Don't check number of arguments
  9598.     supplied against total number possible (previously thought to be
  9599.     `expected') so that user-defined functions can have variable
  9600.     numbers of arguments.
  9601.  
  9602.     * tree.cc (tree_identifier::eval_undefined_error): New function.
  9603.     (tree_identifier::eval): Use it.
  9604.  
  9605.     * octave.cc (abort_on_undefined): New global symbol to control
  9606.     whether we should jump to top level after an undefined symbol has
  9607.     been encountered.
  9608.     tree.cc (tree_function::eval) Set it before evaluating function
  9609.     body, restore to previous value after successful completion.
  9610.     tree.cc (tree_identifier::eval_undefined_error): Use it
  9611.  
  9612. Fri Aug 20 09:31:14 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9613.  
  9614.     * g-builtins.cc:  New mapper functions:
  9615.     isnan: Uses xisnan, which calls IEEE function isnan.
  9616.     isinf: Uses xisinf which calls IEEE functions finite and isnan,
  9617.     or isinf if available.
  9618.     finite: Uses xfinite, which calls IEEE function finite.
  9619.     abs: Uses fabs.
  9620.  
  9621.     * g-builtins.cc    (sumsq): New function.
  9622.     (diag): New function.
  9623.  
  9624.     * tree.cc (tree_constant::sumsq): New function
  9625.     (tree_constant::diag): New function
  9626.  
  9627.     * Matrix.cc (sumsq): New function.
  9628.     (diag): Ditto.
  9629.  
  9630. Thu Aug 20 00:36:44 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9631.  
  9632.     * g-builtins.cc (builtin_error): New function.
  9633.  
  9634.     * gnuplot-build/Makefile.in (dist): Actually create `term'
  9635.     subdirectory.
  9636.  
  9637.     * Lots of changes to tree.cc tree_assignment_expression::eval and
  9638.     tree_index_expression::eval to make matrix indexing work like
  9639.     Matlab.
  9640.     (do_fortran_indexing): New user-level variable to control this
  9641.     behavior.  If this variable is false, things like
  9642.  
  9643.       a([1,2;3,4], [1,2;3,4]) = b
  9644.  
  9645.     become syntax errors.  Otherwise, Matlab braindamage prevails.
  9646.  
  9647. Tue Aug 18 13:15:46 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9648.  
  9649.     * Version 0.37.
  9650.  
  9651.     * tree.cc (do_matrix_assignment): Conditionally allow single
  9652.     indices for Matrix assignments.
  9653.     (do_matrix_index): Ditto.
  9654.  
  9655.     * utils.cc (do_fortran_indexing): New function.
  9656.     utils.h: Declare it.
  9657.     builtins.cc (install_builtins): Default value for new
  9658.     do_fortran_indexing variable.
  9659.  
  9660.     * builtins.cc (install_builtins): Bind eps to the value
  9661.     DBL_EPSILON from float.h.  Make it read only (will this cause
  9662.     trouble)?
  9663.     * Bind Inf to 1/0 (will only work for IEEE machines.
  9664.     * Bind NaN to 0/0 (will only work for IEEE machines.
  9665.     * Add round, fix, floor, ceil, and sign to builtin mapper functions.
  9666.     (round): New function.
  9667.     (fix): Ditto.
  9668.     (signum): Ditto.
  9669.     * Add clc (clear screen function).
  9670.     * Add home (clear screen function).  To be just like Matlab, this
  9671.     wouldn't clear the screen.
  9672.  
  9673.     * New M-files: fliplr.m, flipud.m, trace.m, reshape.m.
  9674.  
  9675.     * utils.cc (bind_variable): Revise bind_string_variable so that it
  9676.     takes a tree_constant as an argument.
  9677.     (bind_protected_variable): Likewise for the function
  9678.     bind_protected_string_variable.
  9679.     (bind_string_variable): Delete.
  9680.     (bind_protected_string_variable): Ditto.
  9681.     utils.h: Fix declarations.
  9682.     builtins.cc t-builtins.cc: Fix callers.
  9683.  
  9684.     * builtins.cc (install_builtins): Bind LOADPATH here.
  9685.     octave.cc (initialize_globals): Not here.
  9686.  
  9687.     * Makefile.in (SOURCES): Add new scripts directory.
  9688.     (scripts): New target.
  9689.     libcruft/Makefile.in (install): Don't depend on all.
  9690.  
  9691.     * utils.cc (m_file_in_path): Get path from LOADPATH variable.
  9692.     tree.cc (tree_identifier::parse_m_file): Modify caller.
  9693.  
  9694.     * src/Makefile.in (OCTAVE_M_FILE_DIR): New variable.
  9695.     (utils.o): Use it.
  9696.     utils.cc (default_path): Use it.
  9697.  
  9698.     * utils.cc (pathstring_to_vector): New function.
  9699.     (default_path): Return colon separated path instead of vector of
  9700.     paths.
  9701.     * octave.cc (initialize_globals): Use pathstring_to_vector here.
  9702.     Bind output of default_path to LOADPATH variable.
  9703.     Eliminate octave_path global variable.
  9704.  
  9705.     * tree.cc (isstr): New function.
  9706.     (all): Ditto.
  9707.     (any): Ditto.
  9708.     (cumprod): Ditto.
  9709.     (cumsum): Ditto.
  9710.     (prod): Ditto.
  9711.     (sum): Ditto.
  9712.  
  9713.     * g-builtins.cc (builtin_isstr): New function.
  9714.     (builtin_all): Ditto.
  9715.     (builtin_any): Ditto.
  9716.     (builtin_cumprod): Ditto.
  9717.     (builtin_cumsum): Ditto.
  9718.     (builtin_prod): Ditto.
  9719.     (builtin_sum): Ditto.
  9720.  
  9721.     * Matrix.cc (all): New function.
  9722.     (any): Ditto.
  9723.     (cumprod): Ditto.
  9724.     (cumsum): Ditto.
  9725.     (prod): Ditto.
  9726.     (sum): Ditto.
  9727.  
  9728.     * scripts: New directory.
  9729.     scripts/strcmp.m: New file (first M-file function in distribution!).
  9730.     scripts/Makefile.in: New file.
  9731.     configure.in: Include scripts/Makefile in list of files to create.
  9732.  
  9733. Sat Aug 15 18:32:24 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9734.  
  9735.     * Version 0.36.
  9736.  
  9737. Fri Aug 14 08:44:10 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9738.  
  9739.     * tree.cc (id_to_define): New global variable.
  9740.     (curr_m_file_name): Ditto.
  9741.     (current_infile): Ditto.
  9742.  
  9743.     * tree.h tree.cc (tree_identifier::parse_m_file): New function.
  9744.     (tree_identifier::eval): Handle M-files.
  9745.  
  9746.     * tree.h (stash_m_file_name): New virtual function.
  9747.     (stash_m_file_time): Ditto.
  9748.     (time_parsed): Ditto.
  9749.     (m_file_name): Ditto.
  9750.  
  9751.     * tree.h tree.cc (tree_function::stash_m_file_name) New function.
  9752.     (tree_function::stash_m_file_time): Ditto.
  9753.     (tree_function::time_parsed): Ditto.
  9754.     (tree_function::m_file_name): Ditto.
  9755.  
  9756.     * lex.l (reading_m_file): New global variable.
  9757.     (delete_buffer): New function.
  9758.     (yywrap): New function.  Always return 0 (is this a smart thing to
  9759.     do?).
  9760.  
  9761.     * parse.y (func_def2): Handle input from m-files (sort of).
  9762.  
  9763.     * octave.cc (octave_path): New global variable.
  9764.     (using_readline): Ditto.
  9765.     (no_line_editing): Ditto.
  9766.  
  9767.     * octave.cc (main): Initialize current_command_number before
  9768.     calling setjmp.
  9769.     * Increment it in main command loop, not in parse.y.
  9770.  
  9771.     * utils.h utils.cc (default_path): New function.
  9772.     (m_file_in_path): Ditto.
  9773.     (is_newer): Ditto.
  9774.  
  9775.     * octave.cc (main): Execute commands here.
  9776.     * parse.y (input): Not here.
  9777.  
  9778.     * octave.cc (tree *global_command): New global variable that
  9779.     points to the current command to be executed.
  9780.  
  9781. Thu Aug 13 07:08:11 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9782.  
  9783.     * parse.y: Make word_list_cmd a fact, not a command, so that
  9784.     things like `y = who -all' can work.  You can't do that in Matlab.
  9785.  
  9786.     * t-builtins.cc (builtin_who): Print symbols in columns, sorted.
  9787.     (list_in_columns) New function, mostly stolen from GNU ls.
  9788.  
  9789.     * symtab.h symtab.cc (char **list (void)) New function.
  9790.     (char **sorted_list (void) New function.
  9791.  
  9792.     * tree.cc (various eval functions): Handle printing results of
  9793.     text and general functions here.  Straighten out other printing
  9794.     stuff, maybe...
  9795.  
  9796.     * t-builtins.h t-builtins.cc: Make text functions return
  9797.     tree_constant* instead of int, delete print flag argument.
  9798.  
  9799.     * g-builtins.h g-builtins.cc: Delete print flag argument.
  9800.  
  9801.     * Version 0.35.
  9802.  
  9803. Wed Aug 12 15:12:23 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9804.  
  9805.     * tree.cc (tree_builtin::eval): Call mapper function with
  9806.     print = 0 to avoid getting two answers.
  9807.     (specific do_matrix_assignment functions): Handle resizing
  9808.     correctly for `:' indices.
  9809.     (tree_colon_expression::eval): Don't crash if the evaluation of
  9810.     an operand yields a NULL_TREE_CONST.
  9811.  
  9812. Mon Aug 10 07:31:37 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9813.  
  9814.     * tree.cc (tree_identifier::define):  Return NULL_TREE_CONST if
  9815.     symbol_record::define fails.
  9816.     (tree_identifier::assign): Likewise.
  9817.  
  9818.     * symtab.h (symbol_lifetime): New attribute for symbol_records.
  9819.     Can be either temporary or eternal.
  9820.     (symbol_class): Delete eternal attribute.
  9821.     * builtins.cc (install_builtins): Mark all builtins as eternal.
  9822.  
  9823.     * Version 0.34.
  9824.  
  9825.     * tree.h: Delete ttype, enum list of tree types.
  9826.  
  9827.     * g-builtins.h g-builtins.cc (builtin_colloc): New function.
  9828.  
  9829.     * liboctave (various): Add missing return values, etc. so that
  9830.     liboctave compiles cleanly.
  9831.  
  9832.     * tree.h tree.cc (tree_multi_assignment): New class to implement
  9833.     assignments to more than one variable.  Does it work?  Maybe...
  9834.  
  9835.     * tree.h (tree_constant **eval (int, int)): New virtual function.
  9836.     (is_identifier): Another one.
  9837.  
  9838.     * symtab.h (eternal): New class for symbol_records.
  9839.     * symtab.h symtab.cc (make_eternal): New function.
  9840.     * builtins.cc (install_builtins): Make builtin variables eternal.
  9841.  
  9842.     * tree.cc (list_to_vector): Surround by `#if 0/#endif' to avoid
  9843.     compilation warning.
  9844.  
  9845. Sun Aug  9 03:18:38 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9846.  
  9847.     * t-builtins.h t-builtins.cc (builtin_cd): New function adapted
  9848.     from bash for changing the current working directory.
  9849.     (builtin_pwd): New function adapted from bash for printing the
  9850.     current working directory.
  9851.  
  9852.     * utils.h utils.cc: New functions from bash for changing and
  9853.     printing the current working directory:
  9854.  
  9855.             pathname_backup        make_absolute
  9856.             get_working_directory  change_to_directory
  9857.  
  9858.     * utils.h utils.cc (bind_string_variable): New function.
  9859.     (bind_protected_string_variable): Likewise.
  9860.  
  9861.     * octave.cc (initialze_globals): New function.
  9862.  
  9863.     * utils.h utils.cc: New functions from bash, mostly for fancy
  9864.     prompting:
  9865.  
  9866.         polite_directory_format  absolute_pathname
  9867.         absolute_program         base_pathname
  9868.         read_octal               sub_append_string
  9869.         decode_prompt_string
  9870.  
  9871. Thu Aug  6 02:39:31 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9872.  
  9873.     * octave.cc (initialize_history): Fix up to
  9874.     (octave_hist_file) New global variable.
  9875.     (octave_hist_size) Ditto.
  9876.     (history_lines_this_session) Ditto.
  9877.     (history_lines_in_file) Ditto.
  9878.  
  9879.     * input.cc (octave_gets): Keep track of number of lines read
  9880.     during the current session.
  9881.  
  9882.     * utils.cc (default_history_file): New function.  Look for
  9883.     OCTAVE_HISTFILE environment variable and use its value if
  9884.     possible.
  9885.     (default_history_size): New function.  Look for OCTAVE_HISTSIZE
  9886.     environment variable and use its value if possible.
  9887.  
  9888.     * t-builtins.cc (builtin_history): Steal from bash and modify to
  9889.     work with octave.
  9890.  
  9891.     * g-builtins.cc (builtin_det): New function.
  9892.  
  9893.     * tree.h tree.cc (determinant): New function
  9894.  
  9895.     * g-builtins.cc: Rewrite functions that use fill_matrix, inverse,
  9896.     and identity_matrix to use new versions implemented as friends of
  9897.     tree_constant.  This is being done in an attempt to get rid of all
  9898.     calls to tree_constant::const_type() outside of tree.cc.
  9899.  
  9900.     * tree.cc (tree_constant): Implement new functions for filling
  9901.     and inverting tree constants as matrices, and for creating an
  9902.     identity matrix from a tree_constant.
  9903.  
  9904.     * g-builtins.cc (builtin_inv): New function.
  9905.     builtins.cc: Allow builtin_inv to be called as either inv(A) or
  9906.     inverse(A).
  9907.  
  9908.     * tree.cc (do_binary_op (Matrix, Matrix)): Better handling of
  9909.     solution of linear equations for square coefficient matrices.
  9910.  
  9911.     * LinEqn.cc (solve): Don't exit on singular matrices.  Implement
  9912.     new variations of these functions that will allow status checking.
  9913.  
  9914.     * src/Makefile.in: Define GNUPLOT_BINARY and SITE_DEFAULTS.
  9915.     Specific rules for octave.o and builtins.o to avoid defining
  9916.     GNUPLOT_BINARY and SITE_DEFAULTS for all .cc targets.
  9917.  
  9918.     * builtins.cc: Use macro GNUPLOT_BINARY.
  9919.  
  9920.     * octave.cc (execute_startup_files): Use macro SITE_DEFAULTS.
  9921.     Execute commands from SITE_DEFAULTS file.
  9922.  
  9923.     * t-buitlins.cc (builtin_pause): Make it work.
  9924.  
  9925.     * configure.in: Check for termio.h and/or sgtty.h.
  9926.  
  9927.     * octave.cc (clean_up): Reset terminal state to cooked mode.
  9928.     (main) Likewise, after return from SIGINT signal handler.
  9929.  
  9930.     * utils.h utils.cc (raw_mode): New function (mostly stolen from
  9931.     less(1)) toggle input processing for stdin to raw/cooked modes.
  9932.     (kbhit): New function to read one character from cin in raw mode
  9933.     without echoing it.
  9934.  
  9935.     * builtins.cc: Fix expected number of arguments in lists of
  9936.     builtins.
  9937.  
  9938.     * tree.h tree.cc (max_args_expected (void)): New virtual function.
  9939.     (tree_builtins::) Provide a definition of it.
  9940.  
  9941.     * lex.l (identifier): Before gobbling up text function arguments,
  9942.     check to see that we expect some.
  9943.  
  9944.     * symtab.h symtab.cc (max_args_expected): Return max args expected
  9945.     by a symbol (currently only valid for tree_builtins).
  9946.  
  9947. Wed Aug  5 05:03:59 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9948.  
  9949.     * utils.h utils.cc (resize_on_range_error): Decide what to return
  9950.     based on value of global variable of same name.
  9951.     (prefer_column_vectors): Likewise.
  9952.  
  9953.     * Version 0.33.
  9954.  
  9955.     * parse.y (func_def2): Call define (tree *, symbol_type), not
  9956.     define (tree *), so that the symbol type is set for user-defined
  9957.     functions.
  9958.     (assignment): Catch assignments to functions here.
  9959.  
  9960.     * tree.h tree.cc (tree_identifier::define (tree *, symbol_type):
  9961.     New function (be careful out there...).
  9962.  
  9963.     * symtab.h (symbol_type): Add new `user_function' enum value.
  9964.  
  9965.     * tree.cc (do_matrix_assignment): Call prefer_column_vectors().
  9966.  
  9967.     * tree.h tree.cc (do_matrix_assignment (...)): New functions to
  9968.     implement assignment to indexed matrices.
  9969.     (do_scalar_assignment (...)): New function to implement assignment
  9970.     to an indexed scalar.
  9971.  
  9972.     * utils.h utils.cc (resize_on_range_error): New function.  Should
  9973.     eventually decide what to return based on value of global variable
  9974.     of same name.
  9975.     (prefer_column_vectors): New function.
  9976.  
  9977. Tue Aug  4 05:37:47 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9978.  
  9979.     * tree.cc (tree_constant::save): New function.
  9980.     (tree_constant::load): New function.
  9981.  
  9982.     * symtab.cc (symbol_record::save): New function.
  9983.     (symbol_table::load): New function.
  9984.  
  9985.     * t-builtins.cc (builtin_load): Start implementation.  Yikes, this
  9986.     is probably going to need a lot of work to be very robust...
  9987.  
  9988.     * t-builtins.cc (builtin_save): Implement by asking the
  9989.     symbol_record to save itself.  Maybe this should really be done by
  9990.     asking the symbol table to save a symbol...
  9991.  
  9992.     * utils.cc (extract_keyword): New function.
  9993.     (valid_identifier): New function.
  9994.  
  9995. Fri Jul 31 04:16:24 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  9996.  
  9997.     * parse.y (func_def3): Extra error cases for empty function
  9998.     bodies.
  9999.     (func_def1, func_def1a, func_def1b): Slighly straighten out some
  10000.     truly twisted logic, eliminate func_def1a, rename func_def1b to
  10001.     func_def1a, and make statementss like function [x,y] = foo() end
  10002.     work properly (I think).
  10003.     (func_def*): Put function name in global symbol table, not top
  10004.     level symbold table.  This makes them accessible from other
  10005.     functions, eh?
  10006.  
  10007.     * t-builtins.cc (builtin_who): Accept -all, -local, -global, and
  10008.     -top flags.
  10009.  
  10010. Thu Jul 30 00:39:40 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10011.  
  10012.     * lex.l (current_buffer): New function to return current flex
  10013.     input buffer.  Will need this to be able to switch file contexts.
  10014.  
  10015.     * Version 0.32.
  10016.  
  10017.     * lex.l (create_buffer, switch_to_buffer): New functions to handle
  10018.     input from various streams.  This should be enough to allow us to
  10019.     implement Matlab-like M-files.
  10020.     octave.cc (main, execute_startup_files): Use them.
  10021.  
  10022.     * octave.cc (execute_startup_files): Execute commands from
  10023.     $HOME/.octaverc and ./.octaverc.
  10024.  
  10025.     * g-builtins.cc (builtin_plot): Delete temporary files.
  10026.     Ignore SIGINT while gnuplot is executing.
  10027.  
  10028. Wed Jul 29 20:16:25 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10029.  
  10030.     * tree.cc (all_args_defined): New function to check a
  10031.     tree_constant** vector to see if all elements are non-null.
  10032.     (tree_index_expression::eval (int)): Use it, and abort the
  10033.     evaluation if test fails.
  10034.  
  10035.     * terminals.h, terminals.cc: New files for doing things with
  10036.     gnuplot graphics terminal names.
  10037.     src/Makefile.in: Handle new files.
  10038.  
  10039. Tue Jul 28 00:25:24 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10040.  
  10041.     * g-builtins.cc (builtin_plot): Make it work, at least halfway.
  10042.  
  10043.     * g-builtins.cc (builtin_save): New function.
  10044.  
  10045.     * gnuplot-build/Makefile.in: Add -DREADLINE and remove readline.o
  10046.     from list of objects to actually enable the GNU command line
  10047.     editing.
  10048.  
  10049.     * configure.in: Use AC_PROG_CHECK macro to search for f2c and f77.
  10050.     Check for several common Un*x Fortran compilers.
  10051.     Add extra messages.
  10052.  
  10053.     * g-builtins.cc g-builtins.h: New files for builtin general
  10054.     functions extracted from builtins.cc.
  10055.  
  10056.     * t-builtins.cc t-builtins.h: New files for builtin text functions
  10057.     extracted from builtins.cc.
  10058.  
  10059.     * Makefile.in (split-dist): New target.
  10060.  
  10061.     * Version 0.31.
  10062.  
  10063. Mon Jul 27 22:01:58 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10064.  
  10065.     * tree.cc (tree_constant::do_matrix_index (tree_constant **, int):
  10066.     Allow single argument to work for matrices that are really row or
  10067.     column vectors.
  10068.  
  10069.     * lex.l: Accept `<>' in addition to `!=' and `~=' as `not equal'
  10070.     comparison operators.
  10071.  
  10072.     * libcruft/Makerules: Allow for compiling the Fortran routines
  10073.     with the native Fortran compiler instead of translating to C.
  10074.  
  10075.     * f2c-compat.sh, flibs.sh: New scripts which try to determine
  10076.     whether it will be possible for us to use the system's Fortran
  10077.     compiler directly, and if so, what libraries to add to the loader
  10078.     command.  These scripts are known to work on SPARCstations running
  10079.     SunOS and DECstations running Ultrix.  Not tested elsewhere...
  10080.     * configure.in: Use them.
  10081.     * Makefile.in: Distribute them.
  10082.  
  10083. Wed Jul 22 00:04:48 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10084.  
  10085.     * builtins.cc: Begin implementation of NLP solver using NPSOL.
  10086.  
  10087. Tue Jul 21 13:44:13 1992  John W. Eaton  (jwe@june.che.utexas.edu)
  10088.  
  10089.     * octave.cc: If printing version information, also print pointer
  10090.     to warranty info.
  10091.  
  10092.     * builtins.cc: Implement the Matlab functions ones, zeros, eye,
  10093.     clock, date, size, length, and global.
  10094.     Implement warranty builtin.
  10095.     (builtin_clear): Fix to work with global variables.
  10096.  
  10097.     * symtab.cc (clear): Fix to work properly with global variables.
  10098.  
  10099. Mon Jul 20 11:58:23 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10100.  
  10101.     * tree.cc (tree_constant::do_matrix_index (tree_constant**, int)):
  10102.     Make string indices work.
  10103.     (tree_constant::force_numeric): Don't special case
  10104.     single-character strings (this uncovers a flaw in the design of
  10105.     the constructor for the magic colon operator...).
  10106.  
  10107. Fri Jul 17 16:33:00 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10108.  
  10109.     * Version 0.30.
  10110.  
  10111.     * tree.cc: Delete undefined identifiers when trying to eval them.
  10112.  
  10113.     * builtins.cc: Add beginnings of builtin who and clear functions.
  10114.  
  10115.     * symtab.cc symtab.h (clear): New function.
  10116.  
  10117.     * tree.cc, tree.h, parse.y: Implement matrix indexing with colon
  10118.     expressions, implement the magic colon operator for column and row
  10119.     selection.
  10120.  
  10121.     * tree.cc tree.h: Completely rework colon expressions.
  10122.  
  10123. Thu Jul 16 09:27:48 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10124.  
  10125.     * gnuplot-dist: Rename from gnuplot-3.2 so we're not tied to a
  10126.     version number.
  10127.  
  10128. Tue Jul 14 11:22:35 1992  John W. Eaton  (jwe@ward.che.utexas.edu)
  10129.  
  10130.     * tree.cc builtins.cc: Make argc/nargs/nargin work like C:
  10131.     the argument count is the number of command line arguments plus
  10132.     the function name.  This goes for `argument lists' for matrices as
  10133.     well as functions.  It seems a bit awkward but at it's consistent,
  10134.     and it's like C.  Hmm.  Maybe this is a bad choice...
  10135.  
  10136.     * utils.cc utils.h: New files for utility functions.
  10137.  
  10138. Mon Jul 13 00:29:50 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10139.  
  10140.     * Version 0.29.
  10141.  
  10142.     * tree.cc tree_constant::tree_constant (matrix): Automatically
  10143.     convert 1x1 matrices to scalars.
  10144.  
  10145.     * parse.y lex.l: Fix up a bunch of stupid stuff and reduce the
  10146.     number of shift/reduce conflicts to 16 (all but one because of the
  10147.     optional separator garbage).
  10148.  
  10149.     * parse.y lex.l: Allow for assignments to lists of identifiers to
  10150.     be partially parsed.  This will still require some error checking
  10151.     in tree.cc to ensure that the list is made up of identifiers only,
  10152.     since that's not enforced by the grammar (I don't see a way to do
  10153.     it, do you?)
  10154.  
  10155. Sun Jul 12 11:24:33 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10156.  
  10157.     * tree.cc tree.h parse.y lex.l: Implement logical AND (symbol &),
  10158.     OR (symbol |), and not (symbol ~).  Also provide the C-style
  10159.     operators &&, ||, and !).
  10160.  
  10161.     * Matrix.cc Matrix.h: Provide stupid element-wise logical
  10162.     operators for matrices.
  10163.  
  10164.     * Version 0.28.
  10165.  
  10166.     * parse.y lex.l tree.cc tree.h: Implement C-style prefix and
  10167.     postfix increment and decrement operators (symbols ++ and --
  10168.     respectively).
  10169.  
  10170.     * parse.y lex.l tree.cc tree.h: Implement break and continue.
  10171.  
  10172.     * tree.cc tree.h: Assignment to matrix elements roughed out.
  10173.  
  10174.     * gnuplot/tree.cc: Solution of linear equations via the lift
  10175.     division operator partially implemented.  Singular coefficient
  10176.     matrices aren't handled very well yet...
  10177.  
  10178.     * gnuplot-build/Makefile.in: Make this work to build gnuplot for
  10179.     generic X11/unix environments.
  10180.     * Remove -Wall from CFLAGS to avoid loads of warnings.
  10181.     * Use GNU readline instead of the one that comes with gnuplot.
  10182.  
  10183.     * gnuplot-build/*.diff: Various patches for various things.
  10184.  
  10185. Sat Jul 11 10:14:12 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10186.  
  10187.     * Version 0.26
  10188.  
  10189.     * src/Makefile.in: Distribute lex.cc, parse.cc, y.tab.h.
  10190.     * src/Makefile.in (dist): Depend on lex.cc and parse.cc.
  10191.  
  10192.     * gnuplot-build: New directory for patching and building gnuplot.
  10193.     This is apparenty required because the gnuplot license won't allow
  10194.     distrubution of modified versions, but will allow patches to be
  10195.     distributed.
  10196.     * gnuplot-build/Makefile.in: New file.
  10197.  
  10198.     * gnuplot-3.2: New directory.
  10199.  
  10200.     * readline: New directory from the bash-1.12 distribution, plus
  10201.     tilde.c from bash's lib/glob directory and xmalloc.c from bash's
  10202.     lib/malloc directory.
  10203.     * readline/Makefile.in, readline/doc/Makefile.in,
  10204.     readline/examples/Makefile.in: New files.
  10205.  
  10206.     * All Makefie.in files: Allow make to work from any directory, not
  10207.     just the top level one.
  10208.  
  10209. Fri Jul 10 22:20:56 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10210.  
  10211.     * SERVICE: Remove, since it seems too specific to GNU products.
  10212.  
  10213. Thu Jul  9 07:48:33 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10214.  
  10215.     * Version 0.20.
  10216.  
  10217.     * Solution of ODEs with LSODE partially implemented.  It's
  10218.     possible to solve some simple equations.
  10219.  
  10220.     * tree.cc tree.h (tree_constant): Add string constants and make
  10221.     them work more or less like string constants in Matlab (implicit
  10222.     conversion to ASCII numbers -- gag.  This isn't complete, and it
  10223.     it assumes that ASCII is the character set for the host
  10224.     machine/compiler...).
  10225.  
  10226. Tue Jul  7 07:28:35 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10227.  
  10228.     * Version 0.19.
  10229.  
  10230.     * User defined function definitions and calls to them mostly work.
  10231.     Still need to implement multiple return values correctly.
  10232.  
  10233. Mon Jul  6 04:23:37 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10234.  
  10235.     * Version 0.18.
  10236.  
  10237.     * lex.l parse.y tree.cc tree.h: Begin implementation of
  10238.     user-defined functions.
  10239.  
  10240. Sun Jul  5 19:27:08 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10241.  
  10242.     * Version 0.17.
  10243.  
  10244.     * lex.l: Replace SAVE_STRING macro with a function.
  10245.  
  10246.     * builtins.cc (builtin_document): New builtin function.
  10247.     (builtin_help): Make it work.
  10248.  
  10249.     * lex.l: More rules for gathering text.  These are still not quite
  10250.     as they should be, but they will work in most cases.  I think the
  10251.     flex generated scanner is either going to have to be reworked or
  10252.     replaced with a handemade version at some point (probably soon)...
  10253.  
  10254.     * tree.cc tree.h: Add tree_word_list and tree_word_list_command
  10255.     classes for text functions.
  10256.  
  10257. Fri Jul  3 05:13:15 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10258.  
  10259.     * Version 0.16.
  10260.  
  10261.     * builtins.h builtins.cc: New files for builtin functions.
  10262.     Implement a few simple builtin functions.
  10263.  
  10264.     * tree.cc tree.h: Add tree_builtin type for builtin functions.
  10265.  
  10266.     * tree.cc tree.h: eval (args...) New virtual function.
  10267.  
  10268. Thu Jul  2 01:27:38 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10269.  
  10270.     * Version 0.15.
  10271.  
  10272.     * symtab.h, symtab.cc: Allow variables and functions to be tagged
  10273.     as read-only or read-write.
  10274.  
  10275. Wed Jul  1 15:54:36 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10276.  
  10277.     * input.cc and octave.cc: allow input to come from a file.
  10278.  
  10279.     * lex.l: to accept `#' as a comment character (allows one to
  10280.     use the `#!/bin/octave' style script hack).
  10281.  
  10282.     * doc: New directory containing skeleton stuff
  10283.     * SERVICE: New file from GCC.
  10284.     * BUGS: New file, now produced from doc/bugs.texi.
  10285.     * INSTALL: New file, now produced from doc/install.texi.
  10286.  
  10287. Sat Jun 27 15:52:37 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10288.  
  10289.     * Version 0.14.
  10290.  
  10291.     * Fixed parser to eliminate reduce/reduce conflicts.
  10292.  
  10293.     * Fixed parser to recognize assignment to multiple identifiers
  10294.     (e.g., [E,V] = eig (A); ).
  10295.  
  10296.     * Quickie implementation of indexed array evaluation.  Works for
  10297.     scalar indices, but not range/array indices.
  10298.  
  10299. Fri Jun 26 04:23:12 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10300.  
  10301.     * Version 0.12.
  10302.  
  10303.     * Hooks added for indexed array evaluation and assignment.
  10304.     * Colon expression implementation improved.
  10305.     * Implementation of for command eval() improved.
  10306.  
  10307. Thu Jun 25 00:28:12 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10308.  
  10309.     * Version 0.11.
  10310.  
  10311.     * Colon expressions added.
  10312.     * For command added, but the implementation needs work.
  10313.  
  10314. Wed Jun 24 15:09:36 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10315.  
  10316.     * Version 0.10.
  10317.  
  10318.     * Cheesy signal handler added to catch interrupts.
  10319.  
  10320.     * Matrix input works, even for nested matrices.  Some error
  10321.     checking is done while the matrix is evaluated to ensure that
  10322.     the number of rows and columns match up.
  10323.  
  10324. Mon Jun 22 00:21:49 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10325.  
  10326.     * Version 0.9.
  10327.  
  10328.     * Command line matrix input partially implemented.  It's not yet
  10329.     possible to enter nested matrices, but it is possible to enter
  10330.     simple matrices (e.g. [1,2;a,b+c], where a, b, and c are scalars.
  10331.  
  10332.     * Version 0.8.
  10333.  
  10334.     * If commands added.
  10335.  
  10336.     * Version 0.7.
  10337.  
  10338.     * Command chains added.
  10339.     * Boolean operations added, tested for scalars.
  10340.     * While loop added, tested for simple commands.
  10341.  
  10342. Fri Jun 19 05:50:44 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10343.  
  10344.     * Version 0.6.
  10345.  
  10346.     At this early stage, while a lot of changes are being made very
  10347.     quickly, ChangeLog entries will probably just list features added.
  10348.  
  10349.     * Variable assignment works for scalars.
  10350.     * Simple scalar expressions work.
  10351.  
  10352. Thu Jun 18 06:44:24 1992  John W. Eaton  (jwe@schoch.che.utexas.edu)
  10353.  
  10354.     * Version 0.5.
  10355.  
  10356.     * src/version.h: For all the pre-alpha distributions, count
  10357.     versions as 0.1, etc. instead of 0.01.
  10358.  
  10359.     * Makefile: (dist) Automatically update version_string in
  10360.     src/version.h.
  10361.  
  10362.     * symtab.h, symbtab.cc: New files for symbol tables.
  10363.  
  10364.     * tree.h, tree.cc: New files for parse trees.
  10365.  
  10366.     * Lots of work unrecorded here.  Octave is now self-contained, the
  10367.     tree routines are being redesigned, etc.
  10368.  
  10369. Fri Mar 20 17:03:16 1992  John W. Eaton  (jwe@andy.che.utexas.edu)
  10370.  
  10371.     * Version 0.02.  Octave understands some simple matrix
  10372.     expressions, but it is not yet possible for matrix elements to
  10373.     be constructed from expressions.
  10374.  
  10375. Thu Mar 19 06:13:39 1992  John W. Eaton  (jwe@andy.che.utexas.edu)
  10376.  
  10377.     * Version 0.01.  Octave understands simple scalar expressions.
  10378.     Hey, Hey!  It is not yet self contained -- I'm still linking to
  10379.     the old libraries in /usr/local/c++-classes, and this isn't likely
  10380.     to change for a while.  (Other things are much more important than
  10381.     making the distribution work on other machines.  Sorry...)
  10382.  
  10383. Fri Feb 21 05:06:38 1992  John W. Eaton  (jwe@andy.che.utexas.edu)
  10384.  
  10385.     * Version 0.00.  This includes the basic directory structure,
  10386.     makefiles, and a lot of the old Fortran source, including a way to
  10387.     make a libcruft.a.  Octave compiles and accepts input (with
  10388.     history and editing) but doesn't do much else.
  10389.  
  10390. Wed Feb 19 06:20:44 1992  John W. Eaton  (jwe@andy.che.utexas.edu)
  10391.  
  10392.     * ChangeLog: New file.
  10393.