Mercurial > hg > octave-nkf
diff ChangeLog.1 @ 2330:12ff450cbb1f
[project @ 1996-07-19 01:39:22 by jwe]
Initial revision
author | jwe |
---|---|
date | Fri, 19 Jul 1996 01:49:31 +0000 (1996-07-19) |
parents | |
children | ace8d8d26933 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/ChangeLog.1 @@ -0,0 +1,10392 @@ +Thu Feb 23 09:32:01 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * Version 1.1.1 released. + + * src/idx-vector.cc (idx_vector (const Range&)): Always initialize + data to 0. + (idx_vector (const Matrix&, int, const char *, int)): Likewise. + (idx_vector (const idx_vector&): Likewise, do it first. + * src/idx-vector.h (~idx_vector): Simply delete data. + + * octMakefile.in: Combine libcruft, liboctave,dld, info, readline, + kpathsea, src, scripts, and doc targets into just one. + (all): Depend on $(SUBDIRS). + * libcruft/Makefile.in (make-objects): Change to $(SUBDIRS) + target that doesn't use a loop. + (all): Depend on $(SUBDIRS). + +Wed Feb 22 07:27:18 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * Don't leave @LIBDLD@ on a line by itself. + + * src/tc-rep-idx.cc (fortran_style_matrix_index): Handle zero-one + indexing as a separate case. + (fortran_style_matrix_index): Check for out-of-bounds index. + + * src/idx-vector.cc (init_state): Don't forget len, num_zeros, and + the one_zero flag for vectors of all zero elements. + (convert_one_zero_to_idx): Set data to zero after deleting it. + + * src/data.cc (check_dimensions): + Handle case of treat_neg_dim_as_zero = "warn". + +Tue Feb 21 08:18:19 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tree-misc.cc (initialize_undefined_elements): Don't declare + arg const. + + * src/sysdepl.cc (octave_getcwd): Declare arg as char *, not + const char *. + + * src/input.cc (match_sans_spaces): Initialize ep from copy of + arg, not arg itself. + + * octMakefile.in (snapshot-version): Look for OCTAVE_VERSION, + not just VERSION. Don't end #define with a semicolon. + +Mon Feb 20 15:57:17 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/image/Makefile.in (clean): Delete octtopnm.o and octtopnm. + +Fri Feb 17 08:12:09 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/variables.cc (maybe_add_default_load_path): New function, + extracted from default_path(), which no longer needs it. + * src/user-prefs.cc (sv_loadpath): Call it here. + +Wed Feb 15 15:13:22 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/octave.cc (verbose_usage): Format help message more like + the help messages of other GNU programs. + + * src/variables.cc (install_builtin_variables): New builtin + variable, suppress_verbose_help_message. + * src/user-prefs.cc (user_prefs): New field, + suppress_verbose_help_message. + * src/user-prefs.cc (suppress_verbose_help_message): New function. + * src/help.cc (additional_help_message): Check + user_pref.suppress_verbose_help_message before printing message. + +Tue Feb 14 15:36:01 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/sysdep.cc (octave_chdir): New function. + * src/dirfns.cc (change_to_directory): Use it. + + * src/sysdep.cc (octave_getcwd): New function. + * src/dirfns.cc (get_working_directory, Fpwd): Use it. + * src/input.cc (decode_prompt_string): Likewise. + + * src/version.h (VERSION): New #define. + (version_string): Use it. + (OCTAVE_COPYRIGHT): New #define. + (OCTAVE_NAME_AND_VERSION): New #define. + (OCTAVE_NAME_VERSION_AND_COPYRIGHT): New #define. + (OCTAVE_STARTUP_MESSAGE): New #define. + * src/octave.cc (main): Use new macros from version.h + (print_version_and_exit): Likewise. + (verbose_usage): Likewise. + (Fwarranty): Likewise. + + * Makeconf.in (version): Make work with new version.h. + * octMakefile.in (snapshot-version): Likewise. + + * src/variables.cc (default_path): Use SEPCHAR instead of literal ':'. + * src/utils.cc (pathstring_to_vector): Likewise. + * src/octave.cc (initialize_globals): Likewise, use SEPCHAR_STR to + construct format string instead of using literal `:'. + + * configure.in: Call AC_DEFINE for SEPCHAR and SEPCHAR_STR. + * acconfig.h: Add #undefs for SEPCHAR and SEPCHAR_STR. + + * src/dynamic-ld.cc: Don't include dld.h unless WITH_DLD. + + * src/octave.cc (parse_and_execute): Close file. + +Mon Feb 13 19:39:12 1995 John Eaton (jwe@bullwinkle.che.utexas.edu) + + * scripts/general/linspace.m: Delete. + * src/data.cc (Flinspace): New function. + * liboctave/dRowVector.cc (linspace): New function. + * liboctave/CRowVector.cc (linspace): New function. + +Sun Feb 12 21:23:54 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/load-save.cc (read_mat_binary_data): Only convert to string + if the number of rows is 1. + + * scripts/image/saveimage.m: Force ASCII save. + +Thu Feb 9 08:46:09 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/elfun/sec.m: Returned variable is `w', not `y'. + * scripts/elfun/sech.m: Likewise. + +Wed Feb 8 10:51:33 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/f-find.cc (find_nonzero_elem_idx): Increment i, j indices by + 1 before stashing them. + +Fri Feb 3 15:44:03 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tree-misc.cc + (tree_parameter_list::initialize_undefined_elements): New function. + * src/tree-expr.cc (tree_function::eval): Use it to define return + values. + (tree_simple_assignment_expression:eval): Complain if RHS is undefined. + (tree_multi_assignment_expression:eval): Complain if any of the + RHS values are undefined. + * src/user-prefs.h (init_user_prefs): New structure element, + define_all_return_values. + * src/user-prefs.cc (define_all_return_values): New function. + * src/variables.cc (install_builtin_variables): Add DEFVARs for + default_return_value and define_all_return_values. + (builtin_any_variable): New function. + +Wed Feb 1 08:02:28 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/parse.y (parse_error): Call yyerror() here. + (input): Not here. + + * src/lex.l (handle_string): Call have_continuation and + have_ellipsis_continuation with 0 arg, to disallow comments after + continuation characters inside strings. + (have_continuation): New arg, trailing_comments_ok with default + value of 1. If !trailing_comments_ok, don't allow comments to + follow continuation token. + (have_ellipsis_continuation): New arg, trailing_comments_ok, with + default value of 1. Pass it along to have_continuation. + + * src/parse.y (yyerror): Call parse_error with first arg == "%s", + since msg might contain format specifiers. + + * src/tree-expr.cc (tree_index_expression::eval (int)): Detect + undefined elements in argument list and print error message. + (tree_index_expression::eval (int, int, const Octave_object&)): + Likewise. + + * configure.in: Only set CFLAGS, CXXFLAGS, LDFLAGS, FFLAGS, and + F2CFLAGS if they are not already set in the environment. + + * doinstall.sh: Add -print to find commands. + +Tue Jan 31 13:26:53 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/lex.l (<MATRIX>{S}*\,{S}*): Eat any trailing continuation + here. Use value returned from eat_continuation to decide whether + to insert a row separator. + (<MATRIX>{S}+): Likewise. + (<MATRIX>{SNLCMT}*\n{SNLCMT}*): Eat any trailing whitespace here. + + * lex.l (ATE_SPACE_OR_TAB, ATE_NEWLINE): New macros. + (eat_whitespace): Use them to set return value. + +Mon Jan 30 14:02:24 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/user-prefs.cc (set_output_precision): Don't pass NaN to NINT. + (set_output_max_field_width): Likewise. + (set_save_precision): Likewise. + * src/file-io.cc (return_valid_file): Likewise. + (fgets_internal): Likewise. + (fseek_internal): Likewise. + (process_printf_format): Likewise. + (fread_internal): Likewise. + * src/f-colloc.cc (Fcolloc): Likewise. + * src/f-fft.cc (Ffft): Likewise. + * src/f-fft2.cc (Ffft2): Likewise. + * src/f-ifft.cc (Fifft): Likewise. + * src/f-ifft2.cc (Fifft2): Likewise. + * src/f-npsol.cc (do_npsol_option): Likewise. + * src/f-qpsol.cc (do_qpsol_option): Likewise. + * src/f-rand.cc (Frand): Likewise. + * src/pr-output.cc (all_elements_are_ints): Likewise. + * src/tree-plot.cc (subplot_using::eval): Likewise. + (subplot_style::print): Likewise. + * src/sysdep.cc (Fpause): Likewise. + * src/tc-rep.cc (TC_REP::valid_as_scalar_index): Likewise. + (TC_REP::valid_as_zero_index): Likewise. + (TC_REP::convert_to_str): Likewise. + * src/tc-rep-idx.cc (TC_REP::do_scalar_index): Likewise. + (TC_REP::fortran_style_matrix_index): Likewise. + * src/tc-rep-ass.cc (TC_REP::fortran_style_matrix_assignment): + Likewise. + +Sat Jan 28 13:09:44 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/general/tril.m: Allow the k == nc for k > 0 and + -k == nr for k < 0. Make faster by eliminating nested loops. + * scripts/general/triu.m: Likewise. + +Fri Jan 27 08:32:10 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * libcruft/lapack: Update with files from LAPACK 2.0. + + * src/lex.l (\[{S}*): Don't call fixup_column_count() here. + Don't use TOK_RETURN here, since we call eat_whitespace(). + (eat_whitespace): Decrement current_input_column when calling + yyunput(). + (<MATRIX>{SNLCMT}*\n{SNLCMT}): Always call fixup_column_count(). + + * src/parse.y (rows): Don't accept repeated semicolons. + (matrix_row): Likewise, for commas. + + * src/Makefile.in (LIBOBJS): Delete. + + * liboctave/f77-uscore.h: Don't use C++ style comments. + + * octMakefile.in (DISTDIRS): Don't include bsd-math. + * src/Makefile.in (VPATH): Don't include bsd-math directory. + (SOURCES): Include acosh.c, asinh.c, atanh.c, erf.c erfc.c, and + lgamma.c. + * configure.in: Create libcruft/slatec-fn/Makefile. + Use AC_CHECK_FUNCS to look for acosh, asinh, atanh. + Don't do anything special if they are missing. + * src/acosh.c, src/asinh.c, src/atanh.c, src/erf.c, src/erfc.c, + src/lgamma.c: New files. + * acconfig.h: Delete #undefs for ACOSH_MISSING, ASINH_MISSING, + and ATANH_MISSING. + * libcruft/Makefile.in (CRUFT_DIRS): Add slatec-fn. + * libcruft/slatec-fn: New directory. + + * configure.in: Don't try to use IEEE floating point on m68k HP + systems. + +Thu Jan 26 12:57:05 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/lex.l (maybe_unput_comma): New function, extracted from + handle_identifier(). Correctly handle the dot in things like + `a.b' inside matrix lists. + (handle_identifier): Use it. Don't allow things like [a .1] or + [a.b .1] to fool us. + +Wed Jan 25 08:04:16 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/Makefile.in (realclean): Don't depend on distclean. Do + delete Makefile here. + + * flibs.sh: Also check for /*values-*.o, for Sun Fortran 2.x. + * configure.in (FLIB_LIST, CXXLIB_LIST, FLIB_PATH, CXXLIB_PATH): + Delete any .o files found here. + When checking for -lm, also append -lc on Linux systems. + + * mkinstalldirs: Create directories with mode 0755, to avoid + problems because the installers umask is too restrictive. + + * octave-bug.in: Don't use rmail, it crashes on Ultrix systems if + the message file isn't just right. Use nested if statements + instead of ||, for Ultrix /bin/sh. Avoid Ultrix awk crash. + + * scripts/linear-algebra/trace.m: Handle row and column vectors as + a special case. + * scripts/linear-algebra/null.m: Likewise. + * scripts/linear-algebra/orth.m: Likewise. + +Tue Jan 24 08:11:51 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * octave-bug.in: Add F2C, F2CFLAGS, FLIBS, and LDFLAGS to report. + * Makefile.in (octave-bug): Substitute them. + +Mon Jan 23 20:42:55 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tree-misc.cc (tree_if_clause::is_else_clause): New function. + (tree_if_command_list::print_code): Use it to decide whether to + print "else" or "elseif" here. + (tree_if_clause::print_code): Don't print "else" here. + + * scripts/image/colormap.m: Fix logic for initializing default + colormap and handling subsequent calls with no arguments. + + * src/lex.h (TOK_PUSH_AND_RETURN): Correct last change. + +Sun Jan 22 18:02:37 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/lex.l (handle_identifier): Handle incrementing + current_input_column here. + ({IDENT}{S}*): Not here. + + * src/lex.h (TOK_PUSH_AND_RETURN): New macro. + * src/lex.l: Use it. + + * src/parse.y (yyerror): If printing input line, always print `^' + error marker too. + + * src/parse.y (command [BREAK]): Allow break to occur in function + bodies too. + * src/tree-expr.cc (tree_function::eval): Also check to see if + function exited because of a break statement. + +Fri Jan 20 10:48:18 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * config.guess: Replace with current version from FSF. + * config.sub: Likewise. + + * src/tempname.c: Include statdefs.h. + + * src/tree-expr.cc (eval): Improve error messages. + +Thu Jan 19 08:33:50 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/lex.l (handle_string): Properly handle pending escapes. + Call error() for unterminated string constants. + * src/parse.y (input): For parse errors, call yyerror(). + + * test/config/unix-octave.exp (octave_start): Correctly set OSPATH + from $OCTAVE_SCRIPT_PATH, not to the string OCTAVE_SCRIPT_PATH. + + * test/Makefile.in (OCTAVE_SCRIPT_PATH): Delete surrounding quotes + in definition. + + * doc/texinfo.tex: Move to version 2.140. + + * src/f-rand.cc (Frand): Use different method for generating + initial seed so that it varies more each time Octave starts. + + * src/file-io.cc (feof_internal): Use args(0), not args(1). + + * src/Makefile.in (SOURCES): Use tempnam.c, not tmpnam.c. + * src/tempnam.c: New file, from the GNU C library. + +Wed Jan 18 08:10:31 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/user-prefs.h (user_prefs): New field, read_only_constants. + * src/user-prefs.cc (read_only_constants): New function. + * src/variables.cc (install_builtin_variables): Add DEFVAR for + read_only_constants, but leave it #if 0'd out since we're not + really ready for it yet.. + * src/symtab.cc (symbol_record::read_only_error): Check + user_prefs.read_only_constants to see if it is ok to redefine + constants that are marked as read-only. + + * src/user-prefs.h (user_prefs): New field, ps4. + * src/user-prefs.cc (sv_ps4): New function. + * src/variables.cc (install_builtin_variables): Add DEFVAR for PS4. + * src/input.cc (do_input_echo): New function. Use PS4 variable as + prefix of echoed input. Send echoed input through the pager. + + * flibs.sh: Ignore -lang* options. + + * src/load-save.cc (Fsave): Send `save - ...' output through the + pager. + + * doc/Makefile.in: Create and distribute refcards of various sizes. + Delete rules for making refcard.tex from refcard.tex.in. + Don't make or distribute refcard-local. + * doc/refcard.tex: Handle setting paper size with \refcardsize. + * doc/refcard-a4.tex, doc/refcard-legal.tex, doc/refcard-letter.tex: + New files. + +Mon Jan 16 13:19:29 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tc-rep-ass.cc (TC_REP::do_scalar_assignment): Handle + assignments like a(0) = []. + * src/tc-inlines.h (valid_zero_index): New function. + * src/tc-rep.cc (valid_as_zero_index): New function. + * src/tree-const.h (valid_as_zero_index): New function. + + * src/parse.y (func_def2): Check user_prefs before warning about + function name and function file name conflict. + * src/user-prefs.h (user_prefs): New field, warn_function_name_clash. + * src/user-prefs.cc (warn_function_name_clash): New function. + * src/variables.cc (install_builtin_variables): Add DEFVAR for + warn_function_name_clash. + + * scripts/image/octtopnm.c: Include stdlib.h instead of malloc.h. + +Sun Jan 15 15:08:04 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * readline/rldefs.h: Use new #defines for directory headers now + that we are using autoconf 2. + + * scripts/special-matrix/hankel.m: Use .', instead of '. + + * src/input.cc (match_sans_spaces): Use strcmp, not strncmp. + + * src/tc-rep-ass.cc (TC_REP::fortran_style_matrix_assignment): + For scalar index, don't do assignment if RHS and LHS are both empty. + + * src/data.cc (Fsize): Handle optional second arg. + + * src/tree-expr.cc (tree_function::eval (int)): Correctly set + nargin and nargout to zero when evaluating function. + + * src/lex.l (handle_string): Correct handling of string escapes. + +Thu Jan 12 15:25:34 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * Version 1.1.0 released. + + * octMakefile.in (bin-dist-tar): Ignore errors on strip commands. + + * src/tree-expr.cc (tree_builtin::eval (int)): Set nargout to 0 + when calling function. + + * doc/Makefile.in (FORMATTED): Add refcard.dvi and refcard.ps so + that they are distributed along with the other docs. + * octMakefile.in (clean-doc-dist-tar): Delete target. + (doc-dist): Depend on doc-dist-tar, not clean-doc-dist-tar. + +Tue Jan 10 14:29:43 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/help.cc (print_usage): Print warning if symbol isn't found. + + * src/utils.cc (Fundo_string_escapes): Fix typo in call to + print_usage(). + + * src/octave.cc (Fsystem): Correctly compute exit code. + + * scripts/miscellaneous/etime.m: Complain if args are not the + right length, not if they are. Reverse sense of test for years. + Duh. + + * src/f-find.cc (find_to_fortran_idx): For the case of one output + argument, return a row vector if the original argument to find was + a row vector. + +Mon Jan 9 12:57:27 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/lex.l (grab_help_text): Always overwrite help_buf. + ({CCHAR}): Don't call grab_help_text() if there is already + something in help_buf. + +Sat Jan 7 12:28:35 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * configure.in (HOST_CXXFLAGS): New variable to substitute. + * Makeconf.in (ALL_CXXFLAGS, UGLY_ALL_CXXFLAGS, BUG_CXXFLAGS): + Add $(HOST_CXXFLAGS). + +Fri Jan 6 13:07:09 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/special-matrix/toeplitz.m: Use .' instead of '. + +Tue Jan 3 18:14:33 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * test: Rewrite many tests to not run Octave interactively. This + makes the log files much more readable. + + * octMakefile.in (clean-tar): Delete octave-test/npsol directory, + not just test/octave.test/npsol.exp. Likewise, add a command for + deleting qpsol tests. + +Mon Jan 2 20:02:10 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * src/octave.cc (main): Return 0 if error_state is not set. + + * src/error.cc (error_1): New function. + (error): Use it. + (parse_error): New function. + * src/parse.y: Never call error and yyerror; just use yyerror. + (yyerror): Improve logic. Use new parse_error() function so that + error_state is always set for a parse error. Don't use + ostream::form(). + (ABORT_PARSE): Don't call reset parser here. + (colon_expr): Don't call yyerror here. An error message is + printed by tree_colon_expression::chain() if it fails. + +Mon Dec 26 20:11:01 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tree-expr.cc (eval): Only call multi-arg form of eval for + object_to_eval if necessary. + +Fri Dec 23 00:08:08 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/lex.l: Don't increment promptflag anywhere. + (eat_continuation): New function. + (eat_whitespace): Handle embedded continuations. Return nonzero + if whitespace consumed. + (handle_close_brace): Don't pass yytext. Do pass flag indicating + whether whitespace follows brace. + (handle_identifier): Check for next token being `=' here. Pass + flag indicating whether whitespace follows identifier. + (<MATRIX>{SNLCMT}*;{SNLCMT}*): Call eat_whitespace() here. + ({IDENT}{S}*): Call eat_continuation() here. + (do_comma_insert_check): And here, but put a space back if + whitespace is gobbled. + (have_continuation, have_ellipsis_continuation): Decrement + promptflag here. + +Wed Dec 21 09:56:49 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tree-plot.cc (Fclearplot): Send "set nolabel" too. + +Mon Dec 19 17:50:15 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tree-plot.h, src/tree-plot.cc (subplot): Rename using to + using_clause to avoid new C++ keyword. Rename title and style to + match. + +Fri Dec 16 00:09:01 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * configure.in: Don't check for fpsetmask. + * src/sysdep.cc (sysdep_init): Don't check HAVE_FPSETMASK + +Thu Dec 15 00:28:52 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/variables.cc (install_builtin_variables) [default_save_format]: + Fix doc string. + + * configure.in: Rework DEFAULT_DOT_O_FROM_DOT_F and + DEFAULT_DOT_C_FROM_DOT_F to avoid embedded newlines. + * Makeconf.in: Likewise. + + * src/pager.cc (flush_output_to_pager): Close stream before + resetting signal handler. + + * src/help.cc (Fhelp): Call fcn_file_in_path here. Delete it too. + Print file name before help message. + * src/variables.cc (get_help_from_file): Don't call + fcn_file_in_path here. + (gobble_leading_white_space): Correctly grab only first set of + comments. + +Wed Dec 14 11:42:13 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/parse.y (pager_buf): Don't make it a fixed-size array. + * src/variables.cc (get_help_from_file): New function. + (gobble_leading_white_space): Return first block of comments for + later use as help string. + (looks_like_octave_copyright): New function. + (parse_fcn_file): Stash help from gobble_leading_white_space in + global help_buf. + * src/lex.l (grab_help_text): Don't overwrite help found by + gobble_leading_white_space. + (reset_parser): Delete help_buf. + * src/help.cc (Fhelp): Only try to get help from symbol records + that are defined. If all else fails, try get_help_from_file. + + * src/pager.cc (flush_output_to_pager): Re-initialize pager_buf + immediately after extracting message. Delete message immediately + after sending it to the output stream. Ignore interrupts while + running pager. + + * octMakefile.in (clean-tar): Delete npsol.exp and any .m files + that are in the test/octave.test directory. + (install): Use $(INSTALL), not just install. + + * src/lex.l (reset_parser): Don't reset input column or line + number if reading from a script file or a function file. + (is_keyword): Don't set line number to 1 if reading function file + or script file. + * src/variables.cc (gobble_leading_whitespace): Count lines. + * src/octave.cc (main): If reading file, set reading_script_file + and curr_fcn_file_name before calling get_input_from_file(). + + * src/tc-rep.cc (TC_REP::matrix_value): If implicit_str_to_num_ok, + convert empty string to empty matrix. + +Tue Dec 13 20:25:34 1994 Frederick (Rick) A Niles <niles@axp745.gsfc.nasa.gov> + + * liboctave/dbleQR.cc, liboctave/dbleQRP.cc, liboctave/CmplxQR.cc, + liboctave/CmplxQRP.cc: Get economy-sized dimensions correct. + + * libcruft/misc/i1mach.f, libcruft/misc/gen-d1mach.c, + libcruft/ranlib/ignuin.f: Prevent warnings about variable may be + used before defined. + +Tue Dec 13 11:07:34 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/variables.cc: Change commas_in_literal_matrix to + whitespace_in_literal_matrix. + * src/user-prefs.h (user_preferences): Likewise. + * src/user-prefs.cc (init_user_prefs): Likewise. + (whitespace_in_literal_matrix): Likewise, rename function. + * src/lex.l: Likewise. + (nesting_level): Rename from in_brace_or_paren. + (<MATRIX>{SNLCMT}*\n{SNLCMT}*): Make separate case from + <MATRIX>{SNLCMT}*;{SNLCMT}. Check nesting level to decide whether + to convert newline to semicolon. + ({NL}, {CCHAR}): Check nesting level to decide whether to eat + or return newline. + ("("): Decrement promptflag. + (")"): Increment promptflag. + +Mon Dec 12 00:02:51 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/Makefile.in, scripts/*/Makefile.in (install): Don't + depend on all. + + * octMakefile.in: Put doc dir last. + * doc/Makefile.in (dir): New file. + (DISTFILES): Distribute dir. + (install): Install dir if it does not already exist in $(infodir). + Otherwise, print message. + + * src/lex.l: Handle {IDENT}{S}*/= with yyinput() instead of + trailing context. + (handle_close_brace): New function. + (handle_number): New function. + (have_continuation, handle_ellipsis_continuation, handle_string): + New functions for handling strings and continuation lines in + string constants. + (eat_whitespace): New function eliminates need for NEW_MATRIX + start state. + +Sun Dec 11 15:53:03 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/lex.l: Eliminate special case for eating whitespace when + start state is <TEXT_FCN>. + Merge three cases for handling `]' for <MATRIX> start state. + +Fri Dec 9 12:21:35 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/lex.l: Handle `\' as a continuation character too. + Allow comments and blanks to follow continuation characters. + Improve handling of comments in matrices. Create a few more + definitions for patterns. Restructure source. + + * configure.in: Check for bcopy too. + + * configure.in (gxx_version): Don't use -fno-implicit-templates on + AIX systems with g++ 2.6.x. + + * octave-bug.in: Check for CC: lines too. Use case-insensitive + match for To: and Cc: lines. Actually send file that has header + separator stripped. Print list of CC: addresses too. + + * src/input.cc (get_user_input): If user enters empty string, + return empty matrix or empty string. + + * src/help.cc (Fhelp, Ftype, Fwhich): Don't allow lookup_by_name + to execute script files. + +Thu Dec 8 23:20:02 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tc-rep.cc (print): Don't check `print', which is not a + variable in this context. + +Wed Dec 7 10:52:59 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/configure.in: Check for fpsetmask. + * src/sysdep.cc (sysdep_init): Check HAVE_FPSETMASK. Only call it + if either __386BSD__ or __FreeBSD__ is defined. + Don't check __386BSD__ as a condition for including + floatingpoint.h. + +Mon Dec 5 12:29:07 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/utils.cc: Update directory header macro names for autoconf 2. + * src/dirfns.cc: Likewise. + +Sun Dec 4 22:00:40 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * octMakefile.in (DISTFILES): Don't distribute GCC.PATCH, since it + is not needed with gcc 2.6.3. + + * configure.in: Really do disable IEEE floating point functions on + the Alpha. + +Wed Nov 30 11:42:44 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * doc/FAQ.texi: New file. + * doc/Makefile.in: Create info, dvi, and ps files and distribute + them. + + * Makefile.in (all): Expand initial message. + +Sat Nov 26 21:47:05 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/octave.cc (Fcomputer): Always append ios::ends to ostrstream + before returning. + +Mon Nov 21 09:41:34 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/lex.l: When start state is TEXT_FCN, gobble blanks with + pattern that matches only blanks before other patterns that can + also match just blanks. Always check whether in_brace_or_paren + stack is empty before trying to use it. + + * src/parse.y (make_multi_val_ret): Call constructor for + tree_simple_assignment_expression with correct number of args. + + * scripts/plot/shg.m: New function. + + * src/f-qpsol.cc (Fqpsol): Correct for changes in meaning of + nargin and the way args is loaded. + * src/f-npsol.cc (Fnpsol): Likewise. + + * scripts/polynomial/roots.m: Return empty matrix for scalar or + empty matrix args. + + * src/tree-plot.cc (gnuplot_terminal_type): New static variable. + (Fset): If this is a set term command, set gnuplot_terminal_type. + (open_plot_stream): Use gnuplot_terminal_type if it is set. + + * src/idx-vector.cc (idx_vector::init): Don't check max value of + index vector against dimension here. We may need to resize. + * src/tc-rep-idx.cc (do_scalar_index): Do check idx-vector max + value here. + + * src/lex.l (is_plot_keyword): Don't set past_plot_range here. + Don't accept abbreviations for clear. + (handle_identifier): Don't call is_plot_keyword unless plotting. + Set past_plot_range here, before checking for plot option keywords. + +Fri Nov 18 17:25:59 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/data.cc (Fis_struct): New function. + +Thu Nov 17 18:13:56 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * octMakefile.in (DISTFILES): Distribute GCC.PATCH. Don't + distribute LIBG++.PATCH. + + * src/tree-plot.cc (Fclearplot): Turn off grid and reset + plot_line_count to zero. + + * configure.in: Check for sys/resource.h. + Create scripts/strings/Makefile too. + + * src/timefns.cc: Surround inclusion of sys/resource.h in extern "C". + Only include sys/resource.h if both HAVE_SYS_RESOURCE_H and + HAVE_GETRUSAGE are defined. + +Wed Nov 16 09:26:10 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/plot/plot_opt.m: New function. + * scripts/plot/semilogx.m, scripts/plot/semilogx.m, + scripts/plot/loglog.m, scripts/plot/plot.m: Handle additional + args and format strings. + * scripts/plot/polar.m: Handle format arg. + * scripts/plot/polar_int_1.m, scripts/plot/polar_int_2.m: Extract + from polar_int.m. + * scripts/plot/plot_int_1.m, scripts/plot/plot_int_2.m: Extract + from plot_int.m. + * scripts/plot/plot_2_s_s.m, scripts/plot/plot_2_v_v.m, + scripts/plot/plot_2_m_m.m, scripts/plot/plot_2_v_m.m, + scripts/plot/plot_2_m_v.m: Handle format arg. + + * scripts/strings/strcmp.m: Move here. + * scripts/general/strcmp.m: From here. + + * src/xdiv.cc (result_ok): Issue warning instead of error if warn + is nonzero. + +Tue Nov 15 15:54:19 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tree-plot.cc (Fcloseplot): Clear title and labels too. + + * src/help.cc (keywords): Add entries for all_va_args, + unwind_protect, unwind_protect_cleanup, and end_unwind_protect. + + * liboctave/Makefile.in: Use -include for dependency files. + * src/Makefile.in: Likewise. + +Mon Nov 14 10:28:23 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tree-misc.cc (convert_to_const_vector): Resize vector before + returning. + + * src/lex.l (plot_style_token): Also allow "steps", "boxes", and + "boxerrorbars". + + * src/parse.y (UNWIND): Rename from UNWIND_PROTECT. + (CLEANUP): Rename from UNWIND_PROTECT_CLEANUP. + (command): Allow optsep after UNWIND and CLEANUP tokens. + * src/lex.l (is_keyword): Use new token names + + * src/tree-const.h (tree_constant::all_va_args): New enum. + (tree_constant (tree_constant::all_va_args t)): New constructor. + (is_all_va_args): New function. + (is_empty, is_zero_by_zero, make_numeric_or_magic, + make_numeric_or_range_or_magic): Handle all_va_args type. + * src/tc-rep.h (constant_type::all_va_args): New enum element. + (is_all_va_args): New function. + * src/tc-rep.cc (TC_REP::tree_constant_rep (TC_REP::constant_type), + TC_REP::print_code): Handle all_va_args. + * src/tree-misc.cc (tree_argument_list::convert_to_const_vector): + Handle all_va_args. + * src/tree-expr.cc (tree_index_expression::eval): After call to + tree_argument_list::convert_to_const_vector (), check error_state. + (tree_simple_assignment_expression::eval): Likewise. + (tree_function::octave_all_va_args): New function. + * src/parse.y (ALL_VA_ARGS): New token. + (arg_list): Handle ALL_VA_ARGS. + * src/lex.l (is_keyword): Handle all_va_args. + + * src/tree-expr.cc (tree_identifier::bump_value): Check read-only + status of sym before altering value. + (tree_prefix_expression::eval): Check error_state after call to + tree_identifier::bump_value (). + + * src/variables.cc (bind_nargin_and_nargout): Don't make nargin + and nargout read only. + + * scripts/strings: New subdirectory for string functions. + * scripts/Makefile.in (SUBDIRS): Add strings. + * scripts/strings/strcat.m: New function. + +Fri Nov 11 14:17:31 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/load-save.cc (extract_keyword): Allow trailing blanks on the + input line. + +Thu Nov 10 09:53:35 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/general/reshape.m, scripts/image/ind2gray.m, + scripts/image/ind2gray.m, scripts/image/ind2rgb.m, + scripts/image/rgb2ind.m: unwind_protect do_fortran_indexing. + * scripts/general/strcmp.m: unwind_protect implicit_str_to_num_ok. + * scripts/miscellaneous/menu.m: unwind_protect page_screen_output. + + * src/parse.y (UNWIND_PROTECT, UNWIND_PROTECT_CLEANUP): New tokens. + (command): Handle unwind-protect. + * src/lex.l (is_keyword): Handle unwind_protect, + unwind_protect_cleanup, and end_unwind_protect. + * src/tree-cmd.cc (tree_unwind_protect_command): New class, to + handle unwind-protect. + + * src/token.h (end_tok_type): New field, end_unwind_protect. + + * src/error.cc (verror): Flush pending output to pager here. + (error): Not here. + + * src/tc-rep.cc (force_numeric): Don't jump to top level on error. + * src/tc-rep.cc, src/tc-rep-ass.cc, src/tc-rep-idx.cc: Check + error_state after calls to make_numeric* functions. + + * src/f-lpsolve.cc: Define Flp_solve and Flp_solve_options, not + Flpsolve or Flpsolve_options. + + * src/utils.cc (Ffile_in_path): Define Ffile_in_path, not + Ffile_in_pat. + + * src/f-inv.cc: Add DEFUN for inverse. + +Wed Nov 9 09:30:15 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/load-save.cc (read_mat_file_header): Check for mopt < 0 too. + Don't fail if reading mopt fails. + (save_mat_binary_data): Handle range data as a special case. + (get_default_save_format): Also accept `mat-binary' and + `mat_binary'. + (Fsave): Add ios::trunc to flags for opening output file. + + * src/parse.y (func_def2): Stash function name before stashing + file name. + + * src/utils.cc (fcn_file_in_path): Don't append `.m' if the name + already ends in `.m'. + (oct_file_in_path): Likewise, for `.oct'. + + * src/error.cc (usage): Set error state to -1, so we get traceback + information after a call to usage. + + * src/tree-expr.cc (stash_fcn_file_name): Store full name of the + file. + + * scripts/*/*.m: Change messages to say `invalid' instead of + `illegal', since no laws are being broken by using these functions + incorrectly. + + * src/timefns.cc (Fcputime): New function. + * configure.in: Check for getrusage. + + * src/scripts/miscellaneous/tic.m: New function. + * src/scripts/miscellaneous/toc.m: New function. + * src/scripts/miscellaneous/etime.m: New function. + * src/scripts/miscellaneous/is_leap_year.m: New function. + + * src/error.cc (Fwarning, Fusage): New functions. + * scripts/*/*.m: Use them instead of printing warning and usage + messages directly with disp, printf, or fprintf. + + * src/file-io.cc (close_files): Check Pix before using. + (file_count): Delete unnecessary variable. Instead, use + DLList::length to get the number of files in the list. + + * src/sighandlers.cc (install_signal_handlers): Explicitly ignore + SIGPOLL and SIGIO. + +Tue Nov 8 15:26:50 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/general/logspace.m: Lose fractional part of third arg. + Don't round, for compatibility with Matlab. + * scripts/general/linspace.m: Likewise. + + * liboctave/CMatrix.cc (row_min, row_max, row_min_loc, row_max_loc): + Handle case of row containing only real elements. + (column_min, column_max, column_min_loc, column_max_loc): + Likewise, for columnwise operations. + * src/f-minmax.cc (two-complex-arg min, max): Handle case of both + columns containing only real elements. + + * src/variables.cc (Fclear): Pass 0 to symbol_table::list() for + pats and npats. + +Mon Nov 7 20:22:36 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * liboctave/dColVector.cc (operator +=): Don't return reference to + temporary. + (operator -=): Likewise. + * liboctave/CMatrix.cc (operator +=, operator -=): Likewise. + +Sun Nov 6 23:15:24 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * octMakefile.in (DISTSUBDIRS): Don't use $(SUBDIRS) here. + + * src/load-save.cc (Fsave): Open output file with mode == + ios::out, not ios::in. + +Sat Nov 5 18:18:11 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * configure.in (HAVE_SYS_SIGLIST): Check for sys_siglist variable, + even if it isn't declared in a system header. + * acconfig.h (HAVE_SYS_SIGLIST): Add #undef. + * src/sighandlers.cc (sys_siglist): Define our own if + HAVE_SYS_SIGLIST is not defined, not if SYS_SIGLIST_DECLARED is + not defined. + + * src/tree-plot.cc (Fclearplot): New function. + (clg): Alias for clearplot. + + * src/parse.y (CLEAR): New token. + (statement): Handle PLOT CLEAR as a special case. + * src/lex.l (is_plot_keyword): Handle CLEAR here too. + +Fri Nov 4 08:44:57 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * All: Remove remaining #pragma interface/implementation statements. + + * src/tree-plot.cc (subplot): Move actual code here from .h file. + + * src/tree-expr.cc (tree_expression): Declare destructor virtual. + Delete unnecessary destructors. + + * src/SLStack.h, src/SLStack.cc (operator =): Return reference to + SLStack, not void. + + * src/f-qzval.cc (Fqzval): Rename from Fqzvalue. Change Help + and usage messages too. + + * scripts/plot/plot_int.m: Really figure out if there are any + imaginary parts. + + * scripts/control/are.m: Fix typo. + +Thu Nov 3 18:44:11 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/load-save.cc (save_ascii_data): Handle new arg, + strip_nan_and_inf. Change callers. + (strip_infnan): New functions. + (save_three_d): Strip inf and nan values here too. + + * src/tree-plot.h (subplot_using): New data have_values and val. + * src/tree-plot.cc (subplot_using::eval, subplot_using::values): + New functions. + (subplot_style::errorbars): New function. + (subplot::extract_plot_data, subplot::handle_plot_data): New functions. + (subplot::print): Improve handling of data. + +Wed Nov 2 08:11:08 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/file-io.cc (do_scanf): If reading from stdin, flush stdout + first. + + * configure.in: Leave some comments in the configure file. + Improve checking for termios.h, termio.h, and sgtty.h. + + * src/variables.cc (install_builtin_variables): DEFVAR realmax and + realmin here. + * src/sysdep.cc: Instead of DEFUNing them here. + + * src/variables.cc (do_who): Accept globbing patterns as args. + (maybe_list): Handle them here. + + * src/symtab.cc (matches_patterns): New function. + (symbol_table::list, symbol_table::long_list): Accept list of + patterns, and use matches_patterns to see if the given string is a + match. Change all callers. + + * src/load-save.cc (read_binary_data): Don't fail if reading + name_len fails. + (do_load): Quit quietly if nothing is left to read. Clean up doc + and name in all cases. + +Tue Nov 1 16:34:20 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/lex.l (")"): Set cant_be_identifier to 1 here too. + + * src/tree-plot.cc: Use abbreviations for gnpulot plot, splot, + replot, with, using, and title commands. + +Mon Oct 31 14:26:12 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/variables.cc (Fclear): Look in global symbol table for + user-defined function names. + + * src/load-save.cc (do_load): New function. + (Fload): Use it to avoid assigning streams. + (write_binary_header): New function. + (save_vars): New function. + (Fsave): Use it to avoid assigning streams. + + * libcruft/linpack/zgesl.f (zgesl): Comment out unused varialbes + and statement functions. + + * src/sysdep.cc (Fisieee): New function. + (Frealmax, Frealmin): Ditto. + + * scripts/miscellaneous/version.m: New file. + +Fri Oct 28 14:52:08 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * octMakefile.in (distclean): Also delete config.cache and + config.log. + + * Makeconf.in (CPPFLAGS): Allow substitution. + + * configure.in: Use AC_PREFIX_DEFAULT. + + * configure.in: Use AC_CANONICAL_HOST instead of doing this + ourselves. + + * install-sh: Rename from install.sh. + * octMakefile.in (DISTFILES): Distribute install-sh, not install.sh. + +Mon Oct 24 10:04:27 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * octave-bug.in: Print message if bug report appears to have been + mailed successfully. Otherwise, exit with error status. + +Fri Oct 21 14:05:10 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tc-rep-ass.cc (TC_REP::do_vector_assign (rhs, idx-vector)): + Handle all four cases of row/colum mixing. Report an error if the + RHS is a matrix. + + * src/tc-rep-idx.cc (TC_REP::do_index): Don't barf on indexing an + empty matrix with colon(s). + (TC_REP::do_scalar_index): Create index vector with z_len = 1. + (TC_REP::do_matrix_index (Range, tree_constant)): Correctly handle + case of colon as second arg. + + * octave-bug.in: Put mail commands in subshells so error message + really do go away. + +Thu Oct 20 11:05:36 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * octave-bug.in: If passing $SUBJECT on the command line to a + mailer, quote it. Don't assume /bin/mail takes any args other + than a recipient address. Do the right thing if the To: line + changes. + + * src/tc-rep.cc (TC_REP::rows, TC_REP::columns): Return -1 for + anything that doesn't really have rows or columns. + + * src/tc-rep-idx.cc (fortran_style_matrix_index): Check max and + min index values. + + * Makefile.in (FORCE): New phony target. Used instead of .PHONY + to be portable. + + * octave-bug.in: Try harder to mail the message. + + * src/dynamic-ld.cc: Undefine true, false, and boolean after + including kpathse/pathsearch.h. + + * src/sysdep.cc: Include <float.h>. + +Wed Oct 19 10:28:49 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * configure.in (CXXLIB_LIST, FLIB_LIST, CXXLIB_PATH, FLIB_PATH): + Be careful not to match -l or -L in the middle of a word. + + * src/f-minmax.cc: Correctly handle mixed scalar/matrix args. + + * octMakefile.in: Rename from Makefile.in. + * Makefile.in: New file. For `all' target, print message and + execute make again using octMakefile. For other targets, just + execute make again using octMakefile. + + * configure.in: Check for sys_siglist. + * src/sighandlers.h [! HAVE_SYS_SIGLIST]: Provide an external + declaration. + * src/sighandlers.cc (generic_sig_handler): New function, replaces + most individual signal handler functions. + (sigint_handler, sigpipe_handler): Restore signal handler before + doing anything else. + [! HAVE_SYS_SIGLIST] (sys_siglist): Provide our own definition. + + * config.guess: Update from FSF sources. + +Tue Oct 18 23:36:24 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * flibs.sh: Don't pass -Y P,path. Instead, turn it into a series + of -L dir args. + + * configure.in: Update for autoconf 2.0. + Delete support for --enable-run-in-place (it is too hard to make + this work reliably...). + +Mon Oct 17 11:40:49 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/user-prefs.cc (init_user_prefs): Declare to return void, + not int. + + * configure.in: Change quote characters around tr command. Some + systems actually do need the []'s for ranges... + +Sun Oct 16 12:22:14 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tempname.c, src/tmpnam.c: New files. + * src/Makefile.in (SOURCES): Add them. + * src/dirfns.cc: Delete functions extracted from glibc. + + * configure.in (localfcnfiledir, localoctfiledir, imagedir): + New variables. Use them to define localfcnfilepath, + localoctfilepath, and imagepath. + * Makeconf.in: Substitute them here. + + * src/utils.cc (get_fcn_file_names) [WITH_DLD]: Also match .oct + files. + + * dld/find_exec.c (dld_find_executable): Don't be fooled by + directories or other special files in PATH. + (ABSOLUTE_FILENAME_P): Also return true if the name includes a + `/'. This isn't necessarily an absolute path, but we will turn it + into one later. + * src/dynamic-ld.cc (octave_dld_init): Call make_absolute() on + value returned from dld_find_executable(). + +Sat Oct 15 08:35:13 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * flibs.sh: Undo previous change. Only substitute spaces for + commas if it looks like we have output from xlf. Handle -Y and + LD_RUN_PATH using gcc's -Xlinker option. + + * Makefile.in (snapshot-version): Use move-if-change for version.h. + +Fri Oct 14 09:18:08 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/image/Makefile.in (SOURCES): Don't forget octtopnm.c. + + * Makefile.in (BINDISTFILES): Distribute octave-bug too. + + * configure.in (imagepath): Install at same level as fcnfiledir, + not below it. + + * doinstall.sh: Correctly extract version numbers that are not all + digits. Also install images too. Also install octaverc. Ask + octave for the target host type. Also create site/m and + site/oct directories. Also install octave-bug. + + * scripts/image/Makefile.in (DISTFILES): Distribute demo image + files too. + + * doinstall.sh: Update for new directory organization. + + * src/variables.cc (subst_octave_home): Make it work for multiple + substitutions. + + * flibs.sh: Handle -Y P,path:of:lib:dirs output from f77 on Solaris. + + * src/strfns.cc (Ftoascii): New file, new function. + (Fisstr, Fsetstr): Move here, fromd ata.cc. + + * src/Makefile.in (SOURCES): Include it. + +Thu Oct 13 11:58:03 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/signal/filter.m: Postpad `b' before reshaping. + + * mkinstalldirs: New file. + * Makefile.in: Distribute it, don't make mkpath. + * All Makefile.in files: Use it instead of mkpath. + + * src/utils.cc (Foctave_tmp_file): New function. + + * src/utils.cc (undo_string_escape): Move here from tc-rep.cc, + rename from undo_string_escapes, and make extern. + (undo_string_escapes): New function, for undoing a whole string. + (Fundo_string_escapes): New function. + + * scripts/miscellaneous/dump_prefs.m, + scripts/miscellaneous/dump_1_pref.m: New functions. + * scripts/miscellaneous/bug_report.m: Record user preferences in a + file and pass the name of the file to octave-bug. Use + octave_tmp_file to generate tmp file name. + * octave-bug.in: Accept a final file-name arg as a file that + contains a list of user-preferences. + +Wed Oct 12 09:09:37 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * configure.in: Redefine archlibdir and octfiledir so that oct + and exec directories are at the same level as the m directory. + Redefine localoctfilepath so that site/oct is a the same level as + site/m. + + * Makeconf.in (F77): Substitute it. + (BUG_CFLAGS, BUG_CXXFLAGS): New vars. + * configure.in: + * scripts/bug_report.m: New file. + * octave-bug.in: New file. + * Makefile.in (DISTFILES): Distribute octave-bug.in. + (dirs_to_make): Add $bindir. + (all): Add octave-bug. + (octave-bug): New target. + (install): Install it. + * src/defaults.h.in: Add defines for bindir. + * src/Makefile.in (defaults.h): Substitute it. + * src/variables.cc (octave_bin_dir): New function. + * src/octave.cc (initialize_globals): Also add $bindir to path. + + * configure.in: Check for gettimeofday. Add AC_TIME_WITH_SYS_TIME. + * src/systime.h: New file. + * src/timefns.h: Use gettimeofday if available. + * src/Makefile.in (INCLUDES): Add systime.h. + +Mon Oct 10 14:34:56 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/octave.cc (verbose_flag): New global variable. + (long_opts): Add "verbose". + (usage_string): Update. + (main): Set verbose_flag if given --verbose. + (execute_startup_files): Don't print messages about reading + startup files if verbose_flag is not set. + + * src/tree-expr.cc (apply_mapper_fcn): Handle scalars as a special + case, but then just try to convert other arg types to a matrix. + + * src/f-det.cc (Fdet): Check if arg is complex type, but not + necessarily a complex matrix. + * src/f-schur.cc (Fschur): Likewise, and also for real types. + * src/f-lu.cc (Flu): Likewise. + * src/f-minmax.cc (Fmin, Fmax): Likewise. + +Sun Oct 9 21:04:17 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tc-rep-ass.cc (TC_REP::assign): If LHS is undefined, don't + try to force it to be a numeric type. + +Fri Oct 7 09:05:10 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * configure.in: Define LD_STATIC_FLAG for Alpha OSF/1 1.3 systems. + + * src/tc-rep-idx.cc (TC_REP::do_index): Only work for numeric + types, but don't panic if conversion doesn't work. + * src/tc-rep-ass.cc (TC_REP::assign): Likewise. + + * src/tc-rep.cc (TC_REP::gripe_wrong_type_arg): New function. + + * src/gripes.cc (gripe_wrong_type_arg): Define here. + * src/tree-const.cc: Not here. + +Wed Oct 5 16:24:38 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/file-io.cc (do_scanf): Don't panic if string is NULL. + + * src/gripes.cc (gripe_unrecognized_float_fmt): New function. + (gripe_2_or_3_dim_plot): Ditto. + (gripe_unrecognized_data_fmt): Ditto. + (gripe_data_conversion): Ditto. Use it in load-save.cc data + conversion routines that aren't implemented yet. + + * src/load-save.cc (do_double_format_conversion): Don't panic on + unrecognized floating point formats. + (do_float_format_conversion): Likewise. + (write_doubles): Don't panic if data format is unrecognized. + (do_save): Likewise + (install_loaded_variable): Don't panic for unknown symbol types. + (read_binary_data): Also check error_state after calls to read_doubles. + + * src/symtab.cc (symbol_table::rename): Don't panic if symbol + can't be renamed. + * src/parse.y (return_list): Abort parse if renaming results in an + error. + + * src/tree-misc.cc (tree_if_command::eval): Don't panic if all + (all (cond)) is not a scalar. + + * src/tree-expr.cc (tree_unary_expression::print_code): Don't + panic if expression type is unknown. + + * src/tree-plot.cc (tree_plot_command::eval): Don't panic if plot + is not 2 or 3 dimensional. + (tree_plot_command::print_code, subplot::print, save_in_tmp_file): + Likewise. + + * src/variables.cc (alias_builtin): Panic with better message. + (subst_octave_home): Don't panic if OCTAVE_HOME doesn't contain + OCTAVE_PREFIX. + + * src/tc-inlines.h (REP_RHS_MATRIX): Use panic_impossible() + instead of abort(). + (REP_ELEM_ASSIGN, CRMATRIX): Likewise. + + * src/data.cc (Fdiag, make_diag): Do work here. + * src/tc-rep.cc (TC_REP::diag, make_diag): Not here. + * src/tc-rep.h (TC_REP::diag): Delete. + * src/tree-const.h (tree_constant::diag): Delete. + +Tue Oct 4 08:35:37 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/f-fft.cc (Ffft): Correctly set n_points for row vectors if + nargin == 1. + * src/f-ifft.cc (Fifft): Likewise. + + * src/load-save.cc (Fsave): Declare file and stream static. + +Mon Oct 3 10:40:50 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tree-expr.cc (octave_va_arg): Correct arg count and index to + match recent change to arg passing/nargin. + (define_param_list): Always set num_named_args = param_list->length (). + + * readline/Makefile.in (install): Don't install libreadline.a by + default. + (uninstall): Now no need to delete it. + + * configure.in (localfcnfilepath, localoctfilepath): Change to + match organization of system fcn and oct files, and enable + recursive searching in both. Enable recursive searching in + $(octfiledir). + (includedir): Change to $(prefix)/include/octave. + +Sun Oct 2 10:14:18 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * configure.in: For now, disable IEEE floating point functions on + the Alpha. This is braindead, but at least prevents divide by + zero crashes... + + * src/file-io.cc (fseek_internal): Use values for origin that + match what we use to define SEEK_SET, SEEK_CUR, and SEEK_END in + variables.cc. + + * dld: Merge various changes for Linux from dld 3.2.4 that is + being distributed with jacal. + + * src/file-io.cc (fwrite_internal): Correct indexing of args. + + * src/tree-expr.cc (apply_mapper_fcn): New function. + (tree_builtin::eval): Use it instead of tree_constant::mapper(). + * src/tree-const.h (tree_constant::mapper): Delete. + * src/tc-rep.cc, src/tc-rep.h (TC_REP::mapper): Delete. + + * src/data.cc (Fcumprod, Fcumsum, Fprod, Fsum, Fsumsq): Do work here. + * src/tc-rep.cc (TC_REP::cumprod, TC_REP::cumsum, TC_REP::prod, + TC_REP::sum, TC_REP::sumsq): Not here. Delete. + * src/tc-rep.h (TC_REP::cumprod, TC_REP::cumsum, TC_REP::prod, + TC_REP::sum, TC_REP::sumsq): Delete + * src/tree-const.h (tree_constant::cumprod, tree_constant::cumsum, + tree_constant::prod, tree_constant::sum, tree_constant::sumsq): + Delete. + + * tree-const.h: Don't check gcc minor version number. + * tc-rep.h: Likewise. + + * src/file-io.h (class file_info): Declare here. + * src/file-io.cc: Not here. + + * configure.in (LIBOCTDLD, LIBDLD): Remove ../ prefix. + * Makefile.in (distclean, realclean): Don't remove *.a. + * src/Makefile.in (OCTAVE_LIBS): Correct directory spec for libs. + Build, install, and clean liboctdld.a, not ../liboctdld.a. + * dld/Makefile.in: Build, install, and clean libdld.a, not ../libdld.a. + * info/Makefile.in: Likewise, for libinfo.a. + * kpathsea/Makefile.in: Likewise, for libkpathsea.a. + * libcruft/Makefile.in: Likewise, for libcruft.a. + * liboctave/Makefile.in: Likewise, for liboctave.a. + * readline/Makefile.in: Likewise, for libreadline.a. + + * configure.in (gxx_version): Require 2.6.x or later. Don't + define EXTERNAL_TEMPLATES. Do define NO_IMPLICIT_TEMPLATES. + * liboctave/Array-C.cc, liboctave/Array-d.cc, src/Array-tc.cc, + src/DLList-fi.cc src/SLStack-tok.cc, src/SLStack-ue.cc, + src/SLStack-tm.cc, src/SLStack-pc.cc, src/SLStack-i.cc, + src/SLList-tc.cc, src/SLStack-sym.cc, src/SLStack-ui.cc, + src/SLList-misc.cc, src/SLList-expr.cc, src/SLList-plot.cc, + src/Map-tc.cc: New files. Instantiate templates here. + * libocave/Array.cc, src/Map.cc, src/Stack.cc, src/SLStack.cc: + Not here. Remove #pragma implementation hack. + * liboctave/Array.h, src/Stack.h, src/Map.h, src/SLStack.h: Remove + #pragma interface hack. + * Makeconf.in: Substitute NO_IMPLICIT_TEMPLATES, not + EXTERNAL_TEMPLATES. + (ALL_CXX_FLAGS, UGLY_ALL_CXX_FLAGS): Use $(NO_IMPLICIT_TEMPLATES), + not $(EXTERNAL_TEMPLATES). + * acconfig.h: Remove USE_EXTERNAL_TEMPLATES #undef. + * src/Makefile.in (XALL_CXX_FLAGS): Delete -fno-implicit-templates. + (TI_SRC, TI_OBJ): New variables. + (libtinst.a): New target. + * liboctave/Makefile.in (TI_SRC): New variable. + (SOURCES): Add it to list. + +Fri Sep 30 09:52:15 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/Makefile.in: Automatically generate more lists. + Use := in more places. + * src/Array-C.cc src/Array-d.cc src/Array-tc.cc src/Map-tc.cc + src/Stack-i.cc src/SLStack-pc.cc src/SLStack-sym.cc + src/SLStack-tok.cc src/SLStack-tm.cc src/SLStack-ue.cc: + New template instantiation files. + * configure.in: If using gcc 2.6.x or later, use + -fno-implicit-templates instead of -fexternal-templates. + + * src/tc-inlines.h: Rename from tc-inlines.cc. + + * src/parse.y (looking_at_indirect_ref): New global flag, for + parser feedback. + (tree_indirect_ref_type): New token type. + (TEXT_ID): New token. + (indirect_ref): New non-terminal. + (make_index_expression): New function. + (variable): Use it to build variable from indirect_ref, not just + identifier. + + * src/lex.l (handle_identifier): Handle identifiers differently if + looking at an indirect reference. Add `.' to list of other ops. + + * src/tree-expr.cc (tree_identifier::do_lookup): Handle new + exec_script arg. + (tree_identifier::assign): New functions for assignment to a + strucutre element. + (print_constant): New function. + (tree_identifier::eval, tree_indirect_ref::eval): Use it. + ( + + * src/tree-expr.h (tree_indirect_ref): New class for handling + structure references. + (tree_expression::is_indirect_ref): New virtual function. + (tree_fvc::lookup_map_element): New virtual function. + (tree_index_expression, tree_simple_assignment_expression): + Add new constructors for handling indirect references. + + * src/oct-map.h: New file, for class managing Octave's + structure/map type. + + * src/tree-misc.cc (tree_global::eval): Don't allow individual + structure elements to be tagged global. + + * src/tc-rep.h (tree_constant_rep): Add new field, a_map, and a + new type_tag, map_constant. + * src/tree-const.cc (tree_constant::is_map): New function. + * src/tree-const.cc (tree_constant::map_value, + tree_constant::assign_map_element, tree_constant::make_unique, + tree_constant::lookup_map_element, + tree_constant::make_unique_map_element): New functions. + + * src/Map.h (CHNode::CHNode): Copy key. + (CHNode::~CHNode): Delete it. + (CHMap::contents): Don't declare return value const. + + * src/tc-inlines.cc: Move some macros here from tc-rep.cc so they + can appear in one place and be shared by tc-rep-idx.cc, + tc-rep-ass.cc, and tc-pre.cc. + + * src/tc-rep-idx.cc, src/tc-rep-ass.cc: New files, extracted from + tc-rep.cc to make compilation of tc-rep stuff faster and require + less memory. + + * src/variables.cc (Fwhos): Correctly insert "-long" into arg list + for Fwho. + +Mon Sep 26 12:59:55 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * test/Makefile.in (OCTAVE_SCRIPT_PATH): Append `//' for recursive + searching. + +Fri Sep 23 07:53:13 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/plot/bar.m: Don't return values if nargout == 0. + * scripts/plot/hist.m: Likewise. + * scripts/plot/stairs.m: Likewise. + + * src/tree-plot.cc (Fishold): New function. + (plot_line_count, parametric_plot, clear_before_plotting): + Declare static. + + * src/f-fft.cc (Ffft): Handle row vector as a special case. + * src/f-ifft.cc (Fifft): Ditto. + +Thu Sep 22 13:20:53 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/help.cc (print_symbol_type): New function, extracted from Fwhich. + (Fwhich): Use it. + (Fhelp): Use it to print type info before help message. + + * src/dynamic-ld.cc: Hide all DLD-specific functions behind + #ifdef WITH_DLD. + + * scripts/startup: New directory. + * scripts/startup/Makefile.in: New file. + * scripts/startup/octaverc: New file. Don't overwrite existing + file when nstalling. + * configure.in: Generate Makefile in scripts/startup. + * scripts/Makefile.in (SUBDIRS): Add startup. + * src/defaults.h.in (OCTAVE_STARTUPFILEDIR): New macro. + * src/variables.cc (get_site_defaults): Look for octaverc in + OCTAVE_STARTUPFILEDIR. + + * configure.in (fcnfiledir): Make it end in `//'. + + * src/error.cc (Ferror): Correct indexing error. + + * src/Map.h, src/Map.cc: New files implementing associative arrays. + * src/Makefile.in: Include them in the list of files to distribute + and compile. + +Wed Sep 21 09:50:19 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * Makefile.in (DISTSUBDIRS): Add dld to the list. + + * scripts/plot/hist.m: New function file. + + * src/tc-rep.cc (TC_REP::do_matrix_index (tree_constant, + tree_constant): For case of scalar as first arg, move call to + index check to the TC_REP::do_matrix_index (int, tree_constant) + function. + (TC_REP::do_matrix_index (int, tree_constant): Be compatible with + Matlab for indexing of the form row_vector (0, :). + (TC_REP::do_matrix_index (tree_constant, int): Likewise, for + indexing of the form col_vector (:, 0). + (TC_REP::do_matrix_assignment): Similar changes for assignment. + +Tue Sep 20 17:48:39 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/parse.y (return_list, return_list1): New nonterminals. + Rename from func_def1a. Handle variable number of return values. + * src/tree-expr.h (tree_function::vr_list): New field. + * src/tree-expr.cc (delete_vr_list): New function. + (tree_function::octave_vr_val, tree_function::takes_var_return): + New functions, for variable return lists. + (tree_function::define_ret_list, tree_function::eval): Handle vr_list. + (Fvr_val): New function. + * src/tree-misc.h (tree_va_return_list): New list class. + * src/tree-misc.cc (tree_parameter_list::convert_to_const_vector): + Take pointer to tree_va_return_list as arg, and append the values + found there. + + * src/arith-ops.cc (mx_stupid_bool_op): Correctly handle empty + matrices for == and != ops. + + * src/variables.cc (Fis_global): Check args(0), not args(1). + (Fexist): Likewise. + (install_builtin_mapper): Set nargin_max to 1, not 2. + + * src/dynamic-ld.cc (octave_dld_init): Make raw program name + absolute before calling dld_find_executable. + + * src/octave.cc (initialize_error_handlers): New function. + (main): Call init_user_prefs and initialize_error_handlers. + Rearrange order of calls to initialization functions. + + * src/user-prefs.cc (init_user_prefs): New function. + + * src/data.cc (map): Correct condition for assert (). Correct + handling of empty args. + + * src/f-lsode.cc src/f-dassl.cc src/f-quad.cc src/f-npsol.cc + src/f-fsolve.cc: Pass correct number of args to + takes_correct_nargs (). + * src/variables.cc (takes_correct_nargs): Use %s, not %c in format + string. + + * src/f-ifft2.cc src/f-expm.cc src/f-det.cc src/f-svd.cc + src/f-syl.cc src/f-schur.cc src/f-qzval.cc src/f-qr.cc + src/f-pinv.cc src/f-lu.cc src/f-log.cc src/f-inv.cc src/f-hess.cc + src/f-eig.cc src/f-chol.cc src/f-balance.cc src/f-lsode.cc + src/f-dassl.cc src/f-quad.cc src/f-npsol.cc src/f-fsolve.cc: + Correctly handle return value from empty_arg (). + * src/utils.cc (empty_arg): Clarify usage, correct return value if + arg is empty but no message is printed. + + * src/Makefile.in (dist): Delete builtins.cc too. + + * configure.in (DYNAMIC_LD_OBJ): Delete. + * src/Makefile.in (OBJECTS): Don't substitute DYNAMIC_LD_OBJ. + Always include dynamic-ld.o. + + * configure.in: Generate Makefile in scripts/elfun and + scripts/specfun. + + * Makeconf.in (version): Use `:=' and `$(shell )', not just `=' + and backticks, so we only extract the version number once. + +Mon Sep 19 09:04:30 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/tc-rep.h (represent_strings_with_doubles): New field in + tree_constant_rep class. + + * tree-misc.cc (tree_argument_list::convert_to_const_vector): + Don't allocate extra arg for function name. + * sysdep.cc, pr-output.cc, input.cc, file-io.cc, error.cc, + tc-rep.cc, tree-expr.cc, f-svd.cc, f-sort.cc, f-schur.cc, + f-rand.cc, f-qzval.cc, f-quad.cc, f-qr.cc, f-qpsol.cc, f-pinv.cc, + f-npsol.cc, f-minmax.cc, f-lu.cc, f-lsode.cc, f-log.cc, f-inv.cc, + f-ifft2.cc, f-ifft.cc, f-hess.cc, f-givens.cc, f-fsolve.cc, + f-fft2.cc, f-fft.cc, f-expm.cc, f-eig.cc, f-det.cc, f-dassl.cc, + f-colloc.cc, f-chol.cc, f-balance.cc, f-syl.cc, variables.cc, + tree-misc.cc, data.cc, octave.cc, utils.cc, defun-int.h: + Change meaning and usage of nargin and args.length() to cope with + above change. This makes nargin mean the same thing in built-in + functions as it does in M-files. + +Sat Sep 17 09:29:08 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * scripts/general/nargchk.m: New function. + +Fri Sep 16 08:48:13 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * Makeconf.in (FLIB_LIST, FLIB_PATH, CXXLIBS, CXXLIB_LIST, + CXXLIB_PATH): Set these. + + * cxxlibs.sh: New file. + * configure.in: Use it to determine extra C++ libraries to link + to. Use sed magic to extract list of libraries and directories + from FLIBS and CXXLIBS. + * Makefile.in: (DISTFILES): Include cxxlibs.sh. + + * configure.in: Change AC_VERBOSE messages to match + autoconf-generated messages. + + * src/dynamic-ld.cc (dld_octave_resolve_reference): Search library + path for list of files to link. + + * src/utils.cc (pathstring_to_vector): Un-#if 0 it. + + * Makefile.in: Install liboctdld.a if not linking to it. + (defaults.h): Substitute FLIB_LIST, FLIB_PATH, CXXLIB_LIST, + CXXLIB_PATH. + +Thu Sep 15 09:31:29 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * Makeconf.in (LD_STATIC_FLAG): Actually substitute LD_STATIC_FLAG. + (ALL_LDFLAGS): Include it here. + + * configure.in: Check for signgam declaration in math.h + * acconfig.h: Add #undef for SIGNGAM_DECLARED. + * src/mappers.h: Provide our own declaration of signgam if + HAVE_LGAMMA but not SIGNGAM_DECLARED. + +Wed Sep 14 11:28:09 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/dynamic-ld.cc (mangled_octave_builtin_name, + mangle_octave_oct_file_name, load_octave_builtin, + load_octave_oct_file, init_dynamic_linker): New functions. + [WITH_DLD] (octave_dld_init, dld_octave_resolve_reference, + dld_octave_builtin, dld_octave_oct_file): New functions to handle + details of dynamic linking using dld. + + * src/variables.cc (load_fcn_from_file) [WITH_DLD]: Handle looking + for .oct file to link at run time. + + * src/tree-expr.cc (tree_builtin::tree_builtin): Always init my_name. + (tree_builtin::eval): If no definition, try to load one using + load_octave_builtin(). + + * src/octave.cc (main): Initialize dynamic linking here. + + * src/defun-int.h (DEFINE_FUN_STRUCT, DEFINE_FUN_STRUCT_FUN): + New macros. + * src/defun-dld.h (DEFUN_DLD_BUILTIN): Rename from DEFUN_DLD and + handle case of WITH_DLD && OCTAVE_LITE && MAKE_BUITLINS. + (DEFUN_DLD): Use this for external user-supplied functions that + are intended to be dynamically linked. + + * configure.in: Handle --enable-lite-kernel. Call AC_SUBST for + use_dld and lite_kernel. Define LIBOCTDLD unless doing dynamic + linking and small kernel requested. + * acconfig.h: Add #undefs for OCTAVE_LITE and SMART_PUTENV. + * Makeconf.in: Define WITH_DLD from @use_dld@ and OCTAVE_LITE from + @lite_kernel@. + + * src/octave.cc (Fsystem): Rename from shell_cmd. + (Fshell_cmd): Define as alias to Fsystem. + +Mon Sep 12 20:19:20 1994 John Eaton <jwe@schoch.che.utexas.edu> + + * src/mappers.cc: Include error.h and math.h. + +Sat Sep 10 11:49:11 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Makefile.in: Clean up rules for making distributions. + (DISTDIRS): Distribute kpathsea + +Fri Sep 9 08:46:03 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/dMatrix.cc (pseudo_inverse): New function. + * liboctave/CMatrix.cc (pseudo_inverse): New function. + * src/f-pinv.cc: New file, for pinv(). + * src/Makefile.in (DLD_SRC): Add f-pinv.cc. + (DLD_OBJ): Add f-pinv.o. + * scripts/linear-algebra/pinv.m: Delete. + + * configure.in: Define and substitute $imagepath. + * src/Makefile.in: Substitute OCTAVE_IMAGEPATH. + * src/defaults.h.in: Add OCTAVE_IMAGEPATH. + * src/variables.cc (install_builtin_variables): Define IMAGEPATH. + * src/user-prefs.cc (image_path): New function. + * Makeconf.in (imagepath): substitute it. + + * src/octave.cc (initialize_globals): Ensure that $archlibdir is + in the user's PATH. + + * utils.cc (search_path_for_file, Ffile_in_path): New functions. + + * configure.in: Append `//' to $fcnfiledir, for recursive + searching. + (AC_OUTPUT): Edit makefiles in script subdirectories too. + + * scripts: Regroup function files in the following directories, + each with its own Makefile.in: + + image plot signal control + linear-algebra polynomial special-matrix general + miscellaneous set statistics + + * src/help.cc (simple_help): Use kpathsea functions to find files + in path. + * src/utils.cc (get_fcn_file_names): Likewise. + (pathstring_to_vector): #if 0 out. + +Thu Sep 8 16:59:42 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/Makefile.in (OCTAVE_LIBS): Include ../libkpathsea.a. + * configure.in: Include configure stuff for kpathsea here too. + * Makefile.in (kpathsea): New target. + * src/utils.cc (file_in_path): Use kpathsea function instead of + doing our own searching. + * kpathsea/Makefile.in (lib): Define as ../libkpathsea.a, not just + kpathsea.a. + +Wed Sep 7 09:39:20 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/user-prefs.cc (check_str_pref): Fix comment. + + * src/utils.cc (empty_arg): Check flag == 0, not is_empty > 0. + + * src/f-fft2.cc (Ffft2): New file and function. + * src/f-ifft2.cc (Fifft2): Likewise. + * src/fft2.m, src/ifft2.m: Delete. + + * src/f-fft.cc (Ffft): Handle second arg. Depending on value of + propagate_empty_matrices, return empty matrix for empty arg. + * src/f-ifft.cc (Fifft): Likewise. + + * liboctave/CMatrix.cc (fourier2d, ifourier2d): New functions. + * liboctave/dMatrix.cc (fourier2d, ifourier2d): New functions. + + * src/tree-misc.cc (eval (int, int)): New function. + * src/octave.cc (eval_string, Feval): Handle multiple output args. + + * src/error.cc (suppress_octave_error_messages): New global. + (error): Check it to see if messages should be printed. + * src/octave/cc (Feval): Set it if `catch' arg is supplied. + + * src/octave.cc (Feval): Handle second `catch' arg. + + * src/load-save.cc (read_mat_file_header): Init swap to zero. + + * doc/octave.1: New simple man page. + * doc/Makefile.in: Distribute and install it. + + * src/variables.cc (Fclear): Handle -x option for exclusive clear. + +Tue Sep 6 16:00:34 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/load-save.cc (save_mat_binary_data): New function. + (do_save): Handle LS_MAT_BINARY. + (Fsave): Handle -mat-binary. + (Changes from G. Beyerle <gbeyerle@AWI-Potsdam.DE>.) + + * src/variables.cc (subs_octave_home, octave_arch_lib_dir): + New functions. + (octave_home, octave_info_dir, octave_lib_dir, default_path): + Fix for new directory organization. + + * src/tree-expr.h (tree_multi_val_ret): New class to serve as a + base for objects that can produce more than one value when + evaluated. + (tree_fvc, tree_index_expression, tree_multi_assignment_expression): + Use it as a base. + + * src/parse.y (make_multi_val_re): New function. + (expression): Use it to construct multiple value assignments. + + * configure.in, Makefile.in, Makeconf.in, src/defaults.h.in: + Revamp directory structure used for installed versions of Octave. + + * src/f-schur.cc (Fschur): Correct argument count in error message. + + * src/octave.cc (Fcomputer): New function. + * scripts/computer.in: Delete. + * scripts/Makefile.in: Don't edit or distribute computer.in. + +Thu Sep 1 09:02:06 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/variables.cc (install_builtin_variables): New builtin + variable, OCTAVE_VERSION. + +Tue Aug 30 17:18:14 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * tree-expr.cc: Include string.h + (tree_matrix::eval): Fix handling of strings to work as in 1.0. + +Mon Aug 29 14:55:14 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/lex.l: Handle ".+" and ".-" too. + + * src/dirfns.cc (dir_acess, exists, gen_tempname, tempnam): New + functions from glibc. + * src/utils.cc (octave_tmp_file_name): Use tempnam. + (choose_temp_base_try): Delete. + * configure.in: Check for tempnam. + + * src/load-save.cc (Fsave): Only write floating point format if + doing binary save. + + * liboctave/Array.cc (operator =): Check to see if assignment is + to same object. + +Sun Aug 28 23:32:59 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/CollocWt.cc (CollocWt::init): Call delete [] on vectors. + * liboctave/NPSOL.cc (NPSOL::minimize): Eliminate some memory leaks. + * liboctave/QPSOL.cc (QPSOL::minimize): Likewise. + * liboctave/NLEqn.cc (NLEqn::solve): Likewise. + +Thu Aug 25 09:27:04 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * info/session.c (info_get_input_char): Don't exit immediately if + we see EOF on the input stream. + + * scripts/kurtosis.m, scripts/skewness.m: Update from KH. + +Wed Aug 24 00:19:49 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * dld/Makefile.in, scripts/Makefile.in, doc/Makefile.in, + readline/Makefile.in, info/Makefile.in, libcruft/Makefile.in, + liboctave/Makefile.in, src/Makefile.in (INSTALL, INSTALL_PROGRAM, + INSTALL_DATA): Define here. + * Makeconf.in: Not here. + + * src/tree-plot.cc (send_to_plot_stream): Handle + user_pref.automatic_replot. + * src/variables.cc (install_builtin_variables): + Add DEFVAR for automatic_replot. + * src/user-prefs.cc (automatic_replot): New function. + * src/user-prefs.h (user_preferences): Add automatic_replot to the + list. + + * src/data.cc (Fatan2): Make work for mixed scalar and Matrix args. + (map): New functions for two arg mappers (like atan2). + + * src/f-fsqp.cc: Don't surround everything in FSQP_MISSING, so + that trying to use fsqp will result in a message about fsqp not + being freely redistributable. + * src/f-npsol.cc: Likewise, for NPSOL_MISSING. + * src/f-qpsol.cc: Likewise, for QPSOL_MISSING. + +Tue Aug 23 12:56:47 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree-expr.cc (tree_identifier::eval): Don't call delete for + ans_id. The destructor for tree_simple_assignment_expression does + this now. + + * src/Makefile.in (%.def : %.cc): Use sed, not awk. + (realclean, distclean, local-dist, dist): Delete .d and .def files. + + * liboctave/Array.h (DiagArray::Proxy): Make compilation + conditional on gcc version, not just _AIX. + + * src/utils.cc (octave_tmp_file_name, choose_temp_base_try): New + functions, stolen from GCC. If HAVE_MKTEMP is not defined, just + call tmpnam; otherwise, try harder to please. + * src/tree-plot.cc (save_in_tmp_file): Use it, instead of calling + tmpnam() directly. + * src/file-io.cc (do_scanf): Likewise. + * src/octave-hist.cc (mk_tmp_hist_file): Likewise. + * configure.in: Check for mktemp. + + * src/tree-const.h (is_matrix_type, is_scalar_type): Make private. + * src/tc-rep.h (is_matrix_type, is_scalar_type): Likewise. + + * src/tc-rep.h (force_numeric, make_numeric, + make_numeric_or_magic, make_numeric_or_range_or_magic): Make + private. + (make_numeric_or_range): #if 0 out. + + * src/utils.cc (empty_arg): Correctly set return value. + + * src/arith-ops.cc: Don't include setjmp.h. + * src/utils.cc: Surround setjmp.h with extern "C". + * src/octave.cc: Likewise. + + * src/sighandlers.cc (octave_new_handler): New function. + (install_signal_handlers): Call it. + + * src/f-qzval.cc (Fqzvalue): Don't call make_numeric for args. + Check error state after attempting to extract values. Simplify + where possible. + * src/f-colloc.cc (Fcolloc): Likewise. + * src/f-rand.cc (Frand): Likewise. + * src/f-sort.cc (Fsort): Likewise. + * src/f-find.cc (Ffind): Likewise. + * src/f-minmax.cc (Fmin, Fmax): Likewise. + * src/f-fft.cc (Ffft): Likewise. + * src/f-ifft.cc (Fifft): Likewise. + * src/f-svd.cc (Fsvd): Likewise. + * src/f-inv.cc (Finv): Likewise. + * src/f-det.cc (Fdet): Likewise. + * src/f-eig.cc (Feig): Likewise. + * src/f-lu.cc (Flu): Likewise. + * src/f-hess.cc (Fhess): Likewise. + * src/f-qr.cc (Fqr): Likewise. + * src/f-givens.cc (Fgivens): Likewise. + * src/f-syl.cc (Fsyl): Likewise. + * src/f-log.cc (Flog): Likewise. + * src/f-expm.cc (Fexpm): Likewise. + * src/f-balance.cc (Fbalance): Likewise. + * src/f-schur.cc (Fschur): Likewise. + * src/f-chol.cc (Fchol): Likewise. + * src/f-npsol.cc (Fnpsol, npsol_options): Likewise. + * src/f-fsolve.cc (Ffsolve, fsolve_options): Likewise. + * src/f-dassl.cc (Fdassl, dassl_options): Likewise. + * src/f-lsode.cc (Flsode, lsode_options): Likewise. + * src/f-quad.cc (Fquad, quad_options): Likewise. + * src/tree-expr.cc (tree_matrix::eval): Likewise, while building + matrix. + (tree_colon_expression::eval): Likewise, for elements of range. + * src/variables.cc (is_valid_function, Fis_global, Fexist): + Likewise. + * src/sysdep.cc (Fgetenv, Fpause): Likewise. + * src/octave.cc (eval_string, Fshell_cmd): Likewise. + * src/input.cc (get_user_input): Likewise. + * src/file-io.cc (return_valid_file, fopen_file_for_user, + fgets_internal, fseek_internal, process_printf_format, do_printf, + do_scanf, fread_internal, fwrite_internal, feof_internal): + Likewise. + + * src/tc-rep.cc (TC_REP::string_value): Call error() and return 0 + instead of crashing if not string_constant. + + * src/file-io.cc (fopen_file_for_user): Take string as first arg, + not tree_constant. Change callers. + (fgets_internal, fseek_internal): Correct check for int arg. + (process_scanf_format): Use isspace instead of checking directly + (and incorrectly) for white space characters. + + * src/tree-expr.cc (tree_matrix::eval, tree_unary_expression::eval, + tree_binary_expression::eval, tree_colon_expression::eval, + tree_simple_assignment_expression::eval ): Eliminate uneccesary + conversions to and from Octave_object/tree_constant. + +Mon Aug 22 18:35:05 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/data.cc (Fatan2): New function. + + * src/data.cc (get_dimensions): Don't call make_numeric for args. + Check error state after attempting to extract values. + +Fri Aug 19 08:28:24 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree-misc.h (tree_parameter_list::tree_parameter_list)): + Initialize marked_for_varargs to zero. + + * src/load-save.cc: Add float variants of the conversion routines. + (LS_DO_READ): Add swap parameter and only swap bytes if it is true. + (read_doubles): Pass swap to LS_DO_READ. Handle float data. + (LS_DO_WRITE): Copy data to tmp buffer to avoid destroying data. + (do_double_format_conversion): Rename from do_float_format_conversion. + (do_float_format_conversion): New function to handle conversion + for float data. + (read_mat_binary_data): Use read_doules for all cases. Handle + float data. + (too_large_for_float): New function. + (save_binary_data): Save data format for scalars and ranges too. + (read_binary_data): Read data format for scalars and ranges too. + (do_save, save_vars): New arg, save_as_floats. + (Fsave): New option, -float-binary. + + * src/utils.cc (empty_arg): New function. + * src/f-balance.cc (Fbalance): Use it to simplify handling of + empty arguments. + * src/f-chol.cc (Fchol): Likewise. + * src/f-det.cc (Fdet): Likewise. + * src/f-eig.cc (Feig): Likewise. + * src/f-expm.cc (Fexpm): Likewise. + * src/f-fft.cc (Ffft): Likewise. + * src/f-hess.cc (Fhess): Likewise. + * src/f-ifft.cc (Fifft): Likewise. + * src/f-inv.cc (Finv): Likewise. + * src/f-log.cc (Flogm, Fsqrtm): Likewise. + * src/f-lu.cc (Flu): Likewise. + * src/f-qr.cc (Fqr): Likewise. + * src/f-schur.cc (Fschur): Likewise. + * src/f-svd.cc (Fsvd): Likewise. + + * src/tc-rep.cc (tupe_as_string): Move here. + * src/tree-const.cc: From here. + + * src/gripes.cc (gripe_invalid_conversion): New function. + +Thu Aug 18 21:02:19 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/(print_empty_matrix): New function. + * src/pr-output.cc (octave_print_internal): Use it to print empty + matrices. + * src/tc-rep.cc (TC_REP::print_code, TC_REP::print): Rely on + octave_print_internal() to handle printing empty matrices. + + * src/pr-output.cc (octave_print_internal (all variants)): + New arg, pr_as_read_syntax. If nonzero, print the value in a form + that Octave can parse. Declare os as ostream&, not ostrstream&. + * src/tc-rep.cc (TC_REP::print_code): Handle all types, not just + real and imaginary constants. + * src/help.cc (Ftype): Also print values of variables. + +Wed Aug 17 08:46:44 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/octave.cc (Fshell_cmd): Return output if nargout > 0 or + nargin > 2, otherwise, just send output to the pager. + + * src/mappers.cc (xerf, xerfc, xgamma, xlgamma): New functions. + Put preprocessor conditionals here. + (install_mapper_functions): Not here. + +Tue Aug 16 09:55:25 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Check for erf, erfc, and lgamma. + * src/mappers.cc (erf, erfc, lgamma): New mappers. + * src/mappers.h (Mapper_fcn): Add new field `name'. + * src/variables.cc (install_builtin_mapper): Save the name. + * src/tc-rep.cc (TC_REP::mapper): Don't crash if a mapper function + is missing. + + * src/tc-rep-1.cc (warn_invalid_conversion): New function. + * src/gripes.cc (gripe_invalid_conversion): New function. + + * src/parse.y (list1, parse_error): New non-terminals. + (list): Use them. + * src/lex.l: Return LEXICAL_ERROR instead of calling + jump_to_top_level. + + * liboctave/Range.cc (matrix_value): New function. + * src/tc-rep.cc (TC_REP::matrix_value): Use it. + + * src/tree-const.h (to_matrix, to_vector, to_scalar): Delete + unecessary functions. + * src/tc-rep.cc (TC_REP::to_matrix, TC_REP::to_vector, + TC_REP::to_scalar): Likewise. Change all callers to use + matrix_value, vector_value, and scalar_value instead. + + * src/tree-const.cc (TC_REP::matrix_value): If at all possible, + produce a matrix from the current constant. Otherwise, print an + error message. Don't abort or jump to the top level. + (TC_REP::scalar_value, TC_REP::complex_scalar_value, + TC_REP::vector_value, TC_REP::complex_vector_value, + TC_REP::complex_matrix_value): Likewise, for appropriate types. + + * src/utils.cc (empty_arg): New function. + * src/f-svd.cc (Fsvd): Use it. Don't call make_numeric; rely on + value functions to do conversion. + + * src/load-save.cc (Fload): Handle -list and -verbose. + +Mon Aug 15 09:32:57 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tc-rep.cc (TC_REP): New define, so we don't have to write + tree_constant::tree_constant_rep:: everywhere. + * src/tree-const.h (class tree_constant): Nest tree_constant_rep + class inside tree_constant class by including tc-rep.h here. + * src/tc-rep.h: Don't include any other files, delete forward + class declarations. + + * src/tc-rep.h (constant_type): Make private. + + * src/parse.y (arg_list): Use tree_constant::magic_colon in + constructor call, not tree_constant_rep::magic_colon. + * src/tree-const.h (tree_constant::tree_constant + (tree_constant::magic_colon)): Convert arg from + tree_constant_rep::constant_type. + + * src/f-svd.cc (Fsvd): Simplify. + + * src/tree-expr.cc (any_arg_is_magic_colon): Don't use values from + tree_constant_rep::constant_type enum. + (tree_matrix::eval): Likewise. + * src/tree-misc.cc (tree_parameter_list::define_from_arg_vector, + tree_if_clause::eval): Likewise. + * src/tree-cmd.cc (tree_while_command::eval, + tree_for_command::eval): Likewise. + * src/symtab.cc (symbol_record_info::symbol_record_info): Likewise. + * src/f-colloc.cc (Fcolloc): Likewise. + * src/f-npsol.cc (npsol_objective_function): Likewise. + * src/f-chol.cc (Fchol): Likewise. + * src/f-det.cc (Fdet): Likewise. + * src/f-eig.cc (Feig): Likewise. + * src/f-expm.cc (Fexpm): Likewise. + * src/f-fft.cc (Ffft): Likewise. + * src/f-find.cc (Ffind): Likewise. + * src/f-hess.cc (Fhess): Likewise. + * src/f-ifft.cc (Fifft): Likewise. + * src/f-inv.cc (Finv): Likewise. + * src/f-log.cc (Flog): Likewise. + * src/f-lu.cc (Flu): Likewise. + * src/f-minmax.cc (Fmin, Fmax): Likewise. + * src/f-qr.cc (Fqr): Likewise. + * src/f-rand.cc (rand): Likewise. + * src/f-schur.cc (schur): Likewise. + * src/f-sort.cc (Fsort): Likewise. + * src/f-svd.cc (Fsvd): Likewise. + + * src/f-lu.cc (Flu): Handle case of nargout == 0 the same as + nargout == 1. + + * src/tree-const.h (force_numeric): Don't return type info. + * src/tc-rep.cc (tree_matrix::eval): Ditto. + * src/tree-expr.cc (tree_matrix::eval): Don't use return value + from tree_constant::force_numeric(). + + * src/tree-const.h (is_magic_colon): New function. + * src/tc-rep.h (is_magic_colon): New function. + + * src/load-save.cc (ascii_save_type): New function. + (save_binary_data, save_ascii_data, save_three_d): Don't use + values from tree_constant_rep::constant_type enum. Fail if write + is unsuccessful. Fail but don't panic if type is unrecognized. + (save_vars): Check error state after call to do_save(). + + * src/tc-rep.cc (isstr): Delete, since we have is_string. + * src/tree-const.h (isstr): Ditto. + * src/data.cc (Fisstr): Use is_string(), not isstr(). + +Sun Aug 14 16:12:10 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/load-save.cc (save_type): Add LS_U_INT, LS_CHAR and LS_FLOAT. + (get_save_type): Handle them. + (read_doubles, write_doubles): Likewise. + + * src/load-save.cc (get_floating_point_format): New function. + (read_mat_binary_data, read_binary_file_header): Use it. + + * src/lex.l: Combine {D}+\.{D}*{EXPON}?{Im} and {D}+{EXPON}?{Im} + patterns into the single pattern {D}+\.?{D}*{EXPON}?{Im} + Likewise, combine {D}+\.{D}*{EXPON}? and {D}+{EXPON}? into the + single pattern {D}+\.?{D}*{EXPON}? + ({D}+/\.[\*/\\^']): New pattern to force expressions like `1./m' + to be parsed the same as `1 ./ m'. + + * src/tree-expr.cc (do_lookup): Correctly set script_file_executed. + + * src/octave.cc (long_opts): Add --silent as an alias for --quiet, + and --ignore-init-file as an alias for --norc. + + * src/octave.cc (verbose_usage): Exit successfully to conform to + the GNU coding standards. + +Sat Aug 13 11:06:23 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/dirfns.cc (chdir): New alias for cd. + + * src/lex.l (")"): Set convert_spaces_to_comma. + + * src/*.cc: Use tree_constant::is_string(), not + tree_constant::is_string_type(). + + * src/f-balance.cc (Fbalance): Use is_string() rather than + checking const_type() against tree_constant_rep::string_constant. + + * src/tc-rep.h (tree_constant_rep::is_string_type): Delete. + * src/tree-const.h (tree_constant::is_string_type): Delete. + + * src/Makefile.in (%.def : %.cc): Complain if generated file is + empty. + + * configure.in (gcc_version): Set LDFLAGS to -g, not "-g -O". + + * src/lex.l (looks_like_bin_op): Also return true for things like + [ 1+ 2 ]. + + * src/data.cc (Feye, Fones): With no args, return 1.0. + (Fzeros): With no args, return 0.0. + + * src/Makefile.in (XALL_CXXFLAGS): ALL_CXXFLAGS without + -fextternal-templates. + (%.def : %.cc): Use it instead of ALL_CXXFLAGS. + + * configure.in: Don't use -O for compiling float-type.c. + + * libcruft/misc/Makefile.in (XCC): Use patsubst to delete any -O# + flags, not just -O. + +Fri Aug 12 18:20:35 1994 John Eaton (jwe@schoch.che.utexas.edu) + + Changes for binary load/save, and reading .mat files: + + * src/variables.cc (is_globally_visible): Declare extern, not + static. + + * src/user-prefs.cc (sv_default_save_format): New function. + * src/user-prefs.h (default_save_format): New field in + user_preferences struct. + src/variables.cc (install_builtin_variables): Add DEFVAR for + default_save_format. + + * src/tc-rep.h (tree_constant_rep::is_unknown, + tree_constant_rep::is_scalar, tree_constant_rep::is_matrix, + tree_constant_rep::is_complex_scalar, + tree_constant_rep::is_complex_matrix, + tree_constant_rep::is_string, tree_constant_rep::is_range): + New functions. + + * src/tree-const.h (tree_constant::is_unknown, + tree_constant::is_scalar, tree_constant::is_matrix, + tree_constant::is_complex_scalar, tree_constant::is_complex_matrix, + tree_constant::is_string, tree_constant::is_range): + New functions. + + * src/tc-rep.cc (tree_constant_rep::save, + tree_constant_rep::save_three_d): Move to load-save.cc and convert + to nonmember functions. + + * src/tree-const.h (tree_constant::save, + tree_constant::save_three_d): Delete functions. + + * src/tree-plot.cc (save_in_tmp_file): Call nonmember functions + save_ascii_file and save_three_d instead of tree_constant class + member functions. + + * src/symtab.cc (symbol_table::glob): New function. + (symbol_table::save, symbol_record::save, symbol_def::save): + Delete unneeded functions. + + * src/load-save.cc: New file, for load/save related functions + extracted from src/variables.cc and src/tc-rep.cc. + + * src/error.cc (verror): Don't print name if it is null. + +Tue Aug 9 14:31:43 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/file-io.cc (process_printf_format): Use + tree_constant::is_scalar_type() and is_string_type() functions + instead of comparing directly with elements of the + tree_constant_rep::constant_type enum. + * src/variables.cc (builtin_real_scalar_variable): Likewise. + (install_loaded_variable): Likewise. + + * src/tree-plot.cc (open_plot_stream): New function. + (send_to_plot_stream): Use it. Do our own check for replot with + nothing to plot. + (tree_plot_command::eval): Open plot stream before doing anything. + + * src/data.cc (check_dimensions): When changing negative + dimensions to zero, handle nr and nc separately. + +Mon Aug 8 20:18:17 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * variables.cc (is_valid_fcn): Use lookup_by_name() instead of + looking in the global symbol table directly. + + * variables.cc (load_variable): Move code here. + * src/tc-rep.cc (tree_constant_rep::load): From here. + * src/tree-const.h (tree_constant::load): Delete. + + * src/tree-plot.cc: Derive classes from tree_print_code and + implement print_code() member functions. + + * src/tree-plot.cc (subplot_list::print): New function. + (tree_plot_command::print): Use it, and don't crash if plot_list + is null. + + * scripts/axis.m: New function file. + +Sun Aug 7 17:06:16 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Check for size of short, int, and long. + + * float-type.c: New file. + * configure.in: Use it to determine the native floating point + format. + * Makefile.in: Add it to the list of files to distribute. + * acconfig.h (IEEE_BIG_ENDIAN, IEEE_LITTLE_ENDIAN, VAX_D_FLOAT, + VAX_G_FLOAT): Add #undefs. + +Sat Aug 6 18:23:47 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * config.guess: Update with new copy from gcc 2.6.0. + + * src/*.cc, src/*.h, src/*.l, src/*.y: Eliminate need for tree.h. + * src/Makefile.in (INCLUDES): Delete it from the list. + + * src/token.cc (token::token (double)): Handle saving original + text of constants for later use by print_code() functions. + (token::~token): Delete original text. + (token::text_rep): New function. + * src/lex.l: Save original text for NUM and IMAG_NUM tokens. + * src/parse.y: Likewise. + + * src/parse.y (yyerror): Use the pager. + + * src/tree-base.h (tree_print_code): New base class for trees and + lists of trees. + (tree): Derive from tree_print_code. + * src/tree-base.cc: New file, for tree_print_code functions, and + for initializing tree_print_code static members. + * src/tree-const.cc, src/tc-rep.cc, src/tree-plot.cc, + src/tree-expr.cc, src/tree-cmd.cc (all tree classes): + Provide print_code() member function. + * src/tree-misc.cc: Also derive list classes from tree-base.h and + provide print_code() member functions. + + * src/help.cc (Ftype, Fwhich): New functions. + + * src/octave-hist (do_history): Send history output through the + pager. + + * src/variables.cc (do_who, Fwhos): New functions. + + * src/tree-expr.h (tree_expression::in_parens): Declare here. + (tree_simple_assignment_expression::in_parens): Not here. + * src/parse.y (maybe_warn_assign_as_truth_value): Eliminate cast. + + * src/variables.cc (load_fcn_from_file, lookup, lookup_by_name): + New functions, extracted from tree_identifier class. + (gobble_leading_whitespace, is_function_file, parse_fcn_file): + Move here from tree-expr.cc. + * src/help.cc (Fhelp): Use lookup_by_name so that looking up + symbols is handled in a consistent way. + + * tree-expr.cc (tree_unary_expression::oper, + tree_binary_expression::oper, tree_prefix_expression::oper, + tree_postfix_expression::oper): New functions. + + * tc-rep.cc (valid_scalar_indices): Define here. + * tc-inlines.cc: Not here. + + * src/tree-const.h (tree_constant::stash_original_text): New + function. + * src/tc-rep.cc (tree_constant_rep::stash_original_text): Ditto. + (undo_string_escapes): Ditto. + + * src/tc-rep (tree_constant_rep::do_matrix_index): Don't just + return *this. + * src/tree-const.h (tree_constant::tree_constant (tree_constant_re&)): + Delete. + + * src/pager.cc (open_diary_file, close_diary_file, + maybe_write_to_diary_file, Fdiary): New functions. + (flush_output_to_pager): Call maybe_write_to_diary_file before + sending output to the screen. + * src/input.cc (octave_gets): Call maybe_write_to_diary file to + save the prompt and the user input. + * src/error.cc (verror): Use C++ streams, not C I/O functions. + Call maybe_write_to_diary file to save error messges too. + * src/octave.cc (clean_up_and_exit): Close diary file here. + + * src/octave.cc (main): Initialize pager first. + + * src/input.cc (get_user_input): Return empty matrix for no input. + + * src/tree-plot.cc: Include readline/tilde.h instead of declaring + tilde_expand() directly. + * src/utils.cc: Likewise. + + * src/tree-plot.cc (tree_plot_command::print_code): New function. + * src/tree-const.h (tree_constant::print_code): Likewise. + + * src/tree-expr.h (tree_simple_assignment_expression::ans_ass): + New data member to flag assignments to ans. + * src/tree-expr.cc (tree_identifier::eval): Set it when + constructing assignments to ans. + * src/parse.y (maybe_convert_to_ans_assign): Likewise. + + * src/tree-expr.h (tree_simple_assignment_expression::preserve): + New data member to allow preserving left hand side args that + shouldn't be deleted in some cases (ugh). + * src/tree-expr.cc (tree_multi_assignment_expression::eval): + Create assignment with preserve flag set. + +Wed Aug 3 14:27:25 1994 John Eaton (jwe@schoch.che.utexas.edu) + + Yet another massive reorganization of sources, once again + hopefully for the better. A fair amount of work is not detailed + here, but these are the major points. The grammar file and the + derivation of the tree classes are somewhat cleaner now. + + * src/parse.y: Cope with changes to derivation scheme. + + * src/tree-misc.cc: New file. + (tree_statement, tree_global): New classes. + (tree_global_init_list): New class, derived from SLList for the + list of expressions in a global command. + * src/tree-cmd.cc (tree_global_command): Use tree_global_init_list. + + * src/tree-misc.cc (tree_argument_list): Move here from + tree-expr.cc, and derive from SLList instead of tree. + (tree_parameter_list): Likewise. + (tree_return_list): Likewise. + + * src/tree-cmd.cc (tree_command_list): Delete class. + * src/tree-misc.cc (tree_statement_list): New class for keeping a + list of commands or expressions to evaluate. Derive from SLList, + not tree. + + * src/tree-plot.cc (subplot_list, plot_limits, plot_range, + subplot_using, subplot_style): Rename from tree_*, and + don't derive from tree class. + + * src/tree-plot.cc: Eliminate eval member function for classes not + derived from tree class. + + * src/tree-plot.cc, src/tree-cmd.cc: For classes derived from + tree-command, the eval() member function is now void eval (void). + + * src/tree-base.h (tree::tree): New constructor, to initialize the + line and column info. For all classes that are derived from the + tree class, use it instead of manipulating the data directly. + (line_num, column_num): Make private. + + * src/tree-expr.cc (tree_simple_assignment_expression::preserve): + New data member, set in constructors and used by the destructor + when the left-hand side of the expression should not be deleted + (as for some temporary assignments not constructed in the parser). + + * src/tree-expr.h (tree_expression::type) Rename and move here from + tree-base.h. Change all uses. + (tree_matrix::dir): Likewise. Change all uses. + + * src/utils.cc (make_argv): Stash function name in argv[0]. + + * src/octave.cc (global_command): Declare as tree_statement_list, + not tree. + + * src/parse.y (make_binary_op, make_unary_op, make_prefix_op, + make_postfix_op): New functions. + + * src/parse.y (GLOBAL): Make it a tok_val type. + * src/lex.l (is_keyword): Give GLOBAL a value. + +Mon Aug 1 22:37:22 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/lex.l (grab_help_text): Unput the last character read. + +Sun Jul 31 21:17:07 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/pr-output.cc (set_format (double, int&)): Avoid calling + log10 for Inf and NaN. + +Fri Jul 29 16:08:32 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/octave.cc (reading_startup_message_printed): New flag. + (parse_and_execute): New arg, verbose. If true, print name of + file as it is read. + (execute_startup_files): Don't print message if + inhibit_startup_message is true. + (main): Move startup message before reading init files. + +Thu Jul 28 00:25:42 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/Makefile.in (MATRIX_INC): Delete CmplxColVec.h from list. + + * src/symtab.cc (symbol_table::rename): New function. + * src/parse.y (func_def2): Use it instead of tree_identifier::rename. + * src/tree-expr.cc (tree_identifier::rename): Delete unused function. + + * src/tree-expr.cc (tree_identifier::load_fcn_from_file): New function. + (tree_identifier::do_lookup): Use it instead of parse_fcn_file. + * src/variables.cc (is_valid_function): Ditto. + * src/help.cc (Fhelp): Ditto. + + * src/utils.cc (oct_file_in_path): New function. + +Wed Jul 27 08:59:32 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree-expr.cc (tree_identifier::parse_fcn_file): Combine + three functions into one. + + * src/utils.cc: Delete uneeded declaration of ioctl(). + * src/sysdep.cc: Likewise. + + * install.sh: New file, from autoconf distribution. + * Makefile.in (DISTFILES): Distribute it. + +Tue Jul 26 16:08:58 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * scripts/Makefile.in (DISTDIRS): New variable, for directories + below scripts to distribute. + (dist): Handle distributing whole directories named by $(DISTDIRS). + (local-dist): Ditto. + +Mon Jul 25 12:57:09 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/CmplxQRP.cc: Provide declaration for zungqr. + * liboctave/dbleQRP.cc: Provide declaration for dorgqr. + + * src/Makefile.in (dist): Also remove y.output and defaults.h. + (local-dist): Ditto. + (realclean): Ditto. + + * src/oct-obj.h (Octave_object::Octave_object (int)): Make + private, to avoid problems with different meanings of + Octave_object (int) and Octave_object (double) constructors. + + * scripts/amr-image: New files for image processing from Tony + Richardson. These are not in the default octave LOADPATH yet. + See the README file in the amr-image directory for more info on + how to use them. + + * src/octave.cc (Fshell_cmd): Restore accidentally deleted + function. + + * scripts/conv-amr.m, scripts/deconv-amr.m, scripts/roots-amr.m, + scripts/poly-amr.m, scripts/roots-tuwien.m, scripts/conv-tuwien.m, + scripts/deconv-tuwien.m, scripts/poly-tuwien.m: + New files. + XXX FIXME XXX -- For each of these functions, either one of the + versions will need to be selected, or they will need to be merged + before the next release. + + * scripts/null.m, scripts/orth.m, scripts/fft2.m, scripts/ifft2.m, + scripts/filter.m, scripts/compan.m, scripts/polyderiv.m, + scripts/polyinteg.m, scripts/polyreduce.m, scripts/polyval.m, + scripts/polyvalm.m, scripts/postpad.m, scripts/prepad.m, + scripts/residue.m, scripts/sinc.m, scripts/freqz.m, + scripts/complement.m, scripts/intersection.m, + scripts/create_set.m, scripts/union.m: + New files. + + * scripts/hilb.m: Eliminate inner loop, for speed. From + romolo@URSAMAJOR.ENG.UNIPR.IT (Romolo Manfredini). + +Sun Jul 24 22:08:48 1994 Castor Fu (castor@drizzle.stanford.edu) + + * libcruft/ranlib/genf.f (genf): Use 1.2E-38 instead of 1.0E-38 + when checking to see if generated numbers will cause overflow. + This helps DEC's f77 compiler on the Alpha, which refuses to + generate denormalized constants. + * libcruft/ranlib/gennf.f (gennf): Likewise. + +Fri Jul 22 10:27:00 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/Makefile.in (DEF_FILES): Depend on defun header files too. + +Thu Jul 21 14:40:30 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/NLFunc.h (nonlinear_fcn): Declare as pointer to + function taking const ColumnVector arg. + (jacobian_fcn): Ditto. + + * src/defun-int.h (DEFINE_ARGV): Declare and define save_argc and + save_argv for functions that mess with argc and argv directly. + (DELETE_ARGV): Use save_argc and save_argv instead of argc and argv. + + * src/f-lsode.cc (ODE_OPTIONS): Add const qualifier for string elts. + (print_lsode_option_list): Declare keyword as const char *. + * src/f-npsol.cc, src/f-qpsol.cc, src/f-dassl.cc, src/f-quad.cc: + Likewise, for corresponding structs and functions. + + * liboctave/dbleSVD.h (SVD::type): New enum, for choosing type of + factorization. + * liboctave/CmplxSVD.cc (SVD::SVD): Add new optional arg for type. + (init): Handle case of type == SVD::economy. + * liboctave/dbleSVD.cc: Likewise. + + QR changes from R. Bruce Tenison (btenison@eng.auburn.edu) adapted + for new way of defining builtin functions: + + * doc/linalg.texi: Changed QR description to include QRP + factorization + + * src/f-qr.cc (Fqr): Handle permuted and economy QR + factorizations. Handle case of 1 output arg. + + * liboctave/Makefile.in (MATRIX_INC, MATRIX_SRC): Add new QRP files. + + * liboctave/dbleQRP.h, liboctave/dbleQRP.cc, liboctave/CmplxQRP.h, + liboctave/CmplxQRP.h: New files, for QR with pivoting. + + * liboctave/dbleQR.h (QR::type): New enum, for choosing type of + factorization. + * liboctave/CmplxQR.cc (QR): Add new optional arg for type. + Handle case of type == SVD::economy and SVD::raw. + * liboctave/dbleQR.cc (QR): Likewise. + + * libcruft/lapack/dgeqpf.f: New file. + * libcruft/lapack/zgeqpf.f: Ditto. + +Wed Jul 20 13:12:55 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/*.cc, liboctave/*.h: Various cleanups to remove use of + NULL. Only mention default argument values in function + declarations, not in their definitions (required for gcc 2.6.x). + + * configure.in: If configuring for alpha-dec-osf, check for sgtty + first. If not found, go ahead and check for Posix terminal driver. + +Tue Jul 19 09:25:45 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/mx-defs.h (FILE): Don't declare as struct FILE just to + avoid including stdio.h. + * liboctave/dMatrix.cc: Do include stdio.h here. + + * liboctave matrix classes: Declare operator>> correctly, and + return istream object. Get friend stuff right. + + * liboctave/DAE.cc (DAE::integrate): To see if the user provided a + Jacobian function, call DAEFunc::jacobian_function (). + + * liboctave/DAE.cc (user_fun, user_jac): Qualify with class name. + * liboctave/ODE.cc (user_fun, user_jac): Ditto. + + * liboctave/DAFunc.h (DAEJac): Declare inside class. + (DAERHSFunc, DAEJacFunc): Define types inside class. + * liboctave/ODEFunc.h (ODERHSFunc, ODEJacFunc) Likewise. + + Massive reorganization of sources, hopefully for the better. + A fair amount of work is not detailed here, but these are the + major points... + + * src/symtab.h (symbol_def::TYPE) Add new elements for recording + whether a symbol is a text function or mapper function. + * src/symtab.cc (symbol_def::is_text_function, + symbol_record::is_text_function, symbol_def::is_mapper_function, + symbol_record::is_mapper_function): New functions. + Modify existing is_* functions to cope with these changes. + (symbol_def::symbol_def (tree_builtin*, unsigned)): New 2nd arg. + (symbol_def::symbol_def (tree_function*, unsigned)): Ditto + (symbol_def::define (tree_builtin*, unsigned)): Ditto. + (symbol_def::define (tree_function*, unsigned)): Ditto. + * src/variables.cc (is_text_function_name): Use the new symbol + table functions, since we can no longer tell by looking in a + simple list. + + * tree-expr.cc (class tree_builtin): Text functions are no longer + handled as a special case here. + + * src/sysdep.cc (octave_ieee_init): Special case Alpha for + initializing Inf and NaN. + + * src/tc-rep.cc: Use const in more places. + + * src/data.cc src/timefns.cc, src/dirfns.cc, src/dirfns.h: New + files. + + * src/*.cc, src/*.y, src/*.l, src/*.h: Various cleanups to remove + use of NULL. Only mention default argument values in function + declarations, not in their definitions (required for gcc 2.6.x). + + * src/g-builtins.cc, src/g-builtins.h, src/t-builtins.cc + src/t-builtins.h: Removed. Functions moved to various other + files, where they more logically belong. + * src/utils.cc: Likewise, various functions moved to other files, + where they more logically belong. + * src/mappers.cc (install_mapper_functions): Declare all mapper + functions here with the new DEFUN_MAPPER() macro. + * src/variables.cc (install_builtin_variables): Declare all + builtin variables here, with the new DEFVAR() macro. + + * src/f-*.h: Deleted. + * src/f-*.cc: Delete #ifdef WITH_DLD code and use DEFUN_DLD() + instead to declare builtin functions that will be dynamically + loaded. Give all functions a uniform return type and argument + list. + + * src/mkdefs, src/mkbuiltins: New scripts. + * src/Makefile.in: Use them to generate builtins.cc automatically + from source files that use DEFUN. + + * src/defun.h, src/defun-dld.h, src/defun-int.h: New files, to + define DEFUN() and DEFVAR() macros to make it possible to define + functions together with their help strings in one place. The code + to install functions in the symbol table is now generated by + mkbuiltins. + + * configure.in (LIBOCTDLD): New variable to define. + Only call AC_VERBOSE() for DYNAMIC_LD_OBJ, DLD_DIR, LIBDLD, + LIBOCTDLD, and LD_STATIC_FLAG if they are set. + * move-if-change: Move here, from src/move-if-change. + * Makeconf.in (%.d: %.cc): Echo simple message instead of the + commands actually executed. + (%.d: %.c): Likewise. + + * src/unwind-prot.h: Include stddef.h, for size_t. + +Tue Jul 12 12:51:25 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/f-eval.cc, src/f-fill.cc, src/f-find.cc, src/f-input.cc, + src/f-minmax.cc, src/f-log.cc, src/f-sort.cc, src/f-eval.h, + src/f-fill.h, src/f-find.h, src/f-input.h, src/f-log.h, + src/f-minmax.h, src/f-sort.h: New files, for functions extracted + from tree-const.cc. + * src/Makefile.in: Add them to the list of INCLUDES, SOURCES, and + OBJECTS. + + * src/f-*.cc: Clean up things a bit by letting the compiler + generate the tree_constant constructor calls. + + * src/unwind-prot.h: Include stddef.h, for size_t. + + * src/oct-obj.h (Octave_object (int, const tree_constant&)): + New constructor form. + * src/tree-const.cc (find_nonzero_elem_idx): Rewrite to handle 2 + and 3 return values. + + * src/g-builtins.cc (builtin_find): Check nargout too. + * src/builtins.cc (general_functions): Fix help message for find. + +Mon Jul 11 13:36:15 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tc-rep.cc (tree_constant_rep::convert_to_row_or_column_vector): + If already have a row or column vector, return without doing + anything. + +Sat Jul 9 01:02:51 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/oct-obj.h (Octave_object): Make it a class, not just a + typedef. + + * src/tree-expr.h (tree_function::curr_va_arg_number): Rename from + curr_arg_number. + (tree_function::varargs_ok): Delete unused member variable. + * src/tree-expr.cc (tree_function::octave_va_arg): Increment + cur_va_arg_number before indexing args_passed. + (tree_function::octave_va_start): Set curr_va_arg_number to + num_args_passed, not num_args_passed + 1. + (tree_function::takes_varargs): Call param_list::takes_varargs, + don't just return varargs_ok. + (tree_function::define_param_list): If param_list is not NULL, set + num_named_args and curr_va_arg_number even if function doesn't + take varargs. + + * src/tree-expr.cc (tree_identifier::eval (int)): Only pass empty + arg list if evaluating a constant. + (tree_function::eval (int)): Always pass least one arg. + + * Makeconf.in (TMP_IF_1): Add `-I../src'. + (TMP_IF_2): Add `-I$(TOPDIR)/src' and `-I$(top_srcdir)/src'. + + * src/t-builtins.h, src/variables.h, src/file-io.h, src/f-syl.h, + src/f-svd.h, src/f-schur.h, src/f-rand.h, src/f-qzval.h, + src/f-quad.h, src/f-qpsol.h, src/f-npsol.h, src/f-lsode.h, + src/f-lpsolve.h, src/f-hess.h, src/f-givens.h, src/f-fsqp.h, + src/f-fsolve.h, src/f-eig.h, src/f-dassl.h, src/f-colloc.h, + src/f-balance.h, src/dynamic-ld.h, src/builtins.cc, + src/tree-const.cc, src/file-io.cc, src/f-syl.cc, src/f-svd.cc, + src/f-schur.cc, src/f-rand.cc, src/f-qzval.cc, src/f-qr.cc, + src/f-qpsol.cc, src/f-lu.cc, src/f-lpsolve.cc, src/f-inv.cc, + src/f-ifft.cc, src/f-hess.cc, src/f-givens.cc, src/f-fsqp.cc, + src/f-fft.cc, src/f-expm.cc, src/f-eig.cc, src/f-det.cc, + src/f-colloc.cc, src/f-chol.cc, src/f-balance.cc, + src/dynamic-ld.cc, src/f-dassl.cc, src/f-fsolve.cc, + src/f-lsode.cc, src/f-npsol.cc, src/f-quad.cc, src/tree-expr.h, + src/tc-rep.cc, src/tc-inlines.cc, src/tc-rep.h, src/tree-const.h, + src/g-builtins.cc, src/g-builtins.h, src/tree-expr.cc, + src/variables.cc: Delete nargin in favor of using args.length(). + + * configure.in: Check for struct exception in math.h. + * src/sysdep.cc (matherr): New function. + +Fri Jul 8 15:31:53 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tc-rep.cc: Include arith-ops.h. + (tree_constant_rep::do_scalar_index): Use `invalid', not `illegal' + in messages. + + * src/oct-obj.h: Protect contents from multiple inclusion. + + * src/tree-const.h, src/tree-expr.h: Don't include Array.h. + + * src/parse.y (param_list): Allow ELLIPSIS by itself. + * src/tree-expr.cc (tree_identifier::mark_varargs_only, + tree_identifier::vararg_only): New functions. + (tree_function::eval): Only call define_from_arg_vector if + param_list is non-null and not marked as varargs_only. + + * src/f-balance.h, src/f-chol.h, src/f-colloc.h, src/f-dassl.h, + src/f-eig.h, src/f-fsolve.h, src/f-fsqp.h, src/f-givens.h, + src/f-hess.h, src/f-lpsolve.h, src/f-lsode.h, src/f-lu.h, + src/f-npsol.h, src/f-qpsol.h, src/f-qr.h, src/f-quad.h, + src/f-qzval.h, src/f-rand.h, src/f-schur.h, src/f-svd.h, + src/f-syl.h: Include oct-obj.h, not tree-const.h to get + declaration of Octave_object. + + * src/f-givens.cc (givens): Handle case of nargout == 0. + Use `invalid', not `illegal' in messages. + * src/f-balance.cc (balance): Likewise. + + * src/f-balance.cc (balance): Print warning about two output + arguments for complex-valued case too. + + * src/tc-rep.cc: Include arith-ops.h. + +Thu Jul 7 20:54:12 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/parse.y (identifier): Add missing semicolon. + (param_list): Ditto. + + * src/f-svd.cc (svd): Handle nargout == 0 the same as nargout == 1. + * src/f-schur.cc (schur): Likewise. + * src/f-hess.cc (hess): Likewise. + * src/f-eig.cc (eig): Likewise. + * src/f-syl.cc (syl): Likewise. + * src/f-qzval.cc (qzvalue): Likewise. + * src/f-npsol.cc (npsol): Likewise. + * src/f-qpsol.cc (qpsol): Likewise. + * src/f-givens.cc (givens): Likewise. + * src/f-fsolve.cc (fsolve): Likewise. + * src/f-balance.cc (balance): Likewise. + * src/file-io.cc (process_scanf_format): Likewise. + * src/g-builtins.cc (builtin_balance, builtin_chol, builtin_dassl, + builtin_eig, builtin_fsolve, builtin_fsqp, builtin_lsode, + builtin_max, builtin_min, builtin_npsol, builtin_qpsol, + builtin_quad, builtin_rand, builtin_size, builtin_sort, + builtin_svd, builtin_schur, builtin_syl, builtin_givens, + builtin_hess): Likewise. + * src/tree-const.cc (vector_of_empties, column_max, column_min): + Likewise. + + * src/variables.h, src/symtab.h: Include builtins.h for typedefs. + + * src/tree-expr.cc(tree_multi_assignment_expression::eval): Rework + handling of undefined values returned from functions. + + * src/tree-expr.cc (tree_identifier::is_defined): New function. + (tree_parameter_list::is_defined): New function. + (tree_parameter_list::convert_to_const_vector): Use it to avoid + evaluating undefined objects. + + * src/f-balance.cc, src/f-eig.h, src/f-hess.cc, src/f-lu.h, + src/f-rand.cc, src/f-balance.h, src/f-expm.cc, src/f-hess.h, + src/f-npsol.cc, src/f-rand.h, src/f-chol.cc, src/f-expm.h, + src/f-ifft.cc, src/f-npsol.h, src/f-schur.cc, src/f-chol.h, + src/f-fft.cc, src/f-ifft.h, src/f-qpsol.cc, src/f-schur.h, + src/f-colloc.cc, src/f-fft.h, src/f-inv.cc, src/f-qpsol.h, + src/f-svd.cc, src/f-colloc.h, src/f-fsolve.cc, src/f-inv.h, + src/f-qr.cc, src/f-svd.h, src/f-dassl.cc, src/f-fsolve.h, + src/f-lpsolve.cc, src/f-qr.h, src/f-syl.cc, src/f-dassl.h, + src/f-fsqp.cc, src/f-lpsolve.h, src/f-quad.cc, src/f-syl.h, + src/f-det.cc, src/f-fsqp.h, src/f-lsode.cc, src/f-quad.h, + src/f-det.h, src/f-givens.cc, src/f-lsode.h, src/f-qzval.cc, + src/f-eig.cc, src/f-givens.h, src/f-lu.cc, src/f-qzval.h, + src/dynamic-ld.cc, src/dynamic-ld.h, src/file-io.cc, + src/file-io.h, src/t-biultins.cc, src/t-builtins.h, + src/tree-expr.cc, src/tree-expr.h, src/tree-const.cc, + src/tree-const.h, src/tc-inlines.cc, src/tc-rep.cc, src/tc-rep.h, + src/g-builtins.cc, src/g-builtins.h: + Cope with inital round of Octave_object changes. + + * src/oct-obj.h: New file for Octave_object typedef. + * src/dynamic-ld.h, src/file-io.h, src/tree-const.h, + src/tree-expr.h: Include it. + * src/Makefile.in (INCLUDES): Add it to the list. + +Wed Jul 6 09:28:28 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * libocsrc/tree-const.h: + + * src/parse.y (maybe_convert_to_ans_assign, + maybe_warn_assign_as_truth_value): Pass tree_expression*, not tree*. + (ans_expression, expression, simple_expr, simple_expr1, title): + Declare as tree_expression_type, not tree_type. + (opt_list): Add missing semicolon. + + * src/tc-rep.h, src/tc-rep.cc: New files, extracted from + tree-const.h and tree-const.cc, for the tree_constant_rep class. + Leave most friend functions behind, in tree-const.h. + Don't declare do_binary_op or do_unary_op as friends. + + * src/lex.l: Include tree-plot.h and tree-const.h. + + * src/variables.cc (takes_correct_nargs): Pass tree_fvc* not tree*. + * src/variables.cc (is_valid_function): Return tree_fvc* not tree*. + Change all callers. + + * src/symtab.h, symtab.cc: Change declaration of symbol definition to + be tree_fvc* instead of tree*. Change all callers. + + * src/f-dassl.cc (dassl_fcn): Declare as tree_fvc*, not tree*. + * src/f-quad.cc (quad_fcn): Likewise. + * src/f-lsode.cc (lsode_fcn): Likewise. + * src/f-fsolve.cc (fsolve_fcn): Likewise. + * src/f-npsol.cc (npsol_fcn, npsol_constraints): Likewise. + + * src/tree-plot.cc: All operations are now on tree_expression types, + not tree types. + + * src/tree-expr.h (tree_matrix): Derive from tree_expression, not tree. + + * src/tree-expr.h (tree_builtin, tree_function, tree_identifier): + Derive from tree_fvc, not tree. + * src/tree-const.h (class tree_constant): Likewise. + + * src/tree-expr.h (is_identifier, is_index_expression, + is_assignment_expression, is_prefix_expression, + mark_for_possible_ans_assign, eval (with args)): Declare in + tree_expression class, not tree class. + + * src/tree-expr.h (tree_fvc): New class, derived from + tree_expression, to provide a connection between functions, + variables, and constants. + (is_constant, assign, name, bump_value, max_expected_args, + fcn_file_name, time_parsed, is_system_fcn_file, save): Declare + in tree_fvc class, not in tree class. + + * src/tree.h: Simply include tree-expr.h and tree-cmd.h. + * src/tree-expr.h, tree-expr.cc: New files, extracted from tree.h + and tree.cc for classes derived from tree_expression, plus some + helper classes. + * src/tree-cmd.h, tree-cmd.cc: Likewise, for classes derived from + tree_command. + + * src/tree.cc (eval (int, int)): Merge with eval (int, + tree_constant*, int, int) by rearranging order of args and using + default arg values. Change all callers. + +Tue Jul 5 14:33:33 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * doc/Makefile.in (refcard.dvi): Run TeX on $(srcdir)/refcard.tex, + not just refcard.tex. + (refcard-local.tex): Likewise, for the local version. + + * src/tree-const.cc (tree_constant_rep::do_index): Check for empty + matrix here. + (tree_constant_rep::do_vector_index) Not here. + +Thu Jun 30 09:41:03 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/g-builtins.cc (builtin_shell_command): Only take one + argument and return [status, output]. + * src/procstream.cc (procstreambase::close): Return process exit + status. + + * src/tree.cc (tree_builtin::eval (int)): Handle new style of + calling text functions. + (tree_builtin::eval (int, int): Likewise. + (tree_builtin::eval (tree_constant*, int, int, int): Likewise. + (tree_identifier::eval (tree_constant*, int, int, int)): Don't + count the output arguments that we create automatically (ans) when + figuring nargout. + (tree_identifier::eval (int)): Likewise. + + * src/tree-const.cc: Delete text-style eval() functions. + * src/tree.cc: Ditto. + + * src/tree-const.h: Change typedef of Text_fcn to return a pointer + to a tree_constant, and to include the number of output arguments + in the parameter list. + * src/t-builtins.h: Change declarations of all builtin text-style + functions to match. + * src/t-builtins.cc: Change definitions too. + + * src/parse.y (word_list): Build an argument_list, not a word_list. + (word_list_command): Create an index_expression, not a + word_list_command. + * src/tree.cc (tree_word_list): Delete unneeded class. + (tree_word_list_command): Likewise. + + * src/tc-extras.cc (get_dimensions): For one-arg version, expect + 2-element vector or scalar specifying dimensions. Don't simply + use the dimensions of a matrix arg. + +Wed Jun 29 09:52:15 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/f-det.cc (determinant): Return 0 if matrix is singular to + machine precision. + + * liboctave/dMatrix.cc (Matrix::inverse): Declare rcond as + volatile to prevent optimization of the expression + `rcond + 1.0 == 1.0'. + (Matrix::determinant): Ditto. + (Matrix::solve): Ditto. + * liboctave/CMatrix.cc (ComplexMatrix::inverse): Ditto. + (ComplexMatrix::determinant): Ditto. + (ComplexMatrix::solve): Ditto. + +Tue Jun 28 10:53:31 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/utils.cc (default_info_file): Add directory separator when + appending "octave.info". + + * src/tree-plot.cc (plot_line_count): Make global. + * src/utils.cc (send_to_plot_stream): If the plot stream is not + open, set plot_line_count to zero. + (close_plot_stream): Likewise, set it to zero when closing the + stream. + + * src/parse.y (plot_command): Allow replot without args. + + * src/tree-plot.cc (clear_before_plotting): New global variable. + (tree_plot_command::eval): Use it to handle hold on/off. + * src/t-builtins.cc (builtin_hold): New function. + * src/builtins.cc (text_functions): Add it to the list. + +Fri Jun 24 11:08:36 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/token.h (plot_tok_type): Add new field, replot. + * src/lex.l (is_keyword): Handle replot here. + * src/parse.y (plot_command): And here. + * src/g-builtins.cc (builtin_replot): Not here. + * src/builtins.cc (general_functions): Or here. + +Tue Jun 21 10:47:08 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/g-builtins.cc (builtin_kbhit): New function. + * src/builtins.cc (general_functions): Add it to the list. + + * src/tree-const.cc (tree_constant_rep::rows (void)): For strings + and ranges, only return 1 if the string or range is not empty. + +Thu Jun 9 20:42:06 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree.cc (tree_builtin::eval (int)): Delete ancient code that + eval()'d the return value. + (tree_builtin::eval (int, int)): Likewise. + (tree_builtin::eval (int, char**, int)): Likewise. + (tree_builtin::eval (tree_constant*, int, int, int)): Likewise. + (tree_function::eval (tree_constant*, int, int, int)): Likewise. + (tree_colon_expression::eval (int)): Likewise. + (tree_unary_expression::eval (int)): Likewise. + (tree_binary_expression::eval (int)): Likewise. + +Mon Jun 6 03:48:32 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/file-io.cc (fread_internal): Make it work. + (fwrite_internal): Likewise. + (num_items_remaining): Renamed from get_whats_left(). Don't pass + nr/nc as last arg, simply return the number of items of size that + are left to read. + (get_size_conv): Delete unnecessary function. + * liboctave/dMatrix.cc (Matrix::read): Make it work. + (Matrix::write): Likewise. + * liboctave/dMatrix.h (conversion): Delete unecessary enum. + + * src/sysdep.cc: Include <math.h>. + (octave_ieee_init): Cast return value of infinity() and + quiet_nan() to double. + +Sun Jun 5 14:35:32 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Makeconf.in (getversion): Get everything between the double + quotes, not just numbers and periods. + + * src/tree-const.cc (tree_constant_rep::do_scalar_assignment): Correct + typo in last change. + + * src/parse.y: Include tree-plot.h and tree-const.h. + + * src/Makefile.in (SOURCES): Delete tc-assign.cc and tc-index.cc + (INCLUDES): Add tree-plot.h. + + * src/tree-plot.h: New file. Declare plotting classes here. + * src/tree.h: Not here. + + * src/tc-index.cc, tc-assign.cc: Delete unnecessary files. + + * src/tc-extras.cc: Include EIG.h + + * src/tree-const.cc (tree_constant_rep::tree_constant_rep (RowVector&, + int)): Provide default value for int arg. + (tree_constant_rep::tree_constant_rep (ColumnwVector&, int)): Ditto + (tree_constant_rep::tree_constant_rep (ComplexRowVector&, int)): Ditto + (tree_constant_rep::tree_constant_rep (ComplexColumnwVector&, int)): + Ditto. + (tree_constant_rep::tree_constant_rep (RowVector&)): Delete, now + handled by corresponding two arg constructor. + (tree_constant_rep::tree_constant_rep (ColumnwVector&)): Likewise. + (tree_constant_rep::tree_constant_rep (ComplexRowVector&)): Likewise. + (tree_constant_rep::tree_constant_rep (ComplexColumnwVector&)): + Likewise. + + * src/tree-const.cc: Add pragma implementation. Merge in contents of + tc-index.cc and tc-assign.cc so that the pragma interface/pragma + implementation hack will do some good. + * src/tree-const.h: Include mx-base.h, not Matrix.h. Add pragma + interface. Delete unnecessary constructor declarations. + + * src/unwind-prot.h, src/unwind-prot.cc (unwind_elem_tag): Rename + from _tag. + (unwind_elem_fptr): Rename from _fptr. + (unwind_elem_ptr): Rename from _ptr. + + * NLConst.cc (NLConst::NLConst): Pass vector args by reference. + + * src/procstream.h, src/procstream.cc, src/idx-vector.h, + src/idx-vector.cc, src/token.h, src/token.cc, src/unwind-prot.h, + src/unwind-prot.cc, src/symtab.h, src/symtab.cc, src/tree.h, + src/tree.cc, liboctave/Range.h, liboctave/Range.cc, + liboctave/QLD.h, liboctave/QLD.cc, liboctave/ODE.h, + liboctave/ODE.cc, liboctave/Quad.h, liboctave/Quad.cc, + liboctave/Objective.h, liboctave/Objective.cc, liboctave/NPSOL.h, + liboctave/NPSOl.cc, liboctave/NLFunc.h, liboctave/NLFunc.cc, + liboctave/Bounds.h, liboctave/Bounds.cc, liboctave/QP.h, + liboctave/QP.cc, liboctave/NLConst.cc, liboctave/LinConst.cc, + liboctave/LPsolve.cc, liboctave/LP.cc, liboctave/FSQP.cc, + liboctave/FEGrid.cc, liboctave/QPSOL.cc, liboctave/CollocWt.cc, + liboctave/DAEFunc.cc, liboctave/DAEFunc.h, liboctave/DAE.cc, + liboctave/NLEqn.cc, liboctave/ODEFunc.cc, liboctave/QPSOL.h, + liboctave/ODEFunc.h, liboctave/NLP.h, liboctave/NLEqn.h, + liboctave/NLConst.h, liboctave/LinConst.h, liboctave/LPsolve.h, + liboctave/LP.h, liboctave/FSQP.h, liboctave/FEGrid.h, + liboctave/DAE.h, liboctave/CollocWt.h: + Add pragma interface/implementation. + + * src/f-svd.cc, src/f-schur.cc, src/f-qr.cc, src/f-lu.cc, + src/f-hess.cc, src/f-det.cc, src/f-chol.cc, src/f-qzval.cc, + src/f-inv.cc, src/f-ifft.cc, src/f-givens.cc, src/f-fft.cc, + src/f-balance.cc, src/f-expm.cc, src/f-fsqp.cc, src/f-syl.cc, + src/xdiv.cc, src/xpow.cc, src/idx-vector.cc, src/pr-output.cc, + src/unwind-prot.cc, src/file-io.cc, liboctave/Bounds.h, + liboctave/CollocWt.h, liboctave/DAE.h, liboctave/EIG.h, + liboctave/FEGrid.h, liboctave/LP.h, liboctave/LPsolve.cc, + liboctave/LinConst.h, liboctave/NLEqn.cc, liboctave/NLEqn.h, + liboctave/NLP.h, liboctave/NPSOL.cc, liboctave/NPSOL.h, + liboctave/ODE.h, liboctave/Objective.h, liboctave/QLD.cc, + liboctave/QP.h, liboctave/QPSOL.h, liboctave/Quad.h: + Instead of including Matrix.h, only include the individual + matrix/vector/etc. header files that are needed. + + * liboctave/QLD.cc, liboctave/ODE.cc, liboctave/NLFunc.cc, + liboctave/DAEFunc.cc, liboctave/DAE.cc, liboctave/NLEqn.cc, + liboctave/ODEFunc.cc: + Use 0, not NULL. + + * liboctave/mx-inlines.cc: Include Complex.h. + + * liboctave/mx-kludge.h: Don't enclose contents in extern "C++". + + * liboctave/Matrix.h: Simply include mx-base.h and mx-ext.h. + + * liboctave/mx-base.h: New file, includes all basic matrix/vector + header files. + * liboctave/mx-ext.h: New file, includes all extra matrix/vector + related header files. + * liboctave/mx-defs.h: New file, for matrix/vector related + defines. Also provides forward declarations for all matrix/vector + classes. + + * liboctave/Makefile.in: Cope with new files. + + * liboctave/CmplxAEPBAL.cc, liboctave/CmplxDET.h, + liboctave/CmplxQR.cc, liboctave/CmplxSVD.h, liboctave/dbleDET.cc, + liboctave/dbleHESS.h, liboctave/dbleSCHUR.cc, + liboctave/CmplxAEPBAL.h, liboctave/CmplxHESS.cc, + liboctave/CmplxQR.h, liboctave/dbleAEPBAL.cc, liboctave/dbleDET.h, + liboctave/dbleLU.cc, liboctave/dbleSCHUR.h, + liboctave/CmplxCHOL.cc, liboctave/CmplxHESS.h, + liboctave/CmplxSCHUR.cc, liboctave/dbleAEPBAL.h, + liboctave/dbleGEPBAL.cc, liboctave/dbleLU.h, liboctave/dbleSVD.cc, + liboctave/CmplxCHOL.h, liboctave/CmplxLU.cc, + liboctave/CmplxSCHUR.h, liboctave/dbleCHOL.cc + liboctave/dbleGEPBAL.h, liboctave/dbleQR.cc, liboctave/dbleSVD.h, + liboctave/CmplxDET.cc, liboctave/CmplxLU.h, liboctave/CmplxSVD.cc, + liboctave/dbleCHOL.h, liboctave/dbleHESS.cc, liboctave/dbleQR.h, + liboctave/EIG.h, liboctave/EIG.cc: + New files, extracted from Matrix-ext.cc, in an attempt to allow + effective use of pragma interface/implementation and make + generated code somewhat smaller. + * liboctave/dColVector.cc liboctave/CColVector.cc: Likewise, from + ColVector.{cc,h}. + * liboctave/dRowVector.cc liboctave/CRowVector.cc: Likewise, from + RowVector.{cc,h}. + * liboctave/dMatrix.cc liboctave/CMatrix.cc: Likewise, from + Matrix.{cc,h}. + * liboctave/dDiagMatrix.cc liboctave/CDiagMatrix.cc: Likewise, + from DiagMatrix.{cc,h}. + +Fri Jun 3 15:32:53 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/Array.h: Include assert.h. + (DiagArray<T>::operator T ()): [! _AIX] Only call get() if i is + also equal to j. + + * scripts/rem.m: Allow mixing of scalar/matrix args, but complain + if both args are matrices and the dimensions don't agree. + + * src/lex.l (grab_help_text): Correct previous change. + +Thu Jun 2 12:08:18 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Matrix.h (conversion): New enum, for binary read/write + functions. + * Matrix.cc (read, write) New functions. + * file-io.cc (feof_internal, ferror_internal, fread_internal, + fwrite_internal, get_size_conv, get_whats_left): New functions. + * g-builtins.cc (builtin_feof, builtin_ferror, builtin_fread, + builtin_fwrite): New functions. + * builtins.cc (general_functions): Add them to the list. + + * configure.in: Check for infinity() and quiet_nan(). + * sysdep.h (octave_Inf, octave_NaN): New global variables. + * sysdep.cc (octave_ieee_init): New function. Initialize + octave_Inf and octave_NaN. + (sysdep_init): Call it. + * builtins.cc (initialize_builtins): Don't compute Inf and NaN + values here. + +Tue May 31 20:06:27 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/variables.cc (identifier_exists): Only return 1 for + variables if they are also defined. + +Sun May 29 20:40:55 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/lex.l: Don't declare beginning_of_function as static. + (COMMENT): Delete unnecessary exclusive start state. + (\#, \%): Handle comments directly. Try to be smart about not + returning a newline character when reading a matrix list. + (grab_help_text): Don't put a newline back on the input stream. + * src/parse.y (list1): Set beginning_of_function to zero here. + +Wed May 25 03:34:17 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/error.cc (error): If error_state is -2, don't do anything. + If the format string ends in a new line character, strip it, print + the error message, and set the error state to -2. + * src/tree.cc (tree_function::traceback_error): Don't set the + error_state if it is already negative. + + * src/tree-const.cc (convert_to_row_or_column_vector): New function. + * src/idx-vector.cc (idx_vector::shorten): New function. + * src/tc-assign.cc (fortran_style_matrix_assignment + (tree_constant&, tree_constant&)): Handle deleting elements by + assignment of `[]'. Use convert_to_row_or_column_vector to handle + conversion to a vector in the case of deleting some elements from + a matrix. Use idx_vector::shorten() to remove unnecessary index + vector elements. + (do_scalar_assignment (tree_constant&, tree_constant*, int)): + Handle assignment of empty matrix. + If converting complex to real, delete old complex value. + (delete_rows (idx_vector&)): If deleting all rows of a column + vector, convert to empty matrix. + (delete_rows (Range&)): Ditto. + (delete_columns (idx_vector&)): If deleting all columns of a row + vector, convert to empty matrix. + (delete_columns (Range&)): Ditto. + + * src/tc-extras.cc (column_max (tree_constant*, int, int)): + Use MAX, not MIN when trying to find the biggest scalar. + Likewise, find the complex scalar with the largest, not the + smallest absolute value. + + * src/tc-assign.cc (do_matrix_assignment (tree_constant&, + tree_constant_rep::constant_type, tree_constant&): For case of + j_arg == matrix constant, don't negate return value of + indexed_assign_conforms(). + + * src/user-prefs.cc (commas_in_literal_matrix): New function. + Put functions in alphabetical order. + * src/user-prefs.h (commas_in_literal_matrix): New structure element. + Alphabetize structure elements and lists of functions. + * src/builtins.cc (string_variables): Add commas_in_literal_matrix + to the list. + * src/lex.l (<MATRIX>{SN}*\]{S}*): Pay attention to the value of + usre_pref.commas_in_literal_matrix when deciding whether to insert + a comma after seeing a ']' character. + (handle_identifier): Likewise. + (<MATRIX>{S}+): If commas are required, just eat the spaces. + +Tue May 24 19:49:51 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tc-assign.cc (tree_constant_rep::do_matrix_assignment + (tree_constant&, tree_constant*, int)): Handle empty arguments + for two index values. + (tree_constant_rep::do_matrix_assignment + (tree_constant&, tree_constant&)): + Likewise, for single index values. + +Mon May 23 01:43:23 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Makefile.in (snapshot, snapshot-version): New targets. + + * configure.in: Handle --enable-run-in-place (was easier than + doing the work to parse --run-in-place like Emacs uses). + + * acconfig.h: Add #undef for RUN_IN_PLACE. + + * Makeconf.in (OCTAVE_HOME): New macro. + * src/Makefile.in (defaults.h): Use it instead of ${prefix}. + + * Makeconf.in (OCTAVE_INFO_DIR, OCTAVE_LIB_DIR): New macros. + * src/Makefile.in (defaults.h): Substitute them too. + + * src/defaults.h.in (OCTAVE_INFO_DIR): New macro, used if + RUN_IN_PLACE is defined. + (OCTAVE_LIB_DIR): Likewise. + + * src/utils.cc (octave_home): Handle RUN_IN_PLACE + (octave_info_dir): Ditto. + (octave_lib_dir): Ditto. + + * src/tree-const.cc (tree_constant_rep::diag (void)): For empty + matrix, return empty matrix. + (tree_constant_rep::diag (tree_constant &)): Likewise, regardless + of value of arg. + + * scripts/int2str.m: Format as integer, not float. + Don't add trailing new line character. + +Sun May 22 22:13:01 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * scripts/plot_int.m: When looking for imaginary arguments, check + if any element has an imaginary component, not if all elements + have imaginary components. + +Thu May 19 19:46:23 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/parse.y (EXPR_AND_AND, EXPR_OR_OR): New tokens, for + short-circuit logical AND and OR operators. + (simple_expression): Handle new tokens. + * src/lex.l (&&) [SHORT_CIRCUIT_LOGICALS]: Return EXPR_AND_AND. + (||) [SHORT_CIRCUIT_LOGICALS]: Return EXPR_OR_OR. + * src/tree.cc (tree_binary_expression::eval): Handle short-circuit + boolean operators. + (tree_binary_expression::eval_error): Print different messages for + or_or/or and and_and/and. + * src/tree-base.h (tree_expression_type): Add new structure + elements and_and and or_or. + * src/tree-const.cc (tree_constant_rep::is_true): New function. + +Tue May 17 17:04:00 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/idx-vector.cc (idx_vector::sort_uniq ()): New function. + * src/tc-assign.cc (tree_constant_rep::delete_rows ()): Use it. + (tree_constant_rep::delete_columns ()): Likewise. + +Mon May 16 13:31:33 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * scripts/linspace.m: Replace for loop with range operation. + * scripts/logspace.m: Replace for loop with element by element + exponentiation. + +Sun May 8 00:49:38 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * scripts/lqe.m: Correct comment. + Transpose k before returning. + +Fri May 6 00:47:24 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree.cc (quit_loop_now): New function. + (tree_while_command::eval): Use it. + (tree_for_command::eval): Ditto. + + * src/tree.cc (tree_for_command::do_for_loop_once): New function. + (tree_for_command::eval): Use it. + +Mon May 2 19:45:39 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree.cc (tree_for_command::eval): Handle returning, + breaking, and continuing for case of scalar expression in loop + control statement. + +Wed Apr 20 00:38:26 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/lex.l (\[{S}*): Don't return ',' for this match when + convert_spaces_to_comma is true, since that can never be the right + thing to do. + + * All Makefile.in files: Set top_srcdir here. + * Makeconf.in: Not here. + + * Makeconf.in: Use top_srcdir instead of root_srcdir + + * configure.in: Update for autoconf-1.8. Use AC_VERBOSE for + verbose messages. Use AC_WARN and AC_ERROR instead of echo for + warning and error messages. Organize feature tests a bit better. + Use new autoconf macros to check for C++ compiler. Add copyright + notice. Recognize --enable-dld instead of --with-dld since that + seems to be more in line with the intent of the --enable/--with + options for configure scripts. Use new autoconf macros + AC_REVISION and AC_PREREQ. Don't add -Wall to CFLAGS and CXXFLAGS + until after all feature tests are done. Etc. + +Fri Apr 15 01:56:20 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * acconfig.h: Add #undefs for HAVE_FINITE, HAVE_ISINF, and + HAVE_ISNAN. + * configure.in: Check for floatingpoint.h. + * src/sysdep.cc (sysdep_init): Disable trapping on common + exceptions for 386BSD systems that have floatingpoint.h. + + * src/utils.cc: Don't declare ioctl() with prototype. + +Sat Apr 9 17:48:07 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tc-assign.cc (tree_constant_rep::fortran_style_matrix_assignment + (tree_constant&, tree_constant&)): + Handle case of M (X) = scalar, where X is a zero-one vector with + only one nonzero element. + + * src/tc-assign.cc (tree_constant_rep::do_vector_assign + (tree_constant&, Range&): + Handle case of right hand side being a scalar. + (tree_constant_rep::do_vector_assign (tree_constant&, idx_vector&): + Ditto. + + * src/tc-assign.cc (tree_constant_rep::do_matrix_assignment + (int,tree_constant_rep::constant_type)): + Allow assignment of complex scalar too. + (tree_constant_rep::do_matrix_assignment + (tree_constant_rep::constant_type, int)): + Ditto. + + * src/tree-const.h (REP_RHS_MATRIX): Initialize nr and nc. + Abort if rhs is not a real or complex matrix. + +Wed Apr 6 13:59:37 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/Range.cc (Range::nelem_internal): Use an integer, not + a double, for the number of intervals. Avoid possible problems + with extended precision registers on some systems (e.g. x86/Linux). + +Mon Mar 28 17:23:18 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/utils.cc (raw_mode): For OCRNL, ONOCR, and ONLRET, check to + see if they are defined before using them instead of checking to + see if NeXT is defined. + + * info/terminal.c (terminal_prep_terminal): Check to see if OCRNL + is defined before using it instead of checking to see if NeXT is + defined. + +Thu Mar 24 03:21:01 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree.cc (tree_parameter_list::define_from_arg_vector): + New function. + (tree_parameter_list::convert_to_const_vector): Ditto. + (tree_function::eval): Use them instead of trying to do this + in-line. + + * src/symtab.h (symbol_record::global_link_context): New stack for + saving linked_to_global flag. + * src/symtab.cc (symbol_record::push_context): Save + linked_to_global too. + (symbol_record::pop_context): And restore it. + +Wed Mar 23 16:18:19 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * doc/refcard.tex.in: New file. + * doc/Makefile.in: Create refcard.* and refcard-local.* from + refcard.tex.in. + +Tue Mar 22 15:23:55 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * octave.sh: exec $OCTAVE_HOME/bin/octave.bin, not just + octave.bin. + +Thu Mar 17 01:06:10 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/arith-ops.cc (do_binary_op (ComplexMatrix&, Matrix& b)): + Correctly handle element by element left division. + + * src/g-builtins.cc (builtin_error): Return without calling error + (and setting error_state) if the message is empty. + + * src/help.cc (operators): Correct help message for `.^'. + + * src/tc-index.cc (tree_contant_rep::fortran_style_matrix_index): + Preserve vector orientation when indexing with a zero-one vector. + + * src/tc-index.cc (tree_constant_rep::do_scalar_index): Handle + indexing a scalar with `0'. + + * src/tc-index.cc (tree_constant_rep::do_scalar_index): Handle the + index `:' the same as the index `1'. + +Tue Mar 15 17:22:00 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/Array.cc: Fix typo in comments about compiler flags. + +Wed Mar 9 15:08:21 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 1.0.1. + + * src/*.h: Use the macro octave_FOO_h instead of _FOO_h to protect + against multiple inclusion. + * liboctave/*.h: Likewise. + + * liboctave/*.h: Surround contents of files in extern "C++" { }. + +Tue Mar 8 18:06:54 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tc-index.cc (tree_constant_rep::do_vector_index (const + tree_constant&) const): Don't crash if matrix is empty. + + * scripts/norm.m: Return empty matrix for empty argument. + +Mon Mar 7 23:34:44 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * doinstall.sh: chmod new directories to 755. + +Sat Mar 5 13:15:10 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * bsd-math/log1p.c: Declare finite as returning int, not double. + * bsd-math/finite.c (finite): Add return type. + +Thu Mar 3 14:42:00 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/DiagMatrix.cc (operator *): Provide definitions for + DiagMatrix * DiagMatrix, ComplexDiagMatrix * ComplexDiagMatrix, + ComplexDiagMatrix * DiagMatrix, and DiagMatrix * ComplexDiagMatrix. + + * liboctave/ColVector.cc (operator >>): Provide definitions for + real and complex column vectors. + + * liboctave/RowVector.cc (operator >>): Provide definitions for + real and complex row vectors. + +Wed Mar 2 18:00:47 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/Array.h (DiagArray::Proxy::operator & ()): Provide + function body. + +Tue Mar 1 13:18:35 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree-const.cc (tree_constant::load (istream&)): Don't skip + past first type keyword if not global. + (tree_constant::load (istream&, tree_constant_rep::constant_type)): + Allocate storage for reading complex scalar. + +Sun Feb 20 14:17:47 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * scripts/menu.m: Don't fail on input that is empty or not a + scalar. + + * Makefile.in (DISTFILES): Distribute ChangeLog.[0-9]. + + * src/lex.l (reset_parser): Don't resynch line number to command + history number if reading a script file. + +Thu Feb 17 01:36:19 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 1.0 released. + + * src/file-io.cc (fopen_file_for_user): Improve error message. + (fopen_internal): Likewise. + +Wed Feb 16 02:21:05 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Try harder to find finite, isnan, and isinf. + Use m4 `dnl' comments, not shell `#' comments. + + * src/file-io.cc (file_io_get_file): New function. + (fgets_internal): Use it instead of trying to do this in line. + (frewind_internal, fseek_internal, ftell_internal, do_printf, + do_scanf): Likewise. + * (do_scanf): Allow file name as string for fscanf. + * (procss_scanf_format): Delete unused argument `args'. Delete + unused local variable `arg_type'. Don't complain if we can't + store the result of a requested conversion. Only return + successfully if a conversion actually occurs, even if we are not + storing the value. + +Sun Feb 13 13:32:03 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.83 released. + + * Array.h (DiagArray): Move inline definitions of get() and set() + before use by other inline functions. + +Sat Feb 12 14:15:45 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Check for g77 last. Even if it is ever actually + released, it probably won't be stable for quite a while. + + * MAKEINFO.PATCH: New file. + * Makefile.in (DISTFILES): Distribute it. + + * liboctave/Matrix.cc (operator + (Complex, const Matrix&)): + Make it work. + (operator - (Complex, const Matrix&)): Ditto. + (operator * (Complex, const Matrix&)): Ditto. + (operator / (Complex, const Matrix&)): Ditto. + +Fri Feb 11 00:03:39 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Check for strerror too. + + * configure.in: When saving CFLAGS as XCFLAGS and then restoring + the value, quote the RHS. + + * src/g-builtins.cc (builtin_clc): Do the dirty work to clear the + screen here instead of using rl_clear_screen to avoid printing + prompt unnecessarily. + +Thu Feb 10 00:26:32 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/utils.cc: Add all the cruft that the autoconf manual + suggests for including dirent.h. + + * info/terminal.c (terminal_prep_terminal): [HAVE_TERMIOS_H && + NeXT]: Don't use OCRNL, as someone says NeXT's termios.h doesn't + have it. + + * configure.in (GCC_IEEE_FP_FLAG): Correct check for ix86 Linux. + Don't try to check for CC == gcc. + Add GCC_IEEE_FP_FLAG to CFLAGS while checking for IEEE FP + functions finite, isnan, and isinf. + + * readline/rldefs.h: Make definition of HAVE_POSIX_SIGNALS + conditional on definition of _POSIX_VERSION, not HAVE_TERMIOS_H. + +Wed Feb 9 02:41:32 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree.cc (tree_function::octave_va_start): Rename from + va_start to avoid conflict with va_start macro. + (tree_function::octave_var_arg): Likewise, rename from va_arg. + * src/g-builtins.cc (builtin_va_arg): Call octave_va_arg for the + current function instead of va_arg. + (builtin_va_start): Likewise, for octave_va_start. + + * Version 0.82.1. + + * doc/Makefile.in (clean): Also remove octave.in, octave.rd, + octave.ins, and octave.rds. + + * src/t-builtins.cc (load_variable): Make it work for all + combinations of loading global or local variables when the + variable to be loaded is already a global variable, local + variable, a function, or even undefined. + +Tue Feb 8 00:33:09 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.82 released. + + * liboctave/mx-kludge.cc (operator + (KL_MAT_TYPE, KL_MAT_TYPE)): + For an empty matrix with one nonzero dimension, be sure to return + a result of the same size. + (operator - (KL_MAT_TYPE, KL_MAT_TYPE)): Ditto. + (product (KL_MAT_TYPE, KL_MAT_TYPE)): Ditto. + (quotient (KL_MAT_TYPE, KL_MAT_TYPE)): Ditto. + +Mon Feb 7 01:30:19 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/Array.h, liboctave/array.cc (DiagArray): Back off on + indexing via Proxy class changes for AIX systems to avoid gcc (or + possibly AIX assembler?) bug. + + * src/tree-const.cc (tree_constant_rep::maybe_resize (int, + force_orient)): Don't abort for a max index of zero. + + * liboctave/Matrix.h (class RowVector, friend double operator * + (const RowVector&, const ColumnVector&)): Add missing const in + declaration. + + * liboctave/Matrix.cc (Matrix::fill (val, r1, c1, r2, c2)): Set nc + to cols(), not rows(). + (ComplexMatrix::fill (double val, r1, c1, r2, c2)): Likewise. + (ComplexMatrix::fill (Complex val, r1, c1, r2, c2)): Likewise. + + * All source files: To match the documenation, refer to function + files, not M-files. Rename functions and variables that refer to + _m_file_, mfile, or mf to refer to _fcn_file, ffile, or ff. + +Sun Feb 6 19:08:26 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/parse.y (yyerror): Don't crash if a parse error happens and + the current input line is NULL. + +Sat Feb 5 18:53:04 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/file-io.cc (initialize_file_io): Don't use variable names + that start with `_'. + * src/file-io.cc (class file_info): Likewise. + +Fri Feb 4 01:15:59 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/builtins.cc (general_functions): In usage message for fopen, + use `Valid' instead of `Legal'. + + * src/file-io.cc (do_printf): Use `invalid' instead of `illegal' + in error message. + (do_scanf): Likewise. + + * src/mappers.cc (atanh): Use correct formula. + +Thu Feb 3 22:08:40 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * doc/refcard.tex: New file. + * doc/Makefile.in (all): Make refcard.ps. + (DISTFILES): Distribute refcard.tex, refcard.dvi, and refcard.ps. + + * src/tree-const.cc (any_element_is_negative): Delete function. + (any_element_less_than): New function. + (any_element_greater_than): Ditto. + (tree_constant_rep::mapper): Use struct elements lower_limit, + upper_limit, and can_return_complex_for_real_arg to properly + handle functions like acos, asin, atanh, and acosh. + + * src/builins.h (struct Mapper_fcn): Rename neg_arg_complex to + can_return_complex_for_real_arg. New elements, lower_limit and + upper_limit. + (struct builtin mappers functions): Rename neg_arg_complex to + can_return_complex_for_real_arg. New elements, lower_limit and + upper_limit. Delete elements nargin_max and nargout_max. + * src/variables.cc (install_builtin_mapper_function): Handle new + struct elements can_return_complex_for_real_arg, lower_limit, and + upper_limit. Don't use nargin_max and nargout_max -- they are + the same for all mapper functions. + +Wed Feb 2 05:06:56 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/Matrix.h: Don't include values.h. + * liboctave/Matrix-ext.cc: Include float.h + (DET::value_will_overflow): Use DBL_MAX, not MAXDOUBLE. + (ComplexDET::value_will_overflow): Likewise. + (DET::value_will_underflow): Use DBL_MIN, not MINDOUBLE. + (ComplexDET::value_will_underflow): Likewise. + * src/tree.cc: Include limits.h, not values.h. + (tree_builtin::max_expected_args): Use INT_MAX, not MAXINT. + + * configure.in: If compiling on an ix86, set GCC_IEEE_FP_FLAG to + -mieee-fp. We should no longer require the modified crt0 code on + Linux systems in order to get IEEE functions. + * Makeconf.in (GCC_IEEE_FP_FLAG): Substitute value. + (ALL_CFLAGS, UGLY_ALL_CFLAGS, ALL_CXX_FLAGS, UGLY_ALL_CXX_FLAGS, + ALL_LDFLAGS): Use it. + +Tue Feb 1 22:30:46 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/builtins.cc (install_builtins): Make SEEK_SET, SEEK_CUR, and + SEEK_END constants. + + * src/tree-plot.cc (tree_subplot_using::print): Only check column + number against max if max is greater than 0. + +Mon Jan 31 15:59:31 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * scripts/strcmp.m: Correctly handle empty strings. + + * src/parse.y (input): Recognize lone simple_list and simple_list + followed by error and '\n'. + +Fri Jan 28 00:20:30 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.81 released. + + * src/octave.cc (clean_up_and_exit): Call cleanup_tmp_files() here + too. + + * configure.in: Check for atexit and on_exit. + * src/octave.cc: Use HAVE_ATEXIT and HAVE_ON_EXIT (instead of + just checking to see if sun is defined) to decide whether to + define atexit as on_exit. + (main): Don't try to call atexit if it's missing and we don't have + on_exit either. + +Thu Jan 27 22:16:48 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Check for gethostname and sys/utsname.h. + * utils.cc (gethostname): Steal replacement from bash. Provide + definition if it looks like it's missing and we have + sys/utsname.h. + + * liboctave/Array.h (DiagArray): Define non-const indexing + functions here. + * liboctave/Array.cc (DiagArray): Not here. + + * liboctave/Array.h (DiagArray::Proxy): New class to handle + non-const reference indexing. Allows different action if indexing + on left side of assignment operator. + + * src/octave.cc (main): Call initialize_pager(), + initialize_readline(), and install_signal_handlers() before trying + to read startup files. + + * src/octave.cc (input_from_startup_file): New global flag. + (execute_startup_files): Set it to 1 before reading startup files. + * src/parse.y (func_def_2): If input_from_startup_file, don't try + to compare file name and function name. + +Wed Jan 26 14:39:27 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * readline/rldefs.h: Make better use of autoconf defines. + +Tue Jan 25 17:19:19 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/Matrix.cc (ComplexMatrix (DiagMatrix)): Make sure off + diagonal elements are zero. + (ComplexMatrix (ComplexDiagMatrix): Likewise. + (Matrix (DiagMatrix): Likewise. + +Fri Jan 21 17:43:11 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * flibs.sh: Recognize libraries that match `/*.a'. + +Thu Jan 20 18:12:01 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.80.1. + +Wed Jan 19 14:48:27 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * libcruft/odepack/stode.f: Don't try to `RETURN 0'. This causes + lsode to fail, at least with Sun's f77. + + * src/tree-const.cc (tree_constant_rep::load): Delete string + returned from extract_keyword. + * src/t-builtins.cc (builtin_load): Likewise. + * src/variables.cc (extract_keyword): Return new storage, not + static buffer. + + * src/t-builtins.cc (builtin_save): If saving a named list of + variables, use is_globally_visible to decide whether to mark + variables in the current symbol table as global. + +Tue Jan 18 11:57:03 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.80 released. + + * doc/Makefile.in (install): Delete commands for installing + liboctave.info instead of trying to comment them out. + + * liboctave/Array.cc: Allow users to compile with + -fexternal-stemplates and USE_EXTERNAL_TEMPLATES defined to + generate their own .o files with new types. + + * Makeconf.in (includedir): Install include files in + $prefix/include/octave by default. + + * liboctave/Makefile.in (TEMPLATE_SRC): New macro. + (install): Install files listed in $(TEMPLATE_SRC) too. + + * info/search.h: Conditionally declare stricmp and strnicmp. + * info/search.c: Conditionally define stricmp and strnicmp. + * config.h.in: Add undefs for HAVE_STRICMP and HAVE_STRNICMP. + + * configure.in: Check for stricmp and strnicmp too. + + * doc/Makefile.in: For now, don't format or try to install the + liboctave manual. + Don't distribute formatted copies of liboctave manual. + +Mon Jan 17 01:10:54 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * doc/Makefile.in (clean): Remove all index files. + + * src/Makefile.in (defaults.h): Depend on Makefile too. + * doc/Makefile.in (conf.texi): New rule for making conf.texi from + conf.texi.in. + + * doc/conf.texi.in: New file. + * doc/octave.texi: Include conf.texi to get VERSION, OCTAVE_HOME, + and other variables that need to be set depending on the + configuration. + + * Makefile.in (DISTFILES): Don't distribute PLOTTING. Current + plotting info is in the Texinfo docs. + +Sat Jan 15 15:43:34 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * config.sub: New file, from libg++-2.5.2. + * Makefile.in: Distribute config.sub. + * configure.in: Use config.sub to validate system types. If it + fails, continue with target_host_type and canonical_host_type set + to unknown. Leave target_host_type set to any alias given as the + TARGET argument to configure. + + * readline/rldefs.h: If ultrix and HAVE_SGTTY_H, avoid Posix + terminal driver. + * configure.in: If configuring for ultrix, check for sgtty first. + If not found, go ahead and check for Posix terminal driver. + + * configure.in: Don't try to do anything special for readline on + NeXT systems. + + * Makeconf.in: Define rules for making .d files here. + liboctave/Makefile.in: Not here. + src/Makefile.in: Or here. + + * liboctave/Matrix.h (all Matrix/Vector operator = functions): + Simply call the base class operator =, then return *this. + (class ColumnVector): Declare RowVector a friend class, so it can + access the private constructor for the transpose operator. + (class RowVector): Likewise, for ColumnVector. + (class ComplexColumnVector): Likewise, for CommplexRowVector. + (class ComplexRowVector): Likewise, for ComplexColumnVector. + Numerous formatting cleanups. + +Thu Jan 13 13:17:47 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.79.90. + + * builtins.cc: Include missing-math.h. + + * src/missing-math.h: Provide declarations for acosh, asinh, + atanh, and gamma whether they are actually missing or not, because + they are not part of the standard math.h, and the g++/libg++ + installation no longer provides declarations for them. + + * src/sighandlers.h (RETSIGTYPE): Define here. + (BADSIG): Likewise. + (sig_handler): Likewise. + + * src/g-builtins.cc: Include sighandlers.h + Don't define RETSIGTYPE, BADSIG, or sig_handler here. + * src/octave.cc: Or here. + +Wed Jan 12 16:12:27 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/g-builtins.cc: Don't check nargin/nargout in *_options + functions. + + * src/f-qpsol.cc, src/f-quad.cc, src/f-lsode.cc, src/f-fsolve.cc, + src/f-dassl.cc, liboctave/QPSOL.cc, liboctave/Quad.cc, + liboctave/ODE.cc, liboctave/NLEqn.cc, liboctave/DAE.cc: + Similar changes for these classes/functions as the following + changes for src/f-npsol.cc and liboctave/NPSOL.cc: + + * src/f-npsol.cc (npsol_opts): New static variable to hold Octave's + current idea of npsol options. + (npsol): Call nlp.copy (npsol_opts) after creating NPSOL object. + (npsol_option_table): New static list of options for npsol. + (print_npsol_option_list): New function. + (do_npsol_option): New function. + (npsol_options): Make it work. + + * liboctave/NPSOL.cc (NPSOL_options): New class. + * (NPSOL): Also derive from NPSOL_options. + * (minimize): Call pass_options_to_npsol before calling npsol. + * (NPSOL::option): No longer works. Print error message instead. + * (NPSOL::set_default_options): Now a member of NPSOL_options class. + + * src/utils.cc: If missing, declare strcasecmp, strncasecmp. + * (almost_match): Add new argument to do case-insensitive matches. + * (keyword_almost_match): New function to match a string against a + list of keywords. + + * liboctave/NLP.h (NLP): Add destructor and copy constructor. + + * configure.in: Check for strcasecmp and strncasecmp. + * config.h.in: Add #undefs for HAVE_STRCASECMP and STRNCASECMP. + * src/strcasecmp.c, src/strncase.c: New files, from glibc. + * src/Makefile.in (SOURCES, OBJECTS): List them. + + * src/builtins.cc (general_functions): Improve usage message for + the *_options functions. + (print_usage): New arg, just_usage with default value of 0. + If nonzero, don't print info about where to find additional help. + + * src/Makefile.in (INCLUDES): Add error.h. + (SOURCES): Add error.h. + + * src/tree.cc (tree_identifier::parse_m_file): call reset_parser + before calling yyparse (). + * src/tc-extras.cc (eval_string): Likewise. + Don't save previous symbol table. That is handled by the + unwind protect. + + * src/lex.l (reset_parser): Don't unconditionally call yyreset. + Add a couple of comments. + (yywrap): Always return 1, not 0. + (yy_flex_alloc, yy_flex_realloc, yy_flex_free): #if 0 out. + + * src/utils.cc (raw_mode): Only complain about stdin not being a + tty if we are really interactive. + + * src/octave.cc (main): End startup message with endl to ensure + flushing before other output. + * Turn of readline's blink_matching_paren feature if not + interactive, or if reading from a file specified on the command + line. + + * src/octave.cc (main): Set the symbol table context just before + calling reset_parser in the main loop. + * src/lex.l (reset_parser): Not here. + + * src/input.cc (octave_gets): Declare static. + (octave_read): Also handle echoing input if not using readline. + + * Makefile.in (DISTFILES): Add SENDING-PATCHES to the list. + +Mon Jan 10 14:30:13 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * scripts/corrcoef.m, scripts/fortran_vec.m, scripts/kurtosis.m, + scripts/ols.m, scripts/skewness.m, scripts/cov.m, scripts/gls.m, + scripts/mahalanobis.m, scripts/pinv.m: New script files from Kurt + Hornik (hornik@neuro.tuwien.ac.at) and the Department of + Probability Theory and Statistics TU Wien, Austria. + +Sun Jan 9 01:11:05 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/g-builtins.cc (builtin_fsqp_options): If FSQP_MISSING is + defined, don't call fsqp_options; just print usage message. + (builtin_npsol_options): Likewise, for npsol_options. + (builtin_qpsol_options): Likewise, for qpsol_options. + * src/builtins.cc (general_functions): Provide different usage + message for fsqp_options depending on whether FSQP_MISSING is + defined. Likewise for npsol_options and qpsol_options. + +Sat Jan 8 16:45:57 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * libcruft/misc/dostop.c: Include config.h. + + * src/variables.cc (extract_keyword): Use ostrstream instead of + fixed length buffer. For keywords with string values, return + value in static buffer. + * src/t-builtins.cc (builtin_load): Handle new argument list for + extract_keyword. Handle possiblity of load_variable setting + error_state. + * src/tree-const.cc (tree_constant_rep::load): Handle new argument + list for extract_keyword. + +Fri Jan 7 13:20:47 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/f-eig.cc (builtin_eig_2): Rename from builtin_eig. + * src/f-fsolve.cc (builtin_fsolve_2): Rename from builtin_fsolve. + * src/f-inv.cc (builtin_inv_2): Rename from builtin_inv. + +Thu Jan 6 12:29:41 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree-base.h (tree::save): Add optional argument `precision'. + * src/tree-const.cc (tree_constant::save): Ditto. + (tree_constant_rep::save): Ditto. + * src/symtab.cc (symbol_def::save): Ditto. + (symbol_record::save): Ditto. + (symbol_table::save): Ditto. + + * src/t-builtins.cc (builtin_save): Pass user_pref.save_precision + to symbol table save functions. + * src/builtns.cc (string_variables): Add save precision to thelist. + (install_builtins): Initialize it. + * src/user-prefs.cc (set_save_precision): New function. + * src/user-prefs.h (user_pref.save_precision): New data element. + + * liboctave/Matrix-ext.cc: Provide correct prototypes for dgeesx + and zgeesx. + * (SCHUR::init): Don't declare a dummy_select function pointer, + just pass `(void *) 0' instead, since the dummy argument is never + supposed to be used anyway. + + * src/input.cc (initialize_readline): Cast command_completer to + CPPFunction, not Function, now that readline has more than one + function typedef. + * Add extern declaration for free_undo_list (). + + * Replace readline source from GDB with readline source from bash. + This allows paren matching. + +Wed Jan 5 01:20:26 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Also check for sys/select.h. + + * liboctave/RowVector.cc (ComplexRowVector::operator *): Complete + function body. Put code in-line rather than making a call to the + BLAS routine zdotu to avoid having to cope with the various ways + that Fortran compilers might translate this. + + * src/input.cc (operate_and_get_next): New function, from bash. + (initialize_readline): Bind operate_and_get_next to C-O here. + + * src/input.cc (command_completer, command_generator): + Declare static here. + * srs/input.h (command_completer, command_generator): + Not extern here. + + * g-builtins.cc (builtin_warranty): Change copyright info. + * octave.cc (verbose_usage): Likewise. + (main): Likewise. + +Mon Jan 3 15:49:41 1994 John Eaton (jwe@schoch.che.utexas.edu) + + * src/fnmatch.c, src/fnmatch.h: New files for pattern matching + from the GNU C library. + * src/Makefile.in: Add them to the appropriate lists. + * src/t-builtins.cc (builtin_save): Use fnmatch to do pattern + matching instead of using regular expressions. + (builtin_clear): Likewise. + (glob_pattern_p): New function. + (builtin_save): Print error message and return if only given one + argument that contains globbing characters. + + * src/symtab.cc (symbol_record::save): Don't attempt to save + undefined variables. + +Wed Dec 29 02:55:08 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * scripts/rank.m: Also need to compute SVD when nargin == 2. + Correct usage message. + +Wed Dec 15 01:44:18 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/f-lpsolve.cc, src/f-fsqp.cc, src/f-npsol.cc, src/f-qpsol.cc, + src/f-lsode.cc, src/f-dassl.cc, src/f-fsolve.cc, src/f-quad.cc: + New stub options functions, XXX_options, and XXX_options_2 (for + future dld use), where XXX is lpsolve, fsqp, npsol, etc. + * src/f-lpsolve.h, src/f-fsqp.h, src/f-npsol.h, src/f-qpsol.h, + src/f-lsode.h, src/f-dassl.h, src/f-fsolve.h, src/f-quad.h: + Declare XXX_options functions. + * src/builtins.cc (builtin_general_functions): Add new XXX_options + functions to the list of builtin functions. + * src/g-builtins.cc: Define builtin_XXX_options functions. + * src/g-builtins.h: Declare them. + + * scripts/tzero.m: Add missing comma in fprintf call. + +Tue Dec 14 00:24:35 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * libcruft/quadpack/*.f: Modify to handle user-requested + termination from inside the user-supplied function. + * src/f-quad.cc (quad_user_function): Set quad_integration_error + if an error is encountered in the user-supplied function. + * liboctave/Quad.h (quad_integration_error): New global variable. + * liboctave/Quad.cc (user_function): Handle + quad_integration_error, and error flag for modified Quadpack + functions. + + * src/tree.cc (tree_simple_assignment_expression::eval): Check + error status after calling convert_to_const_vector () on the + argument list. + (tree_index_expression::eval): Ditto. + + * src/tree.cc (tree_argument_list::convert_to_const_vector): + If an error is encountered while evaluating an element of the + list, print an error message including the element number. + + * liboctave/ODE.cc (integration_error): New private data member. + (ODE constructors): Initialize it to zero. + (ODE::integrate (double)): Reset it to zero before each + integration step. + (lsode_f): Treat empty vector returned from user-supplied function + as an error. + * src/f-lsode.cc (lsode_user_function): Return empty vector if + error is encountered in user-supplied function. Don't jump to top + level on error. + + * libcruft/odepack/lsode.f (lsode): Return with istate = -13 on + error from user supplied subroutine. + * libcruft/odepack/lsode.f (lsode): Handle extra argument returned + from user-supplied function. + * libcruft/odepack/stode.f (stode): Likewise. + * libcruft/odepack/prepj.f (prepj): Likewise. + +Wed Dec 8 01:30:57 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/DAE.cc (integration_error): New private data member. + (DAE constructors): Initialize it to zero. + (DAE::integrate (double)): Reset it to zero before each + integration step. + (dassl_f): Treat empty vector returned from user-supplied function + as an error. + * src/f-dassl.cc (dassl_user_function): Return empty vector if + error is encountered in user-supplied function. Don't jump to top + level on error. + + * liboctave/NPSOL.cc (npsol_objective_error): New global variable. + (npsol_objfun): Set to zero before calling user-supplied function. + Check after calling user-supplied function. + Set mode to -1 on error. + (npsol_confun): Set mode to -1 on error. + (npsol declaration): Declare args for user-supplied functions. + * src/f-npsol.cc (npsol_objective_function): If an error is + encountered in the calculation of the objective function, set + npsol_objective_error to 1. + (npsol_constraint_function): Treat empty vector returned from + user-supplied function as an error. + + * liboctave/Array.cc (*::checkelem): Correct bounds checking. On + error, return uninitialized value of type T. This avoids placing + an extra requirement on the class that can be used as an array + element. + (*::operator ()): Likewise. + +Mon Dec 6 07:24:49 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/NLEqn.cc (hybrd1 declaration): Declare args for + user-supplied fuction. + (hybrj1): Likewise. + (hybrd1_fcn): Treat return of empty vector from user supplied + function as an error by setting iflag to -1. + (hybrj1_fcn): Likewise. + (solve): Handle case of info < 0 returned from hybrd1. + + * src/f-fsolve.cc (fsolve_user_function): Don't jump to top level + on error in user-supplied function. Treat empty vector returned + from user-supplied function as error. + (hybrd_info_to_fsolve_info): Translate -1 (failure in evaluation + of user-supplied function) to -2. + * scripts/perror.m (fsolve case): Handle -2. + + * info/error.c (program_name): Initialize to info, not NULL. + + * info/session.c (initialize_info_session): Don't exit if term is + too dumb or too small to use info. Return int status instead. + * info/info.h (TERM_TOO_SMALL): New macro. + + * src/t-buitlins.cc (try_info): Check return value from + initialize_info_session (). + + * liboctave/Array.cc (DiagArray<T>::DiagArray (int n, const T& val)): + Set number of rows and columns to n, not 0. + +Sat Dec 4 14:01:41 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/lex.h (YY_INPUT): Undefine if defined, then always define + the way we want. + (YY_FATAL_ERROR): Likewise. + + * src/lex.l (yywrap): Declare static. + (yy_flex_alloc): New function, so we don't have to link with + libfl.a when using flex 2.4.x. + (yy_flex_realloc): Ditto. + (yy_flex_free): Ditto. + +Thu Dec 2 19:23:43 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * scripts/*.m: Add copying notice to script files. + + * src/input.cc (command_generator): Return copy of matching string. + + * src/input.cc (command_generator): Correctly delete array of + character strings. + * src/symtab.cc (symbol_table::save): Likewise. + * src/utils.cc (pathstring_to_vector): Likewise. + + * src/utils.cc (get_m_file_names): When reallocating vector of + strings, delete original vector of pointers, but not the strings + they point to. + +Tue Nov 30 12:36:41 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/RowVector.cc, liboctave/ColVector.cc, + liboctave/DiagMatrix.cc, liboctave/Matrix.cc, + liboctave/Matrix-ext.cc: Massive rewrite to cope with new + derivation scheme. + + * liboctave/Matrix.h: Include Array.h, and derive Matrix, + ComplexMatrix, etc. from Array<double>. Derive Complex + versions from Array<Complex>. Delete declarations of functions + now inherited from the Array classes. + * Include mx-kludge.h with appropriate #defines in each class that + needs it. + * liboctave/Matrix.cc: Include mx-kludge.cc with appropriate + #defines in each class that needs it. + + * liboctave/Makefile.in (INCLUDES): Add Array.h, MArray.h, and + mx-kludge.h. + (SOURCES): Add Array.cc. + (EXTRAS): Add MArray.cc and mx-kludge.cc. + + * liboctave/mx-kludge.h, liboctave/mx-kludge.cc: New files to + implement the MArray functionality with macros until g++ can + handle the MArray stuff. + + * liboctave/MArray.h, liboctave/MArray.cc: New files for generic + arrays with simple math functions for like-types. This won't + quite work with g++ yet, so it's not used anywhere. + + * liboctave/Array.h, liboctave/Array.cc: New files for generic + arrays. + + * liboctave/mx-inlines.cc: Add const for const arguments. + + * src/file-io.cc (file_info): Rename class from File_info. + (file_info::operator =): Fix memory leak by deleting old name + and mode before saving new. Don't do copy if source and + destination are the same. + + * src/tree.cc (tree_matrix::eval): Plug memory leak. + + * src/tree.cc (tree_builtin::tree_builtin): Check to see that nm, + not my_name, is non-NULL before saving it. + + * src/tree.cc (tree_identifier::eval, tree_gobal_command::eval): + After performing the assignment, delete the identifier created + for temporary asssignment since the destrucotr for + tree_simple_assignment_expression doesn't do it for us. + + * src/tree.cc (tree_function::stash_m_file_name): Delete file_name + before saving it. + (tree_function::stash_function_name): Likewise, for fcn_name. + + * src/lex.l, src/lex.h: Make quote_is_transpose globally visible. + * src/parse.y (param_list): Use it, and recognize empty parameter + lists here. + + * src/parse.y (simple_expr1): Recognize empty matrices here. + (matrix): Not here. + + * src/arith-ops.cc (do_binary_op): The matrix product and quotient + functions aren't class member functions now. + + * src/tc-index.cc, src/tc-assign.cc, src/symtab.cc, + src/tree-plot.cc, src/idx-vector.cc, src/tree-const.cc: + Call ::error, not just error, since g++ now complains about not + being able to find a non-hidden member function by that name. + + * src/tree-const.cc: Call ::real and ::imag, not just real and imag, + since g++ now complains about not being able to find non-hidden + member functions by those names. + + * src/tree-const.cc (tree_constant_rep::force_numeric): Handle case + of zero-length strings. + + * src/tree-const.cc (tree_constant_rep::convert_to_str): Null + terminate strings created from scalars. + + * src/tc-index.cc (tree_constant_rep::fortran_style_matrix_index): Use + data(), not fortran_vec(). + * src/idx-vector.cc (idx_vector::idx_vector): Likewise. + + * src/SLStack.cc: Move function definitions here. + * src/SLStack.h: From here. Include SLStack.cc if not using + external templates. + + * src/unwind-prot.h: Move class declaration here. + * src/unwind-prot.cc: From here. + + * src/xdiv.h, src/xpow.h, src/variables.h, src/utils.h, + src/user-prefs.h, src/t-builtins.h, src/sighandlers.h, + src/pr-output.h, src/pager.h, src/octave-hist.h, src/mappers.h, + src/input.h, src/help.h, src/gripes.h, src/g-builtins.h, + src/f-syl.h, src/f-svd.h, src/f-schur.h, src/f-rand.h, + src/f-qzval.h, src/f-quad.h, src/f-qr.h, src/f-qpsol.h, + src/f-npsol.h, src/f-lu.h, src/f-lsode.h, src/f-lpsolve.h, + src/f-inv.h, src/f-ifft.h, src/f-hess.h, src/f-givens.h, + src/f-fsqp.h, src/f-fsolve.h, src/f-fft.h, src/f-expm.h, + src/f-eig.h, src/f-det.h, src/f-dassl.h, src/f-colloc.h, + src/f-chol.h, src/f-balance.h, src/error.h, src/dynamic-ld.h, + src/builtins.h, src/arith-ops.h, src/tree-const.h, src/tree.h, + src/token.h, src/symtab.h, src/procstream.h, src/idx-vector.h, + src/file-io.h, src/tree-base.h, src/unwind-prot.h, src/Stack.h, + liboctave/LinConst.h, liboctave/FEGrid.h, liboctave/NLEqn.h, + liboctave/NLConst.h, liboctave/LPsolve.h, liboctave/LP.h, + liboctave/FSQP.h, liboctave/DAEFunc.h, liboctave/DAE.h, + liboctave/CollocWt.h, liboctave/Bounds.h, liboctave/Objective.h, + liboctave/ODEFunc.h, liboctave/NLFunc.h, liboctave/Range.h, + liboctave/Quad.h, liboctave/QP.h, liboctave/QPSOL.h, + liboctave/QLD.h, liboctave/NPSOL.h, liboctave/NLP.h, + liboctave/f77-uscore.h, liboctave/lo-error.h, + liboctave/Matrix.h: + Don't use #pragma interface. + + * src/tc-index.cc, src/tc-assign.cc, src/symtab.cc, + src/procstream.cc, src/gripes.cc, src/f-syl.cc, src/f-svd.cc, + src/f-schur.cc, src/f-rand.cc, src/f-quad.cc, src/f-qr.cc, + src/f-qpsol.cc, src/f-npsol.cc, src/f-lu.cc, src/f-lsode.cc, + src/f-lpsolve.cc, src/f-inv.cc, src/f-ifft.cc, src/f-hess.cc, + src/f-givens.cc, src/f-fsqp.cc, src/f-fsolve.cc, src/f-fft.cc, + src/f-eig.cc, src/f-det.cc, src/f-dassl.cc, src/f-colloc.cc, + src/f-chol.cc, src/f-balance.cc, src/t-builtins.cc, + src/octave-hist.cc, src/input.cc, src/g-builtins.cc, + src/xdiv.cc, src/xpow.cc, src/user-prefs.cc, src/unwind-prot.cc, + src/tree-plot.cc, src/token.cc, src/tc-extras.cc, src/sysdep.cc, + src/sighandlers.cc, src/pr-output.cc, src/pager.cc, + src/mappers.cc, src/idx-vector.cc, src/help.cc, src/f-qzval.cc, + src/f-expm.cc, src/error.cc, src/dynamic-ld.cc, src/builtins.cc, + src/arith-ops.cc, src/variables.cc, src/utils.cc, + src/tree-const.cc, src/file-io.cc, src/tree.cc, + liboctave/sun-utils.cc, liboctave/mx-inlines.cc, + liboctave/RowVector.cc, liboctave/ColVector.cc, + liboctave/DiagMatrix.cc, liboctave/Matrix.cc, + liboctave/Matrix-ext.cc, liboctave/Quad.cc, liboctave/ODE.cc, + liboctave/LPsolve.cc, liboctave/FSQP.cc, liboctave/DAE.cc, + liboctave/DAEFunc.cc, liboctave/QP.cc, liboctave/Objective.cc, + liboctave/ODEFunc.cc, liboctave/NLFunc.cc, liboctave/NLConst.cc, + liboctave/LP.cc, liboctave/lo-error.cc, liboctave/Range.cc, + liboctave/QPSOL.cc, liboctave/NPSOL.cc, liboctave/NLEqn.cc, + liboctave/Matrix.cc, liboctave/Matrix-ext.cc, + liboctave/LinConst.cc, liboctave/FEGrid.cc, + liboctave/DiagMatrix.cc, liboctave/CollocWt.cc, + liboctave/ColVector.cc, liboctave/Bounds.cc: + Don't use #pragma implementation. + + * src/lex.l, src/parse.y, src/procstream.cc, src/gripes.cc, + src/f-syl.cc, src/f-svd.cc, src/f-schur.cc, src/f-rand.cc, + src/f-quad.cc, src/f-qr.cc, src/f-qpsol.cc, src/f-npsol.cc, + src/f-lu.cc, src/f-lsode.cc, src/f-lpsolve.cc, src/f-inv.cc, + src/f-ifft.cc, src/f-hess.cc, src/f-givens.cc, src/f-fsqp.cc, + src/f-fsolve.cc, src/f-fft.cc, src/f-eig.cc, src/f-det.cc, + src/f-dassl.cc, src/f-colloc.cc, src/f-chol.cc, + src/f-balance.cc, src/t-builtins.cc, src/octave-hist.cc, + src/input.cc, src/g-builtins.cc, src/xdiv.cc, src/xpow.cc, + src/user-prefs.cc, src/unwind-prot.cc, src/tree-plot.cc, + src/token.cc, src/tc-extras.cc, src/sysdep.cc, + src/sighandlers.cc, src/pr-output.cc, src/pager.cc, + src/mappers.cc, src/idx-vector.cc, src/help.cc, src/f-qzval.cc, + src/f-expm.cc, src/error.cc, src/dynamic-ld.cc, src/builtins.cc, + src/arith-ops.cc, src/variables.cc, src/utils.cc, + src/tree-const.cc, src/file-io.cc, src/tree.cc: If HAVE_CONFIG_H + is defined, include config.h. + + * config.h.in, acconfig.h: New files + * Makefile.in (DISTFILES): Add them to the list. + + * Makeconf.in (root_srcdir): Define. + (INCFLAGS): Clean up. + (UGLY_ALL_CFLAGS): New macro. + (UGLY_ALL_CXXFLAGS): Likewise. + (UGLY_ALL_LDFLAGS): Likewise. + + * configure.in: Convert to generate config.h. + Substitute root_srcdir in Makefiles. + Use AC_DEFINE(foo, 1) instead of DEFS="$DEFS -Dfoo=1". + If using g++ 2.5 or later, define USE_EXTERNAL_TEMPLATES. + Use UGLY_DEFS for what would have been substited in DEFS, for + those cases when we need DEFS instead of config.h. + +Tue Nov 16 04:59:19 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/f-expm.cc, src/f-givens.cc, src/f-qzval.cc, src/f-syl.cc: + Include f77-uscore.h here. + + * liboctave/ColVector.cc, liboctave/Matrix.cc, + liboctave/Matrix-ext.cc, liboctave/RowVector.cc: Move declarations + for Fortran functions here. + * liboctave/Matrix.h: From here. Don't include f77-uscore.h here. + +Mon Nov 15 04:03:34 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tc-extras.cc (min): For two-arg versions, use error(), not + FAIL. + (max): Likewise. + * src/idx-vector.cc (checkelem): Likewise. + + * liboctave/Matrix.h, liboctave/Matrix.cc, liboctave/RowVector.cc, + liboctave/ColVector.cc, liboctave/DiagMatrix.cc, + liboctave/Matrix-ext.cc, liboctave/Bounds.cc, liboctave/DAE.cc, + liboctave/CollocWt.cc, liboctave/FEGrid.cc, liboctave/LinConst.cc, + liboctave/ODE.cc, liboctave/NLEqn.cc: Don't abort or exit on + errors. Instead print some message by calling the function + pointed to by current_liboctave_error_handler and then return. + + * liboctave/lo-error.cc: New file, for liboctave error handling + stuff. + +Sun Nov 14 23:28:12 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/utils.cc (default_path): Handle OCTAVE_PATH from the + environment like TeX handles TEXINPUTS. If the path starts with + `:', prepend the standard path. If it ends with `:' append the + standard path. If it begins and ends with `:', do both (which is + useless, but the luser asked for it...). + (octave_lib_dir): Plug memory leak. + +Sat Nov 13 02:41:24 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/symtab.h (symbol_record::context): New data member, to allow + recursive functions to work. + * src/symtab.cc (symbol_record::push_context): New function + (symbol_record::pop_context): Ditto. + (symbol_table::pop_context): Ditto. + (symbol_table::push_context): Ditto. + + * src/tree.cc (tree_function::eval): If call_depth is > 1, push + symbol table context and add unwind protect to pop it on exit or + error. + (pop_symbol_table_context): New function for unwind protect. + + * configure.in: Use AC_HAVE_HEADERS(unistd.h) instead of + AC_UNISTD_H. + + * src/lex.l, src/f-quad.cc, src/f-rand.cc, src/f-lpsolve.cc, + src/f-fsqp.cc, src/f-fsolve.cc, src/f-det.cc, src/f-dassl.cc, + src/f-colloc.cc, src/utils.cc, src/variables.cc, src/tree.cc, + src/tree-const.cc, src/tc-extras.cc, src/sysdep.cc, src/symtab.cc, + src/octave-hist.cc, src/pr-output.cc, src/input.cc, + src/g-builtins.cc, src/f-det.cc, src/f-inv.cc, src/file-io.cc: + Convert most calls to message() to calls to warning() or error() + instead. + + * src/f-npsol.cc (npsol): Don't try to create the linear + constraint object before checking array sizes. + +Fri Nov 12 04:36:12 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tc-inlines.cc (is_one_zero): New function. + * src/tc-assign.cc: Everywhere we check for is_zero_one, also + check for is_one_zero. Some people write ranges that go in + decreasing order... + * src/tc-index.cc: Likewise. + + * src/tc-inlines (index_check (Range&, int&, char*)): Eliminate + second arg -- there is no need to return the max value of the + range. Correctly compute and check the minimum value. + * src/tc-index.cc: Change all callers, and check the max value + there. + * src/tc-assign.cc: Likewise. + + * src/tc-assign.cc (do_vector_assign): Handle assignment of empty + matrix for int, idx_vector, and Range cases. + (do_matrix_assign): Likewise, for cases when one of the indices is + a colon and the other is an int, idx_vector, or Range. + + * liboctave/Range.h (Range): Rename private data members rng_foo + instead of just _foo. + * liboctave/Range.cc: Change names where used. + + * liboctave/Range.cc (max): Return correct value even when the + elements in the range don't line up exactly with the limit. + (min): Likewise. + (sort): New function. + + * src/tc-assign.cc (delete_row (int)): New function. + (delete_rows (idx_vector&)): Ditto. + (delete_rows (Range&)): Ditto. + (delete_column (int)): New function. + (delete_columns (idx_vector&)): Ditto. + (delete_columns (Range&)): Ditto. + + * src/tree-const.h (is_empty): Don't try checking rows and columns + if type is magic_colon or unknown. Return false instead. + (is_zero_by_zero): New function. + + * src/idx-vector.cc (sort): New function. + (intcmp): New static function, for sorting. + +Thu Nov 11 02:31:13 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * scripts/menu.m: Update to use new va_start() and va_arg() + functions. + + * src/g-builtins.cc (builtin_va_arg): Rename from + builtin_get_next_arg. + (builtin_va_start): New function. + * src/builtins.cc (builtin_general_functions): Fix up list. + + * src/tree.cc (tree_function::va_arg): Rename from get_next_arg. + (tree_function::va_start): New function. + + * src/tree.h (tree_function::num_named_args): New data member. + * src/tree.cc (tree_function::define_param_list): Set it. + (tree_function::eval): Unwind-protect it. + +Wed Nov 10 03:37:44 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree.cc (tree_identifier::assign): Also check to make sure + that the symbol record is defined since symbol_record::is_variable + may return true even if the record is undefined. + * src/variables.cc (link_to_global_variable): Don't try to copy a + NULL_TREE_CONST. + + * src/tree-const.cc (tree_constant_rep::matrix_value): If the + current value is a scalar, return 1x1 matrix. + * src/tc-assign.cc (tree_constant_rep::check_vector_assign): + Handle case of zero size LHS. + Clean up formatting of some error messages. + + * src/lex.l ({EL}): Recognize ... when not at end of line. + * src/octave.cc (curr_function): New global variable. + * src/g-buitlins.cc (builtin_get_next_arg): New function. + * src/builtins.cc (builtin_general_functions): Add it to the list. + * src/parse.y (param_list1): Handle ... at end of parameter list. + Abort parse on error. + (ELLIPSIS): New token, for variable argument lists. + * src/tree.h (tree_function): Add varargs_ok, args_passed, + num_args_passed, and curr_arg_number data members to handle + variable argument lists. + (tree_parameter_list::marked_for_varargs): New data member. + * src/tree.cc (tree_function::takes_varargs): New function. + (tree_function::get_next_arg): New function. + (tree_parameter_list::mark_varargs): New function. + (tree_parameter_list::takes_varargs): New function. + (tree_function::eval): Set curr_function, args_passed, and + num_args_passed for use by get_next_arg. + +Mon Nov 8 14:22:34 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.79 released. + + * src/builtins.cc (builtin_text_functions): Correct usage message + for who. + + * scripts/dgram.m: New function, from R. Bruce Tenison + (btenison@eng.auburn.edu). + * scripts/dlqe.m: Ditto. + * scripts/dlqr.m: Ditto. + * scripts/c2d.m: Ditto. + + * src/tree.cc (tree_identifier::name): Make it const. + (tree_builtin::name): Ditto. + (tree_parameter_list::name): Ditto. + (tree_word_list::name): Ditto. + + * src/symtab.cc (symbol_table::save): Delete list of names after + saving. + + * src/symtab.h (symbol_table): Move #defines outside of class + declaration. + +Sun Nov 7 07:03:12 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * Makeconf.in (CXX): Don't set from C++. Do set from @CXX@, which + is determined by configure. Don't set C++FLAGS. + + * src/tree.cc: (tree_function::eval (int, int)): Simply call + eval (tree_constant *, int, int, int) with nargin = 1 and args = + NULL_TREE_CONST instead of duplicating most of that function in place. + + * src/parse.y (func_def2): Reset id_name after renaming identifier. + Clear id_name from top level symbol table before defining identifier. + +Sat Nov 6 04:38:57 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: When checking for g++, set CXX, not GXX. + + Merge min changes from Bruce Tenison (btenison@eng.auburn.edu) and + make the corresponding changes for max. + + * src/tc-extras.cc (min (ComplexMatrix&, ComplexMatrix&)): New + function. + (max (ComplexMatrix&, ComplexMatrix&)): Ditto. + (column_min): Handle complex args and two return values. + (column_max): Likewise. + + * liboctave/Matrix.cc (row_min_loc): New function. + (row_max_loc): New function. + (column_min_loc): Ditto. + (column_max_loc): Ditto. + +Fri Nov 5 03:12:55 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.78. + + * src/octave.h (clean_up_and_exit): Change form of declaration for + GCC 2.5.x and beyond. + + * src/tree.cc (tree_identifier::eval): Correctly handle printing + of identifier tags and conversion to assignment to `ans'. + * src/parse.y (maybe_convert_to_ans_assign): Simplify. + For identifiers, defer decision about making an ans assignment + until evaluation time since identifiers can be undefined at parse + time, and we can't tell what to do until we know what the def is. + * src/tree.cc (tree_identifier::mark_for_possible_ans_assgin): New + function. + * src/tree.cc (tree_index_expression::mark_for_possible_ans_assign): + New function. + * src/tree.h (tree_identifier): Add new private data, + maybe_do_ans_assign. + + * src/t-builtins.cc (builtin_who): Major overhaul. Support long + listings. + (print_symbol_info_line): New function. + (print_long_listing): Ditto. + (maybe_list): Ditto. + + * src/user-prefs.cc (sv_editor): New function for builtin variable + EDITOR. + * src/octave-hist.cc (do_edit_history): Use user_pref.editor, not + just the EDITOR environment variable. + + * src/user-prefs.cc (ignore_function_time_stamp): New function for + new builtin variable ignore_function_time_stamp. + * src/variables.cc (symbol_out_of_date): Use value of new + user_pref.ignore_function_time_stamp to decide whether to check to + see if a file has changed. + * src/tree.h (tree_function): Add new private data, system_m_file. + + * src/builtins.cc (string_variables): Add EDITOR and + ignore_function_time_stamp EDITOR to the list. + (bultin_general_functions): Add is_global to the list. + + * src/t-builtins.cc (builtin_clear): Make it work with new + variable scoping rules. + (builtin_document): Likewise, using new document_symbol() + function. + (builtin_save): Likewise. Allow regular expression arguments. + Don't save builtin variables that are read-only. + + * src/utils.cc (octave_home): Don't declare static. + (octave_lib_dir): Likewise. + (octave_info_dir): Likewise. + (default_editor): New function. + + * src/tree.cc (tree_builtin::def): Delete function. + (tree_identifier::def): Likewise. + (tree_identifier::symrec): Likewise. + + * src/tree.h (tree_builtin): Store name of function, not pointer + to symbol record. + + * src/user-prefs.cc (warn_assign_as_truth_value): Lookup + "warn_assign_as_truth_value", not "user_pref.warn...". + + * src/tree-base.h (def): Delete unused virtual function. + (is_prefix_expression): New virtual function. + (mark_for_possible_ans_assign): Likewise. + (is_system_m_file): Likewise. + (stash_m_file_name): No longer needs to be virtual. + (stash_m_file_time): Likewise. + + * src/octave.cc (octave_Complex_error_handler): Define, to keep + errors in the Complex class from aborting Octave. This is only a + temporary fix, I hope. + (main): Install it. + (initialize_globals): Get default editor. + (main): Call initialize_symbol_tables to do that instead of + creating them directly in main. + + * src/variables.cc (document_symbol): New function. + (initialize_symbol_tables): Likewise. + (install_builtin_mapper_function): Likewise. + (install_builtin_text_function): Likewise. + (install_builtin_general_function): Likewise. + (install_builtin_variable): Likewise. + (install_builtin_variable_as_function): Likewise. + (bind_nargin_and_nargout): Likewise. + (bind_builtin_variable): Likewise. + (link_to_global_variable): Likewise. + (link_to_builtin_variable): Likewise. + (link_to_builtin_or_function): Likewise. + (force_link_to_function): Likewise. + (is_globally_visible): Likewise. + (is_builtin_variable): Likewise. + + * src/tree.cc (print_as_scalar): Avoid trying to print row vectors + on one line. + + * src/builtins.cc (install_buitlins): Simplify installation of + builtin functions using new install_builtin_*_function functions. + Ditto for using bind_builtin_variable for installing variables. + + * src/tree.h (tree_global_command): New class. + * src/tree.cc (tree_global_command::*): Implement new class to + make global command executable. + * src/parse.y (global_decl): Make global an executable statement. + + * src/parse.y (func_def2): Rework to match new way of handling + global variables and function names in the symbol table. + Mark functions as `system' or not. + Don't use id_to_define. + If m-file and function names disagree, rename function to match + m-file name. + * src/tree.cc (tree_identifier::rename): New function. + * src/parse.cc, src/parse.h (id_to_define): Delete unused global + variable. + + * src/varables.cc (builtin_string_variable): Fix to match new + rules for global and builtin variables. + (builtin_real_scalar_variable): Likewise. + + * src/tree.cc (tree_identifier::assign): Make it work with new + rules for global variables. + (tree_identifier::parse_m_file): Likewise. + (tree_identifier::do_lookup): Likewise. + + * src/tree.cc (mark_as_system_m_file): New function. + (is_system_m_file): Ditto. + + * src/tree.cc (clear_symbol_table): New function, to be used in an + unwined_protect element for clearing function symbol tables on + exit or error. + + * src/tree.cc (tree_function::eval): Simplify using + bind_nargin_and_nargout. + Clear symbol table on exit or error with unwind_protect. + + * src/tree.cc (tree_prefix_expression::is_prefix_expression): New + function. + + * src/g-builtins.cc (builtin_is_global): New function. + + * src/lex.l (lookup_identifier): Now that global variable binding + has been fixed, only look for symbols in the current symbol table. + Really. I mean it this time. + + * src/symtab.cc: Complete overhaul, to make global variables work + a bit more reasonably. + +Mon Nov 1 15:03:39 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/Matrix.h (DiagMatrix::rows): Return nr, not len. + (ComplexDiagMatrix::rows): Ditto. + * src/Matrix.h (DiagMatrix::cols): Return nc, not len. + (ComplexDiagMatrix::cols): Ditto. + (DiagMatrix::columns): Ditto. + (ComplexDiagMatrix::columns): Ditto. + + * liboctave/DiagMatrix.cc (DiagMatrix::row): Make it work for + square case. + (DiagMatrix::column): Likewise. + (ComplexDiagMatrix::row): Likewise. + (ComplexDiagMatrix::column): Likewise. + + * liboctave/DiagMatrix.cc (DiagMatrix::operator <<): Print spaces + between elements. + (ComplexDiagMatrix::operator <<): Likewise. + +Fri Oct 29 15:32:12 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.77.1. + + * src/symtab.cc (symbol_record::alias): Don't copy formal_param or + forced_global attribute. + + * src/symtabl.cc (symbol_table::bind_globals): Don't bind to + global symbol unless it has forced_global attribute set. + + * src/tree.cc (print_as_scalar): New function. + (tree_identifier::eval): Use it. + (tree_simple_assignment_expression::eval): Likewise. + (tree_multi_assignment_expression::eval): Likewise. + + * src/lex.l (is_keyword): Give better error message for attempts + to define nested functions. + + * src/parse.y (global_decl): Return a command_list to execute + (this makes assignments in global declarations executable). + + * src/tree.cc (tree_for_command): Handle line and column info in + constructors and for error messages. + (tree_while_command): Ditto. + (tree_if_command): Ditto. + (tree_break_command): Ditto. + (tree_continue_command): Ditto. + (tree_return_command): Ditto. + (*::eval_error): Only print messages if error_state > 0. + (various): Only need to check that error_state is non-zero before + calling eval_error(). + + * src/parse.y: Handle line and column information for FOR WHILE IF + ELSEIF ELSE BREAK CONTINUE and FUNC_RET tokens. + * src/lex.l: Likewise. + + * src/octave.cc (parse_and_execute): Reset parser before starting + new parse. + + * src/tree-plot.cc (various): Check error_state in many more + places, and issue more meaningful error messages. + + * src/tree-const.cc (maybe_resize): Don't call + jump_to_top_level() on errors. + (tree_constant_rep (Range)): Likewise. + + * src/g-builtins.cc (builtin_error): Use error(), not + print_if_string() to print error messages. + * src/tree-const.cc (print_if_string): Delete unused function. + + * src/tc-assign.cc (various): Check error_state after calls to + maybe_resize(). + + * src/tc-index.cc (various): Always check the state of idx_vectors + after trying to create them. + * src/tc-assign.cc (various): Likewise. + + * src/idx-vector.cc: Use 0, not NULL. + Don't include stdlib.h. + (initialized): New data member, set nonzero if the idx_vector has + been properly initialized. + Never call jump_to_top_level () if initialization fails. + Add operator void *(), so we can test the state of an idx_vector + with `if (vector)'. + + * src/pager.cc: Explicitly initialize pager_buf to NULL. + + * src/tree-base.h: Move includes ahead of other definitions. + + * liboctave/NLEqn.cc (NLEqn::NLEqn (const Vector&, const NLFunc)): + Initialize n from xvec, not x. + +Mon Oct 25 18:01:12 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/user-prefs.cc (sv_info_file): New function. + * src/user-prefs.h (user_pref): Add info_file to the list. + * src/t-builtins.cc (try_info): Use it instead of + DEFAULT_INFO_FILE. + + * src/utils.cc (default_info_file): New function. + (octave_info_dir): Likewise. + + * src/defaults.h.in (DEFAULT_INFO_FILE): Delete unnecessary + definition since we figure out what it should be in utils.cc now. + * src/Makefile.in (defaults.h): Don't substitute DEFAULT_INFO_FILE. + * src/Makeconf.in (DEFAULT_INFO_FILE): Delete definition. + + * src/octave.cc (info_file): New global variable. + (initialize_globals): Call default_info_file () to initialize it. + (--info-file): New command line option. + + * src/builtins.cc (string_variables): Add INFO_FILE to the list. + (install_builtins): Define it. + + * info/filesys.c (compress_suffixes): Choose gunzip for .gz files. + +Sat Oct 23 17:46:09 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.77 released. + + * src/Makefile.in (INCFLAGS): Don't include info or dld + directories. + * dynamic-ld.cc: Include dld/dld.h, not just dld.h. + * t-buitlins.cc: Include info/info.h, info/dribble.h, and + info/terminal.h, not just info.h, dribble.h, and terminal.h. + + * src/t-builtins.cc (builtin_help): New option, -i, for invoking + info browser. If -i is not given, just do what we used to do, but + point to help -i as a way to get additional information. + + * builtins.cc (print_usage): New function. + + * g-builtins.cc (all builtins): Call print_usage to get usage message. + * t-builtins.cc (all builtins): Likewise. + +Fri Oct 22 15:56:16 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * Cholesky changes from R. Bruce Tenison (btenison@eng.auburn.edu): + + * src/f-chol.cc, src/f-chol.h: New files for the Cholesky + Factorization. + * src/Makefile.in (SOURCES, OBJECTS, DLD_OBJECTS): Add to lists. + * src/g-builtins.cc (builtin_chol): New function. + * src/g-builtins.h: Declare it. + + * liboctave/Matrix-ext.cc (CHOL, ComplexCHOL): New classes. + + * libcruft/lapack: dpotrf.f, zpotrf.f, dpotf2.f, zpotf2.f: New + files. + + * libcruft/blas: dsyrk.f, zherk.f: New files. + +Fri Oct 22 14:04:16 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/g-builtins.cc (builtin_schur): Fourth arg for DLD_BUILTIN is + schur, not hess. + + * scripts/dare.m: Correct usage of fprintf. + + * src/utils.cc (raw_mode): Only complain about stdin not a tty if + interactive or forced interactive. + +Thu Oct 21 17:00:57 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/builtins.cc (install_builtins): Try harder to make + initialization of NaN work. Make note about possible fixes if it + still doesn't work. + + * src/utils.cc (raw_mode): [HAVE_TERMIOS_H] and [HAVE_TERMIO_H] + Don't set TAB3 since it doesn't seem necessary and some systems + don't have it by this name. + [HAVE_SGTTY_H] To be consistent, don't set XTABS here either. + + * src/error.c (error): Call flush_output_to_pager before printing + error message. + (panic): Likewise, before aborting. + + * src/symtab.cc (symbol_record::undefine): Delete unused function. + (symbol_table::undefine): Likewise. + + * src/symtab.cc (clear): Never delete symbol records from the + table. Only delete the definitions. This makes clear and + undefine equivalent, so we don't need them + * src/tree.cc (tree_function::eval): Call symbol_table::clear, not + symbol_table::undefine. + + * src/t-builtins.cc (builtin_clear): Only clear global symbols if + we are at the top level. + * src/parse.y (CLEAR): Delete token. + (word_list_command): Remove code to handle CLEAR as special case. + (expect): Only 19 now. + * src/lex.l (handle_identifier): Remove special code for clear. + It's ok to use it in a function body now. + + * src/t-builtins.cc: Include extern "C" declarations for Info stuff. + (builtin_help): If given an argument, try to get help directly + from info file first. If that fails, do as before. + (help_syms_list): New function: + (simple_help): New function. + (try_info): New function. + (help_from_list): New function. + + * src/defaults.h.in (DEFAULT_INFO_FILE): Define new macro. + * Makeconf.in: Set value of DEFAULT_INFO_FILE. + * Makeconf.in (INSTALL_PROGRAM): Add definition. + * Makefile.in (SUBDIRS): Add info directory. + (info): New target. + * configure.in: Add autoconf macros to handle info configuration. + + * info/Makefile.in: Major changes to make it work with Octave's + Makeconf file, etc. The default action is now to build a + libinfo.a file. + + * info/error.c: New file. Move error functions here from info.c. + + * info/signals.c (clear_info_signal_handler): New function, useful + if info is used directly in another program. + + * info/termdep.h: Handle termios too. + * info/terminal.c (terminal_prep_terminal): Handle termios. + * (terminal_unprep_terminal): Likewise + + * info/session.c (initialize_info_session): Add arg to make + clearing the screen conditional. Useful if we want to call + index_entry_exists() first before displaying anything. + Change all callers. + + * info/session.c (finish_info_session): New function. + + * info/session.c (dispatch_error): Change message to include info + about how to get help and how to quit. + + * info/info.c (index_search_p): New flag. + (--index-search): New option, like apropos, but search the indices + and display the first node found. + + * info/indices.c (do_info_index_search): New function, modified + from info_index_search to allow searching the index for a string + without prompting for it. + (info_index_search): Just call do_info_index_search. + (index_entry_exists): New function, to allow us to find out if + there is an index entry for a given string without actually + displaying anything. + + * info: New directory, containing source for GNU info browser. + +Tue Oct 19 00:14:33 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/octave-hist.cc (input_from_tmp_history_file): New global flag. + (do_edit_history): Protect and set it. + (do_run_history): Likewise. + * src/parse.y (func_def2): Use it to see that input is coming from + a temporary file. This means that we shouldn't exit when we're + done reading it, and we should treat it just as if the input were + coming from the keyboard. + + * variables.cc (force_global): Force aliasing so it will happen + even if the symbol record is undefined. + + * src/lex.l (lookup_identifier): Simplify + + * src/lex.l (reset_parser): Reset error_state here. + * src/octave.cc (main): Not here. + +Mon Oct 18 14:27:02 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree-const.cc: Delete constructor for tree_constant from + String. + + * In src: tree.h, mappers.h, unwind-prot.h, parse.h, file-io.h, + arith-ops.h, tree-base.h, tree-const.h, g-builtins.h, + idx-vector.h, builtins.h, dynamic-ld.h, xdiv.h, xpow.h, + pr-output.h, input.h, symtab.h, utils.h: Avoid including files + unnecessarily. + + * In src: tc-inlines.cc, mappers.cc, variables.cc, arith-ops.cc, + tree.cc, tree-const.cc, g-builtins.cc, file-io.cc, idx-vector.cc, + tc-assign.cc, tc-index.cc, builtins.cc, dynamic-ld.cc, xdiv.cc, + xpow.cc, pr-output.cc, tc-extras.cc, input.cc, symtab.cc, + utils.cc: Sprinkle liberally with const. + + * In src: f-syl.cc, f-svd.cc, f-schur.cc, f-rand.cc, f-qzval.cc, + f-quad.cc, f-qr.cc, f-qpsol.cc, f-npsol.cc, f-lu.cc, + f-lsode.cc, f-lpsolve.cc, f-inv.cc, f-ifft.cc, f-hess.cc, + f-givens.cc, f-fsqp.cc, f-fsolve.cc, f-fft.cc, f-expm.cc, + f-eig.cc, f-det.cc, f-dassl.cc, f-colloc.cc, f-balance.cc: + Add const qualifier to tree-constant arg. + +Sat Oct 16 12:22:24 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/tree-const.h, src/tree-const.cc: Add const qualifier to + constructor arguments passed by reference. + Pass Complex arguments by const reference instead of by value. + + * liboctave/Matrix.h, liboctave/Matrix.cc, liboctave/ColVector.cc, + liboctave/RowVector.cc liboctave/DiagMatrix.cc: Pass Complex + arguments by const reference instead of by value. + +Wed Oct 13 14:13:29 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * src/utils.cc (decode_prompt_string): ctime returns time_t, which + might not be a long. + + * src/variables.cc (identifier_exists): Only return non-zero if + the name has a definition. + + * src/f-npsol.cc (npsol): Call error(), not message(), to print + error messages. + (linear_constraints_ok): Likewise. + (nonlinear_constraints_ok): Likewise. + + * src/f-qpsol.cc (qpsol): Don't try to create the linear + constraint object before checking array sizes. Wouldn't exception + handling be nice? + Call error(), not message(), to print error messages. + Check to ensure that the bounds on linear constraints are + vectors. + + * src/lex.l (lookup_identifier): Don't bind global variables + immediately in loops or conditionals, even at the top level. + +Sun Oct 10 8:48:00 1993 John Eaton (jwe@schoch.che.utexas.edu) + + * README.doc: New file. + * Makefile.in (doc-dist): New target. + * doc/Makefile.in (FORMATTED): New macro. + (doc-dist): New target. + + * src/tree.cc (tree_identifier::eval): Don't print anything if an + error is encountered. + (tree_simple_assignment_expression::eval): Likewise. + + * src/tc-assign.cc (do_matrix_assignment): Handle resizing + correctly when indices are (:,range), (:,matrix), (range,:), or + (matrix,:) and the lhs is empty or undefined. + +Tue Oct 5 04:02:37 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.76 released. + + * src/octave.cc (main): Print usage message if we are given more + than one extra argument on the command line. + Delay printing startup message until just before setting the toplevel + jump context. + + * src/lex.h (DO_COMMA_INSERT_CHECK): Delete unused macro. + + * src/lex.l (handle_identifier): New function. + ({IDENT}/{S}*=, {IDENT}{S}*): Use it instead of duplicating code. + (do_comma_insert_check): Use yyunput instad of returning original + character count. + Call directly instead of using DO_COMMA_INSERT_CHECK macro. + +Mon Oct 4 08:06:10 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.75.4. + + * src/tree-const.cc (tree_constant_rep::eval ()): Avoid calling + rows() and columns() for things like magic_colon. + +Sun Oct 3 19:39:33 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + Changes to add line and column info to run-time error messages: + + * src/tree.cc (tree_identifier, tree_prefix_expression, + tree_postfix_expression, tree_simple_assignment_expression, + tree_multi_assignment_expression, tree_colon_expression, + tree_index_expression): Modify constructors to allow line and + column information to be stored. + (abort_on_undefined): Delete (now) unnecessary static variable. + (all eval() functions): If error_state, return immediately. + (tree_matrix::eval ()): Call error and return tree_constant() + instead of jumping to top level on error. + (tree_identifier::parse_m_file ()): When starting to read an + M-file, initialize current_input_column to 1, not 0. + (tree_identifier::eval_undefined_error ()): Improve error message + with line and column info if it is available. Don't abort to top + level on errors. + (tree_function::traceback_error ()): New function. + (tree_function::eval ()): Don't jump to top level on errors. + Call traceback_error if there is an error evaluating the command + list. + + * src/tree.cc (tree_prefix_expression::eval_error ()): New function. + (tree_postfix_expression::eval_error ()): Ditto. + (tree_unary_expression::eval_error ()): Ditto. + (tree_binary_expression::eval_error ()): Ditto. + (tree_simple_assignment_expression::eval_error ()): Ditto. + (tree_multi_assignment_expression::eval_error ()): Ditto. + (tree_colon_expression::eval_error ()): Ditto. + (tree_index_expression::eval_error ()): Ditto. + + * src/tree.cc (tree_function::stash_function_name ()): New function. + * src/parse.y (FCN): Use it. + + * src/lex.l: Return line and column info for many (but not all) + tokens. + + * src/parse.y: Handle token values with the token class defined in + token.cc. + (check_end ()): New function. + (end_error ()): Improve error messages by including line and + column info. + + * src/arith-ops.cc (lots of functions): Don't jump to top level on + errors. + * src/tree.cc (tree_unary_expression::eval ()), + tree_binary_expression::eval ()): Handle error condition here. + + * src/gripes.cc (gripe_nonconformant): Add additional form of this + function to allow message to include dimensions. Change most + callers to use new form + + * src/octave.cc: Initialize column counter to 1, not 0. + (main): Reset error_state before evaluating each top level + command. + + * src/tree-plot.cc (tree_plot_command::eval ()): If error_state, + return immediately. + + * src/tree-const.cc (do_binary_op ()): Return tree_constant() instead + of jumping to top level on errors. + (do_unary_op): Likewise. + (tree_constant_rep::eval ()): If error_state, return immediately. + Convert 1x1 matrices to scalars. + + * src/tc-assign.cc (tree_constant_rep::do_scalar_assignment ()): + Don't jump to top level on error. + If there is an error while attempting to convert an undefined + variable to a matrix, don't suddenly create an empty matrix. + (tree_constant_rep::fortran_style_matrix_assignment ()): Check + return value of range_max_check() and don't jumpt to top level on + errors. + (tree_constant_rep::vector_assignment ()): Check return value of + index_check and don't jump to top level on errors. + (tree_constant_rep::check_vector_assign ()): Don't jump to top + level on errors. + (tree_constant_rep::do_matrix_assignment ()): Check return value + of index_check and don't jump to top level on errors. + + * src/tc-extras.cc (get_dimensions ()): Call error (sets error state) + but don't jump to top level on errors. + (fill_matrix): Return tree_constant() on error. + (identity_matrix): Likewise. + + * src/error.cc (error_state): New global variable, initialize to zero. + (error): Set it to one. + + * src/tc-index.cc (tree_constant_rep::valid_as_scalar_index ()): + Don't declare unused variable retval. + (tree_constant_rep::do_scalar_index ()): Return tree_constant() + instead of jumping to top level on error. + (tree_constant_rep::fortran_style_matrix_index): Don't jump to top + level on indexing or range errors. + (tree_constant_rep::do_vector_index ()): Likewise. + (tree_constant_rep::do_matrix_index ()): Likewise. + + * src/tc-inlines (range_max_check): Return -1 instead of jumping + to top level on error. + (index_check): Likewise. + + * src/utils.cc (check_dimensions): Call error, not warning, and + don't jump to top level. + + * src/tree-base.h (line_num, column_num): New data members for all + tree classes. + (line (), column ()): New virtual functions to access line and + column info. + + * src/lex.l (enum end_tok_type, enum plot_tok_type): Delete + declarations (now in token.h). + + * src/lex.h (YY_INPUT, YY_FATAL_ERROR, DO_COMMA_INSERT_CHECK, + TOK_RETURN, BIN_OP_RETURN): Move macro definition here, from + lex.l. Rename RETURN TOK_RETURN. + + * src/token.cc, token.h: New files that define a class for tokens + that includes line and column information. + +Wed Sep 29 11:15:12 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/octave.cc: Use GNU getopt to handle option parsing. + * src/getopt.h src/getopt.c src/getopt1.c: New files for GNU + getopt. + * src/Makefile.in: Add them to the appropriate lists. + + * src/utils.cc (raw_mode): Use the termios.h terminal driver + interface if it is available. + * configure.in: Check for termios.h + + * src/tree-plot.cc (tree_subplot_list::print (int, ostrstream&)): + If the data to be plotted is a string but it doesn't name a file, + try sending it to gnuplot directly. + +Tue Sep 28 16:06:42 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/QPSOL.cc (QPSOL::minimize (double&, int&, Vector&)): + Correct dimensions of work arrays, based on QPSOL source. + Pass ncon, which is max (1, nclin), not n, as the row dimension of + clin. + + * src/f-npsol.cc (linear_constraints_ok): Improve warning for the + case of constraints with zero dimensions. + (nonlinear_constraints_ok): Likewise. + +Mon Sep 27 01:20:50 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.75.3. + + * Makefile.in (dist): Make file permissions for distribution rw. + (binary-dist): Ditto. + (local-dist): Ditto. + +Sat Sep 25 15:29:20 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/pr-output.cc: Include stdio.h, for sprintf. + + * src/input.cc (octave_gets): Set octave_gets_line to NULL after + freeing it. + + * Version 0.75.2. + + * liboctave/Matrix.cc (Matrix::operator * (const ColumnVector&): + Correct dimension of return value. + (ComplexMatrix::operator * (const ComplexColumnVector&)): Ditto. + +Tue Sep 21 20:42:10 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/tree.cc (tree_identifier::assign (tree_constant&)): + Correctly handle case of hiding a function with a variable when + the variable has not been flagged as global. + tree_identifier::assign (tree_constant&, tree_constant*, int)): + Likewise. + + * src/variables.cc (force_global): When a variable is moved to the + global symbol table, mark it as global. + + * src/symtab.cc (symbol_record::symbol_record ()): Initialize + forced_global. + (symbol_record::clear_visible ()): Reset forced_global to zero. + (symbol_record::clear_all ()): Ditto. + (symbol_record::mark_as_forced_global ()): New function. + (symbol_record::is_forced_global ()): New function. + (symbol_record::alias ()): Also copy forced_global attribute. + + * src/symtab.h (symbol_record::forced_global): New private data + member, used to record when a variable has been explicitly + declared global. + + * src/lex.l (lookup_identifier): Look in current scope first. + +Mon Sep 20 03:15:52 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/parse.y, src/tree.cc, src/tree.h: Allow `for' command to + assign to an index expression, not just an identifier. + + * src/t-builtins.cc (builtin_clear (int, char **)): Don't delete + g_names twice. + + * src/symtab.cc (symbol_table::list (int&)): Make sure count is + initialized to zero. + (symbol_table::var_list (int&)): Ditto. + (symbol_table::fcn_list (int&)): Ditto. + +Sat Sep 18 04:06:42 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/lex.l, src/parse.y, src/parse.h: Use new global variable + past_plot_range to make gplot and gsplot smarter about + distinguishing plot ranges and literal matrices. + +Fri Sep 17 01:06:30 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.75.1 released. + + * src/f-qzval.cc: Include <float.h> for DBL_EPSILON. + + * src/symtab.cc (symbol_record::save (ostream&, int)): Don't print + a warning for ans being undefined. Call warning to print the + message, and change the text to make it clearer. + (symbol_table::save (ostream&, int)): Don't crash if there aren't + any symbols to save. + +Thu Sep 16 00:21:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/t-builtins.cc (builtin_help): When trying harder to find + help for M-files, only insert the symbol into the global symbol + table if there really is an M-file of the given name in the path. + +Wed Sep 15 02:08:27 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.75. + + * src/Makefile.in (INCLUDES): Distribute defaults.h + (%.d: %.cc): Don't fail if we can't determine dependencies. + (DISTFILES): Include move-if-change. + +Tue Sep 14 21:23:20 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * scripts/perror.m: Use err, not info for fsolve section. + +Mon Sep 13 19:29:26 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/utils.cc (get_m_file_names): Call closedir(), not free(), to + dispose of directory structure. + +Sun Sep 12 19:07:36 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/tree-const.cc (tree_constant_rep::double_value): Rearrange + to avoid warning about reaching end of non-void function. + (tree_constant_rep::matrix_value): Ditto. + + * src/error.cc (panic): Declare volatile. + * src/utils.cc (jump_to_top_level): Declare as `void volatile', + not `volatile void'. + + * src/tree-const.cc (tree_constant_rep::complex_matrix_value): + Make it work even if the internal representation is really a real + or complex scalar or a real matrix. + (tree_constant_rep::complex_scalar_value): Make it work even if + the internal representation is really a real scalar. + + * src/f-syl.cc (syl): Delete ComplexMatrixLoad(). + Use complex_matrix_value(), not ComplexMatrixLoad(). + + * src/tree-const.cc (vector_of_empties): Renamed from empty_tree, + moved from f-syl.cc. + + * src/f-syl.cc (syl): Call vector_of_empties() instead of empty_tree(). + * src/f-qzval.cc (qzvalue): Ditto. + + * src/tree-const.h (tree_constant::is_empty): New inline function. + + * src/f-syl.cc (syl): Call is_empty instead of empty_arg. + * src/f-qzval.cc (qzvalue): Ditto. + * src/f-expm.cc (matrix_exp): Ditto. + +Thu Sep 9 22:40:16 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/Matrix.cc (Matrix::transpose): Make it work for empty + matrices. + (ComplexMatrix::transpose): Ditto. + +Mon Sep 6 04:56:50 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/tree-plot.cc (tree_subplot_list::print): If the plot data + is a string and it names a file, plot the data in the file. + + * src/octave.cc (execute_startup_files): Try harder to avoid + executing $HOME/.octaverc twice. + + * liboctave/DAE.cc (DAE::integrate (Vector&, Matrix&, Vector&)): + Add missing parameter in call to integrate() if no critical points + are specified. + +Sat Sep 4 16:18:49 1993 John W. Eaton (jwe@ward.che.utexas.edu) + + * src/octave.cc (execute_startup_files): Don't execute + $HOME/.octaverc twice. + +Mon Aug 30 11:25:12 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/t-builtins.cc (builtin_clear): Handle regular expressions. + +Fri Aug 27 07:25:32 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/RowVector.cc: + (RowVector::operator * (const ColumnVector& a) const): Fix brain-o. + +Wed Aug 18 00:29:09 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * list_primes.m: New M-file. + + * src/tc-index.cc (do_scalar_index): Handle two vector args of all + ones. + +Tue Aug 17 06:26:04 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/file-io.cc (process_printf_format): Use NINT for * modifier + argument. + +Mon Aug 16 19:30:09 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/mappers.cc: (arg (double)): Return pi for negative real values. + +Sun Aug 15 05:08:48 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/octave-hist.cc (mk_tmp_hist_file): New function, extracted + from do_edit_history. + (do_edit_history): Simplify using mk_tmp_hist_file. + (do_run_history): New function. + (edit_history_repl_hist): New function. + + * src/t-builtins.cc (builtin_run_history): New function. + + * src/builtins.cc (text_functions): Add run_history to the list. + +Fri Aug 13 16:04:09 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tzero.m: New M-file. + * abcdchk.m: New M-file. + * is_symmetric.m: Use tol and norm (A) to decide if A' is close + enough to A to be considered the same. + +Wed Aug 11 15:50:59 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.74.1. + + Merge in expm changes from A. S. Hodel <scotte@eng.auburn.edu>: + + * f-expm.{h,cc}: New files. + * src/Makefile.in: Include them in the usual places. + * src/g-builtins.cc (builtin_expm): The new matrix_exp returns a + tree_constant by value. + Include f-expm.h + * src/tc-extras.cc (matrix_exp): Delete function. + +Tue Aug 10 20:06:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + Merge in qzval changes from A. S. Hodel <scotte@eng.auburn.edu>: + + * f-qzval.{h,cc}: New files. + * src/Makefile.in: Include them in the usual places. + * src/g-builtins.cc (builtin_qzval): New function. + Include f-qzval.h + * src/g-builtins.h: Declare builtin_qzval. + * src/builtins.cc (general_functions): Add qzval to the list. + + * libcruft/eispack: New directory. + * libcruft/Makefile.in (SUBDIRS): Include it. + +Tue Aug 10 20:06:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Add libcruft/balgen/Makefile and + libcruft/eispack/Makefile to the list of files to frob. + +Tue Aug 10 20:06:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + Merge in syl changes from A. S. Hodel <scotte@eng.auburn.edu>: + + * lyap.m: New M-file. + + * f-syl.{h,cc}: New files. + * src/Makefile.in: Include them in the usual places. + * src/g-builtins.cc (builtin_syl): New function. + Include f-syl.h + * src/g-builtins.h: Declare builtin_syl. + * src/builtins.cc (general_functions): Add syl to the list. + +Tue Aug 10 20:06:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/g-builtins.cc (builtin_balance): Fix typo in doc string. + +Tue Aug 10 20:06:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + Merge in givens changes from A. S. Hodel <scotte@eng.auburn.edu>: + + * f-givens.{h,cc}: New files. + * src/Makefile.in: Include them in the usual places. + * src/g-builtins.cc (builtin_givens): New function. + Include f-givens.h + * src/g-builtins.h: Declare builtin_givens. + * src/builtins.cc (general_functions): Add givens to the list. + + * src/Makefile.in: (defaults.h) Quote substitutions. + Use %foo%, not @foo@ to mark substitution. + * src/defaults.h.in: Use %foo%, no @foo@ to do mark things to + substitute. + + * qzhess.m: New M-file. + +Tue Aug 10 20:06:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + Merge in balance changes from A. S. Hodel <scotte@eng.auburn.edu>: + + * are, is_controllable.m, is_observable.m, is_square.m, + is_symmetric.m: New M-files. + + * Matrix.h (AEPBALANCE): New class. + (ComplexAEPBALANCE): New class. + (GEPBALANCE): New class. + * Matrix-ext.cc: Add init functions for balancing classes. + + * src/f-balance.{h,cc}: New files. + * src/Makefile.in: Include them in the usual places. + * src/g-builtins.cc (builtin_balance): New function. + Include f-givens.h + * src/g-builtins.h: Declare builtin_balance. + * src/builtins.cc (general_functions): Add balance to the list. + + * libcruft/balgen: New directory. + * libcruft/Makefile.in (SUBDIRS): Include it. + +Tue Aug 10 20:06:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Use AC_HAVE_LIBRARY to check for -lm. + + * src/Makefile.in (defaults.h): Quote substitutions. + +Mon Aug 9 13:30:07 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * README.NLP: New file. + * Makefile.in (DISTFILES): Distribute it. + +Sun Aug 8 19:05:48 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/move-if-change: New file. + * src/Makefile.in (DISTFILES): Distribute it. + (defaults.h): New rule. + (utils.o): Delete rule, since extra defines are no longer needed. + (INCLUDES): Distribute defaults.h.in. + * src/utils.cc: Include defaults.h to get DEFAULT_PAGER and + OCTAVE_HOME instead of depending on having them defined by the + compile command. + + * configure.in (DEFAULT_PAGER): Use AC_PROGRAMS_CHECK. + If we find less, add `-e' flag, so users won't have to type q to + quit paging. + +Sat Aug 7 13:34:06 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * f-*.cc: Renamed from tc-*.cc. (Use f- as the file prefix + because most of these functions are ultimately implemented in + Fortran, and, most importantly, it keeps them grouped together.) + * f-*.h: New files, for external declarations of visible functions + defined in f-*.cc. + * g-builtins.cc: Include them all. + * tree-const.h: Don't declare these functions as friends. + * Makefile.in: Cope with new names. + + * octave.cc (parse_and_execute (char *, int)): Don't declare static. + * octave.h: Declare it extern here. + * octave-hist.cc (do_edit_history): Use it here. + + * octave-hist.cc (do_edit_history): New function. + * t-builtins.cc (builtin_edit_history): Use it. + + * t-builtins.cc, t-builtins.h, builtins.cc: Rename edit to + edit_history. + + * octave-hist.cc (do_history): Print line numbers by default. + Allow quieter output with -q option. + + * g-builtins.cc (builtin_hess): Use DLD_BUILTIN macro to call hess. + * g-builtins.cc (builtin_schur): Likewise + + * tc-hess.cc (builtin_hess_2): Call hess with corrrect args. + * tc-schur.cc (builtin_schur_2): Likewise, for schur dude :-). + + * tc-fsqp.cc (builtin_fsqp_2): Fix typo. + +Thu Aug 5 23:14:01 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * input.cc (octave_read): Ensure that the last character in the + buffer is a new line. + +Wed Aug 4 19:25:54 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * parse.y (func_def2): Also warn if we encounter a function + definition with the same name as the script file we are reading. + + * tree.cc (tree_identifier::do_lookup): Always return NULL_TREE if + a script file was executed. + +Tue Aug 3 23:25:45 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * file-io.cc: Delete useless static keyword from File_info class + declaration. + * unwind-prot.cc: Likewise, for unwind_elem and saved_variable + classes. + * tc-rand.cc: Likewise, for enum rand_dist declaration. + * arith-ops.cc: Likewise, for enum Matrix_bool_op declaration. + * tree.cc: Likewise, for struct const_matrix_list declaration. + +Fri Jul 23 01:40:38 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * sysdep.cc (malloc_handler): Add missing arg to call to message(). + +Tue Jul 20 04:09:32 1993 John W. Eaton (jwe@june.che.utexas.edu) + + * Version 0.74 released. + + * doinstall.sh (version): Run `./octave -v' to get the version + number instead of grabbing it from version.h. + * Fail if we can't get a version number. + * Install ./octave, not src/octave. + + * Makefile.in (binary-dist): Don't depend on all. + * Link src/octave to ./octave. (Now that there's no source in + binary distributions, why have a src directory?) + + * file-io.cc (process_scanf_format): Rename local variable `i' to + `chars_from_fmt_str'. + * (process_printf_format): Likewise. + + * sighandlers.cc (can_interrupt): New global variable. + * (sigint_handler): Use it to decide whether to jump to top level. + * octave.cc (main): Set it after calling setjmp. + + * octave.cc (main): Declare saved_sigint_handler to be volatile. + + * tree.cc, tree-plot.cc, t-builtins.cc, pager.cc, g-builtins.cc, + file-io.cc: Terminate strstream strings with ends instead of just + using '\0'. + + * file-io.cc (process_scanf_format): Skip leading white space for + %s conversions. + * (fopen_file_for_user): Pass tree_constant arg by reference. + * (do_scanf): If doing fprintf, don't fail if first arg is a + string. + +Mon Jul 19 16:00:22 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * symtab.cc (pstrcmp): Declare to take char** args, not char*. + +Sun Jul 18 13:02:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * file-io.cc (return_valid_file): Pass arg by reference. + + * file-io.cc (fclose_internal, fgets_internal, fseek_internal): + Eliminate unnecessary casts to double. + + * file-io.cc (return_valid_file, fgets_internal, fopen_internal, + do_printf, do_scanf): Use is_string_type instead of doing the + comparison ourselves. + * g-builtins.cc (builtin_exist, builtin_getenv, + builtin_shell_command): Ditto. + * tc-colloc.cc (collocation_weights): Ditto. + * tc-extras.cc (eval_string, get_user_input): Ditto. + * tc-rand.cc (rand_internal): Ditto. + * tree-plot.cc (tree_subplot_list::print): Ditto. + * variables.cc (is_valid_function, octave_string_variable): Ditto. + +Thu Jul 15 02:29:03 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * doc/Makefile.in (TEXINFO): Distribute texinfo.tex too. + + * t-builtins.cc (load_variable): Warn if replacing local symbol + with global from file. + * Warn if variable is not marked as global in a file, but already + exists as a global symbol, then go ahead and load it as a global. + +Tue Jul 13 01:47:48 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l (lookup_identifier): Never alias to global here. + * tree.cc (do_lookup): Don't alias formal parameters to global. + * variables.cc (force_global): Likewise. + * symtab.cc (symbol_table::bind_globals): Likewise. + + * symtab.h (symbol_record::formal_param): New field. + * symtab.cc (symbol_record::mark_as_global_parameter): New function. + * (symbol_record::is_formal_parameter): Ditto. + * tree.cc (tree_identifier::mark_as_formal_parameter): Ditto. + * (tree_parameter_list::mark_as_formal_parameters): Ditto. + * parse.y (param_list): Use it to tag formal parameters. + * (func_def1): Ditto. + + * arith-ops.cc (DIVIDE_BY_ZERO_ERROR): On IEEE machines, allow + divide by zero errors to be suppressed. + * user-prefs.h (warn_divide_by_zero): New user preference. + * user-prefs.cc (warn_divide_by_zero): New function. + * builtins.cc (builtin_string_variables): Install it with default + value of true. + + * tree.cc (tree_multi_assignemnt_expression): Use tree_return_list + instead of tree_param_list. + * (tree_multi_assignment_expression:eval): Make it work. + + * tree.cc (tree_return_list): New class. Allow index expressions + and identifiers in return lists. + * (tree_matrix::to_return_list): Rename from to_param_list. + * parse.y (expression): Use it. + + * parse.y: Increment and decrement maybe_screwed_again instead of + just setting it to zero or one. + +Mon Jul 12 03:23:40 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tc-assign.cc (tree_constant_rep::do_matrix_assignment): Handle + case of lhs being of unknown type. + + * lex.l (check_for_garbage_after_fcn_def): Also ignore trailing + commas and semicolons. + +Sun Jul 11 00:08:20 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.73.1 released. + + * symtab.cc (symbol_record::alias): Also copy pointer to sv_fcn. + +Sat Jul 10 14:34:00 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_function::eval (int, char **, int): New function. + + * symtab.cc (symbol_table::bind_globals): New function. + * tree.cc (tree_function::eval): Use it to associate local symbols + with global data. + + * symtab.cc (alias): Add optional parameter `force'. + + * Version 0.73 released. + + * pr-output.cc: Use D_NINT instead of NINT in some cases to avoid + overflow problems on systems that don't have IEEE Inf. + * mappers.cc (round): Likewise. Also avoids conversion of Inf to + INT_MAX on systems that do have IEEE Inf. + + * builtins.h: Remove definition of NINT. + * tree.h: Likewise. + * tree-const.h: Likewise. + + * utils.cc (NINT): Move function here and improve handling of + extreme values. + * (D_NINT): New function. + + * scripts/isempty.m: Don't require the number of rows and columns + to both be zero. + +Thu Jul 8 16:25:50 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.72.2. + + * configure.in: Do a better job of grabbing the last argument as + the target_host_type and avoiding setting it to things like + --prefix=/foo/bar + + * tree-const.cc (tree_constant_rep::save): Add default case for + mark_as_global switch to avoid warnings from gcc. + + * variables.cc (force_global): Cope with symbol table changes. + * tree.cc: (tree_identifier::do_lookup): Likewise. + * lex.l (lookup_identifier): Likewise. + * builtins.cc (install_builtins): Likewise. + + * symtab.cc, symtab.h: Massive internal rewrite. + +Wed Jul 7 02:18:01 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tc-assign.cc (tree_constant_rep::do_scalar_assignment): If rhs + is a scalar type, also handle case of lhs being of unknown type. + * Be sure to set the new type of the lhs. + + * tree-base.h: Don't include symtab.h. + * tree-const.h: Ditto. + +Tue Jul 6 22:47:28 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * parse.y (func_def2): Remove the function name from the top-level + symbol table if defining on command line (an M-file would never be + parsed if there was already an entry with the same name in the top + level symbol table). + + * parse.y (word_list_command): Allow clear without any arguments. + * tree.cc (word_list_command::eval): Handle word list commands + with no arguments. + +Mon Jul 5 14:43:30 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.72.1. + + * help.cc (operators): Document the double quote character. + + * lex.l (getting_help): Delete unused variable. + * (HELP_FCN): New exclusive start state. + * ({IDENT}{S}*): Set start state to HELP_FCN instead of setting + getting_help. + * ({IDENT}/{S}*=): Likewise. + + * symtab.cc (symbol_table::load): Delete unused function. + + * tree-const.cc (tree_constant::load): Return flag telling whether + the constant is global. + * t-builtins.cc (builtin_load): Handle global variables. + * (builtin_save): Likewise. + + * symtab.cc (symbol_record::save): Don't save builtin variables + (variables marked as eternal are assumed to be builtin). + + * symtab.cc (symbol_record::mark_from_global): New function. + * (symbol_def::undefine): Add optional argument to prevent + deleting symbol's definition. + * (symbol_table::undefine): If this variable has been marked as + defined from a global, call symbol_def::undefine with arg = 1. + * tree.cc (tree_identifier::do_lookup): If a local symbol is + defined from a global, mark it as such. + + * symtab.cc (symbol_record::define (symbol_record*)): Delete + unused function. + + * tree.cc (tree_identifier::do_lookup (int&)): Use operator= + instead of symbol_record::define(). + * variables.cc (force_global (char*)): Likewise. + +Sun Jul 4 01:27:44 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * symtab.cc (symbol_record): Define copy constructor and operator=. + + * builtins.cc (install_builtins): Make `i' and `j' read-only + functions. + + * symtab.cc (symbol_record::define): Respect read-only status of + variables and functions. + +Sat Jul 3 19:11:31 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * user-prefs.h (print_empty_dimensions): New user preference variable. + * user-prefs.cc (print_empty_dimensions): New function. + * builtins.cc (print_empty_dimesions): Make default value true. + * tree-const.cc (tree_constant_rep::eval): Use value here. + + * cond.m: Handle empty matrices. + * tc-det.m (determinant): Likewise. + * tc-inv.m (inverse): Likewise. + + * tc-hess.cc (hess): Use gripe_square_matrix_required instead of + calling error. + * tc-schur.cc (schur): Likewise. + + * builtins.cc (propagate_empty_matrices): Change default value to + true. + + * tree-const.cc (tree_constant_rep::eval): If a matrix has zero + rows or columns, also print the dimension along with the `[]' + symbol. + + * tree-const.cc (do_binary_op): If ok to propagate empty matrices, + go ahead and do the binary operation so that the result will have + consistent dimensions. + * (do_unary_op): Likewyse. + + * tc-extras.cc (get_dimensions): Don't force both nr and nc to + zero if one is. + * Matrix.cc, DiagMatrix.cc, ColVector.cc, RowVector.cc: Handle + matrices with zero dimensions in a more consistent fashion. + +Thu Jul 1 00:27:01 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * perror.m: New M-file. + + * LP.h, LP.cc: New interface for linear programmming. + * LPsolve.h LPsolve.cc: New files to implement linear programming + using lp_solve. + + * NPSOL.cc (minimize): Also return the vector of Lagrange + multipliers. + * tc-npsol.cc (npsol): Optionally return them. + + * QPSOL.cc (minimize): Also return the vector of Lagrange + multipliers. + * tc-qpsol.cc (qpsol): Optionally return them. + + * tc-qpsol.cc (qpsol): Make it work. + +Wed Jun 30 02:19:00 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.cc (builtin_lpsolve): New function. + * (builtin_qpsol): Ditto. + * builtins.cc (general_functions): Add them to the list. + + * tc-lpsolve.cc: New file. + * tc-qpsol.cc: Ditto. + * src/Makefile.in: Add them to the list of SOURCES and DLD_OBJECTS. + +Tue Jun 29 15:02:07 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/DAE.cc (integrate): If stop_time_set is false, reset + default value for info[3]. + * liboctave/ODE.cc (integrate): Likewise, reset default values of + iopt and itask. + + From Thorsten Ohl <ohl@physics.harvard.edu>: + * config.guess: Add check for NeXT. + * configure.in: Add check for NeXT so that readline is configured + properly (really need to improve readline's configuration scheme). + * sysdep.cc (malloc_handler): New function for handling malloc + errors on NeXT systems. + + * octave.cc (main): Call sysdep_init before anything else. + + * sysdep.cc: New file for system dependent things. + + * octave.cc (initialize_globals): Only pass argv[0] since that's + the only thing that's used. + +Sat Jun 26 13:00:50 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_builtin::eval (int, char**, int)): Don't panic if + called for something other than a text_fcn. + + * t-builtins.cc (builtin_cd): Rewrite to fix bogus memory + problems. + +Fri Jun 25 15:23:03 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * t-builtins.cc (builtin_cd): Don't delete value returned by + get_working_directory. + * g-builtins.cc (builtin_pwd): Likewise, and simplify. + + * utils.cc (make_absolute): Always create a new copy to return. + * utils.cc (change_to_directory): Don't delete pointer returned + from get_working_directory(). + * (file_in_path): Likewise. + +Thu Jun 24 16:48:38 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l ({IDENT}{S}*): Always insert a comma if the next token + doesn't look like some sort of operator, not just if + convert_spaces_to_comma is also true (it may have been turned off + by BIN_OP_RETURN). + + * tree-const.h (matrix_ptr): Delete function. + * tc-extras.cc (frobit): Delete function. + * (get_dimensions): New function. + * (identity_matrix): Completely rewrite. + * (fill_matrix): Likewise. + +Wed Jun 23 13:50:16 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Matrix-ext.cc (SCHUR::init): Also allow ord flag to be lowercase. + * (ComplexSCHUR::init): Ditto. + * tc-schur.cc (schur): Likewise. + + * Matrix-ext.cc (SCHUR::init): Declare sort as char, not char*, + and pass its address to Lapack. + * (ComplexSCHUR::init): Ditto. + + * Matrix-ext.cc (SCHUR::select_dig): Make static, and move ahead + of first reference in file. + * (SCHUR::select_ana): Likewise. + * (ComplexSCHUR::select_complex_dig): Likewise. + * (ComplexSCHUR::select_complex_ana): Likewise. + + * builtins.cc (install_builtins): Add `J' as an alias for `I'. + + * builtins.cc (install_builtins): Always create a new + tree_constant for each variable, since the symbol table doesn't + know how to share them. + + * tc-schur.cc (schur): Use warning and error functions instead of + writing directly to cerr. + * tc-hess.cc (hess): Ditto. + + * src/Makefile.in (DLD_OBJECTS): Include tc-schur.o and tc-hess.o. + * (SOURCES): Add tc-schur.cc tc-hess.cc. + + * Merge Schur and Hessenberg changes: + + Fri Mar 19 11:01:19 1993 R. Bruce Tenison (btenison@eng.auburn.edu) + + * src/builtins.cc: Changed schur definition to include one more + input. Also changed the help line description + * src/g-builtins.cc: Changed builtin_schur to accept two inputs + Also changed the information to explain ordered schur operation. + * src/tc-schur.cc Added extensions to the SCHUR and ComplexSCHUR + calls to pass extra paramater. Also added check for proper param. + * liboctave/Matrix.h: Modified declarations dgeesx and zgeesx to + accept address of select function. Modified class structures for + SCHUR and ComplexSCHUR to accept extra ordered schur param. + * liboctave/Matrix-ext.cc: Added extensions for the extra ordered + schur paramater. + + Wed Mar 17 15:23:14 1993 R. Bruce Tenison (btenison@eng.auburn.edu) + + * liboctave/Matrix-ext.cc (HESS and ComplexHESS): Added the + Hessenburg decomposition routines. + * liboctave/Matrix.h Added fortran lapack functions definitions + used in the Hessenburg procedure. + * src/g-builtins.cc (builtin_hess): Hessenburg Decomposition routine + added + * src/g-builtins.h (builtin_hess): Added extern definition. + * liboctave/Matrix.h Added classed HESS and ComplexHESS + * src/tree_const.h added defs for hess. + * src/tc-hess.cc (hess): New file for hess function. + + Tue Mar 16 10:46:32 1993 R. Bruce Tenison (btenison@eng.auburn.edu) + + * src/g-builtins.cc (builtin_schur): Schur Decomposition routine + added. + * src/g-builtins.h (builtin_schur): Added extern definition. + * liboctave/Matrix.h Added Classes SCHUR and Complex SCHUR, and + added defs for zgeesx and dgeesx (lapack schur decomp) + * liboctave/Matrix-ext.cc (SCHUR and Complex SCHUR): Ditto. + * src/tree-const.h added defs for schur. + * src/tc-schur.cc (schur): New file for schur function. + +Tue Jun 22 20:18:52 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l (check_for_garbage_after_fcn_def): New function + * parse.y (fcn_end_or_eof): If reading from an M-file, use it to + print warning about trailing garbage after the end of a function + has been found. + +Mon Jun 21 20:21:01 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tc-assign.cc (tree_constant_rep::assign): Handle case of + assignment to unknown constant too. + * (tree_constant_rep::do_scalar_assignment): Don't fail for + unknown_constant type. + * (tree_constant_rep::do_matrix_assignment): Likewise. + + * tree-const.cc (rows): Return 0 for unknown_constant type. + * (columns): Likewise. + + * tree.cc (tree_identifier::assign): Defer defining symbol until + assignment is successful. + * When creating a new dummy tree_constant to assign a value to, + leave it an unknown_constant type. + + * tc-assign.cc (do_scalar_assignment): If the right hand side + isn't a scalar, maybe try to resize instead. + * (do_matrix_assignment): For A(:,int) and A(int,:) cases, also + resize if left hand side is a scalar. + + * norm.m: Allow "fro" to work for scalars and vectors too. + +Sun Jun 20 01:17:03 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * NLConst.cc: New file. Move inline function definitions here + from NLConst.h. + + * Objective.cc: New file. Move inline function definitions here + from Objective.h + + * tree.cc (tree_word_list_command::eval): Call strsave for argv[0] + too, and delete argv before returning. + * (tree_builtin::eval): Likewise, for text functions with no + arguments. + +Sat Jun 19 01:37:09 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (parse_and_execute): Delete calls to delete_buffer + and switch_to_buffer, since that is taken care of by unwinding the + frame. + +Fri Jun 18 00:08:36 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_matrix::eval): Delete useless direct = ptr->direct + and ptr = ptr->next statements from size-determining loop. + + * parse.y (opt_list): New rule. Replace all occurrences of list + with opt_list. + + * tree.cc: (tree_index_expression::eval (int, int)): Don't + complain if the index expression has an empty argument list. + + * octave.cc (initialize_globals): Check return value of + getenv ("HOME") against NULL, not the global variable + home_directory that we are trying to initialize. + + * tree.cc (tree_function::eval): Quick return if command list + is empty. + * parse.y (func_def3): Allow empty function bodies. + +Thu Jun 17 02:08:02 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_while_command): Add constructor for case of + expression only. + * parse.y (statement): Allow empty command list for while commands. + + * parse.y (list): Allow empty commands in more places. This ups + the shift/reduce error count by 6, to 19. + + * octave.cc (execute_startup_files): Don't delete sd. + + * octave.cc (initialize_globals): Make copies of all strings. + * Store more humorous messages if things fail. + +Tue Jun 15 11:03:39 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tc-extras.cc (get_user_input): Finish incomplete change to get + input using readline. + + * tc-extras.cc (match_sans_spaces): New function. + * (get_user_input): Use it when checking to see if the user + entered a `quit' command. + + * liboctave/Makefile.in: Don't distribute Makedeps.in or include + Makedeps since we generate dependencies automatically now. + * configure.in: Don't create liboctave/Makedeps. + +Sun Jun 13 18:31:17 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/xdiv.cc (xdiv): Solve least-squares problem if system of + equations is not square, or if it is singular. + * (xleftdiv): Likewise. + + * liboctave/Matrix.h (Matrix::lssolve): New functions for + least-squares solutions of linear systems. + * (ComplexMatrix::lssove): Ditto. + +Sat Jun 12 19:07:07 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * libcruft/misc/xstopx.f (xstopx): Call dostop, not do_stop. + * libcruft/misc/dostop.c: Rename from do_stop.c + * (dostop): Likewise. + + * src/mappers.cc (xisnan (double)): Define even for systems that + don't have xisnan by always returning false. + * (xisnan (const Complex&)): Likewise. + +Fri Jun 11 19:54:58 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * doc/Makefile.in (install): Try harder to install info files. + + * libcruft/Makefile.in (install): Run ranlib on installed library. + * liboctave/Makefile.in (install): Ditto. + * readline/Makefile.in (install): Ditto. + +Thu Jun 10 00:15:41 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.72 released. + + * libcruft/*/*.f: Don't call xstopx with '' since some Fortran + compilers object to zero-length strings. + * libcruft/misc/xstopx.f (xstopx): Don't print empty strings or + single blanks. + * libcruft/misc/gen-d1mach.c (main): Likewise, for generated code. + + * test/Makefile.in (check): Set the Tcl variable OCTAVE_PATH. + * test/config/unix-octave.exp: Pass OCTAVE_PATH to OCTAVE using + the new -p flag. + + * builtins.cc (install_builtins): Use load_path instead of calling + default_path(). + + * octave.cc (load_path): New global variable. + * (initialize_globals): Initialize it here by calling default_path(). + * (main): Call initialize_globals() before getting command line + arguments. + * Accept new argument, -p PATH. + + * octave.cc (clean_up_and_exit): Don't print a message when Octave + exits. + + * doinstall.sh: Install M-files in $(libsubdir), not $(libdir). + * Use mkpath to create directories. + * Extract version from version.h. + + * Makeconf.in (version): Compute version just once. + + * (libsubdir): New directory that includes version number, for + installing M-files in (old versions of Octave may not be able to + understand new M-files). + + * src/Makefile.in, libcruft/Makefile.in, liboctave/Makefile.in, + doc/Makefile.in, readline/Makefile.in, scripts/Makefile.in + (install): Use mkpath to create directories. + * scripts/Makefile.in (install): Install M-files in $(libsubdir), + not $(libdir). + + * mkpath.c: New file, from Emacs-19. + * Makefile.in (mkpath): New rule. + * (all): Depend on mkpath + * (binary-dist): Distribute it. + + * config.guess: Update from bothner@cygnus.com. + + * lex.l (<STRING>{QSTR}*[\n\']): Set start state to 0 or MATRIX, + depending on value of braceflag. + * (<DQSTRING>{DQSTR}*[\n\"]): Ditto. + + * tree.cc (tree_matrix::eval): Make sure that strings are nul + terminated. + +Tue Jun 8 16:08:10 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (clean_up_and_exit): Print `bye-bye' here. + * g-builtins.cc (builtin_quit): Not here. + + * pager.cc (terminal_columns): If screenwidth <= 0, return a + default value of 80 columns. + * (terminal_rows): Likewise for screenheight and a default of 24 + rows. + + * octave.cc (parse_and_execute): Don't fiddle with interactive + states since that screws paging output. + * tree.cc (parse_m_file): Likewise. + + * parse.y (input): For `simple_list error END_OF_INPUT' and + `error END_OF_INPUT' use ABORT_PARSE. + * Always accept `simple_list END_OF_INPUT'. + * Always abort for `END_OF_INPUT'. + +Mon Jun 8 13:55:41 1993 John C. Campbell (jcc@schoch.che.utexas.edu) + + * file-io.h (fopen_file_for_user): New function declaration. + + * file-io.cc (fopen_file_for_user): New function. + * (fgets_internal): If file doesn't exist open it for user, + also return (double) -1 on EOF + * (fseek_internal), (ftell_internal), (frewind_internal), + (do_printf): Ditto. + * (fopen_internal): Remove warn_on_not_open flag, limit warns. + +Mon Jun 7 00:28:13 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * file-io.cc (do_scanf): Use `type' wherever possible instead of + hardcoding name in messages. + * (do_printf): Ditto. + + * file-io.cc (fflush_internal): If flushing stdout, flush output + to the pager instead of calling fflush on a stream. + * (do_printf): Make fprintf (stdout, ...) exactly the same as + printf (...). + * (do_scanf): Make fscanf (stdin, ...) exactly the same as + scanf (...). + + * tc-extras.cc (get_user_input): Flush output to pager before + prompting for input. + + * libcruft/Makefile.in (DISTFILES): Distribute STOP.patch to show + the changes made to the Fortran sources. + + * libcruft/*/*.f: Replace STOP statements with calls to xstopx, so + that Fortran programs won't just quit on us. + + * libcruft/misc/xstopx.f: New file. + * libcruft/misc/do_stop.c: New file. + * libcruft/misc/Makefile.in (SPECIAL): Add do_stop.c to the list. + * (SPECIAL_DEPEND): Likewise, for do_stop.o. + * libcruft/Makefile.in (CRUFT_OBJ): Ditto. + + * lex.l (")"): Don't pop the top of the in_brace_or_paren stack if + it's empty. + +Sun Jun 6 00:41:28 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * liboctave/CollocWt.cc (init): Always compute Gaussian quadrature + weights instead of trying to compute Radau or Lobatto weights if + the endpoints are included. + * Really do compute roots and derivative weights corresponding to + Legendre polynomials if alpha and beta are zero, even if the + endpoints are included. + +Sat Jun 5 22:19:55 1993 John C. Campbell (jcc@schoch.che.utexas.edu) + + * builtins.cc (builtin_general_functions): Correct max arg counts + for fscanf, scanf, and sscanf. + + * g-builtins.cc (builtin_fscanf): Correct argument checks. + * (builtin_sscanf): Likewise. + + * file-io.cc (fopen_internal): Don't warn for opening new file. + + * file-io.cc (process_printf_format): Handle * for field width and + precision. + * Pass array of arguments and nargin instead of just one arg. + * (do_printf): Call process_printf_format() with new args. + + * file-io.cc (process_scanf_format): New function to handle scanf + dirty work. + * (do_scanf): New function. + +Sat Jun 5 14:09:41 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l (YY_FATAL_ERROR): Redefine here to keep from exiting on + fatal scanner errors. + +Fri Jun 4 16:35:25 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_multi_assignment_expression::eval (int)): Check to + see if result is NULL before trying to use it. + + * tc-extras.cc (get_user_input): Call gnu_readline() to get input. + +Thu Jun 3 00:30:28 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * scripts/*.m: Convert single-quoted strings to use double quotes + since the manual says they are better. + + * Version 0.71.10. + + * doc/Makefile.in (DISTFILES): Distribute octave.info*. + + * Makefile.in (.fname): Delete target and move actions back to the + individual dist targets because this always needs to be done. + * (binary-dist): Strip src/octave. + + * doinstall.sh: New file, for binary distributions. + +Wed Jun 2 15:11:54 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Makefile.in (binary-dist): New target, just like dist, except + also distribute libcruft.a, liboctave.a, libreadline.a and + src/octave. + + * Makefile.in (.fname): New target. + * (links-for-dist): New target. + * (local-dist): Depend on .fname. + * (dist): Depend on .fname and use links-for-dist. + + * octave.cc: Move code to print startup message to just after + option processing so that any messages from startup files will + appear after the normal startup message. + + * utils.cc (get_site_defaults): New function. + * (OCTAVE_HOME): Provide default definition. + + * (SITE_DEFAULTS): Delete definition. + * octave.cc (execute_startup_files): Use get_site_defaults instead. + + * src/Makefile.in (utils.o): Define OCTAVE_HOME to be $(prefix) + here. + + * Makeconf.in: Don't define SITE_DEFAULTS or OCTAVE_M_FILE_DIR. + + * lex.l (do_string_escapes): Recognize `\"'. + +Tue Jun 1 01:28:20 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.71.9. + + * parse.y (maybe_convert_to_ans_assign): Greatly simplify. + + * file-io.cc (File_info): Convert from struct to proper class. + * (valid_mode): New function. + + * parse.y, parse.h, lex.l, tree-extras.cc (convert_to_ans_assign): + Delete unused variable. + + * builtins.cc (SEEK_CUR): Set to 1 to match (normal) system values. + * (SEEK_END): Likewise, set to 2. + + * statdefs.h: New file. + * Makefile.in (INCLUDES): Add it to the list. + * octave-hist.cc: Include it. + * variables.cc (identifier_exists): Likewise. + * utils.cc (is_newer): Likewise. + + * builtins.cc (SEEK_SET): New builtin varible. + * (SEEK_CUR): Ditto. + * (SEEK_END): Ditto. + * (stdin): Ditto. + * (stdout): Ditto. + * (stderr): Ditto. + + * lex.l (strip_trailing_whitespace): New function. + * ({IDENT}{S}*): Use it. + * (<TEXT_FCN>[^ \t\n\;\,]*): Fix to grab trailing spaces. + Use strip_trailing_whitespce() to delete it before returning. + +Mon May 31 21:00:00 1993 John C. Campbell (jcc@june.che.utexas.edu) + + * file-io.cc, file-io.h: New files to implement C-style file + handling and I/O functions. + * (do_printf): Move here from tc-extras.cc. + * (process_printf_format): Likewise. Also renamed from + process_format. + +Mon May 31 00:52:55 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * (tree_function::eval): Now that we can restore values, enable + code to give error for attempts to call functions recursively. + + * octave.cc (parse_and_execute): Use unwind-protect functions to + save and restore state. + * tree.cc (parse_m_file): Likewise. + * (tree_function::eval): Likewise. + * tc-extras (eval_string): Likewise. + + * unwind-prot.cc (saved_variable): New class to hold values of and + pointers to variables we want to restore. + * (restore_saved_variable): New function. + + * unwind-prot.cc (unwind_protect_int_internal): New function. + * (unwind_protect_ptr_internal): Ditto. + * (unwind_protect_var_internal): Ditto. + + * unwind-prot.h (unwind_prot_int): New macro. + * unwind-prot.h (unwind_prot_ptr): Ditto. + * unwind-prot.h (unwind_prot_var): Ditto. + + * variables.cc (symbol_out_of_date ()): Move here from tree.cc. + * (is_valid_function): Fix logic for finding a function + definition, including checking to see if the current symbol + definition is out of date. + + * tree-const.h (is_numeric_or_range_type): New function. + * tree-const.h (is_string_type): New function. + * tree.cc (tree_matrix::eval): Use !is_string_type() instead of + is_numeric_type() to decide that we've seen something other than + a string. + + * parse.y (maybe_warn_assign_as_truth_value ()): New function. + * user-prefs.h (warn_assign_as_truth_value): New preference. + * user-prefs.cc (warn_assign_as_truth_value ()): New function. + * builtins.cc (string_variables): Add it to the list. + + * tree.h (tree_simple_assignment_expression): Rename class from + tree_assignment_expression. + * (tree_assignment_expression): New class, derived from + tree_expression. + * (tree_simple_assignment_expression): Derive from new + tree_assignment_expression class, not tree_expression class. + * (tree_multi_assignment_expression): Ditto. + +Sun May 30 22:40:58 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/Makefile.in (%.d: %.cc): First remove target file, then + redirect into tmp file, and finally move tmp file to target file + only if creating tmp file was successful. + * liboctave/Makefile.in (%.d: %.cc): Ditto. + +Sat May 29 18:18:16 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_constant *tree_multi_assignment_expression + ::eval (int print, int nargout)): New function. + * (tree_constant tree_multi_assignment_expression::eval (int print)): + Use it to do the real work. + + * tree.cc (tree_matrix::to_param_list ()): Also allow index + expressions as long as the argument list is missing. + + * parse.y (ans_expression): Now that assignments are just + expressions, don't convert expressions to assignemnts to `ans' if + they already are assignments. + * maybe_convert_to_ans_assign (tree *expr): New function to do the + real work. + + * tree.cc (tree_multi_assignment_expression:: + is_assignement_expression ()): Return 1. + + * tree-base.h (tree::is_index_expression ()): New virtual + function, returns 0. + * tree.cc (tree_index_expression::is_index_expression ()): Return 1. + + * tree.cc (tree_assignment): Construct from tree_index_expression + and a tree. + * (tree_index_expression::ident ()): New function. + * (tree_index_expression::arg_list ()): New function. + + * parse.y (variable): New rule, returns tree_index_expression. + + * parse.y: Rewrite assignment rules so that they are simply + expressions, not special cases. + * Rearrange fact and expression rules into expression (assignement + or simple expression), simple_expr (binary and postfix expressions + or secondary simple expression), and simple_expr1 (constants and + prefix expressions) rules. + * Delete fact rules. + + * parse.y: Make EXPR_EQ and EXPR_NE have the same precedence as + the other relational operators. + +Fri May 28 10:14:01 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * unix-octave.exp: Delete use of OCTAVEFLAGS. + + * test/config: New directory. + * test/config/Makefile.in: New file. + * test/config/unix-octave.exp: Rename from test/octave-init.exp. + * test/Makefile.in (SOURCES): Delete octave-init.exp from list. + * configure.in: Add test/config/Makefile to the list of Makefiles + to build. + + * utils.cc (send_to_plot_stream): Plot lines by default. + +Thu May 27 08:03:31 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l (\]): Don't pop the top of the in_brace_or_paren stack if + it's empty. + + * tree.cc (tree_matrix::eval): Make it work for single element + strings as well. + + * Version 0.71.8. + + * lex.l (next_token_is_postfix_unary_op): New function. + * (<MATRIX>{SN}*\]{S}*): Use it as well, to decide whether to + insert a comma. + * (<MATRIX>{S}+): Likewise. + * ({IDENT}{S}*): Likewise. + +Wed May 26 15:37:27 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * pr-otput.cc (pr_any_float): Use form() now that iostream + formatting bug has been fixed (libg++-2.3.1). + +Mon May 24 15:36:22 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (any_arg_is_magic_colon): New function. + * (tree_builtin::eval) Use it to avoid calling builtin functions + with `:' arguments. + +Sun May 23 14:07:19 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.cc (builtin_fprintf): Correct usage message. + +Fri May 21 10:35:40 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.71.7. + + * octave.cc (main): Always reset_parser() before every call to + yyparse(), not just on a longjmp return. + + * doc/Makefile.in (install): For now, don't try to install + anything. + + * lex.l (<MATRIX>{S}+): Call next_token_is_bin_op() instead of + making the check in line. + * (<MATRIX>{SN}*\]{S}*): Likewise. + * (<MATRIX>{S}+): Likewise. + + * lex.l (looks_like_bin_op): New function. + * (next_char_is_space): Ditto. + * (next_token_is_bin_op): Ditto. + + * lex.l ({IDENT}{S}*): If we're in a brace context and the next + character is an open paren, set convert_spaces_to_comma to 0. + * tree-const.cc (convert_to_str): New function. + * g-builtins.cc (builtin_setstr): New function. + * builtins.cc (builtin_general_functions): Add it to the list. + +Thu May 20 17:56:15 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * doc/Makefile.in (SOURCES): Define to be all .texi files. + * (octave.info): Depend on $(SOURCES). + * (octave.dvi): New target. + * Don't distribute the man page. + + * lex.l (<MATRIX>{S}+): If the next character is a plus or minus + followed by a space or tab, don't insert a comma. This makes + input like [1 + 1] == 2 and input like [1 +1] == [1 1]. + * (<MATRIX>{SN}*\]{S}*): Likewise. + + * lex.l (<MATRIX>{S}+): Use in_brace_or_paren and + convert_spaces_to_comma to decide whether to convert spaces to a + comma. + + * lex.l ({IDENT}{S}*): If we're in a brace context and the next + character is an open paren, set convert_spaces_to_comma to 0. + + * lex.l (<MATRIX>{SN}*\]{S}*): Even if we're still inside some braces, + don't always push a comma onto the input. + + * lex.l (<MATRIX>{SN}*\]): Also grab trailing spaces. + * ({IDENT}): Ditto. + + * lex.l (in_brace_or_paren): New stack to keep track of whether + the closest enclosing scope is a pair of braces or parens. When + we see a `[' or a `(', push a flag on the stack. When we see a + `]' or a `)', pop the top of the stack. + + * lex.l (convert_spaces_to_comma): New flag to control lexer behavior. + * (RETURN): Reset it to 1. + * (most other returns): Reset it to 1. + + * lex.l (BIN_OP_RETURN): New macro. Set convert_spaces_to_comma to 0. + * (most binary operators): Use it instead of RETURN. + + * lex.l (match_any): New function. + +Wed May 19 12:51:54 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Range.cc (nelem_internal): Don't allow ranges with more than + INT_MAX elements. Return -1 to indicate failure. + * tree-const.cc (tree_constant_rep::tree_constant_rep (double, + double, double)): Check nelem() to see if the range is valid. + + * pr-output.cc (all_elements_are_ints (Range&)): We only need to + check the base and the increment, not the limit too. + + * Range.cc (nelem_internal): Move function definition here from + Range.h and do a better job of determining the number of elements + in the range. + +Tue May 18 09:06:20 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.71.6. + + * tc-extras.cc (find_nonzero_elem_idx): Declare inner loop + iteration variables that are used inside later nested loops + in the outer enclosing scope to make this work for old and new + language definitions (see the ARM, chapter 19: "ANSI/ISO + Resolutions", 6.4/6.5: "The statement or statements immediately + controlled by the condition in a selection-statement, or an + iteration-statement introduce an implicit local scope". + * xpow.cc (elem_xpow (Matrix&, Matrix&)): Likewise. + + * tree.cc (tree_identifier::parse_m_file (char*, int)): Set + reading_script_file before calling parse_m_file and restore it + afterward. + +Mon May 17 20:04:54 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.h (prog_name): Declare extern. + * (raw_prog_name): Ditto. + + * f2c-compat.sh (ctest.c): Also write a dummy MAIN_ since gcc 2.4 + doesn't seem to create an executable now if there are unresolved + externals, and the linker wants to see it on Suns. + +Thu May 13 01:06:18 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Makefile.in (DISTFILES): Include Makeconf.in. + + * configure.in: Set defaults for CFLAGS, CXXFLAGS, LDFLAGS, and + FFLAGS. + * Don't substitute CDEBUG, COPTIMIZE, FOPTIMIZE, or CXXOPTIMIZE. + * Use AC_PROGRAMS_CHECK instead of our own code for checking for a + Fortran compiler. + * Add Makeconf to the list of files to create. + + * src/Makefile.in (octave): Use ALL_LDFLAGS instead of LDFLAGS. + + * Makeconf.in (ALL_CFLAGS, ALL_CXXFLAGS, ALL_LDFLAGS): New macros. + * Allow the user to set CFLAGS, CXXFLAGS, and FFLAGS without + screwing things up. + * (CDEBUG, COPTIMIZE, FOPTIMIZE, CXXOPTIMIZE): Delete. + * Provide rules for making .o from .cc or .c files that use + ALL_CXXFLAGS and ALL_CFLAGS. + + * src/Makefile.in: Generate dependencies automatically using the + method described in the GNU make manual. + * liboctave/Makefile.in: Likewise. + + * All Makefile.in files: Set TOPDIR and include $(TOPDIR)/Makeconf. + * Makeconf.in: New file, for most configuration options. + + * tc-rand.cc (rand_internal): Return an empty matrix for rand (0). + +Wed May 12 01:32:36 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (clean_up_and_exit): Call close_plot_stream before + quitting. + + * Version 0.71.4. + + * pr-output.cc (octave_print_internal (ostrstream&, Matrix&)): + Handle wrapping columns neatly, respecting value of split_long_rows. + * (octave_print_internal (ostrstream&, ComplexMatrix&)): Ditto. + * (octave_print_internal (ostrstream&, Range&)): Ditto. + + * user-prefs.cc (split_long_rows): New preference variable and + function. + * builtins.cc (builtin_string_variables): Add to list with default + value == true. + +Tue May 11 02:20:43 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * pr-output.cc (pr_max_internal): Don't count Inf or NaN when + looking for max value. + * (pr_min_internal): Likewise, for min values. + + * pr-output.cc (pr_any_float): Merge pr_float and pr_imag_float. + + * pr-output.cc (any_element_is_inf_or_nan (Matrix&)): New function. + * (any_element_is_inf_or_nan (ComplexMatrix&)): New function. + * (all set_format functions (except Range)): Consider Inf and NaN + when computing field width (we'll either print "Inf" (possibly + with a sign) or "NaN"). + + * pr-output.cc (pr_float): Handle Inf and NaN. + * (pr_imag_float): Ditto. + + * pr-output.cc (set_format_style): Make format short set precision + to 3 and max field width to 8. + + * pr-output.cc (pr_float): Don't print a sign for -0.0. + * (pr_imag_float): Ditto. + + * pr-output.cc (all set_format functions): Return the actual field + width computed or 0 if free format. For complex, return both real + and imaginary field widths. + * Include pager.h for terminal_rows() and terminal_columns(). + + * pr-output.cc (pr_complex): If imaginary part is -0.0, print a + minus sign but convert the value to 0.0 before printing. + + * octave.cc (parse_and_execute (FILE *, int)): Don't use readline + to read commands from files. + * (parse_and_execute (char *, int)): Set reading_script_file + before calling get_input_from_file. + + * Version 0.71.3. + + * src/Makefile.in (deps): New target. + * Update dependencies using the output from running `make deps'. + + * pr-output.cc (set_output_prec_and_fw): New function. + * (set_format_style): Use it. + * (set_format functions): Use user_pref variables for precision + and field width. + + * variables.cc (octave_real_scalar_variable): New function. + * buitlins.cc (builtin_string_varaibles): Add output_precision and + max_field_width to the list (really need a separate list for + numeric values...). + * user-prefs.cc (set_output_max_field_width): New function to be + called when output_max_field_width changes. + * (output_precision): Likewise, for output_precision. + + * sighandlers.cc (pipe_handler_error_count): New global variable. + * (sigpipe_handler): Use it to keep from printing more than one + broken pipe message between prompts. + * (input.cc): Reset pipe_handler_error_count before printing the + prompt. + +Mon May 10 13:06:52 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * sighandlers.cc (sigpipe_handler): Issue warning and return + instead of aborting. + + * user-prefs.cc (all sv_* functions): Don't delete previous value + of a preference string if the new value is bogus. + + * user-prefs.cc (all sv_* functions and all functions that handle + user preferences): Return 0 for success, -1 for failure. + * symbtab.cc (symbol_record::define): Check return value of sv_fcn + and restore previous value on failure. + * symtab.h (sv_Function typedef): Change to return int, not void. + * builtins.h (sv_Function typedef): Ditto. + +Sun May 9 18:25:00 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * user-prefs.cc (all sv_* functions): Issue a warning if the user + gives us something that's not a string. + +Sat May 8 23:40:59 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * ColVector.cc (ColumnVector::min): Upper loop limit is len, not 0. + * (ComplexColumnVector::min): Ditto. + * RowVector.cc (RowVector::min): Ditto. + * (ComplexRowVector::min): Ditto. + +Fri May 7 18:41:29 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * pr-output.cc (set_format_style): New function, extracted from + builtin_format(). + * t-builtins.cc (builtin_format): Call set_format_style to do real + work. + + * pr-output.cc: New file for special formatted printing funcions. + * tree-const.cc (tree_constant_rep::eval): Use new functions. + + * user-prefs.cc (sv_pager_binary): New function. + * user-prefs.h (user_preferences) Add new field, pager_binary. + * builtins.cc (builtin_string_variables): Add PAGER to the list. + * utils.cc (default_pager): New function. + * Makefile.in: Define DEFAULT_PAGER for utils.cc, not pager.cc. + * pager.cc (get_pager): Delete function. + * Use user_pref.pager_binary instead of calling get_pager(). + +Thu May 6 11:05:06 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * pager.cc (pager_buf): Declare as static pointer to ostrstream. + * (initialze_pager): Delete old pager_buf and create new one for + each batch of output. This is needed because once str() is called + for pager buf, it will no longer grow. + + * pager.cc (maybe_page_output): Take care of deleting buffer after + str() is called. + * (flush_output_to_pager): Likewise. + * t-builtins.cc (builtin_ls): Likewise. + * (builtin_set): Likewise. + * (builtin_show): Likewise. + * tc-extras.cc (process_format): Likewise. + * (process_format): Likewise. + * tree-plot.cc (tree_plot_command::eval): Likewise. + +Wed May 5 10:45:39 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.cc (builtin_shell_command): Buffer characters with an + ostrstream and call maybe_page_output instead of writing directly + to cout. + * (builtin_warranty): Likewise. + * tc-extras (do_printf): Likewise. + * tree.cc (tree_identifier::eval): Likewise. + * (tree_assignment_expression::eval): Likewise. + * (tree_multi_assignment_expression::eval): Likewise. + * tree-const.cc (tree_constant_rep::eval): Likewise. + * t-builtins.cc (builtin_help): Likewise. + * (builtin_ls): Likewise. + * (builtin_who): Likewise. + + * user-prefs.h user-prefs.cc (page_screen_output): New preference. + * builtins.cc (string_variables): Add to list with default value + of true. + + * input.cc (octave_gets): If interactive, call flush_to_pager() + before prompting. + + * utils.cc (terminal_rows): Move to pager.cc + * (terminal_columns): Likewise. + * (get_pager): Likewise. + + * pager.h, pager.cc: New file to handle pager stuff. + * src/Makefile.in: Fix things to distribute and compile them. + + * libcruft/Makefile.in (CRUFT_OBJ): Strip $(srcdir)/ and convert + from .f to .o in two steps since some versions of GNU make strip + the leading ./ from the output of $(wildcard), causing my pattern + match to fail if compiling in the source tree. + +Tue May 4 09:13:52 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * symtab.cc (symbol_record::define (symbol_record *)): Delete old + name before saving new name. + * (symbol_record::document): Likewise, for var.help and fcn.help. + + * parse.y (ABORT_PARSE): Renamed from DO_ABORT. + +Mon May 3 01:00:04 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc: Define destructors for every class in tree.h. It + appears that it should always be ok to delete everything in a + command tree once we're done executing it. Function definitions + are still ok because the parser doesn't set global_command to the + tree_function we've built (that's saved somewhere in the symbol + table and shouldn't be deleted until we clear or redefine the + function). + + * utils.cc (pathstring_to_vector): Do memory management here so + callers don't have to. + * (default_path): Likewise. + + * utils.cc (make_absolute): Return current_path (not a copy) since + it is static. + * (get_working_directory): Return the_current_working_directory + (not a copy) since it is global. + + * utils.cc (cleanup_tmp_files): Delete filename when done. + + * parse.y: Replace output to cerr with calls to error() or warning(). + * DO_ABORT: New macro. Use it instead of YYERROR for errors that + we detect, and call yyerror since bison doesn't. + * (param_list1): Detect invalid parameter lists. + * (yyerror): Don't print pointer if it is past the end of the line. + +Sun May 2 13:03:09 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tc-extras.cc (process_format): Use ostrstream instead of a + fixed-size character string to buffer the format. + + * utils.cc (terminal_rows): Get info from readline variable + instead of hardcoded constants. + * (terminal_columns): Likewise. + + * utils.cc (maybe_page_output): New function. + * t-builtins.cc (builtin_help): Use it. + * (builtin_who): Ditto. + * Don't include procstream.h anymore since we no longer need it. + + * utils.cc (jump_to_top_level): Call run_all_unwind_protects () + before jumping back to the top level. + +Sat May 1 20:59:12 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * unwind-prot.cc unwind-prot.h: New files to implement memory + cleanup stuff. + * src/Makefile.in: Distribute them. + + * Version 0.71.2. + + * computer.m: Delete file. + * scripts/Makefile.in (computer.m): Add $(srcdir)/ prefix to + computer.in. + +Fri Apr 30 17:03:04 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Matrix.h (<CLASS>::row (int i)): New function for extracting a + row of a matrix where CLASS is one of Matrix, DiagMatrix, + ComplexMatrix, or ComplexDiagMatrix. + * (<CLASS>:: column (int i)): Likewise for columns. + * (<CLASS>::row (char *s)): Likewise, but selection is done with a + character string. Currently we accept anything beginning with `F' + or `f' to mean the first row and anything beginning with `l' or + `L' to mean the last row. + +Wed Apr 28 14:23:49 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * scripts/computer.in: New template file for computer.m. + * scripts/Makefile.in (computer.m): Generate a custom computer.m + file using $target_host_type. + * (clean): Delete computer.m. + + * configure.in: If last argument is not empty, use its value as + the TARGET. + * If we aren't given a TARGET, use config.guess to find one. + * Substitute target_host_type. + + * config.guess: New file, taken from gdb distribution. + * Makefile.in: Distribute it. + + * tree-const.cc (force_numeric): New parameter, force_str_conv to + allow us to ignore user preference on string to numeric + conversion. + * (make_numeric): Likewise. + + * tree.cc (tree_matrix::eval): Allow range constants in matrix + lists by simply converting them to matrices. + * Ditto for string constants. + +Tue Apr 27 17:21:12 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * utils.cc (smells_like_X11): Delete unneeded function. + * builtins.cc (install_builtins): Don't initialize + graphics_terminal since it's no longer needed. + + * utils.cc (pathstring_to_vector): Call tilde_expand on each + element of the path. + + * mappers.cc: Include float.h for DBL_MAX. + +Wed Apr 21 19:31:12 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * mappers.cc (xisnan (Complex&)): Rename from isnan. + * builtins.cc (mapper_functions): Use xisnan instead of isnan. + * (install_builtins): Special case for linux for geenerating + infinity and NaN. + +Mon Apr 19 14:10:55 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.71.1 released. + + * symtab.cc (char **sorted_list (int& count)) New function. + * (char **sorted_var_list (int& count)): Ditto. + * (char **sorted_fcn_list (int& count)): Ditto. + * t-builtins.cc (builtin_who): Check symbol count too. + + * utils.cc (send_to_plot_stream): Check is_open(), not just the + state of the stream. + * (close_plot_stream): Likewise. + + * procstream.cc, procstream.h: Rewrite, taking a hint from the GNU + fstream class. + +Sun Apr 18 17:40:54 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * t-builtins.cc (builtin_help): Don't call list_in_columns if + there isn't anything to list. + +Fri Apr 16 20:57:15 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Makefile.in (DISTDIRS): List dld here. + * (DISTSUBDIRS): Not here. + +Thu Apr 15 12:17:08 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.71 released. + + * scripts/*.m: Improve help messages for most files. + + * libcruft/Makefile.in: Make libcruft.a here. + * libcruft/Makerules.in: Not here. + + * PLOTTING: New file. + * Makefile.in: Add it to the list of files we distribute. + + * g-builtins.cc (builtin_shell_command): New function. + * builtins.cc (general_functions): Add it to the list. + + * procstream.h, procstream.cc (iprocstream): New class. + + * lex.l (<MATRIX>{SN}*\]): Maybe insert a comma after reading a `]'. + + * t-builtins.cc (builtin_load): Do tilde expansion for the file name. + * (builtin_save): Ditto. + +Wed Apr 14 10:40:44 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_function::eval): Until we have a proper call frame + unwinding scheme, comment out previous change. + + * tree.cc (tree_matrix::eval): Brain Transplant. + * (tree_matrix::length): New function. + + * tree-base.h (matrix_dir): Delete md_none, md_left, and md_up. + The only valid values are md_unknown, md_right, and md_down. + +Tue Apr 13 20:07:25 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.h (tree_function::call_depth): New member variable. + * tree.cc (tree_function::eval): Check it to make recursive + function calls fail (waiting for proper symbol table handling). + + * utils.cc (pathstring_to_vector): Don't prepend `.' here. We do + that already in default_path() if the user hasn't given us a + loadpath. + + * t-builtins.cc (builtin_help): Get help for M-files even if they + haven't been compiled yet. + * List M-files we find in the loadpath. + + * utils.cc (get_m_file_names): Split into two functions, add + parameter to specify whether .m suffix is deleted. + + * lex.l (grab_help_text): New function. + * (beginning_of_function): New global variable. + * (%|#): Call grab_help_text() if at beginning of a function. + * tree.cc (tree_identifier::document): New function. + * parse.y (func_def2): Use it. + * (help_buf): New global buffer for help text. + +Mon Apr 12 00:31:09 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * utils.cc (get_m_file_names): New function. + * variables.cc (make_name_list): Use it. + + * t-builtins.cc (list_in_columns): Put output on an strstream + instead of in a String. + * (builtin_help): Use an strstream instead of a String for buffering. + * (builtin_who): Likewise. + + * g-builtins.cc (builtin_keyboard): New function. + * builtins.cc (general_functions): Add to list. + + * tc-extras.cc (get_user_input): If the user enters `exit', + `quit', or `return', return instead of eval'ing the string. + * Don't abort on empty input. + * Add additional argument to handle debugging via new `keyboard' + function. If doing debugging, keep reading until we see `exit', + `quit', or `return'. + + * menu.m: New M-file. + + * New top level plotting functions: + + plot.m semilogx.m semilogy.m loglog.m polar.m + title.m xlabel.m ylabel.m grid.m bar.m + stairs.m mesh.m meshdom.m contour.m + + * New internal plotting functions: + + plot_int.m plot_2_s_s.m plot_2_v_v.m plot_2_v_m.m + plot_2_m_v.m plot_2_m_m.m polar_int.m + + * New utility functions: + + is_scalar.m is_vector.m is_matrix.m + +Sun Apr 11 11:10:29 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * t-buitlins.cc (builtin_ls): New function. + * builtins.cc (text_functions): Add it to the list under the names + `ls' and `dir'. + +Sat Apr 10 15:13:05 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * procstream.cc (oprocstream::close): Set badbit for stream after + it is closed. + + * utils.cc (close_plot_stream): New function. + * g-buitlins.cc (closeplot): New builtin function. + * builtins.cc (general_functions): Add to list. + + * lex.l (cant_be_identifier): New cruft to properly handle the + plot command's `using', `title', and `with' keywords. + +Fri Apr 9 09:38:25 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Warn if it looks like gnuplot isn't installed. + + * utils.cc (send_to_plot_stream): Check the user's preference for + the gnuplot binary. + + * user-prefs.cc (sv_graphics_terminal): Delete function. + * user-prefs.h (graphics_terminal): Delete variable. + + * tree-plot.cc (tree_subplot_using::print): Add argument to allow + checking of columns given in using command and use it. + * (tree_plot_command::eval): Change caller. + + * parse.y (title): Allow plot title to be any expression. + * tree-plot.cc (subplot_list): Likewise. + + * tree-plot.cc (tree_plot_command::eval): Don't let lusers try to + make 2D parametric plots, since that seems to crash gnuplot. + + * tree.cc (tree_identifier::parse_m_file): Don't try to stash + m-file name or time parsed if we were actually executing a script + file. + + * sombrero.m: New M-file to demonstrate 3D plotting. + + * parse.y (plot_options): Allow them to be specified in any order. + + * g-builtins.cc (builtin_purge_tmp_files): New function. + * builtins.cc (general_functions): Add to list. + + * g-builtins.cc, g-builtins.h (builtin_plot): Delete. + * builtins.cc (general_functions): Delete entry for builtin_plot. + + * t-builtins.cc (builtin_set): Check to see if the user is setting + up parametric plotting. + * tree-plot.cc (parametric_plot): New global variable. + * tree_const.cc (save_three_d): New function. + * tree-plot.cc (tree_subplot_list::print): Handle 3D plots. + + * Makefile.in: Delete everything having to do with distributing or + making gnuplot. + * configure.in: Likewise. + +Thu Apr 8 10:02:52 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * utils.cc (send_to_plot_stream): New function. Move declaration + of plot_stream to utils.cc and make static. + + * t-builtins.cc (builtin_set): New function. + * (builtin_show): Ditto. + + * lex.l: Handle set command. + * (doing_set): Yet another global variable to control behavior of + the lexer. + + * tree-plot.cc (tree_subplot_using::print): Print warning if scanf + format string is given. + + * parse.y (ranges1): Allow lower and upper bounds to be optional. + * tree-plot.cc (tree_plot_range::print): Make it work. + + * tree-plot.cc: New file, extracted from tree.cc. + + * sighandlers.cc (install_signals): New function. + * (*_handler): New set of functions to handle signals that would + otherwise cause us to abort. + * (my_friendly_exit): Call exit from most signal_handlers to clean + up tmp files, etc. + + * lex.l (do_string_escapes): Correctly handle '' quotes. + * Warn about unrecognized escape sequences but convert them to the + escaped character anyway. + * (EXPON): New definition. Use it and ? qualifier to shorten the + expressions for matching numbers. + * (ECHAR): New definition. Use it to correctly match + backslash-escaped characters in strings. + * Definitions: Surround multi-character definitions in ()'s to + avoid potential problems with things like {DEF}*. + * (QQ): Rename from DQ. + * (DQSTR): New definition for strings in double quotes. + * (DQSTRING): New start state. Recognizing a naked " puts us here. + * ("\n"): Turn off quote_is_transpose at the beginning of each line. + * Use error functions instead of writing messages directly. + * Don't include iostream.h -- we don't need it now. + * Do include error.h. + +Wed Apr 7 13:12:17 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * sighandlers.h, sighandlers.cc: New files for signal handling + functions. + * Makefile.in: Include them in the usual places. + * octave.cc (interrupt_handler): Move to sighandlers.cc and rename + to sigint_handler. + + * utils.cc (mark_for_deletion): New function. + * octave.cc (cleanup_tmp_files): New function. + * octave.cc (main): Register cleanup_tmp_files with atexit + (on_exit for sun). + + * Stack.h: Template based stack class converted from libg++ + genclass files. + * SLStack.h: Likewise. + * (SLStack::pop): Avoid apparent bug in SLList::remove_front. + +Tue Apr 6 10:01:52 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l (almost_match): New function. + * (plot_style_token): New function. + + * t-buitlins.cc: Include procstream.h instead of procbuf.h. + * (builtin_help): Simplyfy opening of process output stream. + * (builtin_who): Likewise. + +Mon Apr 5 13:48:20 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tc-extras.cc (tree_constant_to_scalar): Move to tree-const.cc + and make it a member function called to_scalar. + * (tree_constant_to_vector): Likewise. + * (tree_constant_to_matrix): Likewise. + + * procstream.h, procstream.cc: New files/classes that implement + an ostream to a process. Built on top of procbuf from libg++. + * src/Makefile.in: Add them to the lists of files/objects. + +Sat Apr 3 23:11:56 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Lots of clean-up changes to parse.y, tree.cc, tree.h, and + tree-base.h. Use more specific types than just <tree *> for + nonterminals. This allows us to have fewer virtual functions in + the base class. Safer. Cleaner. Should have always been this + way... + +Fri Apr 2 10:04:32 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * parse.y, lex.l: Fix grammar to accept plot command very similar + to the gnuplot plot command. + +Wed Mar 31 13:11:56 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (eval_undefined_error): Until we can figure out how to + clear names without causing problems later on, just remove the + symbol name. + + * tree.h (tree_plot_command): New class. + * (tree_plot_limits): Ditto. + * (tree_plot_range): Ditto. + * (tree_subplot_list): Ditto. + * (tree_subplot_using): Ditto. + * (tree_subplot_style): Ditto. + + * tree-base.h (command_type): Add plot_command to list. + +Mon Mar 29 09:53:50 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * find_exec.c (ABSOLUTE_FILENAME_P): Also return true if the + given filename begins with `.'. + + * DAE.cc, DAE.h, DAEFunc.h, tc-dassl.cc: Make sure all calls to + dassl and the user-supplied functions have consistent argument + lists. + + * octave.cc (raw_program_name): New global variable to hold the + unprocessed argv[0]. This is to help dld find the absolute path + to the executing program. + * (initialize_globals): Pass in argc and argv from main. + Initialize raw_prog_name. + + * builtins.cc (general_functions): Correct help message for dassl. + * g-builtins.cc (dassl_usage): Likewise. + + * src/Makefile.in: Lots of changes to make things work with or + without dld. + * Makefile.in: Likewise. + * configure.in: Likewise. + + * dld: New directory, containing our copy of the dld sources. + + * dynamic-ld.cc, dynamic-ld.h: New files to implement dynamic + loading functions. + * src/Makefile.in: Add them to the distribution, compile them if + doing dynamic loading. + +Sun Mar 28 11:03:15 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: When looking for Fortran compilers, check for fc + last to avoid confusion with some vendor's /bin/sh fc builtin. + * Handle new argument --with-dld. + + * g-builtins.cc (builtin_warranty): Add 1993 to list of copyright + dates. + +Sat Mar 27 17:58:23 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tc-extras.cc: Rename from tree-extras.cc. + * tc-colloc.cc, tc-dassl.cc, tc-det.cc tc-eig.cc, tc-fft.cc, + tc-fsolve.cc, tc-fsqp.cc, tc-ifft.cc, tc-inv.cc, tc-lsode.cc, + tc-lu.cc, tc-npsol.cc, tc-qr.cc, tc-quad.cc, tc-rand.cc, + tc-svd.cc: Split individual functions from tree-extras.cc. + + * g-builtins.cc (npsol_usage): Improve message. + * (dassl_usage): Likewise. + * (builtin_lsode): Likewise. + * (builtin_fsolve): Likewise. + * (builtin_quad): Likewise. + * builtins.cc (general_functions): Improve corresponding messages. + + * libcruft/fftpack: New directory for fftpack functions. + * libcrutf/fftpack/*.f: Add implicit double precision (a-h,o-z) at + the top of every subroutine. + + * tree-extras.cc (fft): Allow propagation of empty matrices. + * (ifft): Ditto. + + * Matrix.cc (Matrix::fourier): New function. + * (Matrix::ifourier): Ditto. + * mx-inlines (make_complex): New function. + * tree-extras.cc (fft): Use Matrix::fourier instead of doing real + to complex conversion here and calling ComplexMatrix::fourier. + * (ifft): Likewise, for ifourier. + +Sat Mar 27 17:56:59 1993 Fook Fah Yap (ffy@eng.cam.ac.uk) + + * Matrix.cc (ComplexMatrix::fourier): New function for fft. + * (ComplexMatrix::ifourier): New function for inverse fft. + + * builtins.cc (general_functions): Add fft and ifft to the list of + builtin functions. + + * g-builtins.cc (fft): New function. + * (ifft): Ditto. + + * tree-extras.cc (fft): New function. + * (ifft): Ditto. + +Sat Mar 27 13:53:39 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (usage_string): New file scope constant. + * (getopt_option_string): Ditto. + + * error.cc: Declare all arguments const since we don't change them. + + * utils.cc (print_str_or_null): Delete unused function. + * utils.h: Delete declaration. + + * tc-assign.cc, tc-index.cc, tc-inlines.cc, tree.cc, + tree-const.cc: More error message cleanups. + + * tree-const.cc (print_if_string): Don't write to cerr + unconditionally. + +Fri Mar 26 22:00:18 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (min): Avoid function calls as arguments for MIN. + * (column_min): Ditto. + * (max): Likewise, for MAX. + * (column_max): Ditto. + + * tree-const.h (NINT): Make it an inline function instead of a + macro. + + * tree-extras.cc (fill_matrix (tree_constant&, double, char*)): + Convert to scalar type for complex values too. + + * error.h (panic_impossible): New macro to be used in place of + assert (0) calls. + * All .cc files: Replace calls to assert (0) and abort () with + panic_impossible (). + + * Many .cc files:: Replace many instances of `cerr << ...' with + calls to gripe() functions. + + * gripes.h, gripes.cc: New functions for reporting common errors. + * Makefile.in: Include them in the usual places. + +Thu Mar 25 18:42:49 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Many .cc files:: Replace many instances of `cerr << ...' with + calls to error() functions. + + * error.h, error.cc: New functions for reporting errors in a + consistent way. + * Makefile.in: Include them in the usual places. + +Wed Mar 17 17:29:44 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * symtab.cc (symbol_table::save): New functions. + * t-buitlins.cc (builtin_save): Use new functions for saving + symbols. Handle case of saving all variables. + + * g-builtins.cc (builtin_pause): If one argument is given, pause + for that many seconds before continuing. Otherwise, wait for user + input. + + * symtab.cc (clear): Actually delete undefined symbol_records and + remove their names from the list. + + * lex.l (lookup_identifier): New function. Avoid putting global + names in the local symbol table. + * ({IDENT}): Use it + * ({IDENT}/{S}*=): Ditto. + + * tc-index.cc (do_scalar_index (tree_constant*, int)): Make + indexing like a([1,1,1,1]) work for scalars. GAG. + +Tue Mar 16 20:08:23 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * t-buitlins.cc (builtin_cd): Call tilde_expand (from readline) on + the argument. + + * lex.l (discard_until): Delete unused function. + * When reading numbers, abort if scanf fails to read a number that + we think it should. + * (IDENT): New macro to match identifiers. + * ([_a-zA-Z][_a-zA-Z0-9]*): Use the / operator for trailing + context and split into two cases instead of trying to do the + lookahead ourselves. + + * lex.l (do_comma_insert_check): Return the value yyleng had + before yyinput() is called. + * (DO_COMMA_INSERT_CHECK): New macro. This avoids the use of + unput() in do_comma_insert_check() since there seems to be a bug + in flex when calling unput() for '\n'. + + Note that this change is necessary if we want to use yyless() + since we cant call yyless() from outside of yylex(), because + Flex's yyless() is a macro that uses some variables local to + yylex(). + +Mon Mar 15 11:03:43 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_matrix::eval): Undo part of previous change to + make a = [1,2;3,4]; [a,a;a,a] work again. + + * parse.y (input): Don't abort for simple_list followed by EOF. + +Sun Mar 14 14:38:56 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * RowVector.cc (RowVector::operator << ()): Insert a space between + each element. + * (ComplexRowVector::operator << ()): Ditto. + + * g-buitlins.cc (plot): Don't declare plot_prog or plot_term as + static, and don't delete them. + + * Matrix.h (all checkelem functions): Don't check for range errors + if NO_RANGE_CHECK is defined. + +Sat Mar 13 10:18:51 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Matrix.cc (ComplexMatrix::prod): Make it work. + +Thu Mar 11 00:08:09 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Matrix.h (ellum): Delete function. + * Declare and define new const elem, checkelem, and operator() + functions. + + * ColVector.cc, DiagMatrix.cc, RowVector.cc, Matrix.cc, ODE.cc, + LinConst.cc, FEGrid.cc, DAE.cc, Bounds.cc, FEGrid.h: + Change all callers. + * tree-const.cc, tree-extras.cc, xdiv.cc, xpow.cc: Ditto. + + * tree.cc (tree_matrix::eval): Improve row and column mismatch + checking -- [[1,2];[3,4]] works now, and [1,2;3,4,[5,6]] is + rejected. + * Reformat error messages to include `error:' prefix. + +Wed Mar 10 14:02:09 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l (do_comma_insert): New global variable. + * (reset_parser): Reset it. + * lex.l (do_comma_insert_check): New function. Call it wherever a + token can be directly followed by '['. + * (\[{S}*): Check the value of do_comma_insert. + + * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only look for names in the + current symbol table. + + * parse.y (word_list_cmd): Special case to disallow use of clear + inside a fuction body. + + * parse.y (CLEAR): New %token. + * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Return it if token is "clear". + + * t-builtins.cc (builtin_clear): Allow global symbols to be + cleared. + + * symtab.cc (symbol_table::undefine): Clarify comment. + * (symbol_table::clear): Don't actually remove names from the + table, just force them to be undefined. + + * tree.h (tree_function): Delete unused data member `id'. + * tree.cc (tree_function constructors): Don't initialize id. + +Mon Mar 8 15:50:28 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.70 released. + + * src/Makefile.in: Update dependencies. + + * tree.h: Include stdio.h, for FILE. + + * gnuplot-build: For now, always define -DNOGAMMA. + * configure.in: Don't check for gamma(). + + * libcruft/Makerules.in: Don't use lib.a(obj.o) style dependencies + because it's too slow for large archives. + * liboctave/Makefile.in: Ditto. + +Sun Mar 7 16:33:39 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (parse_and_execute): Save and restore current column + number. Set input line and column number to zero. + * tree.cc (parse_m_file): Likewise. + + * tree.cc (tree_identifier::parse_m_file (FILE*, int*)): New + function. If a parse error occurs, ensure that the symbol is + cleared from the global symbol table. + * (tree_identifier::parse_m_file (char*, int): Use it. + + * tree.cc (tree_identifier::do_lookup): New function. + * (tree_identifier::eval): Use it. + + * utils.cc (decode_prompt_string): Really do use value of PWD. + + * user_prefs.cc (sv_loadpath, sv_ps1, sv_ps2, sv_pwd, + sv_gnuplot_binary, sv_graphics_terminal): New functions. + * (sv_graphics_terminal): Warn if terminal isn't valid, but set it + anyway (it's too late to do anything by the time the function is + called). + * In functions that use these variables: Use the value from the + user_pref structure instead of doing a symbol table lookup. + + * builtins.cc (builtin_string_variables): Add functions to call + for LOADPATH, PS1, PS2, PWD, gnuplot_binary, and graphics_terminal. + + * builtins.cc (PS2): New builtin_string_variables. Set default + value to "> ". + * input.cc (octave_gets): Use it instead of no prompt for + continued input. + + * parse.y (yyerror): Use line, column, file name, and text of + current input line to print better parse error messages. + + * lex.l (NEW_MATRIX): New exclusive start state. Need this to be + able to match \[{SN}* _and_ get secondary prompting right. + + * input.cc (octave_read): Keep track of current input line. + * tree.cc (parse_m_file): Save and restore current line number. + + * lex.l (all patterns): Keep track of current input column. + * (fixup_column_count): New function to deal with patterns that + match more than one line. + + * input.h, input.cc (current_input_line): Global pointer to + the text of the current input line. + + * parse.y, parse.h (input_line_number, current_input_column): New + global variables. + + * Almost all source files: Finish (for now, at least) the + reorganization we started for global variables. + +Wed Mar 3 14:49:59 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tc-assign.cc, tc-index.cc, tc-inlines.cc: New files, split out + from tree-const.cc. + + * Almost all source files: reorganize so that all global data is + declared in some include file or another. It probably wouldn't + hurt to do some more reorganizing to try to eliminate the amount + of global information... + +Tue Mar 2 20:49:35 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * variables.h, variables.cc: New files for handling things that + need symbol table information. Lots of files changed to include + variables.h, which now includes the extern declarations for the + symbol tables. The declarations of the symbol tables are now in + variables.cc, but they are still initialized in octave.cc. + +Mon Mar 1 11:35:03 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * builtins.h (builtin_string_variables): New field, sv_function, + holds a pointer to the function to call when a variable changes. + * builtins.cc (string_variables): Initialize sv_function field. + * (install_builtins): While installing builtin string variables, + stash sv_function and, if it isn't NULL, call it to initialize + global variable user_pref. + + * symtab.h (symbol_record): New field, sv_fcn, holds a pointer to + the function to call when a variable changes. + * symtab.cc (symbol_record::define): Call sv_fcn if it isn't NULL. + * symtab.cc (symbol_record::set_sv_function): New function. + + * utils.cc, parse.y, tree.cc, tree-extras.cc, tree-const.cc, + idx-vector.cc, builtins.cc, symtab.cc: Instead of calling + functions like do_fortran_indexing(), get the user's preference + from the global struct user_pref. + + * utils.h, utils.cc: Delete all functions like do_fortran_indexing() + that lookup user variables to find integer values. + * user-prefs.h, user-prefs.cc: Move them here, but instead of + returning values, set elements of the new global struct user_pref. + + * user-prefs.h, user-prefs.cc: New files for handling global + variables for user preferences. + * Makefile.in: Add them to the SOURCES and INCLUDES macros. + + * bsd-math/{acosh,asinh,atanh,log1p}.c: Declare all external + functions used in each file since they might not be in math.h. + * bsd-math/{scalb,copysign,logb,finite,drem,sqrt}.c: New files + from BSD's support.c. Only using scalb, copysign, logb, and + finite for now. + + * configure.in: Move tests for f77 closer to the top. + * Allow configuration to proceed even if we can't find a Fortran + compiler or f2c. + * Use `here' documents instead of multiple echos for multi-line + messages. + * Imrpoved checking for missing math functions. + +Sun Feb 28 17:45:53 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * test/Makefile.in (check): Try to avoid errors from cp. + + * mappers.cc (xfinite): Put test for HAVE_FINITE first. + + * libcruft/Makerules.in (LIBCRUFT_DEPEND): Use `=' in assignment + instead of `:='. + + * liboctave/Makefile.in: Make an explicit list of sources instead + of using $(wildcard). + +Thu Feb 25 20:18:12 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * bsd-math/copysign.c: New file. HP's don't have this? + * configure.in (LIBOBJS): Also check for copysign, log1p, and + log__L. For each missing user-level function, add -DFOO_MISSING=1 + to DEFS. + * src/missing-math.h: For each function we declare, check the + corresponding XXX_MISSING macro. Add declarations for copysign + and log1p. + +Wed Feb 24 20:39:32 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l (<MATRIX>{SN}*\]/{S}*==): Change scanning pattern to + <MATRIX>{SN}*\]{S}*/== in order to keep flex from generating any + backtracking code. + * (<MATRIX>{SN}*\]/{S}*=): Likewise. + +Tue Feb 23 02:45:00 1993 John W. Eaton (jwe@ward.che.utexas.edu) + + * Version 0.69 released. + + * mappers.cc [_AIX && __GNUG__] : Provide a definition for + finite(), since whatever version we get from the system when using + g++ doesn't work (note that it does seem to work with gcc, xlc, + and xlC). + + * bugs.texi: Note that the math.h file from libg++ declares + finite() incorrectly for some systems. + +Mon Feb 22 02:04:16 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Look for runtest, but only believe that it exists + if we can also find expect. + * test/Makefile.in (check): Run tests in build directory, not + source directory. + + * tree.cc (reading_script_file): New global variable. + * (parse_m_file): Use it, and properly save and restore state so + that nested script files will work. + + * octave.cc (parse_and_execute): Properly save and restore state + so that nested script files will work. + * Don't close input file here. + + * input.cc (get_input_from (FILE*)): Don't declare mf_instream + static. Set mf_instream if reading and M-file or a script file. + + * parse.y: Minor changes to accomodate new lexer. + + * lex.l: Major overhaul in an attempt to do better string + handling. Looks much simpler and even seems to work. + * (do_string_escapes): New function. + +Sat Feb 20 00:40:32 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.cc (builtin_npsol): If npsol is missing, return empty + matrices for x and phi, and -1 for inform. + + * num2str.m: Use %g, not %f. + + * tree.cc (parse_m_file): Save and restor curr_sym_tab, because + yyparse may mess with it if it encounters a function definition. + * tree-extras.cc (eval_string): Ditto + * octave.cc (parse_and_execute): Ditto + + * Makefile.in (DISTDIRS): Add bsd-math to list. + + * src/Makefile.in (LIBOBJS): New macro, value set by configure. + (vpath): Add @srcdir@/../bsd-math for LIBOBJS. + (octave): Add $(LIBOBJS) to deps. + * gnuplot-build/Makefile.in: Likewise, for notgnuplot. + + * configure.in: Use AC_REPLACE_FUNCS to Check for acosh, asinh, + atanh, and gamma. + + * bsd-math: New directory for functions from the BSD math library + to use as replacements for missing functions. + + * parse.y (semi_comma, comma_semi): New rules. + (simple_list, simple_list1): Use them to allow empty statements. + (list, list1): Likewise. This allows empty commands as long as + the empty command doesn't contain any newlines. + + * parse.y (simple_assign): New rule, allows things like a = b = c. + (multi_assign): Extracted from assignment. + (assignment): Split into simple_assign and multi_assign. + (expression): Allow '(' simple_assign ')' to be an expression. + + * tree-extras.cc (eval_string): Return result of last expression + evaluated, to make things like `eval ('1+1;')*2' work. + +Fri Feb 19 19:45:21 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.cc (builtin_pwd): Use getcwd, which is defined in + unistd.h, instead of getwd, which seems to be a BSDISM. + * utils.cc (decode_prompt_string): Ditto. + * (get_working_directory): Ditto. + + * arith_ops.cc (DIVIDE_BY_ZERO_ERROR): Don't rely on + HAVE_IEEE_MATH, use HAVE_ISINF, HAVE_FINITE, and HAVE_ISNAN + instead. + * configure.in: Don't define HAVE_IEEE_MATH. + + * tree-extras.cc: Include stdio.h for FILE. + +Thu Feb 18 10:17:38 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (gobble_leading_white_space): New function. + * (is_function_file): New function. + + * (parse_m_file): Handle case of .m file being just a file of + commands to execute. + * Add optional argument to specify whether to execute a script + file. + * Return whether a script file was executed. + * (tree.cc, tree-extras.cc): Change callers. + + * octave.cc (parse_and_execute): new functions. + * (execute_startup_files): Use them. + + * lex.l (<COMMENT>\n): Don't gobble new line. + + * num2str.m: Don't print '\n'. + +Wed Feb 17 21:59:55 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * mappers.cc: Simplify and correct finite, isinf, isnan functions. + * test/octave/t7.oct: New test for finite, isinf, and isnan + functions. + + * configure.in: Define HAVE_IEEE_MATH if isnan and either finite + or isinf is available. + + * builtins.cc (mapper_functions): Check HAVE_ISNAN instead of + HAVE_IEEE_MATH to determine whether or not to define isnan(). + + * mappers.cc: Don't check for HAVE_IEEE_MATH. Just check for + individual functions directly. + + * g-builtins.cc (npsol_usage): Correct usage message. + + * g-builtins.cc: Don't include unistd.h unless HAVE_UNISTD_H is + defined. + * t-builtins.cc: Ditto. + * utils.cc: Ditto. + +Tue Feb 16 00:35:44 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.68 released. + + * tree.cc (parse_m_file): Set reading_m_file before calling + get_input_from_file. + * Don't mess with current_infile. + + * input.cc (get_input_from_file): Set mf_instream if we are + reading an M-file. Otherwise, set rl_instream, (even if we aren't + really using readline -- this is just the `normal' input stream). + * Don't use current_infile. + * (octave_read): If not interactive, check reading_m_file to + determine where to look for input. + + * octave.cc (main): Don't use readline if we aren't interactive. + + * libcruft/misc/Makefile.in (local-dist): Make sure we don't + distribute a bogus d1mach.f. + (dist): Ditto. + + * tree-extras.cc (convert_to_ans_assign): New global variable. + (eval_string): Conditionally turn off assignment to `ans', for + get_user_input (). + * parse.y (ans_expression): Use it. + * lex.l (reset_parser): Reset it. + + * g-builtins.cc (builtin_input): New function. + * builtins.cc (general_fucntions): Add it to the list. + * tree-extras.cc (get_user_input): Do most of the real work. + +Mon Feb 15 01:14:40 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * t-builtins.cc (load_variable): New function. + (builtin_load): Use it. + + * Makefile.in (SUBDIRS): Add the test directory. + (check): Don't depend on all. + +Sat Feb 13 05:17:53 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (determinant, lu, matrix_exp, matrix_log, + matrix_sqrt): Handle empty matrix argument. + + * Matrix.h: Add constructors of the form Matrix (double a) and + ColumnVector (double a) to make it even easier to form single + element vectors. + +Fri Feb 12 03:27:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (main): Add -v option that will print the version + string and quit with a successful exit status. + +Thu Feb 11 00:46:34 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (eig): If given an empty argument, return enough + empty matrices to fill all possible LHS variables. + (qr): Likewise. + (svd): Likewise. + + * tree-const.cc (fortran_style_matrix_assignment): Do the right + thing if LHS is an empty matrix. + + * tree-extras.cc (qr): Handle empty matrix argument. + + * Matrix-ext.cc (QR): Make it work (really!). + (ComplexQR): Ditto. + +Wed Feb 10 00:56:31 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * xdiv.cc (xdiv (ComplexMatrix& a, ComplexMatrix& b)): Do + btmp.solve (atmp), like the other three xdiv's. Argh! + + * tree-extras.cc (eval_string): New function. Mostly works but + could be very fragile. We desperately need some sort of + `unwind-protect' scheme to avoid disaster when octave is + interrupted. + + * g-builtins.cc (builtin_eval): Instead of just aborting, call + eval_string if given one argument. + + * input.cc (octave_read): If get_input_from_eval_string is + nonzero, stuff current_eval_string into buf for flex to read. + + * tree-extras.cc (char *current_eval_string): New global variable + for eval(). + * (int get_input_from_eval_string): Ditto. + + * Update copyright notices to include 1993 (now that it's + February...). + +Tue Feb 9 14:35:08 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.67 released. + + * tree-extras.cc, tree-const.cc: Check the value of the variable + `propagate_empty_matrices' to decide what to do about empty + matrices in binary and unary operations and some function calls. + + * builtins.cc (builtin_string_variables): New global variable + `propagate_empty_matrices' with initial value `warn'. + * utils.cc (propagate_empty_matrices): New function. + +Mon Feb 8 19:46:51 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-const.cc: Finish changes required to make zero-one indexing + work for indexing and assignment. + +Sat Feb 6 15:54:10 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * builtins.cc (builtin_string_variables): New global variable + `prefer_zero_one_indexing' with initial value `false'. + * utils.c (prefer_zero_one_indexing): New function. + +Fri Feb 5 13:03:14 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * idx-vector.h, idx-vector.cc: Major overhaul to help with + zero-one style indexing. + * tree-const.cc (matrix_to_index_vector): Delete functions. + * (functions that use idx_vectors): Update for new idx-vector + stuff. + + * arith-ops.cc: Don't declare matrix_to_fortran_indices. + + * tree-const.cc (matrix_to_index_vector): Add new argument, + allow_neg_one, with default value of false. + * (matrix_to_fortran_indices): Add new argument, allow_zero, with + default value of false. + + * g-builtins.cc (builtin_find): New function. + * builtins.cc (general_fucntions): Add it to the list. + * tree-extras.cc (find_nonzero_elem_idx (tree_constant)): Do + most of the real work. + * tree-extras.cc (find_nonzero_elem_idx (const Matrix&): Do the rest. + * (find_nonzero_elem_idx (const ComplexMatrix&): Ditto, for complex. + +Wed Feb 3 00:54:01 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in (DEFAULT_DOT_O_FROM_DOT_F): If using f2c, quote + with single quotes instead of double quotes to avoid problems on + systems (like the NeXT) that strip \'s from double quoted strings. + + * utils.c (empty_list_elements_ok): New function. + * tree.cc (matrix_list::eval): Use it. + * builtins.cc (builtin_string_variables): New global variable + `empty_list_elements_ok' with initial value `warn'. + + * utils.cc (check_str_pref): New function. + * (resize_on_range_error, prefer_column_vectors, + warn_comma_in_global_decl, do_fortran_indexing, + implicit_str_to_num_ok, treat_neg_dim_as_zero, + ok_to_lose_imaginary_part, return_last_computed_value, + silent_functions, print_answer_id_name): Use it instead of + needlessly duplicating code. + +Tue Feb 2 16:58:02 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l ("'"): If it looks like we're defining a matrix, don't set + the start condition to be MAYBE_QSTRING. GAK. There has to be a + better way... + + * lex.l: Increment and decrement promptflag instead of just + setting its value. This should help get prompting right for + things like if [1,2;3,4] NL ... + * input.cc (octave_gets): In order to issue a prompt, Require + propmtflag to be greater than zero, not just nonzero. + + * tree.cc (tree_if_command): Allow matrices as the expression to + test. Unlike Matlab, a complex value is false only if both the + real and imaginary parts are 0. + * tree.cc (tree_while_command): Ditto. + + * tree.cc (tree_for_command): Allow matrices and complex values + in the expression. For matrices, assign each column in turn to + the dummy variable. + + * Matrix-ext.cc (qr): Make it work. The LAPACK book gags me again! + + * xdiv.cc: When computing right division with complex matrices, + use hermitian() instead of transpose(). + + * lex.l: Return IMAG_NUM for a numeric constant followed by + [iIjJ], but don't allow spaces between the numeric constant and + the letter (it causes problems inside `[]' where spaces matter... + +Mon Feb 1 17:15:19 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree_extras.cc (rand_internal): Make the random number generator + give us a different sequence every time we start octave unless we + specifically set the seed. + +Thu Jan 28 00:10:24 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.66 released. + + * configure.in: Define PLOTLIB in addition to adding -DUNIXPLOT to + DEFS if we find -lplot, and call AC_SUBST for PLOTLIB. + + * QP.cc: Define constructors here. + * QP.h: Not here. + + * QP.cc (All constructors that are given H): Force H to be + symmetric. + * (make_h_symmetric): New function. + +Wed Jan 27 01:35:53 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * arith-ops.cc (do_unary_op): Do the right thing for complex + logical not operator. + * Matrix.cc (ComplexMatrix::operator ! (void)): Return Matrix + instead of ComplexMatrix. + * mx-inlines.cc (not (Complex *d, int len)): For each element of + d, return (d[i] == 0.0), not (d[i] != 0.0), and return it as a + pointer to double, not Complex. + + * configure.in: Check for libcruft/qpsol/qpsol.f. + * Create Makefile in libcruft/qpsol. + + * libcruft/qpsol: New directory. Copy QPSOL sources here. + * libcruft/qpsol/Makefile.in: New file. + * libcruft/qpsol/README.MISSING: New file. + * libcuft/Makefile.in: Include qpsol in list of directories to + make. + + * QPSOL.h, QPSOL.cc: New file for solving QPs with Gill and + Murray's QPSOL. + + * QLD.h, QLD.cc: Delete all minimize functions except + Vector minimize (double&, int&). + + * QP.h: Declare minimize functions virtual. + * (Vector minimize (double&, int&): Declare as a pure virtual + function. + + * QP.cc: New file to implement generic minimize functions. + +Tue Jan 26 00:27:13 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l: Recognize numbers of the form .{digits}E{digits} and + .{digits}E[+-]{digits} + + * lex.l: Recognize .\ as ELEFTDIV. + * parse.y: Handle ELEFTDIV. + * tree.cc (tree_binary_expression::eval): Handle el_leftdiv. + + * arith-ops.cc (do_binary_op): Handle element by element left + division. Fix some errors in element by element right division. + + * tree-base.h (enum expression_type): Add el_leftdiv. + + * Version 0.65 released. + + * tree-const.cc (tree_constant_rep::eval (tree_constant *args, int + nargin, int nargout, int print)): Fix another brain-o in making + recursive call.s + + * src/Makefile.in: Complete changes for CXX instead of C++ make + variables. + + * tree-const.cc: For assignment and indexing functions, treat + complex scalars and matrices in the same branch of the switch as + real scalars and matrices -- the double_value() and matrix_value() + functions take care of checking to see if it's ok to lose the + imaginary part. + + * tree-const.h (tree_constant_rep::is_numeric_type): New function. + * tree-const.h (tree_constant::make_numeric functions): Use it. + + * tree-const.h (tree_constant::make_numeric functions): Return + *this for complex constants too. + +Mon Jan 25 18:31:06 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (Matrix min (Matrix&, Matrix&)): Loop over nc and + nr, not nr and nr. + * (Matrix max (Matrix&, Matrix&)): Ditto. + + * tree-const.cc (tree_constant_rep::mapper): Fix brain-o in making + recursive call. + +Sun Jan 24 20:05:39 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: If using f2c, explicitly check for -lf2c. If it's + not found, look for -lF77 and -lI77. If a suitable combination + isn't found, print a warning. + + * src/Makefile.in liboctave/Makefile.in: GNU Make 3.63 uses CXX + and CXXFLAGS instead of C++ and C++FLAGS. Fix things so that 3.63 + will work without sacrificing compatibility with earlier versions. + + * tree-const.cc (tree_constant_rep::diag (tree_constant&)): Fix + brain-o in forcing argument to be numeric. + +Fri Jan 22 15:03:42 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (interrupt_handler): Declare to take int argument. + + * NPSOL.cc (npsol_objfun): Delete leftover debugging message. + +Thu Jan 21 14:28:24 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Check version of gcc and issue a warning if it + looks like 1.something. + * Check for g++. Issue a warning if it is missing or if it is + there but it looks like verion 1.something. + + * flibs.sh, f2c-compat.sh: Change file permission to 755 to avoid + problems if the uid of the installer is different from the uid of + the owner of the files. + +Wed Jan 20 04:18:49 1993 John W. Eaton (jwe@june.che.utexas.edu) + + * libcruft/Makerules.in (@DOT_O_DOT_F_C[1234]@): Patterns deleted. + * configure.in: Do multiple line sed substitutions the right way. + +Tue Jan 19 14:50:50 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Use new AC_WITH to accept --with-f2c instead of + --use-f2c. + * Use new AC_HAVE_LIBRARY to find -lplot. + + * flibs.sh: Actually avoid including duplicate -lflags. + * Use test, not `['. + +Sun Jan 17 16:57:02 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Matrix.h: Declare operator+ and operator- functions for vectors. + * RowVector.cc: Define half of them. + * ColVector.cc: Define the other half. + +Fri Jan 15 03:00:46 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/Makefile.in (install): Include version number in name of + installed binary and make a link to $(bindir)/octave. + + * Version 0.64 released. + + * t-builtins.cc (builtin_clear): Don't allow the user to clear + global symbols by name. If he tries, issue a warning. + + * tree.cc (tree_identifier::eval_undefined_error): Don't clear + undefined symbols from the global or local (function) symbol + tables. + +Thu Jan 14 02:10:20 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_function::eval): Save old and set current symbol + table context, so eval_undefined_error() doesn't wipe out top + level symbols. + + * Version 0.63 released. + +Wed Jan 13 13:16:56 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Nearly every .h and .cc file: Add interface and implementation + #pragmas for G++ in hopes of making smaller objects with -g. + + * tree-const: Properly handle assignments like A(:) = RHS when + do_fortran_indexing is true. + + * g-builtins.cc (builtin_eig): Correct usage message. + + * tree-const.cc (tree_constant_rep (ComplexDiagMatrix&)): Create + and initialize a new complex_scalar. Don't just try to copy the + value... + + * Matrix.h: Declare new fill functions for diagonal matrices. + * DiagMatrix.cc: Define them. + + * Matrix.h: Declare map functions for row and column vectors. + * RowVector.cc: Define them. + * ColumnVector.cc: Likewise. + + * CollocWt.h: Declare data protected instead of private. + * CollocWt.cc (CollocWt::CollocWt (const CollocWt&)): Fix brain-o. + + * lex.l: Return IMAG_NUM for a numeric constant followed by + [ \t]*[iIjJ]. + + * parse.y (IMAG_NUM): New token. + * (fact): Recogize IMAG_NUM and convert its value to a complex + constant. + + * Version 0.62 released. + + * Makefile.in (local-dist): Include -local in tar.Z filename. + * (split-local-dist): New target. + * (dist): Don't depend on newversion. + * (local-dist): Ditto. + + * tree-extras.cc (npsol): If the first argument isn't a vector, + print an error message and return. + + * tree.cc (tree_matrix::eval): Always set prev_row_total and + prev_column_total when starting out. + + * octave.cc (main): Don't try to detect signal handler failures, + but do call signal() to set up the interrupt handler. + +Tue Jan 12 19:59:33 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (npsol): Fix brain-o in checking length of bounds + vectors. + +Mon Jan 11 20:32:24 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (set_rand_seed): New function. + (force_to_fit_range): New function. + (current_seed): Really return current seed. + (rand_internal): Allow the user to actually set the seed for the + random number generator. + +Sun Jan 10 16:46:06 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.61 released. + + * builtins.h, builtins.cc: Rename from builtin-fcns.h, + builtin-fcns.cc (too long for Linux/SysV). + + * mappers.cc (xisinf): For non-IEEE machines, consider DBL_MAX to + be infinite. + +Fri Jan 8 09:15:57 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * gnuplot-build/Makefile.in (x11targets): Don't worry about + checking HAVE_X11_X_H. + + * configure.in: Check for gamma and lgamma for gnuplot. + + * gnuplot-build/Makefile.in (Makefile.X11): Only move Makefile to + ../Makefile.X11 if xmkmf succeeds. + + * gnuplot-build/Makefile.in (x11targets): Check to see that XMKMF + is set *and* that Makefile.X11 exists. + * If making notgnuplot_x11 with Makefile.X11 fails, try again with + Makefile. + + * gnuplot-build/Makefile.in: Use @PLOTLIB@ in definintion of LIBS. + * Don't define UNIXPLOT in TERMFLAGS. + * Don't define LN_S; it isn't used anywhere, and configure doesn't + give it a value. + + * configure.in: Check for closepl(). If found, define UNIXPLOT, + and substitute -lplot for @PLOTLIB@. + + * arith-ops.cc (DIVIDE_BY_ZERO_ERROR): New macro. On systems that + have IEEE math, give a warning but also go ahead and divide by + zero. On systems that don't have IEEE math, just give an error + message and return an undefined tree_constant (it would probably + be possible to handle this so that it works the same everywhere, + but I'm not sure it's worth the effort...). + + * builtin-fcns.cc (install_builtins): On systems that don't have + IEEE_MATH, define Inf to be MAX_DBL, but don't define NaN at all. + + * configure.in: Check for finite, isnan, and isinf. + * Set HAVE_IEEE_MATH if we find finite and isnan. + + * builtin-fcns.cc (install_builtins): Use HAVE_IEEE_MATH instead + of IEEE_MATH. + * mappers.cc: Check HAVE_IEEE_MATH and HAVE_ISINF macros rather + than checking system type. + + * graph3d.c (hidden_line_plot): Declare dy and y as double, not + float, since VERYLARGE can be DBL_MAX. + + * lsoda.f, lsodar.f, lsodes.f, lsodi.f, lsoibt.f, stoda.f, + stodi.f, zrotg.f, sdot.f: Remove unused files. + + * texas_lotto.m: Renamed from win_texas_lotto.m to keep the + filename less than 14 characters. + +Thu Jan 7 15:45:29 1993 John W. Eaton (jwe@june.che.utexas.edu) + + * utils.cc: Declare ioctl extern "C". + + * tree.cc: Include stdio.h to be sure FILE is defined (apparently + not required by older versions of GNU iostream library). + * t-builtins.cc: Likewise. + * g-builtins.cc: Likewise, but for tmpnam. + + * tree-const.h (rand_internal): Rename from rand to avoid + conflict with standard library rand (a macro in Linux). + * tree-extras.cc (rand_internal): Fix function definition. + * g-builtins.cc (builtin_rand): Call rand_internal instead of rand. + + * octave.cc (main): Don't try to detect signal handler failures. + What's the proper way to do this if RETSIGTYPE is void? + +Tue Jan 5 08:14:29 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_matrix::eval): When adding a matrix down or to the + right, column or row dimension mismatches are always errors. + +Mon Jan 4 04:58:55 1993 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.60 released. + + * xdiv.h, xdiv.cc: New files for Octave-specific matrix division + stuff. + * src/Makefile.in (INCLUDES, SOURCES, OBJECTS): Add xdiv stuff. + + * arith-ops.cc: Include xdiv.h. + +Sun Jan 3 12:24:04 1993 John W. Eaton (jwe@ward.che.utexas.edu) + + * gnuplot-build/Imakefile.in (notgnuplot_x11): In the compile + command, put source file before libraries. + + * libcruft/misc/Makefile.in: Don't use -O to compile gen-dimach.c. + +Thu Dec 31 00:45:50 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (matrix_sqrt): Don't create D until it is really + needed. + * (matrix_log): Ditto. + * (matrix_exp): Ditto. + [this should really be just one function instead of three...] + + * g-builtins.cc (builtin_sqrtm): New function. + * builtin-fcns.cc (general_fucntions): Add it to the list. + * tree-extras.cc (matrix_sqrt): Do the real work. + + * Makefile.in: Distribute INSTALL.OCTAVE and configure.in. + * (INSTALL.info): Make ../INSTALL.OCTAVE, not ../INSTALL. + + * doc/Makefile.in: Make ../INSTALL.OCTAVE, not ../INSTALL. + + * INSTALL.OCTAVE: Rename from INSTALL. + Refer to INSTALL for more info. + + * INSTALL: Copy from autoconf distribution. + Refer to INSTALL.OCTAVE for more info. + + * octave.cc (main): Remove leading blank line from startup message. + * Don't print it everytime the user types C-c... + + * xpow.cc: Finish off remaining cases. + + * tree-extras.cc (process_format): New function. + (do_printf): Use it. + +Wed Dec 30 00:43:14 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.56. + + * g-builtins.cc (builtin_logm): New function. + * builtin-fcns.cc (general_fucntions): Add it to the list. + * tree-extras.cc (matrix_log): Do the real work. + + * g-builtins.cc (builtin_expm): New function. + * builtin-fcns.cc (general_fucntions): Add it to the list. + * tree-extras.cc (matrix_exp): Do the real work. + + * Matrix-ext.cc (LU): Construct LU decomp. here, not in Matrix class. + (ComplexLU): Likewise. + * Matrix.cc (lu): Deleted. Use LU constructor instead. + Change all uses in octave sources. + + * Matrix-ext.cc (EIG): Construct EIG object here, not in Matrix class. + * Matrix.cc (eig): Deleted. Use EIG constructor instead. + Change all uses in octave sources. + + * Matrix-ext.cc (SVD): Construct SVD here, not in Matrix class. + (ComplexSVD): Likewise. + * Matrix.cc (svd): Deleted. Use SVD constructor instead. + Change all uses in octave sources. + + * Makefile.in: Update for new Matrix file organization. + Don't compile mx-inlines separately -- it's included where needed. + * Matrix.h: Declare Fortran routines we call here, not in Matrix.cc. + Don't declare every class to be a friend of every other class. + * mx-inlines.cc: New file, included by all Matrix-related .cc files. + * Matrix.cc: Split into several files. + * ColVector.cc: New file, from Matrix.cc + * RowVector.cc: Ditto. + * DiagMatrix.cc: Ditto. + * Matrix-ext.cc: Ditto. + + * tree-extras.cc (svd): Take advantage of new constructors and + diag functions. + + * Matrix.cc (DiagMatrix::diag) New function. + (ComplexDiagMatrix::diag) Ditto. + + * tree-extras.cc (eig): Take advantage of new constructors. + + * tree-const.cc (tree_constant (DiagMatrix)): New constructor. + (tree_constant (ComplexDiagMatrix)): Ditto. + + * Matrix.cc (Matrix (const DiagMatrix)): New constructor. + (ComplexMatrix (const DiagMatrix)): Ditto. + (ComplexMatrix (const ComplexDiagMatrix)): Ditto. + +Tue Dec 29 01:14:49 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (main): Print message at startup by default. + Don't print it until just before main loop. + * New -q option (inhibit_startup_message) turns it off. + * New -f option (read_init_files) inhibits reading of startup files. + * Delete -v option. + * (verbose_usage): Reflect changes in arguments, document -d. + + * win_texas_lotto.m: Sort picks before returning. + + * tree-extras.cc (eig): Return [v,d], not [l,v], where d is a + diagonal matrix made from l. + + * builtin-fcns.cc (mapper_functions): Fix last element of + initialization list to have correct number of elements. + + * Version 0.55. + + * Quad.h: Move all inline functions to Quad.cc to avoid apparent + g++ bug on the RS/6000. + + * configure.in: If we find flex, don't define LEXLIB. + + * COPYING.LIB: Deleted -- we're not actually distributing anything + under these terms. + * Makefile.in: Don't distribute COPYING.LIB. + +Mon Dec 28 00:46:21 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * xpow.h, xpow.cc: New files for safer pow() interface for octave. + * src/Makefile.in (INCLUDES, SOURCES, OBJECTS): Add xpow stuff. + + * arith-ops.cc: Include xpow.h. + * Don't declare toplevel jmp_buf. + + * t-builtins.cc (builtin_save): Make file and stream static to + avoid dumping core on return (is this a bug in libg++ or g++?). + * (builtin_load): Ditto. + + * symtab.cc (load): Make it work again. Yikes! This hasn't + worked since the big symbol table overhaul... + + * tree-const.cc (tree_constant_rep::save): Handle complex scalars + and matrices. + + * (symbol_def::undefine): Delete previous symbol definition before + defining. This should be ok now, after the parse_m_file fix of + 27 Dec. + + * getting_help: New global flag. + * ([_a-zA-Z][_a-zA-Z0-9]*): Set it if looking at "help". + * (reset_parser): Clear it. + * lex.l (STRING): Use it to determine what to do with ' ; and , . + + * lex.l (QSTRING): Handle the following (C-style) backslash escape + sequences correctly(?). + + \a bell \r carriage return + \b backspace \t horizontal tab + \f formfeed \v vertical tab + \n newline \\ backslash + + * median.m: New M-file. + + * g-builtins.cc (builtin_sort): New function. + * builtin-fcns.cc (general_fucntions): Add it to the list. + * tree-extras.cc (sort): Do most of the real work. + * tree-extras.cc (mx_sort): Do the rest. + +Sun Dec 27 17:40:24 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * t-builtins.cc (builtin_casesen): New function. + * builtin-fcns.cc (text_functions): Add it to the list. + + * strcmp.m: Temporarily allow string to numeric conversions. + Maybe strcmp() should be built in to the interpreter? + + * norm.m: New M-file. + + * builtin-fcns.cc (install_builtins): Treat i and j as functions, + not variables. + * Install inf as an alias for Inf. + * Install nan as an alias for NaN. + + * tree.cc (tree_identifier::parse_m_file (char*)): Force new + global symbol to be a function, not a variable. + +Tue Dec 22 14:15:57 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_function::eval): Check with silent_functions() + and return_last_value_computed() to determine proper behavoir. + + * builtin-fcns.cc (silent_functions): New builtin variable. + * (return_last_value_computed) Ditto. + + * utils.cc (silent_functions): New function. + * (return_last_value_computed) Ditto. + [This scheme for determining preferences needs to be reworked...] + + * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only force yytext[len] to be the + end of the identifier if we gobbled some whitespace. + * Always unput the last character read. + + * tree.cc (tree_function::eval) Always turn on printing for + commands inside functions. + +Sat Dec 19 14:03:49 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.54. + +Fri Dec 18 16:02:59 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * (symbol_def::undefine): Undo previous change. Someone is + calling this function when they shouldn't be... + + * tree.cc (parse_m_file): If the script file is successfully + parsed, Ensure that the new symbol is defined in the global + symbol table. + + * lex.l: Handle continuation lines with the pattern + {EL}{S}*\n { promptflag = 0; } // Line continuation. + +Thu Dec 17 01:47:14 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * symtab.cc (symbol_def::define): Delete previous symbol + definition before defining. + (symbol_def::undefine): Ditto, but new definition is always NULL. + + * readline/Makefile.in: Don't compile emacs_keymap.c and + vi_keymap.c since they are included by keymaps.c. + + * configure.in: If RETSIGTYPE isn't int, then define + VOID_SIGHANDLER="-DVOID_SIGHANDLER=1". + Substitute VOID_SIGHANDLER. + + * readline/Makefile.in (CFLAGS): Add -DVOID_SIGHANDLER if + appropriate. + + * tilde.c: Declare xmalloc, not malloc. + + * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only call unput if we've + actually read something. + + * Version 0.53. + +Wed Dec 16 01:35:48 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Look in the global symbol table + for names, but ignore functions. + + * tree.cc (tree_identifier::eval): Use symbol_out_of_date() to + simplify logic for re-parsing M-files. + Always look in global symbol table for functions in case the + definition has changed (shouldn't the local symbols be undefined + anyway??). + + * tree.cc (symbol_out_of_date): New function. + + * symtab.cc (symbol_table::undefine): Actually do something. + * (symbol_table::remove_name): Ditto. + * (symbol_table::clear): And so on. + + * Matrix.cc (ComplexMatrix::svd): Use complex conjugate transpose, + not simple transpose, for V. + + * Version 0.52. + + * gnuplot-build/Imakefile (notgnuplot_x11): In the compile + command, put source file before libraries. + + * parse.y (assignment): If trying to warn against assignment to a + function, check is_function() instead of !is_variable(). + + * src/Makefile.in: Distribute input.h. + +Tue Dec 15 10:48:22 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (main): Call initialize_readline to set up completion + functions. + + * input.cc (make_name_list, command_generator, command_completer, + initialize_readline): New functions. + + * input.h: New file. + * lex.l: Include it instead of input.cc. + * src/Makefile.in: Create input.o rather than including it + directly in lex.l. + + * builtin-fcns.cc: do_fortran_indexing is now initially false. + prefer_column_vectors is now initially true. + + * builtin-fcns.cc (install_builtins): Install i and j + (== sqrt(-1)) as permanent global variables. + + * g-builtins.cc (MAXPATHLEN) Provide default definition here. + * t-builtins.cc: Not here. + + * g-builtins.cc (quitting_gracefully, interactive, + clean_up_and_exit, verbatim_pwd, getwd) Declare here. + * t-builtins.cc: Not here. + + * g-builtins.cc: Also include readline.h and history.h. + + * g-builtins.cc: Include version.h and sys/param.h here. + * t-builtins.cc: Not here. + + * g-builtins.cc: Move builtin_clc, builtin_clock, builtin_date, + builtin_pause, builtin_quit, builtin_warranty here from + t-builtins.cc. + + * builtin-fcns.cc (general_functions): Move builtin_clc, + builtin_clock, builtin_date, builtin_pause, builtin_quit, + builtin_warranty here from text_functions to limit the number of + reserved words. + + * scripts/*.m: Check for correct number of input arguments before + proceeding. + + * configure.in (DEFAULT_PAGER): Look for less, more, page, and pg. + + * t-buitlins.cc (builtin_help): If no arguments are given, list + all the known operators, keywords, functions, and variables. + + * t-builtins.cc (builtin_help) Pass the output through PAGER using + a libg++ procbuf. + (builtin_who): Ditto. + + * utils.cc (get_pager): New function. + + * help.h, help.cc: New files to manage lists of help info for + keywords and operators. + + * symtab.cc (symbol_record): Implement the Matlab-style semantics + of functions using two symbol_def objects. + * (symbol_table): Store identifier names in a hash table instead + of a linear list. + * symtab.cc (symbol_def): New class. + +Sat Dec 12 00:00:00 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * parse.y (yyerror): Change error text to be more accurate. + + * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Only look in the current symbol + table for names. Function names and other global symbols are now + resolved at execution time. + + * symtab.cc (sorted_var_list): New function. + * (sorted_fcn_list): Ditto. + * (var_list): Ditto. + * (fcn_list): Ditto. + These should probably not all be separate functions... + + * t-functions.cc (builtin_who): Call sorted_var_list for each + symbol table to print variable names only. + * Accept -fcn, -fcns, or -functions to also list function names. + * Make -all list function names, but under a separate heading from + other symbols. + + * builtin-fcns.cc (is_text_function_name): New function. + * lex.l ([_a-zA-Z][_a-zA-Z0-9]*): Use is_text_function_name to + find if a name is a text function name instead of relying on the + symbol tables. + + * lex.l (is_keyword): New function. + ([_a-zA-Z][_a-zA-Z0-9]*): Use is_keyword instead of having a + special lex pattern for each keyword. + +Thu Dec 10 12:25:12 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * t-builtins.cc: Declare top_level_sym_tab extern. + + * Version 0.51. + +Wed Dec 9 02:00:38 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (all user_functions): If the return value from a + user's function is bogus, print an error message and abort to the + top level. + + * tree-const.cc (all do_matrix_index functions): Major overhaul to + simplify and apply range checking before doing the indexing. + + * tree-const.cc (fortran_row, fortran_column, valid_scalar_indices, + matrix_to_fortran_indices): Move here from arith-ops.cc and + declare as `static inline'. Delete declarations from arith-ops.h. + + * arith-ops.cc (gripe_nonconformant_assignment): Delete function. + + * tree-const.h (TREE_TO_MAT_IDX): Delete macro. + * tree-const.cc (tree_to_mat_idx): Make it an inline function. + + * tree-const.cc (all do_matrix_assignment functions): Major + overhaul to simplify resizing and range checking. + + * tree-const.cc (): Move here from arith-ops.cc. + Jump to top level on errors. + Return max value. + (indexed_assign_conforms) New function. + (index_check (int)): New function. + (index_check (Range)): New function. + +Tue Dec 8 21:07:23 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-const.cc (tree_constant_rep::tree_constant_rep (Range): + Don't create range constants that have less than 2 elements. + + * utils.cc (jump_to_top_level): New function. + * All: Replace calls to longjmp with calls to jump_to_top_level(). + Don't include <setjmp.h>, except in octave.cc, and utils.cc. + +Mon Dec 7 01:57:30 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in: Create Imakefile in gnuplot-build directory. + Look for xmkmf, then X11/X.h. + * gnuplot-build/Makefile.in: Try harder to get notgnuplot_x11 to + build correctly. + * gnuplot-build/Imakefile.in: New file, for building + notgnuplot_x11 if xmkmf is available. + + * Version 0.50. + + * gnuplot-build/Makefile.in (SUBDIRS): Add docs. + + * tree-const.h (make_numeric_or_range_or_magic): New function. + * tree-const.cc (do_matrix_index): Use it instead of make_numeric + so that we actually take advantage of all the special cases we + have for range types as matrix indices. + + * tree-const.cc (tree_constant_rep::do_matrix_index (int, Matrix)): + Fix typo. + + * DAE.cc (integrate): If returning a matrix of values, don't mix + time with the states. + * ODE.cc (integrate): Likewise. + +Sun Dec 6 16:58:41 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (dassl): New function. + * g-builtins.cc (builtin_dassl): Make it work. + * doc/octave.1: Document it. + + * DAEFunc.h, DAEFunc.cc, DAE.h, DAE.cc: New files. + + * tree-extras.cc (lsode): Clean up. Use available functions + instead of doing everything in line. + + * tree.cc (tree_multi_assignment_expression::eval): Don't define + constants that are of unknown type. + Try to be smarter about padding after last value. + + * tree-extras.cc (lu): Don't bother trying to return the LU + factorization in a single matrix since this isn't really useful + and isn't compatible with Matlab anyway (they use Linpack, we use + Lapack). + + * tree.cc (tree_identifier::assign (rhs, args, nargs)): Only try + to do assignment if rhs is defined. + +Sat Dec 5 18:23:55 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (qr): New function. + * g-builtins.cc (builtin_qr): New function. + * builtins.cc: Add builtin_qr to list of builtin functions. + * doc/octave.1: Document it. + + * Matrix.cc (Matrix::lu): Use dgesv from Lapack instead of dgefa + since it returns L and U, not some factors that need decoding. + (ComplexMatrix:lu): Likewise. + +Fri Dec 4 01:51:05 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * configure.in (INCDIRS): Don't include /usr/local/include. + (LIBDIRS): Don't include /usr/local/lib. + + * tree-extras.cc (lu): New function. + * g-builtins.cc (builtin_lu): New function. + * builtins.cc: Add builtin_lu to list of builtin functions. + * doc/octave.1: Document it. + + * Matrix.cc (Matrix:lu, ComplexMatrix:lu): New functions. + * Matrix.h, Matrix.cc (LU, ComplexLU): New classes. + + * tree-extras.cc (do_quad): New function. + * g-builtins.cc (builtin_quad): New function. + * builtins.cc: Add builtin_quad to list of builtin functions. + * doc/octave.1: Document it. + + * doc/Makefile.in (install): Edit the manpage to substitute + correct values in the FILES section. + (dist) Depend on octave.info. + (local-dist): Ditto. + + * Quad.h, Quad.cc: New files to implement quadrature. + + * NPSOL.cc (npsol_objfun): If compiling with GCC on a Sun, assign + to objf via assign_double(). + + * sun-utils.h, sun-utils.cc: New files. + * sun-utils.cc: Move declaration and definition of MAIN_ here from + utils.cc. + (access_double): New function, from GCC manual. + (assign_double): New function, after access_double. + +Thu Dec 3 03:16:03 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * NEWS: New file. + * Makefile.in: Distribute it. + + * scripts/*.m: Change to use new end feature. + + * lex.l: Recognize `endif', `endfor', `endfunction', `endif', and + `endwhile', in addtion to `end'. + * parse.y: Check for command/end mismatches. + (end_error): New function. + * doc/octave.1: Document it. + +Wed Dec 2 11:57:18 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * libcruft/villad: New directory. Move and split villad.f here + from libcruft/misc. + * configure.in: Create Makefile in libcruft/villad. + * libcruft/Makefile.in: Add libcruft/villad to list of dirs to make. + + * All Makefile.in (uninstall): New target. + (distclean): Likewise. + (check): Ditto. + * Try to make clean targets conform with GNU coding standards. + + * utils.cc (smells_like_X11): New function. + * builtin-fcns.cc (install_builtins): Don't set graphics terminal + to x11 unless it looks like we're running X11. + + * win_texas_lotto.m: New M-file. + * octave.1: Document it. + + * arith-ops.h: New file. + * src/Makefile.in: Build arith-ops.o, distribute arith-ops.cc, + arith-ops.h. Maybe this will at least speed up recompiles. + + * THANKS: New file + * Makefile.in: Distribute it. + + * configure.in: Create Makefile in gnuplot-build/docs. + * gnuplot-build/docs/Makefile.in: New file. + * Create and install notgnuplot.gih. + +Tue Dec 1 00:15:48 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_identifier::eval (int)): Only pad after if printing. + (tree_multi_assignment_expression::eval (int)): Ditto. + (tree_assignment_expression::eval (int)): Ditto. + + * hankel.m: Use disp to print message. + * toeplitz.m: Ditto. + + * lex.l (<MATRIX>{SN}*\]/{S}*=): Check maybe_screwed_again to + decide whether to return SCREW_TWO or ']'. + + * doc/Makefile.in (install): Really install the manpage. + + * Version 0.49. + + * Matrix.cc (ComplexMatrix::operator !): New function. + * arith-ops.cc (do_unar_op): Use it. + + * tree-extras.cc (inverse, svd, eig): Don't try to operate on + empty matrices. + + * Matrix.h, Matrix.cc: (EIG): New class. + (Matrix::eig): New functions. + (ComplexMatrix::eig): Ditto. + * tree-extras (eig): Use them. + * g-builtins.cc (builtin_eig): New function. + * builtin-fcns.cc (general_functions): Add eig to list. + * dococtave.1: Document it. + + * Matrix.h, Matrix.cc: (ComplexDET): New class. + * tree-extras (determinant): Use it. + +Mon Nov 30 04:02:29 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Matrix.h, Matrix.cc (ComplexSVD): New class. + * tree-extras (svd): Use it. + + * Matrix.cc (svd): Use lapack instead of linpack to compute SVD. + + * libcruft/Makefile.in: Replace eispack with lapack in + subdirectory list. + * libcruft/eispack: Delete directory. + * libcruft/lapack/Makefile.in: New file. + * configure.in: Create Makefile in libcruft/lapack, not + libcruft/eispack. + + * libcruft/lapack: New directory. + * Copy files for SVD and Eigenvalue computation here. + + * lex.l (<MATRIX>{SN}*\]/{S}*=): Only return SCREW_TWO if not + defining a function. + + * arith-ops.cc (do_binary_op (double, double)): For pow operator, + don't create complex value if exponent is really an int. + + * configure.in: Check for f77 last. + * Print warnings if bison or lex is not found. + * Reformat fatal no f2c/f77 error message. + + * flib.sh: Make it work even if xlf is called f77. + +Sun Nov 29 01:55:41 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc: Include f77-uscore.h. + * Use F77_FCN macro when declaring or calling Fortran functions. + + * configure.in: After checking to see that it's not garbage, add + the output of f2c-compat.sh to DEFS. + + * f2c-compat.sh: Figure out whether or not we need to append an + underscore to Fortran function names. + + * flibs.sh: Handle xlf -v output as special case. + + * octave.cc: Only define BADSIG if it isn't already defined. + * g-builtins.cc: Ditto. + + * configure.in: Don't create man/Makefile. + * man: Directory deleted. + * doc/Makefile.in: Distribute and install octave.1. + * doc/octave.1: Renamed from man/octave.1. + +Sat Nov 28 15:54:39 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * man/Makefile.in (install): Install manpage. + * octave.1: rename from octave.man + * octave.1: Document builtin variables and command line editing + (stolen from bash man page). + + * tree-const.cc (eval (int print)): Convert complex values to real + if imaginary part is zero. + + * octave.cc (log_usage): Deleted. + (main): Don't call log_usage. + + * g-builtins.cc (builtin_sqrt): Delete. + (builtin_log): Ditto. + (builtin_log10): Ditto. + + * tree-const.h, tree-const.cc (sqrt_internal): Delete. + (log_internal): Ditto. + (log10_internal): Ditto. + + * tree-const.cc (mapper): Handle neg_arg_complex. + + * builtin-fcns.h (Mapper_fcn): New field neg_arg_complex. + * builtin-fcns.cc: (mapper_functions[]): Initialize it for list of + mapper functions. + * builtin-fcns.cc: (mapper_functions[]): Move log, log10, and sqrt + back here from general_functions[]. + +Fri Nov 27 17:05:21 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (tree_constant_to_vector): Handle complex scalars + and matrices. + +Wed Nov 25 17:32:42 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * man/octave.man: New file, very incomplete. + * man/Makefile.in: Include octave.man in list of files to + distribute. + + * g-buitlins.cc (builtin_rand): Handle nargin == 1. + * tree-extras.cc (rand): Likewise. + + * rem.m: New M-file. Implemented as M-file because it's much + simpler! + + * configure.in (DEFAULT_DOT_C_FROM_DOT_F): Escape % characters in + rule to avoid problems with autoconf, which uses % for sed command + delimeters. + (DEFAULT_DOT_O_FROM_DOT_F): Ditto. + +Tue Nov 24 00:21:34 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (fill_matrix): Don't try to create matrices with + negative dimensions. + (frobit): Likewise. + + * utils.cc (check_dimensions): New function. + + * utils.cc (treat_neg_dim_as_zero): New function. + * builtin-fcns.cc (treat_neg_dim_as_zero): New builtin variable, + default value is false. + + * tree-const.h (tree_constant::bump_value): Like, assign, check + reference count and possibly make a new copy before changing + anything. + + * tree-base.h (is_builtin): New virtual function. + * tree.cc (tree_builtin::is_builtin): New function. + + * parse.y (ans_expression): Also check to see if the lone + expression is a builtin text-style function invoked without any + arguments. + + * octave.cc, t-builtins.cc: Print copyright and other normal + (non-error) message on cout instead of cerr. + + * t-builtins.cc (builtin_warranty): Don't return message in + retval. + (builtin_history): Likewise. + (builtin_help): Also. + (builtin_who): Ditto. + + * Version 0.48. + + * tree-extras.cc: Fix most functions to handle complex arguments. + Still need to finish SVD and DET (waiting for these functions in + the Matrix class). + + * tree.cc (tree_multi_assignment::eval): Optionally print names + for result variables. + + * tree-const.h (tree_constant::eval (int print, int nargout)): + New function. Simply ignore nargout. + * tree.cc (tree_matrix::eval (int print, int nargout)): Ditto. + + * tree.cc (tree_parameter_list::name): New function. + + * lex.l (<NEWMAT>): Delete rules, start condition because they are + unecessary. + + * lex.l (<MATRIX>{SN}*\]): Split into three rules. Use trailing + context instead of home-brew lookahead. + +Mon Nov 23 00:51:51 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * utils.cc (ok_to_lose_imaginary_part): New function. + * builtin-fcns.cc (ok_to_lose_imaginary_part): New builtin + variable, default value is warn. + + * tree-const.h (double_value): Maybe return real part if invoked + for complex tree_constant. + * tree-const.h (matrix_value): Ditto. + + * Version 0.47. This one wasn't tested, but there have been a lot + of significant changes and I wanted a backup. + + * tree-const.cc (sqrt_internal): New function. Sqrt isn't + implemented as a mapper function since negative real arguments + give complex results. + (log_internal): Ditto. + (log10_internal): Ditto. + * builtin-fcns.cc: Move sqrt, log, and log10 from mapper struct + initializer to general function struct initializer. + + * rot90.m: New M-file. Still needs rem() to be complete. + + * tree-const.cc (mapper): Handle mapper functions for complex + variables. + + * mappers.h, mappers.cc: New file for mapper functions. + + * builtin-fcns.h, builtin-fcns.cc: Rename from builtins.h + builtins.cc. + + * flipud.m: Don't do indexing on lhs. + * fliplr.m: Likewise. + +Sun Nov 22 17:09:36 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * arith-ops.cc (do_binary_op (double, double)): Handle a^b for + a < 0. + + * builtins.cc: Make sqrt a general builtin function instead of a + mapper function. + * g-builtins.cc (builtin_sqrt): New function. + * tree-const.cc (sqrt_internal): New function. + +Sat Nov 21 16:41:02 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-const.h, tree-const.cc: Complete most changes required to + handle complex types. There are lots of details, most will be + omitted here. + + * tree-const.h (is_real_type) New function. + (is_complex_type): Ditto. + (is_scalar_type): Ditto. + (is_matrix_type): Ditto. + + * tree-const.h (REP_RHS_MATRIX, REP_ELEM_ASSIGN, CRMATRIX, + ASSIGN_CRMATRIX_TO, CRMATRIX_ASSIGN_REP_ELEM, + CRMATRIX_ASSIGN_ELEM): New macro for dealing with real and complex + matrices in the same tree_constant_rep function. + + * tree-const.cc: Include arith-ops.cc. + + * arith-op.cc: New file for functions that implement unary and + binary operations for the tree_constat classes. + * Mark all operations that aren't implemented yet with a + XXX FIXME XXX comment. There are about 35-40 things left to fix + in this file. + +Thu Nov 19 00:25:16 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.46. + [ This one wasn't tested, but there have been a lot of significant + changes and I wanted a backup. ] + + * tree-const.cc (tree_constant_rep::do_unary_op): Handle Complex. + (do_unary_op (Complex&, tree::expression_type)): New function. + (do_unary_op (ComplexMatrix&, tree_expression_type): Ditto. + + * tree-const.cc (tree_constant_rep::assign): Handle Complex + (still needs updated support functions in order to work). + + * tree.cc (tree_matrix::eval): Handle Complex. + (tree_identifier::eval): Ditto. + (tree_for_command::eval): Ditto. + +Wed Nov 18 23:33:13 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree_const.cc (tree_constant_rep::rows): Handle Complex. + (tree_constant_rep::columns): Ditto. + (tree_constant_rep::all): Ditto. + (tree_constant_rep::any): Ditto. + (tree_constant_rep::cumprod): Ditto. + (tree_constant_rep::cumsum): Ditto. + (tree_constant_rep::prod): Ditto. + (tree_constant_rep::sum): Ditto. + (tree_constant_rep::sumsq): Ditto. + + * tree_const.h, tree_const.cc (tree_constant::complex_value): New + function. + (tree_constant_rep::complex_value): Ditto + (tree_constant::complex_matrix_value): New + (tree_constant_rep::complex_matrix_value): New + + * tree_const.cc (tree_constant_rep::~tree_constant_rep): Handle + complex scalars and matrices. + (tree_constant_rep::force_numeric): Ditto. + (tree_constant_rep::make_numeric): Ditto. + (tree_constant_rep::eval): Ditto. + (tree_constant_rep::bump_value): Ditto. C++, for C == a + complex value is C = C + 1. Should I even do this? Hmmm. + + * tree-const.h, tree-const.cc: Begin adding support for Compelex. + * Add complex_scalar and complex_matrix to value union. + * Add complex_scalar_constant and complex_matrix_constant to type + tag enum. + * New constructors. + + * Matrix.h, Matrix.cc: Major changes to add Complex support. + +Tue Nov 17 14:40:45 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Matrix.cc (RowVector::operator (const Matrix&)): New function. + + * Matrix.cc (ColumnVector::transpose): New function. + Eliminate friend function that served the same purpose. + (RowVector::transpose): Ditto. + +Mon Nov 16 09:57:33 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l (QSTRING): Fix to allow '' inside a string to represent a + single quote. Makes computer.m a little funnier. + +Fri Nov 13 18:46:39 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.45. + + * computer.m: New M-file. + * tril.m: Ditto. + * triu.m: Ditto. + + * doc (*.texi): Can now produce BUGS, INSTALL, and octave.info + files without generating errors, though the organization is + probably till very wrong. + + * Makefile.in (newversion): Add magic to handle major versions + other than 0, and major/minor versions of any length. + +Thu Nov 12 01:37:45 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.h, tree-const.h, builtins.cc, g-builtins.cc, + tree-extras.cc: Conditionally compile code for NPSOL and FSQP + based on FSQP_MISSING and NPSOL_MISSING. + * g-builtins.cc (builtin_npsol): If NPSOL is missing, always call + npsol_usage() to print out message indicating why NPSOL doesn't + work. + * g-builtins.cc (builtin_fsqp): Likewise for FSQP. + + * configure.in: Check for srcdir/libcruft/npsol/npsol.f and + srcdir/libcruft/fsqp/fsqp.f. If missing, define NPSOL_MISSING or + FSQP_MISSING and add them to DEFS. + + * libcruft/npsol/README.MISSING: New file. + * libcruft/fsqp/README.MISSING: Ditto. + + * libcruft/npsol/Makefile.in (dist): Don't distribute sources + because of license restriction. Do distribute Makefile.in and + README.MISSING. + * libcruft/fsqp/Makefile.in (dist): Ditto. + + * All Makefile.in files (local-dist): New target, usually the same + as dist. + + * parse.y (ans_expression): Check to see that the RHS isn't just + an identifier. + * tree.cc (tree_identifier::eval (int)): Maybe print id name. + * tree.cc (tree_assignment::eval (int)): Ditto. + * buitlins.cc (print_answer_id_name): New builtin variable. + * utils.cc (print_answer_id_name): New function. + +Tue Nov 10 10:58:36 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (log_usage): Surround with #if 0/#endif. + +Mon Nov 9 13:42:54 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * symtab.cc (load): Only issue error mesasge if attempt to find + _first_ name keyword fails. + + * tree-const.cc (make_numeric_or_magic): New function. Like + make_numeric except also pass magic_colons. + * tree-const.cc (all do_matrix_index functions): Matrix ndices can + be naked colons, so use make_numeric_or_magic on index arguments + instead of make_numeric. + + * liboctave/Makefie.in (install): Install .h files in $(includedir). + (includedir): New macro, default value $(prefix)/include. + + * tree.cc (tree_function::eval (int print)): Force arguments to be + undefined. + + * tree-const.h (tree_constant::assign (rhs, args, nargs)): Check + reference count before assigning. + * tree.cc (tree_identifier::assign (rhs, args, nargs)): Don't eval + lhs before doing assignment. + + * tree.cc (parse_m_file): Gobble leading white space, including + comments. + +Fri Nov 6 16:52:59 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.44. + + * g-builtins.cc (builtin_getenv): New function. + + * isempty.m: New M-file. + + * g-builtins.cc (builtin_exist): New function. + * utils.cc (identifier_exists): Handle the dirty details. + + * utils.cc (warn_comma_in_global_decl): New function. + * builtins.cc (warn_comma_in_global_decl): New builtin variable. + Initial value is true. + * parse.y (global_decl): Handle global declarations here, + including optional initialization. + * t-builtins.cc (builtin_global): Deleted. + +Thu Nov 5 23:59:39 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.cc (builtin_feval): New function. + * tree-extras.cc (feval): Handle the dirty details. + + * g-builtins.cc (builtin_rand): New function. + * tree-extras.cc (rand): Handle the dirty details. + +Wed Nov 4 14:54:17 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * num2str.m: New M-file. + * int2str.m: Ditto. + + * g-builtins.cc (builtin_disp): New function. + + * g-builtins.cc (builtin_fprintf, builtin_printf, + builtin_sprintf): New functions. + * tree-extras.cc (do_printf): New function to handle the gory + details. + + * g-builtins.cc (builtin_flops): Implement here because we may + actually want to count operations at some point. + +Tue Nov 3 17:06:40 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-const.cc (do_binary_op): Detect and give error message for + optations on empty matrices. + (do_unary_op): Likewise. + + * parse.y (matrix): Convert `[]' and `[;]' to empty matrices + instead of (tree_matrix *) NULL. + +Mon Nov 2 11:23:40 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * src/Makefile.in: Update dependencies. + * liboctave/Makefile.in: Ditto. + + * tree-const.cc (force_numeric): Consult matlab_strings() + before doing string to number conversion. + * builtins.cc (matlab_strings): New builtin variable. + * utils.cc (matlab_strings): New function. + + * tree-extras.cc (linear_constraints_ok): New function. + (linear_constraints_ok): Ditto. + (npsol): Use them to avoid creating inconsistent sets of + constraints and crashing. It would really be nice to have + exception handling. + + * symtab.cc (load): Issue error mesasges if attempt to find + name keyword fails. + + * Version 0.43. + + * tree-extras.cc (npsol): Use new minimize (phi, inform). + Handle nargout == 3. + + * g-builtins.cc (builtin_npsol): Allow nargout == 3. + + * NPSOL.cc (set_default_options): New function. + (all constructors): Use it. + (operator =): Use it and print warning message (setting default + options doesn't represent a true copy and it would be somewhat + difficult to fix this...). + + * npchkd.f (npchkd): Only write message if msglvl > 0. + +Sun Nov 1 00:58:16 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * gnuplot-build/Makefile.in (LIBDIRS): Set correctly. + (notgnuplot): Use it. + + * libcruft/misc/gen-d1mach.c: Generate d1mach.f at build time + instead of depending on the installer to get it right. + * libcruft/Makefile.in (gen-d1mach): New target. + + * libcruft/Makerules.in (SPECIAL): New macro. + (DISTFILES): Include it. + + * libcruft/Makerules.in (SPECIAL_DEPEND): Ditto. + (../../libcruft.a): Use it. + +Mon Oct 26 02:25:11 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (is_valid_function): Try harder to find M-files + that may not have been parsed yet. + + * symtab.cc (define (symbol_record*)): New function. Make it + simple to copy all fields of a symbol_record if we already have + one. + * utils.cc (force_global): Use it. + + * utils.cc (valid_identifier): Allow underscores in names. + + * tree-extras.cc (npsol): Force column vector to be returned. + (fsolve): Ditto. + + * Version 0.42. + + * tree-extras.cc (fsolve): New function for solving nonlinear + algebraic equations. This needs much more work if it is to + provide all the functionality of Matlab's fsolve. + + * tree-extras.cc (fsolve_user_function): New function. + + * libcruft/minpack: Import needed functions. + + * tree-extras.cc: (npsol (tree_constant*, int, int): Completely + rewrite to handle all of the follwing: + + 1. npsol (x, phi) + 2. npsol (x, phi, lb, ub) + 3. npsol (x, phi, lb, ub, llb, c, lub) + 4. npsol (x, phi, lb, ub, llb, c, lub, nllb, g, nlub) + 5. npsol (x, phi, lb, ub, nllb, g, nlub) + 6. npsol (x, phi, llb, c, lub, nllb, g, nlub) + 7. npsol (x, phi, llb, c, lub) + 8. npsol (x, phi, nllb, g, nlub) + + * tree-extras.cc (npsol_constraint_function): New function. + + * tree-extras.cc (tree_constant_to_vector): New function. + (tree_constant_to_matrix): Ditto. + (takes_correct_nargs): Ditto. + +Fri Oct 23 10:19:51 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (is_valid_function): New function. + (npsol): Use it. + + * utils.cc (s_plural): New function. + (es_plural): Ditto. + + * tree-extras.cc (npsol): Improve checks for valid objective + function. + + * tree.cc (tree_function::max_expected_args): New function. + +Thu Oct 22 18:42:07 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.cc (builtin_lsode): Quick check of arguments, then + call lsode (tree_constant *, int, int). + * Move rest of code for implementing builtin_lsode to + tree-extras.cc. + + * g-builtins.cc (builtin_npsol: Quick check of arguments, then + call npsol (tree_constant *, int, int). + * Move rest of code for implementing builtin_npsol to + tree-extras.cc. + + * tree-const.cc: Simplify functions that require numeric arguments + by always calling make_numeric for them instead of doing it + conditionally. + * tree.cc: Ditto. + * tree-extras.cc: Ditto. + + * tree-const.h (tree_constant::make_numeric): Return *this if + already a numeric type. + + * NLP.cc: In constructors, don't try to assign NULL to bounds + objects. + + * tree-const.cc (tree_constant_rep::valid_as_scalar_index (void)): + New function. + * tree-const.cc (valid_scalar_indices (tree_constant*, int): + New function. + * tree-const.cc (tree_constant_rep::do_scalar_index): Simplify by + using functions to determine if arguments are valid as indices. + (tree_constant_rep::do_scalar_assignment): Likewise. + +Wed Oct 21 14:11:58 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-extras.cc (determinant): Make it work again. + + * tree.cc (tree_identifier::eval (tree_constant*, int, int, int): + Simplify logic. Only have one ans->eval() call. + + * tree-const.cc (tree_constant_rep::eval (tree_constant*, int, + int, int): Properly handle indexing of range constants. + + * tree-const.cc (stupid_fortran_style_matrix_index): Preserve row + or column orientation for vectors. + + * toeplitz.m: New M-file. + * invhilb.m: Ditto. + * hankel.m: Ditto. + + * tree-extras.cc (max): Handle two arg case. + tree-extras.cc (max): Likewise. + (min (Matrix&, Matrix&): New function. + (max (Matrix&, Matrix&): Ditto. + +Tue Oct 20 15:13:57 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.41. + +Mon Oct 19 16:46:35 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * rows.m: New M-file. + * g-builtins.cc (builtin_rows): Delete function. + * g-builtins.h (builtin_rows): Delete declaration. + * builtins.cc (general_functions): Delete from initialization list. + + * columns.m: New M-file. + * g-builtins.cc (builtin_columns): Delete function. + * g-builtins.h (builtin_columns): Delete declaration. + * builtins.cc (general_functions): Delete from initialization list. + + * length.m: New M-file. + * g-builtins.cc (builtin_length): Delete function. + * g-builtins.h (builtin_length): Delete declaration. + * builtins.cc (general_functions): Delete from initialization list. + + * g-builtins.cc (builtin_size): If two values are expected to be + returned, put nr and nc in separate registers. + +Sun Oct 18 13:37:17 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree-base.h: Extract base tree class declarations from tree.h. + * tree-const.cc, tree-const.h: Extract tree_constant class from + from tree.cc, tree.h. + Change all uses of tree.h to use either or both of tree-base.h and + tree-const.h. + + * Matrix.cc (solve): Replaces LinEqn class. + tree.cc (do_binary_op) Use it. + + * g-builtins.cc (builtin_max): New function. + tree.cc (tree_constant::max): New friend. + + * g-builtins.cc (builtin_min): New function. + tree.cc (tree_constant::min): New friend. + + * cond.m: New M-file. + + * rank.m: New M-file. + + * g-builtins.cc (builtin_svd): New function. + tree.cc (tree_constant::svd): New friend function. + + * g-builtins.cc (builtin_svd): New function. + tree.cc (tree_constant::svd): New friend function. + + * t-builtins.cc (builtin_format): New function. Implement some of + the Matlab options (sort of). + + * Major changes to liboctave source. A new Matrix.cc/Matrix.h + completely replaces the old Matrix/Vec/AVec code. All other + classes that use Matrix/Vector objects have been updated (or + deleted, if they are no longer needed). All callers changed in + octave sources. + +Sun Oct 11 21:22:16 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_function::eval): Don't define more function + parameters than are expected. If fewer arguments than expected + are actually supplied, force them to be undefined. + + * parse.y (fact): Give warning and abort for identifiers followed + by '['. This should catch most improper uses of [] instead of () + for indexing operators. + + * tree.cc (do_binary_op (Matrix&, Matrix&, tree::expression_type): + Handle element by element exponentiation. + +Tue Sep 22 10:09:06 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.40. + +Mon Sep 21 13:09:06 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l: Accept ** and .** as well as ^ and .^ as exponentiation + operators. + +Fri Sep 18 15:19:51 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.h tree.cc utils.cc g-builtins.cc: Elimitate need for + overloaded operator-> in the tree_constant class. Also eliminate + uses of ->string, ->scalar, etc. Instead, always call + .string_value(), .double_value(), etc. + + * builtins.cc (install_builtins): Reserve `ans' as an + uninitialized global variable (should it really be global?). + + * parse.y (ans_expression): Handle default assignemnt to builtin + variable ans. + (command): Use it. + +Tue Sep 15 14:06:12 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.39. + + * tree.cc (tree_identifier::bump_value): Don't try to increment + undefined symbols or values. + (tree_prefix_expression::eval): Don't call bump_value if id is a + NULL_TREE. + (tree_prefix_expression::eval): Likewise. + + * g-builtins.cc (lsode_builtin): Handle extra arguments. + liboctave/ODE.cc (integ): Add template for handling bad returns + from lsode. + + * tree.cc (class tree_return_command): Implementation is just like + break and continue. Something seems wrong about this... + lex.l (return): Recognize return statement. + parse.y (statement): Handle function returns. + tree.cc (various eval functions): Check to see if we are returning + from a function. + + * tree.cc (tree_for_command::eval): Set abort_on_undefined when + evaluating the loop body. + (tree_while_command::eval): Ditto. + + * tree.cc (class tree_idenfier): Improve searching/parsing M-files + when handling undefined names. + tree.cc (tree_identifier::parse_m_file (char*)): New function. + (tree_identifier::parse_m_file (void)): Use it. + + * utils.cc (force_global): New function. + * symtab.cc (symbol_table::remove_name(char *)): New function. + + * tree.h, tree.cc (class tree_constant): Split into two classes, + tree_constant (handle) and tree_constant_rep (body) to enable use + of `smart pointers' and reference counted memory management. + (Lots of things are different with this change.) + +Sat Aug 22 11:58:27 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.38. + + * lex.l (COMMA_KLUDGE): Delete production, all uses. This doesn't + seem to be necessary anymore, and the mystery output lines + disappear without it. + + * builtins.cc (make_eternal (char *)): New function. + (install_builtins): Make LOADPATH, eps, pi, Inf, and NaN eternal. + + * New M-files: mean.m, std.m, hadamard.m, vander.m, hilb.m, + linspace.m, logspace.m. + + * tree.cc (tree_function::eval): Don't check number of arguments + supplied against total number possible (previously thought to be + `expected') so that user-defined functions can have variable + numbers of arguments. + + * tree.cc (tree_identifier::eval_undefined_error): New function. + (tree_identifier::eval): Use it. + + * octave.cc (abort_on_undefined): New global symbol to control + whether we should jump to top level after an undefined symbol has + been encountered. + tree.cc (tree_function::eval) Set it before evaluating function + body, restore to previous value after successful completion. + tree.cc (tree_identifier::eval_undefined_error): Use it + +Fri Aug 20 09:31:14 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.cc: New mapper functions: + isnan: Uses xisnan, which calls IEEE function isnan. + isinf: Uses xisinf which calls IEEE functions finite and isnan, + or isinf if available. + finite: Uses xfinite, which calls IEEE function finite. + abs: Uses fabs. + + * g-builtins.cc (sumsq): New function. + (diag): New function. + + * tree.cc (tree_constant::sumsq): New function + (tree_constant::diag): New function + + * Matrix.cc (sumsq): New function. + (diag): Ditto. + +Thu Aug 20 00:36:44 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.cc (builtin_error): New function. + + * gnuplot-build/Makefile.in (dist): Actually create `term' + subdirectory. + + * Lots of changes to tree.cc tree_assignment_expression::eval and + tree_index_expression::eval to make matrix indexing work like + Matlab. + (do_fortran_indexing): New user-level variable to control this + behavior. If this variable is false, things like + + a([1,2;3,4], [1,2;3,4]) = b + + become syntax errors. Otherwise, Matlab braindamage prevails. + +Tue Aug 18 13:15:46 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.37. + + * tree.cc (do_matrix_assignment): Conditionally allow single + indices for Matrix assignments. + (do_matrix_index): Ditto. + + * utils.cc (do_fortran_indexing): New function. + utils.h: Declare it. + builtins.cc (install_builtins): Default value for new + do_fortran_indexing variable. + + * builtins.cc (install_builtins): Bind eps to the value + DBL_EPSILON from float.h. Make it read only (will this cause + trouble)? + * Bind Inf to 1/0 (will only work for IEEE machines. + * Bind NaN to 0/0 (will only work for IEEE machines. + * Add round, fix, floor, ceil, and sign to builtin mapper functions. + (round): New function. + (fix): Ditto. + (signum): Ditto. + * Add clc (clear screen function). + * Add home (clear screen function). To be just like Matlab, this + wouldn't clear the screen. + + * New M-files: fliplr.m, flipud.m, trace.m, reshape.m. + + * utils.cc (bind_variable): Revise bind_string_variable so that it + takes a tree_constant as an argument. + (bind_protected_variable): Likewise for the function + bind_protected_string_variable. + (bind_string_variable): Delete. + (bind_protected_string_variable): Ditto. + utils.h: Fix declarations. + builtins.cc t-builtins.cc: Fix callers. + + * builtins.cc (install_builtins): Bind LOADPATH here. + octave.cc (initialize_globals): Not here. + + * Makefile.in (SOURCES): Add new scripts directory. + (scripts): New target. + libcruft/Makefile.in (install): Don't depend on all. + + * utils.cc (m_file_in_path): Get path from LOADPATH variable. + tree.cc (tree_identifier::parse_m_file): Modify caller. + + * src/Makefile.in (OCTAVE_M_FILE_DIR): New variable. + (utils.o): Use it. + utils.cc (default_path): Use it. + + * utils.cc (pathstring_to_vector): New function. + (default_path): Return colon separated path instead of vector of + paths. + * octave.cc (initialize_globals): Use pathstring_to_vector here. + Bind output of default_path to LOADPATH variable. + Eliminate octave_path global variable. + + * tree.cc (isstr): New function. + (all): Ditto. + (any): Ditto. + (cumprod): Ditto. + (cumsum): Ditto. + (prod): Ditto. + (sum): Ditto. + + * g-builtins.cc (builtin_isstr): New function. + (builtin_all): Ditto. + (builtin_any): Ditto. + (builtin_cumprod): Ditto. + (builtin_cumsum): Ditto. + (builtin_prod): Ditto. + (builtin_sum): Ditto. + + * Matrix.cc (all): New function. + (any): Ditto. + (cumprod): Ditto. + (cumsum): Ditto. + (prod): Ditto. + (sum): Ditto. + + * scripts: New directory. + scripts/strcmp.m: New file (first M-file function in distribution!). + scripts/Makefile.in: New file. + configure.in: Include scripts/Makefile in list of files to create. + +Sat Aug 15 18:32:24 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.36. + +Fri Aug 14 08:44:10 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (id_to_define): New global variable. + (curr_m_file_name): Ditto. + (current_infile): Ditto. + + * tree.h tree.cc (tree_identifier::parse_m_file): New function. + (tree_identifier::eval): Handle M-files. + + * tree.h (stash_m_file_name): New virtual function. + (stash_m_file_time): Ditto. + (time_parsed): Ditto. + (m_file_name): Ditto. + + * tree.h tree.cc (tree_function::stash_m_file_name) New function. + (tree_function::stash_m_file_time): Ditto. + (tree_function::time_parsed): Ditto. + (tree_function::m_file_name): Ditto. + + * lex.l (reading_m_file): New global variable. + (delete_buffer): New function. + (yywrap): New function. Always return 0 (is this a smart thing to + do?). + + * parse.y (func_def2): Handle input from m-files (sort of). + + * octave.cc (octave_path): New global variable. + (using_readline): Ditto. + (no_line_editing): Ditto. + + * octave.cc (main): Initialize current_command_number before + calling setjmp. + * Increment it in main command loop, not in parse.y. + + * utils.h utils.cc (default_path): New function. + (m_file_in_path): Ditto. + (is_newer): Ditto. + + * octave.cc (main): Execute commands here. + * parse.y (input): Not here. + + * octave.cc (tree *global_command): New global variable that + points to the current command to be executed. + +Thu Aug 13 07:08:11 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * parse.y: Make word_list_cmd a fact, not a command, so that + things like `y = who -all' can work. You can't do that in Matlab. + + * t-builtins.cc (builtin_who): Print symbols in columns, sorted. + (list_in_columns) New function, mostly stolen from GNU ls. + + * symtab.h symtab.cc (char **list (void)) New function. + (char **sorted_list (void) New function. + + * tree.cc (various eval functions): Handle printing results of + text and general functions here. Straighten out other printing + stuff, maybe... + + * t-builtins.h t-builtins.cc: Make text functions return + tree_constant* instead of int, delete print flag argument. + + * g-builtins.h g-builtins.cc: Delete print flag argument. + + * Version 0.35. + +Wed Aug 12 15:12:23 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_builtin::eval): Call mapper function with + print = 0 to avoid getting two answers. + (specific do_matrix_assignment functions): Handle resizing + correctly for `:' indices. + (tree_colon_expression::eval): Don't crash if the evaluation of + an operand yields a NULL_TREE_CONST. + +Mon Aug 10 07:31:37 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_identifier::define): Return NULL_TREE_CONST if + symbol_record::define fails. + (tree_identifier::assign): Likewise. + + * symtab.h (symbol_lifetime): New attribute for symbol_records. + Can be either temporary or eternal. + (symbol_class): Delete eternal attribute. + * builtins.cc (install_builtins): Mark all builtins as eternal. + + * Version 0.34. + + * tree.h: Delete ttype, enum list of tree types. + + * g-builtins.h g-builtins.cc (builtin_colloc): New function. + + * liboctave (various): Add missing return values, etc. so that + liboctave compiles cleanly. + + * tree.h tree.cc (tree_multi_assignment): New class to implement + assignments to more than one variable. Does it work? Maybe... + + * tree.h (tree_constant **eval (int, int)): New virtual function. + (is_identifier): Another one. + + * symtab.h (eternal): New class for symbol_records. + * symtab.h symtab.cc (make_eternal): New function. + * builtins.cc (install_builtins): Make builtin variables eternal. + + * tree.cc (list_to_vector): Surround by `#if 0/#endif' to avoid + compilation warning. + +Sun Aug 9 03:18:38 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * t-builtins.h t-builtins.cc (builtin_cd): New function adapted + from bash for changing the current working directory. + (builtin_pwd): New function adapted from bash for printing the + current working directory. + + * utils.h utils.cc: New functions from bash for changing and + printing the current working directory: + + pathname_backup make_absolute + get_working_directory change_to_directory + + * utils.h utils.cc (bind_string_variable): New function. + (bind_protected_string_variable): Likewise. + + * octave.cc (initialze_globals): New function. + + * utils.h utils.cc: New functions from bash, mostly for fancy + prompting: + + polite_directory_format absolute_pathname + absolute_program base_pathname + read_octal sub_append_string + decode_prompt_string + +Thu Aug 6 02:39:31 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * octave.cc (initialize_history): Fix up to + (octave_hist_file) New global variable. + (octave_hist_size) Ditto. + (history_lines_this_session) Ditto. + (history_lines_in_file) Ditto. + + * input.cc (octave_gets): Keep track of number of lines read + during the current session. + + * utils.cc (default_history_file): New function. Look for + OCTAVE_HISTFILE environment variable and use its value if + possible. + (default_history_size): New function. Look for OCTAVE_HISTSIZE + environment variable and use its value if possible. + + * t-builtins.cc (builtin_history): Steal from bash and modify to + work with octave. + + * g-builtins.cc (builtin_det): New function. + + * tree.h tree.cc (determinant): New function + + * g-builtins.cc: Rewrite functions that use fill_matrix, inverse, + and identity_matrix to use new versions implemented as friends of + tree_constant. This is being done in an attempt to get rid of all + calls to tree_constant::const_type() outside of tree.cc. + + * tree.cc (tree_constant): Implement new functions for filling + and inverting tree constants as matrices, and for creating an + identity matrix from a tree_constant. + + * g-builtins.cc (builtin_inv): New function. + builtins.cc: Allow builtin_inv to be called as either inv(A) or + inverse(A). + + * tree.cc (do_binary_op (Matrix, Matrix)): Better handling of + solution of linear equations for square coefficient matrices. + + * LinEqn.cc (solve): Don't exit on singular matrices. Implement + new variations of these functions that will allow status checking. + + * src/Makefile.in: Define GNUPLOT_BINARY and SITE_DEFAULTS. + Specific rules for octave.o and builtins.o to avoid defining + GNUPLOT_BINARY and SITE_DEFAULTS for all .cc targets. + + * builtins.cc: Use macro GNUPLOT_BINARY. + + * octave.cc (execute_startup_files): Use macro SITE_DEFAULTS. + Execute commands from SITE_DEFAULTS file. + + * t-buitlins.cc (builtin_pause): Make it work. + + * configure.in: Check for termio.h and/or sgtty.h. + + * octave.cc (clean_up): Reset terminal state to cooked mode. + (main) Likewise, after return from SIGINT signal handler. + + * utils.h utils.cc (raw_mode): New function (mostly stolen from + less(1)) toggle input processing for stdin to raw/cooked modes. + (kbhit): New function to read one character from cin in raw mode + without echoing it. + + * builtins.cc: Fix expected number of arguments in lists of + builtins. + + * tree.h tree.cc (max_args_expected (void)): New virtual function. + (tree_builtins::) Provide a definition of it. + + * lex.l (identifier): Before gobbling up text function arguments, + check to see that we expect some. + + * symtab.h symtab.cc (max_args_expected): Return max args expected + by a symbol (currently only valid for tree_builtins). + +Wed Aug 5 05:03:59 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * utils.h utils.cc (resize_on_range_error): Decide what to return + based on value of global variable of same name. + (prefer_column_vectors): Likewise. + + * Version 0.33. + + * parse.y (func_def2): Call define (tree *, symbol_type), not + define (tree *), so that the symbol type is set for user-defined + functions. + (assignment): Catch assignments to functions here. + + * tree.h tree.cc (tree_identifier::define (tree *, symbol_type): + New function (be careful out there...). + + * symtab.h (symbol_type): Add new `user_function' enum value. + + * tree.cc (do_matrix_assignment): Call prefer_column_vectors(). + + * tree.h tree.cc (do_matrix_assignment (...)): New functions to + implement assignment to indexed matrices. + (do_scalar_assignment (...)): New function to implement assignment + to an indexed scalar. + + * utils.h utils.cc (resize_on_range_error): New function. Should + eventually decide what to return based on value of global variable + of same name. + (prefer_column_vectors): New function. + +Tue Aug 4 05:37:47 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_constant::save): New function. + (tree_constant::load): New function. + + * symtab.cc (symbol_record::save): New function. + (symbol_table::load): New function. + + * t-builtins.cc (builtin_load): Start implementation. Yikes, this + is probably going to need a lot of work to be very robust... + + * t-builtins.cc (builtin_save): Implement by asking the + symbol_record to save itself. Maybe this should really be done by + asking the symbol table to save a symbol... + + * utils.cc (extract_keyword): New function. + (valid_identifier): New function. + +Fri Jul 31 04:16:24 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * parse.y (func_def3): Extra error cases for empty function + bodies. + (func_def1, func_def1a, func_def1b): Slighly straighten out some + truly twisted logic, eliminate func_def1a, rename func_def1b to + func_def1a, and make statementss like function [x,y] = foo() end + work properly (I think). + (func_def*): Put function name in global symbol table, not top + level symbold table. This makes them accessible from other + functions, eh? + + * t-builtins.cc (builtin_who): Accept -all, -local, -global, and + -top flags. + +Thu Jul 30 00:39:40 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * lex.l (current_buffer): New function to return current flex + input buffer. Will need this to be able to switch file contexts. + + * Version 0.32. + + * lex.l (create_buffer, switch_to_buffer): New functions to handle + input from various streams. This should be enough to allow us to + implement Matlab-like M-files. + octave.cc (main, execute_startup_files): Use them. + + * octave.cc (execute_startup_files): Execute commands from + $HOME/.octaverc and ./.octaverc. + + * g-builtins.cc (builtin_plot): Delete temporary files. + Ignore SIGINT while gnuplot is executing. + +Wed Jul 29 20:16:25 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (all_args_defined): New function to check a + tree_constant** vector to see if all elements are non-null. + (tree_index_expression::eval (int)): Use it, and abort the + evaluation if test fails. + + * terminals.h, terminals.cc: New files for doing things with + gnuplot graphics terminal names. + src/Makefile.in: Handle new files. + +Tue Jul 28 00:25:24 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * g-builtins.cc (builtin_plot): Make it work, at least halfway. + + * g-builtins.cc (builtin_save): New function. + + * gnuplot-build/Makefile.in: Add -DREADLINE and remove readline.o + from list of objects to actually enable the GNU command line + editing. + + * configure.in: Use AC_PROG_CHECK macro to search for f2c and f77. + Check for several common Un*x Fortran compilers. + Add extra messages. + + * g-builtins.cc g-builtins.h: New files for builtin general + functions extracted from builtins.cc. + + * t-builtins.cc t-builtins.h: New files for builtin text functions + extracted from builtins.cc. + + * Makefile.in (split-dist): New target. + + * Version 0.31. + +Mon Jul 27 22:01:58 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_constant::do_matrix_index (tree_constant **, int): + Allow single argument to work for matrices that are really row or + column vectors. + + * lex.l: Accept `<>' in addition to `!=' and `~=' as `not equal' + comparison operators. + + * libcruft/Makerules: Allow for compiling the Fortran routines + with the native Fortran compiler instead of translating to C. + + * f2c-compat.sh, flibs.sh: New scripts which try to determine + whether it will be possible for us to use the system's Fortran + compiler directly, and if so, what libraries to add to the loader + command. These scripts are known to work on SPARCstations running + SunOS and DECstations running Ultrix. Not tested elsewhere... + * configure.in: Use them. + * Makefile.in: Distribute them. + +Wed Jul 22 00:04:48 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * builtins.cc: Begin implementation of NLP solver using NPSOL. + +Tue Jul 21 13:44:13 1992 John W. Eaton (jwe@june.che.utexas.edu) + + * octave.cc: If printing version information, also print pointer + to warranty info. + + * builtins.cc: Implement the Matlab functions ones, zeros, eye, + clock, date, size, length, and global. + Implement warranty builtin. + (builtin_clear): Fix to work with global variables. + + * symtab.cc (clear): Fix to work properly with global variables. + +Mon Jul 20 11:58:23 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc (tree_constant::do_matrix_index (tree_constant**, int)): + Make string indices work. + (tree_constant::force_numeric): Don't special case + single-character strings (this uncovers a flaw in the design of + the constructor for the magic colon operator...). + +Fri Jul 17 16:33:00 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.30. + + * tree.cc: Delete undefined identifiers when trying to eval them. + + * builtins.cc: Add beginnings of builtin who and clear functions. + + * symtab.cc symtab.h (clear): New function. + + * tree.cc, tree.h, parse.y: Implement matrix indexing with colon + expressions, implement the magic colon operator for column and row + selection. + + * tree.cc tree.h: Completely rework colon expressions. + +Thu Jul 16 09:27:48 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * gnuplot-dist: Rename from gnuplot-3.2 so we're not tied to a + version number. + +Tue Jul 14 11:22:35 1992 John W. Eaton (jwe@ward.che.utexas.edu) + + * tree.cc builtins.cc: Make argc/nargs/nargin work like C: + the argument count is the number of command line arguments plus + the function name. This goes for `argument lists' for matrices as + well as functions. It seems a bit awkward but at it's consistent, + and it's like C. Hmm. Maybe this is a bad choice... + + * utils.cc utils.h: New files for utility functions. + +Mon Jul 13 00:29:50 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.29. + + * tree.cc tree_constant::tree_constant (matrix): Automatically + convert 1x1 matrices to scalars. + + * parse.y lex.l: Fix up a bunch of stupid stuff and reduce the + number of shift/reduce conflicts to 16 (all but one because of the + optional separator garbage). + + * parse.y lex.l: Allow for assignments to lists of identifiers to + be partially parsed. This will still require some error checking + in tree.cc to ensure that the list is made up of identifiers only, + since that's not enforced by the grammar (I don't see a way to do + it, do you?) + +Sun Jul 12 11:24:33 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * tree.cc tree.h parse.y lex.l: Implement logical AND (symbol &), + OR (symbol |), and not (symbol ~). Also provide the C-style + operators &&, ||, and !). + + * Matrix.cc Matrix.h: Provide stupid element-wise logical + operators for matrices. + + * Version 0.28. + + * parse.y lex.l tree.cc tree.h: Implement C-style prefix and + postfix increment and decrement operators (symbols ++ and -- + respectively). + + * parse.y lex.l tree.cc tree.h: Implement break and continue. + + * tree.cc tree.h: Assignment to matrix elements roughed out. + + * gnuplot/tree.cc: Solution of linear equations via the lift + division operator partially implemented. Singular coefficient + matrices aren't handled very well yet... + + * gnuplot-build/Makefile.in: Make this work to build gnuplot for + generic X11/unix environments. + * Remove -Wall from CFLAGS to avoid loads of warnings. + * Use GNU readline instead of the one that comes with gnuplot. + + * gnuplot-build/*.diff: Various patches for various things. + +Sat Jul 11 10:14:12 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.26 + + * src/Makefile.in: Distribute lex.cc, parse.cc, y.tab.h. + * src/Makefile.in (dist): Depend on lex.cc and parse.cc. + + * gnuplot-build: New directory for patching and building gnuplot. + This is apparenty required because the gnuplot license won't allow + distrubution of modified versions, but will allow patches to be + distributed. + * gnuplot-build/Makefile.in: New file. + + * gnuplot-3.2: New directory. + + * readline: New directory from the bash-1.12 distribution, plus + tilde.c from bash's lib/glob directory and xmalloc.c from bash's + lib/malloc directory. + * readline/Makefile.in, readline/doc/Makefile.in, + readline/examples/Makefile.in: New files. + + * All Makefie.in files: Allow make to work from any directory, not + just the top level one. + +Fri Jul 10 22:20:56 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * SERVICE: Remove, since it seems too specific to GNU products. + +Thu Jul 9 07:48:33 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.20. + + * Solution of ODEs with LSODE partially implemented. It's + possible to solve some simple equations. + + * tree.cc tree.h (tree_constant): Add string constants and make + them work more or less like string constants in Matlab (implicit + conversion to ASCII numbers -- gag. This isn't complete, and it + it assumes that ASCII is the character set for the host + machine/compiler...). + +Tue Jul 7 07:28:35 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.19. + + * User defined function definitions and calls to them mostly work. + Still need to implement multiple return values correctly. + +Mon Jul 6 04:23:37 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.18. + + * lex.l parse.y tree.cc tree.h: Begin implementation of + user-defined functions. + +Sun Jul 5 19:27:08 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.17. + + * lex.l: Replace SAVE_STRING macro with a function. + + * builtins.cc (builtin_document): New builtin function. + (builtin_help): Make it work. + + * lex.l: More rules for gathering text. These are still not quite + as they should be, but they will work in most cases. I think the + flex generated scanner is either going to have to be reworked or + replaced with a handemade version at some point (probably soon)... + + * tree.cc tree.h: Add tree_word_list and tree_word_list_command + classes for text functions. + +Fri Jul 3 05:13:15 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.16. + + * builtins.h builtins.cc: New files for builtin functions. + Implement a few simple builtin functions. + + * tree.cc tree.h: Add tree_builtin type for builtin functions. + + * tree.cc tree.h: eval (args...) New virtual function. + +Thu Jul 2 01:27:38 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.15. + + * symtab.h, symtab.cc: Allow variables and functions to be tagged + as read-only or read-write. + +Wed Jul 1 15:54:36 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * input.cc and octave.cc: allow input to come from a file. + + * lex.l: to accept `#' as a comment character (allows one to + use the `#!/bin/octave' style script hack). + + * doc: New directory containing skeleton stuff + * SERVICE: New file from GCC. + * BUGS: New file, now produced from doc/bugs.texi. + * INSTALL: New file, now produced from doc/install.texi. + +Sat Jun 27 15:52:37 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.14. + + * Fixed parser to eliminate reduce/reduce conflicts. + + * Fixed parser to recognize assignment to multiple identifiers + (e.g., [E,V] = eig (A); ). + + * Quickie implementation of indexed array evaluation. Works for + scalar indices, but not range/array indices. + +Fri Jun 26 04:23:12 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.12. + + * Hooks added for indexed array evaluation and assignment. + * Colon expression implementation improved. + * Implementation of for command eval() improved. + +Thu Jun 25 00:28:12 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.11. + + * Colon expressions added. + * For command added, but the implementation needs work. + +Wed Jun 24 15:09:36 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.10. + + * Cheesy signal handler added to catch interrupts. + + * Matrix input works, even for nested matrices. Some error + checking is done while the matrix is evaluated to ensure that + the number of rows and columns match up. + +Mon Jun 22 00:21:49 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.9. + + * Command line matrix input partially implemented. It's not yet + possible to enter nested matrices, but it is possible to enter + simple matrices (e.g. [1,2;a,b+c], where a, b, and c are scalars. + + * Version 0.8. + + * If commands added. + + * Version 0.7. + + * Command chains added. + * Boolean operations added, tested for scalars. + * While loop added, tested for simple commands. + +Fri Jun 19 05:50:44 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.6. + + At this early stage, while a lot of changes are being made very + quickly, ChangeLog entries will probably just list features added. + + * Variable assignment works for scalars. + * Simple scalar expressions work. + +Thu Jun 18 06:44:24 1992 John W. Eaton (jwe@schoch.che.utexas.edu) + + * Version 0.5. + + * src/version.h: For all the pre-alpha distributions, count + versions as 0.1, etc. instead of 0.01. + + * Makefile: (dist) Automatically update version_string in + src/version.h. + + * symtab.h, symbtab.cc: New files for symbol tables. + + * tree.h, tree.cc: New files for parse trees. + + * Lots of work unrecorded here. Octave is now self-contained, the + tree routines are being redesigned, etc. + +Fri Mar 20 17:03:16 1992 John W. Eaton (jwe@andy.che.utexas.edu) + + * Version 0.02. Octave understands some simple matrix + expressions, but it is not yet possible for matrix elements to + be constructed from expressions. + +Thu Mar 19 06:13:39 1992 John W. Eaton (jwe@andy.che.utexas.edu) + + * Version 0.01. Octave understands simple scalar expressions. + Hey, Hey! It is not yet self contained -- I'm still linking to + the old libraries in /usr/local/c++-classes, and this isn't likely + to change for a while. (Other things are much more important than + making the distribution work on other machines. Sorry...) + +Fri Feb 21 05:06:38 1992 John W. Eaton (jwe@andy.che.utexas.edu) + + * Version 0.00. This includes the basic directory structure, + makefiles, and a lot of the old Fortran source, including a way to + make a libcruft.a. Octave compiles and accepts input (with + history and editing) but doesn't do much else. + +Wed Feb 19 06:20:44 1992 John W. Eaton (jwe@andy.che.utexas.edu) + + * ChangeLog: New file.