changeset 8958:6ccc12cc65ef

implement raising a permutation matrix to integer power
author Jaroslav Hajek <highegg@gmail.com>
date Wed, 11 Mar 2009 14:07:24 +0100
parents 360aa52b5942
children 089abf117499
files liboctave/ChangeLog liboctave/PermMatrix.cc liboctave/PermMatrix.h src/ChangeLog src/OPERATORS/op-fpm-fpm.cc src/OPERATORS/op-pm-pm.cc src/xpow.cc src/xpow.h
diffstat 8 files changed, 10739 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/ChangeLog
+++ b/liboctave/ChangeLog
@@ -1,3 +1,8 @@
+2009-03-11  Jaroslav Hajek  <highegg@gmail.com>
+
+	* PermMatrix.cc (PermMatrix::power): New method.
+	* PermMatrix.h: Declare it.
+
 2009-03-11  Jaroslav Hajek  <highegg@gmail.com>
 
 	* dNDArray.cc (NDArray::NDArray (const charNDArray&)): New
@@ -10624,3 +10629,10629 @@
 	ComplexMatrix::solve): Likewise.
 
 See ChangeLog.1 in the top level directory for earlier changes.
+2009-03-11  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dNDArray.cc (NDArray::NDArray (const charNDArray&)): New
+	constructor.
+	* fNDArray.cc (FloatNDArray::FloatNDArray (const charNDArray&)):
+	Ditto.
+	* CNDArray.cc (ComplexNDArray::ComplexNDArray (const charNDArray&)):
+	Ditto.
+	* fCNDArray.cc (FloatComplexNDArray::FloatComplexNDArray 
+	(const charNDArray&)): Ditto.
+
+	* dNDArray.h (NDArray::NDArray (const charNDArray&)): Declare.
+	* fNDArray.h (FloatNDArray::FloatNDArray (const charNDArray&)):
+	Ditto.
+	* CNDArray.h (ComplexNDArray::ComplexNDArray (const charNDArray&)):
+	Ditto.
+	* fCNDArray.h (FloatComplexNDArray::FloatComplexNDArray 
+	(const charNDArray&)): Ditto.
+
+	* dMatrix.cc (Matrix::Matrix (const charMatrix&)): Cast to unsigned
+	chars.
+	* fMatrix.cc (FloatMatrix::FloatMatrix (const charMatrix&)): Likewise.
+	* CMatrix.cc (ComplexMatrix::ComplexMatrix (const charMatrix&)):
+	Likewise.
+	* fCMatrix.cc (FloatComplexMatrix::FloatComplexMatrix 
+	(const charMatrix&)): Likewise.
+
+2009-03-10  Jason Riedy  <jason@acm.org>
+
+	* sparse-base-lu.cc (Pc_vec): The column permutation should be
+	Ufact.cols ()-long, not Lfact.rows ()-long.
+
+2009-03-10  Jason Riedy  <jason@acm.org>
+
+	* dSparse.cc (SparseMatrix::SparseMatrix (const PermMatrix&)):
+	Fix conversion to add values to the matrix as well as getting
+	structure correct.
+
+2009-03-10  John W. Eaton  <jwe@octave.org>
+
+	* Array.h, ArrayN.h, Bounds.h, CmplxAEPBAL.h, CmplxCHOL.h,
+	CmplxGEPBAL.h, CmplxHESS.h, CmplxQR.h, CmplxQRP.h, CmplxSCHUR.h,
+	CmplxSVD.h, CollocWt.h, EIG.h, FEGrid.h, LinConst.h, Range.h,
+	Sparse.h, SparseCmplxQR.h, SparseQR.h, dbleAEPBAL.h, dbleCHOL.h,
+	dbleGEPBAL.h, dbleHESS.h, dbleQR.h, dbleQRP.h, dbleSCHUR.h,
+	dbleSVD.h, dim-vector.h, fCmplxAEPBAL.h, fCmplxCHOL.h,
+	fCmplxGEPBAL.h, fCmplxHESS.h, fCmplxQR.h, fCmplxQRP.h,
+	fCmplxSCHUR.h, fCmplxSVD.h, fEIG.h, floatAEPBAL.h, floatCHOL.h,
+	floatGEPBAL.h, floatHESS.h, floatQR.h, floatQRP.h, floatSCHUR.h,
+	floatSVD.h, idx-vector.h, lo-utils.h, oct-inttypes.h,
+	oct-spparms.h, str-vec.h: Include <iosfwd> instead of <iosstream>.
+
+2009-03-10  Jaroslav Hajek  <highegg@gmail.com>
+
+	* mx-inlines.cc (OP_CUMMINMAX_FCN2): r -> r0 where appropriate.
+
+2009-03-08  Jaroslav Hajek  <highegg@gmail.com>
+
+	* idx-vector.h (idx_vector::bloop): loop --> bloop.
+	(idx_vector::loop): New method.
+	* MArray.cc (MArray<T>::idx_add (cons idx_vector&, T))
+	(MArray<T>::idx_add (cons idx_vector&, const MArray<T>&)): New methods.
+	* MArray.h: Declare them.
+
+2009-03-05  Jason Riedy  <jason@acm.org>
+
+	* Sparse.h (Sparse<T>::elt_type): Remove typedef, replace with:
+	* Sparse.h (Sparse<T>::element_type): Add typedef to be consistent
+	with Array.h
+	* DiagArray2.h (DiagArray2<T>::elt_type): Likewise, removed.
+	* DiagArray2.h (DiagArray2<T>::element_type): Define by using
+	Array<T>::element_type.
+	* intNDArray.h (intNDArray<T>::element_type): Remove, inherited
+	from MArrayN<T>.
+
+2009-03-05  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dSparse.h (SparseMatrix::SparseMatrix(const PermMatrix&)): New
+	constructor.
+	(SparseMatrix::SparseMatrix(const DiagMatrix&)): Fix implementation.
+	* CSparse.h (SparseComplexMatrix::SparseComplexMatrix(const ComplexDiagMatrix&)): 
+	Fix implementation.
+
+2009-03-04  Jaroslav Hajek  <highegg@gmail.com>
+
+	* PermMatrix.h (PermMatrix::elem): Fix comparisons.
+
+2009-03-03  Jaroslav Hajek  <highegg@gmail.com>
+
+	* lo-mappers.cc (xmin (float, float), xmax (float, float)): Simplify.
+
+2009-03-02  Jaroslav Hajek  <highegg@gmail.com>
+
+	* mx-inlines.cc: Add missing #include.
+
+2009-02-25  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in: Make maintainer-clean and distclean the same.
+
+2009-02-25  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-inttypes.cc (pow (const octave_int<T>&, const octave_int<T>&)):
+	Simplify.
+
+2009-02-23  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-inttypes.h (octave_int_cmp_op::mop): Implement as simple
+	forwarders when OCTAVE_INT_USE_LONG_DOUBLE is not defined.
+	(octave_int_cmp_op::emulate_mop): New static overloaded template
+	member function.
+	* oct-inttypes.cc: Turn the octave_int_cmp_op::mop definitions into
+	defs for octave_int_cmp_op::emulate_mop. 
+	(INSTANTIATE_INT64_DOUBLE_CMP_OP0): Instantiate
+	octave_int_cmp_op::emulate_op instead.
+
+2009-02-23  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dDiagMatrix.cc (DiagMatrix::pseudo_inverse): New method.
+	* dDiagMatrix.h: Declare it.
+	* fDiagMatrix.cc (FloatDiagMatrix::pseudo_inverse): New method.
+	* fDiagMatrix.h: Declare it.
+	* CDiagMatrix.cc (ComplexDiagMatrix::pseudo_inverse): New method.
+	* CDiagMatrix.h: Declare it.
+	* fCDiagMatrix.cc (FloatComplexDiagMatrix::pseudo_inverse): New method.
+	* fCDiagMatrix.h: Declare it.
+
+2009-02-20  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-sort.h (octave_sort<T>::MergeState::MergeState): New
+	constructor.
+	(octave_sort<T>::MergeState::~MergeState): New destructor.
+	(octave_sort<T>::MergeState::reset, 
+	octave_sort<T>::MergeState::getmem,
+	octave_sort<T>::MergeState::getmemi): New methods.
+	(octave_sort<T>::sort,
+	octave_sort<T>::merge_lo, octave_sort<T>::merge_hi
+	octave_sort<T>::merge_at): Reflect change.
+
+2009-02-19  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-types.h (sortmode): Move enum here.
+	* oct-sort.h (octave_sort<T>::ms): Declare as pointer.
+	(octave_sort<T>::lookup): New overloaded method.
+	* oct-sort.cc: Reflect change to ms.
+	(octave_sort<T>::lookup): New overloaded method.
+	(out_of_range_pred): New helper class.
+	(out_of_range): New helper function.
+	* oct-lookup.h: Remove file.
+	* Array.cc (Array<T>::lookup): New overloaded method.
+	* Array.h: Declare it.
+
+2009-02-18  John W. Eaton  <jwe@octave.org>
+
+	* dbleQR.cc (QR::init, QR::form): Cast int to octave_idx_type in
+	call to std::max.
+	* floatQR.cc (FloatQR::init, FloatQR::form): Ditto.
+	* CmplxQR.cc (ComplexQR::init, ComplexQR::form): Ditto.
+	* fCmplxQR.cc (FloatComplexQR::init, FloatComplexQR::form): Ditto.
+
+	* dbleQRP.cc (QRP::init): Cast int to octave_idx_type in call to
+	std::max and as operand to -= operator.
+	* CmplxQRP.cc (ComplexQRP::init): Ditto.
+	* floatQRP.cc (FloatQRP::init): Ditto.
+	* fCmplxQRP.cc (FloatComplexQRP::init): Ditto.
+
+	* CDiagMatrix.cc, CDiagMatrix.h (ComplexDiagMatrix::inverse):
+	Declare info as octave_idx_type, not int.
+	* dDiagMatrix.cc, dDiagMatrix.h (DiagMatrix::inverse): Ditto.
+	* fDiagMatrix.cc, fCDiagMatrix.h (FloatDiagMatrix::inverse): Ditto.
+	* fCDiagMatrix.cc, fCDiagMatrix.h (FloatComplexDiagMatrix::inverse):
+	Ditto.
+
+	* dMatrix.cc (Matrix::determinant):
+	Declare local variables volatile as needed to avoid "maybe
+	clobbered by vfork" warning from GCC.
+	* fMatrix.cc (FloatMatrix::determinant): Likewise.
+	* CMatrix.cc (ComplexMatrix::determinant): Likewise.
+	* fCMatrix.cc (FloatComplexMatrix::determinant): Likewise.
+	* dbleQR.cc (QR::update, QR::insert_col, QR::delete_col): Likewise.
+	* floatQR.cc (FloatQR::update, FloatQR::insert_col,
+	FloatQR::delete_col): Likewise.
+	* CmplxQR.cc (ComplexQR::update, ComplexQR::insert_col,
+	ComplexQR::delete_col): Likewise.
+	* fCmplxQR.cc (FloatComplexQR::update, FloatComplexQR::insert_col,
+	FloatComplexQR::delete_col): Likewise.
+
+	* dMatrix.cc (padec, solve_singularity_warning): Delete unused
+	static variable and function.
+	* CMatrix.cc (padec, solve_singularity_warning): Ditto.
+	* fMatrix.cc (padec, solve_singularity_warning): Ditto.
+	* fCMatrix.cc (padec, solve_singularity_warning): Ditto.
+
+2009-02-18  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (Array<T>::resize (const dim_vector&)): Check for negative
+	dimensions.
+
+2009-02-18  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-inttypes.cc (pow (const octave_int<T>&, const octave_int<T>&)):
+	Use octave_int comparisons to avoid warning for unsigned types.
+
+2009-02-17  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (Array<T>::resize (const dim_vector&)): Remove dead branch.
+
+2009-02-17  Jaroslav Hajek  <highegg@gmail.com>
+
+	* mx-inlines.cc (OP_CUM_FCN, OP_CUM_FCN2, OP_CUM_FCNN):
+	Add TSRC/TRES parameters.
+	(mx_inline_cumcount): New function.
+	* intNDArray.cc (intNDArray::cumsum): New method.
+	* intNDArray.h: Declare it.
+	* boolNDArray.cc (boolNDArray::cumsum): New method.
+	* boolNDArray.h: Declare it.
+
+2009-02-17  Jaroslav Hajek  <highegg@gmail.com>
+
+	* mx-inlines.cc (OP_CUMMINMAX_FCN, OP_CUMMINMAX_FCN2,
+	OP_CUMMINMAX_FCNN): New macros.
+	(mx_inline_cummax, mx_inline_cummin, do_mx_cumminmax_op):
+	New overloaded template functions.
+
+	* dNDArray.cc (NDArray::cummin, NDArray::cummax): New methods.
+	* dNDArray.h: Declare them.
+
+	* fNDArray.cc (FloatNDArray::cummin, FloatNDArray::cummax): New
+	methods.
+	* fNDArray.h: Declare them.
+
+	* CNDArray.cc (ComplexNDArray::cummin, ComplexNDArray::cummax): New
+	methods.
+	* CNDArray.h: Declare them.
+
+	* fCNDArray.cc (FloatComplexNDArray::cummin,
+	FloatComplexNDArray::cummax): New methods.
+	* fCNDArray.h: Declare them.
+
+	* intNDArray.cc (intNDArray::cummin, intNDArray::cummax): New methods.
+	* intNDArray.h: Declare them.
+
+2009-02-17  Jaroslav Hajek  <highegg@gmail.com>
+
+	* mx-inlines.cc (OP_MINMAX_FCN): Correct behaviour with NaNs.
+
+2009-02-17  Jaroslav Hajek  <highegg@gmail.com>
+
+	* MArray-defs.h: Move declarative part to MArray-decl.h
+	* MArray-decl.h: New source.
+
+	* mx-op-defs.h: Move declarative part to mx-op-decl.h.
+	* mx-op-decl.h: New source.
+
+	* Makefile.in: Include new sources in build.
+	* mk-ops.awk: Include mx-op-decl.h in headers, mx-op-defs in .cc
+	files.
+
+	* CMatrix.cc, CMatrix.h, CNDArray.cc, CNDArray.h, MArray.h, MArray2.h,
+	MArrayN.h, MDiagArray2.h, boolMatrix.cc, boolMatrix.h, boolNDArray.cc,
+	boolNDArray.h, chMatrix.cc, chMatrix.h, chNDArray.cc, chNDArray.h,
+	dMatrix.cc, dMatrix.h, dNDArray.cc, dNDArray.h, fCMatrix.cc,
+	fCMatrix.h, fCNDArray.cc, fCNDArray.h, fMatrix.cc, fMatrix.h,
+	fNDArray.cc, fNDArray.h, int16NDArray.cc, int16NDArray.h,
+	int32NDArray.cc, int32NDArray.h, int64NDArray.cc, int64NDArray.h,
+	int8NDArray.cc, int8NDArray.h, uint16NDArray.cc, uint16NDArray.h,
+	uint32NDArray.cc, uint32NDArray.h, uint64NDArray.cc, uint64NDArray.h,
+	uint8NDArray.cc, uint8NDArray.h: Ditto.
+
+2009-02-16  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (Array<T>::assign (const idx_vector& i,
+	const idx_vector& j,...)): Fix invalid dimension inquiry.
+
+2009-02-16  Jaroslav Hajek  <highegg@gmail.com>
+	
+	* mx-inlines.cc (OP_ROW_SHORT_CIRCUIT): New macro.
+	(mx_inline_any, mx_inline_all): Override row-reduction case.
+	(MX_CUMULATIVE_OP, MX_BASE_REDUCTION_OP, MX_REDUCTION_OP,
+	MX_ANY_OP, MX_ALL_OP, MX_ND_ANY_ALL, MX_ND_REDUCTION,
+	MX_ND_COMPLEX_OP_REDUCTION, MX_ND_CUMULATIVE_OP,
+	MX_ND_ANY_EVAL, MX_ND_ALL_EVAL, MX_ND_REAL_OP_REDUCTION):
+	Remove unused macros.
+
+2009-02-16  Jaroslav Hajek  <highegg@gmail.com>
+	
+	* mx-inlines.cc (OP_RED_FCNN): Use explicit type qualification.
+	(mx_inline_count): New overloaded template function.
+	* boolNDArray.h (boolNDArray::sum): Return NDArray.
+	* boolNDArray.cc (boolNDArray::sum): Return NDArray, use do_mx-red_op.
+
+2009-02-16  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array-C.cc, Array-fC.cc: Don't redefine complex comparison.
+	* Sparse.cc (Sparse::sort): Don't use vec_index.
+	* Sparse-C.cc, Sparse-d.cc, Sparse-b.cc: Don't reinstantiate
+	octave_sort, reflect changes.
+	* sparse-sort.cc: Explicitly instantiate octave_sort for requested
+	pointer types.
+
+2009-02-16  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-cmplx.h (operator <, operator >): New operators.
+	* mx-inlines.cc (OP_MINMAX_FCN, OP_MINMAX_FCN2, OP_MINMAX_FCNN):
+	New macros.
+	(mx_inline_min, mx_inline_max, do_mx_minmax_op): New overloaded
+	template functions.
+	* dNDArray (NDArray::min, NDArray::max): Use do_mx_minmax_op.
+	* fNDArray (FloatNDArray::min, FloatNDArray::max): Ditto.
+	* CNDArray (ComplexNDArray::min, ComplexNDArray::max): Ditto.
+	* fCNDArray (FloatComplexNDArray::min, FloatComplexNDArray::max):
+	Ditto.
+
+2009-02-16  Jaroslav Hajek  <highegg@gmail.com>
+
+	* chMatrix.cc (charMatrix::all, charMatrix::any): Use do_mx_red_op.
+	* chNDArray.cc (charNDArray::all, charNDArray::any): Ditto.
+
+2009-02-16  John W. Eaton  <jwe@octave.org>
+
+	* cmd-edit.cc (default_command_editor::do_readline):
+	Use fputs instead of fprintf.
+
+2009-02-14  Jaroslav Hajek  <highegg@gmail.com>
+
+	* mx-inlines.cc (OP_RED_FCN, OP_RED_FCN2, OP_RED_FCNN, OP_CUM_FCN,
+	OP_CUM_FCN2, OP_CUM_FCNN): Include TRET parameter.
+	(OP_RED_ANYC, OP_RED_ANYR, OP_RED_ALLC, OP_RED_ALLR): New macros.
+	(is_true, is_false): New template functions.
+	(mx_inline_any, mx_inline_all): New template functions.
+
+	* dMatrix.cc (Matrix::any, Matrix::all): Use do_mx_red_op and
+	do_mx_cum_op.
+	* fMatrix.cc (FloatMatrix::any, FloatMatrix::all): Use do_mx_red_op
+	and do_mx_cum_op.
+	* CMatrix.cc (ComplexMatrix::any, ComplexMatrix::all): Use
+	do_mx_red_op and do_mx_cum_op.
+	* fCMatrix.cc (FloatComplexMatrix::any, FloatComplexMatrix::all): Use
+	do_mx_red_op and do_mx_cum_op.
+
+	* dNDArray.cc (NDArray::any, NDArray::all): Use do_mx_red_op and
+	do_mx_cum_op.
+	* fNDArray.cc (FloatNDArray::any, FloatNDArray::all): Use do_mx_red_op
+	and do_mx_cum_op.
+	* CNDArray.cc (ComplexNDArray::any, ComplexNDArray::all): Use
+	do_mx_red_op and do_mx_cum_op.
+	* fCNDArray.cc (FloatComplexNDArray::any, FloatComplexNDArray::all):
+	Use do_mx_red_op and do_mx_cum_op.
+
+	* intNDArray.cc (intNDArray::any, intNDArray::all): Use do_mx_red_op and
+	do_mx_cum_op.
+
+	* boolNDArray.cc (boolNDArray::any, boolNDArray::all): Use do_mx_red_op and
+	do_mx_cum_op.
+
+	* boolMatrix.cc (boolMatrix::any, boolMatrix::all): Use do_mx_red_op and
+	do_mx_cum_op.
+
+2009-02-14  Jaroslav Hajek  <highegg@gmail.com>
+
+	* intNDArray.cc: include mx-inlines.cc.
+	(intNDArray::sum): Use mx_do_red_op (..., mx_inline_sum).
+	* Range.cc (Range::is_sorted): Add missing return statement.
+
+2009-02-13  Jaroslav Hajek  <highegg@gmail.com>
+
+	* mx-inlines.cc (OP_RED_SUM, OP_RED_PROD, OP_RED_SUMSQ, OP_RED_SUMSQC,
+	OP_RED_FCN, OP_RED_FCN2, OP_RED_FCNN, OP_CUM_FCN, OP_CUM_FCN2,
+	OP_CUM_FCNN): New macros.
+	(mx_inline_sum, mx_inline_prod, mx_inline_sumsq, mx_inline_cumsum,
+	mx_inline_cumprod, get_extent_triplet, do_mx_red_op, do_mx_cum_op):
+	New template functions.
+	* dMatrix.cc (Matrix::cumprod, Matrix::cumsum, Matrix::prod,
+	Matrix::sum, Matrix::sumsq): Use do_mx_red_op and do_mx_cum_op.
+	* fMatrix.cc (FloatMatrix::cumprod, FloatMatrix::cumsum,
+	FloatMatrix::prod, FloatMatrix::sum, FloatMatrix::sumsq): Use
+	do_mx_red_op and do_mx_cum_op.
+	* CMatrix.cc (ComplexMatrix::cumprod, ComplexMatrix::cumsum,
+	ComplexMatrix::prod, ComplexMatrix::sum, ComplexMatrix::sumsq): Use
+	do_mx_red_op and do_mx_cum_op.
+	* fCMatrix.cc (FloatComplexMatrix::cumprod,
+	FloatComplexMatrix::cumsum, FloatComplexMatrix::prod,
+	FloatComplexMatrix::sum, FloatComplexMatrix::sumsq): Use do_mx_red_op
+	and do_mx_cum_op.
+
+2009-02-12  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-inttypes.h (if_else_type): Remove
+	(octave_int_base::truncate_int): Use if_then_else.
+
+2009-02-12  John W. Eaton  <jwe@octave.org>
+
+	* lo-traits.h: New file.
+	* Makefile.in (INCLUDES): Add it to the list.
+
+	* Array.h (compare_fcn_type): New typedef.
+	* oct-sort.h (compare_fcn_type): Ditto.
+
+	* oct-sort.h, oct-sort.cc (octave_sort<T>::octave_sort,
+	octave_sort<T>::set_compare, octave_sort<T>::compare): 
+	Use typedef to simplify decl.
+	(octave_sort<T>::ascending_compare,
+	octave_sort<T>::descending_compare):
+	Use ref_param<T>::type for parameter decl.
+
+	* Array.cc (sort_isnan): Use ref_param<T>::type for parameter decl.
+	(Array<T>::sort): Use explicit template parameter for sort_isnan calls.
+
+	* Array.cc, Array-C.cc, Array-fC.cc, Array-d.cc, Array-f.cc
+	(sortrows_comparator): Rename from _sortrows_comparator.  Change
+	all uses.  Use typedef for return value to simplify decl.
+	(sort_isnan): Rename from _sort_isnan.  Change all uses.
+	(NO_INSTANTIATE_ARRAY_SORT): Use typedef to simplify instantiation
+	of sortrows_comparator.
+
+	* Array-C.cc, Array-fC.cc (sort_isnan, ascending_compare,
+	descending_compare, nan_ascending_compare,
+	nan_descending_compare):
+
+2009-02-11  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-sort.cc (octave_sort<T>::is_sorted, octave_sort<T>::sort_rows,
+	octave_sort<T>::is_sorted_rows): New methods.
+	* oct-sort.h: Declare them.
+
+	* Array.cc (Array<T>::is_sorted): New method.
+	(INSTANTIATE_ARRAY_SORT, NO_INSTANTIATE_ARRAY_SORT,
+	INSTANTIATE_ARRAY_AND_ASSIGN, INSTANTIATE_ARRAY): Move macros here.
+	* Array.h: Reflect changes.
+
+	* dim-vector.h (dim_vector::is_vector): New method.
+	* Array-C.cc, Array-fC.cc: Override _sort_isnan, don't check for 
+	NaN in default comparators. Provide NaN-safe comparators, override
+	_sortrows_comparator.
+	* Array-d.cc, Array-f.cc: Provide NaN-safe comparators, override
+	_sortrows_comparator.	
+	* Range.cc (Range::is_sorted): New method.
+	* Range.h: Declare it.
+
+2009-02-09  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-sort.cc (octave_sort<T>): Rewrite for optimizations. Allow
+	inlined comparison functor and by-the-way indexed sorting.
+	* oct-sort.h (octave_sort<T>): Update interface.
+	* Array.cc (Array<T>::sort): Reflect changes. Use copy & partition
+	mechanism.
+	* Array-d.cc, Array-f.cc, Array-C.cc, Array-fC.cc, Array-s.cc,
+	Array-i.cc: Reflect changes.
+
+2009-02-05  John W. Eaton  <jwe@octave.org>
+
+	* file-stat.cc (base_file_stat::is_sock):
+	Use EXISTS instead of OK in previous change.
+
+	* file-stat.cc (base_file_stat::is_blk, base_file_stat::is_chr,
+	base_file_stat::is_dir, base_file_stat::is_fifo,
+	base_file_stat::is_lnk, base_file_stat::is_reg,
+	base_file_stat::is_sock): Return false if object is not initialized.
+	From Rafael Laboissiere <rafael@debian.org>.
+
+2009-02-05  Jaroslav Hajek  <highegg@gmail.com>
+	
+	* idx-vector.h (idx_vector::idx_colon_rep,
+	idx_vector::idx_scalar_rep, idx_vector::idx_range_rep,
+	idx_vector::idx_vector_rep): Declare allocators.
+	* idx-vector.cc: Define them.
+
+2009-02-05  Jaroslav Hajek  <highegg@gmail.com>
+
+	* str-vec.h (string_vector::sort): Remove implementation.
+	* str-vec.cc (string_vector::sort): Move here. Use in-place sorting.
+	* Array-str.cc: Fix order of header files.
+	* oct-sort.cc (octave_sort<T>::merge_hi): std::copy ->
+	std::copy_backward where appropriate.
+
+2009-02-05  John W. Eaton  <jwe@octave.org>
+
+	* Array-util.cc (zero_dims_inquire): Eliminate unused variable MATCH.
+
+	* Sparse.cc (assign (Sparse<LT>& lhs, const Sparse<RT>& rhs)):
+	Eliminate unused variable N.
+
+	* MArray-f.cc (MArray<float>::norm (float p) const,
+	MArray<FloatComplex>::norm (float p) const): Pass P to xnorm.
+
+	* eigs-base.cc (EigsRealNonSymmetricFunc, EigsRealSymmetricFunc)
+	(EigsComplexNonSymmetricFunc): Avoid unused parameter warning.
+	* idx-vector.cc (idx_vector::freeze): Likewise.
+
+2009-02-04  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-locbuf.h: Specialize OCTAVE_LOCAL_BUFFER to use chunked
+	allocation for pointers and const pointers.
+
+2009-02-03  Benjamin Lindner  <lindnerben@gmx.net>
+	
+	* Makefile.in: Add missing library reference.
+
+2009-02-03  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (Array<T>::sort (octave_idx_type, sortmode)):
+	Copy array on-the-fly.
+	(Array<T>::sort (Array<octave_idx_type> &, octave_idx_type, sortmode)):
+	Copy array on-the-fly, use bare pointers rather than vec_index.
+
+	* Array-d.cc (Array<double>::sort (octave_idx_type, sortmode)):
+	Copy array on-the-fly.
+	(Array<double>::sort (Array<octave_idx_type> &, octave_idx_type, sortmode)):
+	Copy array on-the-fly, use bare pointers rather than vec_index.
+
+	* Array-f.cc (Array<float>::sort (octave_idx_type, sortmode)):
+	Copy array on-the-fly.
+	(Array<float>::sort (Array<octave_idx_type> &, octave_idx_type, sortmode)):
+	Copy array on-the-fly, use bare pointers rather than vec_index.
+
+2009-02-02  Jaroslav Hajek  <highegg@gmail.com>
+
+	* mx-inlines.cc (mx_inline_fabs_dup, mx_inline_cabs_dup): New funcs.
+
+	* dMatrix.cc (real, imag, Matrix::abs): Simplify.
+	* fMatrix.cc (real, imag, FloatMatrix::abs): Simplify.
+	* CMatrix.cc (ComplexMatrix::abs, ComplexMatrix::conj): Simplify.
+	* fCMatrix.cc (FloatComplexMatrix::abs, FloatComplexMatrix::conj): Simplify.
+
+	* CMatrix.h, fCMatrix.h (conj): Add missing decl.
+
+	* dNDArray.cc (real, imag, NDArray::abs): Simplify.
+	* fNDArray.cc (real, imag, FloatNDArray::abs): Simplify.
+	* CNDArray.cc (ComplexNDArray::abs, ComplexNDArray::conj): Simplify.
+	* fCNDArray.cc (FloatComplexNDArray::abs, FloatComplexNDArray::conj): Simplify.
+
+	* CMatrix.h, fCMatrix.h (conj): New decl.
+
+2009-01-29  John W. Eaton  <jwe@octave.org>
+
+	* intNDArray.h (intNDArray<T>:any_element_is_nan): New function.
+	* boolNDArrah.h (boolNDArray::any_element_is_nan): New function.
+	* chNDArray.h (charNDArray::any_element_is_nan): New function.
+
+2009-01-28  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (LIBRARIES, install, uninstall): Use SHLLIBPRE
+	and SHLBINPRE library prefixes.
+	From Marco Atzeri <marco_atzeri@yahoo.it>.
+
+2009-01-28  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dMatrix.cc (Matrix::Matrix (const RowVector&)): Use shallow copy.
+	(Matrix::Matrix (const ColumnVector&)): Ditto.
+	(Matrix::row): Ditto.
+	(Matrix::column): Ditto.
+
+	* fMatrix.cc (FloatMatrix::FloatMatrix (const FloatRowVector&)): Use
+	shallow copy.
+	(FloatMatrix::FloatMatrix (const FloatColumnVector&)): Ditto.
+	(FloatMatrix::row): Ditto.
+	(FloatMatrix::column): Ditto.
+
+	* CMatrix.cc (ComplexMatrix::ComplexMatrix (const ComplexRowVector&)):
+	Use shallow copy.
+	(ComplexMatrix::ComplexMatrix (const ComplexColumnVector&)): Ditto.
+	(ComplexMatrix::row): Ditto.
+	(ComplexMatrix::column): Ditto.
+
+	* fCMatrix.cc (FloatComplexMatrix::FloatComplexMatrix (const FloatComplexRowVector&)):
+	Use shallow copy.
+	(FloatComplexMatrix::FloatComplexMatrix (const FloatComplexColumnVector&)): Ditto.
+	(FloatComplexMatrix::row): Ditto.
+	(FloatComplexMatrix::column): Ditto.
+
+2009-01-27  Benjamin Lindner  <lindnerb@users.sourceforge.net>
+
+	* Makefile.in (LINK_DEPS): Include ARPACK_LIBS and REGEX_LIBS in
+	the list.
+
+2009-01-27  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dbleQR.cc (QR::init): Use form. Use local buffers.
+	Query for optimal block size.
+	(QR::form): New function.
+	* dbleQR.h: Declare it.
+	* dbleQRP.cc (QRP::init):Use form. Use local buffers.
+	Query for optimal block size.
+
+	* floatQR.cc (FloatQR::init): Use form. Use local buffers.
+	Query for optimal block size.
+	(FloatQR::form): New function.
+	* floatQR.h: Declare it.
+	* floatQRP.cc (FloatQRP::init):Use form. Use local buffers.
+	Query for optimal block size.
+
+	* CmplxQR.cc (ComplexQR::init): Use form. Use local buffers.
+	Query for optimal block size.
+	(ComplexQR::form): New function.
+	* CmplxQR.h: Declare it.
+	* CmplxQRP.cc (ComplexQRP::init):Use form. Use local buffers.
+	Query for optimal block size.
+
+	* fCmplxQR.cc (FloatComplexQR::init): Use form. Use local buffers.
+	Query for optimal block size.
+	(FloatComplexQR::form): New function.
+	* fCmplxQR.h: Declare it.
+	* fCmplxQRP.cc (FloatComplexQRP::init):Use form. Use local buffers.
+	Query for optimal block size.
+
+2009-01-23  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (Array<T>::assign (const idx_vector&, const Array<T>&)):
+	Optimize assignment to an empty array.
+	(Array<T>::assign (const idx_vector&, const idx_vector&, const Array<T>&)):
+	Optimize assignment to an empty array.
+
+2009-01-22  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array2.h (Array2<T>::index): Declare resize_ok as bool.
+	* ArrayN.h (ArrayN<T>::index): Ditto. Declare index vectors as const
+	refs.
+
+2009-01-22  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Range.cc (sort_internal): Add missing test.
+
+2009-01-22  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (Array<T>::index (..., bool resize_ok)):
+	Optimize the all-scalar-indices cases.
+
+2009-01-22  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dbleQR.h: Optionally declare warn_qrupdate_once.
+	* dbleQR.cc: Define it.
+	* (CmplxQR.h, dbleQR.h, fCmplxQR.h, floatQR.h): Declare replacement
+	methods unconditionally.
+	* (CmplxQR.cc, dbleQR.cc, fCmplxQR.cc, floatQR.cc): Define
+	updating replacement methods.
+	* (CmplxCHOL.h, dbleCHOL.h, fCmplxCHOL.h, floatCHOL.h): Declare
+	replacement methods unconditionally.
+	* (CmplxCHOL.cc, dbleCHOL.cc, fCmplxCHOL.cc, floatCHOL.cc): Define
+	updating replacement methods.
+
+2009-01-21  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Range.cc ( operator + (double x, const Range& r),
+	operator + (const Range& r, double x),
+	operator - (double x, const Range& r),
+	operator - (const Range& r, double x),
+	operator * (double x, const Range& r),
+	operator * (const Range& r, double x)): New operators.
+	* Range.h: Declare them.
+
+
+2009-01-20  John W. Eaton  <jwe@octave.org>
+
+	* file-stat.h, file-stat.cc (class base_file_stat): New base class.
+	(class file_stat): Derive from base_file_stat.
+	(class file_fstat): New class, derived from base_file_stat.
+
+2009-01-17  Jaroslav Hajek  <highegg@gmail.com>
+
+	* floatQR.h (FloatQR::update, FloatQR::insert_col,
+	FloatQR::insert_row, FloatQR::delete_col, FloatQR::delete_row,
+	FloatQR::shift_col): Update interfaces.
+
+	* floatQR.cc: Update external decls for qrupdate routines.
+	(FloatQR::update, FloatQR::insert_col, FloatQR::insert_row,
+	FloatQR::delete_col, FloatQR::delete_row, FloatQR::shift_col): Reflect
+	changes in qrupdate interfaces, implement batch updates.
+
+	* dbleQR.h (QR::update, QR::insert_col, QR::insert_row,
+	QR::delete_col, QR::delete_row, QR::shift_col): Update interfaces.
+
+	* dbleQR.cc: Update external decls for qrupdate routines.
+	(QR::update, QR::insert_col, QR::insert_row, QR::delete_col,
+	QR::delete_row, QR::shift_col): Reflect changes in qrupdate
+	interfaces, implement batch updates.
+
+	* fCmplxQR.h (FloatComplexQR::update, FloatComplexQR::insert_col,
+	FloatComplexQR::insert_row, FloatComplexQR::delete_col,
+	FloatComplexQR::delete_row, FloatComplexQR::shift_col): Update
+	interfaces.
+
+	* fCmplxQR.cc: Update external decls for qrupdate routines.
+	(FloatComplexQR::update, FloatComplexQR::insert_col,
+	FloatComplexQR::insert_row, FloatComplexQR::delete_col,
+	FloatComplexQR::delete_row, FloatComplexQR::shift_col): Reflect
+	changes in qrupdate interfaces,
+	implement batch updates.
+
+	* CmplxQR.h (ComplexQR::update, ComplexQR::insert_col,
+	ComplexQR::insert_row, ComplexQR::delete_col, ComplexQR::delete_row,
+	ComplexQR::shift_col): Update interfaces.
+
+	* CmplxQR.cc: Update external decls for qrupdate routines.
+	(ComplexQR::update, ComplexQR::insert_col,
+	ComplexQR::insert_row, ComplexQR::delete_col, ComplexQR::delete_row,
+	ComplexQR::shift_col): Reflect changes in qrupdate interfaces,
+	implement batch updates.
+
+	* floatCHOL.h (FloatCHOL::update, FloatCHOL::downdate,
+	FloatCHOL::insert_sym): Update interfaces.
+	* floatCHOL.cc: Update external decls for qrupdate routines.
+	(FloatCHOL::update, FloatCHOL::downdate, FloatCHOL::insert_sym,
+	FloatCHOL::delete_sym, FloatCHOL::shift_sym): Reflect changes in
+	qrupdate interfaces,
+
+	* CHOL.h (CHOL::update, CHOL::downdate, CHOL::insert_sym): Update
+	interfaces.
+	* CHOL.cc: Update external decls for qrupdate routines.
+	(CHOL::update, CHOL::downdate, CHOL::insert_sym, CHOL::delete_sym,
+	CHOL::shift_sym): Reflect changes in qrupdate interfaces,
+
+	* fCmplxCHOL.h (FloatComplexCHOL::update, FloatComplexCHOL::downdate,
+	FloatComplexCHOL::insert_sym): Update interfaces.  
+	* fCmplxCHOL.cc: Update external decls for qrupdate routines.
+	(FloatComplexCHOL::update, FloatComplexCHOL::downdate,
+	FloatComplexCHOL::insert_sym, FloatComplexCHOL::delete_sym,
+	FloatComplexCHOL::shift_sym): Reflect changes in qrupdate interfaces,
+
+	* CmplxCHOL.h (ComplexCHOL::update, ComplexCHOL::downdate,
+	ComplexCHOL::insert_sym): Update interfaces.
+	* CmplxCHOL.cc: Update external decls for qrupdate routines.
+	(ComplexCHOL::update, ComplexCHOL::downdate, ComplexCHOL::insert_sym,
+	ComplexCHOL::delete_sym, ComplexCHOL::shift_sym): Reflect changes in
+	qrupdate interfaces,
+
+2009-01-17  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.h (Array<T>): Document internal use of slice_data and
+	slice_len.
+
+2009-01-15  John W. Eaton  <jwe@octave.org>
+
+	* Sparse.cc (Sparse<T>::reshape): Include mismatched dimensions in
+	error message.
+	* Array.cc (Array<T>::reshape): Likewise.
+	From Robert Millan <rmh@aybabtu.com>.
+
+2009-01-14  Jaroslav Hajek  <highegg@gmail.com>
+	
+	* Array.h (Array<T>::rep, Array<T>::dimensions): Make protected.
+	* Array.cc (Array<T>::make_unique): Move implementation here.
+	(Array<T>::fill): Ditto.
+	* DiagArray2.h (DiagArray2<T>): Reimplement without abusing
+	Array<T> internals.
+	(DiagArray2<T>::operator Array2<T>): New method.
+	* DiagArray2.cc (DiagArray2<T>): Update methods.
+	* MDiagArray2.h (MDiagArray2<T>::operator Array2<T>): Simplify.
+	* PermMatrix.h (PermMatrix): Reimplement without abusing
+	Array<T> internals.
+	* PermMatrix.cc (PermMatrix): Update methods.
+
+2009-01-14  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc, Array.h (all Array<T> constructors): Handle slice_data and
+	slice_len.
+	(Array<T>::Array<T> (const Array<T>&, const dim_vector&,
+	octave_idx_type, octave_idx_type)): New constructor.
+	(Array<T>::index): Use shallow copy when index reduces to a contiguous
+	range.
+	(Array<T>::make_unique): Rewrite.
+	(Array<T>::ArrayRep): Delete redundant methods.
+	(rec_index_helper::is_cont_range): New method.
+	(Array<T>::maybe_economize): New method.
+	* DiagArray2.cc (DiagArray2<T>::resize): Fix the mess.
+
+2008-01-15  Rafael Laboissiere  <rafael@debian.org>
+
+	* oct-md5.cc: Include <cstdio>.
+
+2009-01-13  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.h (Array::ArrayRep::qsort): Remove.
+	(Array::qsort): Remove.
+	* glob-match.cc (glob_match::glob): qsort -> sort.
+	* str-vec.cc (string_vector::compare): Remove.
+	* str-vec.h (string_vector::compare): Remove decl.
+	(string_vector::qsort): Rename to sort, call Array::sort.
+
+2008-12-23  David Bateman  <dbateman@free.fr>
+
+	* eigs-base.cc: New file with template wrapper for ARPACK.
+	* Makefile.in (TEMPLATE_SRC): Add it here.
+
+2008-12-16  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (rec_permute_helper): New class.
+	(Array<T>::permute): Rewrite using the recursive algorithm.
+
+2008-12-12  David Bateman  <dbateman@free.fr>
+
+	* sparse-base-chol.cc (inverse): Fix inversion based on cholesky 
+	factorization.
+	
+2008-12-12  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-locbuf.cc: New source.
+	* oct-locbuf.h (octave_chunk_buffer): New class.
+	(octave_local_buffer): Subclass from octave_chunk_buffer for selected
+	POD types.
+
+2008-12-11  Jaroslav Hajek  <highegg@gmail.com>
+
+	* mx-op-defs.h (DMDM_BIN_OP): Fix invalid buffer length.
+
+2008-12-10  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dMatrix.h, dMatrix.cc (Matrix::expm): Remove.
+	* fMatrix.h, fMatrix.cc (FloatMatrix::expm): Remove.
+	* CMatrix.h, CMatrix.cc (ComplexMatrix::expm): Remove.
+	* fCMatrix.h, fCMatrix.cc (FloatComplexMatrix::expm): Remove.
+
+2008-12-09  Jaroslav Hajek  <highegg@gmail.com>
+
+	* base-aepbal.h: New source.
+	* dbleAEPBAL.h, dbleAEPBAL.cc: Rebase AEPBAL on base_aepbal.
+	* floatAEPBAL.h, floatAEPBAL.cc: Rebase FloatAEPBAL on base_aepbal.
+	* CmplxAEPBAL.h, CmplxAEPBAL.cc: Rebase ComplexAEPBAL on base_aepbal.
+	* fCmplxAEPBAL.h, fCmplxAEPBAL.cc: Rebase FloatComplexAEPBAL on base_aepbal.
+
+2008-12-08  Jaroslav Hajek  <highegg@gmail.com>
+
+	* idx-vector.cc (idx_vector::idx_vector_rep::idx_vector_rep (const 
+	Sparse<bool>&)): New constructor.
+	* idx_vector.h: Declare it.
+	(idx_vector::idx_vector (const Sparse<bool>&)): New constructor.
+	* idx-vector.cc (idx_vector::idx_vector_rep::idx_vector_rep (const
+	Array<bool>&)): Fix extent calculation.
+
+2008-12-09  David Bateman  <dbateman@free.fr>
+
+	* Makefile.in (INCLUDES): Add oct-locbuf.h
+	
+2008-12-07  Jaroslav Hajek  <highegg@gmail.com>
+
+	* mx-inlines.cc (mx_inline_fill_vs): New template function.
+	* mx-op-defs.h (everywhere): Replace int by octave_idx_type.
+	(MDM_MULTIPLY_OP): Use mx_inline_mul_vs and mx_inline_fill_vs.
+	(DMM_MULTIPLY_OP): Ditto.
+	* fDiagMatrix.cc (operator *): Remove redundant ifs.
+	* fCDiagMatrix.cc (operator *): Remove redundant ifs.
+
+2008-12-06  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-locbuf.h (OCTAVE_LOCAL_BUFFER_INIT): New macro.
+
+2008-10-29  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-locbuf.h: New header file.
+	* Array-d.cc, Array-f.cc, Array.cc, CMatrix.cc, CNDArray.cc,
+	CSparse.cc, CmplxCHOL.cc, CmplxGEPBAL.cc, MatrixType.cc,
+	Sparse-op-defs.h, Sparse.cc, SparseCmplxLU.cc, SparseCmplxQR.cc,
+	SparseQR.cc, SparsedbleLU.cc, dMatrix.cc, dNDArray.cc, dSparse.cc,
+	data-conv.cc, dbleCHOL.cc, dbleGEPBAL.cc, fCMatrix.cc, fCNDArray.cc,
+	fCmplxCHOL.cc, fCmplxGEPBAL.cc, fMatrix.cc, fNDArray.cc, file-ops.cc,
+	floatCHOL.cc, floatGEPBAL.cc, lo-sysdep.cc, oct-fftw.cc, oct-md5.cc,
+	oct-rand.cc, regex-match.cc, sparse-dmsolve.cc: Include oct-locbuf.h.
+
+2008-12-04  Jaroslav Hajek  <highegg@gmail.com>
+
+	* DiagArray2.h (DiagArray2<T>): Inherit Array<T> privately.
+	(DiagArray2<T>::dim1, dim2, rows, columns, cols, length,
+	nelem, numel, byte_size, dims): New methods.
+	(DiagArray2<T>::diag): New method decl.
+	* DiagArray2.cc (DiagArray2<T>::diag): New method.
+	* MDiagArray2.h (MDiagArray2<T>::diag): New method.
+	* dDiagMatrix.cc (DiagMatrix::diag): Remove.
+	* fDiagMatrix.cc (FloatDiagMatrix::diag): Remove.
+	* CDiagMatrix.cc (ComplexDiagMatrix::diag): Remove.
+	* fCDiagMatrix.cc (FloatComplexDiagMatrix::diag): Remove.
+
+	* PermMatrix.h (PermMatrix): Inherit Array<octave_idx_type> privately.
+	(PermMatrix::dim1, dim2, rows, columns, cols, length,
+	nelem, numel, byte_size, dims): New methods.
+
+	
+2008-12-04  Jaroslav Hajek  <highegg@gmail.com>
+	
+	* dDiagMatrix.cc (DiagMatrix::determinant, DiagMatrix::rcond): New
+	method.
+	* dDiagMatrix.h: Declare them.
+	* fDiagMatrix.cc (FloatDiagMatrix::determinant,
+	FloatDiagMatrix::rcond): New methods.
+	* fDiagMatrix.h: Declare them.
+	* CDiagMatrix.cc (ComplexDiagMatrix::determinant,
+	ComplexDiagMatrix::rcond): New methods.
+	* CDiagMatrix.h: Declare them.
+	* fCDiagMatrix.cc (FloatComplexDiagMatrix::determinant,
+	FloatComplexDiagMatrix::rcond): New methods.
+	* fCDiagMatrix.h: Declare them.
+
+2008-12-04  Jaroslav Hajek  <highegg@gmail.com>
+
+	* idx-vector.cc (idx-vector::complement): Add missing delete.
+
+2008-12-04  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dbleQRP.cc (QRP::QRP): Call DGEQP3 rather than DGEQPF.
+	* floatQRP.cc (FloatQRP::FloatQRP): Call SGEQP3 rather than SGEQPF.
+	* CmplxQRP.cc (ComplexQRP::ComplexQRP): Call ZGEQP3 rather than ZGEQPF.
+	* fCmplxQRP.cc (FloatComplexQRP::FloatComplexQRP): Call CGEQP3 rather than CGEQPF.
+
+2008-12-03  Jaroslav Hajek  <highegg@gmail.com>
+
+	* PermMatrix.h, PermMatrix.cc: New sources.
+	* MDiagArray2.cc (MDiagArray2<T>::is_multiple_of_identity): New method.
+	* MDiagArray2.h (MDiagArray2<T>::is_multiple_of_identity): Declare it.
+	* idx-vector.cc (idx_vector::is_permutation): New method.
+	* idx-vector.h (idx_vector::is_permutation): Declare it.
+	* base-lu.cc (base_lu::getp): New method.
+	(base_lu::P): Call getp.
+	(base_lu::Pvec): Call getp.
+	* base-lu.h (base_lu): Delcare P as PermMatrix. Remove unused template
+	params.
+	* dbleQRP.cc (dbleQRP::dbleQRP): Construct a permutation matrix.
+	(dbleQRP::Pvec): New method.
+	* dbleQRP.h: Declare new method. Declare P as PermMatrix.
+	* CmplxQRP.cc (ComplexQRP): Likewise.
+	* CmplxQRP.h (ComplexQRP): Likewise.
+	* floatQRP.cc (FloatQRP): Likewise.
+	* floatQRP.h (FloatQRP): Likewise.
+	* fCmplxQRP.cc (FloatComplexQRP): Likewise.
+	* fCmplxQRP.h (FloatComplexQRP): Likewise.
+
+2008-12-01  Jaroslav Hajek  <highegg@gmail.com>
+
+	* DiagArray2.h (DiagArray2<T>::DiagArray2<T> (const DiagArray2<U>&)): New template
+	constructor.
+	(DiagArray2<T>::elem, xelem, operator ()): Move to header file to
+	enable inlining.
+	* DiagArray2.cc (DiagArray2<T>::elem, xelem, operator ()): Remove
+	implementations.
+	* MDiagArray2.h (MDiagArray2<T>::MDiagArray2<T> (const DiagArray2<U>&)): New template
+	constructor.
+	(MDiagArray2<T>::nnz): New method.
+	* MDiagArray2.cc (MDiagArray2<T>::nnz): Implement it.
+
+	* dDiagMatrix.h (DiagMatrix::DiagMatrix (const DiagArray2<U>&)): New template
+	constructor.
+	(DiagMatrix::abs): New method decl.
+	(real (const ComplexDiagMatrix&), imag (const ComplexDiagMatrix&)):
+	New decls.
+	* dDiagMatrix.cc (DiagMatrix::abs): New method.
+	(operator *(const DiagMatrix&, const DiagMatrix&)): Optimize.
+	(real (const ComplexDiagMatrix&), imag (const ComplexDiagMatrix&)):
+	New functions.
+
+	* fDiagMatrix.h (FloatDiagMatrix::FloatDiagMatrix (const DiagArray2<U>&)): New template
+	constructor.
+	(FloatDiagMatrix::abs): New method decl.
+	(real (const FloatComplexDiagMatrix&), imag (const FloatComplexDiagMatrix&)):
+	New decls.
+	* fDiagMatrix.cc (FloatDiagMatrix::abs): New method.
+	(operator *(const FloatDiagMatrix&, const FloatDiagMatrix&)): Optimize.
+	(real (const FloatComplexDiagMatrix&), imag (const FloatComplexDiagMatrix&)):
+	New functions.
+	
+	* CDiagMatrix.h (ComplexDiagMatrix::ComplexDiagMatrix (const DiagArray2<U>&)): New template
+	constructor.
+	(ComplexDiagMatrix::abs): New method decl.
+	(conj (const ComplexDiagMatrix&)): Add missing decl.
+	(ComplexDiagMatrix::all_elements_are_real): New method decl.
+
+	* CDiagMatrix.cc (CDiagMatrix::abs): New method.
+	(operator *(const DiagMatrix&, const ComplexDiagMatrix&)): Optimize.
+	(operator *(const ComplexDiagMatrix&, const DiagMatrix&)): Optimize.
+	(operator *(const ComplexDiagMatrix&, const ComplexDiagMatrix&)): Optimize.
+	(ComplexDiagMatrix::all_elements_are_real): New method.
+
+	* fCDiagMatrix.h (FloatComplexDiagMatrix::FloatComplexDiagMatrix (const DiagArray2<U>&)): New template
+	constructor.
+	(FloatComplexDiagMatrix::abs): New method decl.
+	(conj (const FloatComplexDiagMatrix&)): Add missing decl.
+	(FloatComplexDiagMatrix::all_elements_are_real): New method decl.
+
+	* fCDiagMatrix.cc (CDiagMatrix::abs): New method.
+	(operator *(const FloatDiagMatrix&, const FloatComplexDiagMatrix&)): Optimize.
+	(operator *(const FloatComplexDiagMatrix&, const FloatDiagMatrix&)): Optimize.
+	(operator *(const ComplexDiagMatrix&, const ComplexDiagMatrix&)): Optimize.
+	(FloatComplexDiagMatrix::all_elements_are_real): New method.
+
+	* dSparse.cc (SparseMatrix::SparseMatrix (const DiagMatrix&)): New
+	constructor.
+	* dSparse.h (SparseMatrix::SparseMatrix (const DiagMatrix&)): Declare
+	it.
+
+	* CSparse.cc (SparseComplexMatrix::SparseComplexMatrix (const ComplexDiagMatrix&)): 
+	New constructor.
+	* CSparse.h (SparseComplexMatrix::SparseComplexMatrix (const ComplexDiagMatrix&)): 
+	Declare it.
+	* mx-op-defs.h (DMM_MULTIPLY_OP, MDM_MULTIPLY_OP): Optimize.
+
+2008-11-21  Jarkko Kaleva  <d3roga@gmail.com>
+
+	* EIG.h (EIG::EIG (const Matrix& a, const Matrix& b, 
+	bool calc_eigenvectors = true)): New constructor.
+	(EIG::EIG (const Matrix& a, const Matrix& b, octave_idx_type& info, 
+	bool calc_eigenvectors = true)): New constructor.
+	(EIG::EIG (const ComplexMatrix& a, const ComplexMatrix& b, 
+	bool calc_eigenvectors = true)): New constructor.
+	(EIG::EIG (const ComplexMatrix& a, const ComplexMatrix& b, 
+	octave_idx_type& info, bool calc_eigenvectors = true)): New 
+	constructor.
+	* EIG.cc (EIG::init (const Matrix& a, const Matrix& b, 
+	bool calc_eigenvectors)): New function.
+	(EIG::init (const ComplexMatrix& a, const ComplexMatrix& b, 
+	bool calc_eigenvectors)): New function.
+	(EIG::symmetric_init (const Matrix& a, const Matrix& b, 
+	bool calc_eigenvectors)): New function.
+	(EIG::hermitian_init (const ComplexMatrix& a, const ComplexMatrix& b, 
+	bool calc_eigenvectors)): New function.
+	* fEIG.h (fEIG::fEIG (const FloatMatrix& a, const FloatMatrix& b, 
+	bool calc_eigenvectors = true)): New constructor.
+	(fEIG::fEIG (const FloatMatrix& a, const FloatMatrix& b, 
+	octave_idx_type& info, bool calc_eigenvectors = true)): New 
+	constructor.
+	(fEIG::fEIG (const FloatComplexMatrix& a, const FloatComplexMatrix& b, 
+	bool calc_eigenvectors = true)): New constructor.	
+	(fEIG::fEIG (const FloatComplexMatrix& a, const FloatComplexMatrix& b, 
+	octave_idx_type& info, bool calc_eigenvectors = true)): New 
+	constructor.
+	(fEIG::init (const FloatMatrix& a, const FloatMatrix& b, 
+	bool calc_eigenvectors)): New function.
+	(fEIG::init (const FloatComplexMatrix& a, const FloatComplexMatrix& b, 
+	bool calc_eigenvectors)): New function.
+	(fEIG::symmetric_init (const FloatMatrix& a, const FloatMatrix& b, 
+	bool calc_eigenvectors)): New function.
+	(fEIG::hermitian_init (const FloatComplexMatrix& a, 
+	const FloatComplexMatrix& b, bool calc_eigenvectors)): New function.
+
+2008-11-19  Jaroslav Hajek  <highegg@gmail.com>
+	
+	* dMatrix.cc (Matrix::determinant),
+	fMatrix.cc (FloatMatrix::determinant),
+	CMatrix.cc (ComplexMatrix::determinant),
+	fCMatrix.cc (FloatComplexMatrix::determinant):
+	Use atmp(i,i) instead of elem(i,i).
+
+2008-11-19  Jaroslav Hajek  <highegg@gmail.com>
+
+	* DET.h (base_det<T>::square): New member function.
+	* dMatrix.cc (Matrix::determinant),
+	fMatrix.cc (FloatMatrix::determinant),
+	CMatrix.cc (ComplexMatrix::determinant),
+	fCMatrix.cc (FloatComplexMatrix::determinant):
+	Allow taking MatrixType argument.
+	* dMatrix.h, fMatrix.h, CMatrix.h, fCMatrix.h: Update decls.
+
+2008-11-19  Jaroslav Hajek  <highegg@gmail.com>
+
+	* DET.h: New source.
+	* CmplxDET.cc, CmplxDET.h, dbleDET.cc, dbleDET.h, fCmplxDET.cc,
+	fCmplxDET.h, floatDET.cc, floatDET.h: Remove.
+	* Makefile.in: Reflect changes.
+	* mx-defs.h: Remove DET decls.
+	* mx-ext.h, dMatrix.h, fMatrix.h, CMatrix.h, fCMatrix.h,
+	dSparse.h, CSparse.h: Include only DET.h.
+	* dMatrix.cc (Matrix::determinant),
+	fMatrix.cc (FloatMatrix::determinant),
+	CMatrix.cc (ComplexMatrix::determinant),
+	fCMatrix.cc (FloatComplexMatrix::determinant),
+	dSparse.cc (SparseMatrix::determinant),
+	CSparse.cc (SparseComplexMatrix::determinant): Use new class.
+
+2008-11-18  David Bateman  <dbateman@free.fr>
+
+	* file-ops.cc (std::string file_ops::tilde_expand (const 
+	std::string&)): Check if the string contains a tilde and fast 
+	return if not.
+
+2008-11-17  John W. Eaton  <jwe@octave.org>
+
+	* dir-ops.cc (dir_entry::read): Use std::list<std::string> to
+	cache names before converting to string_vector.
+
+2008-11-14  David Bateman  <dbateman@free.fr>
+
+	* Array2.h (Array2<T> Array2<T>::index): Correct use of
+	resize_fill_value.
+
+2008-11-12  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* MArray-C.cc, MArray-d.cc, MArray-f.cc, MArray-fC.cc: Declare
+	MArray<T>::norm specialization before implicit MArray<T> implicit
+	instantiation.
+	* idx-vector.h (class idx_vector::idx_base_rep, class
+	idx_vector::idx_range_rep, class idx_vector::idx_colon_rep, class
+	idx_vector::idx_scalar_rep, class idx_vector::idx_vector_rep): Add
+	OCTAVE_API tag.
+	* idx-vector.cc (idx_vector::idx_scalar_rep::idx_scalar_rep(T),
+	idx_vector::idx_vector_rep::idx_vector_rep(const Array<T>&)): Ditto.
+	* oct-inttypes.cc (octave_int<T>::type_name): Ditto.
+	* oct-inttypes.cc (powf(const octave_int<T>&,const float&)): Cast 'b'
+	to double.
+	* oct-inttypes.h: Undefine min/max.
+	* oct-norm.h (xnorm, xfrobnorm, xcolnorms, xrownorms): Add OCTAVE_API
+	tag.
+	* oct-norm.cc (xnorm, xfrobnorm, xcolnorms, xrownorms): Ditto.
+
+2008-11-12  Jaroslav Hajek <highegg@gmail.com>
+
+	* DiagArray2.h (DiagArray2<T>::maybe_delete_elements): Remove
+	declaration.
+
+2008-11-09  Jaroslav Hajek <highegg@gmail.com>
+
+	* oct-norm.cc: Don't include Array.cc.  
+	(column_norms (const MArray2<T>&, ...)): Use std::vector instead of Array<T> for
+	accumulator containers. Use empty constructor instead of
+	Array<T>::resize.
+	(row_norms (const MArray2<T>&, ...)): Ditto.
+	(column_norms (const MSparse2<T>&, ...)): Ditto.
+	(row_norms (const MSparse2<T>&, ...)): Ditto.
+
+2008-10-31  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-norm.h: New header file.
+	* oct-norm.cc: New source.
+	* CSparse.cc (SparseComplexMatrix::row, SparseComplexMatrix::column):
+	New member functions.
+	* CSparse.h (SparseComplexMatrix): Declare them.
+	* dSparse.cc (SparseMatrix::row, SparseMatrix::column):
+	New member functions.
+	* dSparse.h (SparseMatrix): Declare them.
+	* MArray-C.cc (MArray<Complex>::norm), 
+	MArray-d.cc (MArray<double>::norm), 
+	MArray-fC.cc (MArray<FloatComplex>::norm), 
+	MArray-f.cc (MArray<float>::norm): Wrap a call to xnorm. 
+
+	* MArray-defs.h (MARRAY_NORM_BODY): Remove.
+
+2008-11-02  Jaroslav Hajek <highegg@gmail.com>
+
+	* idx-vector.cc (idx_vector::is_complement): Set resulting extent
+	correctly.
+	* Array.cc (Array<T>::delete_elements (int, const idx_vector&)):
+	Fix check for invalid dim.
+
+2008-10-31  Jaroslav Hajek  <highegg@gmail.com>
+
+	* idx-vector.h (idx_vector::idx_range_rep::extent): Don't change
+	extent when len is zero.
+	* idx-vector.h (idx_vector::idx_range_rep::idx_range_rep (void)):
+	Create empty range by default.
+
+2008-10-30  Jaroslav Hajek <highegg@gmail.com>
+
+	* oct-inttypes.h (octave_int_abs): New function.
+	(octave_int_arith_base<T, true>::div): Use octave_int_abs instead of
+	std::abs.
+	* oct-inttypes.cc (octave_int_arith_base<int64_t, true>): Ditto.
+
+2008-10-28  Jaroslav Hajek <highegg@gmail.com>
+
+	* Array-C.cc Array-d.cc Array-f.cc Array-fC.cc Array-i.cc Array-s.cc:
+	Don't use semicolon after INSTANTIATE_ARRAY_ASSIGN.
+	* Array-util.h (zero_dims_inquire): New declarations.
+	(is_in, how_many_lgt, short_freeze): Remove declarations.
+	* Array-util.cc (zero_dims_inquire): New functions.
+	(is_in, how_many_lgt, short_freeze): Remove functions.
+	* Array.cc (Array<T>::index, Array<T>::resize_fill, Array<T>::resize,
+	Array<T>::assign, Array<T>::delete_elements):
+	Rewrite.
+	* Array.h (Array<T>::index, Array<T>::resize_fill, Array<T>::resize,
+	Array<T>::assign, Array<T>::delete_elements):
+	Rewrite interfaces.
+	* Array2.h (Array2<T>::resize): Call Array<T>::resize_fill.
+	* Array3.h (Array3<T>::resize): Call Array<T>::resize_fill.
+	* ArrayN.h (ArrayN<T>::resize): Remove declarations.
+	(ArrayN<T>::index): Fix call to resize_fill_value.
+	* Sparse.cc (assign, assign1): Use zero-based indices.
+	* chMatrix.h: Include mx-op-defs.h
+	* dim-vector.h (dim_vector::any_neg, dim_vector::chop_all_singletons,
+	dim_vector::redim): New member functions.
+	* idx-vector.cc: Mostly rewrite.
+	* idx-vector.h: Mostly rewrite.
+
+2008-10-29  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* lo-specfun.cc (cbesj, cbesy, cbesi, cbesk, cbesh1, cbesh2): Do not
+	use std::complex::real() and std::complex::imag() as l-value, this is
+	not supported under MSVC.
+
+2008-10-28  John W. Eaton  <jwe@octave.org>
+
+	* lo-specfun.cc: Fix prototypes for the Fortran subroutines cbesh,
+	cbesi, cbesj, cbesk, and cbesy.
+	(cbesh, cbesi, cbesj, cbesk, cbesy): Fix calls to Fortran
+	subroutines.
+
+2008-10-28  Brian Gough  <bjg@gnu.org>
+
+	* lo-specfun.cc (zbesi): Fix scaling factor for negative alpha.
+	(cbesi): Likewise.
+
+2008-10-23  John Swensen  <jpswensen@comcast.net>
+
+	* oct-shlib.cc (octave_dyld_shlib::open): Call NSLinkEditError to
+	get better diagnostic if NSLinkModule fails.
+
+2008-10-23  John W. Eaton  <jwe@octave.org>
+
+	* oct-shlib.cc (octave_dlopen_shlib::open): Use RTLD_NOW instead
+	of RTLD_LAZY.
+
+2008-10-12  Jaroslav Hajek <highegg@gmail.com>
+
+	* CSparse.cc (ComplexMatrix::expm): Improve inverse preconditioning
+	according to Marco Caliari.
+	* dSparse.cc (Matrix::expm): Likewise.
+	* fCSparse.cc (FloatComplexMatrix::expm): Likewise.
+	* fSparse.cc (FloatMatrix::expm): Likewise.
+
+2008-10-10  Jaroslav Hajek  <highegg@gmail.com>
+
+	* sparse-util.h (SparseCholPrint): Change char * argument to const
+	char *.
+	* sparse-util.cc (SparseCholPrint): Likewise.
+
+2008-10-09  Jaroslav Hajek <highegg@gmail.com>
+
+	* oct-sort.cc (octave_sort<T>::merge_getmem,
+	octave_sort<T>::merge_freemem): Replace malloc -> new [], free ->
+	delete [].
+	(octave_sort<T>::merge_lo, octave_sort<T>::merge_hi): Replace
+	std::memcpy and std::memmove with std::copy.
+
+2008-10-08  John W. Eaton  <jwe@octave.org>
+
+	* Sparse-op-defs.h (SPARSE_SMSM_BOOL_OPS): Duplicate code for scalar
+	sparse arguments rather than rely on extern function.
+
+2008-10-08  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-inttypes.h (octave_base_int<T>::compute_threshold): Return
+	exclusive bounds rather than inclusive, be resistant to compiler
+	optimizations.
+	(octave_base_int<T>::convert_real): Use exclusive bounds.
+
+2008-10-07  Jaroslav Hajek <highegg@gmail.com>
+
+	* oct-inttypes.h (OCTAVE_INT_DOUBLE_BIN_OP): Change octave_int64 to 
+	octave_uint64 where appropriate.
+
+2008-10-06  David Bateman  <dbateman@free.fr>
+	
+	* Sparse-op-defs.h (SPARSE_SMSM_CMP_OPS): Duplicate code for scalar
+	sparse arguments rather than rely on extern function.
+
+2008-10-06  John W. Eaton  <jwe@octave.org>
+
+	* Spasre-op-defs.h: Undo previous change.
+
+2008-10-01  Jaroslav Hajek <highegg@gmail.com>
+
+	* oct-inttypes.h (octave_int<T>::one, octave_int<T>::zero): Declare
+	constants. 
+	* oct-inttypes.cc: Define them.
+	* oct-inttypes.h: Define mixed operations via long double if possible.
+	* oct-inttypes.cc: Define alternative implementations for 64-bit
+	multiplication and mixed operations. 
+	* mx-ops: Instantiate all 64-bit integer operations.
+
+2008-10-06  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-lookup.h: Mark functions inline. Add missing std:: qualifiers.
+
+2008-10-06  John W. Eaton  <jwe@octave.org>
+
+	* Sparse.h (Sparse<T>::elt_type): New typedef.
+	* Sparse-op-defs.h (SPARSE_SMSM_BOOL_OP, SPARSE_MSM_CMP_OP):
+	Use it to call sparse-matrix/scalar operator instead of attempting
+	to instantiate mixed-type sparse-matrix/scalar operators.
+
+2008-10-03  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.h (Array<T>::maybe_delete_elements): Remove rfv argument from
+	declaration.
+	* Array.cc (Array<T>::maybe_delete_elements): Remove all usages of
+	rfv.
+
+2008-10-03  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (assignN): Do not call maybe_delete_elements when
+	for empty matrix.
+
+2008-09-30  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-inttypes.h: Mostly rewrite. 
+	* oct-inttypes.cc: Modstly rewrite.
+
+2008-09-29  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (Array<T>::maybe_delete_elements_2(idx_vector&)): Return on
+	empty index vector.
+
+2008-09-26  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (assign1, assign2, assignN): Do not call
+	maybe_delete_elements.
+	(maybe_delete_elements (Array<idx_vector>&)): Call the 1D and 2D
+	special handlers if possible.
+	* Sparse.cc (assign1, assign2, assignN): Do not call
+	maybe_delete_elements.
+
+2008-09-22  Brian Gough  <bjg@gnu.org>
+
+	* oct-rand.cc (initialize_mersenne_twister): Use separate
+	initializations for each generator to avoid correlation.
+
+2008-09-12  Jaroslav Hajek  <highegg@gmail.com>
+ 
+ 	* oct-inttypes.h (pow (const octave_int<T>&, const octave_int<T>&)): 
+
+2008-09-19  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assign1, assign2, assignN):
+	Clear lhs index before throwing error.
+	(Array<T>::value): Clear index before throwing error.
+
+2008-09-18  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (maybe_delete_elements_2 (idx_vector&)): Fix tests to get
+	better Matlab compatibility.
+	(maybe_delete_elements (idx_vector&, idx_vector&)): Fix tests to get
+	better Matlab compatibility, simplify, gripe on invalid 2-D deletion.
+
+2008-09-18  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.h (Array<T>::coerce): Use octave_idx_type instead of int.
+
+2008-09-12  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-inttypes.h (pow (const octave_int<T>&, const octave_int<T>&)): 
+	Handle negative exponent correctly.
+
+2008-08-19  David Bateman  <dbateman@free.fr>
+
+	* oct-inttypes.h (template <class T1, class T2> inline T2
+	octave_int_fit_to_range (const T1&, const T2&, const T2&),
+	template <typename T> inline T octave_int_fit_to_range (const
+	double&, const T&, const T&), template <> inline T2
+	octave_int_fit_to_range<T1, T2> (const T1&, const T2&, const T2&),
+	OCTAVE_S_US_FTR): Check and flag integer trunctation.
+	(OCTAVE_INT_FIT_TO_RANGE, OCTAVE_INT_FIT_TO_RANGE2): Adapt for the
+	above change.
+	(OCTAVE_INT_CONV_FIT_TO_RANGE): New macro for conversion to
+	integer types.
+	(octave_int<T>::conv_error_type): New enum to flag conversion and
+	math warnings.
+	(octave_int<T>::octave_int (U i), octave_int<T>::octave_int
+	(double i), octave_int<>::octave_int (const octave_int<U>& i)):
+	Flag conversion and math errors other than integer truncation.
+	(octave_int<T> octave_int<T>::operator - (void)): Flag truncation
+	error.
+	(static bool get_trunc_flag (void), static bool clear_trunc_flag
+	(void, static bool trunc_flag)): Delete.
+	(static int get_conv_flag (void), static bool get_trunc_flag (void),
+	static bool get_nan_flag (void), static bool get_non_int_flag (void),
+	static bool get_math_trunc_flag (void), static void
+	clear_conv_flag (void)): New functions to query and reset
+	conversion and mathw arning state.
+	(static int cov_flag): New parameter holding current conversion
+	and math warning state. Set it to zero.
+	(template <class T> octave_int<T> powf (float, const
+	octave_int<T>&), template <class T> octave_int<T> powf (const
+	octave_int<T>&, float)): New functions.
+
+2008-08-12  Jaroslav Hajek  <highegg@gmail.com>
+
+	* lo-ieee.cc (octave_ieee_init): Try to ensure that octave_NaN is
+	classified as positive by lo_ieee_signbit.
+
+2008-08-11  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.cc (no_op_fcn): New static function.
+	(Array<T>::hermitian): If fcn is null, set to no_op_fcn.
+
+2008-08-07  John W. Eaton  <jwe@octave.org>
+
+	* sprse-base-chol.h, oct-sparse.h: Don't include config.h.
+
+	* cmd-edit.cc, file-ops.h, kpse.cc, oct-env.cc, pathsearch.cc:
+	Replace all uses of NPOS with std::string::npos.
+
+	* fCmplxLU.h, CmplxLU.h: Fix typo in definition of
+	multiple-inclusion guard macro.
+
+2008-08-05  John W. Eaton  <jwe@octave.org>
+
+	* file-ops.h, file-ops.cc (file_ops::static_members):
+	New singleton class for static members of file_ops.
+
+	* pathsearch.h, pathsearch.cc (class dir_path::static_members):
+	New singleton class for static members of dir_path.
+
+	* pathsearch.cc (dir_path::init): Move octave_kpathsea_initialized
+	here from file scope.
+
+2008-08-04  John W. Eaton  <jwe@octave.org>
+
+	* oct-env.cc (octave_env::do_set_program_name,
+	octave_env::do_base_pathname): Fix usage of
+	file_ops::dir_sep_chars.
+	(octave_env::do_make_absolute): Fix usage of
+	file_ops::dir_sep_chars and file_ops::dir_sep_str.
+	(octave_env::do_get_home_directory): Fix usage of
+	file_ops::dir_sep_str.
+
+	* file-ops.h (file_ops::do_is_dir_sep): New function.
+	(file_ops_::is_dir_sep): Call it.
+	* file-ops.cc (class file_ops): Make it a proper singleton object.
+	(file_ops::file_ops): New constructor.
+	(file_ops::instance_ok): New function.
+	(file_ops::xdir_sep_char): Now private.  No longer static.  Rename
+	from dir_sep_char.
+	(file_ops::xdir_sep_str): Likewise, from dir_sep_str.
+	(file_ops::xdir_sep_chars): Likewise, from dir_sep_chars.
+	(file_ops::dir_sep_char, file_ops::dir_sep_str,
+	file_ops::dir_sep_chars): New functions.
+	(file_ops::recursive_rmdir): Fix usage of file_ops::dir_sep_str.
+	(file_ops::concat): Fix usage of file_ops::dir_sep_char.
+
+	* oct-env.cc (octave_env::instance_ok): Fix typo in error message.
+
+2008-07-30  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h: Style fixes.
+
+2008-07-30  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-inttypes.h (octave_int<T>::trunc_flag): New member static field.
+	(octave_int<T>::get_trunc_flag, octave_int<T>::clear_trunc_flag): New
+	member functions.
+	(octave_int<T>::octave_int (const octave_int<U>&)): set trunc_flag
+	on truncation.
+	(SPECIALIZE_WIDENING_CONVERSION): New macro.
+	(DECLARE_OCTAVE_INT_TYPENAME): New macro.
+
+2008-07-29  David Bateman  <dbateman@free.fr>
+
+	* lo-ieee.h (LO_IEEE_NA_HW, LO_IEEE_NA_LW, LO_IEEE_NA_FLOAT):
+	Change definition so cast from single to double and visa versa
+	maintains NA value.
+	(LO_IEEE_NA_HW_OLD, LO_IEEE_NA_LW_OLD): Keep old values.
+	(extern OCTAVE_API int __lo_ieee_is_old_NA (double)): Function to
+	detect old NA value.
+	(extern OCTAVE_API double __lo_ieee_replace_old_NA (double)):
+	Function to replace old NA value with new new.
+	* lo-cieee.c (int __lo_ieee_is_old_NA (double)): Function to
+	detect old NA value.
+	(double __lo_ieee_replace_old_NA (double)): Function to replace
+	old NA value with new new.
+	* data-conv.cc (void read_doubles(std::istream&, double *, 
+	save_type, int, bool, octave_mach_info::float_format)): Test if
+	loaded NA values is the old representation and replace it.
+	
+2008-07-28  Jaroslav Hajek  <highegg@gmail.com>
+
+	* lo-math.h: Ensure log2 is undefined from cmath in C++ mode.
+
+2008-07-21  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* oct-mutex.h (octave_base_mutex::octave_base_mutex): Initialize
+	count to 1, not -1.
+
+	* oct-mutex.cc (octave_base_mutex::lock, octave_base_mutex::unlock):
+	Replace error calls with (*current_liboctave_error_handler).
+
+2008-07-21  John W. Eaton  <jwe@octave.org>
+
+	* regex-match.cc (regex_match::init): Initialize err to 0.
+
+2008-07-19  John W. Eaton  <jwe@octave.org>
+
+	* oct-mutex.h (class octave_base_mutex): New class.
+	(class octave_mutex): Don't use union for rep and count.
+	(octave_mutex::rep): Declare as octave_base_mutex.
+	(octave_mutex::count): Delete.
+	(octave_mutex::lock, octave_mutex::unlock): No longer virtual.
+	(octave_mutex::~octave_mutex): No need to check that rep is
+	valid or set rep to zero after deleting.
+	(octave_mutex::operator =): No need to check that rep is valid.
+	* oct-mutex.cc (octave_w32_mutex, octave_pthread_mutex): Derive
+	from octave_base_mutex, not octave_mutex.
+
+2008-07-18  John W. Eaton  <jwe@octave.org>
+
+	* oct-mutex.h (octave_mutex::octave_mutex (int)): Initialize rep
+	to 0, not count.
+	* oct-mutex.cc (octave_mutex::octave_mutex (void)): Set rep->count
+	to 1 instead of incrementing it.
+
+2008-07-17  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* dNDArray.cc: Do not include ctor NDArray(Array<octave_idx_type>,
+	bool, bool) into conditional HAVE_FFTW3 preprocessor statement.
+
+2008-07-16  John W. Eaton  <jwe@octave.org>
+
+	* oct-mutex.h (octave_autolock::octave_autolock (void),
+	octave_autolock (const octave_autolock&),
+	octave_autolock::operator = (const octave_autolock&)):
+	Delete definitions.
+
+2008-07-16  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* cmd-edit.cc (event_hook_lock): New static mutex variable.
+	(command_editor::event_handler): Lock and copy event_hook_set before
+	executing handlers.
+	(command_editor::add_event_hook, command_editor::remove_event_hook):
+	Autolock event_hook_lock.
+
+2008-07-15  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* oct-mutex.h, oct-mutex.cc: New files.
+	* Makefile.in: Add them to appropriate lists.
+
+2008-07-15  John W. Eaton  <jwe@octave.org>
+
+	* oct-sort.cc, oct-sort.h (octave_sort<T>::count_run): Declare
+	descending arg as bool&.
+	(octave_sort<T>::sort): Pass bool to count_run for descending arg.
+
+2008-07-11  John W. Eaton  <jwe@octave.org>
+
+	* dDiagMatrix.cc (DiagMatrix::diag): Return empty ColumnVector if
+	number of rows or columns is 0.
+	* fDiagMatrix.cc (FloatDiagMatrix::diag): Likewise.
+
+	* Array-util.cc (is_vector): Avoid GCC warning.
+	* Array-f.cc (Array<float>::sort): Likewise.
+	* Array-d.cc (Array<double>::sort): Likewise.
+	* dbleQR.cc (QR::QR (const Matrix&, const Matrix&)): Likewise.
+	* CmplxQR.cc (ComplexQR::ComplexQR (const ComplexMatrix&, const
+	ComplexMatrix&)): Likewise.
+	* floatQR.cc (FloatQR::FloatQR (const FloatMatrix&, const
+	FloatMatrix&)): Likewise.
+	* fCmplxQR.cc (FloatComplexQR::FloatComplexQR (const
+	FloatComplexMatrix&, const FloatComplexMatrix&)): Likewise.
+	* Quad.cc (IndefQuad::do_integrate (octave_idx_type&,
+	octave_idx_type&, float&), FloatIndefQuad::do_integrate,
+	DefQuad::do_integrate octave_idx_type&, octave_idx_type&, float&,
+	FloatIndefQuad::do_integrate): Likewise.
+
+	* mx-op-defs.h (MS_BOOL_OP, SM_BOOL_OP, MM_BOOL_OP, NDS_BOOL_OP,
+	SND_BOOL_OP, NDND_BOOL_OP): Detect NaN values.
+	* Array-util.cc (gripe_nan_to_logical_conversion): New function.
+	* Array-util.h: Provide decl.
+	* oct-inttypes.h (xisnan (octave_int<T>)): New function.
+	* lo-mappers.h (xisnan (bool), xisnan (char)): New inline functions.
+
+	* CMatrix.cc, CNDArray.cc, CSparse.cc, dMatrix.cc, dNDArray.cc,
+	dSparse.cc, fCMatrix.cc, fCNDArray.cc, fMatrix.cc, fNDArray.cc:
+	New member function, any_element_is_nan.
+	* CMatrix.h, CNDArray.h, CSparse.h, dMatrix.h, dNDArray.h,
+	dSparse.h, fCMatrix.h, fCNDArray.h, fMatrix.h, fNDArray.h:
+	Provide decl.
+
+2008-07-10  David Bateman  <dbateman@free.fr>
+
+	* dNDArray.cc (NDArray::NDArray (const Array<octave_idx_type>&,
+	bool, bool)): New constructor.
+	* dNDArray.h: Provide decl.
+
+2008-07-10  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* lo-specfun.h: Fix typo in erff/erfcf declaration.
+	* lo-specfun.cc: Ditto. Add atanhf implementation.
+
+2008-06-20  Jaroslav Hajek  <highegg@gmail.com>
+
+	* MatrixType.h: Add missing include statement.
+
+2008-06-13  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* lo-mappers.cc (arg): Remove ambiguity about atan2(float,float) usage.
+	* fCmplxDET.cc (FloatComplexDET::initialize10): Likewise, for pow.
+
+2008-06-11  John W. Eaton  <jwe@octave.org>
+
+	* so-array.h, so-array.cc, Array-so.cc: Delete.
+	* Makefile.in: Remove them from the lists.
+
+2008-06-05  John W. Eaton  <jwe@octave.org>
+
+	* oct-shlib.cc (octave_base_shlib::remove): Only dereference
+	counter if iterator is valid.
+
+2008-06-02  David Bateman  <dbateman@free.fr>
+
+	* fCmplxDET.cc (FloatComplexDET::value_will_overflow,
+	FloatComplexDET:value_will_underflow): Replace DBL_MIN and DBL_MAX
+	with FLT_MIN and FLT_MAX.
+	* floatDET.cc ((FloatDET::value_will_overflow,
+	FloatDET:value_will_underflow): Ditto.
+	* lo-cieee.c (__lo_ieee_float_is_NA): Check only a sngle word for
+	float NA value.
+	(lo_ieee_float_inf_value): Return correct float Infinity value.
+	(lo_ieee_float_NA_value): Return correct float NA value.
+	(lo_ieee_float_NaN_value): Return correct float NaN value.
+	* lo-ieee.cc (octave_ieee_init): Set float NA value correctly.
+	* lo-ieee.h (lo_ieee_float): value of union is of type float.
+	(LO_IEEE_NA_FLOAT): Make NA value a valid float NaN.
+	(LO_IEEE_NA_FLOAT_LW): Delete.
+
+2008-06-02  David Bateman  <dbateman@free.fr>
+
+	* fCmplxLU.cc (class FloatComplexLU): Correct error in instantiation.
+	* floatLU.cc (class FloatLU): ditto.
+	* floatLU.h (class FloatLU): ditto.
+	
+	* floatAEPBAL.cc (octave_idx_type FloatAEPBALANCE::init (const
+	FloatMatrix&, const std::string&)): Use FloatMatrix to initialize
+	balancing_mat.
+
+	* Makefile.in (MATRIX_INC): Add fCmplxAEPBAL.h and floatAEPBAL.h.
+	(MATRIX_SRC): Add fCmplxAEPBAL.cc and floatAEPBAL.cc.
+
+2008-05-21  David Bateman  <dbateman@free.fr>
+
+	* Quad-opts.in: Handle single precision tolerances.
+	* Quad.cc (float_user_fcn): New static variable.
+	(quad_float_fcn_ptr): New typedef.
+	(qagp, quagi): New QUADPACK decls.
+	(float_user_function): New function.
+	(DefQuad::do_integrate, IndefQuad::do_integrate): Float versions.
+	(FloatDefQuad::do_integrate, FloatIndefQuad::do_integrate):
+	New functions.
+	* Quad.h (class Quad): Handle float type.
+	(class FloatDefQuad, class FloatIndefQuad): New classes.
+
+2008-05-21  Jaroslav Hajek  <highegg@gmail.com>
+
+	* fCMatrix.h (xgemm): Provide decl.
+	(xcdotc, csyrk, cherk): New F77 decls.
+	* fMatrix.cc (xgemm): New function.
+	(operator * (const FloatMatrix&, const FloatMatrix&)): Simplify.
+	(get_blas_trans_arg): New function.
+	* fCMatrix.h (xgemm): Provide decl.
+	(ssyrk): New F77 decl.
+	* fCMatrix.cc (xgemm): New function.
+	(operator * (const FloatComplexMatrix&, const
+	FloatComplexMatrix&)): Simplify.
+	(get_blas_trans_arg): New function.
+
+	* dMatrix.cc, CMatrix.cc, Sparse-op-defs.h: Add missing copyright.
+
+	* Sparse-op-defs.h (SPARSE_FULL_MUL): Simplify scalar*matrix case.
+	Correct indenting. 
+	(SPARSE_FULL_TRANS_MUL): New macro.
+	(FULL_SPARSE_MUL): Simplify scalar*matrix case. Correct indenting.
+	Move OCTAVE_QUIT one level up.
+	(FULL_SPARSE_MUL_TRANS): New macro.
+	* dSparse.h (mul_trans, trans_mul): Provide decl.
+	* dSparse.cc (mul_trans, trans_mul): New functions.
+	* CSparse.h (mul_trans, trans_mul, mul_herm, herm_mul): Provide decl.
+	* CSparse.cc (mul_trans, trans_mul, mul_herm, herm_mul): New functions.
+
+	* dMatrix.h (xgemm): Provide decl.
+	* dMatrix.cc (xgemm): New function.
+	(operator * (const Matrix&, const Matrix&)): Simplify.
+	(get_blas_trans_arg): New function.
+	* CMatrix.h (xgemm): Provide decl.
+	* CMatrix.cc (xgemm): New function.
+	(operator * (const ComplexMatrix&, const ComplexMatrix&)): Simplify.
+	(get_blas_trans_arg): New function.
+
+	* MatrixType.cc (matrix_real_probe, matrix_complex_probe):
+	New template functions.
+	(MatrixType::MatrixType (const Matrix&),
+	MatrixType::MatrixType (const FloatMatrix&)):
+	just call matrix_real_probe.
+	(MatrixType::MatrixType (const ComplexMatrix&),
+	MatrixType::MatrixType (const FloatComplexMatrix&)):
+	just call matrix_complex_probe.
+
+	* MatrixType.cc (MatrixType::MatrixType (matrix_type, bool)):
+	add missing test for Unknown.
+
+2008-05-21  David Bateman  <dbateman@free.fr>
+
+	* fCMatrix.cc (float rcond): Replace with float rcon everywhere
+	to avoid shadowed variable warning
+	(float ComplexMatrix::rcond (void) const): New method for
+	reciprocal condition number calculation.
+	(float ComplexMatrix::rcond (MatrixType &mattype) const): ditto.
+	* fCMatrix.h (float rcond):  Replace with float rcon everywhere
+	to avoid shadowed variable warning
+	(float ComplexMatrix::rcond (void) const): New method for
+	reciprocal condition number calculation.
+	(float ComplexMatrix::rcond (MatrixType &mattype) const): ditto.
+	* fMatrix.cc (float rcond): Replace with float rcon everywhere
+	to avoid shadowed variable warning
+	(float Matrix::rcond (void) const): New method for
+	reciprocal condition number calculation.
+	(float Matrix::rcond (MatrixType &mattype) const): ditto.
+	* fMatrix.h (float rcond):  Replace with float rcon everywhere
+	to avoid shadowed variable warning
+	(float Matrix::rcond (void) const): New method for
+	reciprocal condition number calculation.
+	(float Matrix::rcond (MatrixType &mattype) const): ditto.
+
+	* Array.cc: Fix transpose tests.
+
+	* CmplxGEBAL.cc (ComplexGEPBALANCE), dbleGEPBAL.cc (GEPBALANCE),
+	fCmplxGEPBAL.cc (FloatComplexGEPBALANCE), floatGEPBAL.cc
+	(FloatGEPBALANCE): New class for generalized eigenvalue balancing.
+	* CmplxGEBAL.h (ComplexGEPBALANCE), dbleGEPBAL.h (GEPBALANCE),
+	fCmplxGEPBAL.h (FloatComplexGEPBALANCE), floatGEPBAL.h
+	(FloatGEPBALANCE): Declare them.
+	* Makefile.in (MATRIX_INC): Include them here.
+	(MATRIX_SRC): and here.
+	
+	* floatAEPBAL.cc (FloatAEPBALANCE), fCmplxAEPBAL.cc
+	(FloatComplexAEPBALANCE): New classes for single precision 
+	Algebraic eignvalue balancing.
+	* floatAEPBAL.h (FloatAEPBALANCE), fCmplxAEPBAL.h
+	(FloatComplexAEPBALANCE): Declare them.
+	* Makefile.in (MATRIX_INC): Include them here.
+	(MATRIX_SRC): and here.
+
+	* floatHESS.cc (FloatHESS), fCmplxHESS.cc (FloatComplexHESS):  New
+	classes for single precision Hessenberg decomposition.
+	* floatHESS.h (FloatHESS), fCmplxHESS.h (FloatComplexHESS):
+	Declare them.
+	* Makefile.in (MATRIX_INC): Include them here.
+	(MATRIX_SRC): and here.
+
+	* floatQR.cc (FloatQR), fCmplxQR.cc (FloatComplexQR):  New
+	classes for single precision QR decomposition.
+	* floatQR.h (FloatQR), fCmplxQR.h (FloatComplexQR):
+	Declare them.
+	* Makefile.in (MATRIX_INC): Include them here.
+	(MATRIX_SRC): and here.
+
+	* floatQRP.cc (FloatQRP), fCmplxQRP.cc (FloatComplexQRP):  New
+	classes for single precision permuted QR decomposition.
+	* floatQRP.h (FloatQRP), fCmplxQRP.h (FloatComplexQRP):
+	Declare them.
+	* Makefile.in (MATRIX_INC): Include them here.
+	(MATRIX_SRC): and here.
+
+	* mx-defs (FloatAEPBALANCE, FloatComplexAEPBALANCE,
+	ComplexGEPBALANCE, FloatGEPBALANCE,FloatComplexGEPBALANCE,
+	FloatHESS, FloatComplexHESS, FloatQR, FloatComplexQR, QRP,
+	ComplexQRP, FloatQRP, FloatComplexQRP):	Declare classes.
+	
+2008-05-20  David Bateman  <dbateman@free.fr>
+
+	* Array.cc (Array<T> Array<T>::transpose () const): Modify for tiled
+	transpose to limit the number of cache misses.
+	(Array<T> Array<T>::hermitian (T (*)(const&)) const): New method
+	for matrix conjugate transpose.
+	* Array.h (Array<T> hermitian (T (*)(const&)) const): Declare it.
+
+	* DiagArray2.cc (DiagArray2<T> DiagArray2<T>::transpose () const):
+	Specialization for diagonal arrays.
+	(DiagArray2<T> DiagArray2<T>::transpose (T (*) (const&)) const):
+	Ditto.
+	
+	* MArray.h (MArray<T> hermitian <T (*) (const&)) const): New method.
+	(MArray<T> transpose () const): Ditto.
+	* MArray2.h (MArray2<T> hermitian <T (*) (const&)) const): Ditto.
+	* Array2.h (Array2<T> hermitian <T (*) (const&)) const): Ditto.
+	* ArrayN.h (ArrayN<T> hermitian <T (*) (const&)) const): Ditto.
+	* MDiagArray2.h (MDiagArray2<T> transpose () const): Ditto.
+	(MDiagArray<T> hermitian <T (*) (const&)) const): Ditto.
+
+	* CColVector.cc (transpose, hermitian): Define in terms of base class.
+	* CRowVector.cc (transpose, hermitian): Ditto.
+	* dColVector.cc (transpose): Ditto.
+	* dRowVector.cc (transpose): Ditto.
+	* CDiagMatrix.h (transpose, hermitian): Ditto.
+	* dDiagMatrix.h (transpose): Ditto.
+
+	* fCColVector.cc (transpose, hermitian): Define in terms of base class.
+	* fCRowVector.cc (transpose, hermitian): Ditto.
+	* fColVector.cc (transpose): Ditto.
+	* fRowVector.cc (transpose): Ditto.
+	* fCDiagMatrix.h (transpose, hermitian): Ditto.
+	* fDiagMatrix.h (transpose): Ditto.
+
+	* CDiagMatrix.cc (ComplexDiagMatrix::transpose,
+	ComplexDiagMatrix::hermitian): Delete.
+	* dDiagMatrix.cc (DiagMatrix::transpose): Ditto.
+	* CMatrix.cc (ComplexMatrix::hermitian): Ditto.
+
+	* fCDiagMatrix.cc (FloatComplexDiagMatrix::transpose,
+	FloatComplexDiagMatrix::hermitian): Delete.
+	* fDiagMatrix.cc (FloatDiagMatrix::transpose): Ditto.
+	* fCMatrix.cc (FloatComplexMatrix::hermitian): Ditto.
+
+	* lo-mappers.cc (FloatComplex xlog2(const FloatComplex&), float
+	xlog2 (flot, int&), FloatComplex xlog2(const FloatComplex&, int&)):
+	New mapper functions for single precion values.
+	* lo-mappers.h (FloatComplex xlog2(const FloatComplex&), float
+	xlog2 (flot, int&), FloatComplex xlog2(const FloatComplex&, int&)):
+	Declare them.
+	
+	* CmplxGEBAL.cc (ComplexGEPBALANCE), dbleGEPBAL.cc (GEPBALANCE),
+	fCmplxGEPBAL.cc (FloatComplexGEPBALANCE), floatGEPBAL.cc
+	(FloatGEPBALANCE): New class for generalized eigenvalue balancing.
+	* CmplxGEBAL.h (ComplexGEPBALANCE), dbleGEPBAL.h (GEPBALANCE),
+	fCmplxGEPBAL.h (FloatComplexGEPBALANCE), floatGEPBAL.h
+	(FloatGEPBALANCE): Declare them.
+	* Makefile.in (MATRIX_INC): Include them here.
+	(MATRIX_SRC): and here.
+	
+	* floatAEPBAL.cc (FloatAEPBALANCE), fCmplxAEPBAL.cc
+	(FloatComplexAEPBALANCE): New classes for single precision 
+	Algebraic eignvalue balancing.
+	* floatAEPBAL.h (FloatAEPBALANCE), fCmplxAEPBAL.h
+	(FloatComplexAEPBALANCE): Declare them.
+	* Makefile.in (MATRIX_INC): Include them here.
+	(MATRIX_SRC): and here.
+
+	* floatHESS.cc (FloatHESS), fCmplxHESS.cc (FloatComplexHESS):  New
+	classes for single precision Hessenberg decomposition.
+	* floatHESS.h (FloatHESS), fCmplxHESS.h (FloatComplexHESS):
+	Declare them.
+	* Makefile.in (MATRIX_INC): Include them here.
+	(MATRIX_SRC): and here.
+
+	* floatQR.cc (FloatQR), fCmplxQR.cc (FloatComplexQR):  New
+	classes for single precision QR decomposition.
+	* floatQR.h (FloatQR), fCmplxQR.h (FloatComplexQR):
+	Declare them.
+	* Makefile.in (MATRIX_INC): Include them here.
+	(MATRIX_SRC): and here.
+
+	* floatQRP.cc (FloatQRP), fCmplxQRP.cc (FloatComplexQRP):  New
+	classes for single precision permuted QR decomposition.
+	* floatQRP.h (FloatQRP), fCmplxQRP.h (FloatComplexQRP):
+	Declare them.
+	* Makefile.in (MATRIX_INC): Include them here.
+	(MATRIX_SRC): and here.
+
+	* mx-defs (FloatAEPBALANCE, FloatComplexAEPBALANCE,
+	ComplexGEPBALANCE, FloatGEPBALANCE,FloatComplexGEPBALANCE,
+	FloatHESS, FloatComplexHESS, FloatQR, FloatComplexQR, QRP,
+	ComplexQRP, FloatQRP, FloatComplexQRP):	Declare classes.
+	
+	* Array-f.cc, Array-fC.cc, MArray-f.cc, MArray-fC.cc,
+	fCColVector.cc, fCColVector.h, fCDiagMatrix.cc, fCDiagMatrix.h,
+	fCMatrix.cc, fCMatrix.h, fCNDArray.cc, fCNDArray.h,
+	fCRowVector.cc, fCRowVector.h, fCmplxCHOL.cc, fCmplxCHOL.h,
+	fCmplxDET.cc, fCmplxDET.h, fCmplxLU.cc, fCmplxLU.h,
+	fCmplxSCHUR.cc, fCmplxSCHUR.h, fCmplxSVD.cc, fCmplxSVD.h,
+	fColVector.cc, fColVector.h, fDiagMatrix.cc, fDiagMatrix.h,
+	fEIG.cc, fEIG.h, fMatrix.cc, fMatrix.h, fNDArray.cc, fNDArray.h,
+	fRowVector.cc, fRowVector.h, floatCHOL.cc, floatCHOL.h,
+	floatDET.cc, floatDET.h, floatLU.cc, floatLU.h, floatSCHUR.cc,
+	floatSCHUR.h, floatSVD.cc, floatSVD.h: New files.
+	* Makefile.in (MATRIC_INC, TI_SRC, MATRIX_SRC): Add them.
+
+	* CMatrix.cc, CMatrix.h, CNDArray.cc, CNDArray.h, CmplxDET.cc,
+	MArray-C.cc, MArray-d.cc, MArray-defs.h, MArray.cc, MArray.h,
+	MatrixType.cc, MatrixType.h, SparseCmplxQR.cc, SparseCmplxQR.h,
+	SparseQR.cc, SparseQR.h, dMatrix.cc, dMatrix.h, dNDArray.cc,
+	dNDArray.h, data-conv.cc, data-conv.h, dbleDET.cc, dbleSVD.cc,
+	lo-cieee.c, lo-ieee.cc, lo-ieee.h, lo-mappers.cc, lo-mappers.h,
+	lo-specfun.cc, lo-specfun.h, lo-utils.cc, lo-utils.h, mx-base.h,
+	mx-defs.h, mx-ext.h, mx-inlines.cc, mx-op-defs.h, mx-ops,
+	oct-cmplx.h, oct-fftw.cc, oct-fftw.h, oct-inttypes.h, vx-ops:
+	Allow single precision types.
+	
+2008-05-20  David Bateman  <dbateman@free.fr>
+
+	* CMatrix.cc (double rcond): Replace with double rcon everywhere
+	to avoid shadowed variable warning
+	(double ComplexMatrix::rcond (void) const): New method for
+	reciprocal condition number calculation.
+	(double ComplexMatrix::rcond (MatrixType &mattype) const): ditto.
+	* CMatrix.h (double rcond):  Replace with double rcon everywhere
+	to avoid shadowed variable warning
+	(double ComplexMatrix::rcond (void) const): New method for
+	reciprocal condition number calculation.
+	(double ComplexMatrix::rcond (MatrixType &mattype) const): ditto.
+	* dMatrix.cc (double rcond): Replace with double rcon everywhere
+	to avoid shadowed variable warning
+	(double Matrix::rcond (void) const): New method for
+	reciprocal condition number calculation.
+	(double Matrix::rcond (MatrixType &mattype) const): ditto.
+	* dMatrix.h (double rcond):  Replace with double rcon everywhere
+	to avoid shadowed variable warning
+	(double Matrix::rcond (void) const): New method for
+	reciprocal condition number calculation.
+	(double Matrix::rcond (MatrixType &mattype) const): ditto.
+
+	* regex-match.cc, regex-match.h: New class for simple regular
+	expression matching
+	* Makefile.in (INCLUDES): Add regex-match.h here, and
+	(LIBOCTAVE_CXX_SOURCES): regex-match.cc here.
+
+2008-05-19  David Bateman  <dbateman@free.fr>
+
+	* dSparse.cc: Replace some DGBCON with GPBCON where they are
+	incorrectly used.
+
+2008-05-13  David Bateman  <dbateman@free.fr>
+
+	* idx-vector.cc (IDX_VEC_REP::idx_vector_rep (const boolNDArray&)):
+	If len is zero size the index vector in the same manner as if len
+	is not zero.
+
+2008-05-05  John W. Eaton  <jwe@octave.org>
+
+	* cmd-edit.cc (command_editor::re_read_init_file,
+	gnu_readline::do_re_read_init_file): New functions.
+	* cmd-edit.h (command_editor::re_read_init_file): Provide decl.
+	(command_editor::do_re_read_init_file): New function.
+	* oct-rl-edit.c (octave_rl_re_read_init_file): New function.
+	* oct-rl-edit.h: Provide decl.
+
+2008-05-05  Rafael Laboissiere  <rafael@debian.org>
+
+	* oct-rl-edit.c (octave_read_init_file): Simply call rl_read_init_file.
+
+2008-05-01  John W. Eaton  <jwe@octave.org>
+
+	* oct-shlib.h (octave_shlib::number_of_functions_loaded):
+	Return size_t instead of int value.
+	* oct-shlib.cc (octave_base_shlib::number_of_functions_loaded):
+	Likewise.
+	(octave_base_shlib::fcn_names): Now a std::map object.
+	Adjust all uses.
+	(octave_base_shlib::fcn_names_iterator,
+	octave_base_shlib::fcn_names_const_iterator): New typedefs.
+	(octave_base_shlib::add_to_fcn_names, octave_base_shlib::remove):
+	Perform reference counting for functions accessed.
+
+2008-04-30  Jaroslav Hajek  <highegg@gmail.com>
+
+	* lo-mappers.cc (xlog2 (double)): Compute log (2), not log2 (2).
+	(xlog2 (Complex), xlog2 (double, int&), xlog2 (Complex, int&)):
+	New functions.
+	* lo-mappers.h: Provide decls.
+
+2008-04-25  Michael Goffioul <michael.goffioul@gmail.com>
+
+	* oct-lookup.h (seq_lookup): Do not use output value of fill_n (MSVC
+	does not support it).
+
+2008-04-24  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* lo-sysdep.cc (octave_popen2): Don't set PIPE_NOWAIT for parentWrite.
+
+2008-04-21  John W. Eaton  <jwe@octave.org>
+
+	* idx-vector.cc (IDX_VEC_REP::idx_vector_rep (const boolNDArray&)):
+	Fix for-loop condition.
+
+2008-04-19  Jaroslav Hajek  <highegg@gmail.com>
+
+	* CmplxCHOL.cc, CmplxQR.cc, dbleCHOL.cc, dbleQR.cc: Fix calls to error()
+
+2008-04-16  David Bateman  <dbateman@free.fr>
+
+	* Sparse.h (Sparse<T>& operator = (Sparse<T>&)): Move definition
+	of the operator for here
+	* Sparse.cc (Sparse<T>& Sparse<T>::operator = (Sparse<T>&)): To
+	here. Also delete idx.
+	* Array.h (Array<T>& operator = (Array<T>&)): Move definition
+	of the operator for here
+	* Array.cc (Array<T>& Array<T>::operator = (Array<T>&)): To
+	here. Also delete idx.
+
+2008-04-09  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* lo-mappers.cc (xround): Avoid floating-point overflow when input
+	value is equal to bitmax implementation taken from gnulib).
+
+	* file-stat.cc (file_stat::update_internal): Do not strip trailing
+	file separator when path length is equal to 1 (handle case '\') under
+	__WIN32__ platforms.
+
+2008-04-07  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dbleQR.h, dbleQR.cc (QR::shift_cols): New method.
+	* CmplxQR.h, CmplxQR.cc (ComplexQR::shift_cols): New method.
+	* dbleCHOL.h, dbleCHOL.cc (CHOL::insert_sym, CHOL::delete_sym,
+	CHOL::shift_sym): New methods.
+	* CmplxCHOL.h, CmplxCHOL.cc (ComplexCHOL::insert_sym,
+	ComplexCHOL::delete_sym, ComplexCHOL::shift_sym): New methods.
+
+2008-04-03  John W. Eaton  <jwe@octave.org>
+
+	* lo-sysdep.cc [__WIN32__ && ! __CYGWIN__]: Include windows.h.
+
+2008-03-27  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-lookup.h: New file.
+
+2008-03-26  David Bateman  <dbateman@feee.fr>
+
+	* Array.cc (assignN): Additional fix for vector assignments.
+
+2008-03-25  David Bateman  <dbateman@feee.fr>
+
+	* Array.cc (assignN): refactor calculation of new dimensions when
+	original matrix is empty.
+	* Array-util.cc (bool is_vector (const dim_vector&)): New
+	function.
+	* Array-util.h (bool is_vector (const dim_vector&)): declare it.
+
+2008-03-25  David Bateman  <dbateman@free.fr>
+
+	* sparse-base-chol.h (sparse_base_chol_rep::~sparse_base_chol_rep
+	(void)): Only free the factorization if it was created
+	* spase-base-chol.cc (sparse_base_chol_rep::init): Don't attempt
+	to factorize a matrix that has been flagged as not being positive
+	definite.
+
+2008-03-25  John W. Eaton  <jwe@octave.org>
+
+	* lo-mappers.cc (xtrunc): New function.
+	* lo-mappers.h: Provide decl.
+
+2008-03-25  Jaroslav Hajek  <highegg@gmail.com>
+
+	* lo-specfun.cc (expm1, log1p): New functions.
+	* lo-specfun.h: Provide decls.
+
+	* lo-mappers.cc (xroundb): New function.
+	* lo-mappers.h: Provide decl.
+
+2008-03-23  David Bateman  <dbateman@free.fr>
+
+	* mx-ops: Definite binary operators for mixed integer array +
+	array case, except for 64bit cases.
+	
+2008-03-21  David Bateman  <dbateman@free.fr>
+
+	* oct-sparse.h: Add headers for amd.h.
+
+2008-03-20  David Bateman  <dbateman@free.fr>
+
+	* Array.cc (Array<T> Array<T>::diag (octave_idx_type) const): New
+	method for diag function.
+	* Array.h  (Array<T> diag (octave_idx_type) const): Declare it.
+	* Array2.h (Array2<T> diag (octave_idx_type) const): New method.
+	* MArray2.h (MArray2<T> diag (octave_idx_type) const): ditto.
+	* ArrayN.h (ArrayN<T> diag (octave_idx_type) const): ditto.
+	* MArrayN.h (MArrayN<T> diag (octave_idx_type) const): ditto.
+
+	* Sparse.cc (Sparse<T> Sparse<T>::diag (octave_idx_type) const):
+	New method for the diag function.
+	* Sparse.h  (Sparse<T> diag (octave_idx_type) const): Declare it.
+	* MSparse.h (MSparse<T> diag (octave_idx_type) const): New method.
+
+	* Range.cc (Matrix Range::diag (octave_idx_type) const):
+	New method for the diag function.
+	* Range.h  (Matrix diag (octave_idx_type) const): Declare it.
+	
+	* CDiagMatrix.cc (ComplexColumnVector ComplexDiagMatrix::diag
+	(void) const): delete.
+	* dDiagMatrix.cc (ColumnVector DiagMatrix::diag (void) const): delete.
+	* dDiagMatrix.h (ColumnVector diag (void) const): ditto.
+	* CMatrix.cc (ComplexColumnVector ComplexMatrix::diag (void) const):
+	delete.
+	* CMatrix.h (ComplexColumnVector diag (void) const): ditto.
+	* dMatrix.cc (ColumnVector Matrix::diag (void) const): ditto.
+	* dMatrix.h (ColumnVector diag (void) const): ditto.
+	* boolMatrix.cc (boolMatrix boolMatrix::diag (void) const): ditto.
+	* boolMatrix.h (boolMatrix diag (void) const): ditto.
+	* chMatrix.cc (charMatrix charMatrix::diag (void) const): ditto.
+	* chMatrix.h (charMatrix diag (void) const): ditto.
+	* intNDArray.cc (intNDArray<T> intNDArray<T>::diag (void) const): ditto.
+	* intNDArray.h (intNDArray<T> diag (void) const): ditto.
+	
+	* CMatrix.cc (ComplexMatrix ComplexMatrix::diag (octave_idx_type)
+	const): Rewrite in terms of template classes function.
+	* CMatrix.h (ComplexMatrix diag (octave_idx_type)const ): Change
+	return type.
+	* dMatrix.cc (Matrix Matrix::diag (octave_idx_type) const): Rewrite in
+	terms of template classes function.
+	* dMatrix.h (Matrix diag (octave_idx_type) const): Change return type.
+	* boolMatrix.cc (boolMatrix boolMatrix::diag (octave_idx_type) const):
+	Rewrite in terms of template classes function.
+	* boolMatrix.h (boolMatrix diag (octave_idx_type) const): Change
+	return type. 
+	* chMatrix.cc (charMatrix charMatrix::diag (octave_idx_type)
+	const): Rewrite in terms of template classes function.
+	
+	* dSparse.cc (SparseMatrix SparseMatrix::diag (octave_idx_type) const):
+	Rewrite in terms of template classes function.
+	* CSparse.cc (SparseComplexMatrix SparseComplexMatrix::diag
+	(octave_idx_type) const): ditto.
+	* boolSparse.cc (SparseBoolMatrix SparseBoolMatrix::diag
+	(octave_idx_type) const): ditto.
+	* intNDArray.cc (intNDArray<T> intNDArray<T>::diag
+	(octave_idx_type) const): ditto.
+
+	* CNDArray.cc (ComplexNDArray ComplexNDArray::diag
+	(octave_idx_type) const): New method.
+	* CNDArray.h (ComplexNDArray diag (octave_idx_type) const):
+	Declare it.
+	* dNDArray.cc (NDArray NDArray::diag (octave_idx_type) const): New
+	method.
+	* dNDArray.h (NDArray diag (octave_idx_type) const): Declare it.
+	* chNDArray.cc (charNDArray charNDArray::diag
+	(octave_idx_type) const): New method.
+	* chNDArray.h (charNDArray diag (octave_idx_type) const):
+	Declare it.
+
+	
+2008-03-19  John W. Eaton  <jwe@octave.org>
+
+	* oct-env.cc (octave_env::do_base_pathname): Also handle rooted
+	relative filenames.
+
+2008-03-19  David Bateman  <dbateman@free.fr>
+
+	* Array.cc (assignN): If orig_empty allow assignment like
+	a(1:10,1)=1:10
+
+	* Sparse.h (template <class U, class F> Sparse<U> map (F fcn)
+	const): New template function.
+	* MSparse.h (template <class U, class F> MSparse<U> map (F fcn)
+	const): ditto.
+	* dSparse.cc (SparseMatrix SparseMatrix::map (dmapper) const,
+	SparseComplexMatrix SparseMatrix::map (cmapper) const,
+	SparseBoolMatrix SparseMatrix::map (bmapper) const): Rewrite in
+	terms of the new template functor.
+	* CSparse.cc (SparseMatrix SparseComplexMatrix::map (dmapper) const,
+	SparseComplexMatrix SparseComplexMatrix::map (cmapper) const,
+	SparseBoolMatrix SparseComplexMatrix::map (bmapper) const): ditto.
+	
+2008-03-18  David Bateman  <dbateman@free.fr>
+
+	* lo-specfun.cc (Complex xlgamma (const Complex&)): New function.
+	* lo-specfun.h (Complex xlgamma (const Complex&)): Declare it.
+	* randpoison.c (xlgamma): Use lgamma if HAVE_LGAMMA is defined.
+	
+	* dNDArray.cc (NDArray::min, NDArraymax): chop trailing singletons.
+	* CNDarray.cc (ComplexNDArray::min, CompelxNDArray::max): ditto.
+	* intNDarray.cc (intNDArray<T>::min, intNDArray<T>::max): ditto.
+	
+	* Array.cc (Array<T>::index): Don't short_freeze on index with
+	fewer dimensions than the array only if the last dimension is empty.
+
+2008-03-18  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (octave_int_fit_to_range):
+	Use partial specialization for double values.
+
+2008-03-08  John W. Eaton  <jwe@octave.org>
+
+	* Sparse.cc (Sparse<T>::index, assign): Likewise.
+	* Array.cc (Array<T>::index1, Array<T>::index2, Array<T>::indexN,
+	assign2): Eliminate use of idx_vector::is_one_zero method.
+	* idx-vector.cc, idx-vector.h
+	(idx_vector::maybe_convert_one_zero_to_idx,
+	IDX_VEC_REP::maybe_convert_one_zero_to_idx): Delete unused function.
+	(IDX_VEC_REP::one_zero): Delete data member.
+	(IDX_VEC_REP::is_colon_equiv): Delete one_zero check.
+	(idx_vector::is_one_zero, IDX_VEC_REP::is_one_zero): Delete function.
+
+2008-03-07  John W. Eaton  <jwe@octave.org>
+
+	* idx-vector.cc (IDX_VEC_REP::idx_vector_rep (bool),
+	IDX_VEC_REP::idx_vector_rep (const boolNDArray&)):
+	Simply perform the equivalent of "find" on the bool argument here,
+	set one_zero to 0 and orig_dims to size of resulting index vector.
+	(IDX_VEC_REP::freeze): Don't call maybe_convert_one_zero_to_idx here.
+
+2008-03-05  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dbleQR.cc (QR::insert_col, QR::insert_row, 
+	QR::delete_col, QR::delete_row): Use 0-based indexing.
+	* CmplxQR.cc (ComplexQR::insert_col, ComplexQR::insert_row, 
+	ComplexQR::delete_col, ComplexQR::delete_row): Likewise.
+
+	* dbleCHOL.cc: Small doc and declaration fixes.
+	* CmplxHOL.cc: Small doc and declaration fixes.
+	* CmplxQR.cc (ComplexQR::ComplexQR): Adjust code to match dbleQR.cc.
+	* dbleQR.cc (QR::delete_row): Fix incorrect test.
+	* CmplxQR.cc (ComplexQR::delete_row): Fix incorrect test.
+
+2008-03-04  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dbleCHOL.cc (CHOL::set, CHOL::update, CHOL::downdate):
+	New functions.
+	* dbleCHOL.h: Provide decls.
+	* CmplxCHOL.cc (ComplexCHOL::set, ComplexCHOL::update,
+	ComplexCHOL::downdate): New functions.
+	* CmplxCHOL.h: Provide decls.
+
+	* dbleQR.cc (QR::update, QR::insert_col, QR::delete_col,
+	QR::insert_row, QR::delete_row): New methods.
+	(QR::QR (const Matrix&, const MAtrix&)): New constructor.
+	* dbleQR.h: Provide decls.
+	* CmplxQR.cc (ComplexQR::update, ComplexQR::insert_col,
+	ComplexQR::delete_col, ComplexQR::insert_row,
+	ComplexQR::delete_row): New methods.
+	(ComplexQR::ComplexQR (const ComplexMatrix&, const ComplexMAtrix&)):
+	New constructor.
+	* CmplxQR.h: Provide decls.
+
+2008-03-04  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array-C.cc, Sparse-C.cc: Include oct-sort.cc after definitions
+	of < and > operators.
+
+2008-03-03  David Bateman  <dbateman@free.fr>
+
+	* Sparse.cc (assign1, assign1): Take care of repeated index
+	values. Adapt the test code to check for these cases.
+
+2008-03-03  Jaroslav Hajek  <highegg@gmail.com>
+
+	* dMatrix.cc (Matrix::lssolve): Also avoid dgelsd lwork query bug
+	in lssolve method that accepts column vector argument.  Correct
+	calculation of nlvl.
+	* CMatrix.cc (ComplexMatrix::lssolve): Likewise, for zgelsd.
+
+2008-02-27  John W. Eaton  <jwe@octave.org>
+
+	* oct-rand.cc (class octave_rand): Make it a proper singleton class.
+
+2008-02-26  John W. Eaton  <jwe@octave.org>
+
+	* oct-rand.cc (get_dist_id): Fix typo.
+	(get_dist_id, octave_rand::distribution, octave_rand::scalar,
+	fill_rand): Improve error messages.
+
+	* oct-rand.cc (unknown_dist): New dist type.
+	(uniform_dist, normal_dist, expon_dist, poisson_dist, gamma_dist):
+	Use static const int instead of #define.
+	(get_dist_id): Default retval is unknown_dist.
+
+	* oct-rand.cc (rand_states): New static variable.
+	(initialize_rand_states, get_dist_id, get_internal_state,
+	set_internal_state, switch_to_generator, save_state): New functions.
+	(octave_rand::state): New arg to specify distribution.
+	Save state in rand_states instead of setting internal state.
+	Return named state.  Use set_internal_state to generate proper
+	state vector from user supplied state.  Save and restore current
+	state if specified and current distributions are different.
+	(octave_rand::distribution (void)): Use switch rather than if/else.
+	(octave_rand::distribution (const std::string&)): Likewise.
+	(octave_rand::uniform_distribution,
+	octave_rand::normal_distribution,
+	octave_rand::exponential_distribution,
+	octave_rand::poisson_distribution,
+	octave_rand::gamma_distribution): Call switch_to_generator.
+	(octave_rand::state, maybe_initialize): For new_generators, just
+	call initialize_rand_states if not already initialized.
+	(octave_rand::scalar, fill_rand): Save state after generating value.
+
+	* dMatrix.cc (Matrix::lssolve): Avoid another dgelsd lwork query bug.
+	* CMatrix.cc (ComplexMatrix::lssolve): Likewise, for zgelsd
+
+2008-02-24  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (octave_int_helper): New class.  Provide
+	specializations for signed and unsigned types.
+	(octave_int<T>::operator >>=, octave_int<T>::abs,
+	octave_int<T>::signum): Use static functions from
+	octave_int_helper class.
+
+	* oct-inttypes.h, oct-inttypes.cc (OCTAVE_US_TYPE1_CMP_OP,
+	OCTAVE_US_TYPE2_CMP_OP): Tag function declarations and definitions
+	with "template <>".
+
+2008-02-22  John W. Eaton  <jwe@octave.org>
+
+	* CSparse.cc, SparseCmplxLU.cc, SparsedbleLU.cc, dSparse.cc,
+	file-ops.cc, oct-group.cc, oct-shlib.cc, sparse-base-chol.h,
+	sparse-dmsolve.cc: Use 0 instead of NULL.
+
+2008-02-22  David Bateman  <dbateman@free.fr>
+
+	* boolSparse.cc (SparseBoolMatrix SparseBoolMatrix::diag 
+	(octave_idx_type) const): New method.
+	* boolSparse.h (SparseBoolMatrix SparseBoolMatrix::diag 
+	(octave_idx_type) const): Declare it.
+
+	* base-lu.h (lu_type Y (void) const): New method to return
+	factorization of xGETRF directly.
+	* sparse-base-lu.cc (template <class lu_type, class lu_elt_type,
+	class p_type, class p_elt_type> lu_type sparse_base_lu <lu_type, 
+	lu_elt_type, p_type, p_elt_type> :: Y (void) const): New method
+	to simulate the retirn of xGETRF.
+	* sparse-base-lu.h (template <class lu_type, class lu_elt_type,
+	class p_type, class p_elt_type> lu_type sparse_base_lu <lu_type, 
+	lu_elt_type, p_type, p_elt_type> :: Y (void) const): Declare it
+	(SparseMatrix R (void) const): Method to return scaling factors.
+	* SparsedbleLU.cc: Allow two element pivot thresholding and
+	scaling.
+	* SparseCmplxLU.cc: ditto.
+	* SparsedbleLU.h: Modify constructors to allow passing of two
+	element pivoting thresholds and flag for scaling
+	* SparseCmplxLU.h: ditto.
+
+	* base-lu.cc (ColumnVector P_vec (void) const): New method to
+	return permutations as a vector.
+	* base-lu.h (ColumnVector P_vec (void) const): Declare it.
+	* sparse-base-lu.cc (ColumnVector Pr_vec (void) const): New method
+	return row permutations as a vector.
+	(ColumnVector Pc_vec (void) const): New method return column 
+	permutations as a vector.
+	* sparse-base-lu.h (ColumnVector Pr_vec (void) const): Declare it.
+	(ColumnVector Pc_vec (void) const): Declare it.
+
+	* oct-spparms.cc: Add sym_tol field.
+	
+2008-02-20  David Bateman  <dbateman@free.fr>
+
+	* SparseComplexQR.cc (ComplexMatrix
+	SparseComplexQR::SparseComplexQR_rep::Q 
+	(void) const): New method.
+	* SparseComplexQR.h (ComplexMatrix
+	SparseComplexQR::SparseComplexQR_rep::Q 
+	(void) const): Declare it.
+	* SparseQR.cc (Matrix SparseQR::SparseQR_rep::Q	(void) const): ditto.
+	* SparseQR.h (Matrix SparseQR::SparseQR_rep::Q	(void) const): ditto.
+
+2008-02-20  John W. Eaton  <jwe@octave.org>
+
+	* boolNDArray.h (boolNDArray (const Array2<bool>&)): Delete.
+
+	* Marray2.h (MArray2 (const Array2<U>&),
+	MArray2 (const MArray2<U>&)): New templated constructors.
+
+	* Array2.h (Array2 (const Array<U>&),
+	Array2 (const Array<U>&, const dim_vector&)):
+	New templated constructors.
+
+	* CColVector.cc (ComplexColumnVector::map): Forward to MArray::map.
+	* dColVector.cc (ColumnVector::map): ditto.
+	* CRowVector.cc (ComplexRowVector::map): ditto.
+	* dRowVector.cc (RowVector::map): ditto.
+	* CMatrix.cc (ComplexMatrix::map): Forward to MArray2::map.
+	* dMatrix.cc (Matrix::map): ditto.
+
+	* dNDArray.cc (NDArray::map): New functions.
+	* dNDArray.h: Provide decls.
+
+	* CNDArray.cc (ComplexNDArray::map): New functions.
+	* CNDArray.h: Provide decls.
+
+	* MArray2.h (MArray2<T>::map): New function.
+	* Array2.h (Array2<T>::map): New function.
+	* MArrayN.h (MArrayN<T>::map): New function.
+	* ArrayN.h (ArrayN<T>::map): New function.
+	* Array.h (Array<T>::map): New function.
+
+	* functor.h: New file.
+	* Makefile.in (INCLUDES): Add it to the list.
+
+2008-02-20  David Bateman  <dbateman@free.fr>
+
+	* CColVector.h, CColVector.cc (ComplexColumnVector::apply): Remove.
+	* dColVector.h, dColVector.cc (ColumnVector::apply): ditto.
+	* CRowVector.h, CRowVector.cc (ComplexRowVector::apply): ditto.
+	* dRowVector.h, dRowVector.cc (RowVector::apply): ditto.
+	* CMatrix.h, CMatrix.cc (ComplexMatrix::apply): ditto.
+	* dMatrix.h, dMatrix.cc (Matrix::apply): ditto.
+
+	* CSparse.cc (apply): Remove.
+	(map): Replace old mapper code with code taken from ov-mapepr.cc
+	* CSparse.h (map): Reeclare them.
+	(dmapper, cmapper, bmapper): typedefs for mapper functions.
+	* dSparse.cc (apply): Remove.
+	(map): Replace old mapper code with code taken from ov-mapepr.cc
+	* dSparse.h (map): Reeclare them.
+	(dmapper, cmapper, bmapper): typedefs for mapper functions.
+
+	* intNDArray.cc (abs, signum): Two new mapper functions.
+	* intNDArray.h (abs, signum): Declare them.
+	* oct-inttypes.h (abs, signum): Mapper functions on scalar integer
+	base type.
+
+2008-02-15  John W. Eaton  <jwe@octave.org>
+
+	* dMatrix.cc (Matrix::lssolve): Check n > mnthr, not n > m when
+	deciding whether to calculate workspace size, with mnthr from ILAENV.
+	* CMatrix.cc (ComplexMatrix::lssolve): Likewise.
+
+2008-02-14  John W. Eaton  <jwe@octave.org>
+
+	* CColVector.cc, CMatrix.cc, CRowVector.cc, CSparse.cc,
+	CmplxAEPBAL.cc, CmplxCHOL.cc, CmplxHESS.cc, CmplxLU.cc,
+	CmplxQR.cc, CmplxQRP.cc, CmplxSCHUR.cc, CmplxSVD.cc, DASPK.cc,
+	DASRT.cc, DASSL.cc, EIG.cc, LSODE.cc, NLEqn.cc, Quad.cc,
+	dColVector.cc, dMatrix.cc, dRowVector.cc, dSparse.cc,
+	dbleAEPBAL.cc, dbleCHOL.cc, dbleHESS.cc, dbleLU.cc, dbleQR.cc,
+	dbleQRP.cc, dbleSCHUR.cc, dbleSVD.cc:
+	Don't check f77_exception_encountered.
+
+2008-02-12  John W. Eaton  <jwe@octave.org>
+
+	* CMatrix.cc: Declare xilaenv instead of ilaenv.
+	(ComplexMatrix::lssolve): Call xilaenv instead of ilaenv.
+
+2008-02-12  Jason Riedy  <ejr@cs.berkeley.edu>
+  
+	* Array.cc (ascending_compare, descending_compare): Remove
+	non-standard extern in the instantiations.
+
+	* oct-sort.cc: Include <cstring> and sprinkle with std:: as needed.
+
+	* dMatrix.cc (ILAENV): Declare LAPACK Fortran function.
+	(Matrix::lssolve): Use ILAENV to query smlsiz.  And add an ugly
+	workaround for DGELSD's broken lwork query.  The formula is from
+	LAPACK's dgelsd.f source and allocates enough workspace to use an
+	efficient algorithm in the short-and-fat case (n > m).
+	* CMatrix.cc (ILAENV): Declare LAPACK Fortran function.
+	(ComplexMatrix::lssolve): Use ILAENV to query smlsiz.  And add an
+	ugly workaround for DGELSD's broken lwork query, as with double.
+
+2008-02-12  John W. Eaton  <jwe@octave.org>
+
+	* sparse-sort.cc: Don't explicitly instantiate
+	class octave_sort<octave_idx_vector_sort *>,
+	class octave_sort<octave_idx_type>, or
+	class octave_sort<octave_sparse_sort_idxl *>.
+
+	* Sparse.h (INSTANTIATE_SPARSE_SORT): Delete macro.
+	* Sparse-C.cc, Sparse-b.cc, Sparse-d.cc: Don't use it.
+
+	* Range.cc (Range::sort_internal): Avoid shadow warning from gcc.
+
+2008-02-11  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in ($(MAKEDEPS)): Skip dependencies if omit_deps is defined.
+
+2008-02-08  John W. Eaton  <jwe@octave.org>
+
+	* oct-sort.h (enum sortmode): Eliminate UNDEFINED.  Change all
+	uses of UNDEFINED to ASCENDING.
+
+2008-02-07  John W. Eaton  <jwe@octave.org>
+
+	* Range.cc (Range::sort_internal): Rename from sort.  New arg,
+	ASCENDING, with default value of true.
+	(Range::sort_internal (Array<octave_idx_type>&, bool)): New function.
+	(Range::sort (octave_idx_type, sortmode) const): New function.
+	(Range::sort (Array<octave_idx_type>&, octave_idx_type, sortmode)
+	const): New function.
+	* Range.h: Fix/provide decls.
+
+	* intNDArray.cc (intNDArray<T>::any (int)): Use != for comparison.
+
+2008-02-06  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in ($(OPTS_INC)): Use mv instead of move-if-change.
+	(stamp-prereq): Eliminate.
+	(clean): Don't remove stamp-prereq.
+	(libraries): Don't depend on stamp-prereq.
+	(PREREQ): New macro.
+	($(MAKEDEPS)): Depend on $(PREREQ), not stamp-prereq.
+	(distclean): Simplify with $(PREREQ).
+	(OPT_BASE): New macro.
+	(OPT_IN): Rename from OPTS_INC_DATA.  Define in terms of OPT_BASE.
+	(OPT_INC): Rename from OPTS_INC.  Define in terms of OPT_BASE.
+
+2008-02-05  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in: Unconditionally include $(MAKEDEPS).
+	Mark $(MAKEDEPS) as .PHONY targets if omit_deps is true.
+
+2008-02-03  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* Array.cc (ascending_compare, descending_compare,
+	Array<T>::sort): Declare explicit specialization for T=double to
+	avoid symbol duplication error at link time.
+	* Array-d.cc (ascending_compare, descending_compare): Declare and
+	define as nonmember functions, not member functions of Array<T>.
+
+2008-02-03  John W. Eaton  <jwe@octave.org>
+
+	* Array-i.cc: Also instantiate Arrays for long long type if it exists.
+
+2008-02-03  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* Array.cc: Don't include Range.h.
+
+2008-01-31  David Bateman  <dbateman@free.fr>
+
+	* oct-sort.cc: conversion of int to octave_idx_type where needed
+	for 64-bit builds.
+	(IFLT): Allow IFLT macro to be overridden.
+	* oct-sort.h: conversion of int to octave_idx_type where needed
+	for 64-bit builds.
+	(enum sortmode): Type of sort to perform.
+	(vec_index): Simple class to aid in indexed sorts.
+	
+	* Array.h ( Array<T> sort (octave_idx_type, sortmode) const,
+	Array<T> sort (Array<octave_idx_type> &, octave_idx_type,
+	sortmode) const): Array sorting methods.
+	(INSTANTIATE_ARRAY_SORT, NO_INSTANTIATE_ARRAY_SORT): Macros to
+	instantiate the array sorting methods.
+	* Array.cc (ascending_compare, descending_compare): New template
+	functions for generic sort comparison.
+  	( Array<T> Array<T>::sort (octave_idx_type, sortmode) const,
+	Array<T> Array<T>::sort (Array<octave_idx_type> &, octave_idx_type,
+	sortmode) const): Array sorting functions based of octave_sort
+	class.
+	* Array-C.cc: Instantiate the complex array sort methods. 
+	(IFLT): New macro to override the one in the
+	octave_sort class to avoid need for Complex < and > operators.
+	(static double xabs (const Complex&)): Complex abs function
+	avoiding std::abs(Inf) returning NaN with some compilers.
+	(ascending_compare, descending compare): override template
+	functions for complex comparison.
+	* Array-d.cc: Instantiate the double array sort methods. 
+	(Array<double> Array<double>::sort (octave_idx_type, 
+	sortmode) const, Array<double> Array<double>::sort 
+	(Array<octave_idx_type> &, octave_idx_type, sortmode) const): 
+	Array sorting functions based of octave_sort using uint64 sorting
+	on IEE754 doubles, for speed and correct sorting of Inf and NaN.
+	(ascending_compare, descending compare): override template
+	functions for double and uint64 comparison.
+	* Array-b.cc, Array-ch.cc, Array-i.cc, Array-s.cc, Array-str.cc: 
+	Instantiate the array sort methods.
+	* Array-idx-vec.cc: Null instantiation of array sort methods.
+	* Array2.h, Array3.h, ArrayN.h (sort): 2, 3 and N-dimensional
+	versions of the sort methods based on Array<T>::sort.
+
+	* CSparse.cc, dSparse.cc: Remove inclusion of octa-sort.h.
+	* Sparse.h ( Sparse<T> sort (octave_idx_type, sortmode) const,
+	Sparse<T> sort (Array<octave_idx_type> &, octave_idx_type,
+	sortmode) const): Sparse sorting methods.
+	(INSTANTIATE_ARRAY_SORT): Macro to instantiate the sparse sorting 
+	methods.
+	* Sparse.cc: replace sort with lsort throughout to avoid shadowing
+	of new sort method.
+	(sparse_ascending_compare, sparse_descending_compare): New template
+	functions for generic sort comparison.
+  	( Sparse<T> Sparse<T>::sort (octave_idx_type, sortmode) const,
+	Sparse<T> Sparse<T>::sort (Sparse<octave_idx_type> &, octave_idx_type,
+	sortmode) const): Sparse sorting functions based of octave_sort
+	class.
+	* Sparse-C.cc: Instantiate the complex sparse sort methods. 
+	(IFLT): New macro to override the one in the
+	octave_sort class to avoid need for Complex < and > operators.
+	(static double xabs (const Complex&)): Complex abs function
+	avoiding std::abs(Inf) returning NaN with some compilers.
+	(sparse_ascending_compare, sparse_descending compare): override
+	template functions for complex comparison.
+	* Sparse-d.cc: Instantiate the cdouble sparse sort methods. 
+	(sparse_ascending_compare, sparse_descending compare): override
+	template functions for double comparison.
+	* Array-b.cc: Instantiate the sparse sort methods.
+
+2008-01-25  Jaroslav Hajek  <highegg@gmail.com>
+
+	* idx-vector.h (idx_vector::idx_vector_rep::range_base,
+	idx_vector::idx_vector_rep::range_step,
+	idx_vector::idx_vector_rep::range_step): New data members.
+	(idx_vector::idx_vector_rep::idx_vector_rep): Initialize them.
+	* idx-vector.cc (IDX_VEC_REP::sort, IDX_VEC_REP::is_colon_equiv,
+	IDX_VEC_REP::init_state, IDX_VEC_REP::operator =,
+	IDX_VECTOR_REP::idx_vector_rep): Handle range.
+
+2008-01-18  Marco Caliari  <marco.caliari@univr.it>
+
+	* dMatrix.cc (Matrix::expm): Correctly perform reverse permutation.
+	* CMatrix.cc (ComplexMatrix::expm): Likewise.
+
+2008-01-22  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* oct-time.cc (octave_base_tim::init): Validate pointer argument;
+	this fixes the "localtime(-1)" crash under Windows.
+
+2008-01-18  John W. Eaton  <jwe@octave.org>
+
+	* dMatrix.cc (solve_singularity_warning): New function.
+	(Matrix::expm): Pass pointer to solve_singularity_warning to
+	Matrix::solve method.  Exit early if Matrix::solve fails.
+	Limit sqpow value to avoid overflowing scale factor.
+	* CMatrix.cc (solve_singularity_warning): New function.
+	(ComplexMatrix::expm): Pass pointer to solve_singularity_warning to
+	ComplexMatrix::solve method.  Exit early if ComplexMatrix::solve fails.
+	Limit sqpow value to avoid overflowing scale factor.
+	From Marco Caliari <marco.caliari@univr.it>.
+
+2008-01-10  Kim Hansen  <kimhanse@gmail.com>
+
+	* Sparse.cc: New tests for slicing of sparse matrices.
+
+2008-01-07  David Bateman  <dbateman@free.fr>
+
+	* Sparse-op-defs.h (SPARSE_ANY_ALL_OP_ROW_CODE): Don't break from
+	loop if this test succeeds.
+
+2008-01-03  David Bateman  <dbateman@free.fr>
+
+	* MSparse.cc (SPARSE_A2A2_OP): If first arg is scalar zero, then
+	need unary operator on remaining argument
+	* Sparse-op-defs.h (SPARSE_SMSM_BIN_OP_1): ditto.
+
+2007-12-21  John W. Eaton  <jwe@octave.org>
+
+	Version 3.0.0 released.
+
+2007-12-18  David Bateman  <dbateman@free.fr>
+
+	* Sparse.cc (template <class T> Sparse<T> Sparse<T>::index 
+	(idx_vector&, int) const): Fix case indexing of non zero scalar 
+	stored as a sparse matrix.
+	(template <class T> Sparse<T> Sparse<T>::index (idx_vector&, 
+	idx_vector&, int) const): For the non permutated indexing case,
+	fix link list calculation and use.
+
+2007-12-17  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (Array<T>::indexN): Correctly handle scalar indexed by
+	N-d array.
+
+2007-12-17  David Bateman  <dbateman@free.fr>
+
+	* Sparse-op-defs.h (SPARSE_ANY_ALL_OP_ROW_CODE): Use ridx for row
+	index.
+
+2007-12-11  John W. Eaton  <jwe@octave.org>
+
+	* Sparse.cc (Sparse<T>::index (idx_vector&, int) const):
+	If indexing scalar with empty matrix, return empty array with same
+	size as index.
+
+2007-12-10  John W. Eaton  <jwe@octave.org>
+
+	* NLEqn.h (NLEqn::fval): New data member.  Adjust constructors
+	and assignment operator.
+	(NLEqn::function_value): New function.
+	* NLEqn.cc (NLEqn::solve): If solution is successful, compute
+	function value.
+
+	* file-ops.cc (file_ops::concat): New function.
+	* file-ops.h: Provide decl.
+
+2007-12-07  John W. Eaton  <jwe@octave.org>
+
+	* oct-time.cc (octave_base_tm::init): Only assign t->tm_zone if it
+	is not 0.
+
+2007-12-07  David Bateman  <dbateman@free.fr>
+
+	* Sparse-op-defs.h (SPARSE_SMS_CMP_OP, SPARSE_SMS_BOOL_OP,
+	SPARSE_SSM_CMP_OP, SPARSE_SSM_BOOL_OP, SPARSE_SMSM_CMP_OP, 
+	SPARSE_SMSM_BOOL_OP, SPARSE_BASE_REDUCTION_OP): Use sparse
+	indexing where possible rather than the elem method.
+	(SPARSE_REDUCTION_OP_ROW_EXPR, SPARSE_REDUCTION_OP_COL_EXPR,
+	SPARSE_ANY_ALL_OP_ROW_CODE, SPARSE_ANY_ALL_OP_COL_CODE):
+	Replace for new version of SPARSE_BASE_REDUCTION_OP.
+	(SPARSE_ALL_OP): Specialize the initial value, and only treat dim
+	= 0 directly.
+	* CSparse.cc (SparseComplexMatrix SparseComplexMatrix::sumsq (int)
+	const): Replace ROW_EXPR and COL_EXPR functions for new version of
+	SPARSE_BASE_REDUCTION_OP.
+	(SparseComplexMatrix SparseComplexMatrix::prod (int) const):
+	Specialize the initial value, and only treat dim = 0 directly.
+	* dSparse.cc (SparseMatrix SparseMatrix::sumsq (int) const):
+	ditto.
+	(SparseMatrix SparseMatrix::prod (int) const): ditto.
+
+2007-12-06  John W. Eaton  <jwe@octave.org>
+
+	* CMatrix.cc (ComplexMatrix::expm): Update pointers to internal
+	data for npp and dpp after assignments.
+	* dMatrix.cc (Matrix::expm): Use same method as ComplexMatrix::expm.
+
+2007-12-04  John W. Eaton  <jwe@octave.org>
+
+	* Sparse.cc (assign (Sparse<LT>&,  const Sparse<RT>&)):
+	Do nothing if one index is empty.
+
+2007-12-04  David Bateman  <dbateman@free.fr>
+
+	* Sparse.cc (assign (Sparse<LT>&,  const Sparse<RT>&)):
+	Resize matrix as well if one dimension of lhs is zero and the rhs
+	index exceeds the lhs index.
+	* Sparse.cc (assign1 (Sparse<LT>&,  const Sparse<RT>&)):
+	Don't resize to a smaller matrix for empty matrices with a max rhs
+	index smaller than the non zero lhs index.
+
+2007-12-04  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* Array-util.h: Tag permute_vector_compare with OCTAVE_API.
+
+2007-12-03  Moritz Borgmann  <octave@moriborg.de>
+
+	* Array-util.cc (permute_vector_compare): Move here from Array.cc.
+	* Array-util.h (permute_vector, permute_vector_compare): Provide decls.
+	* Array.cc (permute_vector, permute_vector_compare): Delete.
+
+2007-12-03  David Bateman  <dbateman@free.fr>
+
+	* Sparse.cc (template <class LT, class RT> int assign
+	(Sparse<LT>&,  const Sparse<RT>&)): Only set return matrix size to
+	rhs values if both no. rows and columns are zero.
+
+2007-11-30  John W. Eaton  <jwe@octave.org>
+
+	* oct-sort.cc, oct-sort.h: Style fixes.
+
+	* lo-math.h: New file.
+	* Makefile.in (INCLUDES): Add it to the list.
+	* liboctave/Array2.h, liboctave/ArrayN.h, liboctave/CmplxDET.cc,
+	liboctave/DASPK.cc, liboctave/DASPK.h, liboctave/DASRT.cc,
+	liboctave/DASRT.h, liboctave/DASSL.cc, liboctave/DASSL.h,
+	liboctave/LSODE.cc, liboctave/LSODE.h, liboctave/NLEqn.h,
+	liboctave/Quad.h, liboctave/Range.cc, liboctave/dbleDET.cc,
+	liboctave/lo-cieee.c, liboctave/lo-ieee.cc,
+	liboctave/lo-mappers.cc, liboctave/oct-time.cc,
+	liboctave/oct-time.h, liboctave/randgamma.c,
+	liboctave/randmtzig.c, liboctave/randpoisson.c: Include lo-math.h
+	instead of cmath or math.h.
+	* lo-mappers.h: Don't include sunmath.h here.
+
+2007-11-26  John W. Eaton  <jwe@octave.org>
+
+	* idx-vector.h (idx_vector::idx_vector_rep (const intNDArray<U>&)):
+	Eliminate unnecessary second arg from call to tree_to_mat_idx.
+
+	* oct-inttypes.h (operator bool, operator char): Delete.
+	(bool_value, char_value, double_value, float_value): New functions.
+
+2007-11-26  David Bateman  <dbateman@free.fr>
+
+	* intNDArray.cc (template <class T> intNDArray<T>
+	intNDArray<T>::max (int) const, template <class T> intNDArray<T>
+	intNDArray<T>::max (ArrayN<octave_idx_type>&, int) const,
+	template <class T> intNDArray<T> intNDArray<T>::min (int) const, 
+	template <class T> intNDArray<T> intNDArray<T>::min 
+	(ArrayN<octave_idx_type>&, int) const): New methods for integer
+	classes.
+	* intNDArray.h (class intNDArray): Add min/max methods
+	* mx-op-defs.h (MIXMAX_DECLS, MINMAX_FCNS, SND_MINMAX_FCN,
+	NDS_MINMAX_FCN, NDND_MINMAX_FCN): New macro for instantiation of
+	min/max functions.
+	* int8NDArray.h, int16NDArray.h, int32NDArray.h, int64NDArray.h, 
+	uint8NDArray.h, uint16NDArray.h, uint32NDArray.h, uint64NDArray.h
+	(MINMAX_DECLS(T)): Declare the min/max functions for integer
+	types.
+	* int8NDArray.cc, int16NDArray.cc, int32NDArray.cc, int64NDArray.cc, 
+	uint8NDArray.cc, uint16NDArray.cc, uint32NDArray.cc, uint64NDArray.cc
+	(MINMAX_FCNS(T)): Instantiate the min/max functions for integer
+	types.
+
+	* Arrayc.cc (Array<T>::index (idx_vector&, idx_vector&, int,
+	const T& rfv) const): If ndims != 2 call ND version of index.
+
+2007-11-14  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (opeator T (void) const): New conversion operator.
+
+	* lo-specfun.cc (zbesi): When alpha is negative, don't limit
+	correction to half-integer values.  From Eric Chassande-Mottin
+	<echassandemottin@gmail.com>.
+
+2007-11-07  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* dMatrix.cc, CMatrix.cc: Help MSVC compiler to resolve
+	ambiguities related to math functions (in C++ mode).
+
+2007-11-06  David Bateman  <dbateman@free.fr>
+
+	* intNDArray.cc (intNDArray<T> intNDArray<T>::sum (int) const):
+	New method.
+	* intNDarray.h (intNDArray sum (int) const): Declare it.
+	* boolNDArray.cc (boolNDArray boolNDArray::sum (int) const):
+	New method.
+	* boolNDarray.cc (boolNDArray sum (int) const): Declare it.
+	* MArray-def.h (MARRAY_NORM_BODY): Scale frobenius norm by infinity
+	norm to avoid issues of over- and underflow.  From Rolf Fabian
+	<Rolf.Fabian@gmx.de>.
+
+2007-10-30  David Bateman  <dbateman@free.fr>
+
+	* DASRT-opts.in, LSODE-opts.in: Doc fixes for small book format.
+
+2007-10-30  John W. Eaton  <jwe@octave.org>
+
+	* CMatrix.cc (lssolve): Compute size of rwork and iwork arrays.
+	* dMatrix.cc (lssolve): Compute size of iwork array.
+
+2007-10-29  David Bateman  <dbateman@free.fr>
+
+	* CMatrix.h (lssolve (const Matrix&, octave_idx_type&, 
+	octave_idx_type&, double&) const, lssolve (const ComplexMatrix&, 
+	octave_idx_type&, octave_idx_type&, double&) const, lssolve 
+	(const ColumnVector&, octave_idx_type&, octave_idx_type&, 
+	double& rcond) const, lssolve (const ComplexColumnVector&, 
+	octave_idx_type&, octave_idx_type&, double& rcond) const): New
+	declarations.
+	* CMatrix.cc (lssolve (const Matrix&, octave_idx_type&, 
+	octave_idx_type&, double&) const, lssolve (const ComplexMatrix&, 
+	octave_idx_type&, octave_idx_type&, double&) const, lssolve 
+	(const ColumnVector&, octave_idx_type&, octave_idx_type&, 
+	double& rcond) const, lssolve (const ComplexColumnVector&, 
+	octave_idx_type&, octave_idx_type&, double& rcond) const): New
+	methods.
+	(lssolve (const Matrix&, octave_idx_type&, octave_idx_type&,
+	double&) const, lssolve (const ComplexMatrix&, octave_idx_type&, 
+	octave_idx_type&, double&) const): Also return rcond from the
+	singular values returned by XGELSD.
+	* dMatrix.h (lssolve (const Matrix&, octave_idx_type&, 
+	octave_idx_type&, double&) const, lssolve (const ComplexMatrix&, 
+	octave_idx_type&, octave_idx_type&, double&) const, lssolve 
+	(const ColumnVector&, octave_idx_type&, octave_idx_type&, 
+	double& rcond) const, lssolve (const ComplexColumnVector&, 
+	octave_idx_type&, octave_idx_type&, double& rcond) const): New
+	declarations.
+	* dMatrix.cc (lssolve (const Matrix&, octave_idx_type&, 
+	octave_idx_type&, double&) const, lssolve (const ComplexMatrix&, 
+	octave_idx_type&, octave_idx_type&, double&) const, lssolve 
+	(const ColumnVector&, octave_idx_type&, octave_idx_type&, 
+	double& rcond) const, lssolve (const ComplexColumnVector&, 
+	octave_idx_type&, octave_idx_type&, double& rcond) const): New
+	methods.
+	(lssolve (const Matrix&, octave_idx_type&, octave_idx_type&,
+	double&) const, lssolve (const ComplexMatrix&, octave_idx_type&, 
+	octave_idx_type&, double&) const): Also return rcond from the
+	singular values returned by XGELSD.
+		
+2007-10-26  David Bateman  <dbateman@free.fr>
+
+	* dMatrix.cc (Matrix::lssolve): Use xGELSD for rank deficient
+	matrices to avoid reliability issues with xGELSY.
+	* CMatrix.cc (ComplexMatrix::lssolve): Likewise.
+
+2007-10-25  John W. Eaton  <jwe@octave.org>
+
+	* oct-time.cc (octave_gmtime::init, octave_localtime::init):
+	Call unix_time on arg instead of relying on conversion operator.
+
+	* oct-time.h (octave_time::double_value): New function.
+	(octave_time::operator double () const): Delete.
+	(octave_time::operator time_t () const): Delete.
+
+2007-10-24  John W. Eaton  <jwe@octave.org>
+
+	* strptime.c: Also compile if OCTAVE_HAVE_BROKEN_STRPTIME is defined.
+
+2007-10-23  John W. Eaton  <jwe@octave.org>
+
+	* CRowVector.cc (operator * const ComplexRowVector&, const
+	ComplexColumnVector&)): Delete spurious code left from patch.
+
+2007-10-22  Kim Hansen  <kimhanse@gmail.com>
+
+	* chMatrix.cc, lo-utils.cc, oct-env.cc, oct-uname.cc,
+	sparse-sort.cc: Include <cstring>.
+
+2007-10-17  John W. Eaton  <jwe@octave.org>
+
+	* oct-sparse.h: Don't include metis.h.
+
+	* dSparse.cc (SparseMatrix::fsolve): Delete special code for METIS.
+	* CSparse.cc (SparseComplexMatrix::fsolve): Likewise.
+	* sparse-base-chol.cc (sparse_base_chol<chol_type, chol_elt,
+	p_type>::sparse_base_chol_rep::init): Likewise.
+
+2007-10-16  John W. Eaton  <jwe@octave.org>
+
+	* dMatrix.cc (Matrix::inverse): Only check rcond == 0 if the
+	matrix is hermitian or calc_cond is true.
+	* CMatrix.cc (ComplexMatrix::inverse): Likewise.
+
+2007-10-12  John W. Eaton  <jwe@octave.org>
+
+	* Change copyright notices in all files that are part of Octave to
+	GPLv3 or any later version.
+
+2007-10-11  Brian Gough  <bjg@network-theory.co.uk>
+
+	* DASSL-opts.in, LSODE-opts.in: Spelling fixes.
+
+2007-10-10  Olli Saarela  <Olli.Saarela@kcl.fi>
+
+	* DASPK-opts.in, DASRT-opts.in, DASSL-opts.in: Spelling fixes.
+
+2007-10-10  John W. Eaton  <jwe@octave.org>
+
+	* LPsolve.h, LPsolve.cc: Delete.
+	* Makefile.in: Remove them from the INCLUDES and
+	LIBOCTAVE_CXX_SOURCES lists.
+
+2007-10-09  John W. Eaton  <jwe@octave.org>
+
+	* oct-time.cc (octave_strptime::init): Initialize t.tm_mon to -1
+	and t.tm_year to INT_MIN before call to oct_strptime.  Adjust
+	values to zero after call if they remain unchanged.
+
+	* dSparse.cc (SparseMatrix::all_elements_are_zero): New function.
+	* dNDArray.cc (NDArray::all_elements_are_zero): New function.
+
+2007-10-09  David Bateman  <dbateman@free.fr>
+
+	* oct-time.cc (octave_strptime::init): Only call mktime if mday is
+	valud and mon and year are also filled in.
+
+	* Array2.h (Array2<T>::Array2(const dim_vector&),
+	Array2<T>::Array(const dim_vector&, const T&)): Check that
+	dim_vector is 2 dimensional.
+
+	* Sparse.cc (Sparse<T> Sparse<T>::index (idx_vector&, idx_vector&,
+	int)): Remove a for loop in the random indexing case at the
+	expense of maintaining a set of linked lists of indices that point 
+	to the same column in the original matrix.
+	(int assign (Sparse<LT>&, Sparse<RT>)): Take a const copy of lhs
+	and use it on the RHS of expressions to avoid unnecessary calls to
+	make_unique.
+
+2007-10-08  David Bateman  <dbateman@free.fr>
+
+	* oct-rl-edit. (typedef rl_quoting_fcn_ptr, rl_dequoting_fcn_ptr,
+	rl_char_is_quoted_fcn_ptr, rl_command_fcn_ptr): New  typedefs
+	for readline compatible functions.
+	(octave_rl_redisplay): Redisplay the current line of text.
+	(octave_rl_newline):  Change interface to the same
+	as used by the equivalent readline function itself.
+	(octave_rl_filename_quoting_desired,
+	octave_rl_set_filename_quote_characters,
+	octave_rl_set_completer_quote_characters,
+	octave_rl_qet_quoting_function, octave_rl_qet_dequoting_function,
+	octave_rl_set_char_is_quoted_function): New functions to control
+	readline filename quoting and line acceptace.
+	* oct-rl-edit.c (octave_rl_newline): Change interface to the same
+	as used by the equivalent readline function itself.
+	(octave_rl_redisplay): Redisplay the current line of text.
+	(octave_rl_filename_quoting_desired,
+	octave_rl_set_filename_quote_characters,
+	octave_rl_set_completer_quote_characters,
+	octave_rl_qet_quoting_function, octave_rl_qet_dequoting_function,
+	octave_rl_set_char_is_quoted_function): New functions to control
+	readline filename quoting and line acceptace.
+	* cmd-edit.h (typedef quoting_fcn, typedef dequoting_fcn,
+	typedef char_is_quoted_fcn, user_accept_line_fcn): New typedefs
+	to map C++ function to readline compatible functions.
+	(set_filename_quote_characters): New function to set the
+	characters to if they appear in a filename that force the filename
+	to be quoted.
+	(set_completer_quote_characters): The characters that the readline
+	completion function considers as quotation characters.
+	(set_quoting_function, set_dequoting_function,
+	set_char_is_quoted_function, set_user_accept_line_function):
+	Functions to set the Octave functions to perform quoting and the
+	acceptance of a line of text by readline.
+	(get_quoting_function, get_dequoting_function,
+	get_char_is_quoted_function, get_user_accept_line_function):
+	Functions to get the above functions.
+	(accept_line): New method for the command_editor to accept a line
+	of text.
+	(file_quoting_desired): Function to set whether readline should
+	attempt to quote filenames.
+	(do_set_filename_quoting_characters, 
+	do_set_completer_quote_characters, do_set_quoting_function,
+	do_set_dequoting_function, do_set_char_is_quoted_function,
+	do_set_user_accept_line_function, do_get_quoting_function,
+	do_get_dequoting_function, do_get_char_is_quoted_function,
+	do_get_user_accept_line_function, do_filename_quoting_desired):
+	Virtual functions to control the behavior of readline quoting and
+	acceptance of lines.
+	(do_accept_line): Virtual function for the accept line function.
+	* cmd-edit.cc (class gnu_readline do_set_filename_quote_characters, 
+	do_completer_quote_characters, do_set_quoting_function,
+	do_set_dequoting_function, do_set_char_is_quoted_function,
+	do_set_user_accept_line_function, do_get_quoting_function,
+	do_get_dequoting_function, do_get_user_accept_line_function, 
+	do_accept_line, do_filename_quoting_desired, command_quoter,
+	command_dequoter, command_char_is_quoted, command_accept_line):
+	New functions in gnu_readline class to control filename quoting 
+	and line acceptance.
+	(quoting_function, dequoting_function, char_is_quoted_function,
+	user_accept_line_function): private variable to store functions
+	supplied for readline quoting and line acceptance.
+	(gnu_readline::gnu_readline): Also set the new function pointers
+	to zero.
+	(gnu_readline::do_newline): Adapt to new octave_rl_newline
+	interface.
+	(gnu_readeline::operate_and_get_next): Use new accept_line
+	function rather than newline.
+	(default_ommand_editor::do_accept_line): New method.
+	(class command_editor set_filename_quote_characters, 
+	set_completer_quote_characters, set_quoting_function,
+	set_dequoting_function, set_char_is_quoted_function,
+	set_user_accept_line_function, get_quoting_function,
+	get_dequoting_function, get_user_accept_line_function, 
+	accept_line, filename_quoting_desired): New functions checking
+	instance before calling virtual function.
+
+	* CMatrix.h, dMatrix.h, boolMatrix.h, chMatrix.h, MArray2.h,
+	Array2.h: Add dim_vector constructors.
+	* charNDArray.h (charNDArray (const dim_vector&)): Add missing
+	const to dim_vector constructors. 
+	* boolMatrix.cc, chMatrix.cc, intNDArray.cc (diag (void), diag
+	(octave_idx_type)): New methods to constructor diagonal matrices.
+	* boolMatrix.h, chMatrix.h, intNDArray.h (diag (void), diag
+	(octave_idx_type)): Declare them.
+
+
+2007-10-06  John W. Eaton  <jwe@octave.org>
+
+	* lo-specfun.cc: (zlgamma): Delete.
+	(xgamma): Use C library gamma function if available.
+	(xlgamma): Use C library lgamma function if available.
+	(xlgamma) [! HAVE_LGAMMA]: Allow calculation for any value of X
+	other than NaN or Inf.
+
+2007-10-05  John W. Eaton  <jwe@octave.org>
+
+	* lo-specfun.cc (zlgamma): New function.
+
+2007-10-04  John W. Eaton  <jwe@octave.org>
+
+	* oct-sort.cc (octave_sort<T>::binarysort): Remove register
+	qualifiers on local variables.
+
+2007-10-04  Marco Caliari  <mcaliari@math.unipd.it>
+
+	* CMatrix.cc (ComplexMatrix::expm): Limit shift to values less
+	than log(realmax) to avoid issues with NaN.
+
+2007-10-01  John W. Eaton  <jwe@octave.org>
+
+	* oct-time.cc (octave_strptime::init): Call mktime to propertly
+	initialize wday and yday.
+	From Matthias Drochner <m.drochner@fz-juelich.de>.
+
+	* cmd-edit.cc (command_editor::do_decode_prompt_string): Don't
+	insert extra '\001' when decoding \[ and \].
+
+2007-09-26  David Bateman  <dbateman@free.fr>
+
+	* dMatrix.cc (lssolve): Replace the use of xGELSS with xGELSY with
+	is much faster and no less accurate.
+	* CMatrix.cc (lssolve): ditto.
+
+2007-09-25  David Bateman  <dbateman@free.fr>
+
+	* dMatrix.cc (utsolve, ltsolve, fsolve, lssolve): Allow
+	zero dimensioned matrices.
+        * CMatrix.cc (utsolve, ltsolve, fsolve, lssolve): ditto.
+	* dSparse.cc (dsolve, utsolve, ltsolve, bsolve, trisolve, fsolve):
+	ditto.
+	* CSparse.cc (dsolve, utsolve, ltsolve, bsolve, trisolve, fsolve):
+	ditto.
+	* SparseQR.cc (SparseQR::SparseQR_rep::C, qrsolve): ditto.
+	* SparseCmplxQR.cc (SparseComplexQR::SparseComplexQR_rep::C,
+	qrsolve): ditto.
+	* sparse-dmsolve.cc (dmsolve): ditto.
+
+2007-09-21  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assign1 (Array<LT>&, const Array<RT>&, const LT&)):
+	Also allow resizing empty LHS if it is 1x0 or 0xN.
+
+2007-09-19  John W. Eaton  <jwe@octave.org>
+
+	* cmd-edit.cc (command_editor::remove_startup_hook):
+	Fix cut-and-paste error.
+	(gnu_readline::set_startup_hook): Only set hook function if new
+	function is different from the current one.
+
+2007-09-18  John W. Eaton  <jwe@octave.org>
+
+	* cmd-edit.h, cmd-edit.cc (command_editor::startup_hook_set,
+	command_editor::event_hook_set): New static data.
+	(default_command_editor::set_startup_hook,
+	gnu_readline::set_startup_hook,
+	default_command_editor::restore_startup_hook,
+	gnu_readline_restore_event_hook):
+	Rename from do_set_startup_hook and do_set_event_hook.
+	(gnu_readline::operate_and_get_next): Call
+	command_editor::add_startup_hook, not
+	command_editor::set_startup_hook.
+	(command_editor::startup_handler, command_editor::event_handler):
+	New functions.
+	(command_editor::add_startup_hook, command_editor::add_event_hook,
+	command_editor::remove_startup_hook,
+	command_editor::remove_event_hook): Rename from set_startup_hook
+	and restore_startup_hook.  Handle hook sets here.
+	* cmd-edit.cc (gnu_history::do_goto_mark):
+	Call remove_startup_hook instead of restore_startup_hook.
+
+2007-09-17  John W. Eaton  <jwe@octave.org>
+
+	* lo-utils.cc (octave_read_complex, octave_read_double): Skip
+	leading whitespace.
+
+2007-09-13  John W. Eaton  <jwe@octave.org>
+
+	* lo-utils.cc (read_inf_nan_na, octave_read_double,
+	octave_read_complex): Use istream::get instead of >> to read
+	individual characters.
+
+2007-09-10  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assign1): Don't call make_unique for invalid assignment.
+
+2007-09-10  David Bateman  <dbateman@free.fr>
+
+	* Array.h (Array<T>::make_unique): Make public so that the
+	::assign functions can access it directly.
+	* Array.cc (Array<T>::maybe_delete_elements_1(idx_vector&),
+	Array<T>::maybe_delete_elements_1(idx_vector&),
+	Array<T>::maybe_delete_elements(idx_vector&, idx_vector&),
+	Array<T>::maybe_delete_elements(Array<idx_vector>&, const T&)):
+	Use xelem for non const RHS to avoid call to make_unique.
+	(int assign1 (Array<LT>&, const Array<RT>&, const LT&)): Use
+	xelem for LHS and call lhs.make_unique() only once. Special case
+	the is_colon index case and use Array<T>::xelem(octave_idx_type)
+	rather than Array<T>::xelem(octave_idx_type,octave_idx_type) and
+	bring the additional multiplication out of the inner loop.
+	(int assign2 (Array<LT>&, const Array<RT>&, const LT&)): ditto.
+	(int assignN (Array<LT>&, const Array<RT>&, const LT&)): ditto.
+	* idx-vector.h (idx_vector::idx_vector_rep::idx_vector_rep 
+	(const Range& r)): Don't use init_state() method but special case
+	as with a Range can avoid exhaustive search.
+
+2007-09-07  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (Array<T>::fortran_vec): Call make_unique instead of
+	manipulating rep directly.
+
+	* Array.h (idx, idx_count): Declare mutable.
+	(Array<T>::set_index, Array<T>::clear_index, Array<T>::value):
+	Now const.
+
+2007-09-06  David Bateman  <dbateman@free.fr>
+
+        * Array-util.cc (increment_index): dimensions can have singleton
+        trailing dimensions.
+        * Array.h (range_error, xelem, checkelem, elem, operator ()):
+        Modify use of Array<int> to Array<octave_idx_type> and adjust
+        where necessary.
+        * Array.cc (range_error): ditto.
+        * MArrayN.h (permute, ipermute): ditto.
+        * ArrayN.h (permute, ipermute): ditto.
+        * so-array.cc (streamoff_array::compute_index): ditto.
+        * so-array.h (compute_index): ditto.
+        * CMattrix.cc (ComplexMatrix::exmpm): ditto.
+
+2007-08-29  David Bateman  <dbateman@free.fr>
+
+        * dSparse.cc (SparseMatrix SparseMatrix::inverse (MatrixType &, 
+        octave_idx_type&, double&, int, int)): Calculate with LU even for
+        matrices marked as singular.
+        * CSparse.cc (SparseComplexMatrix SparseComplexMatrix::inverse (
+        MatrixType &, octave_idx_type&, double&, int, int)): ditto.
+        * dMatrix.cc (Matrix Matrix::inverse (MatrixType &, octave_idx_type&,
+        double&, int, int)): ditto. If rcond==0 force matrix of infinities.
+        * dMatrix.cc (ComplexMatrix ComplexMatrix::inverse (MatrixType &,
+         octave_idx_type&, double&, int, int)): ditto.
+
+2007-08-27  John W. Eaton  <jwe@octave.org>
+
+	* oct-env.cc (octave_env::rooted_relative_pathname,
+	octave_env::do_rooted_relative_pathname): New functions.
+	* oct-env.h: Provide decls.
+
+2007-08-24  David Bateman  <dbateman@free.fr>
+
+        * MSparse.h (MSparse<T>& insert (const Sparse<T>&, 
+        const Array<octave_idx_type>&)): New method.
+        (MSparse (const dim_vector&, octave_idx_type)): Ditto.
+        * dSparse.h (SparseMatrix& SparseMatrix::insert (const
+        SparseMatrix&, const Array<octave_idx_type>&)): ditto.
+        (SparseMatrix (const dim_vector&, octave_idx_type)): ditto.
+        * dSparse.cc (SparseMatrix& SparseMatrix::insert (const
+        SparseMatrix&, const Array<octave_idx_type>&)): ditto.
+        * boolSparse.h (SparseBoolMatrix& SparseBoolMatrix::insert (const
+        SparseBoolMatrix&, const Array<octave_idx_type>&)): ditto.
+        * boolSparse.cc (SparseBoolMatrix& SparseBoolMatrix::insert (const
+        SparseBoolMatrix&, const Array<octave_idx_type>&)): ditto.
+        * CSparse.h (SparseComplexMatrix& SparseComplexMatrix::insert (const
+        SparseMatrix&, const Array<octave_idx_type>&),
+        SparseComplexMatrix& SparseComplexMatrix::insert (const
+        SparseComplexMatrix&, const Array<octave_idx_type>&)): ditto.
+        (SparseComplexMatrix (const dim_vector&, octave_idx_type)): ditto.
+        * CSparse.cc (SparseComplexMatrix& SparseComplexMatrix::insert (const
+        SparseMatrix&, const Array<octave_idx_type>&),
+        SparseComplexMatrix& SparseComplexMatrix::insert (const
+        SparseComplexMatrix&, const Array<octave_idx_type>&)): ditto.
+
+2007-08-19  David Bateman  <dbateman@free.fr>
+
+	* Sparse.cc (Sparse<T>::permute): Avoid shadowing warning.
+
+2007-08-14  John W. Eaton  <jwe@octave.org>
+
+	* Sparse.cc (Sparse<T>::permute): permutation vector is zero based.
+	Simplify.
+	(Sparse<T>::reshape): Warn about reshaping to N-d array.
+
+2007-08-10  Michael Goffioul  <michael.goffioul@gmail.com>
+
+	* file-stat.cc (file_stat::update_internal) [__WIN32__]:
+	Remove trailing dir separator when stat'ing directory except for
+	root directory.
+
+2007-07-25  David Bateman  <dbateman@free.fr>
+	
+	* Makefile.in: 	Adjust DISTFILES to allow out of tree "make dist" 
+	to work.
+
+2007-06-04  David Bateman  <dbateman@free.fr>
+
+	* oct-inttypes.h (octave_int<T>& operator <<= (const T2&),
+	octave_int<T>& operator >>= (const T2&)): Make shift operators
+	perform a twos complement arithmetic shift for both signed and
+	unsigned integers regardless of compiler implementations.
+
+2007-06-13  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* SparseCmplxQR.cc (OCTAVE_C99_ZERO): For CXSparse 2.2 and greater
+	use cs_complex_t(0,0) for the complex zero.
+
+	* MArray-ch.cc, MArray-d.cc, MArray-i.cc, MArray-s.cc:
+	Sprinkle class instantiations with OCTAVE_API as needed.
+
+	* Array.h (INSTANTIATE_ARRAY_ASSIGN, INSTANTIATE_ARRAY,
+	INSTANTIATE_ARRAY_AND_ASSIGN): New arg, API. Change all uses.
+	* MArray-defs.h (MARRAY_OP_ASSIGN_DECL, MARRAY_OP_ASSIGN_DECLS,
+	MARRAY_OP_ASSIGN_FWD_DECLS, MARRAY_OP_ASSIGN_FRIENDS,
+	MARRAY_OP_ASSIGN_DEFS, MARRAY_UNOP, MARRAY_UNOP_DECLS,
+	MARRAY_UNOP_FWD_DECLS, MARRAY_UNOP_FRIENDS, MARRAY_UNOP_DEFS,
+	MARRAY_BINOP_DECL, MARRAY_BINOP_DECLS, MARRAY_AA_BINOP_DECLS,
+	MDIAGARRAY2_DAS_BINOP_DECLS, MDIAGARRAY2_SDA_BINOP_DECLS,
+	MDIAGARRAY2_DADA_BINOP_DECLS, MARRAY_BINOP_FWD_DECLS,
+	MDIAGARRAY2_BINOP_FWD_DECLS, MARRAY_BINOP_FRIENDS,
+	MDIAGARRAY2_BINOP_FRIENDS, MARRAY_BINOP_DEFS,
+	MDIAGARRAY2_BINOP_DEFS, MARRAY_OPS_FORWARD_DECLS,
+	MDIAGARRAY2_OPS_FORWARD_DECLS, MARRAY_OPS_FRIEND_DECLS,
+	MDIAGARRAY2_OPS_FRIEND_DECLS, INSTANTIATE_MARRAY_FRIENDS,
+	INSTANTIATE_MARRAY2_FRIENDS, INSTANTIATE_MARRAYN_FRIENDS,
+	INSTANTIATE_MDIAGARRAY2_FRIENDS): Ditto.
+	* MSparse-defs.h (SPARSE_OP_ASSIGN_DECL, SPARSE_OP_ASSIGN_DECLS,
+	SPARSE_OP_ASSIGN_FWD_DECLS, SPARSE_OP_ASSIGN_FRIENDS,
+	SPARSE_OP_ASSIGN_DEFS, SPARSE_UNOP, SPARSE_UNOP_DECLS,
+	SPARSE_UNOP_FWD_DECLS, SPARSE_UNOP_FRIENDS, SPARSE_UNOP_DEFS,
+	SPARSE_BINOP_DECL, SPARSE_BINOP_DECLS, SPARSE_AA_BINOP_DECLS,
+	SPARSE_BINOP_FWD_DECLS, SPARSE_BINOP_FRIENDS, SPARSE_BINOP_DEFS,
+	SPARSE_OPS_FORWARD_DECLS, SPARSE_OPS_FRIEND_DECLS,
+	INSTANTIATE_SPARSE_FRIENDS): Ditto.
+	* Sparse-op-defs.h (SPARSE_BIN_OP_DECL, SPARSE_CMP_OP_DECL,
+	SPARSE_BOOL_OP_DECL, SPARSE_SMS_BIN_OP_DECLS,
+	SPARSE_SMS_CMP_OP_DECLS, SPARSE_SMS_EQNE_OP_DECLS,
+	SPARSE_SMS_BOOL_OP_DECLS, SPARSE_SSM_BIN_OP_DECLS,
+	SPARSE_SMS_OP_DECLS, SPARSE_SSM_BIN_OP_DECLS,
+	SPARSE_SSM_CMP_OP_DECLS, SPARSE_SSM_EQNE_OP_DECLS,
+	SPARSE_SSM_BOOL_OP_DECLS, SPARSE_SSM_OP_DECLS,
+	SPARSE_SMSM_BIN_OP_DECLS, SPARSE_SMSM_CMP_OP_DECLS,
+	SPARSE_SMSM_EQNE_OP_DECLS, SPARSE_SMSM_BOOL_OP_DECLS,
+	SPARSE_SMSM_OP_DECLS, SPARSE_MSM_BIN_OP_DECLS,
+	SPARSE_MSM_CMP_OP_DECLS, SPARSE_MSM_EQNE_OP_DECLS,
+	SPARSE_MSM_BOOL_OP_DECLS, SPARSE_MSM_OP_DECLS,
+	SPARSE_SMM_BIN_OP_DECLS, SPARSE_SMM_CMP_OP_DECLS,
+	SPARSE_SMM_EQNE_OP_DECLS, SPARSE_SMM_BOOL_OP_DECLS,
+	SPARSE_SMM_OP_DECLS): Ditto.
+	* Sparse.h (INSTANTIATE_SPARSE_ASSIGN, INSTANTIATE_SPARSE,
+	INSTANTIATE_SPARSE_AND_ASSIGN): Ditto.
+	* mx-op-defs.h (BIN_OP_DECL, CMP_OP_DECL, NDCMP_OP_DECL,
+	BOOL_OP_DECL, NDBOOL_OP_DECL, VS_BIN_OP_DECLS, VS_OP_DECLS,
+	SV_BIN_OP_DECLS, SV_OP_DECLS, VV_BIN_OP_DECLS, VV_OP_DECLS,
+	MS_BIN_OP_DECLS, MS_CMP_OP_DECLS, MS_BOOL_OP_DECLS, MS_OP_DECLS,
+	SM_BIN_OP_DECLS, SM_CMP_OP_DECLS, SM_BOOL_OP_DECLS, SM_OP_DECLS,
+	MM_BIN_OP_DECLS, MM_CMP_OP_DECLS, MM_BOOL_OP_DECLS, MM_OP_DECLS,
+	NDS_BIN_OP_DECLS, NDS_CMP_OP_DECLS, NDS_BOOL_OP_DECLS,
+	NDS_OP_DECLS, SND_BIN_OP_DECLS, SND_CMP_OP_DECLS,
+	SND_BOOL_OP_DECLS, SND_OP_DECLS, NDND_BIN_OP_DECLS,
+	NDND_CMP_OP_DECLS, NDND_BOOL_OP_DECLS, NDND_OP_DECLS,
+	SDM_BIN_OP_DECLS, SDM_OP_DECLS, DMS_BIN_OP_DECLS, DMS_OP_DECLS,
+	MDM_BIN_OP_DECLS, MDM_OP_DECLS, DMM_BIN_OP_DECLS, DMM_OP_DECLS,
+	DMDM_BIN_OP_DECLS, DMDM_OP_DECLS): Ditto.
+
+2007-06-12  John W. Eaton  <jwe@octave.org>
+
+	* dMatrix.cc (Matrix::expm): Special case for scalar arg.
+	* CMatrix.cc (ComplexMatrix::expm): Likewise.
+
+2007-06-06  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* file-ops.cc (tilde_find_suffix, isolate_tilde_prefix,
+	tilde_expand_word): Use file_ops::is_dir_sep instead of comparing
+	with file_ops::dir_sep_char.
+
+	* MArray-C.cc: Sprinkle with OCTINTERP_API as needed.
+
+2007-06-04  David Bateman  <dbateman@free.fr>
+
+	* file-ops.cc: Typo.
+
+	* Sparse.cc (Sparse<T> Sparse<T>::reshape): If length of new
+	dimensions is greater than 2, collapse to 2-D.
+
+2007-06-02  David Bateman  <dbateman@free.fr>
+
+	* SparseCmplxQR.cc: Changes to support CXSparse 2.2.0.
+
+2007-05-31  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (Array::get_size): Throw std::bad_alloc exception if
+	the computed size is too large for the size of Octave's index type.
+
+2007-05-23  John W. Eaton  <jwe@octave.org>
+
+	* oct-sparse.h: Don't surround included files with extern "C" { ... }.
+
+2007-05-16  David Bateman  <dbateman@free.fr>
+
+	* dRowVector.cc (linspace): Return second argument if fewer than
+	two values are requested.
+	* CRowVector.cc (linspace): Likewise.
+
+2007-04-27  John W. Eaton  <jwe@octave.org>
+
+	* lo-mappers.cc (signum (const Complex&)): Special case for (0, 0).
+
+2007-04-25  John W. Eaton  <jwe@octave.org>
+
+	* oct-fftw.h (octave_fftw): Tag with OCTAVE_API.
+
+2007-04-20  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assign1): For x(:) = RHS, require rhs_len == lhs_len,
+	not rhs_len == 1.
+
+2007-04-18  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* oct-md5.h (oct_md5, oct_md5_file): Tag decls with OCTAVE_API.
+
+2007-04-13  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (Array<T>::maybe_delete_elements_2): Don't return early
+	for empty matrix.  Only check for colon index equivalence if not empty.
+
+2007-04-10  John W. Eaton  <jwe@octave.org>
+
+	* SparseCmplxQR.cc
+	(SparseComplexQR::SparseComplexQR_rep::SparseComplexQR_rep):
+	Move GCC_ATTR_UNUSED before the parameter decl.
+	From Luis Ortiz  <lortiz@interactivesupercomputing.com>.
+
+2007-04-06  John W. Eaton  <jwe@octave.org>
+
+	* MArray-defs.h (MARRAY_NORM_BODY): New macro.
+	* MArray.h (MArray<T>::norm): New function.
+	* MArray.cc: Provide decl.
+	* MArray-d.cc (MArray<double>::norm): Define double specialization.
+	* MArray-C.cc (MArray<Complex>::norm): Define Complex specialization.
+
+2007-04-04  John W. Eaton  <jwe@octave.org>
+
+	* Range.cc (Range::nelem_internal): Likewise.
+	* lo-utils.cc (NINT): Use numeric_limits<int> instead of INT_MAX.
+	(NINTbig): Use numeric_limits<octave_idx_type> instead of INT_MAX.
+	From Scott Pakin <pakin@lanl.gov>.
+
+2007-04-04  David Bateman  <dbateman@free.fr>
+
+	* dMatrix.cc (Matrix::inverse): If calc_cond is true, calculate
+	the condition number for positive definite matrices.
+	* CMatrix.cc (ComplexMatrix::inverse): Ditto.
+	* dbleChol.h (CHOL(const Matrix&, bool)): New arg, calc_cond.
+	(CHOL(const Matrix&, octave_idx_type&, bool): Ditto.
+	(octave_idx_type init (const Matrix&, bool)): Ditto.
+	(CHOL(const CHOL&)): Copy xrcond.
+	(CHOL& operator = (const CHOL&)): Copy xrcond.
+	(xrcond): New private data member.
+	* CmplxCHOL.h (ComplexCHOL(const ComplexMatrix&, bool)): New arg,
+	calc_cond.
+	(ComplexCHOL(const ComplexMatrix&, octave_idx_type&, bool): Ditto
+	(octave_idx_type init (const ComplexMatrix&, bool)): Ditto.
+	(ComplexCHOL(const ComplexCHOL&)): Copy xrcond.
+	(ComplexCHOL& operator = (const ComplexCHOL&)): Copy xrcond.
+	(xrcond): New private data member.
+	* dbleCHOL.cc (CHOL::init(const Matrix&, bool)): If calc_cond is
+	true, calculate the condition number with dpocon.
+	* CmplxCHOL.cc (ComplexCHOL::init(const ComplexMatrix&, bool)): If
+	calc_cond is true, calculate the condition number with zpocon.
+
+2007-04-03  John W. Eaton  <jwe@octave.org>
+
+	* intNDArray.cc (intNDArray): Delete spurious semicolon.
+
+	* CMatrix.cc (ComplexMatrix::tinverse): Use Array<T> and
+	fortran_vec method instead of OCTAVE_LOCAL_BUFFER to avoid
+	"maybe clobbered by vfork" warning.
+
+	* Sparse-op-defs.h (SPARSE_CUMSUM): Add braces to avoid ambiguous
+	if/else.
+
+	* oct-spparms.h (octave_sparse_params): Define copy constructor
+	and destructor.
+
+	* Array.cc (assignN): Don't resize dimension if corresponding
+	index is empty.
+
+2007-04-02  John W. Eaton  <jwe@octave.org>
+
+	* dMatrix.h (Matrix::inverse): Reinstate versions without
+	MatrixType argument.
+	* CMatrix.h (ComplexMatrix::inverse): Likewise.
+
+2007-03-27  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (DISTDIRS): Delete variable.
+	(dist): Delete action for DISTDIRS.  Use ln instead of $(LN_S).
+
+2007-03-26  David Bateman  <dbateman@free.fr>
+
+	* MatrixType.cc: Replace all uses of the method
+	octave_sparse_params::get_key ("bandden") with 
+	octave_sparse_params::get_bandden (void).
+	(MatrixType::MatrixType (void)): Undo previous change but use
+	octave_sparse_params::get_bandden (void).
+	* oct-spparms.cc (get_bandden(void), do_get_bandden(void)): New
+	methods.
+	* oct-spparms.h (get_bandden(void), do_get_bandden(void)):
+	Declare them.	
+	
+2007-03-26  Luis Ortiz  <lortiz@interactivesupercomputing.com>
+	    David Bateman  <dbateman@free.fr>
+
+	* idx-vector.h.cc (IDX_VEC_REP::idx_vector_rep (const Range&)):
+	Check that all elements are ints before doing anything.  Simplify
+	calculation of index values.
+
+2007-03-26  David Bateman  <dbateman@free.fr>
+
+	* Range.cc (Range::all_elements_are_ints): Improve check.
+
+2007-03-26  John W. Eaton  <jwe@octave.org>
+
+	* chNDArray.cc, chMatrix.cc: Also generate comparison and bool ops.
+	* chNDArray.h, chMatrix.h: Provide decls.
+
+2007-03-24  Luis Ortiz  <lortiz@interactivesupercomputing.com>
+
+	* MatrixType.cc (MatrixType::MatrixType (void)): Initialize
+	sp_bandden to zero for performance reasons as it's not used.
+
+2007-03-23  David Bateman  <dbateman@free.fr>
+
+	* oct-rand.cc (octave_rand::seed): Seed differently for big and
+	little endian.
+
+2007-03-15  John W. Eaton  <jwe@octave.org>
+
+	* lo-mappers.cc (acos): Use formula similar to what we use for asin.
+	From Alexander Barth <abarth@marine.usf.edu>.
+
+2007-03-12  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (octave_int::octave_int (double)):
+	New Specialization.  Round arg.
+	(operator / (const octave_int<T1>&, const octave_int<T2>&)):
+	Round result before converting type.
+
+2007-03-07  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assign1): Avoid resizing if there is an error.
+
+	* dMatrix.cc, CMatrix.cc (operator *): Only check
+	f77_exception_encountered immediately after calls that use F77_XFCN.
+
+	* Array.cc (assign1 (Array<LT>&, const Array<RT>&, const LT&)):
+	Only allow resizing empty LHS if it is 0x0.
+
+	* Array.cc (Array<T>::maybe_delete_elements (Array<idx_vector>&,
+	const T&)): Handle case of more indices than dimensions.
+	(assign (Array<LT>&, const Array<RT>&, const LT&)): Allow more
+	cases to be handled by assignN.
+	(assignN (Array<LT>&, const Array<RT>&, const LT&)):
+	Special cases for 2-d array assignments for speed.
+	Improve handling of scalar RHS and empty indices.
+
+2007-03-05  David Bateman  <dbateman@free.fr>
+
+	* oct-md5.c (oct_md5_file (const std::string&)): New function.
+	* oct-md5.h (oct_md5_file (const std::string&)): Declare it.
+
+2007-03-02  John W. Eaton  <jwe@octave.org>
+
+	* str-vec.h (string_vector::empty): Return bool, not int.
+
+2007-03-01  David Bateman  <dbateman@free.fr>
+
+        * md5.h, md5.c: New files from libmd5-rfc sourceforge project for
+        an independent implementation of RFC1321.
+        * oct-md5.h, oct-md5: New files for treating std::string class
+        with MD5.
+        * Makefile.in (INCLUDES): Add md5.h and oct-md5.h
+        (LIBOCTAVE_CXX_SOURCES): Add oct-md5.cc
+        (LIBOCTAVE_C_SOURCES): Add md5.c
+
+2007-02-27  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (uninstall): Delete files listed in
+	$(INCLUDES_FOR_INSTALL), instead of $(INCLUDES).
+	From Thomas Treichl <Thomas.Treichl@gmx.net>.
+
+2007-02-27  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* file-ops.cc (file_ops::recursive_rmdir):
+	Close dir_entry object before calling rmdir.
+
+2007-02-26  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* Makefile.in: Use $(LN_S) instead of ln or ln -s.
+
+	* sparse-util.h (SparseCholPrint, SparseCholError):
+	Tag with OCTAVE_API.
+
+2007-02-18  David Bateman  <dbateman@free.fr>
+
+	* oct-rand.cc (do_old_initialization()): call setcgn(1) prior to
+	calling setall and reset to the current generator after.
+
+2007-02-16  John W. Eaton  <jwe@octave.org>
+
+	* oct-shlib.h (octave_shlib::relative): New data member.
+	(octave_shlib::mark_relative, octave_shlib::is_relative):
+	New functions.
+
+2007-02-16  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* lo-sysdep.cc (octave_popen2): New function to simulate popen2 on
+	windows platform.
+	* lo-sysdep.h (octave_popen2): Declare it.
+	* oct-syscalls.cc (octave_syscalls::popen2): New function.
+	* oct-syscalls.h (octave_syscalls::popen2): Declare it.
+
+2007-02-14  John W. Eaton  <jwe@octave.org>
+
+	* kpse.cc (expand_elt): Omit special treatment for //.
+
+2007-02-06  John W. Eaton  <jwe@octave.org>
+
+	* file-ops.cc (file_ops::canonicalize_file_name) [HAVE_REALPATH]:
+	Don't delete value returned from realpath.
+
+2007-02-05  Thomas Treichl  <Thomas.Treichl@gmx.net>
+
+	* file-ops.cc (file_ops::canonicalize_file_name):
+	Provide implementation if realpath function is available.
+
+2007-01-29  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* oct-fftw.h: Sprinkle with OCTAVE_API as needed.
+
+2007-01-17  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* lo-sysdep.cc (octave_chdir): Handle directory names like "C:" on
+	Windows systems.
+
+2007-01-16  John W. Eaton  <jwe@octave.org>
+
+	* dSparse.cc: Fix dgbtrf decl for --enable-64.
+	(SparseMatrix::bsolve): Fix call to dgbtrf for --enable-64
+
+	* oct-fftw.h (fftw_planner): Provide decl.
+
+2007-01-11  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* Makefile.in (LINK_DEPS): Include $(CAMD_LIBS) in the list.
+
+2007-01-10  John W. Eaton  <jwe@octave.org>
+
+	* oct-sparse.h: Use HAVE_CHOLMOD_CHOLMOD_H, not
+	HAVE_UMFPACK_CHOLMOD_H for case of "cholmod/cholmod.h".
+
+2007-01-08  David Bateman  <dbateman@free.fr>
+
+	* oct-sparse.h: Replace sparsesuite with suitesparse and
+	SPARSESUITE with SUITESPARSE to match upstream name.
+
+2007-01-05  David Bateman  <dbateman@free.fr>
+
+	* oct-fftw.cc: (octave_fftw_planner::method (void), 
+	octave_fftw_planner (FftwMethod)): New methods to interrogate and
+	set the FFTW wisdom method used.
+	(octave_fftw_planner::create_plan) Modify to allow different 
+	methods to be used.
+	(octave_fftw_planner): Move class definition from here.
+	* oct-fftw.h (octave_fftw_planner): To here. Add method methods
+	and FftwMethod enum.
+
+2007-01-03  David Bateman  <dbateman@free.fr>
+
+	* MSparse.cc (SPARSE_A2A2_OP, SPARSE_A2A2_FCN_1,
+	SPARSE_A2A2_FCN_1): Modify macros so that scalars stored as
+	sparse matrices are special cased.
+
+	* Sparse-op-defs.h: Include mx-ops.h to have access to mixed
+	matrix, sparse matrix operations.
+	(SPARSE_SMSM_BIN_OP_1, SPARSE_SMSM_BIN_OP_2, SPARSE_SMSM_BIN_OP_3,
+	SPARSE_SMSM_CMP_OP, SPARSE_SMSM_BOOL_OP, SPARSE_MSM_BIN_OP_1,
+	SPARSE_MSM_BIN_OP_2, SPARSE_MSM_CMP_OP, SPARSE_MSM_BOOL_OP,
+	SPARSE_SMM_BIN_OP_1, SPARSE_SMM_BIN_OP_2, SPARSE_SMM_CMP_OP, 
+	SPARSE_SMM_BOOL_OP, SPARSE_SPARSE_MUL, SPARSE_FULL_MUL, 
+	FULL_SPARSE_MUL): Modify macros so that scalars stored as
+	sparse matrices are special cased.
+
+2006-12-22  David Bateman  <dbateman@free.fr>
+
+	* boolSparse.cc (SparseBoolMatrix::operator !): Fix off-by-one error.
+
+2006-12-22  John W. Eaton  <jwe@octave.org>
+
+	* dim-vector.h (dim_vector::dim_vector): Always start with at
+	least 2 dimensions.
+	(dim_vector::resize): Don't allow resizing to fewer than 2 dimensions.
+
+2006-12-06  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* lo-sysdep.cc (opendir): Avoid passing \\* to FindFirstFile.
+
+	* file-ops.cc (ops::canonicalize_file_name): Provide partial
+	implementation for Windows.
+
+2006-12-06  David Bateman  <dbateman@free.fr>
+
+	* dSparse.cc (SparseMatrix::is_symmetric): Faster implementation.
+	* CSparse.cc (SparseComplexMatrix::is_symmetric): Ditto.
+
+	* dMatrrix.cc (finverse): Old inverse method renamed inverse.
+        (tinverse): New method for triangular matrices.
+        (inverse): New function with matrix type probing.
+        * dMatrix.h (finverse, tinverse, inverse): New and modified
+        declarations.
+        * CMatrix.cc: Ditto.
+        * CMatrix.h: Ditto.
+
+2006-12-06  John W. Eaton  <jwe@octave.org>
+
+	* strptime.c (day_of_the_week): Use code from current glibc sources.
+
+2006-12-05  John W. Eaton  <jwe@octave.org>
+
+	* lo-utils.cc (octave_read_double): If we see '+' or '-' but not
+	followed by 'I' or 'i', try reading number after putting
+	characters back on input stream.
+
+2006-12-05  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* randpoisson.c (oct_fill_randp): For lambda > 1e8, upper limit of
+	loop is n, not L.
+
+2006-11-30  John W. Eaton  <jwe@octave.org>
+
+	* lo-utils.cc (octave_read_double, read_inf_nan_na):
+	Also recognize [+-][Ii]nf.
+
+2006-11-28  David Bateman  <dbateman@free.fr>
+
+	* oct-sparse.h: Allow sparse headers to also be in a sparsesuite
+	sub-directory.
+
+        * dSparse.cc (SparseMatrix::inverse): Transpose the matrix type as
+	well when calling tinverse for lower triangular matrices.
+        * CSparse.cc (SparseComplexMatrix::inverse):
+        Ditto.
+					
+2006-11-21  John W. Eaton  <jwe@octave.org>
+
+	* oct-env.cc (do_absolute_pathname): Undo previous change.
+
+2006-11-20  John W. Eaton  <jwe@octave.org>
+
+	* oct-env.cc (octave_env::do_absolute_pathname): Also return true
+	for ".", and names beginning with "./" or "../".
+
+2006-11-14  Luis F. Ortiz  <lortiz@interactivesupercomputing.com>
+
+	* CMatrix.cc, dMatrix.cc: New tests.
+
+2006-11-13  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* Array-d.cc, dDiagMatrix.h: Sprinkle with OCTAVE_API as needed.
+
+2006-11-11  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in ($(OPTS_INC), mx-ops.h):
+	Use $(simple-move-if-change-rule) here.
+
+2006-11-09  David Bateman  <dbateman@free.fr>
+
+	* sparse-base-chol.cc (sparse_base_chol_rep::Q): Cast perms(i) to
+	octave_idx_type, not int.
+
+2006-11-08  John W. Eaton  <jwe@octave.org>
+
+	* dir-ops.cc (dir_entry::read): Avoid rewinddir.
+
+2006-11-06  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assignN): Exit early if invalid indices are found.
+
+2006-11-03  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* strftime.c [HAVE_TZNAME]: Tag tzname with OCTAVE_IMPORT.
+
+2006-11-03  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (DLL_CXXDEFS): Rename from XTRA_CXXDEFS.
+	(DLL_CDEFS): Rename from XTRA_CDEFS.
+	Substitute OCTAVE_DLL_DEFS, not XTRA_OCTAVE_DEFS.
+
+2006-10-28  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* oct-shlib.cc: Undefine min and max after including windows.h.
+	* oct-syscalls.cc (syscalls::pipe (int *)): Avoid infinite recursion.
+	* lo-sysdep.h: Move opendir, readdir, etc. decls here from
+	lo-sysdep.cc.
+
+2006-10-27  John W. Eaton  <jwe@octave.org>
+
+	* oct-time.cc [! HAVE_STRFTIME]: Declare strftime.
+
+2006-10-26  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* mx-op-defs.h (NDS_CMP_OP1, NDS_CMP_OPS1, NDS_CMP_OP2,
+	NDS_CMP_OPS2): New macros.
+
+2006-10-26  John W. Eaton  <jwe@octave.org>
+
+	* mx-ops (core-type): New field for integer types.
+	* mk-ops.awk: Handle core-type for integer comparison ops.
+
+	* lo-cutils.c (octave_strcasecmp, octave-strncasecmp):
+	Move here from src/cutils.c.
+	* lo-utils.h: Provide decls.
+	* strcasecmp.c: Move here from src/strcasecmp.c.
+	* strncase.c: Move here from src/strncase.c.
+	* Makefile.in (LIBOCTAVE_C_SOURCES): Add them to the list.
+
+2006-10-26  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* kpse.cc [! MSVC]: Don't include win32lib.h.
+
+	* Array-C.cc, Array-b.cc, Array-ch.cc, Array-i.cc, Array-util.h,
+	Array.h, CColVector.h, CMatrix.h, CNDArray.h, CRowVector.h,
+	CSparse.h, CmplxAEPBAL.h, CmplxCHOL.h, CmplxDET.h, CmplxHESS.h,
+	CmplxLU.h, CmplxQR.h, CmplxQRP.h, CmplxSCHUR.h, CmplxSVD.h,
+	CollocWt.h, DAE.h, DASPK.h, DASRT.h, DASSL.h, EIG.h, LSODE.h,
+	MArray-C.cc, MArray-defs.h, MSparse-C.cc, MSparse-d.cc,
+	MSparse-defs.h, MatrixType.h, NLEqn.h, Quad.h, Range.h,
+	Sparse-op-defs.h, Sparse.h, SparseCmplxCHOL.h, SparseCmplxLU.h,
+	SparseCmplxQR.h, SparseQR.h, SparsedbleCHOL.h, SparsedbleLU.h,
+	boolMatrix.h, boolNDArray.h, boolSparse.h, chMatrix.h,
+	chNDArray.h, cmd-edit.h, cmd-hist.h, dColVector.h, dDiagMatrix.h,
+	dMatrix.h, dNDArray.h, dRowVector.h, dSparse.h, data-conv.h,
+	dbleAEPBAL.h, dbleCHOL.h, dbleDET.h, dbleHESS.h, dbleLU.h,
+	dbleQR.h, dbleQRP.h, dbleSCHUR.h, dbleSVD.h, dir-ops.h,
+	file-ops.h, file-stat.h, glob-match.h, idx-vector.h,
+	int16NDArray.cc, int32NDArray.cc, int64NDArray.cc, int8NDArray.cc,
+	lo-cutils.c, lo-ieee.h, lo-mappers.h, lo-specfun.h, lo-utils.h,
+	mach-info.h, mx-op-defs.h, oct-alloc.h, oct-env.h, oct-group.h,
+	oct-inttypes.cc, oct-inttypes.h, oct-passwd.h, oct-rand.h,
+	oct-shlib.h, oct-spparms.h, oct-syscalls.h, oct-time.h,
+	oct-uname.h, pathsearch.h, prog-args.h, so-array.h, str-vec.h,
+	uint16NDArray.cc, uint32NDArray.cc, uint64NDArray.cc,
+	uint8NDArray.cc: Sprinkle with OCTAVE_API as needed.
+
+2006-10-26  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.cc (INSTANTIATE_INTTYPE_BIN_OP): Provide explicit
+	type qualification for OP.
+
+2006-10-26  David Bateman  <dbateman@free.fr>
+
+	* Sparse.cc (Sparse<T>::resize_no_fill (octave_idx_type,
+	octave_idx_type)): Be more careful with the size of the input
+	matrix, and therefore don't create or read non existent data.
+
+2006-10-25  John W. Eaton  <jwe@octave.org>
+
+	* Sparse.cc (assign): Clear lhs index after error.
+
+2006-10-25  David Bateman  <dbateman@free.fr>
+
+	* Sparse.cc (assign (Sparse<LT>&, const Sparse<RT>&)):
+	Fix previous patch so it works.
+
+2006-10-25  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* glob-match.h (glob_match::glob_match (const std::string&,
+	unsigned int)): Delete initializer for first arg.
+
+	* lo-sysdep.cc (opendir, readdir, rewinddir, closedir):
+	New functions.
+
+	* Makefile.in (XTRA_CDEFS, XTRA_CXXDEFS): Substitute here.
+
+	* oct-env.cc (octave_env::do_get_home_directory) [_MSC_VER]: Use
+	same code as __MINGW32__.
+	* syswait.h [_MSC_VER]: Define HAVE_WAITPID, WAITPID, and WNOHANG
+	the same as for __MINGW32__.
+
+	* randpoisson.c: Undefine INFINITE before redefining.
+
+2006-10-24  David Bateman  <dbateman@free.fr>
+
+	* Sparse.cc (assign (Sparse<LT>&, const Sparse<RT>&)): Resize the
+	lhs at the point we know the assignment can succeed if the lhs is
+	empty.
+
+2006-10-23  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assign2): Don't require vector assignments to be oriented.
+
+2006-10-17  John W. Eaton  <jwe@octave.org>
+
+	* lo-cieee.c: If isnan is not available but _isnan is, then define
+	isnan to be _isnan, and define HAVE_ISNAN.  Likewise for _finite
+	and _copysign.
+
+2006-10-17  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* oct-syscalls.cc (syscalls::waitpid): Always declare and define retval.
+
+	* CMatrix.cc (ComplexMatrix::solve): Avoid infinite recursion. 
+	* CSparse.cc (SparseComplexMatrix::insert): Likewise.
+
+	* oct-types.h.in: Include limits.h, for CHAR_BIT.
+
+2006-10-13  Michael Goffioul  <michael.goffioul@swing.be>
+
+	* Makefile.in: Adapt rules to use $(LIBPRE).
+
+2006-10-03  David Bateman  <dbateman@free.fr>
+
+	* MatrixType.cc (MatrixType::MatrixType): Avoid crash if np == 0
+	or p == 0.
+
+2006-10-02  John W. Eaton  <jwe@octave.org>
+
+	* dbleDET.cc (DET::initialize2): Ensure arg to log10 is double.
+	* CmplxDET.cc (ComplexDET::initialize2): Likewise.
+
+2006-09-22  David Bateman  <dbateman@free.fr>
+
+	* MatrixType.h (MatrixType::MatrixType(const SparseComplexMatrix&)): 
+	Remove spurious warning. 
+
+2006-09-15  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (Array<T>::index (Array<idx_vector>&, int, const T&) const): 
+	Handle resizing.
+
+	* intNDArray.h (intNDArray<T>:elt_type): New typedef.
+
+2006-09-11  John W. Eaton  <jwe@octave.org>
+
+	* dMatrix.cc (operator * (const Matrix&, const Matrix&))):
+	Handle M*v and rv*cv special cases. 
+	* CMatrix.cc (operator * (const ComplexMatrix&, const
+	ComplexMatrix&))): Likewise.
+	From Luis F. Ortiz <lortiz@interactivesupercomputing.com>.
+
+	* dRowVector.cc (operator * (const RowVector&, const
+	ColumnVector&)): Call xddot here instead of using a Fortran
+	function directly.
+	* CRowVector.cc (operator * (const ComplexRowVector&, const
+	ComplexColumnVector&)): Call xzdotu here.
+
+2006-09-05  John W. Eaton  <jwe@octave.org>
+
+	* chNDArray.cc (charNDArray::any, charNDArray::all): Compare
+	elements to '\0', not ' '.
+
+2006-08-25  John W. Eaton  <jwe@octave.org>
+
+	* mx-inlines.cc (MX_ND_REDUCTION): Special case for 0x0 arrays.
+
+2006-08-23  John W. Eaton  <jwe@octave.org>
+
+	* dMatrix.cc, dMatrix.h (Matrix::save_ascii): Delete function and decl.
+	* CMatrix.cc, CMatrix.h (ComplexMatrix::save_ascii): Likewise.
+
+2006-08-22  John W. Eaton  <jwe@octave.org>
+
+	* CMatrix.cc (ComplexMatrix::save_ascii): New function.
+	* dMatrix.cc (Matrix::save_ascii): New function.
+
+	* mx-inlines.cc (MX_ND_CUMULATIVE_OP): Correctly detect empty arrays.
+	If array is empty, return value is same size as array.
+	(MX_ND_REDUCTION): Correctly detect empty arrays.
+	If array is empty, produce correctly sized return value.
+
+2006-08-18  John W. Eaton  <jwe@octave.org>
+
+	* dMatrix.cc (Matrix::any_element_not_one_or_zero): New function.
+	* dMatrix.h: Provide decl.
+	* dNDArray.cc (NDArray::any_element_not_one_or_zero): New function.
+	* dNDArray.h: Provide decl.
+	* intNDArray.cc (intNDArray<T>::any_element_not_one_or_zero):
+	New function.
+	* intNDArray.h: Provide decl.
+
+	* Array.cc (Array<T>::permute): Only rearrange values if array is
+	not empty.
+
+2006-07-26  John W. Eaton  <jwe@octave.org>
+
+	* dbleDET.cc (DET::initialize10, DET::value_will_underflow,
+	DET::value_will_overflow): Use xlog2 instead of log2.
+	(DET::initialize2, DET::initialize10): Use xround instead of round.
+	(DET::initialize2, DET::value): Use xexp2 instead of exp2.
+	* CmplxDET.cc (ComplexDET::initialize10,
+	ComplexDET::value_will_underflow,
+	ComplexDET::value_will_overflow): Use xlog2 instead of log2.
+	(ComplexDET::initialize2, ComplexDET::initialize10):
+	Use xround instead of round.
+	(ComplexDET::initialize2, ComplexDET::value):
+	Use xexp2 instead of exp2.
+
+	* lo-mappers.cc (M_LOG10E): Delete unused macro.
+	(xlog2, xexp2): New functions.
+	* lo-mappers.h: Provide decls.
+
+2006-07-22  John W. Eaton  <jwe@octave.org>
+
+	* Sparse.h (Sparse<T>::mex_get_data, Sparse<T>::mex_get_ir,
+	Sparse<T>::mex_get_jc): New functions.
+
+2006-07-21  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (octave_int<T>::mex_get_data): New function.
+	* Array.h (Array<T>::mex_get_data): New function.
+
+2006-07-19  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (octave_int::operator bool (void)): New function.
+
+2006-07-16  John W. Eaton  <jwe@octave.org>
+
+	* oct-spparms.h, oct-spparms.cc (class octave_sparse_params):
+	Rename from SparseParams.  Use same implementation method as other
+	singleton classes in Octave.  Change all uses of
+	Voctave_sparse_controls to use static functions from
+	octave_sparse_params class instead.
+
+	* oct-spparms.h, oct-spparms.cc (SparseParams::set_key,
+	SparseParams::get_key): Pass std::string arg by const reference,
+	not const value.
+
+2006-07-15  John W. Eaton  <jwe@octave.org>
+
+	* data-conv.cc: Instantiante swap_bytes templates here.
+
+	* MatrixType.cc (MatrixType::MatrixType):
+	Use complete initializer lists in constructors.
+
+2006-07-06  John W. Eaton  <jwe@octave.org>
+
+	* str-vec.cc (string_vector::string_vector (std::list<std::string>&)):
+	New constructor.
+	* str-vec.h: Provide decl.
+
+2006-07-01  David Bateman  <dbateman@free.fr>
+
+	* dSparse.cc (tinverse): Check for rows with no elements and zero
+	elements on the diagonal. Allow both Upper and Lower triangular
+	matrices to be treated.
+	* CSparse.cc (tinverse): ditto.
+	* Sparse-op-defs.h (SPARSE_SPARSE_MUL): Take into account 64-bit
+	constant assignment.
+	
+2006-06-30  John W. Eaton  <jwe@octave.org>
+
+	* lo-sysdep.cc (octave_chdir): Perform tilde expansion here.
+	* cmd-edit.cc (editor::read_init_file): Ditto.
+	* dir-ops.cc (dir_entry::open): Ditto.
+	* file-stat.cc (stat::update_internal): Ditto.
+	* cmd-hist.cc (command_history::set_file): Ditto.
+
+	* data-conv.cc (data_conv::string_to_data_type):
+	Correctly handle leading "*".
+
+2006-06-29  Atsushi Kajita  <a-kajita@mizar.freemail.ne.jp>
+
+	* Sparse.cc (Sparse<T>::SparseRep::elem): Avoid out of bounds
+	array access.
+	
+2006-06-27  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in: Finish renaming of OBJECTS -> LIBOCTAVE_OBJECTS.
+
+2006-06-21  John W. Eaton  <jwe@octave.org>
+
+	* oct-shlib.cc (octave_dlopen_shlib::close,
+	octave_shl_load_shlib::close, octave_w32_shlib::close):
+	Skip do_close_hook if cl_hook is 0.
+
+2006-06-16  John W. Eaton  <jwe@octave.org>
+
+	* oct-sort.h: Don't include config.h, lo-mappers.h, or quit.h.
+	* randmtzig.h: Don't inlcude config.h.
+
+2006-05-31  David Bateman  <dbateman@free.fr>
+
+	* Array.cc (assignN): Maybe reshape LHS before doing assignment.
+
+2006-05-23  John W. Eaton  <jwe@octave.org>
+
+	* oct-types.h.in: Include stdint.h or inttypes.h for integer
+	typedefs, or define them if those files are not available.
+	* oct-inttypes.h (octave_int8_t, octave_int16_t, octave_int32_t,
+	octave_int64_t, octave_uint8_t, octave_uint16_t, octave_uint32_t,
+	octave_uint64_t): Delete typedefs.  Replace all uses of these
+	types with int8_t, int16_t, etc.
+	* data-conv.h (TWO_BYTE_INT, FOUR_BYTE_INT, EIGHT_BYTE_INT):
+	Delete definitions.  Replace all uses of these macros with int8_t,
+	int16_t, etc.
+	* randmtzig.h: Delete integer typedefs.
+
+2006-05-18  John W. Eaton  <jwe@octave.org>
+
+	* EIG.cc (EIG::init): Trap Inf and NaN values here.
+	From Keith Goodman <kwgoodman@gmail.com>.
+
+2006-05-08  David Bateman  <dbateman@free.fr>
+
+	* Sparse-op-defs.h (SPARSE_SPARSE_MUL): fix bug in previous
+	modification.
+
+2006-05-09  David Bateman  <dbateman@free.fr>
+
+	* sparse-dmsolve.cc: Remove reference to ov-re-sparse.h,
+	ov-cx-sparse. and error_state.
+	* SparseQR.cc, SparseCmplxQR.cc (qrsolve): Return info = -1 on error.
+	
+2006-05-08  David Bateman  <dbateman@free.fr>
+
+	* Sparse-op-defs.h (SPARSE_SPARSE_MUL): Set column pointers in
+	first pass and use to determine which algorithm to use on a
+	column-by-column basis.
+
+2006-05-04  David Bateman  <dbateman@free.fr>
+
+	* SparseQR.cc, SparseQR.h, SparseCmplxQR.cc, SparseCmplxQR.h,
+	sparse-dmsolve.cc : Allow compilation with versions v2.0.0 of
+	CXSparse or later
+
+2006-05-03  David Bateman  <dbateman@free.fr>
+
+	* CMatrix.cc (zpotrf, zpocon, zpotrs, ztrcon, ztrtrs):
+	External declaration of lapack triangular and Cholesky codes.
+	(ComplexMatrix::utsolve, ComplexMatrix::ltsolve, 
+	ComplexMatrix::fsolve): New private solver codes for
+        upper, lower and LU/Cholesky solvers.
+	(ComplexMatrix::solve): New versions for cached matrix
+	type. Adapt old versions to call new versions
+	* CMatrix.h (utsolve, ltsolve, fsolve): Declaration of
+	new solvers.
+	(solve): New versions for cached matrix type.
+	* dMatrix.cc (dpotrf, dpocon, dpotrs, dtrcon, dtrtrs):
+	External declaration of lapack triangular and Cholesky codes.
+	(Matrix::utsolve, Matrix::ltsolve, 
+	Matrix::fsolve): New private solver codes for
+        upper, lower and LU/Cholesky solvers.
+	(Matrix::solve): New versions for cached matrix
+	type. Adapt old versions to call new versions
+	* dMatrix.h (utsolve, ltsolve, fsolve): Declaration of
+	new solvers.
+	(solve): New versions for cached matrix type.
+	* CSparse.cc: Replace all uses of SparseType with MatrixType.
+	* CSparse.h: ditto.
+	* dSparse.cc: ditto.
+	* dSparse.h: ditto.
+	* SparseCmplxCHOL.cc: ditto.
+	* SparsedbleCHOL.cc: ditto.
+	* sparse-dmsolve.cc: ditto.
+	* SparseType.cc, SparseType.h: delete.
+	* MatrixType.cc: New file for class to cache matrix type, based on
+	old SparseType class but caching matrix and sparse types.
+	* MatrixType.h: ditto.
+	* Makefile.in (MATRIX_INC, MATRIX_SRC): Add MatrixType.h and
+	MatrixType.cc respectively. Delete SparseType.h and SparseType.cc
+	respectively.
+	* mx-base.h: Include MatrixTye.h as header file.
+	
+2006-05-01  John W. Eaton  <jwe@octave.org>
+
+	* oct-shlib.h (octave_shlib::octave_shlib, octave_shlib::open):
+	Delete WARN_FUTURE arg.  Change all uses.
+	* oct-shlib.cc (octave_base_shlib::stamp_time): Delete arg.
+	Change all uses.  Use current_liboctave_warning_with_id_handler.
+	(octave_base_shlib::open): Delete arg.  Change all derived classes
+	and uses.
+
+2006-04-29  John W. Eaton  <jwe@octave.org>
+
+	* Array-flags.cc, Array-flags.h: Delete.
+	* Makefile.in (MATRIX_SRC): Remove Array-flags.cc from the list.
+	(MATRIX_INC): Remove Array-flags.h from the list.
+
+	* idx-vector.cc (IDX_VEC_REP::freeze): Delete warn_resize arg.
+	Use current_liboctave_warning_with_id_handler
+	with warning ID Octave:resize-on-range-error.
+	* idx-vector.h: Fix decl.
+	* Array.cc, Sparse.cc: Change all callers.
+
+	* Array.cc (Array<T>::maybe_delete_elements, Array<T>::index2,
+	assign2, assignN): Use current_liboctave_warning_with_id_handler
+	with warning ID Octave:fortran-indexing instead of
+	liboctave_wfi_flag.
+	* Sparse.cc (assign, Sparse<T>::index): Likewise.
+
+2006-04-26  John W. Eaton  <jwe@octave.org>
+
+	* pathsearch.cc (dir_path::path_sep_char, dir_path::path_sep_str):
+	New static data.
+	* pathsearch.h: Provide decls.
+	(dir_path::is_path_sep): New function.
+
+2006-04-18  John W. Eaton  <jwe@octave.org>
+
+	* randmtzig.c (randmt, randi53, randi54, randi64, randu32, randu53):
+	Omit inline from decl.
+
+	* Sparse.cc (Sparse<T>::index): Use std::vector<bool> to avoid
+	local array with variable dimension.
+
+2006-04-16  John W. Eaton  <jwe@octave.org>
+
+	* lo-sstream.h: Delete.
+	* Makefile.in (INCLUDES): Remove it from the list.
+
+	* dim-vector.h (dim_vector::str): Use std::ostringstream directly.
+	* Sparse.cc (Sparse::range_error): Likewise.
+	* DASSL.cc (DASSL::error_message): Likewise.
+	* LSODE.cc (LSODE::error_message): Likewise.
+	* DASRT.cc (DASRT::error_message): Likewise.
+	* DASPK.cc (DASPK::error_message): Likewise.
+	* Array.cc (Array::range_error): Likewise.
+
+	* kpse.cc (kpse_hash): Rename from hash.
+	(hash_lookup): Call kpse_hash instead of hash.
+
+	* SparseType.cc (SparseType::SparseType): Use std::vector<bool>
+	to avoid local array with variable dimension.
+
+2006-04-13  David Bateman  <dbateman@free.fr>
+
+        * Sparse.cc (assign (Sparse<LT>&, const Sparse<RT>&)):
+	Optimize assignment.
+
+2006-04-13  John W. Eaton  <jwe@octave.org>
+
+        * Sparse.cc (assign (Sparse<LT>&, const Sparse<RT>&)):
+	Eliminate unnecessary casts.
+	* SparsedbleLU.cc (SparseLU::SparseLU): Likewise.
+
+	* kpse.cc (fopen): Use reinterpret_cast instead of C-style cast.
+	(log_search, dir_links): Use static_cast instead of C-style cast.
+
+	* prog-args.cc (args::getopt): Use reinterpret_cast instead of X_CAST.
+	* oct-alloc.cc (allocator::grow): Likewise.
+	* CSparse.cc (SparseComplexMatrix::determinant,
+	SparseComplexMatrix::factorize, SparseComplexMatrix::fsolve):
+	Likewise.
+	* SparseCmplxLU.cc (SparseComplexLU::SparseComplexLU): Likewise.
+
+	* oct-sort.cc (roundupsize, octave_sort<T>::merge_getmem):
+	Use static_cast instead of C-style cast.
+	* CSparse.cc (SparseComplexMatrix::fsolve): Likewise.
+	* dSparse.cc (SparseMatrix::fsolve): Likewise.
+
+	* data-conv.cc (LS_DO_WRITE): Use static_cast for value conversion.
+	Use OCTAVE_LOCAL_BUFFER instead of new/delete.
+	(LS_DO_READ): Allocate local buffer to avoid pointer tricks.
+	(write_doubles, read_doubles, LS_DO_WRITE, LS_DO_READ):
+	Use reinterpret_cast instead of X_CAST.
+
+	* DiagArray2.h (DiagArray2::Proxy::operator&): No need to cast
+	return value here.
+
+2006-04-12  Rafael Laboissiere  <rafael@debian.org>
+
+	* ArrayN.h (ArrayN::ArrayN): Qualify fill with Array<T> base class.
+	* DiagArray2.h (DiagArray2::DiagArray2): Likewise.
+
+2006-04-03  David Bateman  <dbateman@free.fr>
+
+	* Sparse.cc (Sparse<T>::resize): Use xcidx rather than cdix, etc
+	to avoid copy of original matrix.
+
+	* Makefile.in (INCLUDES): Add randgamma.h, randpoisson.h and
+        randmtzig.h to the list.
+	(LIBOCTAVE_C_SOURCES): Add randgamma.c, randpoisson.c and
+        randmtzig.c to the list.
+	* oct-rand.cc (do_old_initialization): Rename from do_initialization.
+	(use_old_generators): New variable.
+	(old_initialized): Rename from initialized.
+	(new_initialized): New variable.
+	(oct_init_by_entropy): New function.
+	(maybe_initialize): Initialize new or old generator depending on
+	value of use_old_generators.
+	(octave_rand::state): New functions.
+	(octave_rand::distribution): Add gamma, exponential and poisson
+	distributions.
+	(octave_rand::exponential_distribution,
+	octave_rand::poisson_distribution,
+	octave_rand::gamma_distribution): New methods to select
+        exponential, poisson or gamma distribution.
+	(octave_rand::scalar, octave_rand::matrix, octave_rand::nd_array,
+	octave_rand::vector): Add new distributions.
+	* oct-rand.h: Provide decls for new functions.
+	(octave_rand::matrix, octave_rand::scalar, octave_rand::
+	(octave_rand::scalar, octave_rand::matrix, octave_rand::nd_array,
+	octave_rand::vector): New arg A, for gamma and poisson distributions.
+	* randpoisson.c, randpoisson.h, randgamma.c, randmtzig.c,
+        randmtzig.h: New files.
+
+2006-03-24  John W. Eaton  <jwe@octave.org>
+
+	* dSparse.cc (SparseMatrix::bsolve): Integer work vector is
+	Array<octave_idx_type>, so fortran_vec returns pointer to
+	octave_idx_type, not pointer to int.
+
+	* CMatrix.cc, CMatrix.h (ComplexMatrix::row (char*),
+	ComplexMatrix::column (char*)): Delete.
+	* dMatrix.cc, dMatrix.h (Matrix::row (char*),
+	Matrix::column (char*)): Delete.
+
+2006-03-21  David Bateman  <dbateman@free.fr>
+
+	* SparseQR.h: Publish externally used friends.
+	* SparseCmplxQR.h: ditto.
+
+2006-03-21  John W. Eaton  <jwe@octave.org>
+
+	* lo-specfun.cc (betainc): Use F77_XFCN instead of F77_FUNC for
+	call to xdbetai.
+
+2006-03-21  David Bateman  <dbateman@free.fr>
+
+	* lo-specfun.cc (xlgamma, xgamma): Trap special values.
+	(xlgamma): Use F77_XFCN instead of F77_FUNC for call to dlgams.
+
+	* dSparse.cc (solve): Add argument singular_fallback, to allow
+	fallback to QR solvers to be optional.
+	* CSparse.cc (solve): Ditto.
+	* dSparse.h (solve): update declaration for new argument.
+	* CSparse.h (solve): Ditto.
+	* sparse-dmsolve.cc (dmsolve): Use singular_fallback argument
+	to bypass QR solvers when solving the well determined part of
+	the problem.
+
+2006-03-17  John W. Eaton  <jwe@octave.org>
+
+	* str-vec.cc (vector::list_in_columns): New optional arg, width.
+
+2006-03-16  David Bateman  <dbateman@free.fr>
+
+	* CSparse.cc: Change use of nzmax to nnz to allow automatic
+	reduction of matrix size, except for a couple of cases where nzmax
+	is needed.
+	(zpbcon): Correct declaration of lapack zpbcon function.
+	(dsolve, utsolve, ltsolve, trisolve, bsolve, factorize, fsolve): Add
+	an argument to allow the calculation of condition number to be
+	optional.
+	(bsolve): Add code for the calculation of the condition number
+	using zpbcon and zgbcon.
+	(dsolve): Bug fix for rectangular matrices with sparse RHS.
+	(utsolve, ltsolve, trisolve, bsolve, fsolve): Mark matrix type as
+	singular if singularity is detected.
+	(solve): Use optional argument to disable calculation of
+	condition number for all but fsolve, for speed. Add code to 
+	allow rectnagular matrices or matrices identified as singular
+	to be treated.
+	(lssolve): delete.
+	(operator *): Don't recast real matrices as complex, but
+	rather use the macro directly on the real data.
+	* dSparse.cc: ditto.
+	* CSparse.h (dsolve, utsolve, ltsolve, trisolve, bsolve,
+	fsolve, factorize): Update declaration for new argument to
+	calculate the condition number.
+	(lssolve): delete.
+	* dSparse.h: ditto.
+	* Msparse.h: Change use of nxmax to nnz to allow automatic
+	reduction of matrix size, except for a couple of cases where
+	nzmax is needed.
+	* Sparse.cc: Change use of nxmax to nnz to allow automatic
+	reduction of matrix size, except for a couple of cases where
+	nzmax is needed.
+	(Sparse<T>::index (idx_vector&, idx_vector&, int) const):
+	Special case strict permutations for speed.
+	* Sparse-op-defs.h: Change use of nxmax to nnz to allow automatic
+	reduction of matrix size, except for a couple of cases where
+	nzmax is needed.
+	(SPARSE_SPARSE_MUL, SPARSE_FULL_MUL, FULL_SPARSE_MUL): Update
+	macros to allow mixed complex/real arguments.
+	* SparseCmplxQR.cc (OCTAVE_C99_ZERO): New macro for C99 zero
+        value.
+	(qrsolve): Use it to zero temporary buffers used bt CXSPARSE.
+	* SparseType.cc (SparseType::SparseType ()): Correct detection
+	of permutated triangular matrices to avoid seg-faults. Disable
+	detection of underdetermined lower and over-determined upper
+	matrix due to problems with non minimum norm solutions.
+	* sparse-dmsolve.cc: New file for Dulmage-Mendelsohn solver.
+	* Makefile.in: add sparse-dmsolve.cc to targets.
+
+2006-03-15  William Poetra Yoga Hadisoeseno  <williampoetra@gmail.com>
+
+	* oct-time.cc (octave_strptime::init): Return useful character count.
+
+2006-03-08  David Bateman  <dbateman@free.fr>
+
+	* SparseCmplxQR.cc: Updates for new upstream CXSPARSE release. Fix for
+	g++ 4.x stl_vector.h issue with C99 double _Complex type.
+	* SparseCmplxQR.h:  Updates for new upstream CXSPARSE release.
+	* SparseQR.cc: ditto.
+	* SparseQR.h: ditto.
+	* oct-sparse.h: ditto.
+	* sparse-base-chol.cc (sparse_base_chol<>::sparse_base_chol_rep::init):
+	Declare info variable as volatile.
+
+	* Sparse.cc (Sparse<T>::transpose (void) const): Accelerate algorithm.
+	* CSparse.cc (SparseComplexMatrix::transpose (void) const): ditto.
+	
+2006-03-01  John W. Eaton  <jwe@octave.org>
+
+	* CMatrix.cc (ComplexMatrix::determinant):
+	Scale result by factors of 2, not 10.
+	* dMatrix.cc (Matrix::determinant): Likewise.
+
+	* dbleDET.h (DET::DET): Use initializer list.
+	(DET::coefficient2, DET::coefficient10, DET::exponent2,
+	DET::exponent10): New functions.
+	(DET::det): Delete.
+	(DET::c2, DET::c10, DET::e2, DET::e10, DET::base2): New data members.
+	Store value internally with double and int instead of 2-element
+	double vector.
+	(DET::initialize2, DET::initialize10): Provide decls.
+	* dbleDET.cc (DET::value_will_overflow,	DET::value_will_underflow): 
+	Return bool value, not int.
+	(DET::initialize2, DET::initialize10): New functions.
+
+	* CmplxDET.h (ComplexDET::ComplexDET): Use initializer list.
+	(ComplexDET::coefficient2, ComplexDET::coefficient10,
+	ComplexDET::exponent2, ComplexDET::exponent10): New functions.
+	(ComplexDET::det): Delete.
+	(ComplexDET::c2, ComplexDET::c10, ComplexDET::e2, ComplexDET::e10,
+	ComplexDET::base2): New data members.
+	Store value internally with Complex and int instead of 2-element
+	Complex vector.
+	(ComplexDET::initialize2, ComplexDET::initialize10): Provide decls.
+	* dbleComplexDET.cc (ComplexDET::value_will_overflow,
+	ComplexDET::value_will_underflow): Return bool value, not int.
+	(ComplexDET::initialize2, ComplexDET::initialize10): New functions.
+
+2006-02-24  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assignN): Clear index before reshaping.
+
+	* Array.h (Array<T>::operator =): Don't set idx to 0 if copying self.
+
+2006-02-20  David Bateman  <dbateman@free.fr>
+
+	* dSparse.cc (dsolve, utsolve, ltsolve): Remove restriction that 
+	matrix must be square in diagonal, permuted diagonal, triangular
+	and permuted triangular back/forward substitution code. Change
+	ambiguous use of no. rows and columns.
+	* CSParse.cc (dsolve, utsolve, ltsolve): ditto.
+	* SparseType.cc (SparseType::SparseType(const SparseMatrix&),
+	SparseType::SparseType(const SparseComplexMatrix&)): Recognize
+	rectangular diagonal, permuted diagonal, triangular and permuted
+	triangular matrices.
+	* Sparse.cc (Sparse<T>::Sparse (octave_idx_type, octave_idx_type, T)):
+	Treat case where third argument is zero.
+
+2006-02-15  John W. Eaton  <jwe@octave.org>
+
+	* kpse.cc: Do define ST_NLINK_TRICK for Cygwin systems.
+	(do_subdir) [ST_NLINK_TRICK]: Check links != 2 instead of links > 2. 
+
+	* getopt.c: Use __CYGWIN__ instead of __CYGWIN32__.
+
+2006-02-13  David Bateman  <dbateman@free.fr>
+
+	* Makefile.in (LINK_DEPS): Add missing dependencies on colamd,
+	ccolamd and cxsparse 
+
+2006-02-13  John W. Eaton  <jwe@octave.org>
+
+	* kpse.cc (kpse_path_iterator::next): Reverse order of tests in
+	while loop condition.
+	(kpse_path_iterator::operator =): Declare as private function but
+	don't define to prevent attempts to use assignment operator.
+	Don't define ST_NLINK_TRICK for Cygwin systems.
+
+2006-02-10  John W. Eaton  <jwe@octave.org>
+
+	* mx-inlines.cc (MX_ND_REDUCTION): Store in cummulative
+	product of all dimensions in CP_SZ.
+
+2006-02-09  John W. Eaton  <jwe@octave.org>
+
+	* mx-inlines.cc (MX_ND_CUMULATIVE_OP): Store in cummulative
+	product of all dimensions in CP_SZ.
+
+2006-02-09  David Bateman  <dbateman@free.fr>
+
+        * SparseQR.cc: new file for real sparse QR class.
+        * SparseQR.h: declaration.
+        * SparseCmplxQR.cc: new file for complex sparse QR class.
+        * SparseCmplxQR.h: declaration.
+        * dSparse.cc (dinverse,tinverse,inverse): Remove unused input args.
+        (factorize, fsolve): Enable code code lssolve.
+        (lssolve): disable unused args, write based in above sparse QR class.
+        * CSparse.cc (dinverse,tinverse,inverse): Remove unused input args.
+        (factorize, fsolve): Enable code code lssolve.
+        (lssolve): disable unused args, write based in above sparse QR class.
+        * oct-sparse.h: fix location of colamd, ccolamd and metis headers.
+        Include CXSparse headers.
+        * Makefile.in (MATRIX_INC): Include SparseQR.h and SparseCmplxQR.h.
+        (MATRIX_SRC): Include SparseQR.cc and SparseCmplxQR.cc.
+
+2006-02-08  John W. Eaton  <jwe@octave.org>
+
+	* Array-util.h (calc_permutated_idx): Delete.
+	* Array.cc (permute_vector): New data structure.
+	(permute_vector_compare): New function.
+	(Array<T>::permute): Rewrite to avoid calc_permutated_index for
+	improved performance.
+
+2006-02-04  David Bateman  <dbateman@free.fr>
+
+	* COLAMD: Remove all files, as now unused.
+
+2006-01-31  John W. Eaton  <jwe@octave.org>
+
+	* Sparse.h (Sparse<T>::nzmax): New function.
+	(Sparse<T>::nnz): Rename from nonzero.
+	Change all uses of old nnz function to be nzmax.  Change all uses
+	of nonzero to be nnz.
+	(Sparse<T>::nzmx): Rename from nnz (data member).  Change all uses.
+
+2006-01-21  David Bateman  <dbateman@free.fr>
+
+        * sparse-sort.cc (bool octave_sparse_sidxl_comp): 64-bit fix.
+        (bool octave_idx_vector_comp): New function.
+        (template class octave_sort<octave_idx_vector_sort *>): Instantiate
+        indexed idx_vector sorting function.
+        * sparse-sort.h (class octave_sparse_sort_idxl): 64-bit fix.
+        (class octave_idx_vector_sort): New class for indexed idx_vector
+        sorting.
+        (bool octave_idx_vector_comp): Declaration.
+        * Sparse.cc (int assign1(Sparse<LT>&, Sparse<RT>&)): Treat cases of
+        unordered LHS indexes in assignment using new octave_idx_vector_sort
+        class.
+        (int assign(Sparse<LT>&, Sparse<RT>&)): ditto.
+
+2006-01-30  John W. Eaton  <jwe@octave.org>
+
+	* so-array.h (streamoff_array::nnz): New funtion.
+	* boolNDArray.h (boolNDArray::nnz): New function.
+	* MArrayN.h (MArrayN<T>::nnz): New function.
+	* MArray.h (MArray<T>::nnz): New function.
+
+2006-01-04  David Bateman  <dbateman@free.fr>
+
+	* Spars-op-defs.h (SPARSE_SPARSE_MUL): Previous change resulted in
+	elements not being sorted in return matrix. Sort them, and make
+	solver select between two algorithms to further improve the 
+	performance.
+	* dSparse.cc: include oct-sort.h.
+	* CSparse.cc: ditto.
+	* sparse-sort.cc: Instantiate octave_sort<octave_idx_type>.
+	
+2005-12-28  David Bateman  <dbateman@free.fr>
+
+	* Sparse-op-defs.h (SPARSE_SPARSE_MUL): Improved algorithm that is
+	faster in all cases, and significantly so for low density or small 
+	order problems.
+
+2005-11-30  John W. Eaton  <jwe@octave.org>
+
+	* LSODE.cc (LSODE::do_integrate (double)): Resize iwork and rwork
+	before setting any values in either array.
+
+2005-11-29  John W. Eaton  <jwe@octave.org>
+
+	* oct-uname.h, oct-uname.cc: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+2005-11-11  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (Array<T>::indexN): Simplify.
+
+2005-11-09  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (octave_int::operator char (void) const):
+	New conversion op.
+
+2005-11-01  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (distclean): Also remove oct-types.h.
+	From Quentin Spencer <qspencer@ieee.org>.
+
+2005-10-31  David Bateman  <dbateman@free.fr>
+
+	* dSparse.cc, CSparse.cc: Use C++ true/false instead of
+	preprocessor defined TRUE/FALSE.
+
+2005-10-30  John W. Eaton  <jwe@octave.org>
+
+	* mx-inlines.cc (MX_ND_REDUCTION): Iterate in direction of DIM.
+	(MX_ND_CUMULATIVE_OP): Likewise.
+
+2005-10-29  John W. Eaton  <jwe@octave.org>
+
+	* mx-inlines.cc (MX_ND_REDUCTION): Avoid increment_index to speed
+	things up.  Simplify.
+
+	* Array.cc (Array<T>::indexN): Simplify.  Delete separate special
+	case for "vector_equivalent".
+
+	* Array-util.cc (vector_equivalent): Arg is now dim_vector.
+
+2005-10-28  John W. Eaton  <jwe@octave.org>
+
+	* oct-sparse.h: Fix typo in HAVE_UFSPARSE_UMFPACK_H.
+	From Quentin Spencer <qspencer@ieee.org>.
+
+	* sparse-base-chol.cc: Use C++ true/false instead of
+	preprocessor defined TRUE/FALSE.  Use 0 instead of NULL.
+
+2005-10-27  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assignN): Reshape to final size instead of resizing.
+
+2005-10-26  John W. Eaton  <jwe@octave.org>
+
+	* oct-sparse.h: New file.
+	* oct-sparse.h.in: Delete.
+
+2005-10-26  David Bateman  <dbateman@free.fr>
+
+	* sparse-base-chol.h: Include cholmod specific code in HAVE_CHOLMOD
+	* sparse-base-chol.cc: ditto.
+
+2005-10-26  John W. Eaton  <jwe@octave.org>
+
+	Changes for GCC 4.1, tip from Arno J. Klaassen
+	<arno@heho.snv.jussieu.fr>:
+
+	* dSparse.h (real (const SparseComplexMatrix&)): 
+	Publish externally used friend function.
+	(imag (const SparseComplexMatrix&)): Likewise.
+
+	* dColVector.h (real (const ComplexColumnVector&)):
+	Publish externally used friend function.
+	(imag (const ComplexColumnVector&)): Likewise.
+
+	* dNDArray.h (real (const ComplexNDArray&)):
+	Publish externally used friend function.
+	(imag (const ComplexNDArray&)): Likewise.
+
+	* dMatrix.h (operator * (const ComplexMatrix&)): 
+	Move decl outside class.  No need to be friend.
+	(real (const ComplexMatrix&)): Publish externally used friend function.
+	(imag (const ComplexMatrix&)): Likewise.
+
+	* CMatrix.h: (operator * (const ColumnVector&, const
+	ComplexRowVector&)): Move decl outside class.  No need to be friend.
+	(operator * (const ComplexColumnVector&, const RowVector&)): Likewise.
+	(operator * (const ComplexColumnVector&, const ComplexRowVector& b)):
+	Likewise.
+
+2005-10-23  David Bateman  <dbateman@free.fr>
+	
+	* Sparse-op-defs.h (SPARSE_SPARSE_MUL): Check whether trailing zero
+	elements need to be removed.
+	
+	* oct-sparse.h.in: Include metis headers and some macros for long/int
+	versions of cholmod.
+	
+	* CSparse.cc (tinverse): New private function for the inversion of
+	an upper triangular matrix.
+	(dinverse): ditto for diagonal matrices.
+	(inverse): Add SparseType as an argument. Implement matrix inverse
+	using tinverse and dinverse.
+	(fsolve): Use cholmod to implement Cholesky solver.
+	* CSparse.h (tinverse, dinverse): Declarations
+	(inverse): Alter declaration to include SparseType.
+
+	* dSparse.cc (tinverse, dinverse, inverse, fsolve): ditto.
+	* dSparse.h (tinverse, dinverse, inverse): ditto.
+
+	* SparseType.cc: Fix complex constructor for hermitian matrices.
+	
+	* sparse-util.cc: New file for sparse utility functions.
+	* sparse-util.h: New file with declarations of sparse utility 
+	functions.
+
+	* sparse-base-chol.cc: New file with sparse cholesky class based
+	on cholmod.
+	* sparse-base-chol.h: New file with declaration of sparse cholesky
+	class based on cholmod.
+
+	* SparseCmplxCHOL.cc: Instantiate sparse cholesky class for Complex.
+	* SparseCmplxCHOL.h: Declaration of sparse cholesky class.
+
+	* SparsedbleCHOL.cc: ditto.
+	* SparsedbleCHOL.h: ditto.
+
+	* Makefile.in (MATRIX_INC): Include sparse-base-chol.h.
+	(INCLUDES): Include sparse-util.h
+	(TEMPLATE_SRC): Include sparse-base-chol.cc
+	(MATRIX_SRC): Include SparseCmplxCHOL.cc and SparsedbleCHOL.cc
+	
+2005-10-12  John W. Eaton  <jwe@octave.org>
+
+	* oct-env.cc (octave_env::have_x11_display): New function.
+	* oct-env.h: Provide decl.
+
+2005-09-29  John W. Eaton  <jwe@octave.org>
+
+	* file-stat.h (file_stat::mode): New function.
+
+	* file-stat.cc (file_stat::is_blk, file_stat::is_chr,
+	file_stat::is_dir, file_stat::is_fifo, file_stat::is_lnk,
+	file_stat::is_reg, file_stat::is_sock): New static functions.
+	* file-stat.h: Provide decls.
+
+2005-09-28  John W. Eaton  <jwe@octave.org>
+
+	* file-ops.cc (file_ops::recursive_rmdir): New function.
+	* file-ops.h: Provide decl.
+
+2005-09-19  David Bateman  <dbateman@free.fr>
+
+	* oct-env.cc (octave_env::do_get_home_directory):
+	Also check HOMEDRIVE under mingw.
+
+	* Makefile.in (LINK_DEPS): Include UFsparse libraries.
+
+2005-09-16  John W. Eaton  <jwe@octave.org>
+
+	* oct-syscalls.cc: Include lo-utils.h here.
+	(octave_syscalls::waitpid): Call octave_waitpid here.
+
+	* lo-cutils.c (octave_waitpid): New function.
+	* lo-utils.h: Provide decl.  Include syswait.h here, not in
+	oct-syscalls.cc
+	
+
+	* syswait.h [__MINGW32__]: Define WAITPID here instead of defining
+	waitpid in src/sysdep.h.  Make this header C-compatible.
+
+	* oct-syscalls.cc (octave_syscalls::waitpid): New arg, status.
+	Change all uses.
+
+2005-09-15  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (MAKEDEPS_2): Omit unnecessary variable.
+
+	* oct-sparse.h.in: New file.
+	* Makefile.in (DISTFILES): Include it in the list.
+	(INCLUDES): Add oct-sparse.h to the list.
+
+2005-09-15  David Bateman  <dbateman@free.fr>
+
+	* dSparse.cc : Include oct-sparse.h for probed umfpack, colamd etc 
+	headers. Remove include of umfpack.h.
+	* CSparse.cc : ditto.
+	* SparsedbleLU.cc : ditto.
+	* SparseCmplxLU.cc : ditto.
+
+	* COLAMD : Remove colamd files from octave.
+	* COLAMD.files : delete.
+	* COLAMD.README : delete.
+	* Makefile.in: Remove COLAMD. Add LIBGLOB.
+	(LN_S): Change to DESTDIR before LN_S to avoid lack of symlinks 
+	under mingw.
+
+	* kpse.cc (ENV_SEP, ENV_SEP_STRING): Use SEPCHAR and SEPCHAR_STR
+	in definition.
+	* lo-cutils.c (octave_w32_library_search): Call GetProcAddress with
+	change of cast not allowed under g++ 3.x.
+	* lo-utils.h (octave_w32_library_search): Declaration.
+	* oct-env.cc (do_get_home_directory): Also check HOMEPATH under mingw.
+	* oct-shlib.cc (octave_w32_shlib::search): Use octave_w32_library_search.
+
+2005-09-07  John W. Eaton  <jwe@octave.org>
+
+	* cmd-edit.cc (command_editor::do_decode_prompt_string):  Update
+	based on current code in Bash.  Handle a few more escape
+	sequences.  Do a better job of decoding \W.
+
+2005-09-04  David Bateman  <dbateman@free.fr>
+
+	* COLAMD: Update version of colamd to v2.4.
+	* COLAMD.files: Add colamd_global.c to COLAMD_SRC and second build of 
+	colamd.c for long version.
+
+2005-08-25  David Bateman  <dbateman@free.fr>
+
+	* Sparse-op-defs.h (FULL_SPARSE_MUL, SPARSE_FULL_MUL): Macro for
+	mixed sparse/full multiply.
+	* dSparse.cc (operator *), CSparse.cc (operator *): New operators for
+	mixed sparse/full multiply.
+	* dSparse.h (operator *), CSparse.h (operator *): Declaration of
+	mixed sparse/full multiply operators.
+
+2005-07-25   Erik de Castro Lopo  <erikd@zip.com.au>
+
+	* oct-inttypes.h (OCTAVE_S_US_FTR): Compare <= 0 instead of < 0 to
+	avoid warnings for unsigned types.
+
+2005-07-07  John W. Eaton  <jwe@octave.org>
+
+	* dSparse.cc (SparseMatrix::factorize): Initialize Numeric to 0.
+	* CSparse.cc (SparseComplexMatrix::factorize:) Likewise.
+
+2005-06-15  John W. Eaton  <jwe@octave.org>
+
+	* oct-rl-edit.c (flush_stdout): Rename from no_redisplay.
+	Flush stdout here.
+	(octave_rl_clear_screen): Set rl_redisplay_function to flush_stdout.
+
+	* Array.h (Array::resize): Change int args to octave_idx_type.
+
+2005-06-14  John W. Eaton  <jwe@octave.org>
+
+	* CMatrix.cc, CNDArray.cc, CSparse.cc, dMatrix.cc, dNDArray.cc,
+	dSparse.cc, lo-cieee.c, lo-mappers.cc: Change all uses of
+	octave_is_NaN_or_NA to xisnan.
+
+	* lo-mappers.h (octave_is_NaN_or_NA): Mark with GCC_ATTR_DEPRECATED.
+	* lo-ieee.h (lo_ieee_is_NaN_or_NA): Likewise.
+
+	* lo-cieee.c (lo_ieee_is_NaN_or_NA): Now just a wrapper for
+	lo_ieee_isnan.
+
+	* dMatrix.cc (Matrix::too_large_for_float): Only check if abs
+	value is greater than FLT_MAX.
+	* CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto.
+	* dNDArray.cc (NDArray::too_large_for_float): Ditto.
+	* CNDArray.cc (ComplexNDArray::too_large_for_float): Ditto.
+
+	* dMatrix.cc (Matrix::too_large_for_float): Special case Inf
+	values too.
+	* CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto.
+
+	* dNDArray.cc (NDArray::too_large_for_float): Likewise for NaN,
+	NA, Inf values.
+	* CNDArray.cc (ComplexNDArray::too_large_for_float): Ditto.
+
+2005-06-14  David Bateman  <dbateman@free.fr>
+
+	* dMatrix.cc (Matrix::too_large_for_float): Special case NaN and
+	NA values.
+	* CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto.
+
+2005-06-02  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assignN): Try harder to correctly resize previously
+	empty LHS.
+
+2005-05-16  David Bateman  <dbateman@free.fr>
+
+	* dSparse.h: Change UMFPACK_LONG_IDX to IDX_TYPE_LONG.
+	* CSparse.h: ditto.
+
+2005-05-10  David Bateman  <dbateman@free.fr>
+
+	* dSparse.cc (determinant): Free numeric factorization after
+	sucessful calculation.
+	* CSparse.cc (determinant): ditto.
+
+2005-05-06  John W. Eaton  <jwe@octave.org>
+
+	* dbleCHOL.cc (CHOL::init): Use xelem instead of elem for indexing
+	chol_mat.
+	(chol2mat_internal, chol2mat, CHOL::inverse): New functions.
+	* dbleCHOL.h (chol2mat_internal, chol2mat, CHOL::inverse):
+	Provide decls.
+
+	* CmplxChol.cc (ComplexCHOL::init): Use xelem instead of elem for
+	indexing chol_mat.
+	(chol2mat_internal, chol2mat, ComplexCHOL::inverse): New functions.
+	* CmplxCHOL.h (chol2mat_internal, chol2mat, CmplxCHOL::inverse):
+	Provide decls.
+
+2005-05-05  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (Array<T>::permute): Call chop_trailing_singletons on
+	retval before return.
+
+2005-05-04  John W. Eaton  <jwe@octave.org>
+
+	* cmd-edit.cc (gnu_readline::do_readline): Extract const char*
+	from prompt outside of INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE block.
+
+2005-05-02  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (LINK_DEPS): List $(UMFPACK_LIBS) ahead of $(BLAS_LIBS).
+	From Dmitri A. Sergatskov <dasergatskov@gmail.com>.
+
+2005-04-29  David Bateman  <dbateman@free.fr>
+
+	* dSparse.cc (trisolve): Diagonal passed to lapack zptsv is type
+	double.  Correct indexing for upper diagonal elements for sparse
+	tridiagonal.
+	* CSparse.cc (trisolve): ditto.
+
+	* CSparse.h (UMFPACK_ZNAME): Define macro to pick version of
+	UMFPACK for 64-bit.
+	* CSparse.cc (UMFPACK_ZNAME): Replace all umfpack_zi_* with 
+	UMFPACK_ZNAME(*).
+	* SparseCmplxLU.cc (UMFPACK_ZNAME): ditto
+
+	* dSparse.h (UMFPACK_DNAME): Define macro to pick version of
+	UMFPACK for 64-bit.
+	* dSparse.cc (UMFPACK_DNAME): Replace all umfpack_di_* with 
+	UMFPACK_DNAME(*).
+	* SparsedbleLU.cc (UMFPACK_DNAME): ditto
+
+	* dSparse.cc (ltsolve, utsolve): Correct permuted upper/lower
+	triangular back/forward substitution code.
+	* CSparse.cc (ltsolve, utsolve): ditto.
+
+	* dSparse.cc (solve): Use mattype.type (false) to force messaging
+	from spparms("spumoni",1).
+	* CSparse.cc (solve): ditto
+
+	* SparseType.cc (SparseType(void)): Print info for
+	spparms("spumoni",1).
+	(SparseType(const matrix_type), SparseType(const matrix_type, const
+	octave_idx_type, const octave_idx_type*), SparseType(const matrix_type,
+	const octave_idx_type, const octave_idx_type)): New constructors.
+	(SparseType (const SparseMatrix&), SparseType (SparseComplexMatrix&)):
+	Detect row permuted lower triangular and column permuted upper
+	triangular matrices. Remove one of the permutation vectors..
+
+	* SparseType.h: Simplify the permutation code.
+	(SparseType(const matrix_type), SparseType
+	(const matrix_type, const octave_idx_type, const octave_idx_type*), 
+	SparseType(const matrix_type, const octave_idx_type, 
+	const octave_idx_type)): Declarations.
+	
+2005-04-25  John W. Eaton  <jwe@octave.org>
+
+	* str-vec.cc (string_vector::delete_c_str_vec): Correctly free
+	array and its contents.
+
+2005-04-22  John W. Eaton  <jwe@octave.org>
+
+	* oct-rl-edit.c (octave_rl_set_terminal_name): Don't cast away
+	const here now that rl_terminal_name is declared const char*.
+
+2005-04-21  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (DISTFILES): Include oct-types.h.in in the list.
+
+2005-04-19  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assignN): Don't crash if the index list is empty.
+
+2005-04-14  David Bateman  <dbateman@free.fr>
+
+	* SparseCmplxLU.cc: Add flags for incomplete factorization.
+	* SparsedbleLU.cc: Ditto.
+	* SparseCmplxLU.h: Definition.
+	* SparsedbleLU.h: ditto.
+
+	* SparseType.cc (transpose): New function.
+	* SparseType.h (transpose): Definition.
+	
+2005-04-11  John W. Eaton  <jwe@octave.org>
+
+	* lo-specfun.cc: Use F77_XFCN instead of F77_FUNC for calls to
+	fortran code that could end up calling XSTOPX.
+
+2005-04-10  David Bateman  <dbateman@free.fr>
+
+	* Makefile.in: include oct-types in INCLUDES so that it is 
+	installed
+	
+2005-04-08  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (clean): Use exact filenames instead of *.xxx.
+
+	* Initial merge of 64-bit changes from Clinton Chee:
+
+	2005-04-07  John W. Eaton  <jwe@octave.org>
+
+	* MArray-i.cc, Array-i.cc: Instantiate Array<long> and MArray<long>.
+
+	* CSparse.cc, CSparse.h, MSparse.cc, MSparse.h, Sparse-op-defs.h,
+	Sparse.cc, Sparse.h, SparseCmplxLU.cc, SparseType.cc,
+	SparseType.h, SparsedbleLU.cc, boolSparse.cc, boolSparse.h,
+	dSparse.cc, dSparse.h, sparse-base-lu.cc:
+	Use octave_idx_type instead of int where needed.
+
+	2005-03-31  Clinton Chee  <chee@parallel.hpc.unsw.edu.au>
+
+	* Array-util.cc, Array-util.h, Array.cc,Array.h, Array2.h,
+	Array3.h, ArrayN.cc, ArrayN.h, Bounds.cc, Bounds.h, CColVector.cc,
+	CColVector.h, CDiagMatrix.cc, CDiagMatrix.h, CMatrix.cc,
+	CMatrix.h, CNDArray.cc, CNDArray.h, CRowVector.cc, CRowVector.h,
+	CmplxAEPBAL.cc, CmplxAEPBAL.h, CmplxCHOL.cc, CmplxCHOL.h,
+	CmplxHESS.cc, CmplxHESS.h, CmplxLU.cc, CmplxQR.cc, CmplxQRP.cc,
+	CmplxSCHUR.cc, CmplxSCHUR.h, CmplxSVD.cc, CmplxSVD.h, CollocWt.cc,
+	CollocWt.h, DAEFunc.h, DASPK-opts.in,DASPK.cc,DASPK.h,
+	DASRT-opts.in, DASRT.cc, DASRT.h, DASSL-opts.in, DASSL.cc,
+	DASSL.h, DiagArray2.cc, DiagArray2.h, EIG.cc, EIG.h, FEGrid.cc,
+	FEGrid.h, LPsolve.cc, LPsolve.h, LSODE-opts.in, LSODE.cc, LSODE.h,
+	MArray-defs.h, MArray.cc, MArray.h, MArray2.cc, MArray2.h,
+	MArrayN.cc, MDiagArray2.cc, MDiagArray2.h, NLConst.h, NLEqn.cc,
+	NLEqn.h, Quad.cc, Quad.h, Range.cc,Range.cc, Range.h, base-de.h,
+	base-lu.cc, base-lu.h, base-min.h, boolMatrix.cc, boolMatrix.h,
+	boolNDArray.cc, boolNDArray.h, chMatrix.cc, chMatrix.h,
+	chNDArray.cc, chNDArray.h, dColVector.cc, dColVector.h,
+	dDiagMatrix.cc, dDiagMatrix.h, dMatrix.cc, dMatrix.h,
+	dNDArray.cc,dNDArray.cc, dNDArray.h, dRowVector.cc, dRowVector.h,
+	dbleAEPBAL.cc, dbleAEPBAL.h, dbleCHOL.cc, dbleCHOL.h, dbleHESS.cc,
+	dbleHESS.h, dbleLU.cc, dbleQR.cc, dbleQRP.cc, dbleSCHUR.cc,
+	dbleSCHUR.h, dbleSVD.cc, dbleSVD.h, dim-vector.h, idx-vector.cc,
+	idx-vector.h, intNDArray.cc, intNDArray.h, lo-specfun.cc,
+	lo-specfun.h, mach-info.cc, mx-inlines.cc, oct-fftw.cc,
+	oct-fftw.h, oct-rand.cc, oct-rand.h, so-array.cc, so-array.h,
+	str-vec.cc, str-vec.h:
+	Use octave_idx_type instead of int where needed.
+
+	2005-04-01  John W. Eaton  <jwe@octave.org>
+
+	* dim-vector.h, lo-utils.h: Include oct-types.h.
+
+	* oct-types.h.in: New file.
+
+	2005-03-31  Clinton Chee  <chee@parallel.hpc.unsw.edu.au>
+
+	* lo-utils.cc (NINTbig): New function.
+	* lo-utils.h: Provide decl.
+
+2005-04-06  David Bateman  <dbateman@free.fr>
+
+	* Makefile.in: Link to UMFPACK_LIBS.
+
+2005-04-05  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assignN): Avoid shadowed declaration in previous change.
+
+2005-04-01  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assignN): For A(IDX-LIST) = RHS with A previously
+	undefined, correctly match colons in IDX-LIST with RHS dimensions
+	when resizing A.  When performing the assignment, just check that
+	the number of elements in RHS matches the number of elements
+	indexed by IDX-LIST.
+
+2005-03-30  John W. Eaton  <jwe@octave.org>
+
+	* lo-mappers.cc (log10, tan, tanh): Delete functions.
+	* lo-mappers.h (log10, tan, tanh): Delete decls.
+
+	* CColVector.cc, CNDArray.cc, CRowVector.cc, CSparse.cc,
+	dSparse.cc: Use std:: for Complex functions instead of relying on
+	wrappers from oct-cmplx.h.
+
+	* oct-cmplx.h: Provide typedef only.
+
+	* DiagArray2.cc (xelem): Don't use initializer for static data.
+	* DiagArray2.h (DiagArray<T>::Proxy::operator T ()):
+	Likewise.
+
+2005-03-26  John W. Eaton  <jwe@octave.org>
+
+	* cmd-edit.cc (do_readline): Wrap call to ::octave_rl_readline
+	with {BEGIN,END}_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE.
+
+2005-03-15  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (MATRIX_INC): Remove oct-spparms.h from the list.
+
+2005-03-14  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (DISTFILES): Don't include $(UMFPACK_EXTRAS).
+	(DISTDIRS): Don't include UMFPACK.
+	(LIBOCTAVE_OBJECTS): Don't include $(UMFPACK_OBJ).
+	(UMFPACK_SPECIAL_1, UMFPACK_SPECIAL): No need for special include
+	flags for these files.
+	Don't include include $(srcdir)/UMFPACK.files.
+	Don't include include $(srcdir)/UMFPACK.rules.
+
+	* UMFPACK.README, UMFPACK.files, UMFPACK.patch, UMFPACK.rules:
+	Delete files.
+	* UMFPACK: Delete directory tree.
+
+	* dSparse.cc: Include <umfpack/umfpack.h> instead of just "umfpack.h".
+	* CSparse.cc: Likewise.
+	* SparsedbleLU.cc: Likewise.
+	* SparseCmplxLU.cc: Likewise.
+
+2005-03-14  David Bateman  <dbateman@free.org>
+
+	* CSParse.cc, SparseCmplxLU.cc, SparsedbleLU.cc, dSparse.cc:
+	Allow compilation to succeed if UMFPACK is not available.
+
+2005-03-09  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (bin-dist): Delete target.
+	(BINDISTLIBS, BINDISTFILES): Delete variables.
+
+2005-03-01  John W. Eaton  <jwe@octave.org>
+
+	* ODESSA.h, ODESSA.cc, ODESSA-opts.in: Delete.
+	* Makefile.in: Remove them from the lists.
+
+2005-02-28  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (LINK_DEPS): Remove -lglob from the list.
+
+2005-02-27  David Bateman  <dbateman@free.org>
+
+	* Sparse.cc (Sparse<T>::reshape): Set cidx for the N last elements
+	in the sparse matrix.
+	
+2005-02-25  John W. Eaton  <jwe@octave.org>
+
+	Sparse merge.
+
+	2005-02-13  David Bateman  <dbateman@free.fr>
+
+	* CSparse.cc (SparseComplexMatrix:dsolve, SparseComplexMatrix:utsolve,
+	SparseComplexMatrix::ltsolve, SparseComplexMatrix::trisolve,
+	SparseComplexMatrix::bsolve, SparseComplexMatrix:fsolve): Split sparse
+	solver into separate functions for the diagonal, upper, lower 
+	triangular, tridiagonal, banded and full cases.
+	(SparseComplexMatrix::solve): rewrite to call the above function. One
+	version that probes the matrix type and another that assumes the type
+	is passed.
+
+	* dSparse.cc (SparseMatrix:dsolve, SparseMatrix:utsolve,
+	SparseMatrix::ltsolve, SparseMatrix::trisolve,
+	SparseMatrix::bsolve, SparseMatrix:fsolve): Likewise
+	(SparseMatrix::solve): Likewise
+
+	* CSparse.h (dsolve, utsolve, ltsolve, trisolve, bsolve, fsolve):
+	Declaration of new functions
+	* dSparse.h (dsolve, utsolve, ltsolve, trisolve, bsolve, fsolve):
+	Likewise
+
+	* CSparse.cc (operator !): Reverse the sense of the test.
+	* dSpase.cc (operator !): Likewise
+
+	* dSparse.h (type, band_size, is_dense, triangular_row_perm,
+	triangular_col_perm, sparse_info): Remove matrix type code
+	* CSparse.h (type, band_size, is_dense, triangular_row_perm,
+	triangular_col_perm, sparse_info): Likewise
+	* boolSparse.h (type, band_size, is_dense, triangular_row_perm,
+	triangular_col_perm, sparse_info): Likewise
+	* MSparse.h (type, band_size, is_dense, triangular_row_perm,
+	triangular_col_perm, sparse_info): Likewise
+	* Sparse.h (type, band_size, is_dense, triangular_row_perm,
+	triangular_col_perm, sparse_info, matrix_type): Likewise
+
+	* Sparse.cc (type, sparse_info, band_size): Remove type code
+	
+	* SparseType.h: New class for the matrix type used in solvers
+	* SparseType.cc: methods of sparse matrix type class
+	
+	* Makefile.in: Add SparseType.cc
+
+	2005-02-01  David Bateman  <dbateman@free.fr>
+
+	* UMFPACK: Update to version 4.4
+	* UMFPACK.patch: Version 4.4 contains most of the previous patch. Only
+	keep octave specific test files
+
+	2005-01-23  David Bateman  <dbateman@free.fr>
+
+	* dSparse.cc (SparseMatrix::solve): Include tridiagonal, cholesky
+	tridiagonal and banded cholesky solvers. Remove calculation of
+	condition number for banded solvers.
+	* CSparse.cc (SparseComplexMatrix::solve): ditto.
+
+	* Sparse.h (int type (int) const, bool is_dense (void) const):
+	new functions.
+	* MSparse.h (int type (int) const, bool is_dense (void) const): ditto
+	* dSparse.h (int type (int) const, bool is_dense (void) const): ditto
+	* CSparse.h (int type (int) const, bool is_dense (void) const): ditto
+	* boolSparse.h (int type (int) const, bool is_dense (void) const): 
+	ditto
+
+	* Sparse.cc (int Sparse<T>::type (int) const, 
+	bool Sparse<T>::is_dense (void) const): New functions definition
+	
+	* Sparse.h (matrix_type typ): Move caching of matrix type to SparseRep,
+	so it actually is cached, but disable
+
+	* oct-spparms.cc (SparseParams::init_keys): Change spmoni to spumoni
+	for compatiability
+	
+	2005-01-18  David Bateman  <dbateman@free.fr>
+
+	* Array.cc (Array<T>::insert (const Array<T>&, const Array<int>&)):
+	Modify calculation of number elements to skip between copied blocks.
+
+	2005-01-07  David Bateman  <dbateman@free.fr>
+
+	* Sparse.h : Reverse definitions of numel and nelem.
+	* Sparse.cc (assign1): Use numel and not nelem
+	* Sparse-op-def.h: Replace all uses of nelem with numel
+	
+	2005-01-07  David Bateman  <dbateman@free.fr>
+
+	* dbleDET.h: Make SparseMatrix a friend of the class DET
+	* CmplexDET.h: Make SparseComplexMatrix a friend of the class 
+	ComplexDET
+	* dSparse.cc (SparseMatrix::determinant): Replace use of SparseDET 
+	by DET
+	* dSparse.h (determinant): ditto
+	* CSparse.cc (SparseComplexMatrix::determinant): Replace use of 
+	SparseComplexDET by ComplexDET
+	* CSparse.h (determinant): ditto
+	* SparsedbleDET.h, SparsedbleDET.cc, SparseCmplxDET.h, 
+	SparseCmplxDET.cc: delete files
+	* Makefile.in: Delete reference to SparsedbleDET.h, SparsedbleDET.cc,
+	SparseCmplxDET.h andSparseCmplxDET.cc.
+
+	* CSparse.cc (SparseComplexMatrix::solve): Store matrix type in 
+	local variable to avoid variable shadowing.
+	* dSparse.cc (SparseMatrix::solve): ditto.
+	
+        * boolSparse.cc boolSparse.h CSparse.cc CSparse.h dSparse.cc 
+	dSparse.h MSparse.cc MSparse-C.cc MSparse-d.cc MSparse-defs.h
+   	MSparse.h oct-spparms.cc oct-spparms.h Sparse-b.cc Sparse.cc 
+	Sparse-C.cc SparseCmplxLU.cc SparseCmplxLU.h SparsedbleLU.cc 
+	SparsedbleLU.h Sparse-d.cc Sparse.h Sparse-op-defs.h sparse-sort.cc 
+	sparse-sort.h: Remove additional licensing clause with authors
+	permission.
+	
+	2004-12-30  John W. Eaton  <jwe@octave.org>
+
+	* MSparse.cc (SPARSE_A2S_OP_2, SPARSE_SA2_OP_2):
+	Loop counter is int, not size_t.
+
+	* oct-spparms.cc (SparseParams::operator =): Return *this.
+
+	* Sparse-op-defs.h (SPARSE_SPARSE_MUL): Delete unused variable tmpval.
+
+	* dSparse.cc (operator << (ostream&, const SparseMatrix&), atan2):
+	Delete unused variables.
+	(SparseMatrix::solve): Avoid warnings about uninitialized
+	variables and variables that might be clobbered by longjmp.
+
+	* CSparse.cc (operator << (ostream&, const SparseComplexMatrix&),
+	min, max): Delete unused variables.
+	(SparseComplexMatrix::solve): Avoid warnings about uninitialized
+	variables and variables that might be clobbered by longjmp.
+
+	* Makefile.in (UMFPACK_SPECIAL): Include .d files in the list.
+
+	* Sparse-op-defs.h (SPARSE_SMS_BIN_OP_2, SPARSE_SSM_BIN_OP_2):
+	Loop counter is int, not size_t.
+
+	* CSparse.cc (SparseComplexMatrix::hermitian): Avoid shadow warnings.
+	* Sparse.cc (Sparse<T>::Sparse, Sparse<T>::type, assign): Likewise.
+	
+	* Sparse.h (Sparse::SparseRep): Order data members and initializer
+	lists consistently.
+
+	* mx-base.h: Include boolSparse.h, dSparse.h, and CSparse.h.
+
+	2004-12-29  John W. Eaton  <jwe@octave.org>
+
+	* COLAMD.files (COLAMD_EXTRAS): New variable.
+	* UMFPACK.files (UMFPACK_EXTRAS): New variable.
+	* Makefile.in (DISTFILES): Add $(COLAMD_EXTRAS) and
+	$(UMFPACK_EXTRAS) to the list.
+	(DISTDIRS): New variable.
+	(dist): Handle $(DISTDIRS).
+
+	Merge of sparse code from David Bateman <dbateman@free.fr> and 
+	Andy Adler <adler@site.uottawa.ca>.
+
+	* Makefile.in (VPATH): ADD @srcdir@/COLAMD to the list.
+
+	* Makefile.in (MAKEDEPS): Include $(COLAMD_SRC) and $(UMFPACK_SRC)
+	without directory prefix.
+
+	* Makefile.in (LIBOCTAVE_OBJECTS): Add $(COLAMD_OBJ) and
+	$(UMFPACK_OBJ) to the list.
+
+	* COLAMD: New directory.
+	* COLAMD.files: New file.
+	* Makefile.in: Include COLAMD.files.
+	(SOURCES): Add $(COLAMD_SOURCES) to the list.
+	(LIBOCTAVE_OBJECTS): Add $(COLAMD_OBJECTS) to the list.
+	(INCLUDES): Add $(COLAMD_INCLUDES) to the list.
+
+	* UMFPACK: New directory.
+	* UMFPACK.patch, UMFPACK.README, UMFPACK.files, UMFPACK.rules:
+	New files.
+	* Makefile.in: Include UMFPACK.files and UMFPACK.rules.
+	(SOURCES): Add $(UMFPACK_SOURCES) to the list.
+	(LIBOCTAVE_OBJECTS): Add $(UMFPACK_OBJECTS) to the list.
+	(INCLUDES): Add $(UMFPACK_INCLUDES) to the list.
+
+	* Makefile.in (SPARSE_MX_OP_INC): New variable.
+	(INCLUDES): Add it to the list.
+	(SPARSE_MX_OP_SRC): New variable.
+	(LIBOCTAVE_CXX_SOURCES): Add it to the list.
+	(distclean): Remove $(SPARSE_MX_OP_INC) and $(SPARSE_MX_OP_SRC).
+	(stamp-prereq): Depend on $(SPARSE_MX_OP_INC) and $(SPARSE_MX_OP_SRC).
+
+	* sparse-mk-ops.awk, sparse-mx-ops: New files.
+	* Makefile.in (DISTFILES): Add them to the lists.
+
+	* oct-spparms.h, sparse-sort.h: New files.
+	* Makefile.in (INCLUDES): Add them to the list.
+
+	* oct-spparms.cc, sparse-sort.cc: New files.
+	* Makefile.in (LIBOCTAVE_CXX_SOURCES): Add them to the list.
+
+	* sparse-base-lu.cc: New file.
+	* Makefile.in (TEMPLATE_SRC): Add it to the list.
+
+	* boolSparse.cc, CSparse.cc, dSparse.cc, MSparse.cc, Sparse.cc,
+	SparseCmplxDET.cc, SparseCmplxLU.cc, SparsedbleDET.cc,
+	SparsedbleLU.cc: New files.
+	* Makefile.in (MATRIX_SRC): Add them to the list.
+	
+	* boolSparse.h, CSparse.h, dSparse.h, MSparse-defs.h, MSparse.h,
+	Sparse.h, oct-spparms.h, sparse-base-lu.h, SparseCmplxDET.h,
+	SparseCmplxLU.h, SparsedbleDET.h, SparsedbleLU.h,
+	Sparse-op-defs.h: New files.
+	* Makefile.in (MATRIX_INC): Add them to the appropriate lists.
+
+	* MSparse-d.cc, MSparse-C.cc, Sparse-b.cc, Sparse-d.cc,
+	Sparse-C.cc: New files.
+	* Makefile.in (TI_SRC): Add them to the list.
+
+2005-02-18  John W. Eaton  <jwe@octave.org>
+
+	* file-ops.cc (file_ops::canonicalize_file_name) [HAVE_RESOLVEPATH]:
+	Pass current directory to octave_env::make_absolute.
+	Save value returned from octave_env::make_absolute in local var.
+	Pass const char*, not std::string as first arg of resolvepath.
+	Provide decl for resolved_len.
+
+2005-02-18  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (Array<T>::permute): Allow permutation vector longer
+	than number of dimenensions of permuted matrix.
+
+	* Array.cc (Array<T>::permute): Use zero-based indexing for perm_vec.
+	* Array-util.cc (calc_permutated_idx): Likewise.
+
+2005-02-10  David Bateman  <dbateman@free.fr>
+
+	* CNDArray.cc (ComplexNDarray::operator !): Change sense of test.
+	* CMatrix.cc (ComplexMatrix::operator !): Likewise.
+
+2005-02-09  John W. Eaton  <jwe@octave.org>
+
+	* file-ops.cc (file_ops::canonicalize_file_name): New functions.
+	* file-ops.h: Provide decls.
+
+	* kpse.cc (kpse_tilde_expand): Simply return NAME if it is empty.
+
+2005-02-08  John W. Eaton  <jwe@octave.org>
+
+	* Array-util.cc (freeze): Improve error message.
+
+2005-01-26  David Bateman  <dbateman@free.fr>
+
+	* Array.cc (Array<T>::insert): Handle generic case, not just
+	special case for fast concatenation.
+
+2005-01-18  John W. Eaton  <jwe@octave.org>
+
+	* mx-inlines.cc (MX_ND_REDUCTION): Delete RET_ELT_TYPE arg.
+	Change all uses.  Use VAL instead of RET_ELT_TYPE when resizing.
+
+	* dNDArray.cc (NDArray::any): NaN does not count as a nonzero value.
+	* CNDArray.cc (ComplexNDArray::any): Likewise.
+
+2005-01-18  David Bateman  <dbateman@free.fr>
+
+	* Array.cc (Array<T>::insert (const Array<T>&, const Array<int>&)):
+	Modify calculation of number elements to skip between copied blocks.
+
+2005-01-18  John W. Eaton  <jwe@octave.org>
+
+	* idx-vector.cc (IDX_VEC_REP::freeze): Call warning handler, not
+	error handler, to warn about resizing.
+
+2004-12-27  Martin Dalecki  <martin@dalecki.de>
+
+	* Array.cc, ArrayN.cc, base-lu.cc, boolMatrix.cc, boolNDArray.cc,
+	Bounds.cc, CColVector.cc, CDiagMatrix.cc, chMatrix.cc,
+	chNDArray.cc, CMatrix.cc, CmplxAEPBAL.cc, CmplxCHOL.cc,
+	CmplxDET.cc, CmplxHESS.cc, CmplxLU.cc, CmplxQR.cc, CmplxQRP.cc,
+	CmplxSCHUR.cc, CmplxSVD.cc, CNDArray.cc, CollocWt.cc,
+	CRowVector.cc, DASPK.cc, DASRT.cc, DASSL.cc, dbleAEPBAL.cc,
+	dbleCHOL.cc, dbleDET.cc, dbleHESS.cc, dbleLU.cc, dbleQR.cc,
+	dbleQRP.cc, dbleSCHUR.cc, dbleSVD.cc, dColVector.cc,
+	dDiagMatrix.cc, DiagArray2.cc, dMatrix.cc, dNDArray.cc,
+	dRowVector.cc, EIG.cc, FEGrid.cc, idx-vector.cc, int16NDArray.cc,
+	int32NDArray.cc, int64NDArray.cc, int8NDArray.cc, intNDArray.cc,
+	LinConst.cc, LPsolve.cc, LSODE.cc, MArray2.cc, MArray.cc,
+	MArrayN.cc, MDiagArray2.cc, NLEqn.cc, oct-alloc.cc, ODES.cc,
+	ODESSA.cc, Quad.cc, Range.cc, so-array.cc, uint16NDArray.cc,
+	uint32NDArray.cc, uint64NDArray.cc, uint8NDArray.cc:
+	Delete #pragma implementation.
+
+	* Array2.h, Array3.h, Array.h, ArrayN.h, base-lu.h, boolMatrix.h,
+	boolNDArray.h, Bounds.h, CColVector.h, CDiagMatrix.h, chMatrix.h,
+	chNDArray.h, CMatrix.h, CmplxAEPBAL.h, CmplxCHOL.h, CmplxDET.h,
+	CmplxHESS.h, CmplxLU.h, CmplxQR.h, CmplxQRP.h, CmplxSCHUR.h,
+	CmplxSVD.h, CNDArray.h, CollocWt.h, CRowVector.h, DASPK.h,
+	DASRT.h, DASSL.h, dbleAEPBAL.h, dbleCHOL.h, dbleDET.h, dbleHESS.h,
+	dbleLU.h, dbleQR.h, dbleQRP.h, dbleSCHUR.h, dbleSVD.h,
+	dColVector.h, dDiagMatrix.h, DiagArray2.h, dim-vector.h,
+	dMatrix.h, dNDArray.h, dRowVector.h, EIG.h, FEGrid.h,
+	idx-vector.h, int16NDArray.h, int32NDArray.h, int64NDArray.h,
+	int8NDArray.h, intNDArray.h, LinConst.h, LPsolve.h, LSODE.h,
+	MArray2.h, MArray.h, MArrayN.h, MDiagArray2.h, NLConst.h, NLEqn.h,
+	ODES.h, ODESSA.h, Quad.h, Range.h, so-array.h, uint16NDArray.h,
+	uint32NDArray.h, uint64NDArray.h, uint8NDArray.h:
+	Delete #pragma interface.
+
+2004-12-17  John W. Eaton  <jwe@octave.org>
+
+	* lo-cieee.c (lo_ieee_signbit): New function.
+	* lo-ieee.h: Provide decl.
+	Don't define lo_ieee_signbit as a macro here.
+	From Orion Poplawski <orion@cora.nwra.com>.
+
+2004-11-18  John W. Eaton  <jwe@octave.org>
+
+	* int32NDArray.cc (pow): Delete instantiation.
+	* int16NDArray.cc (pow): Likewise.
+	* int8NDArray.cc (pow): Likewise.
+	* uint32NDArray.cc (pow): Likewise.
+	* uint16NDArray.cc (pow): Likewise.
+	* uint8NDArray.cc (pow): Likewise.
+
+2004-11-17  John W. Eaton  <jwe@octave.org>
+
+	* kpse.cc (str_llist_float, str_llist_add, kpse_var_expand):
+	Now static.
+	(DB_ENVS, DB_HASH_SIZE, DB_NAME, ALIAS_NAME, ALIAS_HASH_SIZE,
+	DEFAULT_TEXMFDBS): Delete unused macros.
+
+	* Array.cc (Array<T>::index): Call generic N-d indexing function
+	if idx_arg is N-d.
+
+2004-11-09  David Bateman  <dbateman@free.fr>
+
+	* dNDArray.cc (concat): Delete.
+	(NDArray::concat): New methods.
+	* dNDArray.h: Provide decls.
+
+	* CNDArray.cc (concat): Delete.
+	(ComplexNDArray::concat): New methods.
+	* CNDArray.h: Provide decls.
+
+	* boolNDArray.cc (concat): Delete.
+	(boolNDArray::concat): New methods.
+	* boolNDArray.h: Provide decls.
+
+	* chNDArray.cc (concat): Delete.
+	(charNDArray::concat): New methods.
+	* chNDArray.h: Provide decls.
+
+	* oct-inttypes.h (OCTAVE_INT_CONCAT_FN, OCTAVE_INT_CONCAT_DECL):
+	Delete macros.
+
+	* int8NDArray.h, int16NDArray.h, int32NDArray.h, int64NDArray.h,
+	uint8NDArray.h, uint16NDArray.h, uint32NDArray.h, uint64NDArray.h
+	(OCTAVE_INT_CONCAT_DECL): Delete use of macro.
+
+	* int8NDArray.cc, int16NDArray.cc, int32NDArray.cc, int64NDArray.cc,
+	uint8NDArray.cc, uint16NDArray.cc, uint32NDArray.cc, uint64NDArray.cc
+	(OCTAVE_INT_CONCAT_FN): Delete use of macro.
+
+	* intNDArray.cc (intNDArray<T>::concat): New method.
+	* intNDArray.h: Provide decl.
+
+2004-11-08  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.cc: New file.
+	* Makefile.in (TI_SRC): Add it to the list.
+	* oct-inttypes.h (OCTAVE_US_TYPE1_CMP_OP, OCTAVE_US_TYPE1_CMP_OPS,
+	OCTAVE_SU_TYPE1_CMP_OP, OCTAVE_SU_TYPE1_CMP_OPS,
+	OCTAVE_TYPE1_CMP_OPS, OCTAVE_US_TYPE2_CMP_OP,
+	OCTAVE_US_TYPE2_CMP_OPS, OCTAVE_SU_TYPE2_CMP_OP,
+	OCTAVE_SU_TYPE2_CMP_OPS, OCTAVE_TYPE2_CMP_OPS):
+	New macros for comparison operations.  Avoid potential
+	problems with default conversions when comparing signed and
+	unsigned values.
+
+2004-11-03  John W. Eaton  <jwe@octave.org>
+
+	* dMatrix.cc (Matrix::inverse): Return info == -1 for any failure.
+	* CMatrix.cc (ComplexMatrix::inverse): Likewise.
+
+2004-10-19  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assignN): Avoid resizing if assignment will fail.
+
+2004-10-18  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assign2): Save result of squeeze operation.
+	Squeeze if ndims is > 2, not if length of RHS vector is > 2.
+
+2004-10-11  David Bateman  <dbateman@free.fr>
+
+	* oct-fftw.cc (class octave_fftw_planner): Add inplace[2] to
+	flag whether transform in- or out-of-place.
+	(octave_fftw_planner::octave_fftw_planner): Initialize it.
+	(octave_fftw_planner::create_plan): Use it.
+
+2004-09-24  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (assign2, assignN): If index is empty, allow RHS to be
+	any empty matrix, not just [].
+
+2004-09-23  John W. Eaton  <jwe@octave.org>
+
+	* mx-ops: Include scalar zero value in type definitions.
+	Delete zero information from ops section.
+	* mk-ops.awk: Use type-specific zero info.
+
+	* mx-op-defs.h (MS_BOOL_OP, SM_BOOL_OP, MM_BOOL_OP, NDS_BOOL_OP,
+	SND_BOOL_OP, NDND_BOOL_OP): Args now include zero values for both
+	LHS and RHS.
+	(MS_BOOL_OPS2, SM_BOOL_OPS2, MM_BOOL_OPS2, NDS_BOOL_OPS2,
+	SND_BOOL_OPS2, NDND_BOOL_OPS2): New macros.
+	(MS_BOOL_OPS, SM_BOOL_OPS, MM_BOOL_OPS, NDS_BOOL_OPS,
+	SND_BOOL_OPS, NDND_BOOL_OPS): Define in terms of 2-zero versions.
+
+	* idx-vector.h (idx_vector::idx_vector_rep::idx_vector_rep (const
+	intNDArray<U>&)): Use explicit as_double () conversion in call to
+	tree_to_mat_idx.
+
+	* oct-inttypes.h (octave_int<T>::operator float): New conversion.
+	(pow): Instead of "if (b_val)", use "if (b_val != zero)".
+	Likewise for the "if (b_val & one)" test.
+	(operator <<, operator >>): Type of retval is octave_int<T1>, not T1.
+
+2004-09-23  David Bateman  <dbateman@free.fr>
+
+	* oct-inttypes.h (OCTAVE_INT_DOUBLE_CMP_OP, OCTAVE_DOUBLE_INT_CMP_OP):
+	New macros.  Use them to define mixed intX-double and double-intX ops.
+
+2004-09-22  Federico Zenith  <zenith@chemeng.ntnu.no>
+
+	* DASPK-opts.in, DASRT-opts.in, ODESSA-opts.in:
+	Fix doc string layout to avoid overfull hbox in printed output.
+
+2004-09-21  John W. Eaton  <jwe@octave.org>
+
+	* mach-info.h (octave_mach_info::flt_fmt_native): Delete.
+	* mach-info.cc (octave_mach_info::string_to_float_format):
+	For "native", set actual native format.
+	(octave_mach_info::float_format_as_string): Delete flt_fmt_native case.
+
+2004-09-17  David Bateman  <dbateman@free.fr>
+
+	* CmplxSCHUR.cc (CmplxSCHUR::init): New arg, calc_unitary to make the
+	calculation of the unitary matrix optional.
+	* dbleSCHUR.cc (SCHUR::init): Ditto.
+	* CmplxSCHUR.h, dbleSCHUR.h: Update decls.
+
+2004-09-15  David Bateman  <dbateman@free.fr>
+
+	* oct-sort.h (octave_sort<T>::set_compare (bool (*comp) (T, T))):
+	New function to set the comparison function for the sort.
+
+2004-09-10  John W. Eaton  <jwe@octave.org>
+
+	* lo-mappers.cc (xround): Fix typo.
+
+2004-09-08  John W. Eaton  <jwe@octave.org>
+
+	* Array.h (Array::~Array): Declare virtual.
+
+	* idx-vector.h (idx_vector::idx_vector): Initialize rep in member
+	initializaion list.  Don't set rep->count since the rep
+	constructor does that.
+
+2004-09-07  John W. Eaton  <jwe@octave.org>
+
+	* data-conv.cc (oct_data_conv::string_to_data_type): Handle dt_logical.
+	(oct_data_conv::data_type_as_string): Likewise.
+
+	* data-conv.h (oct_data_conv::data_type): Add dt_logical to list.
+
+	* Range.cc (round): Delete unused function.
+
+	* lo-mappers.cc (xround): Rename from round.  Change all uses.
+	If HAVE_ROUND, call round, otherwise fake with floor and ceil.
+
+	* oct-inttypes.h: Include <cmath> here.
+
+2004-09-03  David Bateman  <dbateman@free.fr>
+
+	* boolNDArray.cc (boolNDArray::concat, boolNDArray::insert):
+	New functions for boolean matrix concatenation.
+	* boolNDArray.h: Provide decls.
+
+2004-09-03  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttpes.h (OCTAVE_INT_CMP_OP): Convert operarands to double
+	to avoid signed/unsigned int comparison problems.
+
+	* mx-ops: Generate CMP and BOOL ops for mixed integer types and
+	for mixed integer and double types.
+
+	* mk-ops.awk: Output BIN_OP_DECLS, CMP_OP_DECLS, and BOOL_OP_DECLS
+	separately, and only if needed.
+
+	* oct-inttypes.h (octave_fit_to_range): Use constructor instead of
+	static_cast for type conversion.
+
+2004-09-01  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (pow, operator +, operator -, operator *,
+	operator /): Handle mixed integer/double ops.  If op generates a
+	NaN, set result to 0.
+	(octave_int::operator - (void)): Convert to double, then negate,
+	then fit to range.
+
+	* mx-ops: Define integer types.  Include declarations for mixed
+	integer/double ops.
+
+2004-08-31  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (pow): Args now const reference.
+	(octave_int<T>::operator *=, octave_int<T>::operator /=,
+	octave_int<T>::operator <<=, octave_int<T>::operator >>=):
+	New member functions.
+	(OCTAVE_INT_BITSHIFT_OP): Delete macro.
+	(operator >> (const octave_int<T1>& x, const T2& y)):
+	Define in terms of >>=.
+	(operator << (const octave_int<T1>& x, const T2& y)):
+	Define in terms of <<=.
+	(bitshift): Operate on octave_int<T> objects, not the values, so
+	we get proper saturation properties.
+
+2004-08-31  David Bateman  <dbateman@free.fr>
+
+	* oct-inttypes.h (pow (constT, T)): New template.
+
+	* int8NDArray.cc, int16NDArray.cc, int32NDArray.cc, uint8NDArray.cc, 
+	uint16NDArray.cc, uint32NDArray.cc: Instantiate power function.
+
+2004-08-31  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (octave_int::byte_size): New function.
+
+2004-08-31  John W. Eaton  <jwe@octave.org>
+
+	* Makefile.in (EXTRAS): Add intNDArray.cc to the list.
+
+	* data-conv.h (oct_data_conv::data_type): Include sized types.
+	Explicitly number enum elements.
+
+	* data-conv.cc (oct_data_conv::string_to_data_type (const
+	std::string&, int&, oct_data_conv::data_type&,
+	oct_data_conv::data_type&)): New function.
+	(oct_data_conv::string_to_data_type (const std::string&, int&,
+	oct_data_conv::data_type&)): New function.
+	(oct_data_conv::data_type_as_string): New function.
+
+	* dMatrix.cc (read_int, do_read, Matrix::read): Delete.
+	(write_int, do_write, Matrix::write): Delete.
+	* dMatrix.h (Matrix::read, Matrix::write): Delete decls.
+
+	* byte-swap.h: Use template functions and specialization.
+	Change all uses.
+	(swap_2_bytes, swap_4_bytes, swap_8_bytes): Delete.
+
+2004-08-30  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (octave_int_fit_to_range): Use template
+	specializations to avoid warnings about signed/unsigned comparisons.
+
+2004-08-28  John W. Eaton  <jwe@octave.org>
+
+	* data-conv.cc (do_float_format_conversion (unsigned char *,
+	size_t, int, oct_mach_info::float_format)): New function.
+	(GET_SIZED_INT_TYPE): New macro.
+	(string_to_data_type): Use it to return sized types corresponding
+	to Octave array data types.
+	(strip_spaces): New function.
+	(do_double_format_conversion, do_float_format_conversion): Pass
+	from_fmt and to_fmt.  Don't always assume the to_fmt is the native
+	float format.
+	(do_double_format_conversion,
+	IEEE_big_double_to_IEEE_little_double,
+	VAX_D_double_to_IEEE_little_double,
+	VAX_G_double_to_IEEE_little_double, Cray_to_IEEE_little_double,
+	IEEE_little_double_to_IEEE_big_double,
+	VAX_D_double_to_IEEE_big_double, VAX_G_double_to_IEEE_big_double,
+	Cray_to_IEEE_big_double, IEEE_little_double_to_VAX_D_double,
+	IEEE_big_double_to_VAX_D_double, VAX_G_double_to_VAX_D_double,
+	Cray_to_VAX_D_double, IEEE_little_double_to_VAX_G_double,
+	IEEE_big_double_to_VAX_G_double, VAX_D_double_to_VAX_G_double,
+	Cray_to_VAX_G_double):
+	Pass data as void*, not double*.
+	(do_float_format_conversion, IEEE_big_float_to_IEEE_little_float,
+	VAX_D_float_to_IEEE_little_float,
+	VAX_G_float_to_IEEE_little_float, Cray_to_IEEE_little_float,
+	IEEE_little_float_to_IEEE_big_float,
+	VAX_D_float_to_IEEE_big_float, VAX_G_float_to_IEEE_big_float,
+	Cray_to_IEEE_big_float, IEEE_little_float_to_VAX_D_float,
+	IEEE_big_float_to_VAX_D_float, VAX_G_float_to_VAX_D_float,
+	Cray_to_VAX_D_float, IEEE_little_float_to_VAX_G_float,
+	IEEE_big_float_to_VAX_G_float, VAX_D_float_to_VAX_G_float,
+	Cray_to_VAX_G_float):
+	Pass data as void*, not float*.
+
+2004-08-27  John W. Eaton  <jwe@octave.org>
+
+	* byte-swap.h (swap_bytes): New template versions, with
+	specializations.
+	(swap_2_bytes, swap_4_bytes, swap_8_bytes): Delete.
+	Change all uses.
+
+2004-08-24  David Bateman  <dbateman@free.fr>
+
+	* chNDArray.cc (concat): Check whether matrix to be inserted is
+	empty instead of checking final matrix.
+	* dNDArray.cc (concat): Likewise.
+	* CNDArray.cc (concat): Likewise.
+
+2004-08-23  David Bateman  <dbateman@free.fr>
+
+        * dim-vector.h (dim_vector::concat): Correct incrementation for
+	non-existent dimensions.
+
+2004-08-09  John W. Eaton  <jwe@octave.org>
+
+	* idx-vector.h (idx_vector::idx_vector_rep::tree_to_mat_idx
+	(const octave_int<U>&)): New member function. 
+	(idx_vector::idx_vector_rep::tree_to_mat_idx (double, bool&),
+	idx_vector::idx_vector_rep::tree_to_mat_idx (int)):
+	Now member functions instead of static in idx-vector.cc.
+	(idx_vector::idx_vector_rep::idx_vector_rep (const octave_int<U>&),
+	idx_vector::idx_vector_rep::idx_vector_rep (const intNDArray<U>&)):
+	New template constructors.
+
+2004-08-05  John W. Eaton  <jwe@octave.org>
+
+	* EIG.cc (EIG::init): Add volatile qualifier to nvr decl.
+
+	* intNDArray.cc (intNDArray<T>::operator !, intNDArray<T>::all,
+	intNDArray<T>::any): Sprinkle with this-> as needed.
+	* mx-inlines.cc (MX_ND_REDUCTION, MX_ND_CUMULATIVE_OP): Likewise.
+
+2004-08-03  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (Array<T>::squeeze): Do nothing for 2-d arrays.  For
+	arrays with more than two dimensions and only one non-singleton
+	dimension, return a column vector.
+
+2004-07-28  John W. Eaton  <jwe@octave.org>
+
+	* oct-cmplx.h (pow (const Complex&, const double&):
+	Convert second arg to complex to avoid libstdc++ bug.
+
+2004-07-27  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (bitshift): New arg, MASK.
+	(OCTAVE_INT_BITSHIFT_OP): Bitshift does not saturate.
+
+2004-07-23  John W. Eaton  <jwe@octave.org>
+
+	* Array.cc (Array<T>::reshape): Return *this if no change in size.
+
+2004-07-23  David Bateman  <dbateman@free.fr>
+
+	* Array.cc, Array.h (cat_ra): Delete.
+	* Array.h, Array-C.cc, Array-d.cc, Array-ch.cc, Array-i.cc 
+	(INSTANTIATE_ARRAY_CAT): Delete.
+
+	* dNDArray.cc, dNDArray.h, CNDArray.cc, CNDArray.h, chNDArray.cc, 
+	chNDArray.h, intNDArray.cc, intNDArray.h (cat): Delete.
+	
+	* Array.cc (Array<T>::insert): Copy data in NDArray version.
+
+	* dNDArray.cc, dNDArray.h, CNDArray.cc, CNDArray.h, chNDArray.cc, 
+	chNDArray.h (concat): New function used for concatenation that does
+	an indexed copy of one array into another.
+
+	* dim-vector.h (concat): New function to concatenate dim_vectors.
+
+	* dNDArray.cc, dNDArray.h, CNDArray.cc, CNDArray.h, chNDArray.cc,
+	chNDArray.h, intNDArray.cc, intNDArray.h (insert): New function for 
+	insertion of one NDArray into another.
+
+	* oct-inttype.cc (OCTAVE_INT_CONCAT_FN, OCTAVE_INT_CONCAT_DECL): New
+	macros to define the int/uint concatenation functions.
+
+	* uint8NDArray.cc, uint16NDArray.cc, uint32NDArray.cc, uint64NDArray.cc
+	int8NDArray.cc, int16NDArray.cc, int32NDArray.cc, int64NDArray.cc
+	(OCTAVE_INT_CONCAT_FN): Instantiate the concatenation function .
+
+	* uint8NDArray.h, uint16NDArray.h, uint32NDArray.h, uint64NDArray.h
+	int8NDArray.h, int16NDArray.h, int32NDArray.h, int64NDArray.h
+	(OCTAVE_INT_CONCAT_DECL): Declare the int/uint concatentaion
+	functions.
+
+2004-07-22  David Bateman  <dbateman@free.fr>
+
+	* oct-sort.h: Don't include oct-obj.h.
+
+	* lo-specfun.cc (is_integer_value): New function.
+	(zbesj, zbesi, zbesy): Special case negative integer or half
+	integer orders that cause overflow for small arguments.
+
+2004-07-12  John W. Eaton  <jwe@octave.org>
+
+	* oct-inttypes.h (octave_int<T>::nbits): New function.
+	(bitshift (const octave_int<T>&, int)): New function.
+
+2004-06-14  John W. Eaton  <jwe@octave.org>
+
+	* mx-base.h: Include headers for new int types.
+
+	* dNDArray.h, dNDArray.cc (NDArray::NDArray (const boolNDArray&),
+	NDArray::NDArray (const charNDArray&)): Delete.
+	(template <class U> explicit NDArray (const intNDArray<U>&)): New
+	constructor.
+	(NDArray::squeze): Call MArrayN::squeeze, not ArrayN::squeeze.
+
+	* chMatrix.h (CharMatrix::transpose): New forwarding functions for
+	return type conversion.
+
+	* ComplexNDArray.h, ComplexNDArray.cc
+	(ComplexNDArray::ComplexNDArray (const ArrayN<Complex>&),
+	(ComplexNDArray::ComplexNDArray (const NDArray&),
+	(ComplexNDArray::ComplexNDArray (const boolNDArray&),
+	(ComplexNDArray::ComplexNDArray (const charNDArray&)): Delete.
+	
+	(ComplexNDArray::squeze): Call MArrayN::squeeze, not ArrayN::squeeze.
+
+	* MArrayN.h:
+	(template <class U> explicit MArrayN<T>::MArrayN (const Array2<U>&),
+	(template <class U> MArrayN<T>::MArrayN (const ArrayN<U>&),
+	(template <class U> explicit MArrayN<T>::MArrayN (const MArray<U>&)):
+	New constructors.
+	(ArrayN<T>::reshape, ArrayN<T>::permute, ArrayN<T>::ipermute,
+	ArrayN<T>::squeeze):
+	New forwarding functions for return type conversion.
+
+	* ArrayN.h:
+	(template <class U> explicit ArrayN<T>::ArrayN (const Array2<U>&),
+	(template <class U> explicit ArrayN<T>::ArrayN (const ArrayN<U>&),
+	(template <class U> explicit ArrayN<T>::ArrayN (const Array<U>&),
+	(template <class U> explicit ArrayN<T>::ArrayN (const Array<U>&,
+	const dim_vector&)): New constructors.
+	(ArrayN<T>::reshape, ArrayN<T>::permute, ArrayN<T>::ipermute,
+	ArrayN<T>::transpose):
+	New forwarding functions for return type conversion.
+
+	* Array.h (template <class U> Array<T>::Array (const Array<U>&)):
+	New constructor.
+	(Array<T>::coerce, Array<T>::byte_size): New functions.
+
+	* Array-i.cc, MArray-i.cc: Instantiate new integer types.
+
+	* oct-inttypes.h, int16NDArray.h, int32NDArray.h, int64NDArray.h,
+	int8NDArray.h , intNDArray.h, uint16NDArray.h, uint32NDArray.h,
+	uint64NDArray.h, uint8NDArray.h, int16NDArray.cc, int32NDArray.cc,
+	int64NDArray.cc, int8NDArray.cc, intNDArray.cc, uint16NDArray.cc,
+	uint32NDArray.cc, uint64NDArray.cc, uint8NDArray.cc: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+2004-06-04  John W. Eaton  <jwe@octave.org>
+
+	* mx-inlines.cc (MX_ND_REDUCTION): New arg, RET_ELT_TYPE.  Use
+	"RET_ELT_TYPE ()" rather than "false" as fill value for retval
+	resize op.  Change all uses.
+
+2004-06-03  David Bateman  <dbateman@free.fr>
+
+	* Array.cc (assignN): Allow magic colon for dimensions lvalue
+	greater than the existing number of dimensions in lvalue.
+
+2004-04-30  David Bateman  <dbateman@free.fr>
+
+        * dim_vector.h (dim_vector::dim_vector_rep::dim_vector_rep):
+	New arg, fill_value.
+	(dim_vector::resize): Allow optional fill_value argument.
+
+        * Array.cc (Array<T>::index (Array<idx_vector>&, int, const T&)):
+	Don't chop trailing dimensions of Array<idx_vector> if there is
+	more than one element in idx_vector.  Resize the return value to
+	the size of Array<idx_vector>.
+
+	* Array-util.cc (short_freeze): Better freeze of last dimension of
+	idx_vector that is shorter than a dim_vector.
+
+2004-04-23  John W. Eaton  <jwe@octave.org>
+
+	* oct-sort.cc: Don't include oct-obj.h.
+
+2004-04-22  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::index2, Array<T>::indexN):
+	Don't set invalid dimensions on return value.
+
+2004-04-21  John W. Eaton  <jwe@octave.org>
+
+	* mx-inlines.cc (MX_ND_REDUCTION): Chop trailing singletons.
+
+2004-04-06  David Bateman  <dbateman@free.fr>
+
+	* Array.cc (Array<T>::resize_no_fill (const dim_vector& dv),
+	Array<T>::resize_and_fill (const dim_vector& dv, const T& val)):
+	Make their behavior equivalent except for filling vs. not filling.
+
+  	* oct-sort.cc: New template class for arbitrary sorting.
+  	* oct-sort.h: Declaration of sort class.
+  	* Makefile: Add them to the appropriate lists.
+
+2004-04-02  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mx-inlines.cc (MX_ND_CUMULATIVE_OP): Fix off-by-one error.
+
+2004-04-02  David Bateman  <dbateman@free.fr>
+
+	* lo-specfun.cc (besselj, bessely, besseli, besselk, besselh1, 
+	besselh2, airy, biry, betainc, gammainc, do_bessel):
+	New N-d array versions.
+	(SN_BESSEL, NS_BESSEL, NN_BESSEL): New macros.
+	* lo-specfun.h (besselj, bessely, besseli, besselk, besselh1, 
+	besselh2, airy, biry, betainc, gammainc): Provide decls.
+	
+	* dNDArray.cc (NDArray::min, NDArray::max, min, max):
+	New functions.
+	* dNDArray.h (NDArray::min, NDArray::max, min, max): Provide decls.
+
+	* CNDArray.cc (ComplexNDArray::min, ComplexNDArray::max, min, max):
+	New functions.
+	* CNDArray.h (ComplexNDArray::min, ComplexNDArray::max, min, max): 
+	Provide decls.
+
+2004-03-17  David Hoover  <jazzdaq@yahoo.com>
+
+	* DASPK.cc (DASPK::do_integrate): Always add n*n elements to the
+	work vector, not just when using a numerical Jacobian.
+
+2004-03-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* so-array.cc (SND_CMP_OP, NDS_CMP_OP, NDND_CMP_OP):
+	Omit empty result args.
+
+	* Array.cc (Array<T>::Array (const Array<T>&, const dim_vector&)):
+	Move here from Array.h, check that size of array arg is not
+	smaller than the size defined by the new dimensions.
+
+2004-03-10  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::index2): Allow result to be N-d if indexing
+	a scalar or vector with an N-d array.
+
+2004-03-09  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::index2): If scalar or vector is indexed by
+	matrix, return object that is the same size as the index.
+
+	* mx-op-defs.h (NDND_CMP_OP, MM_CMP_OP): Require dimensions to agree.
+	Eliminate MT_RESULT args.  Return value is always size of args.
+	(MS_CMP_OP, SM_CMP_OP, NDS_CMP_OP, SND_CMP_OP):
+	Eliminate EMPTY_RESULT arg.
+	Return value is always size of matrix or N-d array arg.
+	(TBM, FBM, NBM): Delete unused macros.
+
+2004-03-05  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::maybe_delete_elements): Return immediately
+	if all LHS dimensions are zero.  For one index case, freeze and
+	sort idx_vec before checking length, and do nothing if
+	num_to_delete is zero.
+	(Array<T>::maybe_delete_elements_2): Omit Fortran-indexing warning.
+
+2004-03-04  David Bateman  <dbateman@free.fr>
+
+	* dNDArray.cc (NDArray::ifourier): Arg is int, not const int.
+	* CNDArray.cc (ComplexNDArray::ifourier): Likewise.
+
+2004-03-03  Hans Ekkehard Plesser  <hans.ekkehard.plesser@nlh.no>
+
+	* base-lu.cc (base_lu<>::L): Check bounds before setting diagonal
+	element.
+
+2004-03-03  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Range.h (Range::Range): Add cache to member initialization list.
+	(Range::clear_cache): New private function.
+
+	* Range.h (Range::set_base, Range::set_limit, Range::set_inc):
+	Use clear cache.  Don't do anything if range does not change.
+	* Range.cc (Range::sort): Likewise.
+
+2004-03-02  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* Range.cc (Range::matrix_value): Cache result.
+	(Range::sort): Clear cache.
+	* Range.h (Range::cache): New data member.
+	(Range::set_base, Range::set_limit, Range::set_inc): Clear cache.
+	(Range::print_range): Delete.
+
+2004-03-02  David Bateman  <dbateman@free.fr>
+ 
+	* oct-fftw.cc: Only two versions of plan, and avoid endless
+	changes between them.  Faster for small fft's.
+	(octave_fftw_planner::simd_align, octave_fftw_planner::rsimd_align):
+	New member variables. 
+	(octave_fftw_planner::ialign, octave_fftw_planner::oalign,
+	octave_fftw_planner::rialign, octave_fftw_planner::roalign): Delete.
+	Change all uses.
+	(CHECK_SIMD_ALIGNMENT): New macro.
+	(octave_fftw_planner::create_plan): Use it.
+
+2004-03-01  Petter Risholm  <risholm@idi.ntnu.no>
+
+	* Array.cc (Array<T>::insertN): Eliminate N-d indexing.
+
+        * mx-inlines.cc (MX_ND_CAT): Delete macro.
+
+        * dNDArray.h, chNDArray.h, CNDArray.h (cat): Change declaration.
+        * dNDArray.cc (NDArray<T>::cat): Call new form of cat function.
+        * chNDArray.cc (charNDArray<T>::cat): Ditto.
+        * CNDArray.cc (ComplexNDArray<T>::cat): Ditto.
+
+        * Array.h (cat_ra): Return int.  Accept idx and move args, not add_dim.
+        * Array.cc (cat_ra): Speed up implementation by avoiding N-d indexing.
+
+2004-02-24  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-rl-edit.c (octave_rl_set_startup_hook,
+	octave_rl_get_startup_hook, octave_rl_set_event_hook,
+	octave_rl_get_event_hook): Omit casts.
+	* oct-rl-edit.h (rl_startup_hook_fcn_ptr, rl_event_hook_fcn_ptr):
+	Return value for function pointer typedef is now int.
+	* cmd-edit.h (command_editor::startup_hook_fcn,
+	command_editor::event_hook_fcn): Likewise.
+	* cmd-hist.cc, cmd-hist.h (command_history::goto_mark,
+	command_history::do_goto_mark, gnu_history::do_goto_mark):
+	Return type is now int.  Return 0.
+
+	* EIG.cc (EIG::init, EIG::symmetric_init):
+	Query Lapack for workspace size.
+
+2004-02-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::resize_and_fill (const dim_vector&, const T&)): 
+	Fix thinko in extending dimensions.
+
+2004-02-20  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Range.cc (Range::matrix_value, Range::min, Range::max):
+	Don't compute values beyond the limits of the range.
+	(operator << (std::ostream&, const Range&)): Likewise.
+
+2004-02-18  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-fftw.cc (octave_fftw_planner::create_plan):
+	Cast IN and OUT	args to ptrdiff_t instead of long before masking.
+	From Paul Kienzle <pkienzle@users.sf.net>.
+
+	* Array.cc (Array<T>::insertN (const Array<T>&, int, int)):
+	Rename from Array<T>::insert.
+	(Array<T>::insert2 (const Array<T>&, int, int)):
+	Reinstate old Array<T>::insert function under this name.
+	(Array<T>::insert (const Array<T>&, int, int)):
+	New function.  Dispatch to insert2 or insertN as appropriate.
+
+2004-02-17  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-fftw.cc (convert_packcomplex_1d, convert_packcomplex_Nd): 
+	Sprinkle with OCTAVE_QUIT.
+
+2004-02-16  David Bateman  <dbateman@free.fr>
+
+	* oct-fftw.cc (octave_fftw_planner::create_plan, octave_fftw::fftNd):
+	Add support for FFTW 3.x. Include the ability to
+	use the real to complex transform for fft's of real matrices
+	(octave_fftw_planner::create_plan2d): Delete.
+	(octave_fftw::fft2d): Delete.
+	(convert_packcomplex_1d, convert_packcomplex_Nd):
+	New static functions.
+	* oct-fftw.h: Update decls.
+
+	* dMatrix.cc (Matrix::fourier, Matrix::ifourier,
+	Matrix::fourier2d, Matrix::ifourier2d): FFT's use real to complex
+	transforms.  1D FFT of a matrix done as single call rather than
+	loop.  Update for FFTW 3.x
+	* CMatrix.cc (ComplexMatrix::fourier, ComplexMatrix::ifourier,
+	ComplexMatrix::fourier2d, ComplexMatrix::ifourier2d): 1D fft of a
+	matrix done as single call rather than loop.  Update for FFTW 3.x.
+
+	* dNDArray.cc (NDArray::fourier, NDArray::ifourier,
+	NDArray::fourierNd, NDArray::ifouriourNd): New fourier transform
+	functions for Nd arrays.
+	* dNArray.h Provide decls.
+	* CNDArray.cc (ComplexNDArray::fourier, ComplexNDArray::ifourier,
+	ComplexNDArray::fourierNd, ComplexNDArray::ifouriourNd): New
+	fourier transform functions for complex Nd arrays.
+	* CNArray.h: Provide decls.
+	
+2004-02-15  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* Array.cc (Array<T>::insert (const Array<T>&, int, int)):
+	Make it work for N-d arrays.
+
+	* ArrayN.h (ArrayN<T>::insert (const ArrayN<T>& a, int, int)):
+	New function.
+
+	* CNDArray.cc (ComplexNDArray::insert (const NDArray&, int, int),
+	ComplexNDArray::insert (const ComplexNDArray&, int, int)):
+	New functions.
+	* CNDArray.h: Provide decls.
+
+2004-02-14  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (LINK_DEPS): Always define.
+
+	* Array.cc (Array<T>::squeeze): Always return an array with at
+	least two dimensions.
+
+2004-02-13  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* mx-inlines.cc (MX_ND_CAT): New macro.
+	* dNDArray.cc (NDArray::cat): New function.
+	* dNDArray.h: Provide decls.
+	* CNDArray.cc (complexNDArray::cat): New function.
+	* CNDArray.h: Provide decls.
+	* chNDArray.cc (charNDArray::cat): New function.
+	* chNDArray.h: Provide decls.
+
+2004-02-13  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (maybe_delete_elements_2): Allow X(n) = [] for 2-d X.
+	(Array<T>assign2): Also call maybe_delete_elements for single
+	index when rows and columns or LHS are both greater than 1.
+
+2004-02-13  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* Array.cc (Array<T>::maybe_delete_elements):
+	Check for index out of bounds.	Handle one index.
+
+	* Array.cc (Array<T>::indexN): Use dim_vector (0, 0) instead of
+	dim_vector (0) to create empty return vector.
+
+2004-02-07  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::assignN): Don't crash if trying to resize a
+	non-empty LHS when the number of lhs dimensions is less than the
+	number of indices.  Detect error if attempting to resize non-empty
+	LHS with colon indices.
+
+2004-02-06  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::resize_and_fill): Don't bother to assign any
+	values unless the length of the new array is greater than 0.
+	(Array<T>::resize_no_fill): Likewise.
+
+	* Array-util.cc (index_in_bounds): Also return false if ra_idx(i)
+	is equal to dimensions(i).
+
+	* Array-util.h, Array-util.cc (equal_arrays, any_zero_len,
+	get_zero_len_size, number_of_elements):
+	Delete unused functions.
+
+	* Array-util.cc (get_ra_idx): Use dim_vector::numel instead of
+	number_of_elements function.
+	* Array.cc (Array<T>::indexN): Likewise.
+
+	* Array.cc (Array<T>::indexN): Use dim_vector::operator == instead
+	of equal_arrays function.
+	(Array<T>::index, Array<T>::indexN, Array<T>::assignN) Use
+	dim_vector::any_zero instead of any_zero_len function.
+
+	* Array.cc (Array<T>::assignN): Eliminate special case for empty index.
+	Don't skip reshaping and resizing if RHS is empty.
+
+	* Array.cc (Array<T>::assignN): Simplify loop for array	assignment.
+	Move body of MAYBE_RESIZE_ND_DIMS here since it is only used once.  
+	Delete unused variables is_colon and is_colon_equiv.
+	Correctly resize for expressions like x(:,:,2) = ones(3,3) when
+	LHS is not yet defined.
+	Error for resizing if number of indices is less than number of LHS
+	dimensions.
+
+	* Array.cc (Array<T>::maybe_delete_elements): Maybe warn about
+	Fortran-style indexing.
+
+2004-02-05  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::assignN): Simplify.
+	Allow assignments to succeed if number if indices is less than the
+	number of RHS dimensions.
+
+2004-02-05  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* Array.cc (Array<T>::maybe_delete_elements): Reshape LHS
+	when number of indices is less than number of dimensions.
+
+	* Array.cc (Array<T>::assignN, Array<T>::maybe_delete_elements):
+	Remove unsued variable lhs_inc.
+
+	* Array.cc (Array<T>::maybe_delete_elements): Declare idx_is_colon
+	and idx_is_colon_equiv Array<int> instead of dim_vector.
+
+	* Array.cc (Array<T>::assignN): Compute new dims in a cleaner way.
+
+	* Array.cc (Array<T>::index): Check for frozen_lengths.length ()
+	== n_dims before checking to see if all indices are colon_equiv.
+
+2004-02-05  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::assignN): Require RHS == 0x0 matrix for
+	deleting elements.
+	(Array<T>::index): Remove trailing singletons in ra_idx, but leave
+	at least ndims elements.
+
+2004-02-05  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* Array.cc (Array<T>::assignN): Accept assignment of a vector
+	oriented differently from the index.
+
+	* dim-vector.h (dim_vector::squeeze): Return value always has at
+	least two dimensions.
+
+2004-02-04  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dim-vector.h (dim_vector::squeeze): New function.
+	(Array<T>::assignN): Use it instead of chop_trailing_singltons for
+	deciding whether the assignment conforms.
+
+	* Array.cc (Array<T>::assignN): Simplify dimension check by
+	comparing rhs_dims and frozen_len sans trailing singletons.
+
+2004-02-03  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.cc (tree_to_mat_idx): New arg, conversion_error.
+	Call error handler and return conversion_error == true if arg is
+	not integer.
+	(IDX_VEC_REP::idx_vector_rep): Exit early if conversion_error.
+
+2004-02-02  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* boolNDArray.h (boolNDArray::boolNDArray): Declare dim_vector
+	reference arg const.
+
+2004-01-30  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-flags.cc: Include Array-flags.h, not Array.h.  Doh.
+
+2004-01-30  Jakub Bogusz  <qboosh@pld-linux.org>
+
+	* Array-flags.h (liboctave_wfi_flag, liboctave_wrore_flag):
+	Now bool, to match definition in Array-flags.cc.
+
+2004-01-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.cc: Include <vector> instead of <memory> for new
+	definition of OCTAVE_LOCAL_BUFFER.
+
+	* EIG.cc, EIG.h (EIG::init, EIG::symmetric_init, EIG::hermitian_init):
+	New arg, calc_eigenvectors.
+	* EIG.h (EIG:EIG): New optional arg, calc_eigenvectors.
+	Based on patch from David Bateman <dbateman@free.fr>.
+
+2004-01-22  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::assign2, Array<T>::assignN):
+	For X(I) = RHS, don't restrict I to fewer elements than X.
+
+	* Array.cc (Array<T>::assign2): Simplify indexing for X(I) = RHS case.
+
+2004-01-22  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* mx-inlines.cc	(MX_ND_REDUCTION, MX_ND_CUMULATIVE_OP):
+	Simplify calculation of number of elements in retval.
+
+	* Array.cc (Array<T>::assignN): Eliminate unnecessray code for
+	filling when RHS is scalar and dimension lengths agree.
+
+2004-01-22  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (distclean): Remove mx-ops.h, $(MX_OP_INC),
+	$(VX_OP_INC), $(MX_OP_SRC), $(VX_OP_SRC), and $(OPTS_INC).
+
+2004-01-22  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* Array.cc (Array<T>::resize_and_fill): Correctly copy old elements.
+	(Array<T>::assign2): Check for RHS dimensions larger than 2.
+
+2004-01-21  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* Array.h (Array<T>::chop_trailing_singletons): New function.
+	* Array.cc (Array<T>::assignN): Use it on LHS.
+
+	* Array.cc (Array<T>::assignN): Fix incorrectly nested if statement.
+	Retrieve scalar element by passin 0 instead of an index array.
+	Check for singleton dimensions where RHS is matrix or higher dimension.
+	Make sure index is in bounds.
+
+2004-01-19  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.cc (octave_ieee_init): Ensure that octave_Inf,
+	octave_NaN, and octav_NA values are always initialized.  Check
+	floating point format, not HAVE_ISINF, HAVE_FINITE, or HAVE_ISNAN
+	to decide whether to do IEEE initialization.
+
+2004-01-06  David Bateman  <dbateman@free.fr>
+
+ 	* CNDArray.cc (ComplexNDArray::any_element_is_inf_or_nan, 
+ 	ComplexNDArray::all_elements_are_real, ComplexNDArray::all_integers,
+ 	ComplexNDArray::too_large_for_float): New functions
+ 
+ 	* CNDArray.cc (operator <<, operator >>): New IO operators.
+ 	* CNDArray.h: Provide decls.
+ 	* dNDArray.cc (operator <<, operator >>): New IO operators.
+ 	* dNDArray.h: Provide decls.
+
+2003-12-10  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mx-ops: Delete bnda x bnda, b x bnda, and bnda x b ops since
+	they are already defined in boolNDArray.cc.
+
+	* Array-util.cc (get_zero_len_size): Delete.
+	* Array.cc (Array<T>::index (Array<idx_vector>&, int, const T&)):
+	Handle zero-length result dimensions the same as empty original
+	indices.
+
+2003-12-09  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dim-vector.h (dim_vector::chop_trailing_singleton_dims,
+	dim_vector::dim_vector_rep::chop_trailing_singleton_dims):
+	New functions.
+	* Array.cc (ArrayN<T>::indexN): Use it.
+	(ArrayN<T>::index (Array<idx_vector>&, int, const T&)): Likewise.
+
+2003-11-26  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* boolNDArray.cc: Define BOOL ops.  Define mixed CMP ops.
+	* boolNDArray.h: Declare BOOL ops.  Declare mixed CMP ops.
+
+2003-11-25  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mk-ops.awk: Also emit #include "Array-util.h".
+
+	* mx-ops: Add bool, boolMatrix, and boolNDarray types.
+	Add bnda x bnda, b x bnda, and bnda x b ops.
+
+	* MArray-misc.cc: Delete.
+	* Makefile.in (MATRIX_SRC): Remove it from the list.
+
+	* Array-util.h, Array-util.cc (gripe_nonconformant): Move here from
+	MArray.h, MArray2.h, MArrayN.h, and MArray-misc.cc.
+
+2003-11-24  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleQR.cc (QR::init): Use separate pwork pointers.
+	* CmplxQR.cc (ComplexQR::init): Likewise.
+
+	* oct-group.cc (octave_group::getgrnam): Pass correct args to
+	two-arg getgrnam version.
+
+	* Array.cc (assignN): Allow single indexing to work.
+	(Array<T>::range_error (const char*, const Array<int>&)):
+	Report index values.
+
+	* Array.cc (Array<T>::index): Delete unused arg names.
+	* ODESSA.cc (odessa_j): Likewise.
+	* DASRT.cc (ddasrt_f, ddasrt_g): Likewise.
+	* DASPK.cc (ddaspk_psol): Likewise.
+	* lo-mappers.cc (imag): Likewise.
+	* Array-util.cc (get_zero_len_size): Likewise.
+	* kpse.cc (path_search, path_find_first_of): Likewise.
+	* cmd-edit.cc (do_generate_filename_completions): Likewise.
+
+	* dim-vector.h (dim_vector::all_ones): New function.
+
+2003-11-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.h (idx_vector::orig_empty): Check orig_dims for
+	zeros, not orig_rows or orig_columns.
+	(idx_vector::idx_vector_rep::orig_rows): Define using orig_dims.
+	(idx_vector::idx_vector_rep::orig_columns): Likewise.
+
+	* idx-vector.cc (idx_vector::idx_vector_rep::orig_nr,
+	(idx_vector::idx_vector_rep::orig_nc): Delete.
+
+	* idx-vector.cc (idx_vector::idx_vector_rep):
+	Use initialization lists for constructors.
+
+	* Array.cc (Array<T>::indexN): Correctly handle single colon index.
+	Omit special case for ra_idx.capacity () == 1.
+	Always allow single index for matrix args with optional warning.
+
+	* idx-vector.h, idx-vector.cc: Convert boolMatrix functions to use
+	boolNDArray.  Likewise, convert Matrix functions to use	NDArray.
+
+	* Array-so.cc: New file.  Move instantiations here from so-array.h.
+	* Makefile.in (TI_SRC): Add it to the list.
+
+	* MArray-defs.h (DO_VS_OP2, DO_VV_OP2): Accept args for element
+	type and the names of the left and right operands.  Change all uses.
+
+	* so-array.cc, so-array.h: New files.  Move streamoff_array here
+	from src/ov-streamoff.h and src/ov-streamoff.cc.
+
+2003-11-20  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* MArrayN.cc (operator -=, operator +=): Check dimensions, not
+	just length.
+
+	* Array2.h, Array3.h, DiagArray2.h, DiagArray2.cc, MDiagArray2.h,
+	ArrayN.h:  Add this-> or Base:: qualifiers for references to
+	non-dependent member functions and data as needed.
+
+	* DiagArray2.h, DiagArray2.cc: Delete unused code.
+
+	* Array2.h (Array2<T>::operator =): Don't copy dimensions here.
+	* Array3.h (Array3<T>::operator =): Likewise.
+	* DiagArray2.h (DiagArray2<T>::operator =): Likewise.
+	Include Array.h, not Array2.h.
+
+2003-11-19  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* str-vec.cc (list_in_columns): Fix previous change.
+
+	* dim-vector.h (dim_vector::num_ones): New function.
+	* Array.cc (maybe_delete_elements): Use it instead of
+	num_ones (const Array<int>&).
+
+	* Array.cc (assignN): Omit dubious check of singleton dimensions.
+
+	* dNDArray.cc (NDArray::all_elements_are_int_or_inf_or_nan,
+	NDArray::any_element_is_inf_or_nan, NDArray::too_large_for_float):
+	New functions.
+	* dNDArray.h: Provide decls.
+
+	* dMatrix.h (Matrix::any_element_is_negative,
+	Matrix::any_element_is_inf_or_nan, Matrix::too_large_for_float,
+	Matrix::all_elements_are_int_or_inf_or_nan, Matrix::all_integers):
+	Simplify.
+
+	* dNDArray.cc (NDArray::abs): Make it work for N-d arrays.
+	* CNDArray.cc (ComplexNDArray::abs): Likewise.
+
+	* dNDArray.cc (real, imag): New functions.
+	* dNDArray.h: Provide decls.
+
+2003-11-18  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (TEMPLATE_SRC): Move MArrayN.cc here from MATRIX_SRC.
+
+2003-11-15  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.h (Array<T>::resize (int, const T&)): Reinstate.
+	* MArray.h (resize): Delete.
+	* MArray2.h (resize): Delete.
+	* DASRT.cc (DASRT::integrate): Use resize, not resize_and_fill.
+	* ODESSA (ODESSA::integrate): Likewise.
+
+2003-11-14  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (dist): Depend on stamp-prereq.
+
+2003-11-12  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mach-info.c (oct_mach_info::init_float_format) [CRAY]:
+	Kluge to make it work.
+
+	* lo-ieee.cc (octave_ieee_init): Set octave_Inf, octave_NaN, and
+	octave_NA to DBL_MAX if native float format is vaxd, vaxg, or cray.
+
+	* cmd-edit.cc (gnu_readline::do_generate_filename_completions,
+	default_command_editor::do_generate_filename_completions,
+	command_editor::generate_filename_completions): New functions.
+	* cmd-edit.h: Provide decls.
+	* oct-rl-edit.c (octave_rl_filename_completion_function): New
+	function.
+	* oct-rl-edit.h: Provide decl.
+
+2003-11-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.h (INSTANTIATE_ARRAY_ASSIGN, INSTANTIATE_ARRAY_AND_ASSIGN,
+	INSTANTIATE_ARRAY): New macros.
+	* Array-C.cc, Array-b.cc, Array-ch.cc, Array-d.cc, Array-i.cc,
+	Array-idx-vec.cc, Array-s.cc, Array-str.cc, ODESSA.cc: Use them.
+
+	* Array.h (Array<T>::ipermute): New function.
+
+2003-11-11  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* Array.cc (Array<T>::permute): New function.
+	* Array.h: Provide decl.
+
+	* Array-util.cc (calc_permutated_idx): New function.
+	* Array-util.h: Provide decl.
+
+2003-11-10  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::index2): Return value has orientation of
+	indexed value if indexing a vector with a bool matrix.
+
+	* ArrayN.h (ArrayN<T>::get_size): Delete.
+
+	* Array.cc, ArrayN.cc, dNDArray.cc, CNDArray.cc, boolNDArray.cc,
+	chNDArray.cc: Include Array-util.h instead of ArrayN-inline.h.
+
+	* ArrayN-inline.h: Delete.
+	* Array-util.h, Array-util.cc: New files, from ArrayN-inline.h.
+	* Makefile.in: Fix the appropriate lists.
+
+	* Array.cc, Array.h, ArrayN.h, CMatrix.cc, CNDArray.h,
+	CRowVector.cc, CmplxQR.cc, CollocWt.h, DASPK.h, DASRT.h, DASSL.h,
+	FEGrid.cc, LP.h, LSODE.h, MArrayN.h, ODE.h, ODES.h, ODESSA.cc,
+	boolNDArray.h, chNDArray.h, dMatrix.cc, dNDArray.h, dRowVector.cc,
+	dbleQR.cc, kpse.cc, oct-rl-hist.c, str-vec.cc, str-vec.h:
+	Avoid -Wshadow warnings.
+
+2003-11-08  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.h (Array<T>::nil_rep): Qualify return type with typename.
+
+	* mk-ops.awk: Delete elements of bool_headers array individually.
+
+2003-11-07  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (maybe_delete_elements): Rename arg idx to ra_idx.
+
+2003-10-31  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* mx-inlines.cc (MX_ND_CUMULATIVE_OP): New macro.
+
+	* CNDArray.cc, CNDArray.h (ComplexNDArray::cumsum,
+	ComplexNDArray::cumprod): Return ComplexNDArray.  Handle N-d arrays.
+	* dNDArray.cc, dNDArray.h (NDArray::cumsum, NDArray::cumprod):
+	Return NDArray.  Handle N-d arrays.
+
+2003-10-31  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* LSODE.cc (LSODE::do_integrate): Avoid name conflict on systems
+	that upcase Fortran names by calling dlsode instead of lsode.
+
+	* ODESSA.cc (ODESSA::do_integrate): Avoid name conflict on systems
+	that upcase Fortran names by calling dodessa instead of odessa.
+
+	* file-ops.cc (file_ops::symlink): Cope with systems that expect
+	non-const args for symlink system call.
+	(file_ops::readlink): Likewise, for readlink.
+
+	* DASRT.cc (DASRT::integrate): Fix typo in Fortran function name.
+
+2003-10-30  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mach-info.h (oct_mach_info): Prefix enum elements with flt_fmt_.
+	Change all uses.
+
+2003-10-29  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* dNDArray.cc (NDArray::cumprod, NDArray::cumsum, NDArray::prod,
+	NDArray::sum, NDArray::sumsq, NDArray::abs): New functions.
+	* dNDArray.h: Provide decls.
+	* CNDArray.cc (ComplexNDArray::cumprod, ComplexNDArray::cumsum,
+	ComplexNDArray::prod, ComplexNDArray::sum, ComplexNDArray::sumsq,
+	ComplexNDArray::abs): New functions.
+	* CNDArray.h: Provide decls.
+
+	* mx-inlines.cc (MX_ND_REDUCTION): Rename from MX_ND_ANY_ALL.
+	Generalize to handle other reduction operations.
+	(MX_ND_REAL_OP_REDUCTION, MX_ND_COMPLEX_OP_REDUCTION,
+	MX_ND_ALL_ANY_REDUCTION): New macros.
+
+2003-10-29  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::reshape): New function.
+	* Array.h: Provide decl.
+
+	* dim-vector.h (dim_vector::numel): New function.
+
+	* dim-vector.h (dim_vector_rep::dim_vector_rep (int, const
+	dim_vector&)): Correctly handle case of n < dv->ndims.
+
+2003-10-28  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dim-vector.h (dim_vector::any_zero): New function.
+	(dim_vector::str): New default arg, sep.
+
+	* Array.h (Array<T>::numel): New function.
+
+2003-10-27  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* mx-inlines.cc (MX_ND_ALL_EXPR, MX_ND_ANY_EXPR,
+	MX_ND_ALL_EVAL, MX_ND_ANY_EVAL, MX_ND_ALL_ANY): New macros.
+	* dNDArray.h (NDArray::all, NDArray::any): Return type now boolNDArray.
+	* CNDArray.h (ComplexNDArray::all, ComplexNDArray::any): Likewise.
+	* boolNDArray.h (boolNDArray::all, boolNDArray::any): Likewise.
+	* chNDArray.h (charNDArray::all, charNDArray::any): Likewise.
+	* dNDArray.cc (NDArray::all, NDArray::any): Make them work.
+	* CNDArray.cc (ComplexNDArray::all, ComplexNDArray::any): Likewise.
+	* boolNDArray.cc (boolNDArray::all, boolNDArray::any): Likewise.
+	* chNDArray.cc (charNDArray::all, charNDArray::any): Likewise.
+
+2003-10-27  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::resize_and_fill): Allow number of dimensions
+	to change.  From Petter Risholm  <risholm@stud.ntnu.no>.
+
+	* oct-rand.cc, CColVector.cc, CMatrix.cc, CRowVector.cc,
+	CmplxAEPBAL.cc CmplxCHOL.cc, CmplxHESS.cc, CmplxLU.cc, CmplxQR.cc,
+	CmplxQRP.cc, CmplxSCHUR.cc, CmplxSVD.cc, CollocWt.cc, DASPK.cc,
+	DASRT.cc, DASSL.cc, EIG.cc, LSODE.cc,  NLEqn.cc, ODESSA.cc,
+	Quad.cc, dColVector.cc, dMatrix.cc, dRowVector.cc, dbleAEPBAL.cc,
+	dbleCHOL.cc, dbleHESS.cc, dbleLU.cc, dbleQR.cc, dbleQRP.cc,
+	dbleSCHUR.cc, dbleSVD.cc, lo-specfun.cc:
+	Use new F77 arg macros in declarations of external Fortran
+	subroutines and for calling them.
+
+2003-10-25  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::resize_no_fill (const dim_vector&)):
+	Allow number of dimensions to change.
+	(Array<T>::resize_no_fill (int, int)): Require ndims to be 0 or 2.
+	(Array<T>::resize_and_fill (int, int, const T&)): Likewise.
+	(Array<T>::resize_no_fill (int, int, int)): Require ndims to be 0 or 3.
+	(Array<T>::resize_and_fill (int, int, int, const T&)): Likewise.
+	(Array<T>::transpose): Require ndims to be 2.
+	(Array<T>::index2): Likewise.
+	(Array<T>::index (idx_vector&, idx_vector&, int, const T&)): Likewise.
+	(Array<T>::maybe_delete_elements_2): Likewise.
+	(Array<T>::maybe_delete_elements (idx_vector&, idx_vector&)): Likewise.
+	(Array<T>::index1): Use resize_and_fill.
+	(MAYBE_RESIZE_ND_DIMS): Likewise.
+
+	* ODESSA.cc (ODESSA::integrate): Use resize_and_fill for x_s_out.
+
+	* MArray2.h (MArray2<T>::resize (int, int)): New function.
+	(MArray2<T>::resize (int, int, const T&)): New function.
+
+	* MArray.h (MArray<T>::resize (int)): New function.
+	(MArray<T>::resize (int, const T&)): New function.
+
+	* DASRT.cc (DASRT::integrate): Use resize_and_fill for jroot.
+
+	* DASPK-opts.in: Use single-arg resize for initial condition
+	heuristics.
+
+	* dim-vector.h (class dim_vector): Now reference counted.
+	(dim_vector_rep::elem): Use assert to check that index is in bounds.
+
+2003-10-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::squeeze): Delete redundant retval decl.
+
+	* mx-cdm-cm.cc, mx-cdm-cm.h, mx-cdm-cs.cc, mx-cdm-cs.h,
+	mx-cdm-dm.cc, mx-cdm-dm.h, mx-cdm-m.cc, mx-cdm-m.h, mx-cdm-s.cc,
+	mx-cdm-s.h, mx-cm-cdm.cc, mx-cm-cdm.h, mx-cm-dm.cc, mx-cm-dm.h,
+	mx-cm-m.cc, mx-cm-m.h, mx-cm-s.cc, mx-cm-s.h, mx-cs-cdm.cc,
+	mx-cs-cdm.h, mx-cs-dm.cc, mx-cs-dm.h, mx-cs-m.cc, mx-cs-m.h,
+	mx-dm-cdm.cc, mx-dm-cdm.h, mx-dm-cm.cc, mx-dm-cm.h, mx-dm-cs.cc,
+	mx-dm-cs.h, mx-dm-m.cc, mx-dm-m.h, mx-dm-s.cc, mx-dm-s.h,
+	mx-m-cdm.cc, mx-m-cdm.h, mx-m-cm.cc, mx-m-cm.h, mx-m-cs.cc,
+	mx-m-cs.h, mx-m-dm.cc, mx-m-dm.h, mx-ops.h, mx-s-cdm.cc,
+	mx-s-cdm.h, mx-s-cm.cc, mx-s-cm.h, mx-s-dm.cc, mx-s-dm.h,
+	vx-ccv-cv.cc, vx-ccv-cv.h, vx-ccv-s.cc, vx-ccv-s.h, vx-crv-rv.cc,
+	vx-crv-rv.h, vx-crv-s.cc, vx-crv-s.h, vx-cs-cv.cc, vx-cs-cv.h,
+	vx-cs-rv.cc, vx-cs-rv.h, vx-cv-ccv.cc, vx-cv-ccv.h, vx-cv-cs.cc,
+	vx-cv-cs.h, vx-rv-crv.cc, vx-rv-crv.h, vx-rv-cs.cc, vx-rv-cs.h,
+	vx-s-ccv.cc, vx-s-ccv.h, vx-s-crv.cc, vx-s-crv.h: Delete.  These
+	files are now automatically generated.
+
+	* Makefile.in ($(VX_OP_INC), $(VX_OP_SRC), $(MX_OP_INC),
+	$(MX_OP_SRC)): Generate lists with new mk-ops.awk script.
+	Add rules to generate these files and mx-ops.h.
+	(stamp-prereq): Depend on these files.
+
+	* mx-ops, vx-ops, mk-ops.awk: New files.
+	* Makefile.in (DISTFILES): Add them to the list.
+
+2003-10-17  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* NDArray.cc (NDArray::NDArray (const boolNDArray),
+	NDArray::NDArray (const charNDArray)): New constructors.
+	(NDArray::operator !): New function.
+	Provide NDS_CMP_OPS, NDS_BOOL_OPS, SND_CMP_OPS, SND_BOOL_OPS,
+	NDND_CMP_OPS, NDND_BOOL_OPS.
+
+	* CNDArray.cc (ComplexNDArray::ComplexNDArray (const NDArray&),
+	ComplexNDArray::ComplexNDArray (const boolNDArray&),
+	ComplexNDArray::ComplexNDArray (const charNDArray&)):
+	New constructors.
+	(ComplexNDArray::operator !): New function.
+	Provide NDS_CMP_OPS, NDS_BOOL_OPS, SND_CMP_OPS, SND_BOOL_OPS,
+	NDND_CMP_OPS, NDND_BOOL_OPS.
+
+	* ArrayN.h (resize (const dim_vector&)): Fix typo.
+
+	* boolNDArray.cc (boolNDArray::operator !): New function.
+	Provide NDND_CMP_OPS.
+
+	* MArrayN.cc (operator +=, operator -=): New functions.
+	Provide product and quotient functions.
+
+	* MArray-misc.cc (gripe_nonconformant (const char *, dim_vector&,
+	dim_vector&)): New function.
+
+	* dim-vector.h (dim_vector::str, dim_vector::all_zero,
+	operator ==, operator !=): New functions.
+	* ArrayN.cc (operator <<): Use dim_vector::str here.
+
+	* Array.cc (Array<T>::resize_no_fill, Array<T>::resize_and_fill):
+	No need to save old dimensions.
+
+	* oct-rand.cc (MAKE_RAND_ND_ARRAY): New macro.
+	(octave_rand::nd_array): New function.
+	* oct-rand.h (octave_rand::nd_array): Provide decl.
+
+	* mx-op-defs.h (NDCMP_OP_DECL, NDBOOL_OP_DECL, NDS_BIN_OP_DECLS,
+	NDS_BIN_OP, NDS_BIN_OPS, NDS_CMP_OP_DECLS, NDS_CMP_OP,
+	NDS_CMP_OPS, NDS_BOOL_OP_DECLS, NDS_BOOL_OP, NDS_BOOL_OPS,
+	NDS_OP_DECLS, SND_BIN_OP_DECLS, SND_BIN_OP, SND_BIN_OPS,
+	SND_CMP_OP_DECLS, SND_CMP_OP, SND_CMP_OPS, SND_BOOL_OP_DECLS,
+	SND_BOOL_OP, SND_BOOL_OPS, SND_OP_DECLS, NDND_BIN_OP_DECLS,
+	NDND_BIN_OP, NDND_BIN_OPS, NDND_CMP_OP_DECLS, NDND_CMP_OP,
+	NDND_CMP_OPS, NDND_BOOL_OP_DECLS, NDND_BOOL_OP, NDND_BOOL_OPS,
+	NDND_OP_DECLS): New macros.
+	* mx-cm-m.h, mx-cm-s.h, mx-cs-m.h, mx-m-cm.h, mx-m-cs.h,
+	mx-s-cm.h, mx-cm-m.cc, mx-cm-s.cc, mx-cs-m.cc, mx-m-cm.cc,
+	mx-m-cs.cc, mx-s-cm.cc: Use them.
+
+	* mx-defs.h (class NDArray, class ComplexNDArray, class
+	boolNDArray, class charNDArray): New forward decls.
+
+2003-10-15  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (assign2): No error (but don't do anything either) for
+	expressions like x([],j) = scalar.
+
+2003-10-09  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (assignN): Allow lhs(:) = scalar.
+
+	* CNDArray.cc (ComplexNDArray::increment_index): New function.
+	* dNDArray.cc (NDArray::increment_index): Likewise.
+	* boolNDArray.cc (boolNDArray::increment_index): Likewise.
+	* chNDArray.cc (charNDArray::increment_index): Likewise.
+
+	* dim-vector.h (rows, cols): Delete unused data members.
+
+	* Array.cc (Array<T>::get_size): Fix thinko.
+
+2003-10-08  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::squeeze): New function.
+	* CNDArray.h (ComplexNDArray::squeeze): Likewise.
+	* dNDArray.h (NDArray::squeeze): Likewise.
+	* boolNDArray.h (boolNDArray::squeeze): Likewise.
+	* chNDArray.h (charNDArray::squeeze): Likewise.
+
+2003-10-06  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* Array.cc (ArrayN<T>::indexN): New definition.
+	* Array.h (Array<T>::indexN): Provide decl.
+	* Array.cc (ArrayN<T>::index (idx_vector&, int, const T&):
+	Call indexN if more than 2 indices.
+	(ArrayN<T>::index (Array<idx_vector>&, int, const T&)):
+	Make it (mostly) work.
+	* ArrayN-inline.h (number_of_elements, get_ra_idx, short_freeze):
+	New functions.
+
+2003-10-02  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.cc (do_readline): Pass eof to octave_fgetl.
+	* lo-utils.cc (octave_fgets, octave_fgetl): New overloaded
+	versions with eof arg.
+
+2003-09-20  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.h (dimensions): Now public.
+	template <class LT, class RT>
+	(assign (Array<LT>&, const Array<RT>&, const LT&),
+	assign1 (Array<LT>&, const Array<RT>&, const LT&),
+	assign2 (Array<LT>&, const Array<RT>&, const LT&),
+	assignN (Array<LT>&, const Array<RT>&, const LT&),
+	resize_no_fill (int),
+	resize_no_fill (int, int),
+	resize_no_fill (int, int, int),
+	resize_no_fill (const dim_vector&),
+	resize_and_fill (int, const T&),
+	resize_and_fill (int, int, const T&),
+	resize_and_fill (int, int, int, const T&),
+	resize_and_fill (const dim_vector&, const T&)): Now public.
+
+	* Array.cc: Include <climits>.
+
+2003-09-19  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc: Merge Array-idx.h.
+	* Array-idx.h: Delete.
+
+	* chNDArray.h, chNDArray.cc, boolNDArray.h, boolNDArray.cc: New files.
+
+	* Array.h, Array-idx.h, Array.cc: Fold all N-d functionality here.
+	Turn inheritance hierarchy upside down (2-d and 3-d arrays are now
+	just special cases of the general purpose N-d Array object).
+
+	* dim-vector.h: New file.  Use dim_vector objects instead of
+	ints or Array<int> objects to represent the size of Array
+	objects.
+
+	* MArray-defs.h (INSTANTIATE_MARRAYN_FRIENDS): New macro.
+
+	* Array2-idx.h, Array3-idx.h, Array2.cc, Array3.cc: Delete.
+
+	* mx-base.h: Include NDArray header files.
+
+	* MArray-C.cc, MArray-d.cc: Also instantiate ArrayN objects.
+
+	* Array-C.cc, Array-b.cc, Array-ch.cc, Array-d.cc, Array-i.cc,
+	Array-s.cc: Also instantiate ArrayN objects.
+	Don't instantiate assign funcitons for Array2 objects.
+
+	* CDiagMatrix.cc (ComplexDiagMatrix::diag): Signal error with
+	liboctave_error_handler, not cerr.
+	* CMatrix.cc (ComplexMatrix::diag): Likewise.
+	* dDiagMatrix.cc (DiagMatrix::diag): Likewise.
+	* dMatrix.cc (Matrix::diag): Likewise.
+
+	* Array-flags.cc, Array.cc, Array.h, Array2.h, Array3.h, ArrayN.h:
+	Omit checks for HEAVYWEIGHT_INDEXING.
+
+2003-09-12  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mx-base.h: Include CNDarray.h.  Include dNDArray.h, not NDArray.h.
+
+	* CNDARray.h, CNDArray.cc: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+	* dNDArray.h: Rename from NDArray.h.
+	* dNDArray.cc: Rename from NDArray.cc.
+	* Makefile.in: Rename them here too.
+
+2003-09-10  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* mx-base.h: Include NDArray.h, not ArrayN.h.
+
+	* MArrayN.cc, MArrayN.h, NDArray.h, NDArray.cc: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+2003-09-09  David Bateman  <dbateman@free.fr>
+
+	* lo-specfun.cc (zbesj, zbesy, zbesi, zbesk, zbesh1, zbesh2, airy,
+	biry): Always request scaled results from AMOS functions and
+	perform reverse scaling on results if scaled result not requested
+	by user.
+
+2003-09-04  John W. Eaton  <jwe@bevo.che.wisc.edu>
+ 
+ 	* lo-specfun.cc (xlgamma): Require nonnegative argument.
+
+2003-09-09  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-d.cc: Instantiate assign functions.
+
+2003-09-09  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* ArrayN-idx.h (vector_equivalent, equal_arrays): New functions.
+	(get_elt_idx): Index ra_idx correctly.
+
+	* ArrayN-inline.h (index_in_bounds): Index is also condidered in
+	bounds if it is exactly on the bound.
+
+	* ArrayN.cc (ArrayN<T>::maybe_delete_dims): New function.
+	* ArrayN.h: Provide decl.
+
+	* ArrayN.h (ArrayN<T>::ArrayN<T> (const Matrix&)): New constructor.
+
+	* idx-vector.h (idx_vector::orig_dims): New member variable.
+	(idx_vector::idx_vector_rep::orig_dimensions): New function.
+	(idx_vector::orig_dimensions): New function.
+
+2003-09-04  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-specfun.cc (xlgamma): Require nonnegative argument.
+
+2003-09-04  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* ArrayN-idx.h (maybe_delete_elements): Implement function.
+	(is_in, how_many_lgt, all_ones): New functions.
+
+2003-09-03  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (MATRIX_INC): Add ArrayN-inlines.h to the list.
+
+2003-09-03  Petter Risholm  <risholm@stud.ntnu.no>
+	
+	* ArrayN-inline.h: New file.
+	(index_in_bounds, increment_index): Move here.
+	* ArrayN.cc: From here.
+
+	* ArrayN.h (maybe_delete_elements): New arg, resize_fill_value.
+	* ArrayN-idx.h (assign): New function.
+
+2003-08-28  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-specfun.cc (zbesj, zbesy, zbesi, zbesk, airy, biry):
+	Also zero imaginary part of result if real part of input value is
+	zero.
+
+2003-07-30  Heine Kolltveit  <kolltvei@idi.ntnu.no>
+
+	* mx-base.h: Include ArrayN.h.
+
+2003-30-07  Heine Kolltveit  <kolltvei@idi.ntnu.no>
+
+        * ArrayN.cc (operator <<): Corrected output.
+
+2003-07-30  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* ArrayN.cc (increment_index): New arg, start_dimension.
+
+2003-07-29  Heine Kolltveit  <kolltvei@idi.ntnu.no>
+
+	* ArrayN.cc (operator <<): Improve output readability.
+
+2003-07-29  Petter Risholm  <risholm@stud.ntnu.no>
+
+	* ArrayN.cc (ArrayN<T>::resize (const Array<int>&, const T&)):
+	* ArrayN.cc (ArrayN<T>::resize (const Array<int>&)):
+	Initialize old_len before changing size.
+
+2003-07-29  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install-lib): Use $(INSTALL), not
+	$(INSTALL_PROGRAM) for $(SHLLIB) files.
+
+2003-07-25  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc (xmin, xmax): Handle NaN in a Matlab-compatible
+	way.  Handle NA in an R-compatible way.
+
+	* lo-cieee.c (lo_ieee_is_NaN_or_NA): Also check for lo_ieee_is_NA.
+	(lo_ieee_is_NA): Don't call isnan unless HAVE_ISNAN is defined.
+
+	* lo-mappers.h (octave_is_NA (const Complex&)): Provide decl.
+	(octave_is_NaN_or_NA (const Complex&)): Likewise.
+
+	* dMatrix.cc (Matrix::row_min, Matrix::row_max,
+	Matrix::column_min, Matrix::column_max): Ignore NaNs.
+	* CMatrix.cc (ComplexMatrix::row_min, ComplexMatrix::row_max,
+	ComplexMatrix::column_min, ComplexMatrix::column_max): Likewise.
+
+2003-07-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (assign (Array2<LT>&, const Array2<RT>&, const LT&)):
+	Pass true for resize_ok arg to freeze.
+	* Array-idx.h (assign (Array<LT>&, const Array<RT>&, const LT&)): 
+	Likewise.
+
+	* idx-vector.cc (IDX_VEC_REP::freeze): New arg, warn_resize;
+	resize_ok arg is now bool.
+	* idx-vector.h (idx_vector::freeze): Likewise.
+
+	* Array-flags.cc, Array-flags.h (liboctave_wrore_flag):
+	Rename from liboctave_rre_flag.  Now bool.
+	(liboctave_wfi_flag): Now bool.
+
+	* Array2-idx.h (MAYBE_RESIZE_LHS): Don't check liboctave_rre_flag.
+
+2003-07-11  Russell Standish  <R.Standish@unsw.edu.au>
+
+	* Array.h (resize_fill_value): Now a top-level template function.
+	Accept object as argument.  Change all uses.
+
+2003-07-09  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-flags.cc, Array-flags.h (liboctave_pcv_flag): Delete.
+
+	* Array2-idx.h (Array2<T>::index): Use liboctave_wfi_flag, not
+	liboctave_dfi_flag.
+	(assign): Likewise.  For indexed assignments like X(I) = RHS with
+	X undefined or empty, always create a row vector.
+
+	* Array-flags.cc (liboctave_wfi_flag): Rename from liboctave_dfi_flag.
+	* Array-flags.h (liboctave_wfi_flag): Ditto.
+
+2003-06-24  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>::index (idx_vector&, int, const T&)):
+	Magic colon indexing always produces an object with one column.
+
+2003-06-21  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* kpse-xfns.h (NAME_BEGINS_WITH_DEVICE): Arg is std::string, not char*.
+
+	* lo-ieee.h (signbit): Eliminate redundant extern "C" decl.
+
+2003-06-18  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (any_element_is_negative): If new optional arg
+	neg_zero is true, also return true for negative zero.
+
+2003-06-16  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASSL.cc (DASSL::do_integrate): Set liw to 21 + n, not 20 + n.
+	Handle step limit.
+	* DASSL-opts.in: New option for step limit.
+
+2003-06-16  Per Persson  <persquare@mac.com>
+
+	* oct-shlib.cc: Include mach-o/dyld.h, not Mach-O/dyld.h.
+
+2003-06-16  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASRT.cc (DASRT::integrate): Set liw to 21 + n, not 20 + n.
+	Store step limit in iwork(20), not iwork(18).
+
+2003-05-16  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* oct-rand.cc: Use liboctave's clock layer instead of the system clock.
+
+2003-05-14  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in: Handle DESTDIR.
+
+	* kpse.cc (kpse_path_iterator::next): Skip consecutive colons here.
+	(kpse_path_iterator::set_end): Don't miss last element when not
+	followed by a colon.
+
+2003-05-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-idx.h (Array<T>::index): Fix off-by-one error.
+
+2003-05-07  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* kpse.cc (kpse_absolute_p): Fix typo in translation.
+	(find_first_of): Also do an absolute search on each
+	name before looking in the path.
+
+2003-05-04  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* kpse.cc (dir_list_add): Ensure that directory ends with a
+	directory separator.
+
+2003-04-30  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* pathsearch.cc: Include kpse.cc here.
+
+	* kpse.cc: All functions are now static.  Massive surgery to
+	condense kpathsearch library to a single file of just the
+	essentials for Octave and convert to using C++ strings (no more
+	calls to malloc, very few calls to new, so there should be much
+	less potential for introducing memory leaks now).
+
+	* Makefile.in (EXTRAS): Move kpse.cc here from
+	LIBOCT_PATHSEARCH_CXX_SOURCES.
+
+	* kpse.h, kpse-config.h: Delete.
+	* Makefile.in (INCLUDES): Delete them from the list.
+
+2003-04-26  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* str-vec.cc (string_vector::append (const std::string&),
+	string_vector::append (const string_vector&)): New methods.
+
+2003-04-24  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* kpse.cc, kpse.h: Replace fn_type with std::string.
+
+	* lo-ieee.h (lo_ieee_signbit): Provide signbit decl for MinGW systems.
+
+	* kpse.cc (xclosedir): Don't define or declare for Windows.
+	(READABLE): Now a static function to avoid warnings from MinGW
+	compiler.	
+
+2003-04-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* kpse.cc: Move most functions from kpse-xfns.c here and make
+	static.  Include most of kpse-xfns.h directly, removing
+	unnecessary bits.
+
+	* dMatrix.cc (Matrix::pseudo_inverse): Now const.
+	* CMatrix.cc (ComplexMatrix::pseudo_inverse): Likewise.
+
+2003-04-18  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* getopt.c, getopt1.c, getopt.h: Move here from kpathsea.
+	* Makefile.in: Add them to the appropriates lists.
+
+	* oct-getopt.c: Include "getopt.h", not <kpathsea/getopt.h>.
+
+	* Makefile.in (liboctave.$(LIBEXT), liboctave.$(SHLEXT)): Adjust
+	for new locations of kpathsea objects.
+	Delete kpathsea targets.
+
+	* pathsearch.cc (dir_path::set_program_name): Delete.
+
+	* kpse.cc: New file.
+	* Makefile.in (LIBOCT_PATHSEARCH_CXX_SOURCES): Add it to the list.
+
+	* kpse.c: New file.
+	* Makefile.in (LIBOCT_PATHSEARCH_C_SOURCES): Add it to the list.
+
+	* kpse.h, kpse-config.h, kpse-xfns.h: New files.
+	* Makefile.in (INCLUDES): Add them to the list.
+
+	* oct-kpse.h: Delete.
+	* Makefile.in (INCLUDES): Delete it from the list.
+
+2003-04-07  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleSVD.h (SVD::SVD, SVD::operator =): Also copy type_computed.
+	* CmplxSVD.h (ComplexSVD::ComplexSVD, ComplexSVD::operator =):
+	Likewise.
+	From Quentin H. Spencer <qspencer@ieee.org>.
+
+2003-03-03  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-getopt.c: Include <kpathsea/getopt.h>, not "getopt.h".
+
+2003-02-21  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-alloc.h (DECLARE_OCTAVE_ALLOCATOR): Handle systems with or
+	without placement delete.
+
+	* CMatrix.cc (ComplexMatrix::all_elements_are_real): Don't lose -0
+	imaginary parts.
+
+	* lo-ieee.h (lo_ieee_signbit): New macro.
+
+2003-02-18  David Bateman  <dbateman@free.fr>
+
+	* dMatrix.cc (Matrix::inverse, Matrix::determinant, Matrix::solve):
+	Use Lapack instead of Linpack.
+	* CMatrix.cc (ComplexMatrix::inverse, ComplexMatrix::determinant,
+	ComplexMatrix::solve): Likewise.
+
+	* dMatrix.cc (Matrix::determinant, Matrix::inverse): New arg,
+	calc_cond.  If 0, skip condition number calculation.
+	* CMatrix.cc (ComplexMatrix::determinant, ComplexMatrix::inverse):
+	Likewise.
+
+	* CmplxLU.cc (ComplexLU::ComplexLU): Allow non-square matrices.
+	* dbleLU.cc (LU::LU): Likewise.
+	* base-lu.cc (base_lu::L), base_lu::U, base_lu::P): Likewise.
+
+2002-10-31  John W. Eaton  <jwe@bevo.che.wisc.edu>
+  
+  	* octave.test/arith/prod-4.m, octave.test/arith/sum-4.m:
+
+2003-02-14  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>::index): Fix thinko.
+	Additional compatibility fix.
+
+2003-02-13  Arno Klaassen  <arno@scito.com>
+ 
+        * Array2-idx.h, Array2.cc, Array2.h, Array3.cc, Array3.h,
+	ArrayN.cc, ArrayN.h, DiagArray2.cc, DiagArray2.h, MDiagArray2.h:
+	Sprinkle with Array<T>:: as necessary for gcc 3.4.
+ 
+2003-02-13  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>::index (idx_vector&, int, const T&)):
+	Compatibility fix.
+
+2003-02-10  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CColVector.cc (ComplexColumnVector::extract_n): New function.
+	* CRowVector.cc (ComplexRowVector::extract_n): Likewise.
+	* CMatrix.cc (ComplexMatrix::extract_n): Likewise.
+	* dColVector.cc (ColumnVector::extract_n): Likewise.
+	* dRowVector.cc (RowVector::extract_n): Likewise.
+	* dMatrix.cc (Matrix::extract_n): Likewise.
+
+	* CColVector.cc (ComplexColumnVector::insert): Improve efficiency
+	with make_unique and xelem.
+	* CRowVector.cc (ComplexRowVector::insert): Likewise.
+	* CMatrix.cc (ComplexMatrix::insert, ComplexMatrix::fill,
+	ComplexMatrix::extract, ComplexMatrix::row,
+	ComplexMatrix::column): Likewise.
+	* dColVector.cc (ColumnVector::insert): Likewise.
+	* dRowVector.cc (RowVector::insert): Likewise.
+	* dMatrix.cc (Matrix::insert, Matrix::fill, Matrix::extract,
+	Matrix::row, Matrix::column): Likewise.
+
+2003-01-30  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc (imag (double)): Return 0.0 for all args, even NaN.
+
+2003-01-28  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.cc, dMatrix.cc: Move min and max functions here, from
+	src/DLD-FUNCTIONS/minmax.cc, and make them extern.
+	* CMatrix.h, dMatrix.h: Provide decls.
+
+2003-01-24  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-rand.h, oct-rand.cc: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+2003-01-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>::index): Fix off-by-one error.
+
+2003-01-16  Mumit Khan  <khan@nanotech.wisc.edu>
+
+	* oct-syscalls.cc: Include signal.h.
+
+2003-01-10  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-syscalls.cc (octave_syscalls::kill): New function.
+	* oct-syscalls.h: Provide decl.
+	
+
+2003-01-06  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::read): Set size and return immediately if
+	there is nothing to read.
+
+2003-01-05  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-cutils.c: Define _XOPEN_SOURCE.
+
+2003-01-04  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* getopt.h: Update to version from kpathsearch, so we will install
+	the version that we are using.
+
+	* getopt.c, getopt1.c: Delete.
+	(INCLUDES): Delete them from the list.  We'll get these files from
+	kpathsearch.
+
+	* Makefile.in (liboctave.$(LIBEXT)): Link directly to
+	../kpathsea/STATIC/*.o.
+	(liboctave.$(SHLEXT)): Link directly to	../kpathsea/SHARED/*.o.
+
+2003-01-03  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (read_int, write_int): Avoid warnings about
+	unreachable code.
+
+	* oct-alloc.h (DECLARE_OCTAVE_ALLOCATOR): Define operator delete
+	to correspond to placement new operator.
+
+	* dbleDET.cc (DET::value_will_overflow): We want det[1], not det[2].
+	(DET::value_will_underflow): Likewise.
+	* CmplxDET.cc (ComplexDET::value_will_overflow): Likewise.
+	(ComplexDET::value_will_underflow): Likewise.
+
+	* Makefile.in (distclean): Also remove stamp-prereq.
+
+	* Array2-idx.h (Array2<T>::assign): If assignment conforms but the
+	RHS and index are empty matrices, don't do anything.
+
+2002-12-26  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* pathsearch.cc (make_retval, free_c_array, make_c_names,
+	delete_c_names): New helper functions.
+	(dir_path::find_first_of): New function.
+	(dir_path::find_all_first_of): Likewise.
+	* pathsearch.h: Provide decls.
+
+	* oct-kpse.c (octave_kpse_path_find_first_of): New function.
+	(octave_kpse_all_path_find_first_of): Likewise.
+	* oct-kpse.h: Provide decls.
+
+2002-12-19  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* ODESSA.cc (ODESSA::integrate): Handle maxord.
+	* ODESSA-opts.in: Likewise.
+
+	* LSODE.cc (ODESSA::integrate): Handle maxord.
+	* LSODE-opts.in: Likewise.
+
+2002-12-18  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* ODESSA.cc (ODESSA::ODESSA): Initialize "initialized" data member
+	in all constructors.
+
+	* Makefile.in (liboctave.$(SHLEXT)): Include $(LIBKPATHSEA) here.
+	(LINK_DEPS): Not here.
+
+2002-12-06  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* str-vec.cc (string_vector::compare): New static member function.
+	* str-vec.h: Provide decl.
+	(string_vector::sort): Use it.
+	(str_vec_compare): Delete static function.
+
+	* oct-alloc.h (DECLARE_OCTAVE_ALLOCATOR): Also declare and define
+	a placement operator new.
+
+2002-12-03  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Matrix.h: Include mx-ops.h too.
+	* mx-ops.h: New file.
+
+2002-11-20  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASRT.cc, DASRT.h, Array.cc, ArrayN.h, Array.h, Array2.cc,
+	Array2.h, Array3.cc, Array3.h, Bounds.cc, Bounds.h, CRowVector.h,
+	CDiagMatrix.cc, CDiagMatrix.h, CMatrix.cc, CMatrix.h,
+	CRowVector.cc, CColVector.h, ChangeLog, CmplxAEPBAL.cc,
+	CmplxAEPBAL.h, CmplxCHOL.cc, CmplxCHOL.h, CmplxDET.cc, CmplxDET.h,
+	CmplxHESS.cc, CmplxHESS.h, CmplxLU.cc, CmplxLU.h, CmplxQR.cc,
+	CmplxQR.h, CmplxQRP.cc, ArrayN.cc, CmplxQRP.h, CmplxSCHUR.cc,
+	CmplxSCHUR.h, CmplxSVD.cc, CmplxSVD.h, CollocWt.cc, dMatrix.cc,
+	CollocWt.h, EIG.h, DASSL.cc, FEGrid.h, DASSL.h, DiagArray2.cc,
+	DiagArray2.h, EIG.cc, FEGrid.cc, LSODE.cc, LPsolve.cc, LPsolve.h,
+	LSODE.h, LinConst.cc, LinConst.h, MArray.h, MArray.cc, MArray2.cc,
+	MArray2.h, MDiagArray2.cc, MDiagArray2.h, Range.cc, NLConst.h,
+	NLEqn.cc, Range.h, NLEqn.h, Quad.cc, dbleQR.h, Quad.h, base-lu.cc,
+	base-lu.h, boolMatrix.cc, boolMatrix.h, dColVector.cc,
+	dColVector.h, dDiagMatrix.cc, dDiagMatrix.h, dMatrix.h,
+	dRowVector.cc, dRowVector.h, dbleAEPBAL.cc, dbleAEPBAL.h,
+	dbleCHOL.cc, dbleCHOL.h, dbleDET.cc, dbleDET.h, dbleHESS.cc,
+	dbleHESS.h, dbleLU.cc, dbleLU.h, dbleQR.cc, dbleQRP.cc, dbleQRP.h,
+	dbleSCHUR.cc, dbleSCHUR.h, dbleSVD.cc, dbleSVD.h, idx-vector.cc,
+	idx-vector.h, oct-alloc.cc, CColVector.cc, DASPK.h, DASPK.cc,
+	ODESSA.h, ODES.h, ODESSA.cc, ODES.cc, chMatrix.h, chMatrix.cc:
+	Use "defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION)" instead of 
+	"! defined (NO_PRAGMA_INTERFACE_IMPLEMENTATION)".
+
+2002-11-15  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-shlib.cc (octave_dlopen_shlib::open): Use RTLD_GLOBAL too.
+	From Remy Bruno <remy.bruno@libertysurf.fr>
+
+2002-11-14  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-specfun.cc: Use F77_FUNC instead of F77_XFCN for calls to
+	fortran code that should run fast enough that it is not worth all
+	the setup costs of F77_XFCN.
+
+	* Quad.cc (user_function): Surround body of function with
+	BEGIN_INTERRUPT_WITH_EXCEPTIONS, END_INTERRUPT_WITH_EXCEPTIONS.
+	* ODESSA.cc (odessa_f, odessa_j, odessa_b): Likewise.
+	* NLEqn.cc (hybrd1_fcn, hybrj1_fcn): Likewise.
+	* LSODE.cc (lsode_f, lsode_j): Likewise.
+	* DASSL.cc (ddassl_f, ddassl_j): Likewise.
+	* DASRT.cc (ddasrt_f, ddasrt_j, ddasrt_g): Likewise.
+	* DASPK.cc (ddaspk_f, ddaspk_psol, ddaspk_j): Likewise.
+
+2002-11-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.cc (octave_ieee_init): Check defined (__osf__) instead
+	of ! defined (linux).
+
+2002-11-09  Per Persson  <persquare@mac.com>
+
+	* oct-shlib.cc (octave_dyld_shlib): New class.
+	(make_shlib): Instantiate octave_dyld_shlib.
+
+2002-11-06  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.cc, dMatrix.cc: Sprinkle with OCTAVE_QUIT.
+
+	* ODESSA.cc (odessa_f, odessa_j, odessa_b): Abort on error.
+
+	* Array.h: Include <cstddef> here.
+
+2002-11-01  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASPK.cc (DASPK::do_integrate): Resize rwork and iwork before
+	using them.  Accept inequality contraint option of 0.  Assign
+	pabs_tol and prel_tol before calling DASPK.  Don't redeclare
+	abs_tol and rel_tol.
+
+	* cmd-edit.h (command_editor::filename_completion_desired): New
+	static function.
+	(command_editor::do_filename_completion_desired): New virtual function.
+	* oct-rl-edit.c (octave_rl_filename_completion_desired): New function.
+	* oct-rl-edit.h: Provide decl.
+
+	* Array2.cc (Array2<T>::get_size): #define MALLOC_OVERHEAD to
+	avoid OS X linker bug.
+	* ArrayN.cc (ArrayN<T>::get_size): Likewise.
+
+2002-10-31  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* ODESFunc.h (ODESFunc::ODES_fsub, ODESFunc::ODES_bsub,
+	ODESFunc::ODES_jsub): Reorder args for consistency with other
+	solvers.
+	* ODESSA.cc: Fix all callers.
+
+	* mx-inlines.cc (MX_BASE_REDUCTION_OP): Also return scalar
+	MT_RESULT if nr == 1 && nc == 0 && dim == -1 (i.e.,
+	sum(zeros(1,0)) returns 0, not [](1x0)).
+
+2002-10-30  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (LINK_DEPS): Include $(FLIBS) here too.
+
+2002-10-29  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASRT.cc (DASRT::integrate): Fix computation of lrw
+	(ddasrt_f): Combine loops.
+
+	* NLEqn.cc (NLEqn::solve): Return current estimate of solution
+	instead of empty vector if user termninates iteration.
+
+2002-10-28  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-utils.cc (read_inf_nan_na, octave_read_double,
+	octave_read_complex, octave_write_double, octave_write_complex):
+	New functions.
+	* CMatrix.cc (operator << (std::ostream&, const ComplexMatrix&)):
+	Use octave_write_complex.
+	(operator >> (std::istream&, const ComplexMatrix&)):
+	Use octave_read_complex.
+	* dMatrix.cc (operator << (std::ostream&, double)):
+	Use octave_write_double.
+	(operator >> (std::istream&, double)): Use octave_read_double.
+
+2002-10-25  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-kpse.c (octave_kpse_clear_dir_cache): Delete.
+	* oct-kpse.h: Delete decl.
+	* pathsearch.cc (dir_path::init): Delete unnecessary call to
+	::octave_kpse_clear_dir_cache.
+
+2002-10-24  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-sstream.h: Undef HAVE_SSTREAM if using a version of g++
+	earlier than 3.0.
+
+	* Makefile.in (LINK_DEPS): Include $(LIBKPATHSEA) here.
+	(liboctave.$(SHLEXT)): Not here.
+
+2002-10-17  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* oct-shlib.cc (octave_w32_shlib): New class to support Windows.
+
+2002-10-16  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install-lib): Don't bother with versions for
+	$(SHLBIN) files.
+
+2002-10-16  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* Makefile.in (LIB_DEPS): Include $(LIBS).
+
+2002-10-14  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-cieee.c: Move everything but lo_ieee_init here.
+	(lo_ieee_Inf_value, lo_ieee_NA_value, lo_ieee_NaN_value):
+	New functions.
+
+	* Makefile.in (install): No need to use cd to create links.
+	(LINK_DEPS): Include $(LIBOCTAVE_LFLAGS) before list of libraries.
+
+2002-10-14  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* Makefile.in: Merge liboctave with liboct-readline and
+	liboct-pathsearch.
+	Use link dependencies for shared libs if INCLUDE_LINK_DEPS.
+	(libraries): Depend on versioned library.
+	(liboctave.$(SHLEXT), liboctave.$(SHLEXT_VER)): Reverse actions --
+	build unversioned library, symbolic link adds version info.
+	(install, uninstall): Handle link and load forms of the library
+	separately.
+
+2002-10-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-time.cc: Use OCTAVE_USE_WINDOWS_API instead of __WIN32__ and
+	__CYGWIN__.
+
+	* file-ops.cc (file_ops::dir_sep_char, file_ops::dir_sep_str,
+	file_ops::dir_sep_chars): New static functions to replace
+	OCTAVE_DIR_SEP_CHAR, OCTAVE_DIR_SEP_STR, OCTAVE_DIR_SEP_CHARS.
+
+	* oct-env.cc (octave_env::do_set_program_name):
+	Use file_ops::dir_sep_chars instead of OCTAVE_DIR_SEP_CHARS.
+	(octave_env::do_base_pathname): Likewise.
+	(octave_env::do_make_absolute): Likewise.
+
+	* oct-env.cc (octave_env::do_make_absolute):
+	Use file_ops::dir_sep_str instead of OCTAVE_DIR_SEP_STR.
+	(octave_env::do_get_home_directory): Likewise.
+
+	* file-ops.cc (is_dir_sep): Use dir_sep_chars instead of embedding
+	that information here too.
+	(tilde_find_suffix, isolate_tilde_prefix, tilde_expand_word):
+	Use file_ops::dir_sep_char instead of OCTAVE_DIR_SEP_CHAR.
+
+	* file-ops.h: Use OCTAVE_HAVE_WINDOWS_FILESYSTEM and
+	OCTAVE_HAVE_POSIX_FILESYSTEM instead of __WIN32__ and __CYGWIN__.
+
+2002-10-09  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-env.h (octave_env::current_directory): Now mutable.
+	(octave_env:do_getcwd): Now const.
+
+	* file-ops.h, file-ops.cc (file_ops::is_dir_sep): New function.
+	(OCTAVE_DIR_SEP_CHAR, OCTAVE_DIR_SEP_STR, OCTAVE_DIR_SEP_CHARS,
+	OCTAVE_CURRENT_DIR_STR): New macros.
+	* oct-env.cc (is_dir_sep): Delete.
+	(octave_env::do_base_pathname): Look for OCTAVE_DIR_SEP_CHARS, not '/'.
+	(octave_env::do_set_program_name): Likewise.
+	(octave_env::do_polite_directory_format): Use file_ops::is_dir_sep
+	instead of checking for '/'.
+	(octave_env::pathname_backup): Likewise.
+	(octave_env::do_absolute_pathname): Likewise.
+	(octave_env::do_make_absolute): Likewise.
+	If dot_path is empty, use getcwd to set current_dir.
+	(octave_env::do_get_home_directory): Use OCTAVE_DIR_SEP_STR
+	instead of "/".
+
+2002-10-07  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* lo-cutils.c: On non-Posix Windows systems, include winsock.h.
+
+2002-10-07  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* oct-env.cc (octave_env::do_absolute_pathname): Recognize
+	absolute path names under MinGW as well.
+
+2002-10-07  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-env.cc: Include <cctype> too.
+
+2002-10-04  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-env.cc (octave_env::do_absolute_pathname): Handle Windows
+	filenames.
+	(octave_env::do_make_absolute): Check for absolute name with
+	do_absolute_path.
+	(octave_env::do_chdir): Likewise.
+	(is_dir_sep): New function.
+
+2002-10-03  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* oct-time.cc (octave_time::stamp): Better resolution for Windows
+	systems.
+
+2002-10-02  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::read): Clean up error handling logic.
+
+2002-09-30  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.cc (file_ops::mkdir): Handle one-arg mkdir here.
+
+	* lo-specfun.cc (acosh): Call xdacosh, not dacosh.
+
+2002-09-27  Per Persson  <persquare@mac.com>
+
+	* oct-group.cc (octave_group::octave_group): Dont' forget to set
+	gr_gid too.
+
+2002-09-27  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc (xisnan, xfinite, xisinf): Simply forward to
+	lo_ieee_* functions.
+	* Makefile.in (LIBOCTAVE_C_SOURCES): Add lo-cieee.c to the list.
+	* lo-ieee.cc (lo_ieee_double): Rename from ieee_double.
+	(LO_IEEE_NA_HW, LO_IEEE_NA_LW): Rename from NA_HW and NA_LW.
+	* lo-cieee.c: New file.
+	[SCO] (isinf, isnan): Move here from lo-ieee.cc.
+	* lo-ieee.h: Now all extern "C".
+	(lo_ieee_isnan, lo_ieee_finite, lo_ieee_isinf): Move here from
+	lo-mappers.cc and rename from xisnan, xfinite, xisinf.
+
+	* lo-ieee.cc (lo_ieee_hw, lo_ieee_low): Rename from hw and lw.
+	Now extern.
+
+2002-09-26  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc, Array.h, Array2.cc, Array2.h, Array3.cc, Array3.h,
+	ArrayN.cc, ArrayN.h, Bounds.cc, Bounds.h, CColVector.cc,
+	CColVector.h, CDiagMatrix.cc, CDiagMatrix.h, CMatrix.cc,
+	CMatrix.h, CRowVector.cc, CRowVector.h, CmplxAEPBAL.cc,
+	CmplxAEPBAL.h, CmplxCHOL.cc, CmplxCHOL.h, CmplxDET.cc, CmplxDET.h,
+	CmplxHESS.cc, CmplxHESS.h, CmplxLU.cc, CmplxLU.h, CmplxQR.cc,
+	CmplxQR.h, CmplxQRP.cc, CmplxQRP.h, CmplxSCHUR.cc, CmplxSCHUR.h,
+	CmplxSVD.cc, CmplxSVD.h, CollocWt.cc, CollocWt.h, DAE.cc,
+	DASPK.cc, DASPK.h, DASRT.cc, DASRT.h, DASSL.cc, DASSL.h,
+	DiagArray2.cc, DiagArray2.h, EIG.cc, EIG.h, FEGrid.cc, FEGrid.h,
+	LPsolve.cc, LPsolve.h, LSODE.cc, LSODE.h, LinConst.cc, LinConst.h,
+	MArray.cc, MArray.h, MArray2.cc, MArray2.h, MDiagArray2.cc,
+	MDiagArray2.h, NLConst.h, NLEqn.cc, NLEqn.h, ODES.cc, ODES.h,
+	ODESSA.cc, ODESSA.h, Quad.cc, Quad.h, Range.cc, Range.h,
+	base-lu.cc, base-lu.h, boolMatrix.cc, boolMatrix.h, chMatrix.cc,
+	chMatrix.h, dColVector.cc, dColVector.h, dDiagMatrix.cc,
+	dDiagMatrix.h, dMatrix.cc, dMatrix.h, dRowVector.cc, dRowVector.h,
+	dbleAEPBAL.cc, dbleAEPBAL.h, dbleCHOL.cc, dbleCHOL.h, dbleDET.cc,
+	dbleDET.h, dbleHESS.cc, dbleHESS.h, dbleLU.cc, dbleLU.h,
+	dbleQR.cc, dbleQR.h, dbleQRP.cc, dbleQRP.h, dbleSCHUR.cc,
+	dbleSCHUR.h, dbleSVD.cc, dbleSVD.h, idx-vector.cc, idx-vector.h,
+	oct-alloc.cc:
+	If __GNUG__, use pragma interface/implementation.  Allow this to
+	be turned off by defining NO_PRAGMA_INTERFACE_IMPLEMENTATION.
+
+2002-09-26  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* file-ops.cc (file_ops::readlink): Don't declare buffer if
+	system readlink function is not available.
+
+	* lo-mappers.cc (xerf, xerfc): Delete.
+	* lo-mappers.h (xerf, xerfc): Delete decls.
+
+	* lo-mappers.cc: Remove unused #define M_PI.
+	* lo-specfun.cc: Add #define M_PI if needed.
+
+2002-09-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.cc (do_decode_prompt_string): Cope with possibility
+	that geteuid doesn't exist.
+
+	* LP.h: Rename LP class to octave_LP.
+	LPsolve.h: Change all uses.
+
+	* file-ops.cc, oct-passwd.cc oct-syscalls.cc oct-group.cc: Remove
+	incorrect token-pasting op.
+
+	* statdefs.h [! S_ISLNK]: undef HAVE_LSTAT instead of trying to
+	define lstat.
+
+2002-09-19  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc, Array.h, Array2.cc, Array2.h, Array3.cc, Array3.h,
+	ArrayN.cc, ArrayN.h, Bounds.cc, Bounds.h, CColVector.cc,
+	CColVector.h, CDiagMatrix.cc, CDiagMatrix.h, CMatrix.cc,
+	CMatrix.h, CRowVector.cc, CRowVector.h, CmplxAEPBAL.cc,
+	CmplxAEPBAL.h, CmplxCHOL.cc, CmplxCHOL.h, CmplxDET.cc, CmplxDET.h,
+	CmplxHESS.cc, CmplxHESS.h, CmplxLU.cc, CmplxLU.h, CmplxQR.cc,
+	CmplxQR.h, CmplxQRP.cc, CmplxQRP.h, CmplxSCHUR.cc, CmplxSCHUR.h,
+	CmplxSVD.cc, CmplxSVD.h, CollocWt.cc, CollocWt.h, DAE.cc,
+	DASPK.cc, DASPK.h, DASRT.cc, DASRT.h, DASSL.cc, DASSL.h,
+	DiagArray2.cc, DiagArray2.h, EIG.cc, EIG.h, FEGrid.cc, FEGrid.h,
+	LPsolve.cc, LPsolve.h, LSODE.cc, LSODE.h, LinConst.cc, LinConst.h,
+	MArray.cc, MArray.h, MArray2.cc, MArray2.h, MDiagArray2.cc,
+	MDiagArray2.h, NLConst.h, NLEqn.cc, NLEqn.h, ODES.cc, ODES.h,
+	ODESSA.cc, ODESSA.h, Quad.cc, Quad.h, Range.cc, Range.h,
+	base-lu.cc, base-lu.h, boolMatrix.cc, boolMatrix.h, chMatrix.cc,
+	chMatrix.h, dColVector.cc, dColVector.h, dDiagMatrix.cc,
+	dDiagMatrix.h, dMatrix.cc, dMatrix.h, dRowVector.cc, dRowVector.h,
+	dbleAEPBAL.cc, dbleAEPBAL.h, dbleCHOL.cc, dbleCHOL.h, dbleDET.cc,
+	dbleDET.h, dbleHESS.cc, dbleHESS.h, dbleLU.cc, dbleLU.h,
+	dbleQR.cc, dbleQR.h, dbleQRP.cc, dbleQRP.h, dbleSCHUR.cc,
+	dbleSCHUR.h, dbleSVD.cc, dbleSVD.h, idx-vector.cc, idx-vector.h,
+	oct-alloc.cc:
+	Use USE_PRAGMA_INTERFACE_IMPLEMENTATION instead of __GNUG__
+	to decide whether to use the interface/implementation pragmas.
+
+2002-09-08  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (INCLUDES): Add lo-sstream.h to the list.
+
+2002-08-17  Mumit Khan  <khan@nanotech.wisc.edu>
+
+	* CmplxCHOL.h, CollocWt.h, cmd-edit.h, oct-shlib.h: Don't use
+	qualified names.
+
+2002-08-17  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.h, Array2-idx.h, DiagArray2.cc, Array2.cc, Array3.cc,
+	ArrayN.cc: Add typename where needed.
+
+	* DASPK.cc: Include lo-sstream.h and use macros instead of using
+	strstream classes directly.
+	* DASRT.cc: Likewise.
+	* DASSL.cc: Likewise.
+	* LSODE.cc: Likewise.
+	* ODESSA.cc: Likewise.
+
+	* cmd-hist.cc: Don't include <strstream>.
+	* oct-shlib.cc: Likewise.
+
+	* lo-sstream.h: New file.
+
+2002-08-16  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* LSODE.h (rel_tol, abs_tol, px, pabs_tol, piwork, prwork, itol):
+	New data members.
+	(LSODE::sanity_checked): Delete unused data member.
+
+	* DASPKL.h (initialized, abs_tol, rel_tol, px, pxdot, pabs_tol,
+	prel_tol, pinfo, piwork, prwork): New data members.
+	* DASSL.h (DASSL): Likewise.
+
+	* DASRT.h (DASRT::sanity_checked): Delete unused data member.
+
+	* DASRT.cc (DASRT::integrate (double)): Better handling of
+	initialization, changes in options, etc.
+	* DASPK.cc (DASPK::do_integrate): Likewise.
+	* DASSL.cc (DASSL::do_integrate): Likewise.
+	* LSODE.cc (LSODE::do_integrate): Likewise.
+
+2002-08-15  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DAEFunc.h (DAEFunc::reset): New data member.
+	* DAERTFunc.h (DAERTFunc::reset): Likewise.
+
+	* base-de.h (base_diff_eqn::set_stop_time): Force restart here.
+	(base_diff_eqn::clear_stop_time): Likewise.
+
+	* DASSL.cc (DASSL::do_integrate (double)): Handle more optoins.
+	* DASPK.cc (DASPK::do_integrate (double)): Likewise.
+
+2002-08-15  Paul Kienzle  <pkienzle@users.sf.net>
+
+	* DASPK-opts.in, DASPK.h: Move include to .in file.
+	* DASRT-opts.in, DASRT.h: Likewise.
+        * DASSL-opts.in, DASSL.h: Likewise.
+	* LSODE-opts.in, LSODE.h: Likewise.
+	* NLEqn-opts.in, NLEqn.h: Likewise.
+	* ODESSA-opts.in, ODESSA.h: Likewise.
+
+2002-08-14  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* LSODE.cc (LSODE::error_message): Also return current T on
+	failures when that makes sense.
+	* DASSL.cc (DASSL::error_message): Likewise.
+	* DASRT.cc (DASRT::error_message): Likewise.
+	* DASPK.cc (DASPK::error_message): Likewise.
+	* ODESSA.cc (ODESSA:error_message): Likewise.
+
+	* Makefile.in (liboct-pathsearch.$(SHLEXT_VER)): Link to
+	$(LIBKPATHSEA) here.
+
+2002-08-08  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.cc (lo_ieee_is_NA): New function.
+	(lo_ieee_is_NaN_or_NA): New function.
+	(octave_NA): New global value.
+	(octave_ieee_init): Initialize it.
+	* lo-mappers.cc (octave_is_NA): New function.
+	(octave_is_NaN_or_NA): New function.
+	(xisnan): Return false if NaN looks like a missing value.
+	(xisnan (const Complex&)): Use xisnan here.
+
+2002-08-02  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.h (ComplexMatrix::all, ComplexMatrix::any,
+	ComplexMatrix::cumprod, ComplexMatrix::cumsum,
+	ComplexMatrix::prod, ComplexMatrix::sum, ComplexMatrix::sumsq):
+	Default value for dim is -1, not 0.
+	* dMatrix.h (Matrix::all, Matrix::any, Matrix::cumprod,
+	Matrix::cumsum, Matrix::prod, Matrix::sum, Matrix::sumsq): Likewise.
+	* boolMatrix.h (boolMatrix:all, boolMatrix::any): Likewise.
+	* chMatrix.h (charMatrix::all, charMatrix::any): Likewise.
+
+	* mx-inlines.cc (MX_ANY_ALL_OP_ROW_CODE, MX_ANY_ALL_OP_COL_CODE):
+	New macros.
+	(MX_ANY_ALL_OP): Define MX_ANY_ALL_OP using them and
+	MX_BASE_REDUCTION_OP.
+	(MX_CUMULATIVE_OP): Fix spelling.  Change all uses.
+
+2002-08-01  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* chMatrix.h, chMatrix.cc (charMatrix::any, charMatrix::all):
+	Return boolMatrix, not Matrix.
+
+	* mx-inlines.cc (MX_ANY_ALL_OP, MX_ALL_OP, MX_ANY_OP): New macros.
+	* dMatrix.cc (Matrix::any): Replace guts with MX_ANY_OP.
+	(Matrix::all): Replace guts with MX_ALL_OP.
+	* CMatrix.cc (ComplexMatrix::any): Replace guts with MX_ANY_OP.
+	(ComplexMatrix::all): Replace guts with MX_ALL_OP.
+	* boolMatrix.cc (boolMatrix::any): Replace guts with MX_ANY_OP.
+	(boolMatrix::all): Replace guts with MX_ALL_OP.
+	* chMatrix.cc (charMatrix::any): Replace guts with MX_ANY_OP.
+	(charMatrix::all): Replace guts with MX_ALL_OP.
+
+	* dMatrix.h (Matrix::any): New arg, dim.
+	(Matrix::all): Likewise.
+	* CMatrix.h (ComplexMatrix::any): Likewise.
+	(ComplexMatrix::all): Likewise.
+	* boolMatrix.h (boolMatrix::any): Likewise.
+	(boolMatrix::all): Likewise.
+	* chMatrix.h (charMatrix::any): Likewise.
+	(charMatrix::all): Likewise.
+
+	* Makefile.in: Use $@-t instead of $@.t.
+
+2002-07-25  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-specfun.cc (gammainc): New arg, err, for scalar version.
+	Use it in matrix versions to avoid spewing multiple errors.
+	Call xgammainc instead of dgamit.
+
+2002-07-22  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.cc (ComplexMatrix::ComplexMatrix (const boolMatrix&)): 
+	Get rows and columns right in loop.
+	(ComplexMatrix::ComplexMatrix (const charMatrix&)): Likewise.
+
+2002-07-19  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASPK.cc (DASPK::do_integrate): Allow array tolerances.
+	* DASRT.cc (DASRT::integrate): Likewise.
+	* DASSL.cc (DASSL::do_integrate): Likewise.
+
+	* Quad.cc: Don't pass tolerances in constructors.
+
+	* DASPK-opts.in, DASRT-opts.in, DASSL-opts.in, LSODE-opts.in,
+	NLeqn-opts.in, ODESSA-opts.in, Quad-opts.in: New files.
+	* DASPK-opts.h, DASRT-opts.h, DASSL-opts.h, LSODE-opts.h,
+	NLeqn-opts.h, ODESSA-opts.h, Quad-opts.h: Generate automatically
+	from corresponding .in files.
+	* LSODE.h, Quad.h: Replace options class definitions with included
+	file.
+	* Makefile.in (OPTS_INC_SRC, OPTS_INC): New variables, new rule to
+	create OPTS_INC files from OPTS_INC_SRC files.	
+	(stamp-prereq): New target.
+	(libraries): Depend on stamp-prereq.
+	Include stamp-prereq along with $(MAKEDEPS).
+
+2002-07-17  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* base-de.h (base_diff_eqn::istate): New data member.
+	(base_diff_eqn::integration_state): New member function.
+	* LSODE.h, LSODE.cc, ODESSA.h, ODESSA.cc: Delete corresponding
+	data members and functions.
+	* DASPK.h, DASRT.h, DASSL.h: Delete idid data member.
+	* DASPK.cc, DASRT.cc, DASSL.cc: Use istate instead of idid.
+
+2002-07-16  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* base-de.h (base_diff_eqn::stop_time,
+	base_diff_eqn::stop_time_set, base_diff_eqn::restart,
+	base_diff_eqn::integration_error): New data members.
+	(base_diff_eqn::set_stop_time, base_diff_eqn::clear_stop_time,
+	base_diff_eqn::force_restart, base_diff_eqn::integration_ok,
+	base_diff_eqn::error_message): New member functions.
+	* LSODE.h, LSODE.cc, DASSL.h, DASSL.cc, DASPK.h, DASPK.cc,
+	DASRT.h, DASRT.cc, ODESSA.h, ODESSA.cc: Delete corresponding data
+	members and functions.
+
+	* DASRT.h (DASRT::set_ng, DASRT::get_ng): Delete
+	* DASRT.cc (DASRT::DASRT): Set ng here.
+	(DASRT::integrate): Don't forget to set nn.
+
+	* DAEFunc.h (DAEFunc): Jacobian function now follows format of DASSL.
+	* DASSL.cc (ddassl_j): Make it work.
+	* DASPK.cc (ddaspk_j): Likewise.
+
+	* DAE.cc: Delete.
+
+	* DAERT.h, DAERTFunc.h, DASRT.h, DASRT.cc: New files for DAE
+	solving with root finding.
+	* Makefile.in: Add them to the appropriate lists.
+
+	* base-dae.h: New file.
+	* Makefile.in (INCLUDES): Add it to the list.
+	* DAE.h (DAE): Derive from base_diff_alg_eqn, not base_diff_eqn.
+
+2002-07-10  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* ODE.h: Move integrate and do_integrate method declarations and
+	definitions here.
+	* base-de.h: From here.
+
+	* ODES.h, ODES.cc, ODESFunc.h, ODESSA.h, ODESSA.cc: New files.
+	* Makefile.in: Add them to the appropriate lists.
+	(LIBOCTAVE_CXX_SOURCES): 
+
+2002-07-02  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* NLEqn.cc (NLEqn::error_message): New function.
+	* NLEqn.h (NLEqn::solution_state, NLEqn::solution_ok): New functions.
+
+2002-07-01  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-utils.cc (octave_fgetl): New function.
+	* cmd-edit.cc (do_readline): Use it instead of octave_fgets.
+
+2002-05-24  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* LSODE.cc (LSODE::error_message): New function.
+	* LSODE.h: Provide decl.
+	(LSODE::integration_state): New function.
+	(LSODE::integration_ok): New function.
+
+2002-05-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* LSODE.cc (LSODE_options::x_integration_method): New data member.
+	(LSODE_options::set_integration_method,
+	LSODE_options::integration_method): New functions.
+
+	* LSODE.h (LSODE_options::x_absolute_tolerance): Now Array<double>.
+	Change all uses.
+	(LSODE_OPTIONS::absolute_tolerance): Return Array<double>, not double.
+	(LSODE_OPTIONS::set_absolute_tolerance (const Array<double>&)):
+	New function.
+
+	* Array.h (Array::fortran_vec): New const version.
+
+2002-05-22  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.cc (gnu_readline::history_search_backward): New function.
+	(gnu_readline::history_search_forward): Likewise.
+	(gnu_readline::gnu_readline): Use them instead of passing pointers
+	to extern "C" functions to octave_rl_ad_defun.
+
+2002-05-22  Mumit Khan  <khan@nanotech.wisc.edu>
+
+	* DASPK.cc (ddaspk_psol): Return value.
+	* oct-rl-edit.c: Use /* ... */ to comment.
+
+2002-05-20  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASSL.h (DASSL_options::init): Undo previous change.
+	(DASSL_options::set_absolute_tolerance): Likewise.
+	* LSODE.h (LSODE_options::init): Likewise.
+	(LSODE_options::set_absolute_tolerance): Likewise.
+
+	* DASPK.h (DASPK_options::init): Use default absolute tolerance of
+	sqrt(eps), not eps^2.
+	DASPK_options::set_absolute_tolerance): Likewise.
+
+2002-05-17  Mumit Khan  <khan@nanotech.wisc.edu>
+
+	* Array.h (Array<T>::resize_fill_value): Return default initialized
+	object.
+
+2002-05-14  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-rl-edit.c (OCTAVE_RL_SAVE_STRING): New macro.
+	(octave_rl_set_name, octave_rl_set_basic_quote_characters): Use it.
+	(octave_rl_set_basic_word_break_characters,
+	octave_rl_set_completer_word_break_characters): New functions.
+	* oct-rl-edit.h: Provide decls.
+	* cmd-edit.cc (gnu_readline::do_set_basic_word_break_characters,
+	gnu_readline::do_set_completer_word_break_characters): New functions.
+	(command_editor::set_basic_quote_characters,
+	command_editor::set_completion_append_character): New static functions.
+	* cmd-edit.h: Provide decls.
+	(command_editor::do_set_basic_word_break_characters,
+	command_editor::do_set_completer_word_break_characters):
+	New virtual functions.
+
+	* CMatrix.h, boolMatrix.h, chMatrix.h, dMatrix.h
+	(resize_fill_value): New static function.
+
+	* Array-idx.h (Array<T>::index): New args, resize_ok and
+	resize_fill_value.
+	* Array2-idx.h (Array2<T>::index): Likewise.
+	* ArrayN-idx.h (ArrayN<T>::index): Likewise.
+
+	* Array2.cc (Array<T>::print_info): New function.
+	* Array2.h: Provide decl.
+
+	* Array.cc (Array<T>::print_info): New function.
+	* Array.h: Provide decl.
+
+2002-05-03  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.h (idx_vector::idx_vector (int)): New function.
+	(idx_vector_rep::idx_vector_rep (int)): New decl.
+	* idx-vector.cc (idx_vector_rep::idx_vector_rep (int)): New function.
+
+	* Array.h (Array<T>::resize_fill_value (void)): New static function.
+	(assign (Array<LT>&, const Array<RT>&)): Use it.
+	* Array2.h (assign (Array2<LT>&, const Array2<RT>&)): Use it.
+	* ArrayN.h (assign (ArrayN<LT>&, const ArrayN<RT>&)): Use it.
+
+2002-05-02  Cai Jianming  <caijianming@yahoo.co.uk> 
+
+	* Array3.h (Array3<T>::checkelem): Improve error message.
+	* ArrayN.h (ArrayN<T>::range_error): Likewise.
+	* DiagArray2.cc (DiagArray2<T>::checkelem): Likewise.
+	* DiagArray2.cc (DiagArray2<T>::operator ()): Likewise.
+
+2002-04-30  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASSL.h (DASSL_options::init): Undo previous change.
+	(DASSL_options::set_absolute_tolerance): Likewise.
+
+2002-04-27  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASPK.h, DASPK.cc: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+2002-04-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>::index (idx_vector&, idx_vector&) const):
+	Simplify indexing when one or both of the indices are empty.
+
+2002-04-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASSL.h (DASSL_options::init): Set absolute tolerance to eps ^ 2.
+	(DASSL_options::set_absolute_tolerance): Likewise.
+	* LSODE.h (LSODE_options::init): Likewise.
+	(LSODE_options::set_absolute_tolerance): Likewise.
+
+2002-04-03  Steven G. Johnson  <stevenj@alum.mit.edu>
+
+	* f2c-main.c (MAIN_, MAIN__): Delete.  Use F77_DUMMY_MAIN instead.
+	* file-stat.cc (file_stat::update_internal, file_stat::copy):
+	Use HAVE_STRUCT_STAT_ST_RDEV instead of HAVE_ST_RDEV.
+	Use HAVE_STRUCT_STAT_ST_BLKSIZE instead of HAVE_ST_BLKSIZE.
+	Use HAVE_STRUCT_STAT_ST_BLOCKS instead of HAVE_ST_BLOCKS.
+	* file-stat.h: Likewise.
+	* oct-time.cc (octave_time::octave_time, octave_base_tm::strftime,
+	octave_base_tm::init, octave_strptime::init): Use HAVE_TM_ZONE
+	instead of HAVE_STRUCT_TM_TM_ZONE.
+	* strftime.c: Likewise.
+	* lo-specfun.cc, mach-info.cc, CColVector.cc, CMatrix.cc,
+	CRowVector.cc, CmplxAEPBAL.cc, CmplxCHOL.cc, CmplxHESS.cc,
+	CmplxLU.cc, CmplxQR.cc, CmplxQRP.cc, CmplxSCHUR.cc, CmplxSVD.cc,
+	CollocWt.cc, DASSL.cc, EIG.cc, LSODE.cc, NLEqn.cc, Quad.cc,
+	dColVector.cc, dMatrix.cc, dRowVector.cc, dbleAEPBAL.cc,
+	dbleCHOL.cc, dbleHESS.cc, dbleLU.cc, dbleQR.cc, dbleQRP.cc,
+	dbleSCHUR.cc, dbleSVD.cc: Use F77_FUNC instead of F77_FCN.
+
+2002-04-02  Paul Kienzle  <pkienzle@users.sf.net>
+
+        * CmplxQR.cc (ComplexQR::init): Use economy QR decomposition
+	internally when the user requests it.
+	* CmplxQRP.cc (ComplexQRP::init): Ditto.
+	* dbleQR.cc (QR::init): Ditto.
+	* dbleQRP.cc (QRP::init): Ditto.
+
+2002-02-22  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-fftw.cc (octave_fftw::fft2d): Avoid having to find a
+	definition for NULL by passing 0 as the last arg to fftwnd_one.
+	(octave_fftw::ifft2d): Likewise.
+
+2002-02-22  Paul Kienzle  <pkienzle@jazz.ncnr.nist.gov>
+
+	* lo-mappers.cc (arg): Simply call atan2 (0.0, x).
+
+2001-12-17  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* data-conv.cc (LS_DO_READ): Don't do anything unless len > 0.
+	(LS_DO_WRITE): Likewise.
+	
+2001-11-16  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mx-inlines.cc (MX_CUMMULATIVE_OP): New macro.
+	* CMatrix.cc (ComplexMatrix::cumprod, ComplexMatrix::cumsum): Use it.
+	* dMatrix.cc (Matrix::cumprod, Matrix::cumsum): Likewise.
+
+	* mx-inlines.cc (MX_REDUCTION_OP, MX_REDUCTION_OP_COL_EXPR,
+	MX_REDUCTION_OP_ROW_EXPR): New macros.
+	* dMatrix.cc (Matrix::prod, Matrix::sum): Use MX_REDUCTION_OP.
+	* CMatrix.cc (ComplexMatrix::prod, ComplexMatrix::sum): Likewise.
+
+	* mx-inlines.cc (MX_BASE_REDUCTION_OP): New macro.
+	DIM == -1 now means no orientation for vector sums.
+	* dMatrix.cc (ComplexMatrix::sumsq): Use it.
+	* CMatrix.cc (ComplexMatrix::sumsq): Likewise.
+
+2001-11-08  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Range.cc (Range::nelem_internal): Special case ranges that must
+	have zero elements.
+
+2001-11-06  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in: Split out readline and pathsearch functionality
+	into separate liboct-readline and liboct-pathsearch libraries.
+
+	* oct-rl-edit.c (octave_rl_clear_screen): Call rl_clear_screen,
+	not _rl_clear_screen.  Temporarily redefine rl_redisplay_function
+	to do nothing for this call to rl_clear_screen.
+
+2001-10-08  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASSL.cc (ddassl_f): Handle IRES returned from user supplied
+	function.
+	* DAEFunc.h (DAERHSFunc): Add IRES to prototype.
+
+2001-06-07  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::inverse, Matrix::solve, Matrix::determinant,
+	Matrix::inverse): Handle the case of rcond being a NaN the same as
+	a signular matrix.  From "Jianming" <caijianming@yahoo.co.uk>.
+	* CMatrix.cc (ComplexMatrix::inverse, ComplexMatrix::solve,
+	ComplexMatrix::determinant, ComplexMatrix::inverse): Likewise.
+
+2001-05-31  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* chMatrix.cc (charMatrix::row_as_string): New parameter, raw.
+
+	* Array-i.cc, Array-s.cc, Array-d.cc, Array-ch.cc, Array-C.cc,
+	Array-b.cc: Instantiate three arg assign functions.
+
+	* ArrayN.cc (assign (ArrayN<LT>&, const ArrayN<RT>&, const LT&)):
+	New arg, resize_fill_value.
+	* ArrayN.h: Provide declaration.
+	(assign (ArrayN<LT>&, const ArrayN<RT>&): Define here by calling
+	three arg version.
+
+	* Array3.cc (assign (Array3<LT>&, const Array3<RT>&, const LT&)):
+	New arg, resize_fill_value.
+	* Array3.h: Provide declaration.
+	(assign (Array3<LT>&, const Array3<RT>&): Define here by calling
+	three arg version.
+
+	* Array2.cc (assign (Array2<LT>&, const Array2<RT>&, const LT&)):
+	New arg, resize_fill_value.
+	* Array2.h: Provide declaration.
+	(assign (Array2<LT>&, const Array2<RT>&): Define here by calling
+	three arg version.
+
+	* Array.cc (assign (Array<LT>&, const Array<RT>&, const LT&)):
+	New arg, resize_fill_value.
+	* Array.h: Provide declaration.
+	(assign (Array<LT>&, const Array<RT>&): Define here by calling
+	three arg version.
+
+2001-05-17  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* pathsearch.cc (dir_path::set_program_name): Set the environment
+	variables SELFAUTOLOC, SELFAUTODIR, SELFAUTOPARENT, and TEXMFDBS
+	to the empty string.
+
+2001-05-15  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2.h (Array2<T>::operator = (const Array2<T>&)):
+	Don't check for rep != a.rep.
+
+2001-05-02  Mumit Khan  <khan@nanotech.wisc.edu>
+
+	* oct-fftw.h, oct-fftw.cc: New files.
+	* Makefile.in (INCLUDES, SOURCES): Add new files.
+	* CMatrix.cc (ComplexMatrix::{fourier, ifourier, fourier2d, 
+	ifourier2d}): Use fftw if available.
+	* dMatrix.cc (Matrix::{fourier, ifourier, fourier2d, ifourier2d}): 
+	Likewise.
+
+2001-04-25  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install-lib): Don't use mk-libdir-link.
+	(install-inc): Don't use mk-includedir-link.
+
+2001-02-28  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-cutils.c (octave_gethostname): New function.
+	* lo-utils.h: Provide declaration.
+	* oct-env.cc (octave_env::do_get_host_name):
+	Call octave_gethostname, instead of gethostname.
+
+	* lo-cutils.c (gethostname): Define here.
+	* lo-sysdep.cc: Not here.
+
+2001-02-07  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-cutils.c: Don't declare strptime.
+	(oct_strptime): Cast return type of strptime to char*.
+
+2001-02-06  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-rl-edit.c (octave_rl_newline): Call rl_newline with two args.
+	(octave_rl_set_name): call rl_re_read_init_file with two args.
+	(octave_rl_read_init_file): Ditto.
+	(octave_rl_clear_undo_list): Call rl_free_undo_list, not
+	free_undo_list.
+	(octave_rl_completion_matches): Call rl_completion_matches, not
+	completion_matches.
+	(octave_rl_enable_paren_matching): New function.
+	(octave_rl_set_blink_matching_paren_flag): Delete.
+	(octave_rl_get_blink_matching_paren_flag): Delete.
+
+	* lo-mappers.h, lo-mappers.cc (log10 (const Complex&),
+	tanh (const Complex&)): Declare and define if not 
+	CXX_ISO_COMPLIANT_LIBRARY.
+
+2001-02-05  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.h (tanh (const Complex&)): Only declare if not
+	CXX_ISO_COMPLIANT_LIBRARY.
+
+2001-02-05  Mumit Khan  <khan@nanotech.wisc.edu>
+
+	* lo-mappers.cc (tanh (const Complex&)): Only define if not
+	CXX_ISO_COMPLIANT_LIBRARY.
+
+	* Makefile.in (TEMPLATE_AR, TEMPLATE_ARFLAGS): Use to create
+	archive libraries containing templates.
+
+	* ArrayN-idx.h (freeze, all_ok, any_orig_empty, any_zero_len,
+	get_zero_len_size, all_colon_equiv): Inline. 
+	(ArrayN<T>::index): Rename idx to arr_idx.
+	* ArrayN.cc (ArrayN<T>::index, ArrayN<T>::compute_index, 
+	ArrayN<T>::get_size, ArrayN<T>::range_error, ArrayN<T>::range_error,
+	increment_index, ArrayN<T>::resize, ArrayN<T>::insert): Likewise.
+
+2001-02-05  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.h, lo-mappers.cc (tan (const Complex&),
+	log10 (const Complex&)): Delete.
+
+	* oct-cmplx.h: Define forwarding functions for real, imag, abs,
+	arg, norm, conj, polar, cos, cosh, exp, log, log10, pow, sin,
+	sinh, sqrt, tan, and tanh.
+
+2001-01-31  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.cc, help.cc, load-save.cc, pr-output.cc, utils.cc:
+	Add std:: namespace qualifier as needed.
+
+	* mx-inlines.cc: Rename all functions with mx_inline_ prefix.
+	Change all uses to match.
+
+2001-01-29  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-cutils.c: Don't delcare strptime.
+
+2001-01-02  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.cc (operator * (const ComplexMatrix&, const ComplexMatrix&):
+	Return correct size result for empty matrix case.
+
+2000-12-15  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc (xmin (const Complex&, const Complex& y):
+	If args are equal in magnitude, return first arg instead of
+	second.
+
+2000-12-13  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Range.cc (Range::nelem_internal): Call tfloor, not round, but
+	then try harder to compute correct number of elements.
+
+	* dMatrix.cc (Matrix::lssolve): Ask DGELSS for size of work vector.
+	* CMatrix.cc (ComplexMatrix::lssolve): Likewise, for ZGELSS.
+
+2000-12-09  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Range.cc (Range::nelem_internal): Call round here, not tfloor.
+	Rename n_intervals to be n_elt.
+
+	* strptime.c: Surround everything after including config.h in
+	#ifndef HAVE_STRPTIME ... #endif.
+
+2000-11-29  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-idx.h (assign): When resizing, cast fill value to LT.
+	* Array2-idx.h (MAYBE_RESIZE_LHS): Likewise.
+
+2000-11-28  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* MArray-defs.h: Protect against multiple inclusion.
+
+2000-11-20  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* data-conv.h (enum save_type): Move LS_U_LONG and LS_LONG to the
+	end of the list, to be compatible with previous versions of Octave.
+
+2000-11-16  Paul Kienzle  <pkienzle@kienzle.powernet.co.uk>
+
+	* oct-time.cc (DEFINE_SET_INT_FIELD_FCN): Don't check limits here,
+	since mktime is supposed to `normalize' the results for us.
+
+2000-10-31  Paul Kienzle  <pkienzle@kienzle.powernet.co.uk>
+
+	* Array2.cc (Array2<T>::transpose): Avoid copy for empty matrices
+	and vectors.  Use xelem for faster access to elements when copying.
+
+2000-10-18  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.cc (ComplexMatrix::cumsum, ComplexMatrix::cumprod):
+	Correct indexing for operation across rows.
+	* dMatrix.cc (Matrix::cumsum, Matrix::cumprod): Likewise.
+
+2000-10-12  Paul Kienzle  <pkienzle@kienzle.powernet.co.uk>
+
+	* Array2-idx.h (Array2<T>::index (idx_vector&)): Avoid copying
+	elements if arg is a colon.
+
+2000-10-12  Cai Jianming  <caijianming@yahoo.co.uk>
+
+	* dMatrix.cc (Matrix::cumprod (int) const): New arg, DIM.
+	(Matrix::cumsum (int) const): Likewise.
+	(Matrix::prod (int) const): Likewise.
+	(Matrix::sum (int) const): Likewise.
+	(Matrix::sumsq (int) const): Likewise.
+	* CMatrix.cc (ComplexMatrix::cumprod (int dim) const): Likewise.
+	(ComplexMatrix::cumsum (int) const): Likewise.
+	(ComplexMatrix::prod (int) const): Likewise.
+	(ComplexMatrix::sum (int) const): Likewise.
+	(ComplexMatrix::sumsq (int) const): Likewise.
+
+2000-10-10  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>::index (idx_vector&)): Correctly set
+	size if Array<T>::index returns an empty array.
+
+2000-08-02  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.cc (file_ops::link, file_ops::symlink,
+	file_ops::readlink): New functions.
+
+2000-08-01  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>::index (idx_vector&)): If a scalar is
+	indexed, always return an object the same size as the index arg.
+
+	* oct-time.cc (octave_base_tm::strftime): Return empty string for
+	empty format.
+
+2000-07-25  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-cutils.c (oct_strptime): New function.
+	* oct-time.cc (octave_strptime::init): Call it instead of strptime.
+	Don't declare strptime.  Don't define _XOPEN_SOURCE or _BSD_SOURCE.
+
+2000-07-18  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-time.cc: Comment out _BSD_SOURCE and _XOPEN_SOURCE definitions.
+
+	* Makefile.in (MATRIX_INC): Add ArrayN-idx.h to the list.
+
+2000-06-29  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.h (read_int): Provide declaration.
+
+2000-06-29  James R. Van Zandt  <jrv@vanzandt.mv.com>
+
+	* data-conv.cc (read_doubles): Handle EIGHT_BYTE_INT cases.
+	(write_doubles): Ditto.
+	* data-conv.h: Ditto.
+	(enum save_type): New values, LS_U_LONG and LS_LONG.
+
+2000-06-27  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* boolMatrix.h: Declare MM_CMP_OPS here.
+	* boolMatrix.cc: Define them here.
+
+2000-06-08  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (assign): Allow x(bool) = RHS to succeed if x is
+	previously undefined and set size of x to size of bool index.
+	* idx-vector.cc (IDX_VEC_REP::maybe_convert_one_zero_to_idx):
+	Allow z_len to be zero.
+	(IDX_VEC_REP::freeze): If z_len is zero, set frozen_at_z_len to len.
+	If frozen, don't assert that frozen_at_z_len == z_len.
+
+2000-05-20  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-rl-edit.c (octave_rl_clear_screen): Call _rl_clear_screen
+	instead of rl_clear_screen.
+
+2000-05-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-d.cc: Instantiate ArrayN<double> here too.
+	* Array-idx-vec.cc, ArrayN-idx.h, ArrayN.cc, ArrayN.h: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+2000-04-06  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array<T>::operator =): Don't set max_indices to 1 here.
+
+2000-03-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-sysdep.h: octave_chdir returns int, not bool.
+
+2000-03-21  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (liboctave.$(SHLEXT)): Delete target
+	before rebuilding.
+
+2000-03-21  Ben Sapp  <bsapp@nua.lampf.lanl.gov>:
+
+	* Makefile.in (liboctave.$(LIBEXT)): New target.
+	(libraries): Depend only on library targets, not archive members.
+
+2000-03-17  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in: (objects): New target.
+
+	* lo-cutils.c: New file.
+	* Makefile.in (SOURCES): Add it to the list.
+	* lo-utils.h: Declare octave_qsort here.
+	* Array.h (Array::qsort): Use it here.
+
+2000-03-08  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-time.cc: Include <sys/types.h> and <unistd.h>, if available.
+
+2000-02-18  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-rl-hist.c (octave_history_list): Do something when not
+	printing line numbers.  Fix reallocation of retval.
+
+2000-02-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install-inc): Install files in
+	$(octincludedir)/octave.
+	(uninstall): Remove them from the correct directory too.
+
+	* oct-time.cc: Temporarily define _BSD_SOURCE and _XOPEN_SOURCE if
+	they are not already defined.
+
+2000-02-08  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CRowVector.cc, CRowVector.h, CColVector.cc, CColVector.h:
+	Delete declarations and definitions of mixed-type vector-vector ops.
+
+2000-02-07  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.h, CMatrix.cc: Add lssolve methods for real-valued RHS
+	matrix and vector objects.
+
+	* mx-op-defs.h (DMM_BIN_OP): Explicitly request conversion to
+	return type from second arg type.
+	(MDM_BIN_OP): Likewise, for first arg type.
+
+	* dMatrix.cc (Matrix::fourier, Matrix::ifourier,
+	Matrix::fourier2d, Matrix::ifourier2d): Likewise.
+
+	* EIG.cc (EIG::symmetric_init, EIG::hermitian_init): Explicitly
+	request ColumnVector to ComplexColumnVector, and Matrix to
+	ComplexMatrix conversions.
+
+	* CmplxAEPBAL.cc (ComplexAEPBALANCE::init): Give balancing_mat its
+	initial value using ComplexMatrix constructor.
+
+	* CColVector.cc (product, quotient,
+	operator * (const DiagMatrix&, const ComplexColumnVetor&)):
+	Fix type of returned value.
+	* CDiagMatrix.cc (ComplexDiagMatrix::row,
+	ComplexDiagMatrix::column, ComplexDiagMatrix::inverse): Likewise.
+
+	* Array.h, CColVector.h, CDiagMatrix.h, CMatrix.h, CRowVector.h,
+	MArray.h, MDiagArray2.h, dColVector.h, dDiagMatrix.h, dMatrix.h,
+	dRowVector.h: Declare some constructors explicit, to disallow
+	potentially problematic automatic type conversions.
+
+2000-02-05  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* vx-rv-crv.h, vx-cv-ccv.h, vx-crv-rv.h, vx-ccv-cv.h,
+	vx-rv-crv.cc, vx-cv-ccv.cc, vx-crv-rv.cc, vx-ccv-cv.cc:
+	More new files.
+	* Makefile.in: Add them to the appropriate lists.
+
+	* vx-ccv-s.h, vx-crv-s.h, vx-cs-cv.h, vx-cs-rv.h, vx-cv-cs.h,
+	vx-rv-cs.h, vx-s-ccv.h, vx-s-crv.h, vx-ccv-s.cc, vx-crv-s.cc,
+	vx-cs-cv.cc, vx-cs-rv.cc, vx-cv-cs.cc, vx-rv-cs.cc, vx-s-ccv.cc,
+	vx-s-crv.cc:, New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+	* CRowVector.h, CRowVector.cc, CColVector.h, CColVector.cc:
+	Delete scalar by vector and vector by scalar binary ops.
+
+	* MArray-defs.h: More new macros to handle MDiagArray operators.
+	* dDiagMatrix.h, CDiagMatrix.h: Use the op-forwarding macros.
+
+2000-02-04  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-rl-edit.c (octave_rl_set_event_hook): Take address of
+	rl_event_hook before casting to void **.
+	(octave_rl_set_startup_hook): Likewise, for rl_startup_hook.
+
+	* MArray-defs.h: Many new macros to make declaration and
+	definition of operators more consistent.
+	
+	* MArray.h, MArray2.h, dColVector.h, dRowVector.h, CColVector.h,
+	CRowVector.h, dMatrix.h, CMatrix.h: Use them.
+
+2000-02-03  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::ifourier): Cast divisor to double.
+	(Matrix::ifourier2d): Likewise.
+	* CMatrix.cc (ComplexMatrix::ifourier): Likewise.
+	(ComplexMatrix::ifourier2d): Likewise.
+
+	* Array.h (Array::ArrayRep::qsort): Cast len to size_t.
+
+2000-02-01  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-rl-edit.c, oct-rl-edit.h: New files for interface to GNU
+	readline library.
+	* Makefile.in: Add them to the appropriate lists.
+
+	* oct-rl-hist.c, oct-rl-hist.h: New files for interface to GNU
+	readline history library.
+	* Makefile.in: Add them to the appropriate lists.
+
+	* data-conv.cc (LS_DO_WRITE): Cast arg to ostream::write to char*.
+	(LS_DO_READ): Likewise, for istream::read.
+	(write_doubles): Likewise.
+	(read_doubles): Likewise.
+
+	* oct-env.cc (octave_env::do_polite_directory_format):
+	Use operator== and substr method to do limited-length string
+	comparison.
+
+	* Array2-idx.h, Array-idx.h: Avoid shadowing warnings for idx.
+
+	* Quad.h: Use do_integrate as name of pure virtual function.
+
+	* base-de.h: Use tt instead of t as arg names.
+	Add method with tcrit arg.
+
+	* DAE.h, DAE.cc: Likewise, also xx for x.
+
+	* DASSL.cc (dassl_fcn_ptr, dassl_jac_ptr): New typedefs.
+	* LSODE.cc: lsode_fcn_ptr, lsode_jac_ptr): Ditto.
+	* Quad.cc (quad_fcn_ptr): Ditto.
+	* NLEqn.cc (hybrd1_fcn_ptr, hybrj1_fcn_ptr): Ditto.
+
+	* oct-getopt.h, oct-getopt.c: New files for interface to getopt.
+	* Makefile.in: Add them to the appropriate lists.
+
+	* oct-kpse.h, oct-kpse.c: New files for interface to kpathsearch.
+	* Makefile.in: Add them to the appropriate lists.
+
+	* dMatrix.cc (write_int, read_int): No longer declared static.
+
+	* CDiagMatrix.h: Delete decls for friend operators that are
+	handled by MDiagArray2 class.  Move others outside class decl and
+	strip friend status.
+	* dDiagMatrix.h: Likewise.
+
+	* MArray.h: Delete decls for friend operators inside class decl.
+	* MArray2.h: Ditto.
+	* MDiagArray2.h: Ditto.
+
+	* MArray-defs.h (DO_VS_OP,, DO_SV_OP, DO_VV_OP, NEGV): Pass all
+	necessary parameters.  Don't allocate memory in the macro.  Change
+	all uses.
+
+	* dMatrix.h (class Matrix): Delete `friend class' decls.
+	* CMatrix.h (class ComplexMatrix): Ditto.
+
+	* mx-op-defs (MS_BOOL_OP, MS_BOOL_OPS, SM_BOOL_OP, SM_BOOL_OPS,
+	MM_BOOL_OP, MM_BOOL_OPS, MDM_MULTIPLY_OP, MDM_BIN_OPS,
+	DMM_MULTIPLY_OP, DMM_BIN_OPS): Pass zero constant as final arg, to
+	avoid type conflicts.  Change all uses.
+
+	* strptime.c (__mon_yday): Fix size of array decl.
+
+	* mx-inlines.cc: Use `xnot' instead of `not' for function name.
+
+	* chMatrix.cc (charMatrix::row_as_string): Delete extraneous
+	default value for second arg.
+
+	* Array2.cc (Array2<T>::resize): Add Array<T>:: qulaifier to
+	references to ArrayRep.
+
+2000-01-31  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.h (Array::ArrayRep): Now protected, not private.
+
+	* All source files: Include iostream, fstream, strstream,
+	etc. as needed instead of using forward declarations for these
+	classes.  Add std:: qualifier as needed.
+
+2000-01-30  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-time.cc: Declare strptime extern "C".
+
+2000-01-29  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-time.cc [! HAVE_STRPTIME]: Provide declaration.
+
+2000-01-28  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2.h (Array2<T>::get_size): Now protected instead of private.
+	* Array3.h, Array3.cc: Use it in constructors and resize methods
+	to get total size to be allocated.
+
+	* DASSL.cc (DASSL::integrate): Declare do_restart and save_output
+	as bool, not int.
+
+2000-01-26  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (assign (Array2<LT>& lhs, const Array2<RT>& rhs)): 
+	Allow A(idx) = RHS if idx is a boolean index with the same shape
+	as A, even when do_fortran_indexing is not enabled.
+	(Array2<T>::index (idx_vector& idx) const): Likewise, for A(idx).
+
+2000-01-25  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::solve (...)): Add new variant with
+	function pointer as final arg.  Passed function (if any) will be
+	called for singularity errors.
+	* CMatrix.cc (ComplexMatrix::solve (...)): Likewise.
+
+	* dMatrix.cc (Matrix::pseudo_inverse): Use economy SVD.
+	* CMatrix.cc (ComplexMatrix::pseudo_inverse): Likewise.
+
+	* lo-ieee.cc (octave_ieee_init): Don't include sunmath.h.
+	No longer bother with infinity or quiet_nan.
+
+	* Array2.cc (Array2<T>::get_size): New function.
+	(Array2<T>::Array2, Array2<T>::resize): Use it.
+
+2000-01-23  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>::maybe_delete_elements (idx_vector&)):
+	New function.
+	(assign (Array2<LT>& lhs, const Array2<RT>& rhs)):
+	Use it when indexing with one arg instead of faking a second one.
+	(Array2<T>::maybe_delete_elements (idx_vector&, idx_vector&)):
+	Return empty matrices with the correct dimensions for A(:,:) = []
+	and also A(:,idx) = [], and A(idx,:) = [] when idx enumerates all
+	rows or columns.
+
+	* idx-vector.cc (IDX_VEC_REP::is_colon_equiv): Recognize a bool
+	vector that is all true values with a length equal to n as colon
+	equivalent.
+
+2000-01-22  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* strptime.c: Only include langinfo.h if _LIBC is defined.
+
+2000-01-21  A. Scottedward Hodel  <a.s.hodel@eng.auburn.edu>
+
+	* CMatrix.cc (ComplexMatrix::expm): Apply permutation and scaling
+	operations directly in step 2 and reverse step 2.
+	* dMatrix.cc (Matrix::expm): Apply permutation and scaling
+	operations directly in step 2 and reverse step 2.
+
+2000-01-20  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-time.h, oct-time.cc (octave_strptime): New class.
+
+	* strptime.c: New file, from glibc 2.1.2.
+	* Makefile.in (SOURCES): Add strptime.c to the list.
+
+2000-01-11  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* MArray.h (MArray <const Array<T>&)): New constructor.
+
+2000-01-10  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* pathsearch.cc (dir_path::all_directories): Avoid dereferencing
+	NULL directory list returned from kpse_element_dirs
+
+1999-12-08  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleLU.cc (LU::LU): Call DGETRF directly instead of calling DGESV.
+	* CmplxLU.cc (ComplexLU::ComplexLU): Likewise, call ZGETRF
+	directly, instead of calling ZGESV.
+
+1999-11-18  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* data-conv.cc (init_sized_type_lookup_table): New function.
+	(string_to_data_type): Use it to improve lookup of data types.
+
+1999-11-16  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (is_symmetric): Move here from Array2.cc.
+	* Array2.h (is_symmetric): Delete declaration.
+
+1999-11-10  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-env.cc (do_get_user_name): Reverse sense of test.
+
+1999-11-07  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-time.cc (Fstrftime): Undo previous change.
+	(octave_time::octave_time (const octave_base_tm&)): Likewise.
+
+1999-11-03  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleSVD.cc (SVD::init): Let DGESVD determine work space requirement.
+	* CmplxSVD.cc (ComplexSVD::init): Likewise, for complex version.
+
+	* dbleSCHUR.cc (SCHUR::init): IWORK is always referenced by dgeesx.
+	Don't forget to pass length of third string argument to dgeesx.
+
+	* CmplxSCHUR.cc (ComplexSCHUR::init): Don't forget to pass length
+	of third string argument to zgeesx.
+
+1999-11-02  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DiagArray2.cc (DiagArray2<T>::operator () (int, int)):
+	On errors, simply return `T ()'.
+	(DiagArray2<T>::checkelem (int, int)): Likewise.
+
+1999-11-02  A. Scottedward Hodel  <a.s.hodel@eng.auburn.edu>
+
+	* dMatrix.cc (Matrix::expm): Do balancing here instead of using
+	AEPBALANCE class.
+	* CMatrix.cc (ComplexMatrix::expm): Likewise.
+
+1999-10-29  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-shlib.cc, oct-shlib.h: New files.
+	* Makefile.in (INCLUDES, SOURCES): Add them to the lists.
+
+1999-10-26  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CRowVector.cc (linspace): Allow npoints == 1 if x1 == x2.
+	* dRowVector.cc (linspace): Ditto.
+
+	* oct-time.cc (Fstrftime): Don't save or delete tm_zone.
+	(octave_time::octave_time (const octave_base_tm&)): Likewise.
+
+1999-10-21  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASSL.cc (DASSL::do_integrate (double)): If we have a function
+	to evaluate the Jacobian, set info(4), not iwork(4).
+	Set rwork(1) to the maximum step size, not rwork(2).
+
+1999-10-14  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-time.cc: Include <climits>.
+
+1999-10-13  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.h (command_editor::do_resize_terminal): New function.
+	* cmd-edit.cc (command_editor::resize_terminal): New function.
+	(gnu_readline::do_resize_terminal): New function.
+
+Fri Sep  3 12:39:17 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc: Include ieeefp.h and sunmath.h if we have them.
+	* lo-ieee.c: Likewise.
+	Delete extern "C" declarations for infinity and quiet_nan.
+
+Fri Aug 20 07:58:00 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mx-inlines.cc (VS_OP, SV_OP, VV_OP): Delete `extern template' decls.
+	(VS_OP_FCN, SV_OP_FCN, VV_OP_FCN): Declare template functions
+	`inline', not `static inline'.
+
+	* idx-vector.cc (intcmp): Declare args as const void *, not int *,
+	then cast to const int * to compare.
+
+Fri Jul 16 11:23:51 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DAEFunc.h: Remove useless preprocessor conditional.
+
+Thu Jul 15 14:10:33 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.cc (command_editor::do_decode_prompt_string):
+	Use octave_time object instead of time_t.
+
+	* file-stat.h (file_stat::fs_atime, file_stat::fs_mtime,
+	file_stat::fs_ctime): Now octave_time objects.
+	(file_stat::atime, file_stat::mtime, file_stat::ctime):
+	Return octave_time objects.
+	(file_stat::is_newer): Args are now octave_time objects instead of
+	time_t.
+
+	* oct-time.h (octave_time::as_double): Delete.
+	(octave_time::operator double ()): New function.
+	(octave_time::operator time_t ()): New function.
+	(octave_time::ctime): New function.
+	(octave_base_tm::strftime): Renamed from format_as_string.
+	(octave_base_tm::asctime): New function.
+	(operator == (const octave_time&, const octave_time&),
+	operator != (const octave_time&, const octave_time&),
+	operator < (const octave_time&, const octave_time&),
+	operator <= (const octave_time&, const octave_time&),
+	operator > (const octave_time&, const octave_time&),
+	operator >= (const octave_time&, const octave_time&)):
+	New comparison functions.
+
+	* strftime.c: Move here from src directory.
+	* Makefile.in (SOURCES): Add it to the list.
+
+	* oct-time.h (octave_time::octave_time (time_t)): New constructor.
+
+Wed Jul 14 17:38:07 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-time.h, oct-time.cc: New files.
+	* Makefile.in (INCLUDES, SOURCES): Add them to the lists.
+
+	* systime.h: Move here from src directory.
+	* Makefile.in (INCLUDES): Add it to the list.
+
+Mon Jul 12 22:34:34 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mx-defs.h (b_d_Mapper, b_c_Mapper): New typedefs.
+	* dMatrix.cc (Matrix::map (b_d_Mapper)): New function.
+	* CMatrix.cc (ComplexMatrix::map (b_c_Mapper)): New function.
+	* lo-mappers.cc (xisinf, xisnan, xfinite): Return bool, not double.
+
+	* lo-mappers.cc (xmin, xmax): New functions to correctly handle NaNs.
+
+Mon May 10 07:45:11 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* MArray-defs.h (DO_VV_OP2): Fix macro definition to use arg.
+
+Wed May  5 20:06:10 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>index (idx_vector& idx)): Always return a
+	column vector for A(:), for compatibility with Matlab.
+
+Fri Apr 23 11:52:23 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* LSODE.cc (LSODE::do_integrate (double)): Don't forget to set
+	iopt when there are optional inputs in rwork or iwork.
+
+Fri Mar 26 11:26:32 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (libraries): Use the libfoo.a(objects) method of
+	creating static libs.
+
+Thu Mar  4 02:17:04 1999  James Macnicol  <jamesm@evans.ee.adfa.oz.au>
+
+	* data-conv.cc (oct_data_conv::string_to_data_type): Handle uint16
+	and uint32 data types.
+
+Thu Mar  4 01:51:37 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.cc (octave_ieee_init): Don't use __alpha__-specific code
+	for Linux.  Remove old Linux-specific code.
+
+Tue Jan 19 09:34:55 1999  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (operator * (const ColumnVector& v, const RowVector& a)):
+	Don't require lengths to be equal.
+	* CMatrix.cc (operator * (const ComplexColumnVector& v, const
+	ComplexRowVector& a)): Likewise
+
+Tue Nov 24 23:38:19 1998  Eric Norum  <eric@skatter.USask.Ca>
+
+	* statdefs.h: Only define mode_t if not already defined.
+
+Tue Nov 24 17:24:52 1998  john  <john@arrows.demon.co.uk>
+
+	* lo-specfun.cc (airy, biry): Set imaginary part of result to zero
+	when appropriate.
+
+Mon Nov 23 09:57:05 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.cc (gnu_readline::gnu_readline): Set terminal name
+	before calling rl_initialize.
+
+Tue Nov 17 23:47:24 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-specfun.cc (besselh, airy, biry): New functions.
+	Update Bessel function support to use library by D. E. Amos.
+
+Thu Nov 12 17:44:15 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.h (command_editor::readline): Add new variation that
+	allows EOF information to be passed back to caller.
+
+	* dMatrix.cc (Matrix::read): Do the right thing for EOF when
+	amount of data to read is unspecified.
+
+Tue Nov 10 07:53:15 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-alloc.h (DECLARE_OCTAVE_ALLOCATOR): New macro.
+	(DEFINE_OCTAVE_ALLOCATOR): Ditto.
+
+	* byte-swap.h (swap_bytes, swap_2_bytes, swap_4_bytes, swap_8_bytes): 
+	Add volatile qualifier to void* arg.
+	Cast volatile void* arg to volatile char*.
+
+Mon Nov  9 08:28:31 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.h (command_editor::do_set_event_hook): New function.
+	(command_editor::do_restore_event_hook): Ditto.
+	* cmd-edit.cc (command_editor::set_event_hook): Ditto.
+	(command_editor::restore_event_hook): Ditto.
+	(gnu_readline::do_set_event_hook): Ditto.
+	(gnu_readline::do_restore_event_hook): Ditto.
+	(gnu_readline::previous_event_hook): New data member.
+	(gnu_readline::gnu_readline): Initialize previous_event_hook.
+
+Mon Nov  2 13:36:04 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (BINDISTLIBS): Don't include .$(SHLEXT_VER) in name.
+
+	* Makefile.in (stmp-pic): New target.
+	($(PICOBJ)): Depend on stmp-pic, not pic.
+	(clean): Remove stmp-pic
+
+	* Makefile.in: Undo previous change to avoid optmization when
+	compiling lo-ieee.cc.
+
+Sun Nov  1 10:10:40 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc (xfinite): Define in terms of xfinite for real and
+	imaginary parts.
+	(xisinf): Define in terms of xisinf for real and imaginary parts.
+
+Thu Oct 29 18:57:50 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* boolMatrix.cc (boolMatrix::operator !): New function.
+
+Fri Oct 23 21:46:20 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* pathsearch.h (dir_path::default_path): New data member.
+	* pathsearch.cc (dir_path::init): Use it.
+
+	* Makefile.in: Avoid optmization when compiling lo-ieee.cc.
+
+Fri Oct 16 01:08:30 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* chMatrix.cc (charMatrix::extract): New function.
+	(charMatrix::charMatrix (char c)): New constructor.
+
+Tue Oct 13 22:11:08 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.h: (command_editor::do_read_init_file): New function.
+	* cmd-edit.cc (command_editor::read_init_file): New function.
+	(gnu_readline::do_read_init_file): Likewise.
+
+Fri Sep 25 14:26:44 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-env.cc (octave_env::do_get_home_directory): 
+ 	If HOME can't be found, set it to "/".
+	(octave_env::do_get_user_name)
+	If user name can't be found, set it to "unknown".
+	(octave_env::do_get_host_name)
+	If host name can't be found, set it to "unknown".
+
+	* pathsearch.h (dir_path::rehash): New function.
+	* pathsearch.cc (dir_path::init): Clear kpathsea's internal
+	diretcory cache before doing initialization.
+
+Thu Sep 24 13:23:25 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Qzval): Delete.
+	(qzhes, qzit, qzval): Delete F77_FCN declarations.
+	* dMatrix.h (Qzval): Delete declaration.
+
+	* dbleGEPBAL.h, dbleGEPBAL.cc: Delete.
+	* Makefile.in (MATRIX_INC, MATRIX_SRC): Delete them from the lists.
+	* mx-ext.h: Don't include dbleGEPBAL.
+
+	* lo-ieee.cc (octave_ieee_init): For now, use X_CAST instead of
+	static_cast.
+
+Fri Sep  4 10:58:22 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::read): Skip after reading, not before.
+	From: Dr.-Ing. Torsten Finke <fi@igh-essen.com>.
+
+Wed Sep  2 09:50:21 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.cc (octave_ieee_init): For Linux on arm, don't rely on
+	HUGE_VAL and NAN.
+
+Wed Aug 26 15:04:57 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (assign (Array2<LT>& lhs, const Array2<RT>& rhs)):
+	Handle x(i) = scalar for do_fortran_indexing == 1.
+
+Thu Jul 30 00:34:10 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.cc (ComplexMatrix::ComplexMatrix (const charMatrix&)):
+	Alloctate space before attempting to use it.
+	(ComplexMatrix::ComplexMatrix (const boolMatrix&)): Likewise.
+
+Mon Jun 22 17:04:27 1998  Tomislav Goles  <tom@ait-tech.com>
+
+	* EIG.cc (EIG::init): Move invariant code outside loop.
+
+Thu Jun 18 11:08:23 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* MArray2.cc (MARRAY_A2A2_OP): If operands are empty, make result
+	have the same size as the operands.
+	
+Thu May 28 10:41:04 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DASSL.cc (DASSL::do_integrate): If an exception occurs in the
+	call to ddassl, set integration_error to 1 before calling the
+	error handler and returning.
+	* LSODE.cc (LSODE::do_integrate): Likewise.
+
+Wed May 27 13:46:30 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (assign): Allow A([],[]) = scalar and, if
+	do_fortran_indexing is set, A([]) = scalar.
+	* Array-idx.h (assign): Allow A([]) = scalar.
+
+Thu May 14 11:50:24 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mx-op-defs.h (MDM_MULTIPLY_OP): Compute result if dm_nc > 0, not
+	if dm_nc == 0.
+
+Thu Apr 23 16:15:37 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* pathsearch.h (dir_path::p_orig): New field.
+	* pathsearch.cc (dir_path::init): Perform variable and tilde
+	expansion on the original path here.
+	(dir_path::find_all): Don't do anything if not initialized.
+
+Tue Apr 14 14:41:30 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (index): Allow x(:) even when do_fortran_indexing
+	is not set.
+	(index): Allow x = zeros (2, 0); x(1,:) to work.
+
+	* lo-specfun.cc (gammainc): Use dgamit to compute
+	(\int_0^x exp(-t) t^(a-1) dt)/gamma(a), not just
+	\int_0^x exp(-t) t^(a-1) dt.
+
+Wed Apr  8 22:50:44 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-C.cc, Array-b.cc, Array-ch.cc, Array-i.cc, Array-d.cc,
+	Array-s.cc: Change return types of all `assign' explicit
+	instantiations to be int, not void, to match the template decl in
+	Array.h.
+
+Mon Apr  6 00:27:06 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-specfun.cc (gammainc): Reorder args in call to xdgami.
+
+Thu Feb 19 01:16:38 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-specfun.cc (xgamma, xlgamma): Define here.
+	* lo-mappers.cc: Not here.
+
+	* lo-specfun.h: Declare xgamma and xlgamma here.
+	* lo-mappers.h: Not here.
+
+	* lo-specfun.h: Never declare gamma or lgamma.
+
+Tue Feb 10 16:14:36 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-idx.h (assign): Allow A([]) = X to succeed if X is an
+	empty matrix of any dimension.
+
+Thu Feb  5 02:12:38 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-syscalls.cc (octave_syscalls::vfork): New function.
+
+	* lo-specfun.cc: Don't include dbleBessel.h.
+
+	* Makefile.in (INCLUDES): Delete oct-math.h from the list.
+
+	* dir-ops.h (dir_entry::operator bool ()): Return bool, not void*.
+	* file-stat.h (file_stat::operator bool ()): Likewise.
+	* idx-vector.h (idx_vector::operator bool ()): Likewise.
+	* oct-group.h (octave_group::operator bool ()): Likewise.
+	* oct-passwd.h (octave_passwd::operator bool ()): Likewise.
+
+	* data-conv.cc (IEEE_little_double_to_IEEE_big_double):
+	Don't cast arg in call to swap_8_bytes.
+	(IEEE_big_double_to_IEEE_little_double): Ditto
+	(IEEE_big_float_to_IEEE_little_float): Don't cast arg in call to
+	swap_4_bytes.
+	(IEEE_little_float_to_IEEE_big_float): Ditto
+
+	* oct-alloc.cc (grow): Use X_CAST, not static_cast.
+	* prog-args.cc (prog_args::getopt): Likewise.
+	* dMatrix.cc (read_int, do_read, write_int, do_write): Likewise.
+	* cmd-edit.cc (gnu_readline::do_set_completion_function): Likewise.
+	* data-conv.cc (LS_DO_READ, LS_DO_WRITE, read_doubles, write_doubles):
+	Likewise.
+
+	* byte-swap.h (swap_bytes, swap_2_bytes, swap_4_bytes,
+	swap_8_bytes): Declare ptr arg as void*, then use cast.
+
+Mon Feb  2 01:42:56 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install, uninstall): Use $(octlibdir), not $(libdir).
+	Use $(mk-libdir-link).
+
+	* file-stat.cc (file_stat::update_internal): Use stat and lstat,
+	not SAFE_STAT and SAFE_LSTAT.
+	(lstat): New function, defined if HAVE_LSTAT is not defined.
+	* safe-xstat.hin, safe-xstat.cin: Delete.
+	* Makefile.in: Delete rules for safe-stat.h, safe-stat.c,
+	safe-lstat.h, and safe-lstat.cc.
+
+Fri Jan 30 23:48:43 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* chMatrix.cc (charMatrix::all, charMatrix::any): New functions.
+
+Tue Jan 20 16:30:00 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::expm): Skip trace normalization step if the
+	trace is negative. 
+	* CMatrix.cc (ComplexMatrix::expm): Skip trace normalization if
+	the real part of the trace is negative.
+
+Mon Jan 19 16:01:59 1998  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::expm): Call xdlange instead of dlange.
+	* CMatrix.cc (ComplexMatrix::expm): Call xzlange instead of zlange.
+
+	* Array2-idx.h (assign): Allow operations like a = 1; a(2:3) = [1;2]
+	to succeed.
+
+Thu Dec 18 14:53:45 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.cc (IDX_VEC_REP::sort): Don't do anything unless len > 1.
+	(make_uniq): Likewise.
+
+Fri Dec 12 10:58:33 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.cc (octave_ieee_init): Check for linux before __alpha__.
+
+Sun Nov 30 14:59:12 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc: Include cmath and lo-specfun.h, not oct-math.h.
+
+	* lo-specfun.h, lo-specfun.cc: New files.
+	* Makefile.in (INCLUDES, SOURCES): Add them to the lists.
+
+	* acosh.c, asinh.c, atanh.c, erf.c, erfc.c, gamma.c, lgamma.c,
+	oct-math.h: Delete.
+	* Makefile.in (SOURCES): Delete them from the list.
+
+Wed Nov 26 20:02:13 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-sysdep.cc (octave_getcwd): Prefer getcwd over getwd.
+
+Wed Nov 19 02:30:04 1997  Mumit Khan  <khan@dhaka.xraylith.wisc.edu>
+
+	Changes to make support egcs snapshots that implement explicit
+	specification of template functions according to CD2.
+
+	* MArray.h: If NEED_TEMPLATE_FCN_SPECS is defined, add explicit
+	template function specs for template friends.
+	* MArray2.h: Likewise.
+	* MDiagArray2.h: Likewise.
+
+Thu Nov 13 21:57:16 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.cc (sumsq): Compute equivalent of sum (x .* conj (x))
+
+Thu Oct  2 17:13:02 1997  Mumit Khan  <khan@dhaka.xraylith.wisc.edu>
+
+	* CRowVector.cc (linspace): Removed attempt for implicit conversion 
+	to complex<double>(int) instead of complex<double>(double).
+
+	* lo-mappers.cc (atanh): Ditto.
+
+Thu Jul 31 22:13:54 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.cc (IDX_VEC_REP::sort): New function.
+	* idx-vector.h (idx_vector::sort): Ditto.
+	* Array2-idx.h (Array2<T>::maybe_delete_elements): Use it before
+	trying to delete elements specified by the index vectors.
+
+Fri Jul 25 17:31:26 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::lssolve): Increase lwork by factor of 16.
+	* CMatrix.cc (ComplexMatrix::lssolve): Ditto.
+
+Thu Jul 24 14:32:48 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.cc (tilde_expand_word): Fix off-by-one error.
+
+Wed Jul  9 19:40:23 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-sysdep.cc (octave_getcwd): If getwd is available, use it.
+	Call error handler if we can't find the current directory.
+
+Mon Jul  7 21:14:41 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc (xisnan (double)): Return only 1 or 0.
+	(xfinite (double)): Ditto.
+
+	* dbleQR.cc (QR::init): Don't forget to initialize Q when type is raw.
+	* CmplxQR.cc (ComplexQR::init): Ditto.
+
+Sun Jun 15 21:06:37 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc (acos (const Complex&)): Select branch that is
+	compatible with Matlab.
+
+Tue Jun 10 10:58:05 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h: Correctly handle empty matrices indexed by a
+	single colon.
+
+Fri Jun  6 04:27:40 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc (xlgamma): Use F77_XFCN function to call dlgams.
+	(xgamma): Likewise, for calling xdgamma.
+
+	* FSQP.h, NPSOL.h, QPSOL.h, FSQP.cc, NPSOL.cc, QPSOL.cc: Delete
+	* Makefile.in (INCLUDES, SOURCES): Remove them from the lists.
+
+	* file-ops.cc (file_ops::tilde_expand): Steal more code from bash
+	to do better job expanding tildes.
+
+	* str-vec.cc (string_vector::string_vector (const char * const *):
+	Use temporary variable to compute length.
+
+Thu Jun  5 01:44:43 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in: Make building of static library optional.
+	(liboctave.$(SHLEXT_VER)): Add $(SONAME_FLAGS) to command.
+
+	* Makefile.in (stamp-picdir): Delete.
+	(pic): New target.  Don't worry so much about creating pic
+	directory only when it is really needed.
+	(stamp-interp): Delete.
+	(libraries): New target.  Depend on shared library directly.
+
+Wed Jun  4 00:08:55 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* pathsearch.h, pathsearch.cc (dir_pat::set_program_name):
+	New static function.
+
+Mon Jun  2 12:44:14 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-mappers.cc (fix): Use floor and ceil instead of casting to int.
+
+Thu May 22 16:20:43 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.h, cmd-edit.cc: Rename set_paren_string_delimiters to
+	set_basic_quote_characters, to match new version of readline.
+
+	* cmd-edit.cc (do_restore_terminal_state): Call readline function
+	for restoring terminal state through rl_deprep_term_function, now
+	declared in readline.h
+	(rl_deprep_terminal): Delete declaration.
+
+Wed May 21 16:30:25 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install-in): Use new mk-includedir-link macro.
+	(install-lib): Install in $octlibdir.  Use new mk-libdir-link macro.
+
+Thu May 15 11:46:42 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-edit.cc (command_editor::increment_current_command_number):
+	New static function.
+
+Mon May 12 02:14:13 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.cc (IDX_VEC_REP::is_colon_equiv): Make it work when
+	the vector is not sorted.
+
+	* CMatrix.cc (ComplexMatrix::operator !): Return boolMatrix.
+	* dMatrix.cc (Matrix::operator !): Likewise
+
+Wed May  7 21:14:06 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-syscalls.h, oct-syscalls.cc: New files.
+
+	* cmd-edit.h, cmd-edit.cc: Handle completion function.
+
+	* str-vec.h, str-vec.cc (string_vector::uniq): New function.
+
+Tue May  6 00:52:02 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (INCLUDES_FOR_INSTALL): New variable.
+	(install-inc): Use it.
+
+	* file-ops.h, file-ops.cc (tempnam): Add DIR and PREFIX args.
+	Handle errors and missing functions consistently.
+
+	* oct-group.h, oct-group.cc: New files.
+
+	* oct-passwd.cc: Handle errors and missing functions consistently.
+
+	* str-vec.h, str-vec.cc (c_str_vec, delete_c_str_vec): New functions.
+
+Mon May  5 17:53:01 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.cc: (file_ops::tilde_expand): Use new octave_passwd class.
+	* oct-env.cc (octave_env::do_get_user_name): Likewise.
+
+	* oct-passwd.h, oct-passwd.cc: New files.
+
+Sun May  4 22:17:08 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* statdefs.h: Only include sys/types.h if HAVE_SYS_STAT_H is defined.
+
+	* mach-info.h, mach-info.cc: Add missing const qualifiers.
+	(instance_ok ()): New function.
+
+	* glob-match.h, glob-match.cc: Rename from oct-glob.h, oct-glob.cc.
+
+	* cmd-hist.h, cmd-hist.cc: Make it work without GNU readline.
+
+	* lo-utils.h, lo-utils.cc (strsave, octave_putenv): Move here from
+	src/utils.h and src/utils.cc.
+	(octave_fgets): New function, extracted from src/input.cc.
+
+	* cmd-edit.h, cmd-edit.cc: New files.  Provide wrapper class for
+	GNU readline, and allow Octave to work without GNU readline.
+
+	* lo-sysdep.h, lo-sysdep.cc: New files for miscellaneous
+	system-dependent functions.
+
+	* oct-env.h, oct-env.cc: New files for process environment stuff.
+
+	* file-stat.h, file-stat.cc: New files.  Extract file_stat class
+	from file-ops.h and file-ops.cc and move here.
+
+	* file-ops.h, file-ops.cc: Wrap functions in struct.  Move
+	tilde_expand functions here from src/dirfns.cc.
+
+Fri May  2 19:50:12 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* pathlen.h: New file, from ../src.
+
+Tue Apr 29 04:39:01 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>::maybe_delete_elements): Prevent
+	out-of-bounds indexing of the index array.
+	* Array-idx.h (Array<T>::maybe_delete_elements): Likewise.
+
+Fri Mar 28 15:37:09 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* LSODE.h (x_step_limit): New field.
+	(LSODE_options::init): Initialize it.
+	(LSODE_options::copy): Copy it.
+	(LSODE_options::set_step_limit, LSODE_options::step_limit):
+	New functions.
+	(LSODE::working_too_hard): Delete.
+	* LSODE.cc (LSODE::do_integrate): Handle step limit.
+
+Wed Mar 26 15:31:57 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* MArray-b.cc: Delete.
+	* Makefile.in: Delete it from the lists.
+
+	* boolMatrix.h (class bboolMatrix): Derive from Array2, not
+	MArray2, since most of the numeric ops don't really make sense.
+
+Tue Mar 25 17:37:25 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* boolMatrix.cc (boolMatrix::all, boolMatrix::any): New functions.
+
+	* dMatrix.cc (Matrix::all, Matrix::any): Return boolMatrix.
+	* CMatrix.cc (ComplexMatrix::all, ComplexMatrix::any): Likewise.
+
+	* idx-vector.h (idx_vector::idx_vector_rep::freeze,
+	idx_vector::freeze): Delete prefer_zero_one arg.
+	* Array-idx.h, Array2-idx.h: Change all callers.
+
+	* Array-flags.h, Array-flags.cc (liboctave_pzo_flag): Delete.
+
+	* mx-op-defs.h: New file for operator definitions.
+	* mx-cdm-cm.h, mx-cdm-cs.h, mx-cdm-dm.h, mx-cdm-m.h, mx-cdm-s.h,
+	mx-cm-cdm.h, mx-cm-dm.h, mx-cm-m.h, mx-cm-s.h, mx-cs-cdm.h,
+	mx-cs-dm.h, mx-cs-m.h, mx-dm-cdm.h, mx-dm-cm.h, mx-dm-cs.h,
+	mx-dm-m.h, mx-dm-s.h, mx-m-cdm.h, mx-m-cm.h, mx-m-cs.h, mx-m-dm.h,
+	mx-s-cdm.h, mx-s-cm.h, mx-s-dm.h, mx-cdm-cm.cc, mx-cdm-cs.cc,
+	mx-cdm-dm.cc, mx-cdm-m.cc, mx-cdm-s.cc, mx-cm-cdm.cc, mx-cm-dm.cc,
+	mx-cm-m.cc, mx-cm-s.cc, mx-cs-cdm.cc, mx-cs-dm.cc, mx-cs-m.cc,
+	mx-dm-cdm.cc, mx-dm-cm.cc, mx-dm-cs.cc, mx-dm-m.cc, mx-dm-s.cc,
+	mx-m-cdm.cc, mx-m-cm.cc, mx-m-cs.cc, mx-m-dm.cc, mx-s-cdm.cc,
+	mx-s-cm.cc, mx-s-dm.cc:
+	New files for mixed-type operations.
+	* Makefiles.in: Add them to the appropriate lists.
+
+	* mx-inlines.cc: Add bool by bool EQ ops.
+
+	* idx-vector.h, idx-vector.cc: Add constructors for bool and
+	boolMatrix types.
+	(idx_vector::maybe_convert_one_zero_to_idx,
+	idx_vector::idx_vector_rep::maybe_convert_one_zero_to_idx):
+	Delete second arg, prefer_zero_one.  Change all callers.
+
+	* boolMatrix.h, boolMatrix.cc: New files.
+	* mx-base.h: Include boolMatrix.h here.
+	* mx-defs.h: Provide forward declaration for boolMatrix here.
+
+	* chMatrix.h, chMatrix.cc: Delete unused junk.
+
+	* dMatrix.h, CMatrix.h: Delete friend declarations for operator+,
+	operator-, operator*, product, and quotient functions.
+	Add constructor for boolMatrix type.
+	* dMatrix.cc, CMatrix.cc: Delete operator+, operator-, operator*,
+	product, and quotient functions.
+
+	* CDiagMatrix.h: Delete friend declarations for operator+,
+	operator-, and product functions.
+	* CDiagMatrix.h: Delete operator+, operator-, and product functions.
+
+	* Array-b.cc: Also instantiate 2d and 2d diagonal arrays.
+
+Fri Mar 14 00:29:46 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* EIG.cc (EIG::hermitian_init (const ComplexMatrix&)): New function.
+	(EIG::init (const ComplexMatrix&)): Call it if arg is hermitian.
+	(EIG::symmetric_init (const Matrix&)): New function.
+	(EIG::init (const Matrix&)): Call it if arg is symmetric.
+
+	* CMatrix.cc (ComplexMatrix::is_hermitian): New function.
+
+Thu Mar 13 17:04:26 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2.cc (is_symmetric): New function.
+	* Array2.h (is_square): New function.
+
+Wed Mar 12 16:59:49 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install-strip): New target.
+
+Mon Mar 10 22:34:22 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CmplxCHOL.cc, CmplxHESS.cc, CmplxLU.cc, CmplxQR.cc,
+	CmplxQRP.cc, CmplxSCHUR.cc, CmplxSVD.cc, EIG.cc, dbleCHOL.cc,
+	dbleHESS.cc, dbleLU.cc, dbleQR.cc, dbleQRP.cc, dbleSCHUR.cc,
+	dbleSVD.cc: Don't include mx-inlines.cc.
+
+	* mx-inlines.cc: Abuse the preprocessor to eliminate lots of
+	duplicate code.
+
+Sun Mar  9 03:44:52 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleQR.h (QR): Delete extra comma at end of list.
+
+	* prog-args.cc (prog_args::getopt): Add missing const in cast.
+
+	* dbleSVD.h (SVD::type): Delete extra comma at end of list.
+
+	* idx-vector.h (idx_vector): Delete unnecessary idx_vector:: and
+	idx_vecotr_rep:: qualifiers.
+
+	* Array.h (class Array): Delete unnecessary Array<T>:: qualifiers.
+
+	* data-conv.h (save_type): Delete extra comma at end of list.
+
+	* CMatrix.cc, FEGrid.cc, Range.cc, dMatrix.cc, data-conv.cc,
+	dir-ops.cc, file-ops.h, idx-vector.cc, idx-vector.h, lo-ieee.cc,
+	lo-mappers.cc, oct-alloc.cc: Use `static_cast<T> (val)' instead of
+	old C-style `(T) val' casts.
+
+Thu Mar  6 20:20:01 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (operator >>): Return if an error occurs instead of
+	just breaking out of the innermost loop.
+	* CMatrix.cc (operator >>): Likewise.
+
+Sat Mar  1 15:23:14 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Version 2.0.5 released.
+
+Fri Feb 28 20:11:23 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CmplxQR.cc (ComplexQR::init): New function.
+	(ComplexQR::ComplexQR): Use it.  Use initializer list too.
+	* CmplxQRP.cc (ComplexQRP::init): New function.
+	Get sizes right in all cases.
+	(ComplexQR::ComplexQRP): Use it.  Use initializer list too.
+
+	* dbleQR.cc (QR::init): New function.
+	(QR::QR): Use it.  Use initializer list too.
+	* dbleQRP.cc (QRP::init): New function.
+	Get sizes right in all cases.
+	(QR::QRP): Use it.  Use initializer list too.
+
+Wed Feb 26 15:46:28 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mach-info.cc (oct_mach_info::string_to_float_format):
+	Recognize "vaxg", not "vax_g".
+
+Fri Feb 21 16:07:56 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (Array2<T>::maybe_delete_elements): Use correct
+	dimension in check for colon equivalent index.
+	* idx-vector.cc (IDX_VEC_REP::is_colon_equiv): A single-element
+	index whose value is 0 is also colon eqivalent for n == 1.
+
+	* lo-ieee.cc (octave_ieee_init): Reorder #ifdef stuff to put
+	system-specific tests first.
+
+Thu Feb 20 02:58:05 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Version 2.0.4 released.
+
+Wed Feb 19 09:42:30 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.cc: D'oh, it's `extern "C"', not `#extern "C"'.
+
+Tue Feb 18 09:22:04 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Version 2.0.3 released.
+
+Fri Feb 14 16:23:47 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (bin-dist): Don't write empty strings to LIBRARIES.
+
+Thu Feb 13 14:35:19 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (stamp-prereq): Depend on stamp-picdir.
+	(all): Don't depend on stamp-prereq or stamp-picdir.
+	(liboctave.a, stamp-shared): Do depend on stamp-prereq.
+	(stamp-picdir): Silence noise about making pic.
+	(stamp-shared): Use $(SH_LD) $(SH_LDFLAGS) instead of $(CXX) -shared.
+
+	* Array2-idx.h (Array2<T>::index (idx_vector&, idx_vector&)):
+	Fix typo in last change. 
+
+	* CColVector.cc (ComplexColumnVector::map (d_c_mapper)):
+	Convert from friend (moved from dColVector.cc).
+	* CMatrix.cc (ComplexMatrix::map (d_c_mapper)):
+	Likewise (moved	from dMatrix.cc).
+	* CRowVector.cc (ComplexRowVector::map (d_c_mapper)):
+	Likewise (moved	from dRowVector.cc).
+
+	* dColVector.cc (ColumnVector::map (d_d_mapper)): Convert from friend.
+	* dMatrix.cc (Matrix::map (d_d_mapper)): Likewise.
+	* dRowVector.cc (RowVector::map (d_d_mapper)): Likewise.
+	* CColVector.cc (ComplexColumnVector::map (c_c_mapper)): Likewise.
+	* CMatrix.cc (ComplexMatrix::map (c_c_mapper)): Likewise.
+	* CRowVector.cc (ComplexRowVector::map (c_c_mapper)): Likewise.
+
+	* dColVector.cc (ColumnVector::apply): Rename from map, return *this.
+	* dMatrix.cc (Matrix::apply): Likewise.
+	* dRowVector.cc (RowVector::apply): Likewise.
+	* CColVector.cc (ComplexColumnVector::apply): Likewise.
+	* CMatrix.cc (ComplexMatrix::apply): Likewise.
+	* CRowVector.cc (ComplexRowVector::apply): Likewise.
+
+Tue Feb 11 19:44:28 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.cc: Declare quiet_nan() and infinity().
+
+Mon Feb 10 01:17:45 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.cc (oct_unlink (const string&, string&)):
+	New two-arg version.
+	(oct_rmdir (const string&, string&)): New two-arg version.
+	(oct_mkdir (const string&, mode_t, string&)): New three-arg version.
+	(oct_mkfifo (const string&, mode_t, string&)): New three-arg version.
+	(oct_rename (const string&, const string&, string&)):
+	New three-arg version.
+
+Fri Feb  7 13:15:55 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.h (idx_vector::orig_empty): New function.
+
+	* Array2-idx.h (Array2<T>::index (idx_vector&, idx_vector&)):
+	Don't always resize to [](0x0) if one of the indices is empty or
+	zero.
+
+Sun Feb  2 22:33:44 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-hist.cc (command_history::read): New arg, must_exist.
+	Set line_in_file here too.
+	(command_history::read_range): New arg, must_exist.
+
+Fri Jan 31 09:21:57 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* f2c-main.c: Change C++-style comments to C-style comments.
+
+Tue Jan 28 10:46:02 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install-inc): Create a relative symbolic link.
+
+Mon Jan 27 15:52:27 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Version 2.0.2 released.
+
+Sat Jan 25 22:36:21 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (bin-dist): New target.
+
+Wed Jan 22 16:18:53 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleSVD.cc (SVD::init): Work around apparent dgesvd() bug.
+	* CmplxSVD.cc (ComplexSVD::init): Work around apparent zgesvd() bug.
+
+Mon Jan 20 18:44:11 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* chMatrix.cc (charMatrix::charMatrix (const string&)):
+	If the number of columns is zero, also set the number of rows to zero.
+	(charMatrix::charMatrix (const char *)): Likewise.
+
+Tue Jan  7 00:16:57 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Version 2.0.1 released.
+
+Sun Jan  5 12:07:45 1997  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::read): Correctly compute the number of
+	columns for resizing when the number of rows is specified but the
+	number of columns is not.
+
+Wed Dec 18 16:18:58 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Range.cc (operator -): New function.
+
+	* lo-ieee.cc: Include <nan.h> on all systems that have it.
+
+Fri Dec 13 02:01:32 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (assign): Delay resizing left hand side until we
+	know if the assignment conforms.
+
+Tue Dec 10 01:43:09 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Version 2.0 released.
+
+Fri Dec  6 14:41:15 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (assign): If index is a colon, set number of
+	elements to the lhs dimension if the lhs dimension is greater than
+	zero.  Otherwise, set it to the rhs dimension.
+
+	* Version 1.94.
+
+	* Array2-idx.h (assign): Test for rhs scalar case first.
+	If index is colon, set number of elements to lhs dimension, not
+	rhs dimension.
+
+Thu Dec  5 13:05:18 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* sun-utils.h: Don't declare MAIN_ or MAIN__ here.
+	* sun-utils.cc: Delete.
+	* f2c-main.c: New file
+
+	* Makefile.in: Fix file name lists.
+
+	* CMatrix.cc (lssolve): Don't redeclare retval, resize it.
+
+Wed Dec  4 12:24:24 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Qzval): Don't try to use same memory three times.
+	Create result using Complex constructor, not multiplication.
+	Order elements as they are returned from Eispack.
+
+Mon Dec  2 00:26:41 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.cc (octave_ieee_init): Kluge for octave_Inf on SCO.
+	Only include nan.h if SCO is defined.  Define _IEEE before
+	including it and undefine it afterward.
+	[SCO] (isnan): Don't mistake Inf as NaN.
+
+	* Array-idx.h (assign): Only resize if assignment conforms.
+
+Wed Nov 20 01:00:40 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (INCLUDES): Delete lo-error.h.
+	* lo-error.h: Delete (moved to libcruft/misc).
+
+	* Version 1.93.
+
+Tue Nov 19 23:07:45 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-glob.cc (glob_match::match): Don't expect our flag values to
+	be the same as they are in fnmatch.h.
+
+	* f77-fcn.c, f77-fcn.h: Move to libcruft/misc directory.
+
+	* Makefile.in (INCLUDES): Delete f77-fcn.h.
+	(SOURCES): Delete f77-fcn.c.
+
+Fri Nov 15 13:47:34 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.h: [SCO]: Declare isinf and isnan.
+
+Thu Nov 14 00:06:53 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Version 1.92.
+
+Wed Nov 13 11:19:22 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-hist.cc (command_history::add): Ignore empty input lines, or
+	lines that have only carriage return or newline.
+
+	* lo-ieee.cc (isnan, isinf): Provide functions for SCO.
+
+Tue Nov 12 11:11:21 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.cc (idx_is_inf_or_nan): New function.
+	(IDX_VEC_REP::idx_vector_rep): Use it.
+
+Sun Nov 10 17:09:24 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* str-vec.h, str-vec.cc: Add constructors to make string vectors
+	from vectors of C strings.
+
+	* oct-glob.h, oct-glob.cc (glob_match): Allow pat to be a string
+	vector.
+	(glob_match::match): Allow match string to be a string vector.
+	(glob_match::glob): New function.
+
+	* chMatrix.cc (charMatrix::row_as_string): New arg, strip_ws.
+
+	* Array-b.cc: New file.
+	* Makefile.in (TI_SRC): Add it to the list.
+
+Fri Nov  8 18:09:12 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.cc: Change #include "" to #include <> for safe-lstat.h
+	and safe-stat.h, to avoid getting them from $srcdir when we really
+	want the version from the build directory.  (Maybe this should be
+	done for all the include files, not just those that are
+	auto-generated?  Hmm.)
+
+Thu Nov  7 10:45:11 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Version 1.91.
+
+	* Array3.cc (Array3<T>::resize): Make it work.
+
+Wed Nov  6 22:44:33 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-alloc.h, oct-alloc.cc: New files.
+	* Makefile.in: Add them to the lists.
+
+Mon Nov  4 21:49:51 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleQRP.cc (QRP::QRP): Don't pass tmp data to unsafe constructor.
+	* CmplxQRP.cc (ComplexQRP::ComplexQRP): Ditto.
+
+Sun Nov  3 15:45:37 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.cc (file_stat::is_blk, file_stat::is_chr,
+	file_stat::is_dir, file_stat::is_fifo, file_stat::is_lnk,
+	file_stat::is_reg, file_stat::is_sock): Just return false if the
+	underlying macro is not defined.	
+
+	* oct-math.h (lgamma, gamma): Delete declarations.
+	(asinh, acosh, atanh, erf, erfc): Declare arg types too.
+	Protect declarations with #ifdef HAVE_*.
+
+Wed Oct 30 11:42:58 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Version 1.90.
+
+	* Makefile.in (DISTFILES): Add ChangeLog.
+
+	* cmd-hist.cc: Only include fcntl.h if HAVE_FCNTL_H.
+
+	* Matrix-ext.cc: Include <cfloat>, not <float.h>.
+
+	* CMatrix.cc, cmd-hist.cc, file-ops.cc, file-ops.h, filemode.c,
+	mkdir.c, rename.c, rmdir.c, safe-xstat.cin, statdefs.h, sysdir.h,
+	tempname.c, utils.cc: Only include sys/types.h if HAVE_SYS_TYPES_H.
+
+	* Array3.h (T Array3<T>::checkelem): Return T() for bogus value,
+	since that is now accepatble syntax, even for built-in types.
+	* Array2.h (T Array2<T>::checkelem): Likewise
+
+Sat Oct 26 23:37:34 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.cc (mkfifo) [! HAVE_MKFIFO]: Just print an error
+	message and return -1.
+
+Fri Oct 25 01:24:51 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* str-vec.h (str_vec_compare): Declare args as const void *, then
+	cast them to const string * in the body of the function.
+
+	* file-ops.cc (file_stat::mode_as_string): Explicitly construct
+	string from buf.
+
+	* Array3.h (Array3::checkelem): Tag bogus return value with
+	GCC_ATTRIBUTE_UNUSED.
+	* Array2.h (Array2::checkelem): Likewise.
+	
+Thu Oct 24 19:40:36 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Quad.h (Quad): Define virtual destructor.
+
+Tue Oct 15 11:34:48 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.cc (ComplexMatrix::all_elements_are_real): new function.
+
+Sun Oct 13 11:19:00 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* sun-utils.h: Conditionally declare MAIN__ too.  Declare MAIN_
+	and MAIN__ extern "C".
+	* sun-utils.cc: Include sun-utils.h here.  Delete extern "C" stuff.
+
+Sat Oct 12 12:40:00 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* MArray-misc.cc: New file.
+	* Makefile.in (MATRIX_SRC): Add it to the list.
+
+	* mx-inlines.cc (equal): Return bool, not int.
+
+	* idx-vector.h (idx_vector (double)): New constructor.
+
+	* chMatrix.h, chMatrix.cc, CMatrix.h, CMatrix.cc, dMatrix.h,
+	dMatrix.cc, dDiagMatrix.h, dDiagMatrix.cc, dRowVector.h,
+	dRowVector.cc, dColVector.h, dColVector.cc, CColVector.h,
+	CColVector.cc, CDiagMatrix.h, CDiagMatrix.cc, CRowVector.h,
+	CRowVector.cc: Logical operators return bool, not int.
+
+	* CMatrix.h, CMatrix.cc (ComplexMatrix::any_element_is_inf_or_nan):
+	New function.
+
+	* dMatrix.h, dMatrix.cc (Matrix::any_element_is_negative,
+	Matrix::any_element_is_inf_or_nan, Matrix::abs,
+	Matrix::all_elements_are_inf_or_nan): New functions.
+
+	* Range.h, Range.cc (Range::all_elements_are_ints): New function.
+
+	* MArray.cc, MArray2.cc, MDiagArray2.cc: Call gripe_nonconformant
+	for errors.  Simplify macros by converting FCN to string for error
+	messages.
+
+	* Array-idx.h (Array<T>::index): New function.  Don't call
+	clear_index() here.
+	(Array<T>::value): Call it, do call clear_index() here.
+	* Array2-idx.h (Array<T>::value, Array<T>::index): Likewise, for
+	one and two arg index functions.
+
+Tue Sep 17 21:21:16 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DAEFunc.h: Delete #pragma interface since there is no longer a
+	separate implementation file.
+
+Tue Aug 20 17:38:46 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (stamp-picdir): Only create a pic subdirectory if
+	SHARED_LIBS is true AND CPICFLAG or CXXPICFLAG is not empty.
+
+	* idx-vector.cc (IDX_VEC_REP::is_colon_equiv): Rename arg sort to
+	sort_uniq.  If sort_uniq is nonzero, sort the elements and make
+	them uniq.
+
+	* CMatrix.cc (ComplexMatrix::row_max, ComplexMatrix::row_min,
+	ComplexMatrix::column_max, ComplexMatrix::column_min):
+	Rewrite.  Also return index as a reference arg.
+	(ComplexMatrix::row_max_loc, ComplexMatrix::row_min_loc,
+	ComplexMatrix::column_max_loc, ComplexMatrix::column_min_loc):
+	Delete.
+
+	* dMatrix.cc (Matrix::row_max, Matrix::row_min,
+	Matrix::column_max, Matrix::column_min):
+	Rewrite.  Also return index as a reference arg.
+	(Matrix::row_max_loc, Matrix::row_min_loc,
+	Matrix::column_max_loc, Matrix::column_min_loc): Delete.
+
+Fri Aug  9 05:01:04 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::row_min, Matrix::row_min_loc,
+	Matrix::row_max, Matrix::row_max_loc, Matrix::column_min,
+	Matrix::column_min_loc, Matrix::column_max,
+	Matrix::column_max_loc): Ignore leading NaNs.
+	* CMatrix.cc (ComplexMatrix::row_min, ComplexMatrix::row_min_loc,
+	ComplexMatrix::row_max, ComplexMatrix::row_max_loc,
+	ComplexMatrix::column_min, ComplexMatrix::column_min_loc,
+	ComplexMatrix::column_max, ComplexMatrix::column_max_loc): Ignore
+	leading NaNs.
+
+Thu Aug  8 16:04:17 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* QPSOL.cc (QPSOL::do_minimize): Insert linear constraint bounds
+	starting at n, not 0.
+
+Sat Jul 27 02:54:44 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::Matrix (const RowVector&),
+	Matrix::Matrix (const ColumnVector&)): New constructors.
+
+	* CMatrix.cc (ComplexMatrix::ComplexMatrix (const RowVector&),
+	ComplexMatrix::ComplexMatrix (const ColumnVector&),
+	ComplexMatrix::ComplexMatrix (const ComplexRowVector&),
+	ComplexMatrix::ComplexMatrix (const ComplexColumnVector&)):
+	New constructors.
+
+	* chMatrix.cc (charMatrix::charMatrix (const string_vector&)):
+	New constructor.
+
+Wed Jul 24 16:39:16 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* LSODE.cc (do_integrate): Check to make sure that the state and
+	derivative vectors are the same size.
+	* DASSL.cc (do_integrate): Likewise.
+
+Sun Jul 14 17:30:37 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::read, Matrix::write): Convert to use
+	iostreams and handler data format conversions.  Delete old methods
+	that used stdio.
+
+	* data-conv.h, data-conv.cc (oct_data_conv): New class.
+
+Fri Jul 12 13:52:44 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* mach-info.h: Rename from float-fmt.h.
+	* mach-info.cc: Rename from float-fmt.cc.
+	Handle machine information using a singlton class.
+	* Makefile.in: Update appropriate lists.
+
+Tue Jul  9 11:49:10 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-flags.cc: Provide definitions for the flags even if
+	OCTAVE_SOURCE is not defined.
+
+	* Array.h, Array2.h, Array3.h: BOUNDS_CHECKING now affects
+	operator(), not elem().
+	* Array3.h: Move indexing methods here from Array3.cc.
+
+Mon Jun 24 02:30:05 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array3.cc (checkelem): Fix typo in call to Array2<T>::elem().
+
+	* Makefile.in (install-lib): Use INSTALL_PROGRAM instead of
+	INSTALL_DATA for shared libs.
+
+Thu Jun  6 09:59:06 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Quad.cc: Include lo-error.h here too.
+
+Mon May 27 12:41:07 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* file-ops.h: Include sys/types.h here.
+
+Wed May 22 00:20:24 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* chMatrix.cc (charMatrix::transpose): Provide definition.
+
+	* Array-idx.h (maybe_delete_elements): Correctly compute number of
+	elements in result.
+	* Array2-idx.h (maybe_delete_elements): Likewise for number of
+	rows and columns in result.
+
+Tue May 21 23:46:09 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleQR.cc (QR::QR): Don't create result from to-be-deleted data.
+	* CmplxQR.cc (ComplexQR::ComplexQR): Likewise.
+
+Fri May 17 03:06:02 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install-inc): Install in octincludedir, not includedir.
+
+Sun May 12 03:40:01 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (uninstall): Also delete shared library.
+	Split install into install-libs and install-includes.
+	(install-inc): If linkdir is a directory, leave it alone.
+
+	* sun-utils.cc (MAIN__): Define for Linux/ELF systems.
+
+Thu May  2 20:19:01 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-idx.h (assign): Handle A(:) = X for A undefined or empty.
+	* Array2-idx.h (assign): Likewise.
+
+Tue Apr 30 05:43:06 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2.cc (Array2<T>::range_error): New functions.
+
+	* Array.h (class Array<T>): elem() and operator() are now
+	equivalent, and do bounds checking by default.
+	* Array2.cc (class Array2<T>): Likewise.
+
+Sat Apr  6 21:26:11 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (maintainer-clean, distclean): Also delete
+	stamp-picdir, stamp-shared, and pic directory.
+	(stamp-prereq): New target.
+
+Fri Mar 29 13:44:13 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* NPSOL.h (NPSOL_options::set_option (const char *, int)):
+	New function.
+
+	* Array.h, Array.cc (Array<T>::range_error ()): New functions.
+	* Array.h (Array<T>::checkelem): Use them.
+
+	* base-lu.h, base-lu.cc: Parameterize based on types of matrix
+	elements too.
+	* dbleLU.h, dbleLU.cc, CmplxLU.h, CmplxLU.cc: Change to match.
+
+	* MDiagArray2.h (MDiagArray2 (const MArray<T>& a)): Delete.
+
+	* Makefile.in (distclean): Delete so_locations, which is created
+	on DEC Alpha systems.
+
+Sat Mar 23 04:02:53 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.h (HEAVYWEIGHT_INDEXING): Do define this here if it is not
+	already defined.
+
+Fri Mar 22 23:53:58 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* pathsearch.cc: Include config.h.
+
+Wed Mar 20 04:54:03 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2-idx.h (assign (Array2<LT>&, const Array2<RT>&)): Don't
+	allow M(I, J) = scalar if I or J is empty.
+
+	* Array-idx.h: Delete Array2 and Array3 code (now in Array2-idx.h
+	and Array3-idx.h).
+
+Thu Mar  7 10:20:12 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-error.h: Make comments C friendly.
+
+Sun Mar  3 14:04:32 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2.h (make_unique): Move all indexing functions here.
+	* Array2.cc: From here.
+
+	* Array.h, Array2.h (NO_BOUNDS_CHECKING): New macro to control
+	whether operator() calls elem or checkelem.
+
+	* Array.h (make_unique): New private function.
+	Move all indexing functions here.
+	* Array.cc: From here.
+
+	* pathsearch.cc (dir_path::find_all): Index tmp, don't dereference
+	it too.
+
+	* Array-d.cc, Array-ch.cc, Array-C.cc, Array-s.cc, Array-str.cc,
+	Array-i.cc, MArray-i.cc, MArray-s.cc, MArray-d.cc, MArray-ch.cc,
+	MArray-C.cc: Include config.h.
+
+	* Array.h, Array2.h, DiagArray2.h, Array3.h:
+	Don't define HEAVYWEIGHT_INDEXING here.
+
+Sat Mar  2 18:39:35 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* base-lu.h, base-lu.cc: New files.
+	* Makefile.in: Add them to the appropriate lists.
+	* dbleLU.h, dbleLU.cc, CmplxLU.h, Cmplx.cc: Derive from base_lu.
+
+Fri Mar  1 08:30:58 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array2.h, Array3.h, DiagArray2.h: New files, extracted from Array.h
+	* Array2-idx.h, Array3-idx.h: New files, extracted from Array-idx.h
+ 	* Array2.cc, Array3.cc, DiagArray2.cc: New files, from Array.cc.
+	* MArray2.h, MDiagArray2.h: New files, extracted from MArray.h.
+	* MArray2.cc, MDiagArray2.cc, MArray-defs.h: New files, from MArray.cc.
+	
+	* MArray.h (INSTANTIATE_MARRAY_FRIENDS): New macro.
+	(INSTANTIATE_MARRAY2_FRIENDS): Likewise.
+	(INSTANTIATE_MDIAGARRAY_FRIENDS): Likewise.
+	* MArray-C.cc, MArray-ch.cc, MArray-c.cc, MArray-i.cc, MArray-s.cc:
+	Simplify using new macros.
+
+Mon Feb 26 03:04:29 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (install): If $(includedir) ends in version string,
+	make link to name that does not include version info.
+
+	* lo-ieee.cc: Include <cmath> here.
+
+Fri Feb 16 20:52:34 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-ieee.cc, lo-ieee.h: New files.
+	* lo-mappers.cc, lo-mappers.h: New files.
+	* lo-utils.cc, lo-utils.h: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+Thu Feb 15 22:02:17 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (all_integers, too_large_for_float): New functions.
+	* CMatrix.cc (all_integers, too_large_for_float): New functions.
+
+	* byte-swap.h, data-conv.h, data-conv.cc, float-fmt.h,
+	float-fmt.cc: New files.
+	* Makefile.in: Include them in the appropriate lists.
+
+Wed Feb 14 01:49:47 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Qzval): New function.
+
+Tue Feb 13 12:41:54 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* NPSOL.cc (NPSOL_options::set_option): Arg key is now string, not
+	char*.
+
+	* DASSL.h, DASSL.cc: Do better management of temporary workspace.
+	Use F77_XFCN to call Fortran subroutine.
+	* dColVector.cc, CColVector.cc: Likewise.
+	* dRowVector.cc, CRowVector.cc: Likewise.
+	* NPSOL.h, NPSOL.cc: Likewise.
+	* CmplxCHOL.cc: Likewise.
+	* dbleCHOL.cc: Likewise.
+	* CMatrix.cc: Likewise.
+	* dMatrix.cc: Likewise.
+	* QPSOL.cc: Likewise.
+	* LSODE.cc: Likewise.
+
+Sun Feb 11 14:14:26 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleHESS.cc (HESS::init): Dimension of tau is n-1, not n+1.
+
+	* dbleSCHUR.h, dbleSCHUR.cc: Do better management of temporary
+	workspace.  Use F77_XFCN to call Fortran subroutine.
+	* CmplxAEPBAL.h, CmplxAEPBAL.cc: Likewise.
+	* CmplxSCHUR.h, CmplxSCHUR.cc: Likewise.
+	* dbleGEPBAL.h, dbleGEPBAL.cc: Likewise.
+	* dbleAEPBAL.h, dbleAEPBAL.cc: Likewise.
+	* CmplxHESS.h, CmplxHESS.cc: Likewise.
+	* CmplxSVD.h, CmplxSVD.cc: Likewise.
+	* dbleHESS.h, dbleHESS.cc: Likewise.
+	* dbleSVD.h, dbleSVD.cc: Likewise.
+	* EIG.h, EIG.cc; Likewise.
+	* CollocWt.cc: Likewise.
+	* NLEqn.cc: Likewise.
+	* Quad.cc: Likewise.
+
+Sat Feb 10 12:14:59 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleLU.h, dbleLU.cc: Do better management of temporary workspace.
+	Use F77_XFCN to call Fortran subroutine.
+	* CmplxLU.h, CmplxLU.cc: Ditto.
+	* dbleQR.h, dbleQR.cc: Ditto.
+	* CmplxQR.h, CmplxQR.cc: Ditto.
+	* dbleQRP.h, dbleQRP.cc: Ditto.
+	* CmplxQRP.h, CmplxQRP.cc: Ditto.
+
+	* dir-ops.h (dir_entry::dir): Declare as void*, not DIR*.
+	(struct DIR): delete forward declaration.
+	(dir_entry::operator = (const dir_entry$)): Protect against
+	copying same object.
+	* dir-ops.cc: Cast dir appropriately.
+
+Fri Feb  9 16:12:44 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* lo-error.cc: Moved to libcruft/misc.
+	* Makefile.in: Delete it from the list.
+
+	* f77-fcn.c (f77_context, f77_exception_encountered): Delete
+	definitions (they have been moved to libcruft/misc/f77-extern.cc).
+
+	* Array-flags.h: New file.
+	* Array-idx.h: Include it here.
+	* Makefile.in (MATRIX_INC): Add it to the list.
+
+	* Array-flags.cc: Renamed from Array-ext.cc.
+	(liboctave_dfi_flag): Renamed from dfi_flag.
+	(liboctave_pcv_flag): Renamed from pcv_flag.
+	(liboctave_pzo_flag): Renamed from pzo_flag.
+	(liboctave_rre_flag): Renamed from rre_flag.
+	* Array-idx.h: Change all uses of dfi_flag, etc.
+	* Makefile.in (MATRIX_SRC): Change file name here too.
+
+	* Makefile.in (LIBOCTAVE_LFLAGS, LIBOCTAVE_LIBS): New variables.
+	(stamp-shared): Use them here.
+
+Tue Feb  6 09:53:41 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-hist.cc (command_history::ignore_entries): Delete default
+	argument value.
+
+Mon Feb  5 12:07:50 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CmplxAEPBAL.h, CmplxCHOL.h, CmplxDET.h, CmplxHESS.h, CmplxLU.h,
+	CmplxQR.h, CmplxQRP.h, CmplxSCHUR.h, CmplxSVD.h, dbleAEPBAL.h,
+	dbleCHOL.h, dbleDET.h, dbleGEPBAL.h, dbleHESS.h, dbleLU.h,
+	dbleQR.h, dbleQRP.h, dbleSCHUR.h, dbleSVD.h:
+	Clean up constructors, assigment operator.
+
+Sun Feb  4 03:12:04 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* NPSOL.cc (do_minimize): Use F77_XFCN to call npsol.
+	Check f77_exception_encountered on return.
+
+	* f77-fcn.c (f77_exception_encountered): New variable.
+	(F77_XFCN): Set it.
+	* f77-fcn.h: Provide declaration.
+
+	* QPSOL.h (QPSOL_options::set_options): Renamed from copy().
+
+	* NPSOL.h (NPSOL_options::set_options): Renamed from copy().
+
+	* NLEqn.h (NLEqn_options::set_options): New function.
+	* Quad.h (Quad_options::set_options): Likewise.
+
+	* LP.h (class LP): Add accessors for LP data.
+
+	* NLEqn.h (NLEqn::n): Delete.
+
+	* NLEqn.h (class NLEqn::n): Likewise.
+
+	* NLP.h (class NLP): Add accessors for NLP data.
+
+	* NPSOL.h (class NPSOL_options): Move constructors, set, and
+	access functions here.
+	* NPSOL.cc.cc: From here.
+
+	* QLD.h (class QLD): Add destructor definition.
+	* Objective.h (class Objective): Likewise.
+	* ODEFunc.h (class ODEFunc): Likewise.
+	* NLFunc.h (class NLFunc): Likewise.
+	* NLEqn.h (class NLEqn): Likewise.
+	* NLConst.h (class NLConst): Likewise.
+	* LinConst.h (class LinConst): Likewise.
+	* LSODE.h (class LSODE_options): Likewise.
+	* CollocWt.h (class CollocWt): Likewise.
+	* Bounds.h (class Bounds): Likewise.
+
+	* QLD.cc (QLD::set_default_options): Delete.
+
+	* QP.h (QP): Add accessors for QP data.
+	Add copy constructor, operator =, and destructor definitions.
+
+	* Range.h, Quad.h, QP.h, QLD.h, Objective.h, NLP.h, NLFunc.h,
+	NLConst.h, LinConst.h, LSODE.h, LP.h, FEGrid.h, EIG.h, DASSL.h,
+	DAEFunc.h, CollocWt.h, Bounds.h:
+	Clean up constructors, assigment operator.
+	
+	* dRowVector.cc (RowVector::transpose): Use magic of reference
+	counting to avoid duplicating the data immediately.
+	* dColVector.cc (ColumnVector::transpose): Likewise.
+	* CRowVector.cc (ComplexrowVector::transpose): Likewise.
+	* CColVector.cc (ComplexColumnVector::transpose): Likewise.
+
+Sat Feb  3 01:02:36 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* prog-args.h (prog_args::option_argument): New enum.
+
+	* f77-fcn.h: Rename from f77-uscore.h.
+	(F77_XFCN_ERROR, F77_XFCN): New macros.
+	* f77-fcn.c: New file.
+	* Makefile.in (SOURCES): Add it to the list.
+
+	* ODEFunc.h: Clean up.
+
+	* DASSL.cc, DASSL.h: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+	* LSODE.cc, LSODE.h: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+	* ODE.cc: Delete.
+	* Makefile.in (SOURCES): Remove from list.
+
+	* base-de.h, DAE.cc: New files.
+	* Makefile.in: Add them to the appropriate lists.
+	* ODE.h: Only define interface for ODE classes.
+	* DAE.h: Only define interface for ODE classes.
+
+	* LPsolve.cc (do_minimize): Print sorry not implemented message.
+	(LPsolve::set_default_options)): Delete
+	* LPsolve.h (class LPsolve): Add operator =, copy constructor, and
+	destructor.
+
+	* LP.h (class LP): Add operator =, copy constructor, and destructor.
+
+	* QPSOL.h (QPSOL::QPSOL (const QPSOL&)): New constructor.
+	(QPSOL::operator =): Call base class operator = instead of assuming
+	we know what to copy.
+
+	* base-min.h (size): New function.
+
+	* NLP.h (NLP::size): Delete.
+	(NLP::NLP (const NLP&)): New constructor.
+	(NLP::operator =): Call base class operator = instead of assuming
+	we know what to copy.
+
+	* NPSOL.h, NPSOL.cc (NPSOL::option): Delete.
+	(class NPSOL): Add operator = and destructor.
+
+	* NPSOL.h: Add NPSOL_options() to list of constructor initalizers.
+
+Fri Feb  2 22:52:55 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (liboctave.a): Depend on $(PICOBJ).
+
+Wed Jan 31 05:29:25 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Givens, Sylvester, Matrix::expm): New functions.
+	* CMatrix.cc (Givens, Sylvester, ComplexMatrix::expm): Ditto.
+
+Mon Jan 29 00:00:12 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* prog-args.h, prog-args.cc: New files.
+	* Makefile.in: Add them to lists.
+
+	* getopt.h, getopt.c, getopt1.c: New files.
+	* Makefile.in: Add them to the lists.
+
+	* oct-term.h, oct-term.cc: New files.
+	* Makefile.in: Add them to the lists.
+
+	* str-vec.cc: New file.
+	* Makefile.in (SOURCES): Add it to the list.
+
+	* file-ops.cc (oct_tmpnam): Move here from src/utils.cc.
+
+	* tempname.c, tempnam.c: Move here from src directory.
+	* Makefile.in: Add to lists.
+
+Sun Jan 28 23:06:19 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* cmd-hist.h, cmd-hist.cc: New files.
+	* Makefile.in: Add them to lists.
+
+Thu Jan 25 20:36:05 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* oct-glob.h, oct-glob.cc: New files.
+	* Makefile.in: Add them to lists.
+
+Wed Jan 24 01:55:08 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* pathsearch.h, pathsearch.cc: New files.
+	* Makefile.in: Add them to lists.
+
+	* dir-ops.h, dir-ops.cc: New files.
+	* sysdir.h: Move here from src directory.
+	* Makefile.in: Add them to lists.
+
+	* Array.h (Array::qsort): Return *this, not void.
+	* str-vec.h (string_vector::qsort): Likewise.
+
+	* chMatrix.cc (row_as_string): Resize result to eliminate
+	unnecessary NULs.
+
+Tue Jan 23 00:40:58 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* safe-xstat.hin, safe-xstat.cin, statdefs.h, file-ops.h,
+	file-ops.cc, filemode.c, mkdir.c, rmdir.c, rename.c:
+	Files moved here from src directory.
+	* Makefile.in: Add them to lists.  Include appropriate rules.
+
+	* acosh.c, asinh.c, atanh.c, erf.c, erfc.c, gamma.c, lgamma.c:
+	Use pointers, not references (this is C code!).
+
+	* oct-math.h: New file.
+	* acosh.c, asinh.c, atanh.c, erf.c, erfc.c, gamma.c, lgamma.c:
+	Files moved here from src directory.
+	* Makefile.in: Add them to lists.
+
+Sun Jan 21 22:53:37 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.cc (make_uniq): Fix major brain-o.
+
+	* CmplxSCHUR.h, CmplxSCHUR.cc, dbleSCHUR.h, dbleSCHUR.cc:
+	Convert	to use string class instead of char*.
+
+	* str-vec.h, Array-str.cc: New files.
+
+	* Array.h (Array::qsort): New function.
+
+Fri Jan 12 01:45:10 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.h: Nest ArrayRep class inside Array class.
+	Refer to ArrayRep, not ArrayRep<T>.
+	Move all ArrayRep functions inline.
+	Don't declare other Array classes as friends of ArrayRep.
+	* Array.cc: Delete ArrayRep functions.
+	* Array-idx.h: Refer to ArrayRep, not ArrayRep<T>.
+
+	* Array-C.cc, Array-ch.cc, Array-d.cc, Array-i.cc, Array-s.cc:
+	Don't instantiate ArrayRep objects.
+
+Wed Jan 10 04:40:21 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* chMatrix.cc (charMatrix::charMatrix (const string&)):
+	New constructor.
+
+Tue Jan  9 04:44:56 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleGEPBAL.cc (GEPBALANCE::init): Use string instead of char*
+	for balance_job arg.
+	* dbleAEPBAL.cc (AEPBALANCE::init): Likewise.
+	* CmplxAEPBAL.cc (ComplexAEPBALANCE::init): Likewise.
+
+	* chMatrix.cc (row_as_string): Return string, not const char*.
+
+Mon Jan  8 03:20:01 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (clean): If $(SHARED_LIBS), also remove shared libs.
+
+	* chMatrix.cc (row_as_string): Undo previous change.
+
+Sun Jan  7 19:50:16 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* chMatrix.cc (row_as_string): Do memory management here.  Caller
+	is expected to save string if necessary.
+
+Sat Jan  6 19:28:20 1996  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.h (class DiagArray): Enable nested Proxy class for all
+	platforms.
+
+	* Array.cc (Array<T>::operator = (const Array<T>&)): If rep ==
+	a.rep, don't mess with count.
+	* Array.h (Array2<T>& operator = (const Array2<T>&)): Likewise,
+	don't do anything if reps are the same.
+	(Array3<T>& operator = (const Array3<T>&)
+
+	* Array.h (ArrayRep<T>::operator = (const ArrayRep<T>&)):
+	Declare private with no definition to prevent misuse.
+
+	* Array.cc (Array2<T>::insert (const Array2<T>&, int, int)):
+	Get range check right.
+	* dMatrix.cc (Matrix::insert (const RowVector&, int, int)): Ditto.
+	(Matrix::insert (const ColumnVector&, int, int)): Ditto.
+	(Matrix::insert (const DiagMatrix&, int, int)): Ditto.
+	* CMatrix.cc (ComplexMatrix::insert (const Matrix&, int, int)): Ditto.
+	(ComplexMatrix::insert (const RowVector&, int, int)): Ditto.
+	(ComplexMatrix::insert (const ColumnVector&, int, int)): Ditto.
+	(ComplexMatrix::insert (const DiagMatrix&, int, int)): Ditto.
+	(ComplexMatrix::insert (const ComplexRowVector&, int, int)): Ditto.
+	(ComplexMatrix::insert (const ComplexColumnVector&, int, int)): Ditto.
+	(ComplexMatrix::insert (const ComplexDiagMatrix&, int, int)): Ditto.
+	* dRowVector.cc (RowVector::insert (const RowVector&, int)): Ditto.
+	* dColVector.cc
+	(ColumnVector::insert (const ColumnVector&, int)): Ditto.
+	* CRowVector.cc
+	(ComplexRowVector::insert (const RowVector&, int)): Ditto.
+	(ComplexRowVector::insert (const ComplexRowVector&, int)): Ditto.
+	* CColVector.cc
+	(ComplexColumnVector::insert (const ColumnVector&, int)): Ditto.
+	(ComplexColumnVector::insert (const ComplexColumnVector&, int)): Ditto.
+
+	* dMatrix.cc (Matrix::insert (const DiagMatrix&, int, int)):
+	Also fill in zeros, not just the diagonal.
+
+	* CDiagMatrix.cc (ComplexDiagMatrix::fill (double, int, int)):
+	Use END parameter properly.
+	(ComplexDiagMatrix::fill (const Complex&, int, int)): Ditto.
+	* dDiagMatrix.cc (DiagMatrix::fill (double, int, int)): Ditto.
+
+	* Array.h (ArrayRep<T>::ArrayRep (void)): Set count to 1 here.
+	(ArrayRep<T>::ArrayRep (T *, int)): Likewise.
+	* Array.cc (ArrayRep<T>::ArrayRep (const ArrayRep<T>&)):
+	Don't copy count.  Set it to 1.
+	(ArrayRep<T>::ArrayRep (int)): Set count to 1 here.
+
+	* Array.h (Array<T>::Array (T *, int)): After constructing rep,
+	don't set rep->count to 1 here (now handled by ArrayRep
+	constructors).
+	(Array<T>::Array (void)): Ditto.
+	(Array<T>::Array (int)): Ditto.
+	(Array<T>::T& elem (int)): Ditto.
+	* Array-idx.h (Array<T>::maybe_delete_elements (idx_vector&)): Ditto.
+	(Array2<T>::maybe_delete_elements (idx_vector&, idx_vector&)): Ditto.
+	* Array.cc: (Array<T>::Array (int, const T&)): Ditto.
+	(Array<T>::resize (int)): Ditto.
+	(Array<T>::resize (int, const T&)) :Ditto.
+	(Array<T>::fortran_vec (void)): Ditto.
+	(Array2<T>::resize (int, int)): Ditto.
+	(Array2<T>::resize (int, int, const T&)): Ditto.
+	(DiagArray<T>::resize (int, int)): Ditto.
+	(DiagArray<T>::resize (int, int, const T&)): Ditto.
+
+Sun Dec 31 21:23:26 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-ch.cc: Rename from Array-c.cc.
+	* MArray-ch.cc: Rename from MArray-c.cc.
+	* chMatrix.cc: Rename from cMatrix.cc.
+	* chMatrix.h: Rename from cMatrix.h.
+	* Makefile.in (TI_SRC): Use new names here.
+	* mx-base.h: Likewise.
+
+Fri Dec 29 21:45:00 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in: Handle shared libraries.
+
+Thu Dec 28 14:18:34 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CRowVector.cc (operator * (ComplexRowVector, ComplexMatrix)):
+	Correctly compute length of return value.  Correct rows and
+	columns in zgemv call.
+	* dRowVector.cc (operator * (RowVector, Matrix)): Likewise.
+
+Tue Dec 26 00:37:57 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (stamp-picdir): New target.
+	(all): Depend on it.
+
+Sun Dec 24 03:10:41 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in (INCLUDES): Remove QLD.h.
+	(SOURCES): Remove QLD.cc.
+
+Wed Dec 20 00:43:46 1995  John W. Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc (Matrix::inverse): New arg, force.
+ 	If force is nonzero, invert even if matrix is singular.
+	(ComplexMatrix::inverse): Likewise.
+
+	* dRowVector.cc, mx-inlines.cc, dMatrix.cc, dDiagMatrix.cc,
+	dColVector.cc,MArray-C.cc, CmplxDET.cc, CRowVector.cc, CMatrix.cc,
+	CDiagMatrix.cc, CColVector.cc, Array-C.cc, CmplxDET.h, CMatrix.h:
+	Include "oct-cmplx.h" instead of <Complex.h>.
+
+	* mx-defs.h: Include oct-cmplx.h in place of forward declaration
+	for class Complex.
+
+	* oct-cmplx.h: New file.
+	* Makefile.in (INCLUDES): Add it to the list.
+
+	* idx-vector.cc (IDX_VEC_REP::idx_vector_rep): Don't redeclare len.
+	(IDX_VEC_REP::maybe_convert_one_zero_to_idx): Don't redeclare count.
+	(IDX_VEC_REP::freeze): Don't redeclare max_val and min_val.
+	(intcmp, sort_data, make_uniq, copy_data, IDX_VEC_REP::print):
+	Avoid g++ bugs.
+
+Tue Nov 14 14:24:16 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-idx.h (maybe_delete_elements): Give useful error message.
+
+	* dbleSCHUR.cc, dbleSVD.cc: Include iostream.h.
+
+Mon Nov 13 08:35:07 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CDiagMatrix.cc (inverse): Return retval, not *this.
+	* dDiagMatrix.cc (inverse): Use same method as for Complex case.
+
+Sat Nov  4 05:06:12 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.h, Array.cc, Array-idx.h [HEAVYWEIGHT_INDEXING]: Keep
+	index vector object with Array, not ArrayRep.
+
+Fri Nov  3 06:52:38 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-idx.h (assign (Array2<T>&, const Array2<T>&): Don't fail
+	if index is a colon and resizing is maybe needed.
+
+Tue Oct 31 17:40:01 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.cc (IDX_VEC_REP::is_colon_equiv): Don't return true
+	if we have a vector of 1's.
+
+	* Array-idx.h (assign (Array2<LT>&, Array2<RT>&): If lhs has no
+	current orientation, require index and rhs to conform unless
+	do_fortran_indexing flag is set.
+
+Sun Oct 15 23:32:08 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array-d.cc, Array-C.cc, mx-base.h, mx-inlines.cc, dDiagMatrix.h,
+	CDiagMatrix.h, CMatrix.cc, CMatrix.h, dMatrix.h, mx-defs.h,
+	cMatrix.h, MArray.cc, MArray.h, MArray-i.cc, MArray-c.cc,
+	MArray-s.cc, Array.h, Array.cc, Array-c.cc, Array-i.cc,
+	Array-s.cc, cMatrix.cc, Array-idx.h, dMatrix.cc:
+	Massive changes to support additional data types.  Only charMatrix
+	is currently used in Octave.
+
+Thu Oct 12 02:22:36 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Array.cc (Array2<T>::insert (Array2<T>&, int, int): New function.
+	* CMatrix.cc (ComplexMatrix::insert (ComplexMatrix&, int, int):
+	Simply call Array2<Complex> version.
+	* dMatrix.cc (Matrix::insert (Matrix&, int, int): Similarly, just
+	call Array2<double> version.
+
+	* Array-C.cc, Array-d.cc: Instantiate new assign functions too.
+
+	* Array.h, Array.cc: Massive overhaul to support new way of
+	handling indexing.
+	* idx-vector.h, idx-vector.cc: Likewise.
+	* Array-ext.cc, Array-idx.h: New files.
+	* Makefile.in: Add them to the appropriate lists.
+
+Wed Oct 11 00:49:58 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Range.cc (nelem_internal): Use tfloor here, not round.
+
+Sun Oct  8 18:21:02 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* idx-vector.h, idx-vector.cc: New files, moved from ../src.
+	* Makefile.in (SOURCES, INCLUDES): Include them in the lists.
+
+Sat Oct  7 19:07:02 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* CMatrix.cc (pseudo_inverse): Avoid bogus g++ warning.
+
+	* Array.h: Move simple member functions here.
+	* Array.cc: From here.
+
+Fri Oct  6 00:36:04 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Range.cc (tfloor, tceil, round): New static functions.
+	(Range::nelem_internal): Rewrite to use better method.
+
+	* dbleSVD.h (SVD::type): New item, sigma_only.
+	(type_computed): New var.
+	* dbleSVD.cc (left_singular_matrix, right_singular_matrix):
+	Handle possible error condition.
+	(init): Allow for SVD::sigma_only, save type computed.
+	* CmplxSVD.cc (left_singular_matrix, right_singular_matrix):
+	Handle possible error condition.
+	(init): Allow for SVD::sigma_only, save type computed.
+
+Wed Oct  4 15:33:35 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Nearly all non-matrix .h and .cc files:
+	Move short function bodies into class declarations for inlining.
+	Generally clean up.
+
+	* base-min.h: New file.
+	* LP.h (class LP): Derive from base_minimizer.
+	* QLP.h (class QLP): Derive from base_minimizer.
+	* NLP.h (class NLP): Derive from base_minimizer.
+	* Makefile.in (INCLUDES): Add base-min.h to the list.
+
+	* Makefile.in (SOURCES): Delete DAEFunc.cc, LP.cc, NLConst.cc,
+	NLFunc.cc, Objective.cc and QP.cc from list.
+
+Tue Sep 26 04:14:23 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dbleSCHUR.cc (select_ana): Remove name of unused parameter.
+	(SCHUR::SCHUR): Delete unused parameter ord.
+	* CmplxSCHUR.h (ComplexSCHUR::CmplxSCHUR): Likewise.
+
+	* CRowVector.cc
+ 	(ComplexRowVector::operator+ (const Complex&, const RowVector&),
+	(ComplexRowVector::operator- (const Complex&, const RowVector&),
+	(ComplexRowVector::operator* (const Complex&, const RowVector&),
+	(ComplexRowVector::operator/ (const Complex&, const RowVector&)):
+	Actually do something.
+	
+	* dMatrix.cc (Matrix::lssolve (ComplexMatrix&)): Use dummy vars.
+	(Matrix::lssolve (ComplexMatrix&, int&)): Likewise.
+	(Matrix::lssolve (ComplexMatrix&, int&, int&)): Likewise.
+
+	* Quad.cc (Quad_options::Quad_options (double, double)): New function.
+	* (Quad::Quad (integrand_fcn, double, double): Properly initialize
+	tolerances.
+	
+	* DAE.cc (ddassl_f, ddassl_j): Remove names of unused parameters.
+	* LPsolve.cc (LPsolve::minimize): Likewise.
+	* NPSOL.cc (NPSOL::option, npsol_confun, npsol_objfun): Likewise.
+	* ODE.cc (lsode_f, lsode_j): Likewise.
+	* QPSOL.cc (qphess): Likewise.
+
+Fri Sep 22 04:14:51 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* dMatrix.cc: Include <cstring>.
+
+	* Array.cc: Try harder to avoid warnings from gcc in functions
+	that return bogus values after calling the error handler.
+
+Thu Sep 14 00:56:00 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in: Use `ifndef omit_deps', not `ifndef $(omit_deps)'.
+
+	* Makefile.in (TEMPLATE_SRC): Add Array-i.cc to the list.
+
+Tue Aug 22 00:41:06 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* DAE.cc (dassl_f): Add UNUSED attribute for unused parameters.
+	(dassl_j): Likewise.
+	
+	* DAE.cc, NLEqn.cc, NPSOL.cc, ODE.cc, CColVector.cc, CMatrix.cc,
+	dColVector.cc, dMatrix.cc, CmplxLU.cc, dbleLU.cc, QPSOL.cc,
+	Array.cc, CollocWt.cc, FEGrid.h, LinConst.h:
+	Update for change in for loop variable scope for gcc 2.7.0.
+
+Mon Aug 21 19:34:53 1995  John Eaton  <jwe@bevo.che.wisc.edu>
+
+	* Makefile.in: Only include dependency files if $(omit_deps) is
+	not set.
+
+Mon May  1 13:26:00 1995  John Eaton  (jwe@bullwinkle.che.utexas.edu)
+
+	* dbleSCHUR.h dbleSVD.h dbleQRP.h dbleQR.h dbleHESS.h dbleLU.h
+	dbleCHOL.h dbleGEPBAL.h dbleAEPBAL.h dbleDET.h dDiagMatrix.h
+	dColVector.h dMatrix.h dRowVector.h Quad.h Range.h QPSOL.h QLD.h
+	ODEFunc.h QP.h Objective.h NPSOL.h ODE.h NLEqn.h NLFunc.h
+	NLConst.h LinConst.h LPsolve.h LP.h FSQP.h FEGrid.h EIG.h
+	DAEFunc.h CollocWt.h DAE.h CmplxSVD.h CmplxQRP.h CmplxSCHUR.h
+	CmplxHESS.h CmplxDET.h CmplxLU.h CmplxQR.h CmplxCHOL.h
+	CmplxAEPBAL.h CRowVector.h CDiagMatrix.h Bounds.h CColVector.h
+	CMatrix.h dbleSCHUR.cc dbleSVD.cc dbleQRP.cc dbleQR.cc
+	dbleGEPBAL.cc dbleLU.cc dbleHESS.cc dbleDET.cc dbleCHOL.cc
+	dbleAEPBAL.cc dColVector.cc dRowVector.cc dMatrix.cc
+	dDiagMatrix.cc QPSOL.cc Range.cc Quad.cc QP.cc ODEFunc.cc QLD.cc
+	Objective.cc NLEqn.cc ODE.cc NPSOL.cc NLFunc.cc LPsolve.cc
+	NLConst.cc LinConst.cc FSQP.cc FEGrid.cc LP.cc DAE.cc EIG.cc
+	CollocWt.cc DAEFunc.cc CmplxSVD.cc CmplxSCHUR.cc CmplxQRP.cc
+	CmplxLU.cc CmplxQR.cc CmplxHESS.cc CmplxDET.cc CmplxCHOL.cc
+	CmplxAEPBAL.cc CRowVector.cc CColVector.cc CMatrix.cc
+	CDiagMatrix.cc Bounds.cc MArray.h MArray.cc Array.cc Array.h
+	NLP.h: Use pragma interface/implementation. Don't surround
+	contents in extern "C++".
+	* lo-error.h sun-utils.h: Don't surround contents in extern "C++".
+
+Tue Apr 11 10:59:24 1995  John Eaton  <jwe@schoch.che.utexas.edu>
+
+	* f77-uscore.h (F77_FCN): Allow for possibility of uppercase
+	identifiers.
+	* utils.cc dbleSVD.cc dbleSCHUR.cc dbleQRP.cc dbleQR.cc dbleLU.cc
+	dbleHESS.cc dbleGEPBAL.cc dbleAEPBAL.cc dRowVector.cc
+	dColVector.cc QLD.cc CmplxSVD.cc CmplxCHOL.cc CmplxHESS.cc
+	CmplxQR.cc CmplxQRP.cc QPSOL.cc CmplxAEPBAL.cc CmplxLU.cc
+	CmplxSCHUR.cc dMatrix.cc CColVector.cc CRowVector.cc dbleCHOL.cc
+	CollocWt.cc NLEqn.cc EIG.cc DAE.cc ODE.cc CMatrix.cc NPSOL.cc
+	Quad.cc: Change usage of F77_FCN to match new definition
+
+	* utils.cc dbleSVD.cc dbleSCHUR.cc dbleQRP.cc dbleQR.cc dbleLU.cc
+	dbleHESS.cc dbleGEPBAL.cc dbleAEPBAL.cc dRowVector.cc
+	dColVector.cc QLD.cc CmplxSVD.cc CmplxCHOL.cc CmplxHESS.cc
+	CmplxQR.cc CmplxQRP.cc QPSOL.cc CmplxAEPBAL.cc CmplxLU.cc
+	CmplxSCHUR.cc dMatrix.cc CColVector.cc CRowVector.cc dbleCHOL.cc
+	CollocWt.cc NLEqn.cc EIG.cc DAE.cc ODE.cc CMatrix.cc NPSOL.cc
+	Quad.cc: Where appropriate, declare Fortran subroutines to take
+	args by reference instead of pointer.  Change all callers.
+
+Sun Apr  9 20:11:56 1995  John Eaton  <jwe@schoch.che.utexas.edu>
+
+	* MArray.h (MArray2::~MArray2, MDiagArray::~MDiagArray): New
+	functions.  Make += and -= operators friend functions.
+
+	* Array.h (Array2::~Array2, Array3::~Array3,
+	DiagArray::~DiagArray): New functions.
+
+Wed Apr  5 21:21:13 1995  John Eaton  <jwe@schoch.che.utexas.edu>
+
+	* Makefile.in (EXTRAS): Don't distribute mx-kludge.cc.
+	(MATRIX_INC): Don't distribute mx-kludge.h.
+
+	* CColVector.h CColVector.cc CDiagMatrix.h CDiagMatrix.cc
+	CMatrix.h CMatrix.cc CRowVector.h CRowVector.cc dColVector.h
+	dColVector.cc dDiagMatrix.h dDiagMatrix.cc dMatrix.h dMatrix.cc
+	dRowVector.h dRowVector.cc:
+	Derive classes from MArray, MArray2, and MDiagArray, not Array,
+	Array2, and DiagArray2.
+	Don't use functions defined in mx-kludge.cc for arithmetic
+	like-type operations on arrays.
+
+	* MArray.cc: Use the classes defined here like-type mathematical
+	operations on Array objects.  Abuse CPP more.
+	* Makefile.in (TEMPLATE_SRC): Add it to the list.
+	(EXTRAS): Delete it from this list.
+
+	* MArray-C.cc, MArray-d.cc: New files.
+	* Makefile.in (TI_SRC): Add them to the list.
+
+Tue Apr  4 14:13:46 1995  John Eaton  <jwe@schoch.che.utexas.edu>
+
+	* mx-kludge.cc: Abuse CPP even more.
+
+Mon Apr  3 21:05:30 1995  John Eaton  <jwe@schoch.che.utexas.edu>
+
+	* Objective.h (objective_function): Add missing const.
+	(gradient_function): Likewise.
+
+	* CColVector.h CColVector.cc CDiagMatrix.h CDiagMatrix.cc
+	CMatrix.h CMatrix.cc CRowVector.h CRowVector.cc dColVector.h
+	dColVector.cc dDiagMatrix.h dDiagMatrix.cc dMatrix.h dMatrix.cc
+	dRowVector.h dRowVector.cc:
+	Reorganize to declare and define friends where they should be,
+	based on the use of private constructors.
+
+Fri Mar 31 10:09:40 1995  John Eaton  <jwe@schoch.che.utexas.edu>
+
+	* CRowVector.h (linspace): Add declaration.
+	* dRowVector.h (linspace): Likewise.
+
+	* dMatrix.cc (Matrix::inverse, Matrix::determinant, Matrix::solve):
+	Force result of rcond + 1.0 to be stored.
+	* CMatrix.cc (ComplexMatrix::inverse, ComplexMatrix::determinant,
+	ComplexMatrix::solve): Likewise.
+
+See ChangeLog.1 in the top level directory for earlier changes.
--- a/liboctave/PermMatrix.cc
+++ b/liboctave/PermMatrix.cc
@@ -118,6 +118,53 @@
 }
 
 PermMatrix 
+PermMatrix::power (octave_idx_type m) const
+{
+  octave_idx_type n = rows ();
+  bool res_colp = _colp;
+  if (m < 0)
+    {
+      res_colp = ! res_colp;
+      m = -m;
+    }
+  else if (m == 0)
+    return PermMatrix (n);
+
+  const octave_idx_type *p = data ();
+  Array<octave_idx_type> res_pvec (n, -1);
+  octave_idx_type *q = res_pvec.fortran_vec ();
+
+  for (octave_idx_type ics = 0; ics < n; ics++)
+    {
+      if (q[ics] > 0)
+        continue;
+
+      // go forward m steps or until a cycle is found.
+      octave_idx_type ic, j;
+      for (j = 1, ic = p[ics]; j != m && ic != ics; j++, ic = p[ic]) ;
+      if (ic == ics)
+        {
+          // reduce power.
+          octave_idx_type mm = m % j;
+          // go forward mm steps.
+          for (j = 0, ic = ics; j != mm; j++, ic = p[ic]) ;
+        }
+
+      // now ic = p^m[ics]. Loop through the whole cycle.
+      octave_idx_type jcs = ics;
+      do
+        {
+          q[jcs] = ic;
+          jcs = p[jcs]; ic = p[ic];
+        }
+      while (jcs != ics);
+
+    }
+
+  return PermMatrix (res_pvec, res_colp, false);
+}
+
+PermMatrix 
 operator *(const PermMatrix& a, const PermMatrix& b)
 {
   const Array<octave_idx_type> ia = a.pvec (), ib = b.pvec ();
--- a/liboctave/PermMatrix.h
+++ b/liboctave/PermMatrix.h
@@ -97,6 +97,9 @@
   // Determinant, i.e. the sign of permutation.
   octave_idx_type determinant (void) const;
 
+  // Efficient integer power of a permutation.
+  PermMatrix power (octave_idx_type n) const;
+
   bool is_col_perm (void) const { return _colp; }
   bool is_row_perm (void) const { return !_colp; }
 
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,11 @@
+2009-03-11  Jaroslav Hajek  <highegg@gmail.com>
+	
+	* xpow.cc (xpow (const PermMatrix&, double), xpow (const PermMatrix&,
+	float)): New functions.
+	* xpow.h: Declare them.
+	* DLD-FUNCTIONS/op-pm-pm.cc: Support permutation matrix ^ scalar.
+	* DLD-FUNCTIONS/op-fpm-fpm.cc: Ditto.
+
 2009-03-11  Jaroslav Hajek  <highegg@gmail.com>
 
 	* ov-ch-mat.cc (octave_char_matrix::double_value, 
--- a/src/OPERATORS/op-fpm-fpm.cc
+++ b/src/OPERATORS/op-fpm-fpm.cc
@@ -30,8 +30,10 @@
 #include "ov-perm.h"
 #include "ov-flt-perm.h"
 #include "ov-flt-re-mat.h"
+#include "ov-float.h"
 #include "ov-typeinfo.h"
 #include "ops.h"
+#include "xpow.h"
 
 DEFUNOP (transpose, float_perm_matrix)
 {
@@ -60,6 +62,13 @@
   return octave_value (v1.perm_matrix_value ().inverse () * v2.perm_matrix_value (), false);
 }
 
+DEFBINOP (pow, float_perm_matrix, float_scalar)
+{
+  CAST_BINOP_ARGS (const octave_float_perm_matrix&, const octave_float_scalar&);
+
+  return xpow (v1.perm_matrix_value (), v2.float_scalar_value ());
+}
+
 CONVDECL (float_perm_matrix_to_float_matrix)
 {
   CAST_CONV_ARG (const octave_float_perm_matrix&);
@@ -83,6 +92,7 @@
   INSTALL_BINOP (op_mul, octave_float_perm_matrix, octave_float_perm_matrix, mul);
   INSTALL_BINOP (op_div, octave_float_perm_matrix, octave_float_perm_matrix, div);
   INSTALL_BINOP (op_ldiv, octave_float_perm_matrix, octave_float_perm_matrix, ldiv);
+  INSTALL_BINOP (op_pow, octave_float_perm_matrix, octave_float_scalar, pow);
 
   INSTALL_CONVOP (octave_float_perm_matrix, octave_float_matrix, float_perm_matrix_to_float_matrix);
   INSTALL_CONVOP (octave_float_perm_matrix, octave_perm_matrix, float_perm_matrix_to_perm_matrix);
--- a/src/OPERATORS/op-pm-pm.cc
+++ b/src/OPERATORS/op-pm-pm.cc
@@ -30,8 +30,10 @@
 #include "ov-perm.h"
 #include "ov-flt-perm.h"
 #include "ov-re-mat.h"
+#include "ov-scalar.h"
 #include "ov-typeinfo.h"
 #include "ops.h"
+#include "xpow.h"
 
 DEFUNOP (transpose, perm_matrix)
 {
@@ -55,6 +57,13 @@
   return (v1.perm_matrix_value ().inverse () * v2.perm_matrix_value ());
 }
 
+DEFBINOP (pow, perm_matrix, scalar)
+{
+  CAST_BINOP_ARGS (const octave_perm_matrix&, const octave_scalar&);
+
+  return xpow (v1.perm_matrix_value (), v2.scalar_value ());
+}
+
 CONVDECL (perm_matrix_to_matrix)
 {
   CAST_CONV_ARG (const octave_perm_matrix&);
@@ -78,6 +87,7 @@
   INSTALL_BINOP (op_mul, octave_perm_matrix, octave_perm_matrix, mul);
   INSTALL_BINOP (op_div, octave_perm_matrix, octave_perm_matrix, div);
   INSTALL_BINOP (op_ldiv, octave_perm_matrix, octave_perm_matrix, ldiv);
+  INSTALL_BINOP (op_pow, octave_perm_matrix, octave_scalar, pow);
 
   INSTALL_CONVOP (octave_perm_matrix, octave_matrix, perm_matrix_to_matrix);
   INSTALL_CONVOP (octave_perm_matrix, octave_float_perm_matrix, perm_matrix_to_float_perm_matrix);
--- a/src/xpow.cc
+++ b/src/xpow.cc
@@ -38,6 +38,7 @@
 #include "dDiagMatrix.h"
 #include "fDiagMatrix.h"
 #include "dMatrix.h"
+#include "PermMatrix.h"
 #include "mx-cm-cdm.h"
 #include "oct-cmplx.h"
 #include "quit.h"
@@ -296,6 +297,18 @@
   return retval;
 }
 
+// -*- 5p -*-
+octave_value
+xpow (const PermMatrix& a, double b)
+{
+  octave_value retval;
+  int btmp = static_cast<int> (b);
+  if (btmp == b)
+    return a.power (btmp);
+  else
+    return xpow (Matrix (a), b);
+}
+
 // -*- 6 -*-
 octave_value
 xpow (const Matrix& a, const Complex& b)
@@ -1576,6 +1589,18 @@
   return retval;
 }
 
+// -*- 5p -*-
+octave_value
+xpow (const PermMatrix& a, float b)
+{
+  octave_value retval;
+  int btmp = static_cast<int> (b);
+  if (btmp == b)
+    return octave_value (a.power (btmp), true);
+  else
+    return xpow (FloatMatrix (a), b);
+}
+
 // -*- 6 -*-
 octave_value
 xpow (const FloatMatrix& a, const FloatComplex& b)
--- a/src/xpow.h
+++ b/src/xpow.h
@@ -34,6 +34,7 @@
 class ComplexDiagMatrix;
 class FloatDiagMatrix;
 class FloatComplexDiagMatrix;
+class PermMatrix;
 class NDArray;
 class FloatNDArray;
 class ComplexNDArray;
@@ -51,6 +52,8 @@
 extern octave_value xpow (const DiagMatrix& a, double b);
 extern octave_value xpow (const DiagMatrix& a, const Complex& b);
 
+extern octave_value xpow (const PermMatrix& a, double b);
+
 extern octave_value xpow (const Complex& a, double b);
 extern octave_value xpow (const Complex& a, const Matrix& b);
 extern octave_value xpow (const Complex& a, const Complex& b);
@@ -106,6 +109,8 @@
 extern octave_value xpow (const FloatDiagMatrix& a, float b);
 extern octave_value xpow (const FloatDiagMatrix& a, const FloatComplex& b);
 
+extern octave_value xpow (const PermMatrix& a, float b);
+
 extern octave_value xpow (const FloatComplex& a, float b);
 extern octave_value xpow (const FloatComplex& a, const FloatMatrix& b);
 extern octave_value xpow (const FloatComplex& a, const FloatComplex& b);