	2009-09-18  Jaroslav Hajek  <highegg@gmail.com>

	Version 3.2.3 released.

2009-08-31  John W. Eaton  <jwe@octave.org>

	* liboctave/lo-ieee.cc (octave_ieee_init): Abort if floating point
	format is not recognized as IEEE.

2009-08-19  Jaroslav Hajek  <highegg@gmail.com>

	* Array-util.cc (zero_dims_inquire): Add matching ndims case.

2009-08-16  Jaroslav Hajek  <highegg@gmail.com>

	* dMatrix.cc, fMatrix.cc, CMatrix.cc, fCMatrix.cc: Add more tests.
	* CMatrix.cc (xgemm): Fix vector * matrix case.
	* fCMatrix.cc (xgemm): Ditto.

2009-08-16  Jaroslav Hajek  <highegg@gmail.com>

	* fMatrix.cc, fCMatrix.cc: Make tests use single precision.

2009-08-16  Jaroslav Hajek  <highegg@gmail.com>

	* CMatrix.cc (xgemm): Fix typo. Add test.
	* fCMatrix.cc (xgemm): Ditto.

2009-07-20  John W. Eaton  <jwe@octave.org>

	* lo-ieee.cc (octave_ieee_init) [__NetBSD__]: Call nan to
	initialize Octave_NaN and nanf, to initialize Octave_Float_NaN.

2009-07-08  John W. Eaton  <jwe@octave.org>

	* dim-vector.h (dim_vector::dim_vector_rep::dim_vector_rep
	(octave_idx_type, const dim_vector_rep *, int)):
	Enforce 2-d objects here.
	(dim_vector::dim_vector_rep::dim_vector_rep): Simply copy object.
	(dim_vector::resize): Allow N < 2.

	2009-07-21  Jaroslav Hajek  <highegg@gmail.com>

	Version 3.2.2 released.

2009-07-03  Jaroslav Hajek  <highegg@gmail.com>

	* Sparse-op-defs.h (SPARSE_ALL_OP): Fix typo.
	* dSparse.cc (SparseMatrix::prod): Ditto.
	* CSparse.cc (ComplexSparseMatrix::prod): Ditto.

2009-07-02  Jaroslav Hajek  <highegg@gmail.com>

	* Sparse-diag-op-defs.h (inner_do_add_sm_dm): Rewrite to ensure
	ordering of row indices.

2009-06-26  Michael Goffioul  <michael.goffioul@gmail.com>

	* pathsearch.h (class dir_path::static_members): Decorate with
	OCTAVE_API.

2009-06-24  Alexander Barth  <barth.alexander@gmail.com>

	* eigs-base.cc (EigsRealSymmetricMatrix,
	EigsRealSymmetricMatrixShift, EigsRealSymmetricFunc,
	EigsRealNonSymmetricMatrix, EigsRealNonSymmetricMatrixShift,
	EigsRealNonSymmetricFunc, EigsComplexNonSymmetricMatrix,
	EigsComplexNonSymmetricMatrixShift, EigsComplexNonSymmetricFunc):
	Use octave_idx_type for parameters of type LOGICAL in ARPACK.

2009-06-22  Jaroslav Hajek  <highegg@gmail.com>

	* chMatrix.cc (charMatrix::charMatrix (const string_vector&)):
	Optimize w.r.t. COW of std::string.

2009-06-18  Jaroslav Hajek  <highegg@gmail.com>

	* dMatrix.cc (xgemm): Replace resize() with uninitialized allocations
	where appropriate.
	* fMatrix.cc (xgemm): Ditto.
	* CMatrix.cc (xgemm): Ditto.
	* fCMatrix.cc (xgemm): Ditto.

2009-06-09  Jaroslav Hajek  <highegg@gmail.com>

	* cmd-edit.cc (command_editor::force_default_editor): New static
	method.
	* cmd-edit.h: Declare it.

2009-06-09  Jaroslav Hajek  <highegg@gmail.com>

	* lo-mappers.cc (xlog2 (const Complex&, int&), xlog2 (const
	FloatComplex&, int&)): Use more robust expression.

2009-06-07  Jaroslav Hajek  <highegg@gmail.com>

	* Array.cc (Array<T>::find): Avoid allocating excessive memory. Fix
	order for backward searches.

	2009-05-25  Jaroslav Hajek  <highegg@gmail.com>

	Version 3.2.0 released.

2009-06-02  Jaroslav Hajek  <highegg@gmail.com>

	* Array-C.cc (class DiagArray2<Complex>::Proxy): Only explicitly
	instantiate DiagArray2<T>::Proxy on MSVC.
	* Array-d.cc (class DiagArray2<double>::Proxy): Ditto.
	* Array-f.cc (class DiagArray2<float>::Proxy): Ditto.
	* Array-fC.cc (class DiagArray2<FloatComplex>::Proxy): Ditto.

2009-05-26  John W. Eaton  <jwe@octave.org>

	* pathsearch.h (dir_path::path_sep_char (char),
	dir_path::static_members::path_sep_char (char)): New functions.

2009-05-21  Michael Goffioul  <michael.goffioul@gmail.com>

	* Array-C.cc (class DiagArray2<Complex>::Proxy): Tag with OCTAVE_API.
	* Array-d.cc (class DiagArray2<double>::Proxy): Ditto.
	* Array-f.cc (class DiagArray2<float>::Proxy): Ditto.
	* Array-fC.cc (class DiagArray2<FloatComplex>::Proxy): Ditto.
	* Array.cc (class octave_sort<T>): Ditto.
	* CColVector.h (conj, operator*, operator>>, operator<<): Ditto.
	* CDiagMatrix.h (class ComplexDiagMatrix, conj, operator*): Ditto.
	* CMatrix.h (conj): Ditto.
	* CNDArray.h (conj): Ditto.
	* PermMatrix.h (class PermMatrix, operator*): Ditto.
	* dDiagMatrix.h (class DiagMatrix): Ditto.
	* fCColVector.h (conj, operator*, operator>>, operator<<): Ditto.
	* fCDiagMatrix.h (class FloatComplexDiagMatrix, conj, operator*):
	Ditto.
	* fCMatrix.h (conj): Ditto.
	* fCNDArray.h (conj): Ditto.
	* fDiagMatrix.h (operator*): Ditto.
	* oct-locbuf.h (octave_chunk_buffer::octave_chunk_buffer,
	octave_chunk_buffer::~octave_chunk_buffer): Ditto.
	* oct-inttypes.cc (octave_int_cmp_op::emulate_op): Ditto.
	* DET.h (class base_det<T>): Remove OCTAVE_API (cannot be applied on
	templates).
	* oct-inttypes.cc (octave_int_cmp_op::emulate_op<class xop>): Ditto.

	* CmplxQR.cc (ComplexQR::insert_col, ComplexQR::delete_col): Copy
	volatile variable to avoid MSVC compilation error (cannot pass
	volatile variable as const& argument).
	* dbleQR.cc (QR::insert_col, QR::delete_col): Ditto.
	* fCmplxQR.cc (FloatComplexQR::insert_col,
	FloatComplexQR::delete_col): Ditto.
	* floatQR.cc (FloatQR::insert_col, FloatQR::delete_col): Ditto.

	* oct-mutex.cc: Exclude pthread.h inclusion under Win32.

	* base-aepbal.h (base_aepbal::operator=): Add missing return
	statement.

2009-05-20  Jaroslav Hajek  <highegg@gmail.com>

	* eigs-base.cc (
	EigsRealSymmetricMatrix,
	EigsRealSymmetricMatrixShift,
	EigsRealSymmetricFunc,
	EigsRealNonSymmetricMatrix,
	EigsRealNonSymmetricMatrixShift,
	EigsRealNonSymmetricFunc,
	EigsComplexNonSymmetricMatrix,
	EigsComplexNonSymmetricMatrixShift,
	EigsComplexNonSymmetricFunc): Update tests.

2009-05-21  Jaroslav Hajek  <highegg@gmail.com>


	* CMatrix.cc 
	(ComplexMatrix::all, ComplexMatrix::any, ComplexMatrix::cumprod,
	ComplexMatrix::cumsum, ComplexMatrix::prod, ComplexMatrix::sum,
	ComplexMatrix::sumsq): Use explicit template qualifications
	to workaround bugs in Intel C++ and MSVC++ compilers.
	* CNDArray.cc
	(ComplexNDArray::all, ComplexNDArray::any, ComplexNDArray::cumprod,
	ComplexNDArray::cumsum, ComplexNDArray::prod, ComplexNDArray::sum,
	ComplexNDArray::sumsq): Ditto.
	* boolMatrix.cc
	(boolMatrix::all, boolMatrix::any): Ditto.
	* boolNDArray.cc
	(boolNDArray::all, boolNDArray::any): Ditto.
	* chMatrix.cc
	(charMatrix::all, charMatrix::any): Ditto.
	* chNDArray.cc
	(charNDArray::all, charNDArray::any): Ditto.
	* dMatrix.cc
	(Matrix::all, Matrix::any, Matrix::cumprod,
	Matrix::cumsum, Matrix::prod, Matrix::sum,
	Matrix::sumsq): Ditto.
	* dNDArray.cc
	(NDArray::all, NDArray::any, NDArray::cumprod,
	NDArray::cumsum, NDArray::prod, NDArray::sum,
	NDArray::sumsq): Ditto.
	* fCMatrix.cc
	(FloatComplexMatrix::all, FloatComplexMatrix::any, FloatComplexMatrix::cumprod,
	FloatComplexMatrix::cumsum, FloatComplexMatrix::prod, FloatComplexMatrix::sum,
	FloatComplexMatrix::sumsq): Ditto.
	* fCNDArray.cc
	(FloatComplexNDArray::all, FloatComplexNDArray::any, FloatComplexNDArray::cumprod,
	FloatComplexNDArray::cumsum, FloatComplexNDArray::prod, FloatComplexNDArray::sum,
	FloatComplexNDArray::sumsq): Ditto.
	* fMatrix.cc
	(FloatMatrix::all, FloatMatrix::any, FloatMatrix::cumprod,
	FloatMatrix::cumsum, FloatMatrix::prod, FloatMatrix::sum,
	FloatMatrix::sumsq): Ditto.
	* fNDArray.cc
	(FloatNDArray::all, FloatNDArray::any, FloatNDArray::cumprod,
	FloatNDArray::cumsum, FloatNDArray::prod, FloatNDArray::sum,
	FloatNDArray::sumsq): Ditto.
	* intNDArray.cc
	(intNDArray<T>::all, intNDArray<T>::any,
	intNDArray<T>::cumsum, intNDArray<T>::sum): Ditto.

2009-05-20  Jaroslav Hajek  <highegg@gmail.com>

	* Makefile.in: Remove reference to ArrayN-idx.h.

2009-05-20  Jaroslav Hajek  <highegg@gmail.com>

	* Array-voidp.cc: New source.
	* Array.cc (NO_INSTANTIATE_ARRAY_SORT): const T& -> T const &
	* Makefile.in: Include it.

2009-05-15  Jaroslav Hajek  <highegg@gmail.com>
	
	* Array.cc (Array<T>::instantiation_guard): New function
	(INSTANTIATE_ARRAY): Always override it here.
	* Array.h: Declare it.

2009-05-15  Jaroslav Hajek  <highegg@gmail.com>

	* ArrayN-idx.h: Remove file.
	* ArrayN.cc: Don't include it.
	* MArrayN.cc: Dtto.

2009-05-09  Jaroslav Hajek  <highegg@gmail.com>

	* Array-util.cc (zero_dims_inquire): Move j++ out of branch.

2009-05-07  Marco Atzeri  <marco_atzeri@yahoo.it>

        * Makefile.in: (SHLPRE): Rename from SHLLIBPRE.

2009-05-05  Robert T. Short  <octave@phaselockedsystems.com>

	* file-ops.h (file_ops::tail) New function.

2009-05-05  Carsten Clark  <tantumquantum+gnuoctave@gmail.com>

	* Quad.cc (user_function): Use access_double and assign_double on
	SPARC only, not on all Sun systems.
	* sun-utils.h: Likewise, define these functions on SPARC only.

2009-05-05  Jaroslav Hajek  <highegg@gmail.com>

	* Sparse.cc (assign1): Fix an old indexing bug.

2009-05-04  Carsten Clark  <tantumquantum+gnuoctave@gmail.com>

	* Quad.cc (float_user_function): Remove Sun/GCC special case.

2009-04-16  Jaroslav Hajek  <highegg@gmail.com>

	* idx-vector.cc (idx_vector::idx_range_rep::idx_range_rep (const
	Range&)): Check for positive integer indices. Unify gripes.

2009-04-15  Jaroslav Hajek  <highegg@gmail.com>

	* Array.cc (rec_permute_helper::blk_trans): Declare as static.
	(Array<T>::transpose): Reuse it.

2009-04-04  Jaroslav Hajek  <highegg@gmail.com>

	* Array.cc (Array<T>::make_unique): Don't economize when unique.
	(Array<T>::resize_fill (octave_idx_type, const T&)): Optimize push &
	pop operations.
	(Array<T>::delete_elements (const idx_vector&)): Do pop operation
	using resize.

2009-03-29  Jaroslav Hajek  <highegg@gmail.com>

	* Array.cc (Array<T>::assign): Remove redundant checks after invalid
	resize.

2009-03-26  Jaroslav Hajek  <highegg@gmail.com>

	* Array.cc (Array<T>::find): Reshape result for Matlab compatibility.
	* Array.h (Array<T>): Add friend template declaration.

2009-03-27  Jaroslav Hajek  <highegg@gmail.com>

	* idx-vector.cc (idx_vector::idx_vector_rep::idx_vector_rep (const
	Array<bool>&): Use more M*b-compatible behaviour.

2009-03-26  Jaroslav Hajek  <highegg@gmail.com>

	* dim-vector.h (dim_vector::numel): Add optional argument, simplify.

2009-03-26  Jaroslav Hajek  <highegg@gmail.com>

	* Array.h (Array<T>::dims): Return a const reference.
	(Array<T>::is_vector): New method.

2009-03-26  Jaroslav Hajek  <highegg@gmail.com>

	* Array.cc (Array<T>::find): New method.
	* Array.h: Declare it.

2009-03-25  John W. Eaton  <jwe@octave.org>

	* EIG.cc (EIG::init (const Matrix&, bool),
	EIG::init (const Matrix&, const Matrix&, bool)):
	Avoid volatile declaration for tmp variable.

	* Makefile.in (MATRIX_INC): Add Sparse-diag-op-defs.h and
	Sparse-perm-op-defs.h to the list.

2009-03-25  Jaroslav Hajek  <highegg@gmail.com>
	
	* oct-inttypes.cc (INT_DOUBLE_BINOP_DECL (*, uint64),
	INT_DOUBLE_BINOP_DECL (*, int64)): x -> y where appropriate.

2009-03-25  Jaroslav Hajek  <highegg@gmail.com>

	* Array.cc (rec_permute_helper::use_blk): New field.
	(rec_permute_helper::blk_trans): New method.
	(rec_permute_helper::rec_permute_helper): Use smart reductions,
	detect possibility of using blocked transpose.
	(rec_permute_helper::do_permute): Use blocked transpose if possible.

2009-03-23  Jaroslav Hajek  <highegg@gmail.com>

	* idx-vector.cc (convert_index(double,...)): Simplify.

2009-03-21  Jaroslav Hajek  <highegg@gmail.com>

	* Array-d.cc: lo_ieee_isnan -> xisnan.
	* Array-f.cc: Ditto.
	* oct-inttypes.cc: Ditto.
	* oct-inttypes.h: Ditto.
	* CDiagMatrix.cc: Add missing include.
	* fCDiagMatrix.cc: Ditto.

2009-03-20  Jaroslav Hajek  <highegg@gmail.com>
	
	* CColVector.cc, CMatrix.cc, CNDArray.cc, CRowVector.cc, CSparse.cc,
	boolSparse.cc, dColVector.cc, dMatrix.cc, dNDArray.cc, dRowVector.cc,
	dSparse.cc, fCColVector.cc, fCMatrix.cc, fCNDArray.cc, fCRowVector.cc,
	fColVector.cc, fMatrix.cc, fNDArray.cc, fRowVector.cc, intNDArray.cc:
	Allow empty arrays in stream input operators.

2009-03-20  Jaroslav Hajek  <highegg@gmail.com>

	* Array.h (Array<T>::fastmap): New method.
	* dNDArray.cc (NDArray::isnan, NDArray::isinf, NDArray::isfinite):
	New methods.
	* dNDArray.h: Declare them.
	* fNDArray.cc (FloatNDArray::isnan, FloatNDArray::isinf,
	FloatNDArray::isfinite): New methods.
	* fNDArray.h: Declare them.
	* CNDArray.cc (ComplexNDArray::isnan, ComplexNDArray::isinf,
	ComplexNDArray::isfinite): New methods.
	* CNDArray.h: Declare them.
	* fCNDArray.cc (FloatComplexNDArray::isnan, FloatComplexNDArray::isinf,
	FloatComplexNDArray::isfinite): New methods.
	* fCNDArray.h: Declare them.
	* lo-mappers.h (xisnan, xisinf, xfinite): If possible, use definitions
	from <cmath>.

2009-03-18  Jaroslav Hajek <highegg@gmail.com>

	* oct-norm.cc (get_eps): Remove that hack.
	(higham): Use std::numeric_limits instead.
	Include OCTAVE_QUIT.

2009-03-16  Jason Riedy  <jason@acm.org>

	* Sparse.cc (transpose): Eliminate the workspace by computing in
	retval.xcidx.
	* CSparse.cc (hermitian): Eliminate the workspace by computing in
	retval.xcidx.

2009-03-14  Jaroslav Hajek  <highegg@gmail.com>

	* mx-op-decl.h (NDS_BOOL_OP_DECLS, SND_BOOL_OP_DECLS, NDND_BOOL_OP_DECLS): Support compound binary ops.
	* mx-op-defs.h (NDS_BOOL_OPS, SND_BOOL_OPS, NDND_BOOL_OPS): Ditto. Optimize.
	* mx-op-defs.h (NDS_CMP_OP, SND_CMP_OP, NDND_CMP_OP): Optimize.

2009-03-14  Jaroslav Hajek  <highegg@gmail.com>

	* fNDArray.h (FloatMatrix::matrix_value): Fix return type.
	* dNDArray.cc (Matrix::matrix_value): Simplify.
	* fNDArray.cc (FloatMatrix::matrix_value): Simplify.
	* CNDArray.cc (ComplexMatrix::matrix_value): Simplify.
	* fCNDArray.cc (FloatComplexMatrix::matrix_value): Simplify.

2009-03-13  Jaroslav Hajek  <highegg@gmail.com>

	* Range.h (Range::Range (double, double, octave_idx_type)): Remove
	constructor body.
	* Range.cc: Move it here. Check for invalid range op results.
	(all operators): Validate cache for invalid range op results.
	* idx-vector.h (idx_vector::index): Optimize zero-step range case.
	* idx-vector.cc (idx_vector::maybe_reduce): Always reduce colon in
	singleton dimension.

2009-03-10  Jason Riedy  <jason@acm.org>

	* sparse-base-lu.cc (Pr_mat): New member function.  Return the row
	permutation as a PermMatrix.
	(Pc_mat): New member function.  Return the col permutation as a
	PermMatrix.

	* sparse-base-lu.h (sparse_base_lu): Declare Pc_mat and Pr_mat
	member functions.

2009-03-09  Jason Riedy  <jason@acm.org>

	* Sparse-diag-op-defs.h (octave_impl::inner_do_add_sm_dm): New
	template function.  Implementation for adding sparse and diagonal
	matrices.  Takes two functional arguments, opa and opd, to
	generate both subtraction variants.
	(octave_impl::do_commutative_add_dm_sm): New template function.
	Ensure A+D and D+A use the same generated code.
	(octave_impl::do_add_dm_sm): New template function.  Check
	arguments for diag + sparse and call inner routine.
	(octave_impl::do_sub_dm_sm): New template function.  Check
	arguments for diag - sparse and call inner routine.
	(octave_impl::do_add_sm_dm): New template function.  Check
	arguments for sparse + diag and call inner routine.
	(octave_impl::do_sub_sm_dm): New template function.  Check
	arguments for sparse - diag and call inner routine.

	* dSparse.h (operator +): Declare overrides for real diag +
	sparse.
	(operator -): Declare overrides for real diag - sparse, sparse -
	diag.

	* dSparse.cc (operator +): Define overrides for real diag +
	sparse.
	(operator -): Define overrides for real diag - sparse, sparse -
	diag.

	* CSparse.h (operator +): Declare overrides for complex and real
	combinations of diag + sparse.
	(operator -): Declare overrides for complex and real combinations
	of diag - sparse, sparse - diag.

	* CSparse.cc (operator +): Define overrides for complex and real
	combinations of diag + sparse.
	(operator -): Define overrides for complex and real combinations
	of diag - sparse, sparse - diag.

2009-03-08  Jason Riedy  <jason@acm.org>

	* Sparse-diag-op-defs.h (octave_impl::do_mul_dm_sm)
	(octave_impl::do_mul_sm_dm): New template
	functions. Implementations for sparse * diag and diag * sparse.

	* CSparse.h (operator *, trans_mul, herm_mul): Add overloads for
	DiagMatrix and ComplexDiagMatrix.
	* CSparse.cc (operator *, trans_mul, herm_mul): Implement
	operations by calling approprate functions in
	Sparse-diag-op-defs.h.
	* dSparse.h (operator *, trans_mul): Add overloads for DiagMatrix.
	* dSparse.cc (operator *, trans_mul): Implement operations by
	calling approprate functions in Sparse-diag-op-defs.h.

2009-03-12  John W. Eaton  <jwe@octave.org>

	* oct-inttypes.h (bitshift): Apply mask even if not shifting.
	From Seb Astien <se6astien2@googlemail.com>.

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
	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-perm-op-defs.h (octinternal_do_mul_colpm_sm): New
	template function.  Logic for the column permutation * sparse
	matrix operator.
	(octinternal_do_mul_pm_sm): New template function.  Logic for the
	permutation matrix * sparse matrix operator.  Note that there is
	no special row perm * sparse routine; the permutation is inverted
	and the col perm routine is called.
	(octinternal_do_mul_sm_rowpm): New template function.  Logic for
	the sparse matrix * row permutation operator.
	(octinternal_do_mul_sm_colpm): New template function.  Logic for
	the sparse matrix * column permutation operator.
	(octinternal_do_mul_sm_pm): New template function.  Logic for the
	sparse matrix * permutation matrix operator.

	* dSparse.h (operator *): Declare sparse * permutation and
	permutation * sparse.
	* dSparse.cc (operator *): Define sparse * permutation and
	permutation * sparse.

	* CSparse.h (operator *): Declare sparse * permutation and
	permutation * sparse.
	* CSparse.cc (operator *): Define sparse * permutation and
	permutation * sparse.

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.
