Mercurial > hg > octave-nkf
changeset 8958:6ccc12cc65ef
implement raising a permutation matrix to integer power
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 11 Mar 2009 14:07:24 +0100 |
parents | 360aa52b5942 |
children | 089abf117499 |
files | liboctave/ChangeLog liboctave/PermMatrix.cc liboctave/PermMatrix.h src/ChangeLog src/OPERATORS/op-fpm-fpm.cc src/OPERATORS/op-pm-pm.cc src/xpow.cc src/xpow.h |
diffstat | 8 files changed, 10739 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,8 @@ +2009-03-11 Jaroslav Hajek <highegg@gmail.com> + + * PermMatrix.cc (PermMatrix::power): New method. + * PermMatrix.h: Declare it. + 2009-03-11 Jaroslav Hajek <highegg@gmail.com> * dNDArray.cc (NDArray::NDArray (const charNDArray&)): New @@ -10624,3 +10629,10629 @@ ComplexMatrix::solve): Likewise. See ChangeLog.1 in the top level directory for earlier changes. +2009-03-11 Jaroslav Hajek <highegg@gmail.com> + + * dNDArray.cc (NDArray::NDArray (const charNDArray&)): New + constructor. + * fNDArray.cc (FloatNDArray::FloatNDArray (const charNDArray&)): + Ditto. + * CNDArray.cc (ComplexNDArray::ComplexNDArray (const charNDArray&)): + Ditto. + * fCNDArray.cc (FloatComplexNDArray::FloatComplexNDArray + (const charNDArray&)): Ditto. + + * dNDArray.h (NDArray::NDArray (const charNDArray&)): Declare. + * fNDArray.h (FloatNDArray::FloatNDArray (const charNDArray&)): + Ditto. + * CNDArray.h (ComplexNDArray::ComplexNDArray (const charNDArray&)): + Ditto. + * fCNDArray.h (FloatComplexNDArray::FloatComplexNDArray + (const charNDArray&)): Ditto. + + * dMatrix.cc (Matrix::Matrix (const charMatrix&)): Cast to unsigned + chars. + * fMatrix.cc (FloatMatrix::FloatMatrix (const charMatrix&)): Likewise. + * CMatrix.cc (ComplexMatrix::ComplexMatrix (const charMatrix&)): + Likewise. + * fCMatrix.cc (FloatComplexMatrix::FloatComplexMatrix + (const charMatrix&)): Likewise. + +2009-03-10 Jason Riedy <jason@acm.org> + + * sparse-base-lu.cc (Pc_vec): The column permutation should be + Ufact.cols ()-long, not Lfact.rows ()-long. + +2009-03-10 Jason Riedy <jason@acm.org> + + * dSparse.cc (SparseMatrix::SparseMatrix (const PermMatrix&)): + Fix conversion to add values to the matrix as well as getting + structure correct. + +2009-03-10 John W. Eaton <jwe@octave.org> + + * Array.h, ArrayN.h, Bounds.h, CmplxAEPBAL.h, CmplxCHOL.h, + CmplxGEPBAL.h, CmplxHESS.h, CmplxQR.h, CmplxQRP.h, CmplxSCHUR.h, + CmplxSVD.h, CollocWt.h, EIG.h, FEGrid.h, LinConst.h, Range.h, + Sparse.h, SparseCmplxQR.h, SparseQR.h, dbleAEPBAL.h, dbleCHOL.h, + dbleGEPBAL.h, dbleHESS.h, dbleQR.h, dbleQRP.h, dbleSCHUR.h, + dbleSVD.h, dim-vector.h, fCmplxAEPBAL.h, fCmplxCHOL.h, + fCmplxGEPBAL.h, fCmplxHESS.h, fCmplxQR.h, fCmplxQRP.h, + fCmplxSCHUR.h, fCmplxSVD.h, fEIG.h, floatAEPBAL.h, floatCHOL.h, + floatGEPBAL.h, floatHESS.h, floatQR.h, floatQRP.h, floatSCHUR.h, + floatSVD.h, idx-vector.h, lo-utils.h, oct-inttypes.h, + oct-spparms.h, str-vec.h: Include <iosfwd> instead of <iosstream>. + +2009-03-10 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc (OP_CUMMINMAX_FCN2): r -> r0 where appropriate. + +2009-03-08 Jaroslav Hajek <highegg@gmail.com> + + * idx-vector.h (idx_vector::bloop): loop --> bloop. + (idx_vector::loop): New method. + * MArray.cc (MArray<T>::idx_add (cons idx_vector&, T)) + (MArray<T>::idx_add (cons idx_vector&, const MArray<T>&)): New methods. + * MArray.h: Declare them. + +2009-03-05 Jason Riedy <jason@acm.org> + + * Sparse.h (Sparse<T>::elt_type): Remove typedef, replace with: + * Sparse.h (Sparse<T>::element_type): Add typedef to be consistent + with Array.h + * DiagArray2.h (DiagArray2<T>::elt_type): Likewise, removed. + * DiagArray2.h (DiagArray2<T>::element_type): Define by using + Array<T>::element_type. + * intNDArray.h (intNDArray<T>::element_type): Remove, inherited + from MArrayN<T>. + +2009-03-05 Jaroslav Hajek <highegg@gmail.com> + + * dSparse.h (SparseMatrix::SparseMatrix(const PermMatrix&)): New + constructor. + (SparseMatrix::SparseMatrix(const DiagMatrix&)): Fix implementation. + * CSparse.h (SparseComplexMatrix::SparseComplexMatrix(const ComplexDiagMatrix&)): + Fix implementation. + +2009-03-04 Jaroslav Hajek <highegg@gmail.com> + + * PermMatrix.h (PermMatrix::elem): Fix comparisons. + +2009-03-03 Jaroslav Hajek <highegg@gmail.com> + + * lo-mappers.cc (xmin (float, float), xmax (float, float)): Simplify. + +2009-03-02 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc: Add missing #include. + +2009-02-25 John W. Eaton <jwe@octave.org> + + * Makefile.in: Make maintainer-clean and distclean the same. + +2009-02-25 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.cc (pow (const octave_int<T>&, const octave_int<T>&)): + Simplify. + +2009-02-23 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.h (octave_int_cmp_op::mop): Implement as simple + forwarders when OCTAVE_INT_USE_LONG_DOUBLE is not defined. + (octave_int_cmp_op::emulate_mop): New static overloaded template + member function. + * oct-inttypes.cc: Turn the octave_int_cmp_op::mop definitions into + defs for octave_int_cmp_op::emulate_mop. + (INSTANTIATE_INT64_DOUBLE_CMP_OP0): Instantiate + octave_int_cmp_op::emulate_op instead. + +2009-02-23 Jaroslav Hajek <highegg@gmail.com> + + * dDiagMatrix.cc (DiagMatrix::pseudo_inverse): New method. + * dDiagMatrix.h: Declare it. + * fDiagMatrix.cc (FloatDiagMatrix::pseudo_inverse): New method. + * fDiagMatrix.h: Declare it. + * CDiagMatrix.cc (ComplexDiagMatrix::pseudo_inverse): New method. + * CDiagMatrix.h: Declare it. + * fCDiagMatrix.cc (FloatComplexDiagMatrix::pseudo_inverse): New method. + * fCDiagMatrix.h: Declare it. + +2009-02-20 Jaroslav Hajek <highegg@gmail.com> + + * oct-sort.h (octave_sort<T>::MergeState::MergeState): New + constructor. + (octave_sort<T>::MergeState::~MergeState): New destructor. + (octave_sort<T>::MergeState::reset, + octave_sort<T>::MergeState::getmem, + octave_sort<T>::MergeState::getmemi): New methods. + (octave_sort<T>::sort, + octave_sort<T>::merge_lo, octave_sort<T>::merge_hi + octave_sort<T>::merge_at): Reflect change. + +2009-02-19 Jaroslav Hajek <highegg@gmail.com> + + * oct-types.h (sortmode): Move enum here. + * oct-sort.h (octave_sort<T>::ms): Declare as pointer. + (octave_sort<T>::lookup): New overloaded method. + * oct-sort.cc: Reflect change to ms. + (octave_sort<T>::lookup): New overloaded method. + (out_of_range_pred): New helper class. + (out_of_range): New helper function. + * oct-lookup.h: Remove file. + * Array.cc (Array<T>::lookup): New overloaded method. + * Array.h: Declare it. + +2009-02-18 John W. Eaton <jwe@octave.org> + + * dbleQR.cc (QR::init, QR::form): Cast int to octave_idx_type in + call to std::max. + * floatQR.cc (FloatQR::init, FloatQR::form): Ditto. + * CmplxQR.cc (ComplexQR::init, ComplexQR::form): Ditto. + * fCmplxQR.cc (FloatComplexQR::init, FloatComplexQR::form): Ditto. + + * dbleQRP.cc (QRP::init): Cast int to octave_idx_type in call to + std::max and as operand to -= operator. + * CmplxQRP.cc (ComplexQRP::init): Ditto. + * floatQRP.cc (FloatQRP::init): Ditto. + * fCmplxQRP.cc (FloatComplexQRP::init): Ditto. + + * CDiagMatrix.cc, CDiagMatrix.h (ComplexDiagMatrix::inverse): + Declare info as octave_idx_type, not int. + * dDiagMatrix.cc, dDiagMatrix.h (DiagMatrix::inverse): Ditto. + * fDiagMatrix.cc, fCDiagMatrix.h (FloatDiagMatrix::inverse): Ditto. + * fCDiagMatrix.cc, fCDiagMatrix.h (FloatComplexDiagMatrix::inverse): + Ditto. + + * dMatrix.cc (Matrix::determinant): + Declare local variables volatile as needed to avoid "maybe + clobbered by vfork" warning from GCC. + * fMatrix.cc (FloatMatrix::determinant): Likewise. + * CMatrix.cc (ComplexMatrix::determinant): Likewise. + * fCMatrix.cc (FloatComplexMatrix::determinant): Likewise. + * dbleQR.cc (QR::update, QR::insert_col, QR::delete_col): Likewise. + * floatQR.cc (FloatQR::update, FloatQR::insert_col, + FloatQR::delete_col): Likewise. + * CmplxQR.cc (ComplexQR::update, ComplexQR::insert_col, + ComplexQR::delete_col): Likewise. + * fCmplxQR.cc (FloatComplexQR::update, FloatComplexQR::insert_col, + FloatComplexQR::delete_col): Likewise. + + * dMatrix.cc (padec, solve_singularity_warning): Delete unused + static variable and function. + * CMatrix.cc (padec, solve_singularity_warning): Ditto. + * fMatrix.cc (padec, solve_singularity_warning): Ditto. + * fCMatrix.cc (padec, solve_singularity_warning): Ditto. + +2009-02-18 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (Array<T>::resize (const dim_vector&)): Check for negative + dimensions. + +2009-02-18 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.cc (pow (const octave_int<T>&, const octave_int<T>&)): + Use octave_int comparisons to avoid warning for unsigned types. + +2009-02-17 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (Array<T>::resize (const dim_vector&)): Remove dead branch. + +2009-02-17 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc (OP_CUM_FCN, OP_CUM_FCN2, OP_CUM_FCNN): + Add TSRC/TRES parameters. + (mx_inline_cumcount): New function. + * intNDArray.cc (intNDArray::cumsum): New method. + * intNDArray.h: Declare it. + * boolNDArray.cc (boolNDArray::cumsum): New method. + * boolNDArray.h: Declare it. + +2009-02-17 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc (OP_CUMMINMAX_FCN, OP_CUMMINMAX_FCN2, + OP_CUMMINMAX_FCNN): New macros. + (mx_inline_cummax, mx_inline_cummin, do_mx_cumminmax_op): + New overloaded template functions. + + * dNDArray.cc (NDArray::cummin, NDArray::cummax): New methods. + * dNDArray.h: Declare them. + + * fNDArray.cc (FloatNDArray::cummin, FloatNDArray::cummax): New + methods. + * fNDArray.h: Declare them. + + * CNDArray.cc (ComplexNDArray::cummin, ComplexNDArray::cummax): New + methods. + * CNDArray.h: Declare them. + + * fCNDArray.cc (FloatComplexNDArray::cummin, + FloatComplexNDArray::cummax): New methods. + * fCNDArray.h: Declare them. + + * intNDArray.cc (intNDArray::cummin, intNDArray::cummax): New methods. + * intNDArray.h: Declare them. + +2009-02-17 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc (OP_MINMAX_FCN): Correct behaviour with NaNs. + +2009-02-17 Jaroslav Hajek <highegg@gmail.com> + + * MArray-defs.h: Move declarative part to MArray-decl.h + * MArray-decl.h: New source. + + * mx-op-defs.h: Move declarative part to mx-op-decl.h. + * mx-op-decl.h: New source. + + * Makefile.in: Include new sources in build. + * mk-ops.awk: Include mx-op-decl.h in headers, mx-op-defs in .cc + files. + + * CMatrix.cc, CMatrix.h, CNDArray.cc, CNDArray.h, MArray.h, MArray2.h, + MArrayN.h, MDiagArray2.h, boolMatrix.cc, boolMatrix.h, boolNDArray.cc, + boolNDArray.h, chMatrix.cc, chMatrix.h, chNDArray.cc, chNDArray.h, + dMatrix.cc, dMatrix.h, dNDArray.cc, dNDArray.h, fCMatrix.cc, + fCMatrix.h, fCNDArray.cc, fCNDArray.h, fMatrix.cc, fMatrix.h, + fNDArray.cc, fNDArray.h, int16NDArray.cc, int16NDArray.h, + int32NDArray.cc, int32NDArray.h, int64NDArray.cc, int64NDArray.h, + int8NDArray.cc, int8NDArray.h, uint16NDArray.cc, uint16NDArray.h, + uint32NDArray.cc, uint32NDArray.h, uint64NDArray.cc, uint64NDArray.h, + uint8NDArray.cc, uint8NDArray.h: Ditto. + +2009-02-16 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (Array<T>::assign (const idx_vector& i, + const idx_vector& j,...)): Fix invalid dimension inquiry. + +2009-02-16 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc (OP_ROW_SHORT_CIRCUIT): New macro. + (mx_inline_any, mx_inline_all): Override row-reduction case. + (MX_CUMULATIVE_OP, MX_BASE_REDUCTION_OP, MX_REDUCTION_OP, + MX_ANY_OP, MX_ALL_OP, MX_ND_ANY_ALL, MX_ND_REDUCTION, + MX_ND_COMPLEX_OP_REDUCTION, MX_ND_CUMULATIVE_OP, + MX_ND_ANY_EVAL, MX_ND_ALL_EVAL, MX_ND_REAL_OP_REDUCTION): + Remove unused macros. + +2009-02-16 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc (OP_RED_FCNN): Use explicit type qualification. + (mx_inline_count): New overloaded template function. + * boolNDArray.h (boolNDArray::sum): Return NDArray. + * boolNDArray.cc (boolNDArray::sum): Return NDArray, use do_mx-red_op. + +2009-02-16 Jaroslav Hajek <highegg@gmail.com> + + * Array-C.cc, Array-fC.cc: Don't redefine complex comparison. + * Sparse.cc (Sparse::sort): Don't use vec_index. + * Sparse-C.cc, Sparse-d.cc, Sparse-b.cc: Don't reinstantiate + octave_sort, reflect changes. + * sparse-sort.cc: Explicitly instantiate octave_sort for requested + pointer types. + +2009-02-16 Jaroslav Hajek <highegg@gmail.com> + + * oct-cmplx.h (operator <, operator >): New operators. + * mx-inlines.cc (OP_MINMAX_FCN, OP_MINMAX_FCN2, OP_MINMAX_FCNN): + New macros. + (mx_inline_min, mx_inline_max, do_mx_minmax_op): New overloaded + template functions. + * dNDArray (NDArray::min, NDArray::max): Use do_mx_minmax_op. + * fNDArray (FloatNDArray::min, FloatNDArray::max): Ditto. + * CNDArray (ComplexNDArray::min, ComplexNDArray::max): Ditto. + * fCNDArray (FloatComplexNDArray::min, FloatComplexNDArray::max): + Ditto. + +2009-02-16 Jaroslav Hajek <highegg@gmail.com> + + * chMatrix.cc (charMatrix::all, charMatrix::any): Use do_mx_red_op. + * chNDArray.cc (charNDArray::all, charNDArray::any): Ditto. + +2009-02-16 John W. Eaton <jwe@octave.org> + + * cmd-edit.cc (default_command_editor::do_readline): + Use fputs instead of fprintf. + +2009-02-14 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc (OP_RED_FCN, OP_RED_FCN2, OP_RED_FCNN, OP_CUM_FCN, + OP_CUM_FCN2, OP_CUM_FCNN): Include TRET parameter. + (OP_RED_ANYC, OP_RED_ANYR, OP_RED_ALLC, OP_RED_ALLR): New macros. + (is_true, is_false): New template functions. + (mx_inline_any, mx_inline_all): New template functions. + + * dMatrix.cc (Matrix::any, Matrix::all): Use do_mx_red_op and + do_mx_cum_op. + * fMatrix.cc (FloatMatrix::any, FloatMatrix::all): Use do_mx_red_op + and do_mx_cum_op. + * CMatrix.cc (ComplexMatrix::any, ComplexMatrix::all): Use + do_mx_red_op and do_mx_cum_op. + * fCMatrix.cc (FloatComplexMatrix::any, FloatComplexMatrix::all): Use + do_mx_red_op and do_mx_cum_op. + + * dNDArray.cc (NDArray::any, NDArray::all): Use do_mx_red_op and + do_mx_cum_op. + * fNDArray.cc (FloatNDArray::any, FloatNDArray::all): Use do_mx_red_op + and do_mx_cum_op. + * CNDArray.cc (ComplexNDArray::any, ComplexNDArray::all): Use + do_mx_red_op and do_mx_cum_op. + * fCNDArray.cc (FloatComplexNDArray::any, FloatComplexNDArray::all): + Use do_mx_red_op and do_mx_cum_op. + + * intNDArray.cc (intNDArray::any, intNDArray::all): Use do_mx_red_op and + do_mx_cum_op. + + * boolNDArray.cc (boolNDArray::any, boolNDArray::all): Use do_mx_red_op and + do_mx_cum_op. + + * boolMatrix.cc (boolMatrix::any, boolMatrix::all): Use do_mx_red_op and + do_mx_cum_op. + +2009-02-14 Jaroslav Hajek <highegg@gmail.com> + + * intNDArray.cc: include mx-inlines.cc. + (intNDArray::sum): Use mx_do_red_op (..., mx_inline_sum). + * Range.cc (Range::is_sorted): Add missing return statement. + +2009-02-13 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc (OP_RED_SUM, OP_RED_PROD, OP_RED_SUMSQ, OP_RED_SUMSQC, + OP_RED_FCN, OP_RED_FCN2, OP_RED_FCNN, OP_CUM_FCN, OP_CUM_FCN2, + OP_CUM_FCNN): New macros. + (mx_inline_sum, mx_inline_prod, mx_inline_sumsq, mx_inline_cumsum, + mx_inline_cumprod, get_extent_triplet, do_mx_red_op, do_mx_cum_op): + New template functions. + * dMatrix.cc (Matrix::cumprod, Matrix::cumsum, Matrix::prod, + Matrix::sum, Matrix::sumsq): Use do_mx_red_op and do_mx_cum_op. + * fMatrix.cc (FloatMatrix::cumprod, FloatMatrix::cumsum, + FloatMatrix::prod, FloatMatrix::sum, FloatMatrix::sumsq): Use + do_mx_red_op and do_mx_cum_op. + * CMatrix.cc (ComplexMatrix::cumprod, ComplexMatrix::cumsum, + ComplexMatrix::prod, ComplexMatrix::sum, ComplexMatrix::sumsq): Use + do_mx_red_op and do_mx_cum_op. + * fCMatrix.cc (FloatComplexMatrix::cumprod, + FloatComplexMatrix::cumsum, FloatComplexMatrix::prod, + FloatComplexMatrix::sum, FloatComplexMatrix::sumsq): Use do_mx_red_op + and do_mx_cum_op. + +2009-02-12 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.h (if_else_type): Remove + (octave_int_base::truncate_int): Use if_then_else. + +2009-02-12 John W. Eaton <jwe@octave.org> + + * lo-traits.h: New file. + * Makefile.in (INCLUDES): Add it to the list. + + * Array.h (compare_fcn_type): New typedef. + * oct-sort.h (compare_fcn_type): Ditto. + + * oct-sort.h, oct-sort.cc (octave_sort<T>::octave_sort, + octave_sort<T>::set_compare, octave_sort<T>::compare): + Use typedef to simplify decl. + (octave_sort<T>::ascending_compare, + octave_sort<T>::descending_compare): + Use ref_param<T>::type for parameter decl. + + * Array.cc (sort_isnan): Use ref_param<T>::type for parameter decl. + (Array<T>::sort): Use explicit template parameter for sort_isnan calls. + + * Array.cc, Array-C.cc, Array-fC.cc, Array-d.cc, Array-f.cc + (sortrows_comparator): Rename from _sortrows_comparator. Change + all uses. Use typedef for return value to simplify decl. + (sort_isnan): Rename from _sort_isnan. Change all uses. + (NO_INSTANTIATE_ARRAY_SORT): Use typedef to simplify instantiation + of sortrows_comparator. + + * Array-C.cc, Array-fC.cc (sort_isnan, ascending_compare, + descending_compare, nan_ascending_compare, + nan_descending_compare): + +2009-02-11 Jaroslav Hajek <highegg@gmail.com> + + * oct-sort.cc (octave_sort<T>::is_sorted, octave_sort<T>::sort_rows, + octave_sort<T>::is_sorted_rows): New methods. + * oct-sort.h: Declare them. + + * Array.cc (Array<T>::is_sorted): New method. + (INSTANTIATE_ARRAY_SORT, NO_INSTANTIATE_ARRAY_SORT, + INSTANTIATE_ARRAY_AND_ASSIGN, INSTANTIATE_ARRAY): Move macros here. + * Array.h: Reflect changes. + + * dim-vector.h (dim_vector::is_vector): New method. + * Array-C.cc, Array-fC.cc: Override _sort_isnan, don't check for + NaN in default comparators. Provide NaN-safe comparators, override + _sortrows_comparator. + * Array-d.cc, Array-f.cc: Provide NaN-safe comparators, override + _sortrows_comparator. + * Range.cc (Range::is_sorted): New method. + * Range.h: Declare it. + +2009-02-09 Jaroslav Hajek <highegg@gmail.com> + + * oct-sort.cc (octave_sort<T>): Rewrite for optimizations. Allow + inlined comparison functor and by-the-way indexed sorting. + * oct-sort.h (octave_sort<T>): Update interface. + * Array.cc (Array<T>::sort): Reflect changes. Use copy & partition + mechanism. + * Array-d.cc, Array-f.cc, Array-C.cc, Array-fC.cc, Array-s.cc, + Array-i.cc: Reflect changes. + +2009-02-05 John W. Eaton <jwe@octave.org> + + * file-stat.cc (base_file_stat::is_sock): + Use EXISTS instead of OK in previous change. + + * file-stat.cc (base_file_stat::is_blk, base_file_stat::is_chr, + base_file_stat::is_dir, base_file_stat::is_fifo, + base_file_stat::is_lnk, base_file_stat::is_reg, + base_file_stat::is_sock): Return false if object is not initialized. + From Rafael Laboissiere <rafael@debian.org>. + +2009-02-05 Jaroslav Hajek <highegg@gmail.com> + + * idx-vector.h (idx_vector::idx_colon_rep, + idx_vector::idx_scalar_rep, idx_vector::idx_range_rep, + idx_vector::idx_vector_rep): Declare allocators. + * idx-vector.cc: Define them. + +2009-02-05 Jaroslav Hajek <highegg@gmail.com> + + * str-vec.h (string_vector::sort): Remove implementation. + * str-vec.cc (string_vector::sort): Move here. Use in-place sorting. + * Array-str.cc: Fix order of header files. + * oct-sort.cc (octave_sort<T>::merge_hi): std::copy -> + std::copy_backward where appropriate. + +2009-02-05 John W. Eaton <jwe@octave.org> + + * Array-util.cc (zero_dims_inquire): Eliminate unused variable MATCH. + + * Sparse.cc (assign (Sparse<LT>& lhs, const Sparse<RT>& rhs)): + Eliminate unused variable N. + + * MArray-f.cc (MArray<float>::norm (float p) const, + MArray<FloatComplex>::norm (float p) const): Pass P to xnorm. + + * eigs-base.cc (EigsRealNonSymmetricFunc, EigsRealSymmetricFunc) + (EigsComplexNonSymmetricFunc): Avoid unused parameter warning. + * idx-vector.cc (idx_vector::freeze): Likewise. + +2009-02-04 Jaroslav Hajek <highegg@gmail.com> + + * oct-locbuf.h: Specialize OCTAVE_LOCAL_BUFFER to use chunked + allocation for pointers and const pointers. + +2009-02-03 Benjamin Lindner <lindnerben@gmx.net> + + * Makefile.in: Add missing library reference. + +2009-02-03 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (Array<T>::sort (octave_idx_type, sortmode)): + Copy array on-the-fly. + (Array<T>::sort (Array<octave_idx_type> &, octave_idx_type, sortmode)): + Copy array on-the-fly, use bare pointers rather than vec_index. + + * Array-d.cc (Array<double>::sort (octave_idx_type, sortmode)): + Copy array on-the-fly. + (Array<double>::sort (Array<octave_idx_type> &, octave_idx_type, sortmode)): + Copy array on-the-fly, use bare pointers rather than vec_index. + + * Array-f.cc (Array<float>::sort (octave_idx_type, sortmode)): + Copy array on-the-fly. + (Array<float>::sort (Array<octave_idx_type> &, octave_idx_type, sortmode)): + Copy array on-the-fly, use bare pointers rather than vec_index. + +2009-02-02 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc (mx_inline_fabs_dup, mx_inline_cabs_dup): New funcs. + + * dMatrix.cc (real, imag, Matrix::abs): Simplify. + * fMatrix.cc (real, imag, FloatMatrix::abs): Simplify. + * CMatrix.cc (ComplexMatrix::abs, ComplexMatrix::conj): Simplify. + * fCMatrix.cc (FloatComplexMatrix::abs, FloatComplexMatrix::conj): Simplify. + + * CMatrix.h, fCMatrix.h (conj): Add missing decl. + + * dNDArray.cc (real, imag, NDArray::abs): Simplify. + * fNDArray.cc (real, imag, FloatNDArray::abs): Simplify. + * CNDArray.cc (ComplexNDArray::abs, ComplexNDArray::conj): Simplify. + * fCNDArray.cc (FloatComplexNDArray::abs, FloatComplexNDArray::conj): Simplify. + + * CMatrix.h, fCMatrix.h (conj): New decl. + +2009-01-29 John W. Eaton <jwe@octave.org> + + * intNDArray.h (intNDArray<T>:any_element_is_nan): New function. + * boolNDArrah.h (boolNDArray::any_element_is_nan): New function. + * chNDArray.h (charNDArray::any_element_is_nan): New function. + +2009-01-28 John W. Eaton <jwe@octave.org> + + * Makefile.in (LIBRARIES, install, uninstall): Use SHLLIBPRE + and SHLBINPRE library prefixes. + From Marco Atzeri <marco_atzeri@yahoo.it>. + +2009-01-28 Jaroslav Hajek <highegg@gmail.com> + + * dMatrix.cc (Matrix::Matrix (const RowVector&)): Use shallow copy. + (Matrix::Matrix (const ColumnVector&)): Ditto. + (Matrix::row): Ditto. + (Matrix::column): Ditto. + + * fMatrix.cc (FloatMatrix::FloatMatrix (const FloatRowVector&)): Use + shallow copy. + (FloatMatrix::FloatMatrix (const FloatColumnVector&)): Ditto. + (FloatMatrix::row): Ditto. + (FloatMatrix::column): Ditto. + + * CMatrix.cc (ComplexMatrix::ComplexMatrix (const ComplexRowVector&)): + Use shallow copy. + (ComplexMatrix::ComplexMatrix (const ComplexColumnVector&)): Ditto. + (ComplexMatrix::row): Ditto. + (ComplexMatrix::column): Ditto. + + * fCMatrix.cc (FloatComplexMatrix::FloatComplexMatrix (const FloatComplexRowVector&)): + Use shallow copy. + (FloatComplexMatrix::FloatComplexMatrix (const FloatComplexColumnVector&)): Ditto. + (FloatComplexMatrix::row): Ditto. + (FloatComplexMatrix::column): Ditto. + +2009-01-27 Benjamin Lindner <lindnerb@users.sourceforge.net> + + * Makefile.in (LINK_DEPS): Include ARPACK_LIBS and REGEX_LIBS in + the list. + +2009-01-27 Jaroslav Hajek <highegg@gmail.com> + + * dbleQR.cc (QR::init): Use form. Use local buffers. + Query for optimal block size. + (QR::form): New function. + * dbleQR.h: Declare it. + * dbleQRP.cc (QRP::init):Use form. Use local buffers. + Query for optimal block size. + + * floatQR.cc (FloatQR::init): Use form. Use local buffers. + Query for optimal block size. + (FloatQR::form): New function. + * floatQR.h: Declare it. + * floatQRP.cc (FloatQRP::init):Use form. Use local buffers. + Query for optimal block size. + + * CmplxQR.cc (ComplexQR::init): Use form. Use local buffers. + Query for optimal block size. + (ComplexQR::form): New function. + * CmplxQR.h: Declare it. + * CmplxQRP.cc (ComplexQRP::init):Use form. Use local buffers. + Query for optimal block size. + + * fCmplxQR.cc (FloatComplexQR::init): Use form. Use local buffers. + Query for optimal block size. + (FloatComplexQR::form): New function. + * fCmplxQR.h: Declare it. + * fCmplxQRP.cc (FloatComplexQRP::init):Use form. Use local buffers. + Query for optimal block size. + +2009-01-23 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (Array<T>::assign (const idx_vector&, const Array<T>&)): + Optimize assignment to an empty array. + (Array<T>::assign (const idx_vector&, const idx_vector&, const Array<T>&)): + Optimize assignment to an empty array. + +2009-01-22 Jaroslav Hajek <highegg@gmail.com> + + * Array2.h (Array2<T>::index): Declare resize_ok as bool. + * ArrayN.h (ArrayN<T>::index): Ditto. Declare index vectors as const + refs. + +2009-01-22 Jaroslav Hajek <highegg@gmail.com> + + * Range.cc (sort_internal): Add missing test. + +2009-01-22 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (Array<T>::index (..., bool resize_ok)): + Optimize the all-scalar-indices cases. + +2009-01-22 Jaroslav Hajek <highegg@gmail.com> + + * dbleQR.h: Optionally declare warn_qrupdate_once. + * dbleQR.cc: Define it. + * (CmplxQR.h, dbleQR.h, fCmplxQR.h, floatQR.h): Declare replacement + methods unconditionally. + * (CmplxQR.cc, dbleQR.cc, fCmplxQR.cc, floatQR.cc): Define + updating replacement methods. + * (CmplxCHOL.h, dbleCHOL.h, fCmplxCHOL.h, floatCHOL.h): Declare + replacement methods unconditionally. + * (CmplxCHOL.cc, dbleCHOL.cc, fCmplxCHOL.cc, floatCHOL.cc): Define + updating replacement methods. + +2009-01-21 Jaroslav Hajek <highegg@gmail.com> + + * Range.cc ( operator + (double x, const Range& r), + operator + (const Range& r, double x), + operator - (double x, const Range& r), + operator - (const Range& r, double x), + operator * (double x, const Range& r), + operator * (const Range& r, double x)): New operators. + * Range.h: Declare them. + + +2009-01-20 John W. Eaton <jwe@octave.org> + + * file-stat.h, file-stat.cc (class base_file_stat): New base class. + (class file_stat): Derive from base_file_stat. + (class file_fstat): New class, derived from base_file_stat. + +2009-01-17 Jaroslav Hajek <highegg@gmail.com> + + * floatQR.h (FloatQR::update, FloatQR::insert_col, + FloatQR::insert_row, FloatQR::delete_col, FloatQR::delete_row, + FloatQR::shift_col): Update interfaces. + + * floatQR.cc: Update external decls for qrupdate routines. + (FloatQR::update, FloatQR::insert_col, FloatQR::insert_row, + FloatQR::delete_col, FloatQR::delete_row, FloatQR::shift_col): Reflect + changes in qrupdate interfaces, implement batch updates. + + * dbleQR.h (QR::update, QR::insert_col, QR::insert_row, + QR::delete_col, QR::delete_row, QR::shift_col): Update interfaces. + + * dbleQR.cc: Update external decls for qrupdate routines. + (QR::update, QR::insert_col, QR::insert_row, QR::delete_col, + QR::delete_row, QR::shift_col): Reflect changes in qrupdate + interfaces, implement batch updates. + + * fCmplxQR.h (FloatComplexQR::update, FloatComplexQR::insert_col, + FloatComplexQR::insert_row, FloatComplexQR::delete_col, + FloatComplexQR::delete_row, FloatComplexQR::shift_col): Update + interfaces. + + * fCmplxQR.cc: Update external decls for qrupdate routines. + (FloatComplexQR::update, FloatComplexQR::insert_col, + FloatComplexQR::insert_row, FloatComplexQR::delete_col, + FloatComplexQR::delete_row, FloatComplexQR::shift_col): Reflect + changes in qrupdate interfaces, + implement batch updates. + + * CmplxQR.h (ComplexQR::update, ComplexQR::insert_col, + ComplexQR::insert_row, ComplexQR::delete_col, ComplexQR::delete_row, + ComplexQR::shift_col): Update interfaces. + + * CmplxQR.cc: Update external decls for qrupdate routines. + (ComplexQR::update, ComplexQR::insert_col, + ComplexQR::insert_row, ComplexQR::delete_col, ComplexQR::delete_row, + ComplexQR::shift_col): Reflect changes in qrupdate interfaces, + implement batch updates. + + * floatCHOL.h (FloatCHOL::update, FloatCHOL::downdate, + FloatCHOL::insert_sym): Update interfaces. + * floatCHOL.cc: Update external decls for qrupdate routines. + (FloatCHOL::update, FloatCHOL::downdate, FloatCHOL::insert_sym, + FloatCHOL::delete_sym, FloatCHOL::shift_sym): Reflect changes in + qrupdate interfaces, + + * CHOL.h (CHOL::update, CHOL::downdate, CHOL::insert_sym): Update + interfaces. + * CHOL.cc: Update external decls for qrupdate routines. + (CHOL::update, CHOL::downdate, CHOL::insert_sym, CHOL::delete_sym, + CHOL::shift_sym): Reflect changes in qrupdate interfaces, + + * fCmplxCHOL.h (FloatComplexCHOL::update, FloatComplexCHOL::downdate, + FloatComplexCHOL::insert_sym): Update interfaces. + * fCmplxCHOL.cc: Update external decls for qrupdate routines. + (FloatComplexCHOL::update, FloatComplexCHOL::downdate, + FloatComplexCHOL::insert_sym, FloatComplexCHOL::delete_sym, + FloatComplexCHOL::shift_sym): Reflect changes in qrupdate interfaces, + + * CmplxCHOL.h (ComplexCHOL::update, ComplexCHOL::downdate, + ComplexCHOL::insert_sym): Update interfaces. + * CmplxCHOL.cc: Update external decls for qrupdate routines. + (ComplexCHOL::update, ComplexCHOL::downdate, ComplexCHOL::insert_sym, + ComplexCHOL::delete_sym, ComplexCHOL::shift_sym): Reflect changes in + qrupdate interfaces, + +2009-01-17 Jaroslav Hajek <highegg@gmail.com> + + * Array.h (Array<T>): Document internal use of slice_data and + slice_len. + +2009-01-15 John W. Eaton <jwe@octave.org> + + * Sparse.cc (Sparse<T>::reshape): Include mismatched dimensions in + error message. + * Array.cc (Array<T>::reshape): Likewise. + From Robert Millan <rmh@aybabtu.com>. + +2009-01-14 Jaroslav Hajek <highegg@gmail.com> + + * Array.h (Array<T>::rep, Array<T>::dimensions): Make protected. + * Array.cc (Array<T>::make_unique): Move implementation here. + (Array<T>::fill): Ditto. + * DiagArray2.h (DiagArray2<T>): Reimplement without abusing + Array<T> internals. + (DiagArray2<T>::operator Array2<T>): New method. + * DiagArray2.cc (DiagArray2<T>): Update methods. + * MDiagArray2.h (MDiagArray2<T>::operator Array2<T>): Simplify. + * PermMatrix.h (PermMatrix): Reimplement without abusing + Array<T> internals. + * PermMatrix.cc (PermMatrix): Update methods. + +2009-01-14 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc, Array.h (all Array<T> constructors): Handle slice_data and + slice_len. + (Array<T>::Array<T> (const Array<T>&, const dim_vector&, + octave_idx_type, octave_idx_type)): New constructor. + (Array<T>::index): Use shallow copy when index reduces to a contiguous + range. + (Array<T>::make_unique): Rewrite. + (Array<T>::ArrayRep): Delete redundant methods. + (rec_index_helper::is_cont_range): New method. + (Array<T>::maybe_economize): New method. + * DiagArray2.cc (DiagArray2<T>::resize): Fix the mess. + +2008-01-15 Rafael Laboissiere <rafael@debian.org> + + * oct-md5.cc: Include <cstdio>. + +2009-01-13 Jaroslav Hajek <highegg@gmail.com> + + * Array.h (Array::ArrayRep::qsort): Remove. + (Array::qsort): Remove. + * glob-match.cc (glob_match::glob): qsort -> sort. + * str-vec.cc (string_vector::compare): Remove. + * str-vec.h (string_vector::compare): Remove decl. + (string_vector::qsort): Rename to sort, call Array::sort. + +2008-12-23 David Bateman <dbateman@free.fr> + + * eigs-base.cc: New file with template wrapper for ARPACK. + * Makefile.in (TEMPLATE_SRC): Add it here. + +2008-12-16 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (rec_permute_helper): New class. + (Array<T>::permute): Rewrite using the recursive algorithm. + +2008-12-12 David Bateman <dbateman@free.fr> + + * sparse-base-chol.cc (inverse): Fix inversion based on cholesky + factorization. + +2008-12-12 Jaroslav Hajek <highegg@gmail.com> + + * oct-locbuf.cc: New source. + * oct-locbuf.h (octave_chunk_buffer): New class. + (octave_local_buffer): Subclass from octave_chunk_buffer for selected + POD types. + +2008-12-11 Jaroslav Hajek <highegg@gmail.com> + + * mx-op-defs.h (DMDM_BIN_OP): Fix invalid buffer length. + +2008-12-10 Jaroslav Hajek <highegg@gmail.com> + + * dMatrix.h, dMatrix.cc (Matrix::expm): Remove. + * fMatrix.h, fMatrix.cc (FloatMatrix::expm): Remove. + * CMatrix.h, CMatrix.cc (ComplexMatrix::expm): Remove. + * fCMatrix.h, fCMatrix.cc (FloatComplexMatrix::expm): Remove. + +2008-12-09 Jaroslav Hajek <highegg@gmail.com> + + * base-aepbal.h: New source. + * dbleAEPBAL.h, dbleAEPBAL.cc: Rebase AEPBAL on base_aepbal. + * floatAEPBAL.h, floatAEPBAL.cc: Rebase FloatAEPBAL on base_aepbal. + * CmplxAEPBAL.h, CmplxAEPBAL.cc: Rebase ComplexAEPBAL on base_aepbal. + * fCmplxAEPBAL.h, fCmplxAEPBAL.cc: Rebase FloatComplexAEPBAL on base_aepbal. + +2008-12-08 Jaroslav Hajek <highegg@gmail.com> + + * idx-vector.cc (idx_vector::idx_vector_rep::idx_vector_rep (const + Sparse<bool>&)): New constructor. + * idx_vector.h: Declare it. + (idx_vector::idx_vector (const Sparse<bool>&)): New constructor. + * idx-vector.cc (idx_vector::idx_vector_rep::idx_vector_rep (const + Array<bool>&)): Fix extent calculation. + +2008-12-09 David Bateman <dbateman@free.fr> + + * Makefile.in (INCLUDES): Add oct-locbuf.h + +2008-12-07 Jaroslav Hajek <highegg@gmail.com> + + * mx-inlines.cc (mx_inline_fill_vs): New template function. + * mx-op-defs.h (everywhere): Replace int by octave_idx_type. + (MDM_MULTIPLY_OP): Use mx_inline_mul_vs and mx_inline_fill_vs. + (DMM_MULTIPLY_OP): Ditto. + * fDiagMatrix.cc (operator *): Remove redundant ifs. + * fCDiagMatrix.cc (operator *): Remove redundant ifs. + +2008-12-06 Jaroslav Hajek <highegg@gmail.com> + + * oct-locbuf.h (OCTAVE_LOCAL_BUFFER_INIT): New macro. + +2008-10-29 Jaroslav Hajek <highegg@gmail.com> + + * oct-locbuf.h: New header file. + * Array-d.cc, Array-f.cc, Array.cc, CMatrix.cc, CNDArray.cc, + CSparse.cc, CmplxCHOL.cc, CmplxGEPBAL.cc, MatrixType.cc, + Sparse-op-defs.h, Sparse.cc, SparseCmplxLU.cc, SparseCmplxQR.cc, + SparseQR.cc, SparsedbleLU.cc, dMatrix.cc, dNDArray.cc, dSparse.cc, + data-conv.cc, dbleCHOL.cc, dbleGEPBAL.cc, fCMatrix.cc, fCNDArray.cc, + fCmplxCHOL.cc, fCmplxGEPBAL.cc, fMatrix.cc, fNDArray.cc, file-ops.cc, + floatCHOL.cc, floatGEPBAL.cc, lo-sysdep.cc, oct-fftw.cc, oct-md5.cc, + oct-rand.cc, regex-match.cc, sparse-dmsolve.cc: Include oct-locbuf.h. + +2008-12-04 Jaroslav Hajek <highegg@gmail.com> + + * DiagArray2.h (DiagArray2<T>): Inherit Array<T> privately. + (DiagArray2<T>::dim1, dim2, rows, columns, cols, length, + nelem, numel, byte_size, dims): New methods. + (DiagArray2<T>::diag): New method decl. + * DiagArray2.cc (DiagArray2<T>::diag): New method. + * MDiagArray2.h (MDiagArray2<T>::diag): New method. + * dDiagMatrix.cc (DiagMatrix::diag): Remove. + * fDiagMatrix.cc (FloatDiagMatrix::diag): Remove. + * CDiagMatrix.cc (ComplexDiagMatrix::diag): Remove. + * fCDiagMatrix.cc (FloatComplexDiagMatrix::diag): Remove. + + * PermMatrix.h (PermMatrix): Inherit Array<octave_idx_type> privately. + (PermMatrix::dim1, dim2, rows, columns, cols, length, + nelem, numel, byte_size, dims): New methods. + + +2008-12-04 Jaroslav Hajek <highegg@gmail.com> + + * dDiagMatrix.cc (DiagMatrix::determinant, DiagMatrix::rcond): New + method. + * dDiagMatrix.h: Declare them. + * fDiagMatrix.cc (FloatDiagMatrix::determinant, + FloatDiagMatrix::rcond): New methods. + * fDiagMatrix.h: Declare them. + * CDiagMatrix.cc (ComplexDiagMatrix::determinant, + ComplexDiagMatrix::rcond): New methods. + * CDiagMatrix.h: Declare them. + * fCDiagMatrix.cc (FloatComplexDiagMatrix::determinant, + FloatComplexDiagMatrix::rcond): New methods. + * fCDiagMatrix.h: Declare them. + +2008-12-04 Jaroslav Hajek <highegg@gmail.com> + + * idx-vector.cc (idx-vector::complement): Add missing delete. + +2008-12-04 Jaroslav Hajek <highegg@gmail.com> + + * dbleQRP.cc (QRP::QRP): Call DGEQP3 rather than DGEQPF. + * floatQRP.cc (FloatQRP::FloatQRP): Call SGEQP3 rather than SGEQPF. + * CmplxQRP.cc (ComplexQRP::ComplexQRP): Call ZGEQP3 rather than ZGEQPF. + * fCmplxQRP.cc (FloatComplexQRP::FloatComplexQRP): Call CGEQP3 rather than CGEQPF. + +2008-12-03 Jaroslav Hajek <highegg@gmail.com> + + * PermMatrix.h, PermMatrix.cc: New sources. + * MDiagArray2.cc (MDiagArray2<T>::is_multiple_of_identity): New method. + * MDiagArray2.h (MDiagArray2<T>::is_multiple_of_identity): Declare it. + * idx-vector.cc (idx_vector::is_permutation): New method. + * idx-vector.h (idx_vector::is_permutation): Declare it. + * base-lu.cc (base_lu::getp): New method. + (base_lu::P): Call getp. + (base_lu::Pvec): Call getp. + * base-lu.h (base_lu): Delcare P as PermMatrix. Remove unused template + params. + * dbleQRP.cc (dbleQRP::dbleQRP): Construct a permutation matrix. + (dbleQRP::Pvec): New method. + * dbleQRP.h: Declare new method. Declare P as PermMatrix. + * CmplxQRP.cc (ComplexQRP): Likewise. + * CmplxQRP.h (ComplexQRP): Likewise. + * floatQRP.cc (FloatQRP): Likewise. + * floatQRP.h (FloatQRP): Likewise. + * fCmplxQRP.cc (FloatComplexQRP): Likewise. + * fCmplxQRP.h (FloatComplexQRP): Likewise. + +2008-12-01 Jaroslav Hajek <highegg@gmail.com> + + * DiagArray2.h (DiagArray2<T>::DiagArray2<T> (const DiagArray2<U>&)): New template + constructor. + (DiagArray2<T>::elem, xelem, operator ()): Move to header file to + enable inlining. + * DiagArray2.cc (DiagArray2<T>::elem, xelem, operator ()): Remove + implementations. + * MDiagArray2.h (MDiagArray2<T>::MDiagArray2<T> (const DiagArray2<U>&)): New template + constructor. + (MDiagArray2<T>::nnz): New method. + * MDiagArray2.cc (MDiagArray2<T>::nnz): Implement it. + + * dDiagMatrix.h (DiagMatrix::DiagMatrix (const DiagArray2<U>&)): New template + constructor. + (DiagMatrix::abs): New method decl. + (real (const ComplexDiagMatrix&), imag (const ComplexDiagMatrix&)): + New decls. + * dDiagMatrix.cc (DiagMatrix::abs): New method. + (operator *(const DiagMatrix&, const DiagMatrix&)): Optimize. + (real (const ComplexDiagMatrix&), imag (const ComplexDiagMatrix&)): + New functions. + + * fDiagMatrix.h (FloatDiagMatrix::FloatDiagMatrix (const DiagArray2<U>&)): New template + constructor. + (FloatDiagMatrix::abs): New method decl. + (real (const FloatComplexDiagMatrix&), imag (const FloatComplexDiagMatrix&)): + New decls. + * fDiagMatrix.cc (FloatDiagMatrix::abs): New method. + (operator *(const FloatDiagMatrix&, const FloatDiagMatrix&)): Optimize. + (real (const FloatComplexDiagMatrix&), imag (const FloatComplexDiagMatrix&)): + New functions. + + * CDiagMatrix.h (ComplexDiagMatrix::ComplexDiagMatrix (const DiagArray2<U>&)): New template + constructor. + (ComplexDiagMatrix::abs): New method decl. + (conj (const ComplexDiagMatrix&)): Add missing decl. + (ComplexDiagMatrix::all_elements_are_real): New method decl. + + * CDiagMatrix.cc (CDiagMatrix::abs): New method. + (operator *(const DiagMatrix&, const ComplexDiagMatrix&)): Optimize. + (operator *(const ComplexDiagMatrix&, const DiagMatrix&)): Optimize. + (operator *(const ComplexDiagMatrix&, const ComplexDiagMatrix&)): Optimize. + (ComplexDiagMatrix::all_elements_are_real): New method. + + * fCDiagMatrix.h (FloatComplexDiagMatrix::FloatComplexDiagMatrix (const DiagArray2<U>&)): New template + constructor. + (FloatComplexDiagMatrix::abs): New method decl. + (conj (const FloatComplexDiagMatrix&)): Add missing decl. + (FloatComplexDiagMatrix::all_elements_are_real): New method decl. + + * fCDiagMatrix.cc (CDiagMatrix::abs): New method. + (operator *(const FloatDiagMatrix&, const FloatComplexDiagMatrix&)): Optimize. + (operator *(const FloatComplexDiagMatrix&, const FloatDiagMatrix&)): Optimize. + (operator *(const ComplexDiagMatrix&, const ComplexDiagMatrix&)): Optimize. + (FloatComplexDiagMatrix::all_elements_are_real): New method. + + * dSparse.cc (SparseMatrix::SparseMatrix (const DiagMatrix&)): New + constructor. + * dSparse.h (SparseMatrix::SparseMatrix (const DiagMatrix&)): Declare + it. + + * CSparse.cc (SparseComplexMatrix::SparseComplexMatrix (const ComplexDiagMatrix&)): + New constructor. + * CSparse.h (SparseComplexMatrix::SparseComplexMatrix (const ComplexDiagMatrix&)): + Declare it. + * mx-op-defs.h (DMM_MULTIPLY_OP, MDM_MULTIPLY_OP): Optimize. + +2008-11-21 Jarkko Kaleva <d3roga@gmail.com> + + * EIG.h (EIG::EIG (const Matrix& a, const Matrix& b, + bool calc_eigenvectors = true)): New constructor. + (EIG::EIG (const Matrix& a, const Matrix& b, octave_idx_type& info, + bool calc_eigenvectors = true)): New constructor. + (EIG::EIG (const ComplexMatrix& a, const ComplexMatrix& b, + bool calc_eigenvectors = true)): New constructor. + (EIG::EIG (const ComplexMatrix& a, const ComplexMatrix& b, + octave_idx_type& info, bool calc_eigenvectors = true)): New + constructor. + * EIG.cc (EIG::init (const Matrix& a, const Matrix& b, + bool calc_eigenvectors)): New function. + (EIG::init (const ComplexMatrix& a, const ComplexMatrix& b, + bool calc_eigenvectors)): New function. + (EIG::symmetric_init (const Matrix& a, const Matrix& b, + bool calc_eigenvectors)): New function. + (EIG::hermitian_init (const ComplexMatrix& a, const ComplexMatrix& b, + bool calc_eigenvectors)): New function. + * fEIG.h (fEIG::fEIG (const FloatMatrix& a, const FloatMatrix& b, + bool calc_eigenvectors = true)): New constructor. + (fEIG::fEIG (const FloatMatrix& a, const FloatMatrix& b, + octave_idx_type& info, bool calc_eigenvectors = true)): New + constructor. + (fEIG::fEIG (const FloatComplexMatrix& a, const FloatComplexMatrix& b, + bool calc_eigenvectors = true)): New constructor. + (fEIG::fEIG (const FloatComplexMatrix& a, const FloatComplexMatrix& b, + octave_idx_type& info, bool calc_eigenvectors = true)): New + constructor. + (fEIG::init (const FloatMatrix& a, const FloatMatrix& b, + bool calc_eigenvectors)): New function. + (fEIG::init (const FloatComplexMatrix& a, const FloatComplexMatrix& b, + bool calc_eigenvectors)): New function. + (fEIG::symmetric_init (const FloatMatrix& a, const FloatMatrix& b, + bool calc_eigenvectors)): New function. + (fEIG::hermitian_init (const FloatComplexMatrix& a, + const FloatComplexMatrix& b, bool calc_eigenvectors)): New function. + +2008-11-19 Jaroslav Hajek <highegg@gmail.com> + + * dMatrix.cc (Matrix::determinant), + fMatrix.cc (FloatMatrix::determinant), + CMatrix.cc (ComplexMatrix::determinant), + fCMatrix.cc (FloatComplexMatrix::determinant): + Use atmp(i,i) instead of elem(i,i). + +2008-11-19 Jaroslav Hajek <highegg@gmail.com> + + * DET.h (base_det<T>::square): New member function. + * dMatrix.cc (Matrix::determinant), + fMatrix.cc (FloatMatrix::determinant), + CMatrix.cc (ComplexMatrix::determinant), + fCMatrix.cc (FloatComplexMatrix::determinant): + Allow taking MatrixType argument. + * dMatrix.h, fMatrix.h, CMatrix.h, fCMatrix.h: Update decls. + +2008-11-19 Jaroslav Hajek <highegg@gmail.com> + + * DET.h: New source. + * CmplxDET.cc, CmplxDET.h, dbleDET.cc, dbleDET.h, fCmplxDET.cc, + fCmplxDET.h, floatDET.cc, floatDET.h: Remove. + * Makefile.in: Reflect changes. + * mx-defs.h: Remove DET decls. + * mx-ext.h, dMatrix.h, fMatrix.h, CMatrix.h, fCMatrix.h, + dSparse.h, CSparse.h: Include only DET.h. + * dMatrix.cc (Matrix::determinant), + fMatrix.cc (FloatMatrix::determinant), + CMatrix.cc (ComplexMatrix::determinant), + fCMatrix.cc (FloatComplexMatrix::determinant), + dSparse.cc (SparseMatrix::determinant), + CSparse.cc (SparseComplexMatrix::determinant): Use new class. + +2008-11-18 David Bateman <dbateman@free.fr> + + * file-ops.cc (std::string file_ops::tilde_expand (const + std::string&)): Check if the string contains a tilde and fast + return if not. + +2008-11-17 John W. Eaton <jwe@octave.org> + + * dir-ops.cc (dir_entry::read): Use std::list<std::string> to + cache names before converting to string_vector. + +2008-11-14 David Bateman <dbateman@free.fr> + + * Array2.h (Array2<T> Array2<T>::index): Correct use of + resize_fill_value. + +2008-11-12 Michael Goffioul <michael.goffioul@gmail.com> + + * MArray-C.cc, MArray-d.cc, MArray-f.cc, MArray-fC.cc: Declare + MArray<T>::norm specialization before implicit MArray<T> implicit + instantiation. + * idx-vector.h (class idx_vector::idx_base_rep, class + idx_vector::idx_range_rep, class idx_vector::idx_colon_rep, class + idx_vector::idx_scalar_rep, class idx_vector::idx_vector_rep): Add + OCTAVE_API tag. + * idx-vector.cc (idx_vector::idx_scalar_rep::idx_scalar_rep(T), + idx_vector::idx_vector_rep::idx_vector_rep(const Array<T>&)): Ditto. + * oct-inttypes.cc (octave_int<T>::type_name): Ditto. + * oct-inttypes.cc (powf(const octave_int<T>&,const float&)): Cast 'b' + to double. + * oct-inttypes.h: Undefine min/max. + * oct-norm.h (xnorm, xfrobnorm, xcolnorms, xrownorms): Add OCTAVE_API + tag. + * oct-norm.cc (xnorm, xfrobnorm, xcolnorms, xrownorms): Ditto. + +2008-11-12 Jaroslav Hajek <highegg@gmail.com> + + * DiagArray2.h (DiagArray2<T>::maybe_delete_elements): Remove + declaration. + +2008-11-09 Jaroslav Hajek <highegg@gmail.com> + + * oct-norm.cc: Don't include Array.cc. + (column_norms (const MArray2<T>&, ...)): Use std::vector instead of Array<T> for + accumulator containers. Use empty constructor instead of + Array<T>::resize. + (row_norms (const MArray2<T>&, ...)): Ditto. + (column_norms (const MSparse2<T>&, ...)): Ditto. + (row_norms (const MSparse2<T>&, ...)): Ditto. + +2008-10-31 Jaroslav Hajek <highegg@gmail.com> + + * oct-norm.h: New header file. + * oct-norm.cc: New source. + * CSparse.cc (SparseComplexMatrix::row, SparseComplexMatrix::column): + New member functions. + * CSparse.h (SparseComplexMatrix): Declare them. + * dSparse.cc (SparseMatrix::row, SparseMatrix::column): + New member functions. + * dSparse.h (SparseMatrix): Declare them. + * MArray-C.cc (MArray<Complex>::norm), + MArray-d.cc (MArray<double>::norm), + MArray-fC.cc (MArray<FloatComplex>::norm), + MArray-f.cc (MArray<float>::norm): Wrap a call to xnorm. + + * MArray-defs.h (MARRAY_NORM_BODY): Remove. + +2008-11-02 Jaroslav Hajek <highegg@gmail.com> + + * idx-vector.cc (idx_vector::is_complement): Set resulting extent + correctly. + * Array.cc (Array<T>::delete_elements (int, const idx_vector&)): + Fix check for invalid dim. + +2008-10-31 Jaroslav Hajek <highegg@gmail.com> + + * idx-vector.h (idx_vector::idx_range_rep::extent): Don't change + extent when len is zero. + * idx-vector.h (idx_vector::idx_range_rep::idx_range_rep (void)): + Create empty range by default. + +2008-10-30 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.h (octave_int_abs): New function. + (octave_int_arith_base<T, true>::div): Use octave_int_abs instead of + std::abs. + * oct-inttypes.cc (octave_int_arith_base<int64_t, true>): Ditto. + +2008-10-28 Jaroslav Hajek <highegg@gmail.com> + + * Array-C.cc Array-d.cc Array-f.cc Array-fC.cc Array-i.cc Array-s.cc: + Don't use semicolon after INSTANTIATE_ARRAY_ASSIGN. + * Array-util.h (zero_dims_inquire): New declarations. + (is_in, how_many_lgt, short_freeze): Remove declarations. + * Array-util.cc (zero_dims_inquire): New functions. + (is_in, how_many_lgt, short_freeze): Remove functions. + * Array.cc (Array<T>::index, Array<T>::resize_fill, Array<T>::resize, + Array<T>::assign, Array<T>::delete_elements): + Rewrite. + * Array.h (Array<T>::index, Array<T>::resize_fill, Array<T>::resize, + Array<T>::assign, Array<T>::delete_elements): + Rewrite interfaces. + * Array2.h (Array2<T>::resize): Call Array<T>::resize_fill. + * Array3.h (Array3<T>::resize): Call Array<T>::resize_fill. + * ArrayN.h (ArrayN<T>::resize): Remove declarations. + (ArrayN<T>::index): Fix call to resize_fill_value. + * Sparse.cc (assign, assign1): Use zero-based indices. + * chMatrix.h: Include mx-op-defs.h + * dim-vector.h (dim_vector::any_neg, dim_vector::chop_all_singletons, + dim_vector::redim): New member functions. + * idx-vector.cc: Mostly rewrite. + * idx-vector.h: Mostly rewrite. + +2008-10-29 Michael Goffioul <michael.goffioul@gmail.com> + + * lo-specfun.cc (cbesj, cbesy, cbesi, cbesk, cbesh1, cbesh2): Do not + use std::complex::real() and std::complex::imag() as l-value, this is + not supported under MSVC. + +2008-10-28 John W. Eaton <jwe@octave.org> + + * lo-specfun.cc: Fix prototypes for the Fortran subroutines cbesh, + cbesi, cbesj, cbesk, and cbesy. + (cbesh, cbesi, cbesj, cbesk, cbesy): Fix calls to Fortran + subroutines. + +2008-10-28 Brian Gough <bjg@gnu.org> + + * lo-specfun.cc (zbesi): Fix scaling factor for negative alpha. + (cbesi): Likewise. + +2008-10-23 John Swensen <jpswensen@comcast.net> + + * oct-shlib.cc (octave_dyld_shlib::open): Call NSLinkEditError to + get better diagnostic if NSLinkModule fails. + +2008-10-23 John W. Eaton <jwe@octave.org> + + * oct-shlib.cc (octave_dlopen_shlib::open): Use RTLD_NOW instead + of RTLD_LAZY. + +2008-10-12 Jaroslav Hajek <highegg@gmail.com> + + * CSparse.cc (ComplexMatrix::expm): Improve inverse preconditioning + according to Marco Caliari. + * dSparse.cc (Matrix::expm): Likewise. + * fCSparse.cc (FloatComplexMatrix::expm): Likewise. + * fSparse.cc (FloatMatrix::expm): Likewise. + +2008-10-10 Jaroslav Hajek <highegg@gmail.com> + + * sparse-util.h (SparseCholPrint): Change char * argument to const + char *. + * sparse-util.cc (SparseCholPrint): Likewise. + +2008-10-09 Jaroslav Hajek <highegg@gmail.com> + + * oct-sort.cc (octave_sort<T>::merge_getmem, + octave_sort<T>::merge_freemem): Replace malloc -> new [], free -> + delete []. + (octave_sort<T>::merge_lo, octave_sort<T>::merge_hi): Replace + std::memcpy and std::memmove with std::copy. + +2008-10-08 John W. Eaton <jwe@octave.org> + + * Sparse-op-defs.h (SPARSE_SMSM_BOOL_OPS): Duplicate code for scalar + sparse arguments rather than rely on extern function. + +2008-10-08 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.h (octave_base_int<T>::compute_threshold): Return + exclusive bounds rather than inclusive, be resistant to compiler + optimizations. + (octave_base_int<T>::convert_real): Use exclusive bounds. + +2008-10-07 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.h (OCTAVE_INT_DOUBLE_BIN_OP): Change octave_int64 to + octave_uint64 where appropriate. + +2008-10-06 David Bateman <dbateman@free.fr> + + * Sparse-op-defs.h (SPARSE_SMSM_CMP_OPS): Duplicate code for scalar + sparse arguments rather than rely on extern function. + +2008-10-06 John W. Eaton <jwe@octave.org> + + * Spasre-op-defs.h: Undo previous change. + +2008-10-01 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.h (octave_int<T>::one, octave_int<T>::zero): Declare + constants. + * oct-inttypes.cc: Define them. + * oct-inttypes.h: Define mixed operations via long double if possible. + * oct-inttypes.cc: Define alternative implementations for 64-bit + multiplication and mixed operations. + * mx-ops: Instantiate all 64-bit integer operations. + +2008-10-06 Jaroslav Hajek <highegg@gmail.com> + + * oct-lookup.h: Mark functions inline. Add missing std:: qualifiers. + +2008-10-06 John W. Eaton <jwe@octave.org> + + * Sparse.h (Sparse<T>::elt_type): New typedef. + * Sparse-op-defs.h (SPARSE_SMSM_BOOL_OP, SPARSE_MSM_CMP_OP): + Use it to call sparse-matrix/scalar operator instead of attempting + to instantiate mixed-type sparse-matrix/scalar operators. + +2008-10-03 Jaroslav Hajek <highegg@gmail.com> + + * Array.h (Array<T>::maybe_delete_elements): Remove rfv argument from + declaration. + * Array.cc (Array<T>::maybe_delete_elements): Remove all usages of + rfv. + +2008-10-03 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (assignN): Do not call maybe_delete_elements when + for empty matrix. + +2008-09-30 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.h: Mostly rewrite. + * oct-inttypes.cc: Modstly rewrite. + +2008-09-29 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (Array<T>::maybe_delete_elements_2(idx_vector&)): Return on + empty index vector. + +2008-09-26 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (assign1, assign2, assignN): Do not call + maybe_delete_elements. + (maybe_delete_elements (Array<idx_vector>&)): Call the 1D and 2D + special handlers if possible. + * Sparse.cc (assign1, assign2, assignN): Do not call + maybe_delete_elements. + +2008-09-22 Brian Gough <bjg@gnu.org> + + * oct-rand.cc (initialize_mersenne_twister): Use separate + initializations for each generator to avoid correlation. + +2008-09-12 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.h (pow (const octave_int<T>&, const octave_int<T>&)): + +2008-09-19 John W. Eaton <jwe@octave.org> + + * Array.cc (assign1, assign2, assignN): + Clear lhs index before throwing error. + (Array<T>::value): Clear index before throwing error. + +2008-09-18 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (maybe_delete_elements_2 (idx_vector&)): Fix tests to get + better Matlab compatibility. + (maybe_delete_elements (idx_vector&, idx_vector&)): Fix tests to get + better Matlab compatibility, simplify, gripe on invalid 2-D deletion. + +2008-09-18 Jaroslav Hajek <highegg@gmail.com> + + * Array.h (Array<T>::coerce): Use octave_idx_type instead of int. + +2008-09-12 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.h (pow (const octave_int<T>&, const octave_int<T>&)): + Handle negative exponent correctly. + +2008-08-19 David Bateman <dbateman@free.fr> + + * oct-inttypes.h (template <class T1, class T2> inline T2 + octave_int_fit_to_range (const T1&, const T2&, const T2&), + template <typename T> inline T octave_int_fit_to_range (const + double&, const T&, const T&), template <> inline T2 + octave_int_fit_to_range<T1, T2> (const T1&, const T2&, const T2&), + OCTAVE_S_US_FTR): Check and flag integer trunctation. + (OCTAVE_INT_FIT_TO_RANGE, OCTAVE_INT_FIT_TO_RANGE2): Adapt for the + above change. + (OCTAVE_INT_CONV_FIT_TO_RANGE): New macro for conversion to + integer types. + (octave_int<T>::conv_error_type): New enum to flag conversion and + math warnings. + (octave_int<T>::octave_int (U i), octave_int<T>::octave_int + (double i), octave_int<>::octave_int (const octave_int<U>& i)): + Flag conversion and math errors other than integer truncation. + (octave_int<T> octave_int<T>::operator - (void)): Flag truncation + error. + (static bool get_trunc_flag (void), static bool clear_trunc_flag + (void, static bool trunc_flag)): Delete. + (static int get_conv_flag (void), static bool get_trunc_flag (void), + static bool get_nan_flag (void), static bool get_non_int_flag (void), + static bool get_math_trunc_flag (void), static void + clear_conv_flag (void)): New functions to query and reset + conversion and mathw arning state. + (static int cov_flag): New parameter holding current conversion + and math warning state. Set it to zero. + (template <class T> octave_int<T> powf (float, const + octave_int<T>&), template <class T> octave_int<T> powf (const + octave_int<T>&, float)): New functions. + +2008-08-12 Jaroslav Hajek <highegg@gmail.com> + + * lo-ieee.cc (octave_ieee_init): Try to ensure that octave_NaN is + classified as positive by lo_ieee_signbit. + +2008-08-11 Jaroslav Hajek <highegg@gmail.com> + + * Array.cc (no_op_fcn): New static function. + (Array<T>::hermitian): If fcn is null, set to no_op_fcn. + +2008-08-07 John W. Eaton <jwe@octave.org> + + * sprse-base-chol.h, oct-sparse.h: Don't include config.h. + + * cmd-edit.cc, file-ops.h, kpse.cc, oct-env.cc, pathsearch.cc: + Replace all uses of NPOS with std::string::npos. + + * fCmplxLU.h, CmplxLU.h: Fix typo in definition of + multiple-inclusion guard macro. + +2008-08-05 John W. Eaton <jwe@octave.org> + + * file-ops.h, file-ops.cc (file_ops::static_members): + New singleton class for static members of file_ops. + + * pathsearch.h, pathsearch.cc (class dir_path::static_members): + New singleton class for static members of dir_path. + + * pathsearch.cc (dir_path::init): Move octave_kpathsea_initialized + here from file scope. + +2008-08-04 John W. Eaton <jwe@octave.org> + + * oct-env.cc (octave_env::do_set_program_name, + octave_env::do_base_pathname): Fix usage of + file_ops::dir_sep_chars. + (octave_env::do_make_absolute): Fix usage of + file_ops::dir_sep_chars and file_ops::dir_sep_str. + (octave_env::do_get_home_directory): Fix usage of + file_ops::dir_sep_str. + + * file-ops.h (file_ops::do_is_dir_sep): New function. + (file_ops_::is_dir_sep): Call it. + * file-ops.cc (class file_ops): Make it a proper singleton object. + (file_ops::file_ops): New constructor. + (file_ops::instance_ok): New function. + (file_ops::xdir_sep_char): Now private. No longer static. Rename + from dir_sep_char. + (file_ops::xdir_sep_str): Likewise, from dir_sep_str. + (file_ops::xdir_sep_chars): Likewise, from dir_sep_chars. + (file_ops::dir_sep_char, file_ops::dir_sep_str, + file_ops::dir_sep_chars): New functions. + (file_ops::recursive_rmdir): Fix usage of file_ops::dir_sep_str. + (file_ops::concat): Fix usage of file_ops::dir_sep_char. + + * oct-env.cc (octave_env::instance_ok): Fix typo in error message. + +2008-07-30 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h: Style fixes. + +2008-07-30 Jaroslav Hajek <highegg@gmail.com> + + * oct-inttypes.h (octave_int<T>::trunc_flag): New member static field. + (octave_int<T>::get_trunc_flag, octave_int<T>::clear_trunc_flag): New + member functions. + (octave_int<T>::octave_int (const octave_int<U>&)): set trunc_flag + on truncation. + (SPECIALIZE_WIDENING_CONVERSION): New macro. + (DECLARE_OCTAVE_INT_TYPENAME): New macro. + +2008-07-29 David Bateman <dbateman@free.fr> + + * lo-ieee.h (LO_IEEE_NA_HW, LO_IEEE_NA_LW, LO_IEEE_NA_FLOAT): + Change definition so cast from single to double and visa versa + maintains NA value. + (LO_IEEE_NA_HW_OLD, LO_IEEE_NA_LW_OLD): Keep old values. + (extern OCTAVE_API int __lo_ieee_is_old_NA (double)): Function to + detect old NA value. + (extern OCTAVE_API double __lo_ieee_replace_old_NA (double)): + Function to replace old NA value with new new. + * lo-cieee.c (int __lo_ieee_is_old_NA (double)): Function to + detect old NA value. + (double __lo_ieee_replace_old_NA (double)): Function to replace + old NA value with new new. + * data-conv.cc (void read_doubles(std::istream&, double *, + save_type, int, bool, octave_mach_info::float_format)): Test if + loaded NA values is the old representation and replace it. + +2008-07-28 Jaroslav Hajek <highegg@gmail.com> + + * lo-math.h: Ensure log2 is undefined from cmath in C++ mode. + +2008-07-21 Michael Goffioul <michael.goffioul@gmail.com> + + * oct-mutex.h (octave_base_mutex::octave_base_mutex): Initialize + count to 1, not -1. + + * oct-mutex.cc (octave_base_mutex::lock, octave_base_mutex::unlock): + Replace error calls with (*current_liboctave_error_handler). + +2008-07-21 John W. Eaton <jwe@octave.org> + + * regex-match.cc (regex_match::init): Initialize err to 0. + +2008-07-19 John W. Eaton <jwe@octave.org> + + * oct-mutex.h (class octave_base_mutex): New class. + (class octave_mutex): Don't use union for rep and count. + (octave_mutex::rep): Declare as octave_base_mutex. + (octave_mutex::count): Delete. + (octave_mutex::lock, octave_mutex::unlock): No longer virtual. + (octave_mutex::~octave_mutex): No need to check that rep is + valid or set rep to zero after deleting. + (octave_mutex::operator =): No need to check that rep is valid. + * oct-mutex.cc (octave_w32_mutex, octave_pthread_mutex): Derive + from octave_base_mutex, not octave_mutex. + +2008-07-18 John W. Eaton <jwe@octave.org> + + * oct-mutex.h (octave_mutex::octave_mutex (int)): Initialize rep + to 0, not count. + * oct-mutex.cc (octave_mutex::octave_mutex (void)): Set rep->count + to 1 instead of incrementing it. + +2008-07-17 Michael Goffioul <michael.goffioul@gmail.com> + + * dNDArray.cc: Do not include ctor NDArray(Array<octave_idx_type>, + bool, bool) into conditional HAVE_FFTW3 preprocessor statement. + +2008-07-16 John W. Eaton <jwe@octave.org> + + * oct-mutex.h (octave_autolock::octave_autolock (void), + octave_autolock (const octave_autolock&), + octave_autolock::operator = (const octave_autolock&)): + Delete definitions. + +2008-07-16 Michael Goffioul <michael.goffioul@gmail.com> + + * cmd-edit.cc (event_hook_lock): New static mutex variable. + (command_editor::event_handler): Lock and copy event_hook_set before + executing handlers. + (command_editor::add_event_hook, command_editor::remove_event_hook): + Autolock event_hook_lock. + +2008-07-15 Michael Goffioul <michael.goffioul@gmail.com> + + * oct-mutex.h, oct-mutex.cc: New files. + * Makefile.in: Add them to appropriate lists. + +2008-07-15 John W. Eaton <jwe@octave.org> + + * oct-sort.cc, oct-sort.h (octave_sort<T>::count_run): Declare + descending arg as bool&. + (octave_sort<T>::sort): Pass bool to count_run for descending arg. + +2008-07-11 John W. Eaton <jwe@octave.org> + + * dDiagMatrix.cc (DiagMatrix::diag): Return empty ColumnVector if + number of rows or columns is 0. + * fDiagMatrix.cc (FloatDiagMatrix::diag): Likewise. + + * Array-util.cc (is_vector): Avoid GCC warning. + * Array-f.cc (Array<float>::sort): Likewise. + * Array-d.cc (Array<double>::sort): Likewise. + * dbleQR.cc (QR::QR (const Matrix&, const Matrix&)): Likewise. + * CmplxQR.cc (ComplexQR::ComplexQR (const ComplexMatrix&, const + ComplexMatrix&)): Likewise. + * floatQR.cc (FloatQR::FloatQR (const FloatMatrix&, const + FloatMatrix&)): Likewise. + * fCmplxQR.cc (FloatComplexQR::FloatComplexQR (const + FloatComplexMatrix&, const FloatComplexMatrix&)): Likewise. + * Quad.cc (IndefQuad::do_integrate (octave_idx_type&, + octave_idx_type&, float&), FloatIndefQuad::do_integrate, + DefQuad::do_integrate octave_idx_type&, octave_idx_type&, float&, + FloatIndefQuad::do_integrate): Likewise. + + * mx-op-defs.h (MS_BOOL_OP, SM_BOOL_OP, MM_BOOL_OP, NDS_BOOL_OP, + SND_BOOL_OP, NDND_BOOL_OP): Detect NaN values. + * Array-util.cc (gripe_nan_to_logical_conversion): New function. + * Array-util.h: Provide decl. + * oct-inttypes.h (xisnan (octave_int<T>)): New function. + * lo-mappers.h (xisnan (bool), xisnan (char)): New inline functions. + + * CMatrix.cc, CNDArray.cc, CSparse.cc, dMatrix.cc, dNDArray.cc, + dSparse.cc, fCMatrix.cc, fCNDArray.cc, fMatrix.cc, fNDArray.cc: + New member function, any_element_is_nan. + * CMatrix.h, CNDArray.h, CSparse.h, dMatrix.h, dNDArray.h, + dSparse.h, fCMatrix.h, fCNDArray.h, fMatrix.h, fNDArray.h: + Provide decl. + +2008-07-10 David Bateman <dbateman@free.fr> + + * dNDArray.cc (NDArray::NDArray (const Array<octave_idx_type>&, + bool, bool)): New constructor. + * dNDArray.h: Provide decl. + +2008-07-10 Michael Goffioul <michael.goffioul@gmail.com> + + * lo-specfun.h: Fix typo in erff/erfcf declaration. + * lo-specfun.cc: Ditto. Add atanhf implementation. + +2008-06-20 Jaroslav Hajek <highegg@gmail.com> + + * MatrixType.h: Add missing include statement. + +2008-06-13 Michael Goffioul <michael.goffioul@gmail.com> + + * lo-mappers.cc (arg): Remove ambiguity about atan2(float,float) usage. + * fCmplxDET.cc (FloatComplexDET::initialize10): Likewise, for pow. + +2008-06-11 John W. Eaton <jwe@octave.org> + + * so-array.h, so-array.cc, Array-so.cc: Delete. + * Makefile.in: Remove them from the lists. + +2008-06-05 John W. Eaton <jwe@octave.org> + + * oct-shlib.cc (octave_base_shlib::remove): Only dereference + counter if iterator is valid. + +2008-06-02 David Bateman <dbateman@free.fr> + + * fCmplxDET.cc (FloatComplexDET::value_will_overflow, + FloatComplexDET:value_will_underflow): Replace DBL_MIN and DBL_MAX + with FLT_MIN and FLT_MAX. + * floatDET.cc ((FloatDET::value_will_overflow, + FloatDET:value_will_underflow): Ditto. + * lo-cieee.c (__lo_ieee_float_is_NA): Check only a sngle word for + float NA value. + (lo_ieee_float_inf_value): Return correct float Infinity value. + (lo_ieee_float_NA_value): Return correct float NA value. + (lo_ieee_float_NaN_value): Return correct float NaN value. + * lo-ieee.cc (octave_ieee_init): Set float NA value correctly. + * lo-ieee.h (lo_ieee_float): value of union is of type float. + (LO_IEEE_NA_FLOAT): Make NA value a valid float NaN. + (LO_IEEE_NA_FLOAT_LW): Delete. + +2008-06-02 David Bateman <dbateman@free.fr> + + * fCmplxLU.cc (class FloatComplexLU): Correct error in instantiation. + * floatLU.cc (class FloatLU): ditto. + * floatLU.h (class FloatLU): ditto. + + * floatAEPBAL.cc (octave_idx_type FloatAEPBALANCE::init (const + FloatMatrix&, const std::string&)): Use FloatMatrix to initialize + balancing_mat. + + * Makefile.in (MATRIX_INC): Add fCmplxAEPBAL.h and floatAEPBAL.h. + (MATRIX_SRC): Add fCmplxAEPBAL.cc and floatAEPBAL.cc. + +2008-05-21 David Bateman <dbateman@free.fr> + + * Quad-opts.in: Handle single precision tolerances. + * Quad.cc (float_user_fcn): New static variable. + (quad_float_fcn_ptr): New typedef. + (qagp, quagi): New QUADPACK decls. + (float_user_function): New function. + (DefQuad::do_integrate, IndefQuad::do_integrate): Float versions. + (FloatDefQuad::do_integrate, FloatIndefQuad::do_integrate): + New functions. + * Quad.h (class Quad): Handle float type. + (class FloatDefQuad, class FloatIndefQuad): New classes. + +2008-05-21 Jaroslav Hajek <highegg@gmail.com> + + * fCMatrix.h (xgemm): Provide decl. + (xcdotc, csyrk, cherk): New F77 decls. + * fMatrix.cc (xgemm): New function. + (operator * (const FloatMatrix&, const FloatMatrix&)): Simplify. + (get_blas_trans_arg): New function. + * fCMatrix.h (xgemm): Provide decl. + (ssyrk): New F77 decl. + * fCMatrix.cc (xgemm): New function. + (operator * (const FloatComplexMatrix&, const + FloatComplexMatrix&)): Simplify. + (get_blas_trans_arg): New function. + + * dMatrix.cc, CMatrix.cc, Sparse-op-defs.h: Add missing copyright. + + * Sparse-op-defs.h (SPARSE_FULL_MUL): Simplify scalar*matrix case. + Correct indenting. + (SPARSE_FULL_TRANS_MUL): New macro. + (FULL_SPARSE_MUL): Simplify scalar*matrix case. Correct indenting. + Move OCTAVE_QUIT one level up. + (FULL_SPARSE_MUL_TRANS): New macro. + * dSparse.h (mul_trans, trans_mul): Provide decl. + * dSparse.cc (mul_trans, trans_mul): New functions. + * CSparse.h (mul_trans, trans_mul, mul_herm, herm_mul): Provide decl. + * CSparse.cc (mul_trans, trans_mul, mul_herm, herm_mul): New functions. + + * dMatrix.h (xgemm): Provide decl. + * dMatrix.cc (xgemm): New function. + (operator * (const Matrix&, const Matrix&)): Simplify. + (get_blas_trans_arg): New function. + * CMatrix.h (xgemm): Provide decl. + * CMatrix.cc (xgemm): New function. + (operator * (const ComplexMatrix&, const ComplexMatrix&)): Simplify. + (get_blas_trans_arg): New function. + + * MatrixType.cc (matrix_real_probe, matrix_complex_probe): + New template functions. + (MatrixType::MatrixType (const Matrix&), + MatrixType::MatrixType (const FloatMatrix&)): + just call matrix_real_probe. + (MatrixType::MatrixType (const ComplexMatrix&), + MatrixType::MatrixType (const FloatComplexMatrix&)): + just call matrix_complex_probe. + + * MatrixType.cc (MatrixType::MatrixType (matrix_type, bool)): + add missing test for Unknown. + +2008-05-21 David Bateman <dbateman@free.fr> + + * fCMatrix.cc (float rcond): Replace with float rcon everywhere + to avoid shadowed variable warning + (float ComplexMatrix::rcond (void) const): New method for + reciprocal condition number calculation. + (float ComplexMatrix::rcond (MatrixType &mattype) const): ditto. + * fCMatrix.h (float rcond): Replace with float rcon everywhere + to avoid shadowed variable warning + (float ComplexMatrix::rcond (void) const): New method for + reciprocal condition number calculation. + (float ComplexMatrix::rcond (MatrixType &mattype) const): ditto. + * fMatrix.cc (float rcond): Replace with float rcon everywhere + to avoid shadowed variable warning + (float Matrix::rcond (void) const): New method for + reciprocal condition number calculation. + (float Matrix::rcond (MatrixType &mattype) const): ditto. + * fMatrix.h (float rcond): Replace with float rcon everywhere + to avoid shadowed variable warning + (float Matrix::rcond (void) const): New method for + reciprocal condition number calculation. + (float Matrix::rcond (MatrixType &mattype) const): ditto. + + * Array.cc: Fix transpose tests. + + * CmplxGEBAL.cc (ComplexGEPBALANCE), dbleGEPBAL.cc (GEPBALANCE), + fCmplxGEPBAL.cc (FloatComplexGEPBALANCE), floatGEPBAL.cc + (FloatGEPBALANCE): New class for generalized eigenvalue balancing. + * CmplxGEBAL.h (ComplexGEPBALANCE), dbleGEPBAL.h (GEPBALANCE), + fCmplxGEPBAL.h (FloatComplexGEPBALANCE), floatGEPBAL.h + (FloatGEPBALANCE): Declare them. + * Makefile.in (MATRIX_INC): Include them here. + (MATRIX_SRC): and here. + + * floatAEPBAL.cc (FloatAEPBALANCE), fCmplxAEPBAL.cc + (FloatComplexAEPBALANCE): New classes for single precision + Algebraic eignvalue balancing. + * floatAEPBAL.h (FloatAEPBALANCE), fCmplxAEPBAL.h + (FloatComplexAEPBALANCE): Declare them. + * Makefile.in (MATRIX_INC): Include them here. + (MATRIX_SRC): and here. + + * floatHESS.cc (FloatHESS), fCmplxHESS.cc (FloatComplexHESS): New + classes for single precision Hessenberg decomposition. + * floatHESS.h (FloatHESS), fCmplxHESS.h (FloatComplexHESS): + Declare them. + * Makefile.in (MATRIX_INC): Include them here. + (MATRIX_SRC): and here. + + * floatQR.cc (FloatQR), fCmplxQR.cc (FloatComplexQR): New + classes for single precision QR decomposition. + * floatQR.h (FloatQR), fCmplxQR.h (FloatComplexQR): + Declare them. + * Makefile.in (MATRIX_INC): Include them here. + (MATRIX_SRC): and here. + + * floatQRP.cc (FloatQRP), fCmplxQRP.cc (FloatComplexQRP): New + classes for single precision permuted QR decomposition. + * floatQRP.h (FloatQRP), fCmplxQRP.h (FloatComplexQRP): + Declare them. + * Makefile.in (MATRIX_INC): Include them here. + (MATRIX_SRC): and here. + + * mx-defs (FloatAEPBALANCE, FloatComplexAEPBALANCE, + ComplexGEPBALANCE, FloatGEPBALANCE,FloatComplexGEPBALANCE, + FloatHESS, FloatComplexHESS, FloatQR, FloatComplexQR, QRP, + ComplexQRP, FloatQRP, FloatComplexQRP): Declare classes. + +2008-05-20 David Bateman <dbateman@free.fr> + + * Array.cc (Array<T> Array<T>::transpose () const): Modify for tiled + transpose to limit the number of cache misses. + (Array<T> Array<T>::hermitian (T (*)(const&)) const): New method + for matrix conjugate transpose. + * Array.h (Array<T> hermitian (T (*)(const&)) const): Declare it. + + * DiagArray2.cc (DiagArray2<T> DiagArray2<T>::transpose () const): + Specialization for diagonal arrays. + (DiagArray2<T> DiagArray2<T>::transpose (T (*) (const&)) const): + Ditto. + + * MArray.h (MArray<T> hermitian <T (*) (const&)) const): New method. + (MArray<T> transpose () const): Ditto. + * MArray2.h (MArray2<T> hermitian <T (*) (const&)) const): Ditto. + * Array2.h (Array2<T> hermitian <T (*) (const&)) const): Ditto. + * ArrayN.h (ArrayN<T> hermitian <T (*) (const&)) const): Ditto. + * MDiagArray2.h (MDiagArray2<T> transpose () const): Ditto. + (MDiagArray<T> hermitian <T (*) (const&)) const): Ditto. + + * CColVector.cc (transpose, hermitian): Define in terms of base class. + * CRowVector.cc (transpose, hermitian): Ditto. + * dColVector.cc (transpose): Ditto. + * dRowVector.cc (transpose): Ditto. + * CDiagMatrix.h (transpose, hermitian): Ditto. + * dDiagMatrix.h (transpose): Ditto. + + * fCColVector.cc (transpose, hermitian): Define in terms of base class. + * fCRowVector.cc (transpose, hermitian): Ditto. + * fColVector.cc (transpose): Ditto. + * fRowVector.cc (transpose): Ditto. + * fCDiagMatrix.h (transpose, hermitian): Ditto. + * fDiagMatrix.h (transpose): Ditto. + + * CDiagMatrix.cc (ComplexDiagMatrix::transpose, + ComplexDiagMatrix::hermitian): Delete. + * dDiagMatrix.cc (DiagMatrix::transpose): Ditto. + * CMatrix.cc (ComplexMatrix::hermitian): Ditto. + + * fCDiagMatrix.cc (FloatComplexDiagMatrix::transpose, + FloatComplexDiagMatrix::hermitian): Delete. + * fDiagMatrix.cc (FloatDiagMatrix::transpose): Ditto. + * fCMatrix.cc (FloatComplexMatrix::hermitian): Ditto. + + * lo-mappers.cc (FloatComplex xlog2(const FloatComplex&), float + xlog2 (flot, int&), FloatComplex xlog2(const FloatComplex&, int&)): + New mapper functions for single precion values. + * lo-mappers.h (FloatComplex xlog2(const FloatComplex&), float + xlog2 (flot, int&), FloatComplex xlog2(const FloatComplex&, int&)): + Declare them. + + * CmplxGEBAL.cc (ComplexGEPBALANCE), dbleGEPBAL.cc (GEPBALANCE), + fCmplxGEPBAL.cc (FloatComplexGEPBALANCE), floatGEPBAL.cc + (FloatGEPBALANCE): New class for generalized eigenvalue balancing. + * CmplxGEBAL.h (ComplexGEPBALANCE), dbleGEPBAL.h (GEPBALANCE), + fCmplxGEPBAL.h (FloatComplexGEPBALANCE), floatGEPBAL.h + (FloatGEPBALANCE): Declare them. + * Makefile.in (MATRIX_INC): Include them here. + (MATRIX_SRC): and here. + + * floatAEPBAL.cc (FloatAEPBALANCE), fCmplxAEPBAL.cc + (FloatComplexAEPBALANCE): New classes for single precision + Algebraic eignvalue balancing. + * floatAEPBAL.h (FloatAEPBALANCE), fCmplxAEPBAL.h + (FloatComplexAEPBALANCE): Declare them. + * Makefile.in (MATRIX_INC): Include them here. + (MATRIX_SRC): and here. + + * floatHESS.cc (FloatHESS), fCmplxHESS.cc (FloatComplexHESS): New + classes for single precision Hessenberg decomposition. + * floatHESS.h (FloatHESS), fCmplxHESS.h (FloatComplexHESS): + Declare them. + * Makefile.in (MATRIX_INC): Include them here. + (MATRIX_SRC): and here. + + * floatQR.cc (FloatQR), fCmplxQR.cc (FloatComplexQR): New + classes for single precision QR decomposition. + * floatQR.h (FloatQR), fCmplxQR.h (FloatComplexQR): + Declare them. + * Makefile.in (MATRIX_INC): Include them here. + (MATRIX_SRC): and here. + + * floatQRP.cc (FloatQRP), fCmplxQRP.cc (FloatComplexQRP): New + classes for single precision permuted QR decomposition. + * floatQRP.h (FloatQRP), fCmplxQRP.h (FloatComplexQRP): + Declare them. + * Makefile.in (MATRIX_INC): Include them here. + (MATRIX_SRC): and here. + + * mx-defs (FloatAEPBALANCE, FloatComplexAEPBALANCE, + ComplexGEPBALANCE, FloatGEPBALANCE,FloatComplexGEPBALANCE, + FloatHESS, FloatComplexHESS, FloatQR, FloatComplexQR, QRP, + ComplexQRP, FloatQRP, FloatComplexQRP): Declare classes. + + * Array-f.cc, Array-fC.cc, MArray-f.cc, MArray-fC.cc, + fCColVector.cc, fCColVector.h, fCDiagMatrix.cc, fCDiagMatrix.h, + fCMatrix.cc, fCMatrix.h, fCNDArray.cc, fCNDArray.h, + fCRowVector.cc, fCRowVector.h, fCmplxCHOL.cc, fCmplxCHOL.h, + fCmplxDET.cc, fCmplxDET.h, fCmplxLU.cc, fCmplxLU.h, + fCmplxSCHUR.cc, fCmplxSCHUR.h, fCmplxSVD.cc, fCmplxSVD.h, + fColVector.cc, fColVector.h, fDiagMatrix.cc, fDiagMatrix.h, + fEIG.cc, fEIG.h, fMatrix.cc, fMatrix.h, fNDArray.cc, fNDArray.h, + fRowVector.cc, fRowVector.h, floatCHOL.cc, floatCHOL.h, + floatDET.cc, floatDET.h, floatLU.cc, floatLU.h, floatSCHUR.cc, + floatSCHUR.h, floatSVD.cc, floatSVD.h: New files. + * Makefile.in (MATRIC_INC, TI_SRC, MATRIX_SRC): Add them. + + * CMatrix.cc, CMatrix.h, CNDArray.cc, CNDArray.h, CmplxDET.cc, + MArray-C.cc, MArray-d.cc, MArray-defs.h, MArray.cc, MArray.h, + MatrixType.cc, MatrixType.h, SparseCmplxQR.cc, SparseCmplxQR.h, + SparseQR.cc, SparseQR.h, dMatrix.cc, dMatrix.h, dNDArray.cc, + dNDArray.h, data-conv.cc, data-conv.h, dbleDET.cc, dbleSVD.cc, + lo-cieee.c, lo-ieee.cc, lo-ieee.h, lo-mappers.cc, lo-mappers.h, + lo-specfun.cc, lo-specfun.h, lo-utils.cc, lo-utils.h, mx-base.h, + mx-defs.h, mx-ext.h, mx-inlines.cc, mx-op-defs.h, mx-ops, + oct-cmplx.h, oct-fftw.cc, oct-fftw.h, oct-inttypes.h, vx-ops: + Allow single precision types. + +2008-05-20 David Bateman <dbateman@free.fr> + + * CMatrix.cc (double rcond): Replace with double rcon everywhere + to avoid shadowed variable warning + (double ComplexMatrix::rcond (void) const): New method for + reciprocal condition number calculation. + (double ComplexMatrix::rcond (MatrixType &mattype) const): ditto. + * CMatrix.h (double rcond): Replace with double rcon everywhere + to avoid shadowed variable warning + (double ComplexMatrix::rcond (void) const): New method for + reciprocal condition number calculation. + (double ComplexMatrix::rcond (MatrixType &mattype) const): ditto. + * dMatrix.cc (double rcond): Replace with double rcon everywhere + to avoid shadowed variable warning + (double Matrix::rcond (void) const): New method for + reciprocal condition number calculation. + (double Matrix::rcond (MatrixType &mattype) const): ditto. + * dMatrix.h (double rcond): Replace with double rcon everywhere + to avoid shadowed variable warning + (double Matrix::rcond (void) const): New method for + reciprocal condition number calculation. + (double Matrix::rcond (MatrixType &mattype) const): ditto. + + * regex-match.cc, regex-match.h: New class for simple regular + expression matching + * Makefile.in (INCLUDES): Add regex-match.h here, and + (LIBOCTAVE_CXX_SOURCES): regex-match.cc here. + +2008-05-19 David Bateman <dbateman@free.fr> + + * dSparse.cc: Replace some DGBCON with GPBCON where they are + incorrectly used. + +2008-05-13 David Bateman <dbateman@free.fr> + + * idx-vector.cc (IDX_VEC_REP::idx_vector_rep (const boolNDArray&)): + If len is zero size the index vector in the same manner as if len + is not zero. + +2008-05-05 John W. Eaton <jwe@octave.org> + + * cmd-edit.cc (command_editor::re_read_init_file, + gnu_readline::do_re_read_init_file): New functions. + * cmd-edit.h (command_editor::re_read_init_file): Provide decl. + (command_editor::do_re_read_init_file): New function. + * oct-rl-edit.c (octave_rl_re_read_init_file): New function. + * oct-rl-edit.h: Provide decl. + +2008-05-05 Rafael Laboissiere <rafael@debian.org> + + * oct-rl-edit.c (octave_read_init_file): Simply call rl_read_init_file. + +2008-05-01 John W. Eaton <jwe@octave.org> + + * oct-shlib.h (octave_shlib::number_of_functions_loaded): + Return size_t instead of int value. + * oct-shlib.cc (octave_base_shlib::number_of_functions_loaded): + Likewise. + (octave_base_shlib::fcn_names): Now a std::map object. + Adjust all uses. + (octave_base_shlib::fcn_names_iterator, + octave_base_shlib::fcn_names_const_iterator): New typedefs. + (octave_base_shlib::add_to_fcn_names, octave_base_shlib::remove): + Perform reference counting for functions accessed. + +2008-04-30 Jaroslav Hajek <highegg@gmail.com> + + * lo-mappers.cc (xlog2 (double)): Compute log (2), not log2 (2). + (xlog2 (Complex), xlog2 (double, int&), xlog2 (Complex, int&)): + New functions. + * lo-mappers.h: Provide decls. + +2008-04-25 Michael Goffioul <michael.goffioul@gmail.com> + + * oct-lookup.h (seq_lookup): Do not use output value of fill_n (MSVC + does not support it). + +2008-04-24 Michael Goffioul <michael.goffioul@gmail.com> + + * lo-sysdep.cc (octave_popen2): Don't set PIPE_NOWAIT for parentWrite. + +2008-04-21 John W. Eaton <jwe@octave.org> + + * idx-vector.cc (IDX_VEC_REP::idx_vector_rep (const boolNDArray&)): + Fix for-loop condition. + +2008-04-19 Jaroslav Hajek <highegg@gmail.com> + + * CmplxCHOL.cc, CmplxQR.cc, dbleCHOL.cc, dbleQR.cc: Fix calls to error() + +2008-04-16 David Bateman <dbateman@free.fr> + + * Sparse.h (Sparse<T>& operator = (Sparse<T>&)): Move definition + of the operator for here + * Sparse.cc (Sparse<T>& Sparse<T>::operator = (Sparse<T>&)): To + here. Also delete idx. + * Array.h (Array<T>& operator = (Array<T>&)): Move definition + of the operator for here + * Array.cc (Array<T>& Array<T>::operator = (Array<T>&)): To + here. Also delete idx. + +2008-04-09 Michael Goffioul <michael.goffioul@gmail.com> + + * lo-mappers.cc (xround): Avoid floating-point overflow when input + value is equal to bitmax implementation taken from gnulib). + + * file-stat.cc (file_stat::update_internal): Do not strip trailing + file separator when path length is equal to 1 (handle case '\') under + __WIN32__ platforms. + +2008-04-07 Jaroslav Hajek <highegg@gmail.com> + + * dbleQR.h, dbleQR.cc (QR::shift_cols): New method. + * CmplxQR.h, CmplxQR.cc (ComplexQR::shift_cols): New method. + * dbleCHOL.h, dbleCHOL.cc (CHOL::insert_sym, CHOL::delete_sym, + CHOL::shift_sym): New methods. + * CmplxCHOL.h, CmplxCHOL.cc (ComplexCHOL::insert_sym, + ComplexCHOL::delete_sym, ComplexCHOL::shift_sym): New methods. + +2008-04-03 John W. Eaton <jwe@octave.org> + + * lo-sysdep.cc [__WIN32__ && ! __CYGWIN__]: Include windows.h. + +2008-03-27 Jaroslav Hajek <highegg@gmail.com> + + * oct-lookup.h: New file. + +2008-03-26 David Bateman <dbateman@feee.fr> + + * Array.cc (assignN): Additional fix for vector assignments. + +2008-03-25 David Bateman <dbateman@feee.fr> + + * Array.cc (assignN): refactor calculation of new dimensions when + original matrix is empty. + * Array-util.cc (bool is_vector (const dim_vector&)): New + function. + * Array-util.h (bool is_vector (const dim_vector&)): declare it. + +2008-03-25 David Bateman <dbateman@free.fr> + + * sparse-base-chol.h (sparse_base_chol_rep::~sparse_base_chol_rep + (void)): Only free the factorization if it was created + * spase-base-chol.cc (sparse_base_chol_rep::init): Don't attempt + to factorize a matrix that has been flagged as not being positive + definite. + +2008-03-25 John W. Eaton <jwe@octave.org> + + * lo-mappers.cc (xtrunc): New function. + * lo-mappers.h: Provide decl. + +2008-03-25 Jaroslav Hajek <highegg@gmail.com> + + * lo-specfun.cc (expm1, log1p): New functions. + * lo-specfun.h: Provide decls. + + * lo-mappers.cc (xroundb): New function. + * lo-mappers.h: Provide decl. + +2008-03-23 David Bateman <dbateman@free.fr> + + * mx-ops: Definite binary operators for mixed integer array + + array case, except for 64bit cases. + +2008-03-21 David Bateman <dbateman@free.fr> + + * oct-sparse.h: Add headers for amd.h. + +2008-03-20 David Bateman <dbateman@free.fr> + + * Array.cc (Array<T> Array<T>::diag (octave_idx_type) const): New + method for diag function. + * Array.h (Array<T> diag (octave_idx_type) const): Declare it. + * Array2.h (Array2<T> diag (octave_idx_type) const): New method. + * MArray2.h (MArray2<T> diag (octave_idx_type) const): ditto. + * ArrayN.h (ArrayN<T> diag (octave_idx_type) const): ditto. + * MArrayN.h (MArrayN<T> diag (octave_idx_type) const): ditto. + + * Sparse.cc (Sparse<T> Sparse<T>::diag (octave_idx_type) const): + New method for the diag function. + * Sparse.h (Sparse<T> diag (octave_idx_type) const): Declare it. + * MSparse.h (MSparse<T> diag (octave_idx_type) const): New method. + + * Range.cc (Matrix Range::diag (octave_idx_type) const): + New method for the diag function. + * Range.h (Matrix diag (octave_idx_type) const): Declare it. + + * CDiagMatrix.cc (ComplexColumnVector ComplexDiagMatrix::diag + (void) const): delete. + * dDiagMatrix.cc (ColumnVector DiagMatrix::diag (void) const): delete. + * dDiagMatrix.h (ColumnVector diag (void) const): ditto. + * CMatrix.cc (ComplexColumnVector ComplexMatrix::diag (void) const): + delete. + * CMatrix.h (ComplexColumnVector diag (void) const): ditto. + * dMatrix.cc (ColumnVector Matrix::diag (void) const): ditto. + * dMatrix.h (ColumnVector diag (void) const): ditto. + * boolMatrix.cc (boolMatrix boolMatrix::diag (void) const): ditto. + * boolMatrix.h (boolMatrix diag (void) const): ditto. + * chMatrix.cc (charMatrix charMatrix::diag (void) const): ditto. + * chMatrix.h (charMatrix diag (void) const): ditto. + * intNDArray.cc (intNDArray<T> intNDArray<T>::diag (void) const): ditto. + * intNDArray.h (intNDArray<T> diag (void) const): ditto. + + * CMatrix.cc (ComplexMatrix ComplexMatrix::diag (octave_idx_type) + const): Rewrite in terms of template classes function. + * CMatrix.h (ComplexMatrix diag (octave_idx_type)const ): Change + return type. + * dMatrix.cc (Matrix Matrix::diag (octave_idx_type) const): Rewrite in + terms of template classes function. + * dMatrix.h (Matrix diag (octave_idx_type) const): Change return type. + * boolMatrix.cc (boolMatrix boolMatrix::diag (octave_idx_type) const): + Rewrite in terms of template classes function. + * boolMatrix.h (boolMatrix diag (octave_idx_type) const): Change + return type. + * chMatrix.cc (charMatrix charMatrix::diag (octave_idx_type) + const): Rewrite in terms of template classes function. + + * dSparse.cc (SparseMatrix SparseMatrix::diag (octave_idx_type) const): + Rewrite in terms of template classes function. + * CSparse.cc (SparseComplexMatrix SparseComplexMatrix::diag + (octave_idx_type) const): ditto. + * boolSparse.cc (SparseBoolMatrix SparseBoolMatrix::diag + (octave_idx_type) const): ditto. + * intNDArray.cc (intNDArray<T> intNDArray<T>::diag + (octave_idx_type) const): ditto. + + * CNDArray.cc (ComplexNDArray ComplexNDArray::diag + (octave_idx_type) const): New method. + * CNDArray.h (ComplexNDArray diag (octave_idx_type) const): + Declare it. + * dNDArray.cc (NDArray NDArray::diag (octave_idx_type) const): New + method. + * dNDArray.h (NDArray diag (octave_idx_type) const): Declare it. + * chNDArray.cc (charNDArray charNDArray::diag + (octave_idx_type) const): New method. + * chNDArray.h (charNDArray diag (octave_idx_type) const): + Declare it. + + +2008-03-19 John W. Eaton <jwe@octave.org> + + * oct-env.cc (octave_env::do_base_pathname): Also handle rooted + relative filenames. + +2008-03-19 David Bateman <dbateman@free.fr> + + * Array.cc (assignN): If orig_empty allow assignment like + a(1:10,1)=1:10 + + * Sparse.h (template <class U, class F> Sparse<U> map (F fcn) + const): New template function. + * MSparse.h (template <class U, class F> MSparse<U> map (F fcn) + const): ditto. + * dSparse.cc (SparseMatrix SparseMatrix::map (dmapper) const, + SparseComplexMatrix SparseMatrix::map (cmapper) const, + SparseBoolMatrix SparseMatrix::map (bmapper) const): Rewrite in + terms of the new template functor. + * CSparse.cc (SparseMatrix SparseComplexMatrix::map (dmapper) const, + SparseComplexMatrix SparseComplexMatrix::map (cmapper) const, + SparseBoolMatrix SparseComplexMatrix::map (bmapper) const): ditto. + +2008-03-18 David Bateman <dbateman@free.fr> + + * lo-specfun.cc (Complex xlgamma (const Complex&)): New function. + * lo-specfun.h (Complex xlgamma (const Complex&)): Declare it. + * randpoison.c (xlgamma): Use lgamma if HAVE_LGAMMA is defined. + + * dNDArray.cc (NDArray::min, NDArraymax): chop trailing singletons. + * CNDarray.cc (ComplexNDArray::min, CompelxNDArray::max): ditto. + * intNDarray.cc (intNDArray<T>::min, intNDArray<T>::max): ditto. + + * Array.cc (Array<T>::index): Don't short_freeze on index with + fewer dimensions than the array only if the last dimension is empty. + +2008-03-18 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (octave_int_fit_to_range): + Use partial specialization for double values. + +2008-03-08 John W. Eaton <jwe@octave.org> + + * Sparse.cc (Sparse<T>::index, assign): Likewise. + * Array.cc (Array<T>::index1, Array<T>::index2, Array<T>::indexN, + assign2): Eliminate use of idx_vector::is_one_zero method. + * idx-vector.cc, idx-vector.h + (idx_vector::maybe_convert_one_zero_to_idx, + IDX_VEC_REP::maybe_convert_one_zero_to_idx): Delete unused function. + (IDX_VEC_REP::one_zero): Delete data member. + (IDX_VEC_REP::is_colon_equiv): Delete one_zero check. + (idx_vector::is_one_zero, IDX_VEC_REP::is_one_zero): Delete function. + +2008-03-07 John W. Eaton <jwe@octave.org> + + * idx-vector.cc (IDX_VEC_REP::idx_vector_rep (bool), + IDX_VEC_REP::idx_vector_rep (const boolNDArray&)): + Simply perform the equivalent of "find" on the bool argument here, + set one_zero to 0 and orig_dims to size of resulting index vector. + (IDX_VEC_REP::freeze): Don't call maybe_convert_one_zero_to_idx here. + +2008-03-05 Jaroslav Hajek <highegg@gmail.com> + + * dbleQR.cc (QR::insert_col, QR::insert_row, + QR::delete_col, QR::delete_row): Use 0-based indexing. + * CmplxQR.cc (ComplexQR::insert_col, ComplexQR::insert_row, + ComplexQR::delete_col, ComplexQR::delete_row): Likewise. + + * dbleCHOL.cc: Small doc and declaration fixes. + * CmplxHOL.cc: Small doc and declaration fixes. + * CmplxQR.cc (ComplexQR::ComplexQR): Adjust code to match dbleQR.cc. + * dbleQR.cc (QR::delete_row): Fix incorrect test. + * CmplxQR.cc (ComplexQR::delete_row): Fix incorrect test. + +2008-03-04 Jaroslav Hajek <highegg@gmail.com> + + * dbleCHOL.cc (CHOL::set, CHOL::update, CHOL::downdate): + New functions. + * dbleCHOL.h: Provide decls. + * CmplxCHOL.cc (ComplexCHOL::set, ComplexCHOL::update, + ComplexCHOL::downdate): New functions. + * CmplxCHOL.h: Provide decls. + + * dbleQR.cc (QR::update, QR::insert_col, QR::delete_col, + QR::insert_row, QR::delete_row): New methods. + (QR::QR (const Matrix&, const MAtrix&)): New constructor. + * dbleQR.h: Provide decls. + * CmplxQR.cc (ComplexQR::update, ComplexQR::insert_col, + ComplexQR::delete_col, ComplexQR::insert_row, + ComplexQR::delete_row): New methods. + (ComplexQR::ComplexQR (const ComplexMatrix&, const ComplexMAtrix&)): + New constructor. + * CmplxQR.h: Provide decls. + +2008-03-04 Jaroslav Hajek <highegg@gmail.com> + + * Array-C.cc, Sparse-C.cc: Include oct-sort.cc after definitions + of < and > operators. + +2008-03-03 David Bateman <dbateman@free.fr> + + * Sparse.cc (assign1, assign1): Take care of repeated index + values. Adapt the test code to check for these cases. + +2008-03-03 Jaroslav Hajek <highegg@gmail.com> + + * dMatrix.cc (Matrix::lssolve): Also avoid dgelsd lwork query bug + in lssolve method that accepts column vector argument. Correct + calculation of nlvl. + * CMatrix.cc (ComplexMatrix::lssolve): Likewise, for zgelsd. + +2008-02-27 John W. Eaton <jwe@octave.org> + + * oct-rand.cc (class octave_rand): Make it a proper singleton class. + +2008-02-26 John W. Eaton <jwe@octave.org> + + * oct-rand.cc (get_dist_id): Fix typo. + (get_dist_id, octave_rand::distribution, octave_rand::scalar, + fill_rand): Improve error messages. + + * oct-rand.cc (unknown_dist): New dist type. + (uniform_dist, normal_dist, expon_dist, poisson_dist, gamma_dist): + Use static const int instead of #define. + (get_dist_id): Default retval is unknown_dist. + + * oct-rand.cc (rand_states): New static variable. + (initialize_rand_states, get_dist_id, get_internal_state, + set_internal_state, switch_to_generator, save_state): New functions. + (octave_rand::state): New arg to specify distribution. + Save state in rand_states instead of setting internal state. + Return named state. Use set_internal_state to generate proper + state vector from user supplied state. Save and restore current + state if specified and current distributions are different. + (octave_rand::distribution (void)): Use switch rather than if/else. + (octave_rand::distribution (const std::string&)): Likewise. + (octave_rand::uniform_distribution, + octave_rand::normal_distribution, + octave_rand::exponential_distribution, + octave_rand::poisson_distribution, + octave_rand::gamma_distribution): Call switch_to_generator. + (octave_rand::state, maybe_initialize): For new_generators, just + call initialize_rand_states if not already initialized. + (octave_rand::scalar, fill_rand): Save state after generating value. + + * dMatrix.cc (Matrix::lssolve): Avoid another dgelsd lwork query bug. + * CMatrix.cc (ComplexMatrix::lssolve): Likewise, for zgelsd + +2008-02-24 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (octave_int_helper): New class. Provide + specializations for signed and unsigned types. + (octave_int<T>::operator >>=, octave_int<T>::abs, + octave_int<T>::signum): Use static functions from + octave_int_helper class. + + * oct-inttypes.h, oct-inttypes.cc (OCTAVE_US_TYPE1_CMP_OP, + OCTAVE_US_TYPE2_CMP_OP): Tag function declarations and definitions + with "template <>". + +2008-02-22 John W. Eaton <jwe@octave.org> + + * CSparse.cc, SparseCmplxLU.cc, SparsedbleLU.cc, dSparse.cc, + file-ops.cc, oct-group.cc, oct-shlib.cc, sparse-base-chol.h, + sparse-dmsolve.cc: Use 0 instead of NULL. + +2008-02-22 David Bateman <dbateman@free.fr> + + * boolSparse.cc (SparseBoolMatrix SparseBoolMatrix::diag + (octave_idx_type) const): New method. + * boolSparse.h (SparseBoolMatrix SparseBoolMatrix::diag + (octave_idx_type) const): Declare it. + + * base-lu.h (lu_type Y (void) const): New method to return + factorization of xGETRF directly. + * sparse-base-lu.cc (template <class lu_type, class lu_elt_type, + class p_type, class p_elt_type> lu_type sparse_base_lu <lu_type, + lu_elt_type, p_type, p_elt_type> :: Y (void) const): New method + to simulate the retirn of xGETRF. + * sparse-base-lu.h (template <class lu_type, class lu_elt_type, + class p_type, class p_elt_type> lu_type sparse_base_lu <lu_type, + lu_elt_type, p_type, p_elt_type> :: Y (void) const): Declare it + (SparseMatrix R (void) const): Method to return scaling factors. + * SparsedbleLU.cc: Allow two element pivot thresholding and + scaling. + * SparseCmplxLU.cc: ditto. + * SparsedbleLU.h: Modify constructors to allow passing of two + element pivoting thresholds and flag for scaling + * SparseCmplxLU.h: ditto. + + * base-lu.cc (ColumnVector P_vec (void) const): New method to + return permutations as a vector. + * base-lu.h (ColumnVector P_vec (void) const): Declare it. + * sparse-base-lu.cc (ColumnVector Pr_vec (void) const): New method + return row permutations as a vector. + (ColumnVector Pc_vec (void) const): New method return column + permutations as a vector. + * sparse-base-lu.h (ColumnVector Pr_vec (void) const): Declare it. + (ColumnVector Pc_vec (void) const): Declare it. + + * oct-spparms.cc: Add sym_tol field. + +2008-02-20 David Bateman <dbateman@free.fr> + + * SparseComplexQR.cc (ComplexMatrix + SparseComplexQR::SparseComplexQR_rep::Q + (void) const): New method. + * SparseComplexQR.h (ComplexMatrix + SparseComplexQR::SparseComplexQR_rep::Q + (void) const): Declare it. + * SparseQR.cc (Matrix SparseQR::SparseQR_rep::Q (void) const): ditto. + * SparseQR.h (Matrix SparseQR::SparseQR_rep::Q (void) const): ditto. + +2008-02-20 John W. Eaton <jwe@octave.org> + + * boolNDArray.h (boolNDArray (const Array2<bool>&)): Delete. + + * Marray2.h (MArray2 (const Array2<U>&), + MArray2 (const MArray2<U>&)): New templated constructors. + + * Array2.h (Array2 (const Array<U>&), + Array2 (const Array<U>&, const dim_vector&)): + New templated constructors. + + * CColVector.cc (ComplexColumnVector::map): Forward to MArray::map. + * dColVector.cc (ColumnVector::map): ditto. + * CRowVector.cc (ComplexRowVector::map): ditto. + * dRowVector.cc (RowVector::map): ditto. + * CMatrix.cc (ComplexMatrix::map): Forward to MArray2::map. + * dMatrix.cc (Matrix::map): ditto. + + * dNDArray.cc (NDArray::map): New functions. + * dNDArray.h: Provide decls. + + * CNDArray.cc (ComplexNDArray::map): New functions. + * CNDArray.h: Provide decls. + + * MArray2.h (MArray2<T>::map): New function. + * Array2.h (Array2<T>::map): New function. + * MArrayN.h (MArrayN<T>::map): New function. + * ArrayN.h (ArrayN<T>::map): New function. + * Array.h (Array<T>::map): New function. + + * functor.h: New file. + * Makefile.in (INCLUDES): Add it to the list. + +2008-02-20 David Bateman <dbateman@free.fr> + + * CColVector.h, CColVector.cc (ComplexColumnVector::apply): Remove. + * dColVector.h, dColVector.cc (ColumnVector::apply): ditto. + * CRowVector.h, CRowVector.cc (ComplexRowVector::apply): ditto. + * dRowVector.h, dRowVector.cc (RowVector::apply): ditto. + * CMatrix.h, CMatrix.cc (ComplexMatrix::apply): ditto. + * dMatrix.h, dMatrix.cc (Matrix::apply): ditto. + + * CSparse.cc (apply): Remove. + (map): Replace old mapper code with code taken from ov-mapepr.cc + * CSparse.h (map): Reeclare them. + (dmapper, cmapper, bmapper): typedefs for mapper functions. + * dSparse.cc (apply): Remove. + (map): Replace old mapper code with code taken from ov-mapepr.cc + * dSparse.h (map): Reeclare them. + (dmapper, cmapper, bmapper): typedefs for mapper functions. + + * intNDArray.cc (abs, signum): Two new mapper functions. + * intNDArray.h (abs, signum): Declare them. + * oct-inttypes.h (abs, signum): Mapper functions on scalar integer + base type. + +2008-02-15 John W. Eaton <jwe@octave.org> + + * dMatrix.cc (Matrix::lssolve): Check n > mnthr, not n > m when + deciding whether to calculate workspace size, with mnthr from ILAENV. + * CMatrix.cc (ComplexMatrix::lssolve): Likewise. + +2008-02-14 John W. Eaton <jwe@octave.org> + + * CColVector.cc, CMatrix.cc, CRowVector.cc, CSparse.cc, + CmplxAEPBAL.cc, CmplxCHOL.cc, CmplxHESS.cc, CmplxLU.cc, + CmplxQR.cc, CmplxQRP.cc, CmplxSCHUR.cc, CmplxSVD.cc, DASPK.cc, + DASRT.cc, DASSL.cc, EIG.cc, LSODE.cc, NLEqn.cc, Quad.cc, + dColVector.cc, dMatrix.cc, dRowVector.cc, dSparse.cc, + dbleAEPBAL.cc, dbleCHOL.cc, dbleHESS.cc, dbleLU.cc, dbleQR.cc, + dbleQRP.cc, dbleSCHUR.cc, dbleSVD.cc: + Don't check f77_exception_encountered. + +2008-02-12 John W. Eaton <jwe@octave.org> + + * CMatrix.cc: Declare xilaenv instead of ilaenv. + (ComplexMatrix::lssolve): Call xilaenv instead of ilaenv. + +2008-02-12 Jason Riedy <ejr@cs.berkeley.edu> + + * Array.cc (ascending_compare, descending_compare): Remove + non-standard extern in the instantiations. + + * oct-sort.cc: Include <cstring> and sprinkle with std:: as needed. + + * dMatrix.cc (ILAENV): Declare LAPACK Fortran function. + (Matrix::lssolve): Use ILAENV to query smlsiz. And add an ugly + workaround for DGELSD's broken lwork query. The formula is from + LAPACK's dgelsd.f source and allocates enough workspace to use an + efficient algorithm in the short-and-fat case (n > m). + * CMatrix.cc (ILAENV): Declare LAPACK Fortran function. + (ComplexMatrix::lssolve): Use ILAENV to query smlsiz. And add an + ugly workaround for DGELSD's broken lwork query, as with double. + +2008-02-12 John W. Eaton <jwe@octave.org> + + * sparse-sort.cc: Don't explicitly instantiate + class octave_sort<octave_idx_vector_sort *>, + class octave_sort<octave_idx_type>, or + class octave_sort<octave_sparse_sort_idxl *>. + + * Sparse.h (INSTANTIATE_SPARSE_SORT): Delete macro. + * Sparse-C.cc, Sparse-b.cc, Sparse-d.cc: Don't use it. + + * Range.cc (Range::sort_internal): Avoid shadow warning from gcc. + +2008-02-11 John W. Eaton <jwe@octave.org> + + * Makefile.in ($(MAKEDEPS)): Skip dependencies if omit_deps is defined. + +2008-02-08 John W. Eaton <jwe@octave.org> + + * oct-sort.h (enum sortmode): Eliminate UNDEFINED. Change all + uses of UNDEFINED to ASCENDING. + +2008-02-07 John W. Eaton <jwe@octave.org> + + * Range.cc (Range::sort_internal): Rename from sort. New arg, + ASCENDING, with default value of true. + (Range::sort_internal (Array<octave_idx_type>&, bool)): New function. + (Range::sort (octave_idx_type, sortmode) const): New function. + (Range::sort (Array<octave_idx_type>&, octave_idx_type, sortmode) + const): New function. + * Range.h: Fix/provide decls. + + * intNDArray.cc (intNDArray<T>::any (int)): Use != for comparison. + +2008-02-06 John W. Eaton <jwe@octave.org> + + * Makefile.in ($(OPTS_INC)): Use mv instead of move-if-change. + (stamp-prereq): Eliminate. + (clean): Don't remove stamp-prereq. + (libraries): Don't depend on stamp-prereq. + (PREREQ): New macro. + ($(MAKEDEPS)): Depend on $(PREREQ), not stamp-prereq. + (distclean): Simplify with $(PREREQ). + (OPT_BASE): New macro. + (OPT_IN): Rename from OPTS_INC_DATA. Define in terms of OPT_BASE. + (OPT_INC): Rename from OPTS_INC. Define in terms of OPT_BASE. + +2008-02-05 John W. Eaton <jwe@octave.org> + + * Makefile.in: Unconditionally include $(MAKEDEPS). + Mark $(MAKEDEPS) as .PHONY targets if omit_deps is true. + +2008-02-03 Michael Goffioul <michael.goffioul@gmail.com> + + * Array.cc (ascending_compare, descending_compare, + Array<T>::sort): Declare explicit specialization for T=double to + avoid symbol duplication error at link time. + * Array-d.cc (ascending_compare, descending_compare): Declare and + define as nonmember functions, not member functions of Array<T>. + +2008-02-03 John W. Eaton <jwe@octave.org> + + * Array-i.cc: Also instantiate Arrays for long long type if it exists. + +2008-02-03 Michael Goffioul <michael.goffioul@gmail.com> + + * Array.cc: Don't include Range.h. + +2008-01-31 David Bateman <dbateman@free.fr> + + * oct-sort.cc: conversion of int to octave_idx_type where needed + for 64-bit builds. + (IFLT): Allow IFLT macro to be overridden. + * oct-sort.h: conversion of int to octave_idx_type where needed + for 64-bit builds. + (enum sortmode): Type of sort to perform. + (vec_index): Simple class to aid in indexed sorts. + + * Array.h ( Array<T> sort (octave_idx_type, sortmode) const, + Array<T> sort (Array<octave_idx_type> &, octave_idx_type, + sortmode) const): Array sorting methods. + (INSTANTIATE_ARRAY_SORT, NO_INSTANTIATE_ARRAY_SORT): Macros to + instantiate the array sorting methods. + * Array.cc (ascending_compare, descending_compare): New template + functions for generic sort comparison. + ( Array<T> Array<T>::sort (octave_idx_type, sortmode) const, + Array<T> Array<T>::sort (Array<octave_idx_type> &, octave_idx_type, + sortmode) const): Array sorting functions based of octave_sort + class. + * Array-C.cc: Instantiate the complex array sort methods. + (IFLT): New macro to override the one in the + octave_sort class to avoid need for Complex < and > operators. + (static double xabs (const Complex&)): Complex abs function + avoiding std::abs(Inf) returning NaN with some compilers. + (ascending_compare, descending compare): override template + functions for complex comparison. + * Array-d.cc: Instantiate the double array sort methods. + (Array<double> Array<double>::sort (octave_idx_type, + sortmode) const, Array<double> Array<double>::sort + (Array<octave_idx_type> &, octave_idx_type, sortmode) const): + Array sorting functions based of octave_sort using uint64 sorting + on IEE754 doubles, for speed and correct sorting of Inf and NaN. + (ascending_compare, descending compare): override template + functions for double and uint64 comparison. + * Array-b.cc, Array-ch.cc, Array-i.cc, Array-s.cc, Array-str.cc: + Instantiate the array sort methods. + * Array-idx-vec.cc: Null instantiation of array sort methods. + * Array2.h, Array3.h, ArrayN.h (sort): 2, 3 and N-dimensional + versions of the sort methods based on Array<T>::sort. + + * CSparse.cc, dSparse.cc: Remove inclusion of octa-sort.h. + * Sparse.h ( Sparse<T> sort (octave_idx_type, sortmode) const, + Sparse<T> sort (Array<octave_idx_type> &, octave_idx_type, + sortmode) const): Sparse sorting methods. + (INSTANTIATE_ARRAY_SORT): Macro to instantiate the sparse sorting + methods. + * Sparse.cc: replace sort with lsort throughout to avoid shadowing + of new sort method. + (sparse_ascending_compare, sparse_descending_compare): New template + functions for generic sort comparison. + ( Sparse<T> Sparse<T>::sort (octave_idx_type, sortmode) const, + Sparse<T> Sparse<T>::sort (Sparse<octave_idx_type> &, octave_idx_type, + sortmode) const): Sparse sorting functions based of octave_sort + class. + * Sparse-C.cc: Instantiate the complex sparse sort methods. + (IFLT): New macro to override the one in the + octave_sort class to avoid need for Complex < and > operators. + (static double xabs (const Complex&)): Complex abs function + avoiding std::abs(Inf) returning NaN with some compilers. + (sparse_ascending_compare, sparse_descending compare): override + template functions for complex comparison. + * Sparse-d.cc: Instantiate the cdouble sparse sort methods. + (sparse_ascending_compare, sparse_descending compare): override + template functions for double comparison. + * Array-b.cc: Instantiate the sparse sort methods. + +2008-01-25 Jaroslav Hajek <highegg@gmail.com> + + * idx-vector.h (idx_vector::idx_vector_rep::range_base, + idx_vector::idx_vector_rep::range_step, + idx_vector::idx_vector_rep::range_step): New data members. + (idx_vector::idx_vector_rep::idx_vector_rep): Initialize them. + * idx-vector.cc (IDX_VEC_REP::sort, IDX_VEC_REP::is_colon_equiv, + IDX_VEC_REP::init_state, IDX_VEC_REP::operator =, + IDX_VECTOR_REP::idx_vector_rep): Handle range. + +2008-01-18 Marco Caliari <marco.caliari@univr.it> + + * dMatrix.cc (Matrix::expm): Correctly perform reverse permutation. + * CMatrix.cc (ComplexMatrix::expm): Likewise. + +2008-01-22 Michael Goffioul <michael.goffioul@gmail.com> + + * oct-time.cc (octave_base_tim::init): Validate pointer argument; + this fixes the "localtime(-1)" crash under Windows. + +2008-01-18 John W. Eaton <jwe@octave.org> + + * dMatrix.cc (solve_singularity_warning): New function. + (Matrix::expm): Pass pointer to solve_singularity_warning to + Matrix::solve method. Exit early if Matrix::solve fails. + Limit sqpow value to avoid overflowing scale factor. + * CMatrix.cc (solve_singularity_warning): New function. + (ComplexMatrix::expm): Pass pointer to solve_singularity_warning to + ComplexMatrix::solve method. Exit early if ComplexMatrix::solve fails. + Limit sqpow value to avoid overflowing scale factor. + From Marco Caliari <marco.caliari@univr.it>. + +2008-01-10 Kim Hansen <kimhanse@gmail.com> + + * Sparse.cc: New tests for slicing of sparse matrices. + +2008-01-07 David Bateman <dbateman@free.fr> + + * Sparse-op-defs.h (SPARSE_ANY_ALL_OP_ROW_CODE): Don't break from + loop if this test succeeds. + +2008-01-03 David Bateman <dbateman@free.fr> + + * MSparse.cc (SPARSE_A2A2_OP): If first arg is scalar zero, then + need unary operator on remaining argument + * Sparse-op-defs.h (SPARSE_SMSM_BIN_OP_1): ditto. + +2007-12-21 John W. Eaton <jwe@octave.org> + + Version 3.0.0 released. + +2007-12-18 David Bateman <dbateman@free.fr> + + * Sparse.cc (template <class T> Sparse<T> Sparse<T>::index + (idx_vector&, int) const): Fix case indexing of non zero scalar + stored as a sparse matrix. + (template <class T> Sparse<T> Sparse<T>::index (idx_vector&, + idx_vector&, int) const): For the non permutated indexing case, + fix link list calculation and use. + +2007-12-17 John W. Eaton <jwe@octave.org> + + * Array.cc (Array<T>::indexN): Correctly handle scalar indexed by + N-d array. + +2007-12-17 David Bateman <dbateman@free.fr> + + * Sparse-op-defs.h (SPARSE_ANY_ALL_OP_ROW_CODE): Use ridx for row + index. + +2007-12-11 John W. Eaton <jwe@octave.org> + + * Sparse.cc (Sparse<T>::index (idx_vector&, int) const): + If indexing scalar with empty matrix, return empty array with same + size as index. + +2007-12-10 John W. Eaton <jwe@octave.org> + + * NLEqn.h (NLEqn::fval): New data member. Adjust constructors + and assignment operator. + (NLEqn::function_value): New function. + * NLEqn.cc (NLEqn::solve): If solution is successful, compute + function value. + + * file-ops.cc (file_ops::concat): New function. + * file-ops.h: Provide decl. + +2007-12-07 John W. Eaton <jwe@octave.org> + + * oct-time.cc (octave_base_tm::init): Only assign t->tm_zone if it + is not 0. + +2007-12-07 David Bateman <dbateman@free.fr> + + * Sparse-op-defs.h (SPARSE_SMS_CMP_OP, SPARSE_SMS_BOOL_OP, + SPARSE_SSM_CMP_OP, SPARSE_SSM_BOOL_OP, SPARSE_SMSM_CMP_OP, + SPARSE_SMSM_BOOL_OP, SPARSE_BASE_REDUCTION_OP): Use sparse + indexing where possible rather than the elem method. + (SPARSE_REDUCTION_OP_ROW_EXPR, SPARSE_REDUCTION_OP_COL_EXPR, + SPARSE_ANY_ALL_OP_ROW_CODE, SPARSE_ANY_ALL_OP_COL_CODE): + Replace for new version of SPARSE_BASE_REDUCTION_OP. + (SPARSE_ALL_OP): Specialize the initial value, and only treat dim + = 0 directly. + * CSparse.cc (SparseComplexMatrix SparseComplexMatrix::sumsq (int) + const): Replace ROW_EXPR and COL_EXPR functions for new version of + SPARSE_BASE_REDUCTION_OP. + (SparseComplexMatrix SparseComplexMatrix::prod (int) const): + Specialize the initial value, and only treat dim = 0 directly. + * dSparse.cc (SparseMatrix SparseMatrix::sumsq (int) const): + ditto. + (SparseMatrix SparseMatrix::prod (int) const): ditto. + +2007-12-06 John W. Eaton <jwe@octave.org> + + * CMatrix.cc (ComplexMatrix::expm): Update pointers to internal + data for npp and dpp after assignments. + * dMatrix.cc (Matrix::expm): Use same method as ComplexMatrix::expm. + +2007-12-04 John W. Eaton <jwe@octave.org> + + * Sparse.cc (assign (Sparse<LT>&, const Sparse<RT>&)): + Do nothing if one index is empty. + +2007-12-04 David Bateman <dbateman@free.fr> + + * Sparse.cc (assign (Sparse<LT>&, const Sparse<RT>&)): + Resize matrix as well if one dimension of lhs is zero and the rhs + index exceeds the lhs index. + * Sparse.cc (assign1 (Sparse<LT>&, const Sparse<RT>&)): + Don't resize to a smaller matrix for empty matrices with a max rhs + index smaller than the non zero lhs index. + +2007-12-04 Michael Goffioul <michael.goffioul@gmail.com> + + * Array-util.h: Tag permute_vector_compare with OCTAVE_API. + +2007-12-03 Moritz Borgmann <octave@moriborg.de> + + * Array-util.cc (permute_vector_compare): Move here from Array.cc. + * Array-util.h (permute_vector, permute_vector_compare): Provide decls. + * Array.cc (permute_vector, permute_vector_compare): Delete. + +2007-12-03 David Bateman <dbateman@free.fr> + + * Sparse.cc (template <class LT, class RT> int assign + (Sparse<LT>&, const Sparse<RT>&)): Only set return matrix size to + rhs values if both no. rows and columns are zero. + +2007-11-30 John W. Eaton <jwe@octave.org> + + * oct-sort.cc, oct-sort.h: Style fixes. + + * lo-math.h: New file. + * Makefile.in (INCLUDES): Add it to the list. + * liboctave/Array2.h, liboctave/ArrayN.h, liboctave/CmplxDET.cc, + liboctave/DASPK.cc, liboctave/DASPK.h, liboctave/DASRT.cc, + liboctave/DASRT.h, liboctave/DASSL.cc, liboctave/DASSL.h, + liboctave/LSODE.cc, liboctave/LSODE.h, liboctave/NLEqn.h, + liboctave/Quad.h, liboctave/Range.cc, liboctave/dbleDET.cc, + liboctave/lo-cieee.c, liboctave/lo-ieee.cc, + liboctave/lo-mappers.cc, liboctave/oct-time.cc, + liboctave/oct-time.h, liboctave/randgamma.c, + liboctave/randmtzig.c, liboctave/randpoisson.c: Include lo-math.h + instead of cmath or math.h. + * lo-mappers.h: Don't include sunmath.h here. + +2007-11-26 John W. Eaton <jwe@octave.org> + + * idx-vector.h (idx_vector::idx_vector_rep (const intNDArray<U>&)): + Eliminate unnecessary second arg from call to tree_to_mat_idx. + + * oct-inttypes.h (operator bool, operator char): Delete. + (bool_value, char_value, double_value, float_value): New functions. + +2007-11-26 David Bateman <dbateman@free.fr> + + * intNDArray.cc (template <class T> intNDArray<T> + intNDArray<T>::max (int) const, template <class T> intNDArray<T> + intNDArray<T>::max (ArrayN<octave_idx_type>&, int) const, + template <class T> intNDArray<T> intNDArray<T>::min (int) const, + template <class T> intNDArray<T> intNDArray<T>::min + (ArrayN<octave_idx_type>&, int) const): New methods for integer + classes. + * intNDArray.h (class intNDArray): Add min/max methods + * mx-op-defs.h (MIXMAX_DECLS, MINMAX_FCNS, SND_MINMAX_FCN, + NDS_MINMAX_FCN, NDND_MINMAX_FCN): New macro for instantiation of + min/max functions. + * int8NDArray.h, int16NDArray.h, int32NDArray.h, int64NDArray.h, + uint8NDArray.h, uint16NDArray.h, uint32NDArray.h, uint64NDArray.h + (MINMAX_DECLS(T)): Declare the min/max functions for integer + types. + * int8NDArray.cc, int16NDArray.cc, int32NDArray.cc, int64NDArray.cc, + uint8NDArray.cc, uint16NDArray.cc, uint32NDArray.cc, uint64NDArray.cc + (MINMAX_FCNS(T)): Instantiate the min/max functions for integer + types. + + * Arrayc.cc (Array<T>::index (idx_vector&, idx_vector&, int, + const T& rfv) const): If ndims != 2 call ND version of index. + +2007-11-14 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (opeator T (void) const): New conversion operator. + + * lo-specfun.cc (zbesi): When alpha is negative, don't limit + correction to half-integer values. From Eric Chassande-Mottin + <echassandemottin@gmail.com>. + +2007-11-07 Michael Goffioul <michael.goffioul@gmail.com> + + * dMatrix.cc, CMatrix.cc: Help MSVC compiler to resolve + ambiguities related to math functions (in C++ mode). + +2007-11-06 David Bateman <dbateman@free.fr> + + * intNDArray.cc (intNDArray<T> intNDArray<T>::sum (int) const): + New method. + * intNDarray.h (intNDArray sum (int) const): Declare it. + * boolNDArray.cc (boolNDArray boolNDArray::sum (int) const): + New method. + * boolNDarray.cc (boolNDArray sum (int) const): Declare it. + * MArray-def.h (MARRAY_NORM_BODY): Scale frobenius norm by infinity + norm to avoid issues of over- and underflow. From Rolf Fabian + <Rolf.Fabian@gmx.de>. + +2007-10-30 David Bateman <dbateman@free.fr> + + * DASRT-opts.in, LSODE-opts.in: Doc fixes for small book format. + +2007-10-30 John W. Eaton <jwe@octave.org> + + * CMatrix.cc (lssolve): Compute size of rwork and iwork arrays. + * dMatrix.cc (lssolve): Compute size of iwork array. + +2007-10-29 David Bateman <dbateman@free.fr> + + * CMatrix.h (lssolve (const Matrix&, octave_idx_type&, + octave_idx_type&, double&) const, lssolve (const ComplexMatrix&, + octave_idx_type&, octave_idx_type&, double&) const, lssolve + (const ColumnVector&, octave_idx_type&, octave_idx_type&, + double& rcond) const, lssolve (const ComplexColumnVector&, + octave_idx_type&, octave_idx_type&, double& rcond) const): New + declarations. + * CMatrix.cc (lssolve (const Matrix&, octave_idx_type&, + octave_idx_type&, double&) const, lssolve (const ComplexMatrix&, + octave_idx_type&, octave_idx_type&, double&) const, lssolve + (const ColumnVector&, octave_idx_type&, octave_idx_type&, + double& rcond) const, lssolve (const ComplexColumnVector&, + octave_idx_type&, octave_idx_type&, double& rcond) const): New + methods. + (lssolve (const Matrix&, octave_idx_type&, octave_idx_type&, + double&) const, lssolve (const ComplexMatrix&, octave_idx_type&, + octave_idx_type&, double&) const): Also return rcond from the + singular values returned by XGELSD. + * dMatrix.h (lssolve (const Matrix&, octave_idx_type&, + octave_idx_type&, double&) const, lssolve (const ComplexMatrix&, + octave_idx_type&, octave_idx_type&, double&) const, lssolve + (const ColumnVector&, octave_idx_type&, octave_idx_type&, + double& rcond) const, lssolve (const ComplexColumnVector&, + octave_idx_type&, octave_idx_type&, double& rcond) const): New + declarations. + * dMatrix.cc (lssolve (const Matrix&, octave_idx_type&, + octave_idx_type&, double&) const, lssolve (const ComplexMatrix&, + octave_idx_type&, octave_idx_type&, double&) const, lssolve + (const ColumnVector&, octave_idx_type&, octave_idx_type&, + double& rcond) const, lssolve (const ComplexColumnVector&, + octave_idx_type&, octave_idx_type&, double& rcond) const): New + methods. + (lssolve (const Matrix&, octave_idx_type&, octave_idx_type&, + double&) const, lssolve (const ComplexMatrix&, octave_idx_type&, + octave_idx_type&, double&) const): Also return rcond from the + singular values returned by XGELSD. + +2007-10-26 David Bateman <dbateman@free.fr> + + * dMatrix.cc (Matrix::lssolve): Use xGELSD for rank deficient + matrices to avoid reliability issues with xGELSY. + * CMatrix.cc (ComplexMatrix::lssolve): Likewise. + +2007-10-25 John W. Eaton <jwe@octave.org> + + * oct-time.cc (octave_gmtime::init, octave_localtime::init): + Call unix_time on arg instead of relying on conversion operator. + + * oct-time.h (octave_time::double_value): New function. + (octave_time::operator double () const): Delete. + (octave_time::operator time_t () const): Delete. + +2007-10-24 John W. Eaton <jwe@octave.org> + + * strptime.c: Also compile if OCTAVE_HAVE_BROKEN_STRPTIME is defined. + +2007-10-23 John W. Eaton <jwe@octave.org> + + * CRowVector.cc (operator * const ComplexRowVector&, const + ComplexColumnVector&)): Delete spurious code left from patch. + +2007-10-22 Kim Hansen <kimhanse@gmail.com> + + * chMatrix.cc, lo-utils.cc, oct-env.cc, oct-uname.cc, + sparse-sort.cc: Include <cstring>. + +2007-10-17 John W. Eaton <jwe@octave.org> + + * oct-sparse.h: Don't include metis.h. + + * dSparse.cc (SparseMatrix::fsolve): Delete special code for METIS. + * CSparse.cc (SparseComplexMatrix::fsolve): Likewise. + * sparse-base-chol.cc (sparse_base_chol<chol_type, chol_elt, + p_type>::sparse_base_chol_rep::init): Likewise. + +2007-10-16 John W. Eaton <jwe@octave.org> + + * dMatrix.cc (Matrix::inverse): Only check rcond == 0 if the + matrix is hermitian or calc_cond is true. + * CMatrix.cc (ComplexMatrix::inverse): Likewise. + +2007-10-12 John W. Eaton <jwe@octave.org> + + * Change copyright notices in all files that are part of Octave to + GPLv3 or any later version. + +2007-10-11 Brian Gough <bjg@network-theory.co.uk> + + * DASSL-opts.in, LSODE-opts.in: Spelling fixes. + +2007-10-10 Olli Saarela <Olli.Saarela@kcl.fi> + + * DASPK-opts.in, DASRT-opts.in, DASSL-opts.in: Spelling fixes. + +2007-10-10 John W. Eaton <jwe@octave.org> + + * LPsolve.h, LPsolve.cc: Delete. + * Makefile.in: Remove them from the INCLUDES and + LIBOCTAVE_CXX_SOURCES lists. + +2007-10-09 John W. Eaton <jwe@octave.org> + + * oct-time.cc (octave_strptime::init): Initialize t.tm_mon to -1 + and t.tm_year to INT_MIN before call to oct_strptime. Adjust + values to zero after call if they remain unchanged. + + * dSparse.cc (SparseMatrix::all_elements_are_zero): New function. + * dNDArray.cc (NDArray::all_elements_are_zero): New function. + +2007-10-09 David Bateman <dbateman@free.fr> + + * oct-time.cc (octave_strptime::init): Only call mktime if mday is + valud and mon and year are also filled in. + + * Array2.h (Array2<T>::Array2(const dim_vector&), + Array2<T>::Array(const dim_vector&, const T&)): Check that + dim_vector is 2 dimensional. + + * Sparse.cc (Sparse<T> Sparse<T>::index (idx_vector&, idx_vector&, + int)): Remove a for loop in the random indexing case at the + expense of maintaining a set of linked lists of indices that point + to the same column in the original matrix. + (int assign (Sparse<LT>&, Sparse<RT>)): Take a const copy of lhs + and use it on the RHS of expressions to avoid unnecessary calls to + make_unique. + +2007-10-08 David Bateman <dbateman@free.fr> + + * oct-rl-edit. (typedef rl_quoting_fcn_ptr, rl_dequoting_fcn_ptr, + rl_char_is_quoted_fcn_ptr, rl_command_fcn_ptr): New typedefs + for readline compatible functions. + (octave_rl_redisplay): Redisplay the current line of text. + (octave_rl_newline): Change interface to the same + as used by the equivalent readline function itself. + (octave_rl_filename_quoting_desired, + octave_rl_set_filename_quote_characters, + octave_rl_set_completer_quote_characters, + octave_rl_qet_quoting_function, octave_rl_qet_dequoting_function, + octave_rl_set_char_is_quoted_function): New functions to control + readline filename quoting and line acceptace. + * oct-rl-edit.c (octave_rl_newline): Change interface to the same + as used by the equivalent readline function itself. + (octave_rl_redisplay): Redisplay the current line of text. + (octave_rl_filename_quoting_desired, + octave_rl_set_filename_quote_characters, + octave_rl_set_completer_quote_characters, + octave_rl_qet_quoting_function, octave_rl_qet_dequoting_function, + octave_rl_set_char_is_quoted_function): New functions to control + readline filename quoting and line acceptace. + * cmd-edit.h (typedef quoting_fcn, typedef dequoting_fcn, + typedef char_is_quoted_fcn, user_accept_line_fcn): New typedefs + to map C++ function to readline compatible functions. + (set_filename_quote_characters): New function to set the + characters to if they appear in a filename that force the filename + to be quoted. + (set_completer_quote_characters): The characters that the readline + completion function considers as quotation characters. + (set_quoting_function, set_dequoting_function, + set_char_is_quoted_function, set_user_accept_line_function): + Functions to set the Octave functions to perform quoting and the + acceptance of a line of text by readline. + (get_quoting_function, get_dequoting_function, + get_char_is_quoted_function, get_user_accept_line_function): + Functions to get the above functions. + (accept_line): New method for the command_editor to accept a line + of text. + (file_quoting_desired): Function to set whether readline should + attempt to quote filenames. + (do_set_filename_quoting_characters, + do_set_completer_quote_characters, do_set_quoting_function, + do_set_dequoting_function, do_set_char_is_quoted_function, + do_set_user_accept_line_function, do_get_quoting_function, + do_get_dequoting_function, do_get_char_is_quoted_function, + do_get_user_accept_line_function, do_filename_quoting_desired): + Virtual functions to control the behavior of readline quoting and + acceptance of lines. + (do_accept_line): Virtual function for the accept line function. + * cmd-edit.cc (class gnu_readline do_set_filename_quote_characters, + do_completer_quote_characters, do_set_quoting_function, + do_set_dequoting_function, do_set_char_is_quoted_function, + do_set_user_accept_line_function, do_get_quoting_function, + do_get_dequoting_function, do_get_user_accept_line_function, + do_accept_line, do_filename_quoting_desired, command_quoter, + command_dequoter, command_char_is_quoted, command_accept_line): + New functions in gnu_readline class to control filename quoting + and line acceptance. + (quoting_function, dequoting_function, char_is_quoted_function, + user_accept_line_function): private variable to store functions + supplied for readline quoting and line acceptance. + (gnu_readline::gnu_readline): Also set the new function pointers + to zero. + (gnu_readline::do_newline): Adapt to new octave_rl_newline + interface. + (gnu_readeline::operate_and_get_next): Use new accept_line + function rather than newline. + (default_ommand_editor::do_accept_line): New method. + (class command_editor set_filename_quote_characters, + set_completer_quote_characters, set_quoting_function, + set_dequoting_function, set_char_is_quoted_function, + set_user_accept_line_function, get_quoting_function, + get_dequoting_function, get_user_accept_line_function, + accept_line, filename_quoting_desired): New functions checking + instance before calling virtual function. + + * CMatrix.h, dMatrix.h, boolMatrix.h, chMatrix.h, MArray2.h, + Array2.h: Add dim_vector constructors. + * charNDArray.h (charNDArray (const dim_vector&)): Add missing + const to dim_vector constructors. + * boolMatrix.cc, chMatrix.cc, intNDArray.cc (diag (void), diag + (octave_idx_type)): New methods to constructor diagonal matrices. + * boolMatrix.h, chMatrix.h, intNDArray.h (diag (void), diag + (octave_idx_type)): Declare them. + + +2007-10-06 John W. Eaton <jwe@octave.org> + + * lo-specfun.cc: (zlgamma): Delete. + (xgamma): Use C library gamma function if available. + (xlgamma): Use C library lgamma function if available. + (xlgamma) [! HAVE_LGAMMA]: Allow calculation for any value of X + other than NaN or Inf. + +2007-10-05 John W. Eaton <jwe@octave.org> + + * lo-specfun.cc (zlgamma): New function. + +2007-10-04 John W. Eaton <jwe@octave.org> + + * oct-sort.cc (octave_sort<T>::binarysort): Remove register + qualifiers on local variables. + +2007-10-04 Marco Caliari <mcaliari@math.unipd.it> + + * CMatrix.cc (ComplexMatrix::expm): Limit shift to values less + than log(realmax) to avoid issues with NaN. + +2007-10-01 John W. Eaton <jwe@octave.org> + + * oct-time.cc (octave_strptime::init): Call mktime to propertly + initialize wday and yday. + From Matthias Drochner <m.drochner@fz-juelich.de>. + + * cmd-edit.cc (command_editor::do_decode_prompt_string): Don't + insert extra '\001' when decoding \[ and \]. + +2007-09-26 David Bateman <dbateman@free.fr> + + * dMatrix.cc (lssolve): Replace the use of xGELSS with xGELSY with + is much faster and no less accurate. + * CMatrix.cc (lssolve): ditto. + +2007-09-25 David Bateman <dbateman@free.fr> + + * dMatrix.cc (utsolve, ltsolve, fsolve, lssolve): Allow + zero dimensioned matrices. + * CMatrix.cc (utsolve, ltsolve, fsolve, lssolve): ditto. + * dSparse.cc (dsolve, utsolve, ltsolve, bsolve, trisolve, fsolve): + ditto. + * CSparse.cc (dsolve, utsolve, ltsolve, bsolve, trisolve, fsolve): + ditto. + * SparseQR.cc (SparseQR::SparseQR_rep::C, qrsolve): ditto. + * SparseCmplxQR.cc (SparseComplexQR::SparseComplexQR_rep::C, + qrsolve): ditto. + * sparse-dmsolve.cc (dmsolve): ditto. + +2007-09-21 John W. Eaton <jwe@octave.org> + + * Array.cc (assign1 (Array<LT>&, const Array<RT>&, const LT&)): + Also allow resizing empty LHS if it is 1x0 or 0xN. + +2007-09-19 John W. Eaton <jwe@octave.org> + + * cmd-edit.cc (command_editor::remove_startup_hook): + Fix cut-and-paste error. + (gnu_readline::set_startup_hook): Only set hook function if new + function is different from the current one. + +2007-09-18 John W. Eaton <jwe@octave.org> + + * cmd-edit.h, cmd-edit.cc (command_editor::startup_hook_set, + command_editor::event_hook_set): New static data. + (default_command_editor::set_startup_hook, + gnu_readline::set_startup_hook, + default_command_editor::restore_startup_hook, + gnu_readline_restore_event_hook): + Rename from do_set_startup_hook and do_set_event_hook. + (gnu_readline::operate_and_get_next): Call + command_editor::add_startup_hook, not + command_editor::set_startup_hook. + (command_editor::startup_handler, command_editor::event_handler): + New functions. + (command_editor::add_startup_hook, command_editor::add_event_hook, + command_editor::remove_startup_hook, + command_editor::remove_event_hook): Rename from set_startup_hook + and restore_startup_hook. Handle hook sets here. + * cmd-edit.cc (gnu_history::do_goto_mark): + Call remove_startup_hook instead of restore_startup_hook. + +2007-09-17 John W. Eaton <jwe@octave.org> + + * lo-utils.cc (octave_read_complex, octave_read_double): Skip + leading whitespace. + +2007-09-13 John W. Eaton <jwe@octave.org> + + * lo-utils.cc (read_inf_nan_na, octave_read_double, + octave_read_complex): Use istream::get instead of >> to read + individual characters. + +2007-09-10 John W. Eaton <jwe@octave.org> + + * Array.cc (assign1): Don't call make_unique for invalid assignment. + +2007-09-10 David Bateman <dbateman@free.fr> + + * Array.h (Array<T>::make_unique): Make public so that the + ::assign functions can access it directly. + * Array.cc (Array<T>::maybe_delete_elements_1(idx_vector&), + Array<T>::maybe_delete_elements_1(idx_vector&), + Array<T>::maybe_delete_elements(idx_vector&, idx_vector&), + Array<T>::maybe_delete_elements(Array<idx_vector>&, const T&)): + Use xelem for non const RHS to avoid call to make_unique. + (int assign1 (Array<LT>&, const Array<RT>&, const LT&)): Use + xelem for LHS and call lhs.make_unique() only once. Special case + the is_colon index case and use Array<T>::xelem(octave_idx_type) + rather than Array<T>::xelem(octave_idx_type,octave_idx_type) and + bring the additional multiplication out of the inner loop. + (int assign2 (Array<LT>&, const Array<RT>&, const LT&)): ditto. + (int assignN (Array<LT>&, const Array<RT>&, const LT&)): ditto. + * idx-vector.h (idx_vector::idx_vector_rep::idx_vector_rep + (const Range& r)): Don't use init_state() method but special case + as with a Range can avoid exhaustive search. + +2007-09-07 John W. Eaton <jwe@octave.org> + + * Array.cc (Array<T>::fortran_vec): Call make_unique instead of + manipulating rep directly. + + * Array.h (idx, idx_count): Declare mutable. + (Array<T>::set_index, Array<T>::clear_index, Array<T>::value): + Now const. + +2007-09-06 David Bateman <dbateman@free.fr> + + * Array-util.cc (increment_index): dimensions can have singleton + trailing dimensions. + * Array.h (range_error, xelem, checkelem, elem, operator ()): + Modify use of Array<int> to Array<octave_idx_type> and adjust + where necessary. + * Array.cc (range_error): ditto. + * MArrayN.h (permute, ipermute): ditto. + * ArrayN.h (permute, ipermute): ditto. + * so-array.cc (streamoff_array::compute_index): ditto. + * so-array.h (compute_index): ditto. + * CMattrix.cc (ComplexMatrix::exmpm): ditto. + +2007-08-29 David Bateman <dbateman@free.fr> + + * dSparse.cc (SparseMatrix SparseMatrix::inverse (MatrixType &, + octave_idx_type&, double&, int, int)): Calculate with LU even for + matrices marked as singular. + * CSparse.cc (SparseComplexMatrix SparseComplexMatrix::inverse ( + MatrixType &, octave_idx_type&, double&, int, int)): ditto. + * dMatrix.cc (Matrix Matrix::inverse (MatrixType &, octave_idx_type&, + double&, int, int)): ditto. If rcond==0 force matrix of infinities. + * dMatrix.cc (ComplexMatrix ComplexMatrix::inverse (MatrixType &, + octave_idx_type&, double&, int, int)): ditto. + +2007-08-27 John W. Eaton <jwe@octave.org> + + * oct-env.cc (octave_env::rooted_relative_pathname, + octave_env::do_rooted_relative_pathname): New functions. + * oct-env.h: Provide decls. + +2007-08-24 David Bateman <dbateman@free.fr> + + * MSparse.h (MSparse<T>& insert (const Sparse<T>&, + const Array<octave_idx_type>&)): New method. + (MSparse (const dim_vector&, octave_idx_type)): Ditto. + * dSparse.h (SparseMatrix& SparseMatrix::insert (const + SparseMatrix&, const Array<octave_idx_type>&)): ditto. + (SparseMatrix (const dim_vector&, octave_idx_type)): ditto. + * dSparse.cc (SparseMatrix& SparseMatrix::insert (const + SparseMatrix&, const Array<octave_idx_type>&)): ditto. + * boolSparse.h (SparseBoolMatrix& SparseBoolMatrix::insert (const + SparseBoolMatrix&, const Array<octave_idx_type>&)): ditto. + * boolSparse.cc (SparseBoolMatrix& SparseBoolMatrix::insert (const + SparseBoolMatrix&, const Array<octave_idx_type>&)): ditto. + * CSparse.h (SparseComplexMatrix& SparseComplexMatrix::insert (const + SparseMatrix&, const Array<octave_idx_type>&), + SparseComplexMatrix& SparseComplexMatrix::insert (const + SparseComplexMatrix&, const Array<octave_idx_type>&)): ditto. + (SparseComplexMatrix (const dim_vector&, octave_idx_type)): ditto. + * CSparse.cc (SparseComplexMatrix& SparseComplexMatrix::insert (const + SparseMatrix&, const Array<octave_idx_type>&), + SparseComplexMatrix& SparseComplexMatrix::insert (const + SparseComplexMatrix&, const Array<octave_idx_type>&)): ditto. + +2007-08-19 David Bateman <dbateman@free.fr> + + * Sparse.cc (Sparse<T>::permute): Avoid shadowing warning. + +2007-08-14 John W. Eaton <jwe@octave.org> + + * Sparse.cc (Sparse<T>::permute): permutation vector is zero based. + Simplify. + (Sparse<T>::reshape): Warn about reshaping to N-d array. + +2007-08-10 Michael Goffioul <michael.goffioul@gmail.com> + + * file-stat.cc (file_stat::update_internal) [__WIN32__]: + Remove trailing dir separator when stat'ing directory except for + root directory. + +2007-07-25 David Bateman <dbateman@free.fr> + + * Makefile.in: Adjust DISTFILES to allow out of tree "make dist" + to work. + +2007-06-04 David Bateman <dbateman@free.fr> + + * oct-inttypes.h (octave_int<T>& operator <<= (const T2&), + octave_int<T>& operator >>= (const T2&)): Make shift operators + perform a twos complement arithmetic shift for both signed and + unsigned integers regardless of compiler implementations. + +2007-06-13 Michael Goffioul <michael.goffioul@swing.be> + + * SparseCmplxQR.cc (OCTAVE_C99_ZERO): For CXSparse 2.2 and greater + use cs_complex_t(0,0) for the complex zero. + + * MArray-ch.cc, MArray-d.cc, MArray-i.cc, MArray-s.cc: + Sprinkle class instantiations with OCTAVE_API as needed. + + * Array.h (INSTANTIATE_ARRAY_ASSIGN, INSTANTIATE_ARRAY, + INSTANTIATE_ARRAY_AND_ASSIGN): New arg, API. Change all uses. + * MArray-defs.h (MARRAY_OP_ASSIGN_DECL, MARRAY_OP_ASSIGN_DECLS, + MARRAY_OP_ASSIGN_FWD_DECLS, MARRAY_OP_ASSIGN_FRIENDS, + MARRAY_OP_ASSIGN_DEFS, MARRAY_UNOP, MARRAY_UNOP_DECLS, + MARRAY_UNOP_FWD_DECLS, MARRAY_UNOP_FRIENDS, MARRAY_UNOP_DEFS, + MARRAY_BINOP_DECL, MARRAY_BINOP_DECLS, MARRAY_AA_BINOP_DECLS, + MDIAGARRAY2_DAS_BINOP_DECLS, MDIAGARRAY2_SDA_BINOP_DECLS, + MDIAGARRAY2_DADA_BINOP_DECLS, MARRAY_BINOP_FWD_DECLS, + MDIAGARRAY2_BINOP_FWD_DECLS, MARRAY_BINOP_FRIENDS, + MDIAGARRAY2_BINOP_FRIENDS, MARRAY_BINOP_DEFS, + MDIAGARRAY2_BINOP_DEFS, MARRAY_OPS_FORWARD_DECLS, + MDIAGARRAY2_OPS_FORWARD_DECLS, MARRAY_OPS_FRIEND_DECLS, + MDIAGARRAY2_OPS_FRIEND_DECLS, INSTANTIATE_MARRAY_FRIENDS, + INSTANTIATE_MARRAY2_FRIENDS, INSTANTIATE_MARRAYN_FRIENDS, + INSTANTIATE_MDIAGARRAY2_FRIENDS): Ditto. + * MSparse-defs.h (SPARSE_OP_ASSIGN_DECL, SPARSE_OP_ASSIGN_DECLS, + SPARSE_OP_ASSIGN_FWD_DECLS, SPARSE_OP_ASSIGN_FRIENDS, + SPARSE_OP_ASSIGN_DEFS, SPARSE_UNOP, SPARSE_UNOP_DECLS, + SPARSE_UNOP_FWD_DECLS, SPARSE_UNOP_FRIENDS, SPARSE_UNOP_DEFS, + SPARSE_BINOP_DECL, SPARSE_BINOP_DECLS, SPARSE_AA_BINOP_DECLS, + SPARSE_BINOP_FWD_DECLS, SPARSE_BINOP_FRIENDS, SPARSE_BINOP_DEFS, + SPARSE_OPS_FORWARD_DECLS, SPARSE_OPS_FRIEND_DECLS, + INSTANTIATE_SPARSE_FRIENDS): Ditto. + * Sparse-op-defs.h (SPARSE_BIN_OP_DECL, SPARSE_CMP_OP_DECL, + SPARSE_BOOL_OP_DECL, SPARSE_SMS_BIN_OP_DECLS, + SPARSE_SMS_CMP_OP_DECLS, SPARSE_SMS_EQNE_OP_DECLS, + SPARSE_SMS_BOOL_OP_DECLS, SPARSE_SSM_BIN_OP_DECLS, + SPARSE_SMS_OP_DECLS, SPARSE_SSM_BIN_OP_DECLS, + SPARSE_SSM_CMP_OP_DECLS, SPARSE_SSM_EQNE_OP_DECLS, + SPARSE_SSM_BOOL_OP_DECLS, SPARSE_SSM_OP_DECLS, + SPARSE_SMSM_BIN_OP_DECLS, SPARSE_SMSM_CMP_OP_DECLS, + SPARSE_SMSM_EQNE_OP_DECLS, SPARSE_SMSM_BOOL_OP_DECLS, + SPARSE_SMSM_OP_DECLS, SPARSE_MSM_BIN_OP_DECLS, + SPARSE_MSM_CMP_OP_DECLS, SPARSE_MSM_EQNE_OP_DECLS, + SPARSE_MSM_BOOL_OP_DECLS, SPARSE_MSM_OP_DECLS, + SPARSE_SMM_BIN_OP_DECLS, SPARSE_SMM_CMP_OP_DECLS, + SPARSE_SMM_EQNE_OP_DECLS, SPARSE_SMM_BOOL_OP_DECLS, + SPARSE_SMM_OP_DECLS): Ditto. + * Sparse.h (INSTANTIATE_SPARSE_ASSIGN, INSTANTIATE_SPARSE, + INSTANTIATE_SPARSE_AND_ASSIGN): Ditto. + * mx-op-defs.h (BIN_OP_DECL, CMP_OP_DECL, NDCMP_OP_DECL, + BOOL_OP_DECL, NDBOOL_OP_DECL, VS_BIN_OP_DECLS, VS_OP_DECLS, + SV_BIN_OP_DECLS, SV_OP_DECLS, VV_BIN_OP_DECLS, VV_OP_DECLS, + MS_BIN_OP_DECLS, MS_CMP_OP_DECLS, MS_BOOL_OP_DECLS, MS_OP_DECLS, + SM_BIN_OP_DECLS, SM_CMP_OP_DECLS, SM_BOOL_OP_DECLS, SM_OP_DECLS, + MM_BIN_OP_DECLS, MM_CMP_OP_DECLS, MM_BOOL_OP_DECLS, MM_OP_DECLS, + NDS_BIN_OP_DECLS, NDS_CMP_OP_DECLS, NDS_BOOL_OP_DECLS, + NDS_OP_DECLS, SND_BIN_OP_DECLS, SND_CMP_OP_DECLS, + SND_BOOL_OP_DECLS, SND_OP_DECLS, NDND_BIN_OP_DECLS, + NDND_CMP_OP_DECLS, NDND_BOOL_OP_DECLS, NDND_OP_DECLS, + SDM_BIN_OP_DECLS, SDM_OP_DECLS, DMS_BIN_OP_DECLS, DMS_OP_DECLS, + MDM_BIN_OP_DECLS, MDM_OP_DECLS, DMM_BIN_OP_DECLS, DMM_OP_DECLS, + DMDM_BIN_OP_DECLS, DMDM_OP_DECLS): Ditto. + +2007-06-12 John W. Eaton <jwe@octave.org> + + * dMatrix.cc (Matrix::expm): Special case for scalar arg. + * CMatrix.cc (ComplexMatrix::expm): Likewise. + +2007-06-06 Michael Goffioul <michael.goffioul@swing.be> + + * file-ops.cc (tilde_find_suffix, isolate_tilde_prefix, + tilde_expand_word): Use file_ops::is_dir_sep instead of comparing + with file_ops::dir_sep_char. + + * MArray-C.cc: Sprinkle with OCTINTERP_API as needed. + +2007-06-04 David Bateman <dbateman@free.fr> + + * file-ops.cc: Typo. + + * Sparse.cc (Sparse<T> Sparse<T>::reshape): If length of new + dimensions is greater than 2, collapse to 2-D. + +2007-06-02 David Bateman <dbateman@free.fr> + + * SparseCmplxQR.cc: Changes to support CXSparse 2.2.0. + +2007-05-31 John W. Eaton <jwe@octave.org> + + * Array.cc (Array::get_size): Throw std::bad_alloc exception if + the computed size is too large for the size of Octave's index type. + +2007-05-23 John W. Eaton <jwe@octave.org> + + * oct-sparse.h: Don't surround included files with extern "C" { ... }. + +2007-05-16 David Bateman <dbateman@free.fr> + + * dRowVector.cc (linspace): Return second argument if fewer than + two values are requested. + * CRowVector.cc (linspace): Likewise. + +2007-04-27 John W. Eaton <jwe@octave.org> + + * lo-mappers.cc (signum (const Complex&)): Special case for (0, 0). + +2007-04-25 John W. Eaton <jwe@octave.org> + + * oct-fftw.h (octave_fftw): Tag with OCTAVE_API. + +2007-04-20 John W. Eaton <jwe@octave.org> + + * Array.cc (assign1): For x(:) = RHS, require rhs_len == lhs_len, + not rhs_len == 1. + +2007-04-18 Michael Goffioul <michael.goffioul@swing.be> + + * oct-md5.h (oct_md5, oct_md5_file): Tag decls with OCTAVE_API. + +2007-04-13 John W. Eaton <jwe@octave.org> + + * Array.cc (Array<T>::maybe_delete_elements_2): Don't return early + for empty matrix. Only check for colon index equivalence if not empty. + +2007-04-10 John W. Eaton <jwe@octave.org> + + * SparseCmplxQR.cc + (SparseComplexQR::SparseComplexQR_rep::SparseComplexQR_rep): + Move GCC_ATTR_UNUSED before the parameter decl. + From Luis Ortiz <lortiz@interactivesupercomputing.com>. + +2007-04-06 John W. Eaton <jwe@octave.org> + + * MArray-defs.h (MARRAY_NORM_BODY): New macro. + * MArray.h (MArray<T>::norm): New function. + * MArray.cc: Provide decl. + * MArray-d.cc (MArray<double>::norm): Define double specialization. + * MArray-C.cc (MArray<Complex>::norm): Define Complex specialization. + +2007-04-04 John W. Eaton <jwe@octave.org> + + * Range.cc (Range::nelem_internal): Likewise. + * lo-utils.cc (NINT): Use numeric_limits<int> instead of INT_MAX. + (NINTbig): Use numeric_limits<octave_idx_type> instead of INT_MAX. + From Scott Pakin <pakin@lanl.gov>. + +2007-04-04 David Bateman <dbateman@free.fr> + + * dMatrix.cc (Matrix::inverse): If calc_cond is true, calculate + the condition number for positive definite matrices. + * CMatrix.cc (ComplexMatrix::inverse): Ditto. + * dbleChol.h (CHOL(const Matrix&, bool)): New arg, calc_cond. + (CHOL(const Matrix&, octave_idx_type&, bool): Ditto. + (octave_idx_type init (const Matrix&, bool)): Ditto. + (CHOL(const CHOL&)): Copy xrcond. + (CHOL& operator = (const CHOL&)): Copy xrcond. + (xrcond): New private data member. + * CmplxCHOL.h (ComplexCHOL(const ComplexMatrix&, bool)): New arg, + calc_cond. + (ComplexCHOL(const ComplexMatrix&, octave_idx_type&, bool): Ditto + (octave_idx_type init (const ComplexMatrix&, bool)): Ditto. + (ComplexCHOL(const ComplexCHOL&)): Copy xrcond. + (ComplexCHOL& operator = (const ComplexCHOL&)): Copy xrcond. + (xrcond): New private data member. + * dbleCHOL.cc (CHOL::init(const Matrix&, bool)): If calc_cond is + true, calculate the condition number with dpocon. + * CmplxCHOL.cc (ComplexCHOL::init(const ComplexMatrix&, bool)): If + calc_cond is true, calculate the condition number with zpocon. + +2007-04-03 John W. Eaton <jwe@octave.org> + + * intNDArray.cc (intNDArray): Delete spurious semicolon. + + * CMatrix.cc (ComplexMatrix::tinverse): Use Array<T> and + fortran_vec method instead of OCTAVE_LOCAL_BUFFER to avoid + "maybe clobbered by vfork" warning. + + * Sparse-op-defs.h (SPARSE_CUMSUM): Add braces to avoid ambiguous + if/else. + + * oct-spparms.h (octave_sparse_params): Define copy constructor + and destructor. + + * Array.cc (assignN): Don't resize dimension if corresponding + index is empty. + +2007-04-02 John W. Eaton <jwe@octave.org> + + * dMatrix.h (Matrix::inverse): Reinstate versions without + MatrixType argument. + * CMatrix.h (ComplexMatrix::inverse): Likewise. + +2007-03-27 John W. Eaton <jwe@octave.org> + + * Makefile.in (DISTDIRS): Delete variable. + (dist): Delete action for DISTDIRS. Use ln instead of $(LN_S). + +2007-03-26 David Bateman <dbateman@free.fr> + + * MatrixType.cc: Replace all uses of the method + octave_sparse_params::get_key ("bandden") with + octave_sparse_params::get_bandden (void). + (MatrixType::MatrixType (void)): Undo previous change but use + octave_sparse_params::get_bandden (void). + * oct-spparms.cc (get_bandden(void), do_get_bandden(void)): New + methods. + * oct-spparms.h (get_bandden(void), do_get_bandden(void)): + Declare them. + +2007-03-26 Luis Ortiz <lortiz@interactivesupercomputing.com> + David Bateman <dbateman@free.fr> + + * idx-vector.h.cc (IDX_VEC_REP::idx_vector_rep (const Range&)): + Check that all elements are ints before doing anything. Simplify + calculation of index values. + +2007-03-26 David Bateman <dbateman@free.fr> + + * Range.cc (Range::all_elements_are_ints): Improve check. + +2007-03-26 John W. Eaton <jwe@octave.org> + + * chNDArray.cc, chMatrix.cc: Also generate comparison and bool ops. + * chNDArray.h, chMatrix.h: Provide decls. + +2007-03-24 Luis Ortiz <lortiz@interactivesupercomputing.com> + + * MatrixType.cc (MatrixType::MatrixType (void)): Initialize + sp_bandden to zero for performance reasons as it's not used. + +2007-03-23 David Bateman <dbateman@free.fr> + + * oct-rand.cc (octave_rand::seed): Seed differently for big and + little endian. + +2007-03-15 John W. Eaton <jwe@octave.org> + + * lo-mappers.cc (acos): Use formula similar to what we use for asin. + From Alexander Barth <abarth@marine.usf.edu>. + +2007-03-12 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (octave_int::octave_int (double)): + New Specialization. Round arg. + (operator / (const octave_int<T1>&, const octave_int<T2>&)): + Round result before converting type. + +2007-03-07 John W. Eaton <jwe@octave.org> + + * Array.cc (assign1): Avoid resizing if there is an error. + + * dMatrix.cc, CMatrix.cc (operator *): Only check + f77_exception_encountered immediately after calls that use F77_XFCN. + + * Array.cc (assign1 (Array<LT>&, const Array<RT>&, const LT&)): + Only allow resizing empty LHS if it is 0x0. + + * Array.cc (Array<T>::maybe_delete_elements (Array<idx_vector>&, + const T&)): Handle case of more indices than dimensions. + (assign (Array<LT>&, const Array<RT>&, const LT&)): Allow more + cases to be handled by assignN. + (assignN (Array<LT>&, const Array<RT>&, const LT&)): + Special cases for 2-d array assignments for speed. + Improve handling of scalar RHS and empty indices. + +2007-03-05 David Bateman <dbateman@free.fr> + + * oct-md5.c (oct_md5_file (const std::string&)): New function. + * oct-md5.h (oct_md5_file (const std::string&)): Declare it. + +2007-03-02 John W. Eaton <jwe@octave.org> + + * str-vec.h (string_vector::empty): Return bool, not int. + +2007-03-01 David Bateman <dbateman@free.fr> + + * md5.h, md5.c: New files from libmd5-rfc sourceforge project for + an independent implementation of RFC1321. + * oct-md5.h, oct-md5: New files for treating std::string class + with MD5. + * Makefile.in (INCLUDES): Add md5.h and oct-md5.h + (LIBOCTAVE_CXX_SOURCES): Add oct-md5.cc + (LIBOCTAVE_C_SOURCES): Add md5.c + +2007-02-27 John W. Eaton <jwe@octave.org> + + * Makefile.in (uninstall): Delete files listed in + $(INCLUDES_FOR_INSTALL), instead of $(INCLUDES). + From Thomas Treichl <Thomas.Treichl@gmx.net>. + +2007-02-27 Michael Goffioul <michael.goffioul@swing.be> + + * file-ops.cc (file_ops::recursive_rmdir): + Close dir_entry object before calling rmdir. + +2007-02-26 Michael Goffioul <michael.goffioul@swing.be> + + * Makefile.in: Use $(LN_S) instead of ln or ln -s. + + * sparse-util.h (SparseCholPrint, SparseCholError): + Tag with OCTAVE_API. + +2007-02-18 David Bateman <dbateman@free.fr> + + * oct-rand.cc (do_old_initialization()): call setcgn(1) prior to + calling setall and reset to the current generator after. + +2007-02-16 John W. Eaton <jwe@octave.org> + + * oct-shlib.h (octave_shlib::relative): New data member. + (octave_shlib::mark_relative, octave_shlib::is_relative): + New functions. + +2007-02-16 Michael Goffioul <michael.goffioul@swing.be> + + * lo-sysdep.cc (octave_popen2): New function to simulate popen2 on + windows platform. + * lo-sysdep.h (octave_popen2): Declare it. + * oct-syscalls.cc (octave_syscalls::popen2): New function. + * oct-syscalls.h (octave_syscalls::popen2): Declare it. + +2007-02-14 John W. Eaton <jwe@octave.org> + + * kpse.cc (expand_elt): Omit special treatment for //. + +2007-02-06 John W. Eaton <jwe@octave.org> + + * file-ops.cc (file_ops::canonicalize_file_name) [HAVE_REALPATH]: + Don't delete value returned from realpath. + +2007-02-05 Thomas Treichl <Thomas.Treichl@gmx.net> + + * file-ops.cc (file_ops::canonicalize_file_name): + Provide implementation if realpath function is available. + +2007-01-29 Michael Goffioul <michael.goffioul@swing.be> + + * oct-fftw.h: Sprinkle with OCTAVE_API as needed. + +2007-01-17 Michael Goffioul <michael.goffioul@swing.be> + + * lo-sysdep.cc (octave_chdir): Handle directory names like "C:" on + Windows systems. + +2007-01-16 John W. Eaton <jwe@octave.org> + + * dSparse.cc: Fix dgbtrf decl for --enable-64. + (SparseMatrix::bsolve): Fix call to dgbtrf for --enable-64 + + * oct-fftw.h (fftw_planner): Provide decl. + +2007-01-11 Michael Goffioul <michael.goffioul@swing.be> + + * Makefile.in (LINK_DEPS): Include $(CAMD_LIBS) in the list. + +2007-01-10 John W. Eaton <jwe@octave.org> + + * oct-sparse.h: Use HAVE_CHOLMOD_CHOLMOD_H, not + HAVE_UMFPACK_CHOLMOD_H for case of "cholmod/cholmod.h". + +2007-01-08 David Bateman <dbateman@free.fr> + + * oct-sparse.h: Replace sparsesuite with suitesparse and + SPARSESUITE with SUITESPARSE to match upstream name. + +2007-01-05 David Bateman <dbateman@free.fr> + + * oct-fftw.cc: (octave_fftw_planner::method (void), + octave_fftw_planner (FftwMethod)): New methods to interrogate and + set the FFTW wisdom method used. + (octave_fftw_planner::create_plan) Modify to allow different + methods to be used. + (octave_fftw_planner): Move class definition from here. + * oct-fftw.h (octave_fftw_planner): To here. Add method methods + and FftwMethod enum. + +2007-01-03 David Bateman <dbateman@free.fr> + + * MSparse.cc (SPARSE_A2A2_OP, SPARSE_A2A2_FCN_1, + SPARSE_A2A2_FCN_1): Modify macros so that scalars stored as + sparse matrices are special cased. + + * Sparse-op-defs.h: Include mx-ops.h to have access to mixed + matrix, sparse matrix operations. + (SPARSE_SMSM_BIN_OP_1, SPARSE_SMSM_BIN_OP_2, SPARSE_SMSM_BIN_OP_3, + SPARSE_SMSM_CMP_OP, SPARSE_SMSM_BOOL_OP, SPARSE_MSM_BIN_OP_1, + SPARSE_MSM_BIN_OP_2, SPARSE_MSM_CMP_OP, SPARSE_MSM_BOOL_OP, + SPARSE_SMM_BIN_OP_1, SPARSE_SMM_BIN_OP_2, SPARSE_SMM_CMP_OP, + SPARSE_SMM_BOOL_OP, SPARSE_SPARSE_MUL, SPARSE_FULL_MUL, + FULL_SPARSE_MUL): Modify macros so that scalars stored as + sparse matrices are special cased. + +2006-12-22 David Bateman <dbateman@free.fr> + + * boolSparse.cc (SparseBoolMatrix::operator !): Fix off-by-one error. + +2006-12-22 John W. Eaton <jwe@octave.org> + + * dim-vector.h (dim_vector::dim_vector): Always start with at + least 2 dimensions. + (dim_vector::resize): Don't allow resizing to fewer than 2 dimensions. + +2006-12-06 Michael Goffioul <michael.goffioul@swing.be> + + * lo-sysdep.cc (opendir): Avoid passing \\* to FindFirstFile. + + * file-ops.cc (ops::canonicalize_file_name): Provide partial + implementation for Windows. + +2006-12-06 David Bateman <dbateman@free.fr> + + * dSparse.cc (SparseMatrix::is_symmetric): Faster implementation. + * CSparse.cc (SparseComplexMatrix::is_symmetric): Ditto. + + * dMatrrix.cc (finverse): Old inverse method renamed inverse. + (tinverse): New method for triangular matrices. + (inverse): New function with matrix type probing. + * dMatrix.h (finverse, tinverse, inverse): New and modified + declarations. + * CMatrix.cc: Ditto. + * CMatrix.h: Ditto. + +2006-12-06 John W. Eaton <jwe@octave.org> + + * strptime.c (day_of_the_week): Use code from current glibc sources. + +2006-12-05 John W. Eaton <jwe@octave.org> + + * lo-utils.cc (octave_read_double): If we see '+' or '-' but not + followed by 'I' or 'i', try reading number after putting + characters back on input stream. + +2006-12-05 Paul Kienzle <pkienzle@users.sf.net> + + * randpoisson.c (oct_fill_randp): For lambda > 1e8, upper limit of + loop is n, not L. + +2006-11-30 John W. Eaton <jwe@octave.org> + + * lo-utils.cc (octave_read_double, read_inf_nan_na): + Also recognize [+-][Ii]nf. + +2006-11-28 David Bateman <dbateman@free.fr> + + * oct-sparse.h: Allow sparse headers to also be in a sparsesuite + sub-directory. + + * dSparse.cc (SparseMatrix::inverse): Transpose the matrix type as + well when calling tinverse for lower triangular matrices. + * CSparse.cc (SparseComplexMatrix::inverse): + Ditto. + +2006-11-21 John W. Eaton <jwe@octave.org> + + * oct-env.cc (do_absolute_pathname): Undo previous change. + +2006-11-20 John W. Eaton <jwe@octave.org> + + * oct-env.cc (octave_env::do_absolute_pathname): Also return true + for ".", and names beginning with "./" or "../". + +2006-11-14 Luis F. Ortiz <lortiz@interactivesupercomputing.com> + + * CMatrix.cc, dMatrix.cc: New tests. + +2006-11-13 Michael Goffioul <michael.goffioul@swing.be> + + * Array-d.cc, dDiagMatrix.h: Sprinkle with OCTAVE_API as needed. + +2006-11-11 John W. Eaton <jwe@octave.org> + + * Makefile.in ($(OPTS_INC), mx-ops.h): + Use $(simple-move-if-change-rule) here. + +2006-11-09 David Bateman <dbateman@free.fr> + + * sparse-base-chol.cc (sparse_base_chol_rep::Q): Cast perms(i) to + octave_idx_type, not int. + +2006-11-08 John W. Eaton <jwe@octave.org> + + * dir-ops.cc (dir_entry::read): Avoid rewinddir. + +2006-11-06 John W. Eaton <jwe@octave.org> + + * Array.cc (assignN): Exit early if invalid indices are found. + +2006-11-03 Michael Goffioul <michael.goffioul@swing.be> + + * strftime.c [HAVE_TZNAME]: Tag tzname with OCTAVE_IMPORT. + +2006-11-03 John W. Eaton <jwe@octave.org> + + * Makefile.in (DLL_CXXDEFS): Rename from XTRA_CXXDEFS. + (DLL_CDEFS): Rename from XTRA_CDEFS. + Substitute OCTAVE_DLL_DEFS, not XTRA_OCTAVE_DEFS. + +2006-10-28 Michael Goffioul <michael.goffioul@swing.be> + + * oct-shlib.cc: Undefine min and max after including windows.h. + * oct-syscalls.cc (syscalls::pipe (int *)): Avoid infinite recursion. + * lo-sysdep.h: Move opendir, readdir, etc. decls here from + lo-sysdep.cc. + +2006-10-27 John W. Eaton <jwe@octave.org> + + * oct-time.cc [! HAVE_STRFTIME]: Declare strftime. + +2006-10-26 Michael Goffioul <michael.goffioul@swing.be> + + * mx-op-defs.h (NDS_CMP_OP1, NDS_CMP_OPS1, NDS_CMP_OP2, + NDS_CMP_OPS2): New macros. + +2006-10-26 John W. Eaton <jwe@octave.org> + + * mx-ops (core-type): New field for integer types. + * mk-ops.awk: Handle core-type for integer comparison ops. + + * lo-cutils.c (octave_strcasecmp, octave-strncasecmp): + Move here from src/cutils.c. + * lo-utils.h: Provide decls. + * strcasecmp.c: Move here from src/strcasecmp.c. + * strncase.c: Move here from src/strncase.c. + * Makefile.in (LIBOCTAVE_C_SOURCES): Add them to the list. + +2006-10-26 Michael Goffioul <michael.goffioul@swing.be> + + * kpse.cc [! MSVC]: Don't include win32lib.h. + + * Array-C.cc, Array-b.cc, Array-ch.cc, Array-i.cc, Array-util.h, + Array.h, CColVector.h, CMatrix.h, CNDArray.h, CRowVector.h, + CSparse.h, CmplxAEPBAL.h, CmplxCHOL.h, CmplxDET.h, CmplxHESS.h, + CmplxLU.h, CmplxQR.h, CmplxQRP.h, CmplxSCHUR.h, CmplxSVD.h, + CollocWt.h, DAE.h, DASPK.h, DASRT.h, DASSL.h, EIG.h, LSODE.h, + MArray-C.cc, MArray-defs.h, MSparse-C.cc, MSparse-d.cc, + MSparse-defs.h, MatrixType.h, NLEqn.h, Quad.h, Range.h, + Sparse-op-defs.h, Sparse.h, SparseCmplxCHOL.h, SparseCmplxLU.h, + SparseCmplxQR.h, SparseQR.h, SparsedbleCHOL.h, SparsedbleLU.h, + boolMatrix.h, boolNDArray.h, boolSparse.h, chMatrix.h, + chNDArray.h, cmd-edit.h, cmd-hist.h, dColVector.h, dDiagMatrix.h, + dMatrix.h, dNDArray.h, dRowVector.h, dSparse.h, data-conv.h, + dbleAEPBAL.h, dbleCHOL.h, dbleDET.h, dbleHESS.h, dbleLU.h, + dbleQR.h, dbleQRP.h, dbleSCHUR.h, dbleSVD.h, dir-ops.h, + file-ops.h, file-stat.h, glob-match.h, idx-vector.h, + int16NDArray.cc, int32NDArray.cc, int64NDArray.cc, int8NDArray.cc, + lo-cutils.c, lo-ieee.h, lo-mappers.h, lo-specfun.h, lo-utils.h, + mach-info.h, mx-op-defs.h, oct-alloc.h, oct-env.h, oct-group.h, + oct-inttypes.cc, oct-inttypes.h, oct-passwd.h, oct-rand.h, + oct-shlib.h, oct-spparms.h, oct-syscalls.h, oct-time.h, + oct-uname.h, pathsearch.h, prog-args.h, so-array.h, str-vec.h, + uint16NDArray.cc, uint32NDArray.cc, uint64NDArray.cc, + uint8NDArray.cc: Sprinkle with OCTAVE_API as needed. + +2006-10-26 John W. Eaton <jwe@octave.org> + + * oct-inttypes.cc (INSTANTIATE_INTTYPE_BIN_OP): Provide explicit + type qualification for OP. + +2006-10-26 David Bateman <dbateman@free.fr> + + * Sparse.cc (Sparse<T>::resize_no_fill (octave_idx_type, + octave_idx_type)): Be more careful with the size of the input + matrix, and therefore don't create or read non existent data. + +2006-10-25 John W. Eaton <jwe@octave.org> + + * Sparse.cc (assign): Clear lhs index after error. + +2006-10-25 David Bateman <dbateman@free.fr> + + * Sparse.cc (assign (Sparse<LT>&, const Sparse<RT>&)): + Fix previous patch so it works. + +2006-10-25 Michael Goffioul <michael.goffioul@swing.be> + + * glob-match.h (glob_match::glob_match (const std::string&, + unsigned int)): Delete initializer for first arg. + + * lo-sysdep.cc (opendir, readdir, rewinddir, closedir): + New functions. + + * Makefile.in (XTRA_CDEFS, XTRA_CXXDEFS): Substitute here. + + * oct-env.cc (octave_env::do_get_home_directory) [_MSC_VER]: Use + same code as __MINGW32__. + * syswait.h [_MSC_VER]: Define HAVE_WAITPID, WAITPID, and WNOHANG + the same as for __MINGW32__. + + * randpoisson.c: Undefine INFINITE before redefining. + +2006-10-24 David Bateman <dbateman@free.fr> + + * Sparse.cc (assign (Sparse<LT>&, const Sparse<RT>&)): Resize the + lhs at the point we know the assignment can succeed if the lhs is + empty. + +2006-10-23 John W. Eaton <jwe@octave.org> + + * Array.cc (assign2): Don't require vector assignments to be oriented. + +2006-10-17 John W. Eaton <jwe@octave.org> + + * lo-cieee.c: If isnan is not available but _isnan is, then define + isnan to be _isnan, and define HAVE_ISNAN. Likewise for _finite + and _copysign. + +2006-10-17 Michael Goffioul <michael.goffioul@swing.be> + + * oct-syscalls.cc (syscalls::waitpid): Always declare and define retval. + + * CMatrix.cc (ComplexMatrix::solve): Avoid infinite recursion. + * CSparse.cc (SparseComplexMatrix::insert): Likewise. + + * oct-types.h.in: Include limits.h, for CHAR_BIT. + +2006-10-13 Michael Goffioul <michael.goffioul@swing.be> + + * Makefile.in: Adapt rules to use $(LIBPRE). + +2006-10-03 David Bateman <dbateman@free.fr> + + * MatrixType.cc (MatrixType::MatrixType): Avoid crash if np == 0 + or p == 0. + +2006-10-02 John W. Eaton <jwe@octave.org> + + * dbleDET.cc (DET::initialize2): Ensure arg to log10 is double. + * CmplxDET.cc (ComplexDET::initialize2): Likewise. + +2006-09-22 David Bateman <dbateman@free.fr> + + * MatrixType.h (MatrixType::MatrixType(const SparseComplexMatrix&)): + Remove spurious warning. + +2006-09-15 John W. Eaton <jwe@octave.org> + + * Array.cc (Array<T>::index (Array<idx_vector>&, int, const T&) const): + Handle resizing. + + * intNDArray.h (intNDArray<T>:elt_type): New typedef. + +2006-09-11 John W. Eaton <jwe@octave.org> + + * dMatrix.cc (operator * (const Matrix&, const Matrix&))): + Handle M*v and rv*cv special cases. + * CMatrix.cc (operator * (const ComplexMatrix&, const + ComplexMatrix&))): Likewise. + From Luis F. Ortiz <lortiz@interactivesupercomputing.com>. + + * dRowVector.cc (operator * (const RowVector&, const + ColumnVector&)): Call xddot here instead of using a Fortran + function directly. + * CRowVector.cc (operator * (const ComplexRowVector&, const + ComplexColumnVector&)): Call xzdotu here. + +2006-09-05 John W. Eaton <jwe@octave.org> + + * chNDArray.cc (charNDArray::any, charNDArray::all): Compare + elements to '\0', not ' '. + +2006-08-25 John W. Eaton <jwe@octave.org> + + * mx-inlines.cc (MX_ND_REDUCTION): Special case for 0x0 arrays. + +2006-08-23 John W. Eaton <jwe@octave.org> + + * dMatrix.cc, dMatrix.h (Matrix::save_ascii): Delete function and decl. + * CMatrix.cc, CMatrix.h (ComplexMatrix::save_ascii): Likewise. + +2006-08-22 John W. Eaton <jwe@octave.org> + + * CMatrix.cc (ComplexMatrix::save_ascii): New function. + * dMatrix.cc (Matrix::save_ascii): New function. + + * mx-inlines.cc (MX_ND_CUMULATIVE_OP): Correctly detect empty arrays. + If array is empty, return value is same size as array. + (MX_ND_REDUCTION): Correctly detect empty arrays. + If array is empty, produce correctly sized return value. + +2006-08-18 John W. Eaton <jwe@octave.org> + + * dMatrix.cc (Matrix::any_element_not_one_or_zero): New function. + * dMatrix.h: Provide decl. + * dNDArray.cc (NDArray::any_element_not_one_or_zero): New function. + * dNDArray.h: Provide decl. + * intNDArray.cc (intNDArray<T>::any_element_not_one_or_zero): + New function. + * intNDArray.h: Provide decl. + + * Array.cc (Array<T>::permute): Only rearrange values if array is + not empty. + +2006-07-26 John W. Eaton <jwe@octave.org> + + * dbleDET.cc (DET::initialize10, DET::value_will_underflow, + DET::value_will_overflow): Use xlog2 instead of log2. + (DET::initialize2, DET::initialize10): Use xround instead of round. + (DET::initialize2, DET::value): Use xexp2 instead of exp2. + * CmplxDET.cc (ComplexDET::initialize10, + ComplexDET::value_will_underflow, + ComplexDET::value_will_overflow): Use xlog2 instead of log2. + (ComplexDET::initialize2, ComplexDET::initialize10): + Use xround instead of round. + (ComplexDET::initialize2, ComplexDET::value): + Use xexp2 instead of exp2. + + * lo-mappers.cc (M_LOG10E): Delete unused macro. + (xlog2, xexp2): New functions. + * lo-mappers.h: Provide decls. + +2006-07-22 John W. Eaton <jwe@octave.org> + + * Sparse.h (Sparse<T>::mex_get_data, Sparse<T>::mex_get_ir, + Sparse<T>::mex_get_jc): New functions. + +2006-07-21 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (octave_int<T>::mex_get_data): New function. + * Array.h (Array<T>::mex_get_data): New function. + +2006-07-19 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (octave_int::operator bool (void)): New function. + +2006-07-16 John W. Eaton <jwe@octave.org> + + * oct-spparms.h, oct-spparms.cc (class octave_sparse_params): + Rename from SparseParams. Use same implementation method as other + singleton classes in Octave. Change all uses of + Voctave_sparse_controls to use static functions from + octave_sparse_params class instead. + + * oct-spparms.h, oct-spparms.cc (SparseParams::set_key, + SparseParams::get_key): Pass std::string arg by const reference, + not const value. + +2006-07-15 John W. Eaton <jwe@octave.org> + + * data-conv.cc: Instantiante swap_bytes templates here. + + * MatrixType.cc (MatrixType::MatrixType): + Use complete initializer lists in constructors. + +2006-07-06 John W. Eaton <jwe@octave.org> + + * str-vec.cc (string_vector::string_vector (std::list<std::string>&)): + New constructor. + * str-vec.h: Provide decl. + +2006-07-01 David Bateman <dbateman@free.fr> + + * dSparse.cc (tinverse): Check for rows with no elements and zero + elements on the diagonal. Allow both Upper and Lower triangular + matrices to be treated. + * CSparse.cc (tinverse): ditto. + * Sparse-op-defs.h (SPARSE_SPARSE_MUL): Take into account 64-bit + constant assignment. + +2006-06-30 John W. Eaton <jwe@octave.org> + + * lo-sysdep.cc (octave_chdir): Perform tilde expansion here. + * cmd-edit.cc (editor::read_init_file): Ditto. + * dir-ops.cc (dir_entry::open): Ditto. + * file-stat.cc (stat::update_internal): Ditto. + * cmd-hist.cc (command_history::set_file): Ditto. + + * data-conv.cc (data_conv::string_to_data_type): + Correctly handle leading "*". + +2006-06-29 Atsushi Kajita <a-kajita@mizar.freemail.ne.jp> + + * Sparse.cc (Sparse<T>::SparseRep::elem): Avoid out of bounds + array access. + +2006-06-27 John W. Eaton <jwe@octave.org> + + * Makefile.in: Finish renaming of OBJECTS -> LIBOCTAVE_OBJECTS. + +2006-06-21 John W. Eaton <jwe@octave.org> + + * oct-shlib.cc (octave_dlopen_shlib::close, + octave_shl_load_shlib::close, octave_w32_shlib::close): + Skip do_close_hook if cl_hook is 0. + +2006-06-16 John W. Eaton <jwe@octave.org> + + * oct-sort.h: Don't include config.h, lo-mappers.h, or quit.h. + * randmtzig.h: Don't inlcude config.h. + +2006-05-31 David Bateman <dbateman@free.fr> + + * Array.cc (assignN): Maybe reshape LHS before doing assignment. + +2006-05-23 John W. Eaton <jwe@octave.org> + + * oct-types.h.in: Include stdint.h or inttypes.h for integer + typedefs, or define them if those files are not available. + * oct-inttypes.h (octave_int8_t, octave_int16_t, octave_int32_t, + octave_int64_t, octave_uint8_t, octave_uint16_t, octave_uint32_t, + octave_uint64_t): Delete typedefs. Replace all uses of these + types with int8_t, int16_t, etc. + * data-conv.h (TWO_BYTE_INT, FOUR_BYTE_INT, EIGHT_BYTE_INT): + Delete definitions. Replace all uses of these macros with int8_t, + int16_t, etc. + * randmtzig.h: Delete integer typedefs. + +2006-05-18 John W. Eaton <jwe@octave.org> + + * EIG.cc (EIG::init): Trap Inf and NaN values here. + From Keith Goodman <kwgoodman@gmail.com>. + +2006-05-08 David Bateman <dbateman@free.fr> + + * Sparse-op-defs.h (SPARSE_SPARSE_MUL): fix bug in previous + modification. + +2006-05-09 David Bateman <dbateman@free.fr> + + * sparse-dmsolve.cc: Remove reference to ov-re-sparse.h, + ov-cx-sparse. and error_state. + * SparseQR.cc, SparseCmplxQR.cc (qrsolve): Return info = -1 on error. + +2006-05-08 David Bateman <dbateman@free.fr> + + * Sparse-op-defs.h (SPARSE_SPARSE_MUL): Set column pointers in + first pass and use to determine which algorithm to use on a + column-by-column basis. + +2006-05-04 David Bateman <dbateman@free.fr> + + * SparseQR.cc, SparseQR.h, SparseCmplxQR.cc, SparseCmplxQR.h, + sparse-dmsolve.cc : Allow compilation with versions v2.0.0 of + CXSparse or later + +2006-05-03 David Bateman <dbateman@free.fr> + + * CMatrix.cc (zpotrf, zpocon, zpotrs, ztrcon, ztrtrs): + External declaration of lapack triangular and Cholesky codes. + (ComplexMatrix::utsolve, ComplexMatrix::ltsolve, + ComplexMatrix::fsolve): New private solver codes for + upper, lower and LU/Cholesky solvers. + (ComplexMatrix::solve): New versions for cached matrix + type. Adapt old versions to call new versions + * CMatrix.h (utsolve, ltsolve, fsolve): Declaration of + new solvers. + (solve): New versions for cached matrix type. + * dMatrix.cc (dpotrf, dpocon, dpotrs, dtrcon, dtrtrs): + External declaration of lapack triangular and Cholesky codes. + (Matrix::utsolve, Matrix::ltsolve, + Matrix::fsolve): New private solver codes for + upper, lower and LU/Cholesky solvers. + (Matrix::solve): New versions for cached matrix + type. Adapt old versions to call new versions + * dMatrix.h (utsolve, ltsolve, fsolve): Declaration of + new solvers. + (solve): New versions for cached matrix type. + * CSparse.cc: Replace all uses of SparseType with MatrixType. + * CSparse.h: ditto. + * dSparse.cc: ditto. + * dSparse.h: ditto. + * SparseCmplxCHOL.cc: ditto. + * SparsedbleCHOL.cc: ditto. + * sparse-dmsolve.cc: ditto. + * SparseType.cc, SparseType.h: delete. + * MatrixType.cc: New file for class to cache matrix type, based on + old SparseType class but caching matrix and sparse types. + * MatrixType.h: ditto. + * Makefile.in (MATRIX_INC, MATRIX_SRC): Add MatrixType.h and + MatrixType.cc respectively. Delete SparseType.h and SparseType.cc + respectively. + * mx-base.h: Include MatrixTye.h as header file. + +2006-05-01 John W. Eaton <jwe@octave.org> + + * oct-shlib.h (octave_shlib::octave_shlib, octave_shlib::open): + Delete WARN_FUTURE arg. Change all uses. + * oct-shlib.cc (octave_base_shlib::stamp_time): Delete arg. + Change all uses. Use current_liboctave_warning_with_id_handler. + (octave_base_shlib::open): Delete arg. Change all derived classes + and uses. + +2006-04-29 John W. Eaton <jwe@octave.org> + + * Array-flags.cc, Array-flags.h: Delete. + * Makefile.in (MATRIX_SRC): Remove Array-flags.cc from the list. + (MATRIX_INC): Remove Array-flags.h from the list. + + * idx-vector.cc (IDX_VEC_REP::freeze): Delete warn_resize arg. + Use current_liboctave_warning_with_id_handler + with warning ID Octave:resize-on-range-error. + * idx-vector.h: Fix decl. + * Array.cc, Sparse.cc: Change all callers. + + * Array.cc (Array<T>::maybe_delete_elements, Array<T>::index2, + assign2, assignN): Use current_liboctave_warning_with_id_handler + with warning ID Octave:fortran-indexing instead of + liboctave_wfi_flag. + * Sparse.cc (assign, Sparse<T>::index): Likewise. + +2006-04-26 John W. Eaton <jwe@octave.org> + + * pathsearch.cc (dir_path::path_sep_char, dir_path::path_sep_str): + New static data. + * pathsearch.h: Provide decls. + (dir_path::is_path_sep): New function. + +2006-04-18 John W. Eaton <jwe@octave.org> + + * randmtzig.c (randmt, randi53, randi54, randi64, randu32, randu53): + Omit inline from decl. + + * Sparse.cc (Sparse<T>::index): Use std::vector<bool> to avoid + local array with variable dimension. + +2006-04-16 John W. Eaton <jwe@octave.org> + + * lo-sstream.h: Delete. + * Makefile.in (INCLUDES): Remove it from the list. + + * dim-vector.h (dim_vector::str): Use std::ostringstream directly. + * Sparse.cc (Sparse::range_error): Likewise. + * DASSL.cc (DASSL::error_message): Likewise. + * LSODE.cc (LSODE::error_message): Likewise. + * DASRT.cc (DASRT::error_message): Likewise. + * DASPK.cc (DASPK::error_message): Likewise. + * Array.cc (Array::range_error): Likewise. + + * kpse.cc (kpse_hash): Rename from hash. + (hash_lookup): Call kpse_hash instead of hash. + + * SparseType.cc (SparseType::SparseType): Use std::vector<bool> + to avoid local array with variable dimension. + +2006-04-13 David Bateman <dbateman@free.fr> + + * Sparse.cc (assign (Sparse<LT>&, const Sparse<RT>&)): + Optimize assignment. + +2006-04-13 John W. Eaton <jwe@octave.org> + + * Sparse.cc (assign (Sparse<LT>&, const Sparse<RT>&)): + Eliminate unnecessary casts. + * SparsedbleLU.cc (SparseLU::SparseLU): Likewise. + + * kpse.cc (fopen): Use reinterpret_cast instead of C-style cast. + (log_search, dir_links): Use static_cast instead of C-style cast. + + * prog-args.cc (args::getopt): Use reinterpret_cast instead of X_CAST. + * oct-alloc.cc (allocator::grow): Likewise. + * CSparse.cc (SparseComplexMatrix::determinant, + SparseComplexMatrix::factorize, SparseComplexMatrix::fsolve): + Likewise. + * SparseCmplxLU.cc (SparseComplexLU::SparseComplexLU): Likewise. + + * oct-sort.cc (roundupsize, octave_sort<T>::merge_getmem): + Use static_cast instead of C-style cast. + * CSparse.cc (SparseComplexMatrix::fsolve): Likewise. + * dSparse.cc (SparseMatrix::fsolve): Likewise. + + * data-conv.cc (LS_DO_WRITE): Use static_cast for value conversion. + Use OCTAVE_LOCAL_BUFFER instead of new/delete. + (LS_DO_READ): Allocate local buffer to avoid pointer tricks. + (write_doubles, read_doubles, LS_DO_WRITE, LS_DO_READ): + Use reinterpret_cast instead of X_CAST. + + * DiagArray2.h (DiagArray2::Proxy::operator&): No need to cast + return value here. + +2006-04-12 Rafael Laboissiere <rafael@debian.org> + + * ArrayN.h (ArrayN::ArrayN): Qualify fill with Array<T> base class. + * DiagArray2.h (DiagArray2::DiagArray2): Likewise. + +2006-04-03 David Bateman <dbateman@free.fr> + + * Sparse.cc (Sparse<T>::resize): Use xcidx rather than cdix, etc + to avoid copy of original matrix. + + * Makefile.in (INCLUDES): Add randgamma.h, randpoisson.h and + randmtzig.h to the list. + (LIBOCTAVE_C_SOURCES): Add randgamma.c, randpoisson.c and + randmtzig.c to the list. + * oct-rand.cc (do_old_initialization): Rename from do_initialization. + (use_old_generators): New variable. + (old_initialized): Rename from initialized. + (new_initialized): New variable. + (oct_init_by_entropy): New function. + (maybe_initialize): Initialize new or old generator depending on + value of use_old_generators. + (octave_rand::state): New functions. + (octave_rand::distribution): Add gamma, exponential and poisson + distributions. + (octave_rand::exponential_distribution, + octave_rand::poisson_distribution, + octave_rand::gamma_distribution): New methods to select + exponential, poisson or gamma distribution. + (octave_rand::scalar, octave_rand::matrix, octave_rand::nd_array, + octave_rand::vector): Add new distributions. + * oct-rand.h: Provide decls for new functions. + (octave_rand::matrix, octave_rand::scalar, octave_rand:: + (octave_rand::scalar, octave_rand::matrix, octave_rand::nd_array, + octave_rand::vector): New arg A, for gamma and poisson distributions. + * randpoisson.c, randpoisson.h, randgamma.c, randmtzig.c, + randmtzig.h: New files. + +2006-03-24 John W. Eaton <jwe@octave.org> + + * dSparse.cc (SparseMatrix::bsolve): Integer work vector is + Array<octave_idx_type>, so fortran_vec returns pointer to + octave_idx_type, not pointer to int. + + * CMatrix.cc, CMatrix.h (ComplexMatrix::row (char*), + ComplexMatrix::column (char*)): Delete. + * dMatrix.cc, dMatrix.h (Matrix::row (char*), + Matrix::column (char*)): Delete. + +2006-03-21 David Bateman <dbateman@free.fr> + + * SparseQR.h: Publish externally used friends. + * SparseCmplxQR.h: ditto. + +2006-03-21 John W. Eaton <jwe@octave.org> + + * lo-specfun.cc (betainc): Use F77_XFCN instead of F77_FUNC for + call to xdbetai. + +2006-03-21 David Bateman <dbateman@free.fr> + + * lo-specfun.cc (xlgamma, xgamma): Trap special values. + (xlgamma): Use F77_XFCN instead of F77_FUNC for call to dlgams. + + * dSparse.cc (solve): Add argument singular_fallback, to allow + fallback to QR solvers to be optional. + * CSparse.cc (solve): Ditto. + * dSparse.h (solve): update declaration for new argument. + * CSparse.h (solve): Ditto. + * sparse-dmsolve.cc (dmsolve): Use singular_fallback argument + to bypass QR solvers when solving the well determined part of + the problem. + +2006-03-17 John W. Eaton <jwe@octave.org> + + * str-vec.cc (vector::list_in_columns): New optional arg, width. + +2006-03-16 David Bateman <dbateman@free.fr> + + * CSparse.cc: Change use of nzmax to nnz to allow automatic + reduction of matrix size, except for a couple of cases where nzmax + is needed. + (zpbcon): Correct declaration of lapack zpbcon function. + (dsolve, utsolve, ltsolve, trisolve, bsolve, factorize, fsolve): Add + an argument to allow the calculation of condition number to be + optional. + (bsolve): Add code for the calculation of the condition number + using zpbcon and zgbcon. + (dsolve): Bug fix for rectangular matrices with sparse RHS. + (utsolve, ltsolve, trisolve, bsolve, fsolve): Mark matrix type as + singular if singularity is detected. + (solve): Use optional argument to disable calculation of + condition number for all but fsolve, for speed. Add code to + allow rectnagular matrices or matrices identified as singular + to be treated. + (lssolve): delete. + (operator *): Don't recast real matrices as complex, but + rather use the macro directly on the real data. + * dSparse.cc: ditto. + * CSparse.h (dsolve, utsolve, ltsolve, trisolve, bsolve, + fsolve, factorize): Update declaration for new argument to + calculate the condition number. + (lssolve): delete. + * dSparse.h: ditto. + * Msparse.h: Change use of nxmax to nnz to allow automatic + reduction of matrix size, except for a couple of cases where + nzmax is needed. + * Sparse.cc: Change use of nxmax to nnz to allow automatic + reduction of matrix size, except for a couple of cases where + nzmax is needed. + (Sparse<T>::index (idx_vector&, idx_vector&, int) const): + Special case strict permutations for speed. + * Sparse-op-defs.h: Change use of nxmax to nnz to allow automatic + reduction of matrix size, except for a couple of cases where + nzmax is needed. + (SPARSE_SPARSE_MUL, SPARSE_FULL_MUL, FULL_SPARSE_MUL): Update + macros to allow mixed complex/real arguments. + * SparseCmplxQR.cc (OCTAVE_C99_ZERO): New macro for C99 zero + value. + (qrsolve): Use it to zero temporary buffers used bt CXSPARSE. + * SparseType.cc (SparseType::SparseType ()): Correct detection + of permutated triangular matrices to avoid seg-faults. Disable + detection of underdetermined lower and over-determined upper + matrix due to problems with non minimum norm solutions. + * sparse-dmsolve.cc: New file for Dulmage-Mendelsohn solver. + * Makefile.in: add sparse-dmsolve.cc to targets. + +2006-03-15 William Poetra Yoga Hadisoeseno <williampoetra@gmail.com> + + * oct-time.cc (octave_strptime::init): Return useful character count. + +2006-03-08 David Bateman <dbateman@free.fr> + + * SparseCmplxQR.cc: Updates for new upstream CXSPARSE release. Fix for + g++ 4.x stl_vector.h issue with C99 double _Complex type. + * SparseCmplxQR.h: Updates for new upstream CXSPARSE release. + * SparseQR.cc: ditto. + * SparseQR.h: ditto. + * oct-sparse.h: ditto. + * sparse-base-chol.cc (sparse_base_chol<>::sparse_base_chol_rep::init): + Declare info variable as volatile. + + * Sparse.cc (Sparse<T>::transpose (void) const): Accelerate algorithm. + * CSparse.cc (SparseComplexMatrix::transpose (void) const): ditto. + +2006-03-01 John W. Eaton <jwe@octave.org> + + * CMatrix.cc (ComplexMatrix::determinant): + Scale result by factors of 2, not 10. + * dMatrix.cc (Matrix::determinant): Likewise. + + * dbleDET.h (DET::DET): Use initializer list. + (DET::coefficient2, DET::coefficient10, DET::exponent2, + DET::exponent10): New functions. + (DET::det): Delete. + (DET::c2, DET::c10, DET::e2, DET::e10, DET::base2): New data members. + Store value internally with double and int instead of 2-element + double vector. + (DET::initialize2, DET::initialize10): Provide decls. + * dbleDET.cc (DET::value_will_overflow, DET::value_will_underflow): + Return bool value, not int. + (DET::initialize2, DET::initialize10): New functions. + + * CmplxDET.h (ComplexDET::ComplexDET): Use initializer list. + (ComplexDET::coefficient2, ComplexDET::coefficient10, + ComplexDET::exponent2, ComplexDET::exponent10): New functions. + (ComplexDET::det): Delete. + (ComplexDET::c2, ComplexDET::c10, ComplexDET::e2, ComplexDET::e10, + ComplexDET::base2): New data members. + Store value internally with Complex and int instead of 2-element + Complex vector. + (ComplexDET::initialize2, ComplexDET::initialize10): Provide decls. + * dbleComplexDET.cc (ComplexDET::value_will_overflow, + ComplexDET::value_will_underflow): Return bool value, not int. + (ComplexDET::initialize2, ComplexDET::initialize10): New functions. + +2006-02-24 John W. Eaton <jwe@octave.org> + + * Array.cc (assignN): Clear index before reshaping. + + * Array.h (Array<T>::operator =): Don't set idx to 0 if copying self. + +2006-02-20 David Bateman <dbateman@free.fr> + + * dSparse.cc (dsolve, utsolve, ltsolve): Remove restriction that + matrix must be square in diagonal, permuted diagonal, triangular + and permuted triangular back/forward substitution code. Change + ambiguous use of no. rows and columns. + * CSParse.cc (dsolve, utsolve, ltsolve): ditto. + * SparseType.cc (SparseType::SparseType(const SparseMatrix&), + SparseType::SparseType(const SparseComplexMatrix&)): Recognize + rectangular diagonal, permuted diagonal, triangular and permuted + triangular matrices. + * Sparse.cc (Sparse<T>::Sparse (octave_idx_type, octave_idx_type, T)): + Treat case where third argument is zero. + +2006-02-15 John W. Eaton <jwe@octave.org> + + * kpse.cc: Do define ST_NLINK_TRICK for Cygwin systems. + (do_subdir) [ST_NLINK_TRICK]: Check links != 2 instead of links > 2. + + * getopt.c: Use __CYGWIN__ instead of __CYGWIN32__. + +2006-02-13 David Bateman <dbateman@free.fr> + + * Makefile.in (LINK_DEPS): Add missing dependencies on colamd, + ccolamd and cxsparse + +2006-02-13 John W. Eaton <jwe@octave.org> + + * kpse.cc (kpse_path_iterator::next): Reverse order of tests in + while loop condition. + (kpse_path_iterator::operator =): Declare as private function but + don't define to prevent attempts to use assignment operator. + Don't define ST_NLINK_TRICK for Cygwin systems. + +2006-02-10 John W. Eaton <jwe@octave.org> + + * mx-inlines.cc (MX_ND_REDUCTION): Store in cummulative + product of all dimensions in CP_SZ. + +2006-02-09 John W. Eaton <jwe@octave.org> + + * mx-inlines.cc (MX_ND_CUMULATIVE_OP): Store in cummulative + product of all dimensions in CP_SZ. + +2006-02-09 David Bateman <dbateman@free.fr> + + * SparseQR.cc: new file for real sparse QR class. + * SparseQR.h: declaration. + * SparseCmplxQR.cc: new file for complex sparse QR class. + * SparseCmplxQR.h: declaration. + * dSparse.cc (dinverse,tinverse,inverse): Remove unused input args. + (factorize, fsolve): Enable code code lssolve. + (lssolve): disable unused args, write based in above sparse QR class. + * CSparse.cc (dinverse,tinverse,inverse): Remove unused input args. + (factorize, fsolve): Enable code code lssolve. + (lssolve): disable unused args, write based in above sparse QR class. + * oct-sparse.h: fix location of colamd, ccolamd and metis headers. + Include CXSparse headers. + * Makefile.in (MATRIX_INC): Include SparseQR.h and SparseCmplxQR.h. + (MATRIX_SRC): Include SparseQR.cc and SparseCmplxQR.cc. + +2006-02-08 John W. Eaton <jwe@octave.org> + + * Array-util.h (calc_permutated_idx): Delete. + * Array.cc (permute_vector): New data structure. + (permute_vector_compare): New function. + (Array<T>::permute): Rewrite to avoid calc_permutated_index for + improved performance. + +2006-02-04 David Bateman <dbateman@free.fr> + + * COLAMD: Remove all files, as now unused. + +2006-01-31 John W. Eaton <jwe@octave.org> + + * Sparse.h (Sparse<T>::nzmax): New function. + (Sparse<T>::nnz): Rename from nonzero. + Change all uses of old nnz function to be nzmax. Change all uses + of nonzero to be nnz. + (Sparse<T>::nzmx): Rename from nnz (data member). Change all uses. + +2006-01-21 David Bateman <dbateman@free.fr> + + * sparse-sort.cc (bool octave_sparse_sidxl_comp): 64-bit fix. + (bool octave_idx_vector_comp): New function. + (template class octave_sort<octave_idx_vector_sort *>): Instantiate + indexed idx_vector sorting function. + * sparse-sort.h (class octave_sparse_sort_idxl): 64-bit fix. + (class octave_idx_vector_sort): New class for indexed idx_vector + sorting. + (bool octave_idx_vector_comp): Declaration. + * Sparse.cc (int assign1(Sparse<LT>&, Sparse<RT>&)): Treat cases of + unordered LHS indexes in assignment using new octave_idx_vector_sort + class. + (int assign(Sparse<LT>&, Sparse<RT>&)): ditto. + +2006-01-30 John W. Eaton <jwe@octave.org> + + * so-array.h (streamoff_array::nnz): New funtion. + * boolNDArray.h (boolNDArray::nnz): New function. + * MArrayN.h (MArrayN<T>::nnz): New function. + * MArray.h (MArray<T>::nnz): New function. + +2006-01-04 David Bateman <dbateman@free.fr> + + * Spars-op-defs.h (SPARSE_SPARSE_MUL): Previous change resulted in + elements not being sorted in return matrix. Sort them, and make + solver select between two algorithms to further improve the + performance. + * dSparse.cc: include oct-sort.h. + * CSparse.cc: ditto. + * sparse-sort.cc: Instantiate octave_sort<octave_idx_type>. + +2005-12-28 David Bateman <dbateman@free.fr> + + * Sparse-op-defs.h (SPARSE_SPARSE_MUL): Improved algorithm that is + faster in all cases, and significantly so for low density or small + order problems. + +2005-11-30 John W. Eaton <jwe@octave.org> + + * LSODE.cc (LSODE::do_integrate (double)): Resize iwork and rwork + before setting any values in either array. + +2005-11-29 John W. Eaton <jwe@octave.org> + + * oct-uname.h, oct-uname.cc: New files. + * Makefile.in: Add them to the appropriate lists. + +2005-11-11 John W. Eaton <jwe@octave.org> + + * Array.cc (Array<T>::indexN): Simplify. + +2005-11-09 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (octave_int::operator char (void) const): + New conversion op. + +2005-11-01 John W. Eaton <jwe@octave.org> + + * Makefile.in (distclean): Also remove oct-types.h. + From Quentin Spencer <qspencer@ieee.org>. + +2005-10-31 David Bateman <dbateman@free.fr> + + * dSparse.cc, CSparse.cc: Use C++ true/false instead of + preprocessor defined TRUE/FALSE. + +2005-10-30 John W. Eaton <jwe@octave.org> + + * mx-inlines.cc (MX_ND_REDUCTION): Iterate in direction of DIM. + (MX_ND_CUMULATIVE_OP): Likewise. + +2005-10-29 John W. Eaton <jwe@octave.org> + + * mx-inlines.cc (MX_ND_REDUCTION): Avoid increment_index to speed + things up. Simplify. + + * Array.cc (Array<T>::indexN): Simplify. Delete separate special + case for "vector_equivalent". + + * Array-util.cc (vector_equivalent): Arg is now dim_vector. + +2005-10-28 John W. Eaton <jwe@octave.org> + + * oct-sparse.h: Fix typo in HAVE_UFSPARSE_UMFPACK_H. + From Quentin Spencer <qspencer@ieee.org>. + + * sparse-base-chol.cc: Use C++ true/false instead of + preprocessor defined TRUE/FALSE. Use 0 instead of NULL. + +2005-10-27 John W. Eaton <jwe@octave.org> + + * Array.cc (assignN): Reshape to final size instead of resizing. + +2005-10-26 John W. Eaton <jwe@octave.org> + + * oct-sparse.h: New file. + * oct-sparse.h.in: Delete. + +2005-10-26 David Bateman <dbateman@free.fr> + + * sparse-base-chol.h: Include cholmod specific code in HAVE_CHOLMOD + * sparse-base-chol.cc: ditto. + +2005-10-26 John W. Eaton <jwe@octave.org> + + Changes for GCC 4.1, tip from Arno J. Klaassen + <arno@heho.snv.jussieu.fr>: + + * dSparse.h (real (const SparseComplexMatrix&)): + Publish externally used friend function. + (imag (const SparseComplexMatrix&)): Likewise. + + * dColVector.h (real (const ComplexColumnVector&)): + Publish externally used friend function. + (imag (const ComplexColumnVector&)): Likewise. + + * dNDArray.h (real (const ComplexNDArray&)): + Publish externally used friend function. + (imag (const ComplexNDArray&)): Likewise. + + * dMatrix.h (operator * (const ComplexMatrix&)): + Move decl outside class. No need to be friend. + (real (const ComplexMatrix&)): Publish externally used friend function. + (imag (const ComplexMatrix&)): Likewise. + + * CMatrix.h: (operator * (const ColumnVector&, const + ComplexRowVector&)): Move decl outside class. No need to be friend. + (operator * (const ComplexColumnVector&, const RowVector&)): Likewise. + (operator * (const ComplexColumnVector&, const ComplexRowVector& b)): + Likewise. + +2005-10-23 David Bateman <dbateman@free.fr> + + * Sparse-op-defs.h (SPARSE_SPARSE_MUL): Check whether trailing zero + elements need to be removed. + + * oct-sparse.h.in: Include metis headers and some macros for long/int + versions of cholmod. + + * CSparse.cc (tinverse): New private function for the inversion of + an upper triangular matrix. + (dinverse): ditto for diagonal matrices. + (inverse): Add SparseType as an argument. Implement matrix inverse + using tinverse and dinverse. + (fsolve): Use cholmod to implement Cholesky solver. + * CSparse.h (tinverse, dinverse): Declarations + (inverse): Alter declaration to include SparseType. + + * dSparse.cc (tinverse, dinverse, inverse, fsolve): ditto. + * dSparse.h (tinverse, dinverse, inverse): ditto. + + * SparseType.cc: Fix complex constructor for hermitian matrices. + + * sparse-util.cc: New file for sparse utility functions. + * sparse-util.h: New file with declarations of sparse utility + functions. + + * sparse-base-chol.cc: New file with sparse cholesky class based + on cholmod. + * sparse-base-chol.h: New file with declaration of sparse cholesky + class based on cholmod. + + * SparseCmplxCHOL.cc: Instantiate sparse cholesky class for Complex. + * SparseCmplxCHOL.h: Declaration of sparse cholesky class. + + * SparsedbleCHOL.cc: ditto. + * SparsedbleCHOL.h: ditto. + + * Makefile.in (MATRIX_INC): Include sparse-base-chol.h. + (INCLUDES): Include sparse-util.h + (TEMPLATE_SRC): Include sparse-base-chol.cc + (MATRIX_SRC): Include SparseCmplxCHOL.cc and SparsedbleCHOL.cc + +2005-10-12 John W. Eaton <jwe@octave.org> + + * oct-env.cc (octave_env::have_x11_display): New function. + * oct-env.h: Provide decl. + +2005-09-29 John W. Eaton <jwe@octave.org> + + * file-stat.h (file_stat::mode): New function. + + * file-stat.cc (file_stat::is_blk, file_stat::is_chr, + file_stat::is_dir, file_stat::is_fifo, file_stat::is_lnk, + file_stat::is_reg, file_stat::is_sock): New static functions. + * file-stat.h: Provide decls. + +2005-09-28 John W. Eaton <jwe@octave.org> + + * file-ops.cc (file_ops::recursive_rmdir): New function. + * file-ops.h: Provide decl. + +2005-09-19 David Bateman <dbateman@free.fr> + + * oct-env.cc (octave_env::do_get_home_directory): + Also check HOMEDRIVE under mingw. + + * Makefile.in (LINK_DEPS): Include UFsparse libraries. + +2005-09-16 John W. Eaton <jwe@octave.org> + + * oct-syscalls.cc: Include lo-utils.h here. + (octave_syscalls::waitpid): Call octave_waitpid here. + + * lo-cutils.c (octave_waitpid): New function. + * lo-utils.h: Provide decl. Include syswait.h here, not in + oct-syscalls.cc + + + * syswait.h [__MINGW32__]: Define WAITPID here instead of defining + waitpid in src/sysdep.h. Make this header C-compatible. + + * oct-syscalls.cc (octave_syscalls::waitpid): New arg, status. + Change all uses. + +2005-09-15 John W. Eaton <jwe@octave.org> + + * Makefile.in (MAKEDEPS_2): Omit unnecessary variable. + + * oct-sparse.h.in: New file. + * Makefile.in (DISTFILES): Include it in the list. + (INCLUDES): Add oct-sparse.h to the list. + +2005-09-15 David Bateman <dbateman@free.fr> + + * dSparse.cc : Include oct-sparse.h for probed umfpack, colamd etc + headers. Remove include of umfpack.h. + * CSparse.cc : ditto. + * SparsedbleLU.cc : ditto. + * SparseCmplxLU.cc : ditto. + + * COLAMD : Remove colamd files from octave. + * COLAMD.files : delete. + * COLAMD.README : delete. + * Makefile.in: Remove COLAMD. Add LIBGLOB. + (LN_S): Change to DESTDIR before LN_S to avoid lack of symlinks + under mingw. + + * kpse.cc (ENV_SEP, ENV_SEP_STRING): Use SEPCHAR and SEPCHAR_STR + in definition. + * lo-cutils.c (octave_w32_library_search): Call GetProcAddress with + change of cast not allowed under g++ 3.x. + * lo-utils.h (octave_w32_library_search): Declaration. + * oct-env.cc (do_get_home_directory): Also check HOMEPATH under mingw. + * oct-shlib.cc (octave_w32_shlib::search): Use octave_w32_library_search. + +2005-09-07 John W. Eaton <jwe@octave.org> + + * cmd-edit.cc (command_editor::do_decode_prompt_string): Update + based on current code in Bash. Handle a few more escape + sequences. Do a better job of decoding \W. + +2005-09-04 David Bateman <dbateman@free.fr> + + * COLAMD: Update version of colamd to v2.4. + * COLAMD.files: Add colamd_global.c to COLAMD_SRC and second build of + colamd.c for long version. + +2005-08-25 David Bateman <dbateman@free.fr> + + * Sparse-op-defs.h (FULL_SPARSE_MUL, SPARSE_FULL_MUL): Macro for + mixed sparse/full multiply. + * dSparse.cc (operator *), CSparse.cc (operator *): New operators for + mixed sparse/full multiply. + * dSparse.h (operator *), CSparse.h (operator *): Declaration of + mixed sparse/full multiply operators. + +2005-07-25 Erik de Castro Lopo <erikd@zip.com.au> + + * oct-inttypes.h (OCTAVE_S_US_FTR): Compare <= 0 instead of < 0 to + avoid warnings for unsigned types. + +2005-07-07 John W. Eaton <jwe@octave.org> + + * dSparse.cc (SparseMatrix::factorize): Initialize Numeric to 0. + * CSparse.cc (SparseComplexMatrix::factorize:) Likewise. + +2005-06-15 John W. Eaton <jwe@octave.org> + + * oct-rl-edit.c (flush_stdout): Rename from no_redisplay. + Flush stdout here. + (octave_rl_clear_screen): Set rl_redisplay_function to flush_stdout. + + * Array.h (Array::resize): Change int args to octave_idx_type. + +2005-06-14 John W. Eaton <jwe@octave.org> + + * CMatrix.cc, CNDArray.cc, CSparse.cc, dMatrix.cc, dNDArray.cc, + dSparse.cc, lo-cieee.c, lo-mappers.cc: Change all uses of + octave_is_NaN_or_NA to xisnan. + + * lo-mappers.h (octave_is_NaN_or_NA): Mark with GCC_ATTR_DEPRECATED. + * lo-ieee.h (lo_ieee_is_NaN_or_NA): Likewise. + + * lo-cieee.c (lo_ieee_is_NaN_or_NA): Now just a wrapper for + lo_ieee_isnan. + + * dMatrix.cc (Matrix::too_large_for_float): Only check if abs + value is greater than FLT_MAX. + * CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto. + * dNDArray.cc (NDArray::too_large_for_float): Ditto. + * CNDArray.cc (ComplexNDArray::too_large_for_float): Ditto. + + * dMatrix.cc (Matrix::too_large_for_float): Special case Inf + values too. + * CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto. + + * dNDArray.cc (NDArray::too_large_for_float): Likewise for NaN, + NA, Inf values. + * CNDArray.cc (ComplexNDArray::too_large_for_float): Ditto. + +2005-06-14 David Bateman <dbateman@free.fr> + + * dMatrix.cc (Matrix::too_large_for_float): Special case NaN and + NA values. + * CMatrix.cc (ComplexMatrix::too_large_for_float): Ditto. + +2005-06-02 John W. Eaton <jwe@octave.org> + + * Array.cc (assignN): Try harder to correctly resize previously + empty LHS. + +2005-05-16 David Bateman <dbateman@free.fr> + + * dSparse.h: Change UMFPACK_LONG_IDX to IDX_TYPE_LONG. + * CSparse.h: ditto. + +2005-05-10 David Bateman <dbateman@free.fr> + + * dSparse.cc (determinant): Free numeric factorization after + sucessful calculation. + * CSparse.cc (determinant): ditto. + +2005-05-06 John W. Eaton <jwe@octave.org> + + * dbleCHOL.cc (CHOL::init): Use xelem instead of elem for indexing + chol_mat. + (chol2mat_internal, chol2mat, CHOL::inverse): New functions. + * dbleCHOL.h (chol2mat_internal, chol2mat, CHOL::inverse): + Provide decls. + + * CmplxChol.cc (ComplexCHOL::init): Use xelem instead of elem for + indexing chol_mat. + (chol2mat_internal, chol2mat, ComplexCHOL::inverse): New functions. + * CmplxCHOL.h (chol2mat_internal, chol2mat, CmplxCHOL::inverse): + Provide decls. + +2005-05-05 John W. Eaton <jwe@octave.org> + + * Array.cc (Array<T>::permute): Call chop_trailing_singletons on + retval before return. + +2005-05-04 John W. Eaton <jwe@octave.org> + + * cmd-edit.cc (gnu_readline::do_readline): Extract const char* + from prompt outside of INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE block. + +2005-05-02 John W. Eaton <jwe@octave.org> + + * Makefile.in (LINK_DEPS): List $(UMFPACK_LIBS) ahead of $(BLAS_LIBS). + From Dmitri A. Sergatskov <dasergatskov@gmail.com>. + +2005-04-29 David Bateman <dbateman@free.fr> + + * dSparse.cc (trisolve): Diagonal passed to lapack zptsv is type + double. Correct indexing for upper diagonal elements for sparse + tridiagonal. + * CSparse.cc (trisolve): ditto. + + * CSparse.h (UMFPACK_ZNAME): Define macro to pick version of + UMFPACK for 64-bit. + * CSparse.cc (UMFPACK_ZNAME): Replace all umfpack_zi_* with + UMFPACK_ZNAME(*). + * SparseCmplxLU.cc (UMFPACK_ZNAME): ditto + + * dSparse.h (UMFPACK_DNAME): Define macro to pick version of + UMFPACK for 64-bit. + * dSparse.cc (UMFPACK_DNAME): Replace all umfpack_di_* with + UMFPACK_DNAME(*). + * SparsedbleLU.cc (UMFPACK_DNAME): ditto + + * dSparse.cc (ltsolve, utsolve): Correct permuted upper/lower + triangular back/forward substitution code. + * CSparse.cc (ltsolve, utsolve): ditto. + + * dSparse.cc (solve): Use mattype.type (false) to force messaging + from spparms("spumoni",1). + * CSparse.cc (solve): ditto + + * SparseType.cc (SparseType(void)): Print info for + spparms("spumoni",1). + (SparseType(const matrix_type), SparseType(const matrix_type, const + octave_idx_type, const octave_idx_type*), SparseType(const matrix_type, + const octave_idx_type, const octave_idx_type)): New constructors. + (SparseType (const SparseMatrix&), SparseType (SparseComplexMatrix&)): + Detect row permuted lower triangular and column permuted upper + triangular matrices. Remove one of the permutation vectors.. + + * SparseType.h: Simplify the permutation code. + (SparseType(const matrix_type), SparseType + (const matrix_type, const octave_idx_type, const octave_idx_type*), + SparseType(const matrix_type, const octave_idx_type, + const octave_idx_type)): Declarations. + +2005-04-25 John W. Eaton <jwe@octave.org> + + * str-vec.cc (string_vector::delete_c_str_vec): Correctly free + array and its contents. + +2005-04-22 John W. Eaton <jwe@octave.org> + + * oct-rl-edit.c (octave_rl_set_terminal_name): Don't cast away + const here now that rl_terminal_name is declared const char*. + +2005-04-21 John W. Eaton <jwe@octave.org> + + * Makefile.in (DISTFILES): Include oct-types.h.in in the list. + +2005-04-19 John W. Eaton <jwe@octave.org> + + * Array.cc (assignN): Don't crash if the index list is empty. + +2005-04-14 David Bateman <dbateman@free.fr> + + * SparseCmplxLU.cc: Add flags for incomplete factorization. + * SparsedbleLU.cc: Ditto. + * SparseCmplxLU.h: Definition. + * SparsedbleLU.h: ditto. + + * SparseType.cc (transpose): New function. + * SparseType.h (transpose): Definition. + +2005-04-11 John W. Eaton <jwe@octave.org> + + * lo-specfun.cc: Use F77_XFCN instead of F77_FUNC for calls to + fortran code that could end up calling XSTOPX. + +2005-04-10 David Bateman <dbateman@free.fr> + + * Makefile.in: include oct-types in INCLUDES so that it is + installed + +2005-04-08 John W. Eaton <jwe@octave.org> + + * Makefile.in (clean): Use exact filenames instead of *.xxx. + + * Initial merge of 64-bit changes from Clinton Chee: + + 2005-04-07 John W. Eaton <jwe@octave.org> + + * MArray-i.cc, Array-i.cc: Instantiate Array<long> and MArray<long>. + + * CSparse.cc, CSparse.h, MSparse.cc, MSparse.h, Sparse-op-defs.h, + Sparse.cc, Sparse.h, SparseCmplxLU.cc, SparseType.cc, + SparseType.h, SparsedbleLU.cc, boolSparse.cc, boolSparse.h, + dSparse.cc, dSparse.h, sparse-base-lu.cc: + Use octave_idx_type instead of int where needed. + + 2005-03-31 Clinton Chee <chee@parallel.hpc.unsw.edu.au> + + * Array-util.cc, Array-util.h, Array.cc,Array.h, Array2.h, + Array3.h, ArrayN.cc, ArrayN.h, Bounds.cc, Bounds.h, CColVector.cc, + CColVector.h, CDiagMatrix.cc, CDiagMatrix.h, CMatrix.cc, + CMatrix.h, CNDArray.cc, CNDArray.h, CRowVector.cc, CRowVector.h, + CmplxAEPBAL.cc, CmplxAEPBAL.h, CmplxCHOL.cc, CmplxCHOL.h, + CmplxHESS.cc, CmplxHESS.h, CmplxLU.cc, CmplxQR.cc, CmplxQRP.cc, + CmplxSCHUR.cc, CmplxSCHUR.h, CmplxSVD.cc, CmplxSVD.h, CollocWt.cc, + CollocWt.h, DAEFunc.h, DASPK-opts.in,DASPK.cc,DASPK.h, + DASRT-opts.in, DASRT.cc, DASRT.h, DASSL-opts.in, DASSL.cc, + DASSL.h, DiagArray2.cc, DiagArray2.h, EIG.cc, EIG.h, FEGrid.cc, + FEGrid.h, LPsolve.cc, LPsolve.h, LSODE-opts.in, LSODE.cc, LSODE.h, + MArray-defs.h, MArray.cc, MArray.h, MArray2.cc, MArray2.h, + MArrayN.cc, MDiagArray2.cc, MDiagArray2.h, NLConst.h, NLEqn.cc, + NLEqn.h, Quad.cc, Quad.h, Range.cc,Range.cc, Range.h, base-de.h, + base-lu.cc, base-lu.h, base-min.h, boolMatrix.cc, boolMatrix.h, + boolNDArray.cc, boolNDArray.h, chMatrix.cc, chMatrix.h, + chNDArray.cc, chNDArray.h, dColVector.cc, dColVector.h, + dDiagMatrix.cc, dDiagMatrix.h, dMatrix.cc, dMatrix.h, + dNDArray.cc,dNDArray.cc, dNDArray.h, dRowVector.cc, dRowVector.h, + dbleAEPBAL.cc, dbleAEPBAL.h, dbleCHOL.cc, dbleCHOL.h, dbleHESS.cc, + dbleHESS.h, dbleLU.cc, dbleQR.cc, dbleQRP.cc, dbleSCHUR.cc, + dbleSCHUR.h, dbleSVD.cc, dbleSVD.h, dim-vector.h, idx-vector.cc, + idx-vector.h, intNDArray.cc, intNDArray.h, lo-specfun.cc, + lo-specfun.h, mach-info.cc, mx-inlines.cc, oct-fftw.cc, + oct-fftw.h, oct-rand.cc, oct-rand.h, so-array.cc, so-array.h, + str-vec.cc, str-vec.h: + Use octave_idx_type instead of int where needed. + + 2005-04-01 John W. Eaton <jwe@octave.org> + + * dim-vector.h, lo-utils.h: Include oct-types.h. + + * oct-types.h.in: New file. + + 2005-03-31 Clinton Chee <chee@parallel.hpc.unsw.edu.au> + + * lo-utils.cc (NINTbig): New function. + * lo-utils.h: Provide decl. + +2005-04-06 David Bateman <dbateman@free.fr> + + * Makefile.in: Link to UMFPACK_LIBS. + +2005-04-05 John W. Eaton <jwe@octave.org> + + * Array.cc (assignN): Avoid shadowed declaration in previous change. + +2005-04-01 John W. Eaton <jwe@octave.org> + + * Array.cc (assignN): For A(IDX-LIST) = RHS with A previously + undefined, correctly match colons in IDX-LIST with RHS dimensions + when resizing A. When performing the assignment, just check that + the number of elements in RHS matches the number of elements + indexed by IDX-LIST. + +2005-03-30 John W. Eaton <jwe@octave.org> + + * lo-mappers.cc (log10, tan, tanh): Delete functions. + * lo-mappers.h (log10, tan, tanh): Delete decls. + + * CColVector.cc, CNDArray.cc, CRowVector.cc, CSparse.cc, + dSparse.cc: Use std:: for Complex functions instead of relying on + wrappers from oct-cmplx.h. + + * oct-cmplx.h: Provide typedef only. + + * DiagArray2.cc (xelem): Don't use initializer for static data. + * DiagArray2.h (DiagArray<T>::Proxy::operator T ()): + Likewise. + +2005-03-26 John W. Eaton <jwe@octave.org> + + * cmd-edit.cc (do_readline): Wrap call to ::octave_rl_readline + with {BEGIN,END}_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE. + +2005-03-15 John W. Eaton <jwe@octave.org> + + * Makefile.in (MATRIX_INC): Remove oct-spparms.h from the list. + +2005-03-14 John W. Eaton <jwe@octave.org> + + * Makefile.in (DISTFILES): Don't include $(UMFPACK_EXTRAS). + (DISTDIRS): Don't include UMFPACK. + (LIBOCTAVE_OBJECTS): Don't include $(UMFPACK_OBJ). + (UMFPACK_SPECIAL_1, UMFPACK_SPECIAL): No need for special include + flags for these files. + Don't include include $(srcdir)/UMFPACK.files. + Don't include include $(srcdir)/UMFPACK.rules. + + * UMFPACK.README, UMFPACK.files, UMFPACK.patch, UMFPACK.rules: + Delete files. + * UMFPACK: Delete directory tree. + + * dSparse.cc: Include <umfpack/umfpack.h> instead of just "umfpack.h". + * CSparse.cc: Likewise. + * SparsedbleLU.cc: Likewise. + * SparseCmplxLU.cc: Likewise. + +2005-03-14 David Bateman <dbateman@free.org> + + * CSParse.cc, SparseCmplxLU.cc, SparsedbleLU.cc, dSparse.cc: + Allow compilation to succeed if UMFPACK is not available. + +2005-03-09 John W. Eaton <jwe@octave.org> + + * Makefile.in (bin-dist): Delete target. + (BINDISTLIBS, BINDISTFILES): Delete variables. + +2005-03-01 John W. Eaton <jwe@octave.org> + + * ODESSA.h, ODESSA.cc, ODESSA-opts.in: Delete. + * Makefile.in: Remove them from the lists. + +2005-02-28 John W. Eaton <jwe@octave.org> + + * Makefile.in (LINK_DEPS): Remove -lglob from the list. + +2005-02-27 David Bateman <dbateman@free.org> + + * Sparse.cc (Sparse<T>::reshape): Set cidx for the N last elements + in the sparse matrix. + +2005-02-25 John W. Eaton <jwe@octave.org> + + Sparse merge. + + 2005-02-13 David Bateman <dbateman@free.fr> + + * CSparse.cc (SparseComplexMatrix:dsolve, SparseComplexMatrix:utsolve, + SparseComplexMatrix::ltsolve, SparseComplexMatrix::trisolve, + SparseComplexMatrix::bsolve, SparseComplexMatrix:fsolve): Split sparse + solver into separate functions for the diagonal, upper, lower + triangular, tridiagonal, banded and full cases. + (SparseComplexMatrix::solve): rewrite to call the above function. One + version that probes the matrix type and another that assumes the type + is passed. + + * dSparse.cc (SparseMatrix:dsolve, SparseMatrix:utsolve, + SparseMatrix::ltsolve, SparseMatrix::trisolve, + SparseMatrix::bsolve, SparseMatrix:fsolve): Likewise + (SparseMatrix::solve): Likewise + + * CSparse.h (dsolve, utsolve, ltsolve, trisolve, bsolve, fsolve): + Declaration of new functions + * dSparse.h (dsolve, utsolve, ltsolve, trisolve, bsolve, fsolve): + Likewise + + * CSparse.cc (operator !): Reverse the sense of the test. + * dSpase.cc (operator !): Likewise + + * dSparse.h (type, band_size, is_dense, triangular_row_perm, + triangular_col_perm, sparse_info): Remove matrix type code + * CSparse.h (type, band_size, is_dense, triangular_row_perm, + triangular_col_perm, sparse_info): Likewise + * boolSparse.h (type, band_size, is_dense, triangular_row_perm, + triangular_col_perm, sparse_info): Likewise + * MSparse.h (type, band_size, is_dense, triangular_row_perm, + triangular_col_perm, sparse_info): Likewise + * Sparse.h (type, band_size, is_dense, triangular_row_perm, + triangular_col_perm, sparse_info, matrix_type): Likewise + + * Sparse.cc (type, sparse_info, band_size): Remove type code + + * SparseType.h: New class for the matrix type used in solvers + * SparseType.cc: methods of sparse matrix type class + + * Makefile.in: Add SparseType.cc + + 2005-02-01 David Bateman <dbateman@free.fr> + + * UMFPACK: Update to version 4.4 + * UMFPACK.patch: Version 4.4 contains most of the previous patch. Only + keep octave specific test files + + 2005-01-23 David Bateman <dbateman@free.fr> + + * dSparse.cc (SparseMatrix::solve): Include tridiagonal, cholesky + tridiagonal and banded cholesky solvers. Remove calculation of + condition number for banded solvers. + * CSparse.cc (SparseComplexMatrix::solve): ditto. + + * Sparse.h (int type (int) const, bool is_dense (void) const): + new functions. + * MSparse.h (int type (int) const, bool is_dense (void) const): ditto + * dSparse.h (int type (int) const, bool is_dense (void) const): ditto + * CSparse.h (int type (int) const, bool is_dense (void) const): ditto + * boolSparse.h (int type (int) const, bool is_dense (void) const): + ditto + + * Sparse.cc (int Sparse<T>::type (int) const, + bool Sparse<T>::is_dense (void) const): New functions definition + + * Sparse.h (matrix_type typ): Move caching of matrix type to SparseRep, + so it actually is cached, but disable + + * oct-spparms.cc (SparseParams::init_keys): Change spmoni to spumoni + for compatiability + + 2005-01-18 David Bateman <dbateman@free.fr> + + * Array.cc (Array<T>::insert (const Array<T>&, const Array<int>&)): + Modify calculation of number elements to skip between copied blocks. + + 2005-01-07 David Bateman <dbateman@free.fr> + + * Sparse.h : Reverse definitions of numel and nelem. + * Sparse.cc (assign1): Use numel and not nelem + * Sparse-op-def.h: Replace all uses of nelem with numel + + 2005-01-07 David Bateman <dbateman@free.fr> + + * dbleDET.h: Make SparseMatrix a friend of the class DET + * CmplexDET.h: Make SparseComplexMatrix a friend of the class + ComplexDET + * dSparse.cc (SparseMatrix::determinant): Replace use of SparseDET + by DET + * dSparse.h (determinant): ditto + * CSparse.cc (SparseComplexMatrix::determinant): Replace use of + SparseComplexDET by ComplexDET + * CSparse.h (determinant): ditto + * SparsedbleDET.h, SparsedbleDET.cc, SparseCmplxDET.h, + SparseCmplxDET.cc: delete files + * Makefile.in: Delete reference to SparsedbleDET.h, SparsedbleDET.cc, + SparseCmplxDET.h andSparseCmplxDET.cc. + + * CSparse.cc (SparseComplexMatrix::solve): Store matrix type in + local variable to avoid variable shadowing. + * dSparse.cc (SparseMatrix::solve): ditto. + + * boolSparse.cc boolSparse.h CSparse.cc CSparse.h dSparse.cc + dSparse.h MSparse.cc MSparse-C.cc MSparse-d.cc MSparse-defs.h + MSparse.h oct-spparms.cc oct-spparms.h Sparse-b.cc Sparse.cc + Sparse-C.cc SparseCmplxLU.cc SparseCmplxLU.h SparsedbleLU.cc + SparsedbleLU.h Sparse-d.cc Sparse.h Sparse-op-defs.h sparse-sort.cc + sparse-sort.h: Remove additional licensing clause with authors + permission. + + 2004-12-30 John W. Eaton <jwe@octave.org> + + * MSparse.cc (SPARSE_A2S_OP_2, SPARSE_SA2_OP_2): + Loop counter is int, not size_t. + + * oct-spparms.cc (SparseParams::operator =): Return *this. + + * Sparse-op-defs.h (SPARSE_SPARSE_MUL): Delete unused variable tmpval. + + * dSparse.cc (operator << (ostream&, const SparseMatrix&), atan2): + Delete unused variables. + (SparseMatrix::solve): Avoid warnings about uninitialized + variables and variables that might be clobbered by longjmp. + + * CSparse.cc (operator << (ostream&, const SparseComplexMatrix&), + min, max): Delete unused variables. + (SparseComplexMatrix::solve): Avoid warnings about uninitialized + variables and variables that might be clobbered by longjmp. + + * Makefile.in (UMFPACK_SPECIAL): Include .d files in the list. + + * Sparse-op-defs.h (SPARSE_SMS_BIN_OP_2, SPARSE_SSM_BIN_OP_2): + Loop counter is int, not size_t. + + * CSparse.cc (SparseComplexMatrix::hermitian): Avoid shadow warnings. + * Sparse.cc (Sparse<T>::Sparse, Sparse<T>::type, assign): Likewise. + + * Sparse.h (Sparse::SparseRep): Order data members and initializer + lists consistently. + + * mx-base.h: Include boolSparse.h, dSparse.h, and CSparse.h. + + 2004-12-29 John W. Eaton <jwe@octave.org> + + * COLAMD.files (COLAMD_EXTRAS): New variable. + * UMFPACK.files (UMFPACK_EXTRAS): New variable. + * Makefile.in (DISTFILES): Add $(COLAMD_EXTRAS) and + $(UMFPACK_EXTRAS) to the list. + (DISTDIRS): New variable. + (dist): Handle $(DISTDIRS). + + Merge of sparse code from David Bateman <dbateman@free.fr> and + Andy Adler <adler@site.uottawa.ca>. + + * Makefile.in (VPATH): ADD @srcdir@/COLAMD to the list. + + * Makefile.in (MAKEDEPS): Include $(COLAMD_SRC) and $(UMFPACK_SRC) + without directory prefix. + + * Makefile.in (LIBOCTAVE_OBJECTS): Add $(COLAMD_OBJ) and + $(UMFPACK_OBJ) to the list. + + * COLAMD: New directory. + * COLAMD.files: New file. + * Makefile.in: Include COLAMD.files. + (SOURCES): Add $(COLAMD_SOURCES) to the list. + (LIBOCTAVE_OBJECTS): Add $(COLAMD_OBJECTS) to the list. + (INCLUDES): Add $(COLAMD_INCLUDES) to the list. + + * UMFPACK: New directory. + * UMFPACK.patch, UMFPACK.README, UMFPACK.files, UMFPACK.rules: + New files. + * Makefile.in: Include UMFPACK.files and UMFPACK.rules. + (SOURCES): Add $(UMFPACK_SOURCES) to the list. + (LIBOCTAVE_OBJECTS): Add $(UMFPACK_OBJECTS) to the list. + (INCLUDES): Add $(UMFPACK_INCLUDES) to the list. + + * Makefile.in (SPARSE_MX_OP_INC): New variable. + (INCLUDES): Add it to the list. + (SPARSE_MX_OP_SRC): New variable. + (LIBOCTAVE_CXX_SOURCES): Add it to the list. + (distclean): Remove $(SPARSE_MX_OP_INC) and $(SPARSE_MX_OP_SRC). + (stamp-prereq): Depend on $(SPARSE_MX_OP_INC) and $(SPARSE_MX_OP_SRC). + + * sparse-mk-ops.awk, sparse-mx-ops: New files. + * Makefile.in (DISTFILES): Add them to the lists. + + * oct-spparms.h, sparse-sort.h: New files. + * Makefile.in (INCLUDES): Add them to the list. + + * oct-spparms.cc, sparse-sort.cc: New files. + * Makefile.in (LIBOCTAVE_CXX_SOURCES): Add them to the list. + + * sparse-base-lu.cc: New file. + * Makefile.in (TEMPLATE_SRC): Add it to the list. + + * boolSparse.cc, CSparse.cc, dSparse.cc, MSparse.cc, Sparse.cc, + SparseCmplxDET.cc, SparseCmplxLU.cc, SparsedbleDET.cc, + SparsedbleLU.cc: New files. + * Makefile.in (MATRIX_SRC): Add them to the list. + + * boolSparse.h, CSparse.h, dSparse.h, MSparse-defs.h, MSparse.h, + Sparse.h, oct-spparms.h, sparse-base-lu.h, SparseCmplxDET.h, + SparseCmplxLU.h, SparsedbleDET.h, SparsedbleLU.h, + Sparse-op-defs.h: New files. + * Makefile.in (MATRIX_INC): Add them to the appropriate lists. + + * MSparse-d.cc, MSparse-C.cc, Sparse-b.cc, Sparse-d.cc, + Sparse-C.cc: New files. + * Makefile.in (TI_SRC): Add them to the list. + +2005-02-18 John W. Eaton <jwe@octave.org> + + * file-ops.cc (file_ops::canonicalize_file_name) [HAVE_RESOLVEPATH]: + Pass current directory to octave_env::make_absolute. + Save value returned from octave_env::make_absolute in local var. + Pass const char*, not std::string as first arg of resolvepath. + Provide decl for resolved_len. + +2005-02-18 John W. Eaton <jwe@octave.org> + + * Array.cc (Array<T>::permute): Allow permutation vector longer + than number of dimenensions of permuted matrix. + + * Array.cc (Array<T>::permute): Use zero-based indexing for perm_vec. + * Array-util.cc (calc_permutated_idx): Likewise. + +2005-02-10 David Bateman <dbateman@free.fr> + + * CNDArray.cc (ComplexNDarray::operator !): Change sense of test. + * CMatrix.cc (ComplexMatrix::operator !): Likewise. + +2005-02-09 John W. Eaton <jwe@octave.org> + + * file-ops.cc (file_ops::canonicalize_file_name): New functions. + * file-ops.h: Provide decls. + + * kpse.cc (kpse_tilde_expand): Simply return NAME if it is empty. + +2005-02-08 John W. Eaton <jwe@octave.org> + + * Array-util.cc (freeze): Improve error message. + +2005-01-26 David Bateman <dbateman@free.fr> + + * Array.cc (Array<T>::insert): Handle generic case, not just + special case for fast concatenation. + +2005-01-18 John W. Eaton <jwe@octave.org> + + * mx-inlines.cc (MX_ND_REDUCTION): Delete RET_ELT_TYPE arg. + Change all uses. Use VAL instead of RET_ELT_TYPE when resizing. + + * dNDArray.cc (NDArray::any): NaN does not count as a nonzero value. + * CNDArray.cc (ComplexNDArray::any): Likewise. + +2005-01-18 David Bateman <dbateman@free.fr> + + * Array.cc (Array<T>::insert (const Array<T>&, const Array<int>&)): + Modify calculation of number elements to skip between copied blocks. + +2005-01-18 John W. Eaton <jwe@octave.org> + + * idx-vector.cc (IDX_VEC_REP::freeze): Call warning handler, not + error handler, to warn about resizing. + +2004-12-27 Martin Dalecki <martin@dalecki.de> + + * Array.cc, ArrayN.cc, base-lu.cc, boolMatrix.cc, boolNDArray.cc, + Bounds.cc, CColVector.cc, CDiagMatrix.cc, chMatrix.cc, + chNDArray.cc, CMatrix.cc, CmplxAEPBAL.cc, CmplxCHOL.cc, + CmplxDET.cc, CmplxHESS.cc, CmplxLU.cc, CmplxQR.cc, CmplxQRP.cc, + CmplxSCHUR.cc, CmplxSVD.cc, CNDArray.cc, CollocWt.cc, + CRowVector.cc, DASPK.cc, DASRT.cc, DASSL.cc, dbleAEPBAL.cc, + dbleCHOL.cc, dbleDET.cc, dbleHESS.cc, dbleLU.cc, dbleQR.cc, + dbleQRP.cc, dbleSCHUR.cc, dbleSVD.cc, dColVector.cc, + dDiagMatrix.cc, DiagArray2.cc, dMatrix.cc, dNDArray.cc, + dRowVector.cc, EIG.cc, FEGrid.cc, idx-vector.cc, int16NDArray.cc, + int32NDArray.cc, int64NDArray.cc, int8NDArray.cc, intNDArray.cc, + LinConst.cc, LPsolve.cc, LSODE.cc, MArray2.cc, MArray.cc, + MArrayN.cc, MDiagArray2.cc, NLEqn.cc, oct-alloc.cc, ODES.cc, + ODESSA.cc, Quad.cc, Range.cc, so-array.cc, uint16NDArray.cc, + uint32NDArray.cc, uint64NDArray.cc, uint8NDArray.cc: + Delete #pragma implementation. + + * Array2.h, Array3.h, Array.h, ArrayN.h, base-lu.h, boolMatrix.h, + boolNDArray.h, Bounds.h, CColVector.h, CDiagMatrix.h, chMatrix.h, + chNDArray.h, CMatrix.h, CmplxAEPBAL.h, CmplxCHOL.h, CmplxDET.h, + CmplxHESS.h, CmplxLU.h, CmplxQR.h, CmplxQRP.h, CmplxSCHUR.h, + CmplxSVD.h, CNDArray.h, CollocWt.h, CRowVector.h, DASPK.h, + DASRT.h, DASSL.h, dbleAEPBAL.h, dbleCHOL.h, dbleDET.h, dbleHESS.h, + dbleLU.h, dbleQR.h, dbleQRP.h, dbleSCHUR.h, dbleSVD.h, + dColVector.h, dDiagMatrix.h, DiagArray2.h, dim-vector.h, + dMatrix.h, dNDArray.h, dRowVector.h, EIG.h, FEGrid.h, + idx-vector.h, int16NDArray.h, int32NDArray.h, int64NDArray.h, + int8NDArray.h, intNDArray.h, LinConst.h, LPsolve.h, LSODE.h, + MArray2.h, MArray.h, MArrayN.h, MDiagArray2.h, NLConst.h, NLEqn.h, + ODES.h, ODESSA.h, Quad.h, Range.h, so-array.h, uint16NDArray.h, + uint32NDArray.h, uint64NDArray.h, uint8NDArray.h: + Delete #pragma interface. + +2004-12-17 John W. Eaton <jwe@octave.org> + + * lo-cieee.c (lo_ieee_signbit): New function. + * lo-ieee.h: Provide decl. + Don't define lo_ieee_signbit as a macro here. + From Orion Poplawski <orion@cora.nwra.com>. + +2004-11-18 John W. Eaton <jwe@octave.org> + + * int32NDArray.cc (pow): Delete instantiation. + * int16NDArray.cc (pow): Likewise. + * int8NDArray.cc (pow): Likewise. + * uint32NDArray.cc (pow): Likewise. + * uint16NDArray.cc (pow): Likewise. + * uint8NDArray.cc (pow): Likewise. + +2004-11-17 John W. Eaton <jwe@octave.org> + + * kpse.cc (str_llist_float, str_llist_add, kpse_var_expand): + Now static. + (DB_ENVS, DB_HASH_SIZE, DB_NAME, ALIAS_NAME, ALIAS_HASH_SIZE, + DEFAULT_TEXMFDBS): Delete unused macros. + + * Array.cc (Array<T>::index): Call generic N-d indexing function + if idx_arg is N-d. + +2004-11-09 David Bateman <dbateman@free.fr> + + * dNDArray.cc (concat): Delete. + (NDArray::concat): New methods. + * dNDArray.h: Provide decls. + + * CNDArray.cc (concat): Delete. + (ComplexNDArray::concat): New methods. + * CNDArray.h: Provide decls. + + * boolNDArray.cc (concat): Delete. + (boolNDArray::concat): New methods. + * boolNDArray.h: Provide decls. + + * chNDArray.cc (concat): Delete. + (charNDArray::concat): New methods. + * chNDArray.h: Provide decls. + + * oct-inttypes.h (OCTAVE_INT_CONCAT_FN, OCTAVE_INT_CONCAT_DECL): + Delete macros. + + * int8NDArray.h, int16NDArray.h, int32NDArray.h, int64NDArray.h, + uint8NDArray.h, uint16NDArray.h, uint32NDArray.h, uint64NDArray.h + (OCTAVE_INT_CONCAT_DECL): Delete use of macro. + + * int8NDArray.cc, int16NDArray.cc, int32NDArray.cc, int64NDArray.cc, + uint8NDArray.cc, uint16NDArray.cc, uint32NDArray.cc, uint64NDArray.cc + (OCTAVE_INT_CONCAT_FN): Delete use of macro. + + * intNDArray.cc (intNDArray<T>::concat): New method. + * intNDArray.h: Provide decl. + +2004-11-08 John W. Eaton <jwe@octave.org> + + * oct-inttypes.cc: New file. + * Makefile.in (TI_SRC): Add it to the list. + * oct-inttypes.h (OCTAVE_US_TYPE1_CMP_OP, OCTAVE_US_TYPE1_CMP_OPS, + OCTAVE_SU_TYPE1_CMP_OP, OCTAVE_SU_TYPE1_CMP_OPS, + OCTAVE_TYPE1_CMP_OPS, OCTAVE_US_TYPE2_CMP_OP, + OCTAVE_US_TYPE2_CMP_OPS, OCTAVE_SU_TYPE2_CMP_OP, + OCTAVE_SU_TYPE2_CMP_OPS, OCTAVE_TYPE2_CMP_OPS): + New macros for comparison operations. Avoid potential + problems with default conversions when comparing signed and + unsigned values. + +2004-11-03 John W. Eaton <jwe@octave.org> + + * dMatrix.cc (Matrix::inverse): Return info == -1 for any failure. + * CMatrix.cc (ComplexMatrix::inverse): Likewise. + +2004-10-19 John W. Eaton <jwe@octave.org> + + * Array.cc (assignN): Avoid resizing if assignment will fail. + +2004-10-18 John W. Eaton <jwe@octave.org> + + * Array.cc (assign2): Save result of squeeze operation. + Squeeze if ndims is > 2, not if length of RHS vector is > 2. + +2004-10-11 David Bateman <dbateman@free.fr> + + * oct-fftw.cc (class octave_fftw_planner): Add inplace[2] to + flag whether transform in- or out-of-place. + (octave_fftw_planner::octave_fftw_planner): Initialize it. + (octave_fftw_planner::create_plan): Use it. + +2004-09-24 John W. Eaton <jwe@octave.org> + + * Array.cc (assign2, assignN): If index is empty, allow RHS to be + any empty matrix, not just []. + +2004-09-23 John W. Eaton <jwe@octave.org> + + * mx-ops: Include scalar zero value in type definitions. + Delete zero information from ops section. + * mk-ops.awk: Use type-specific zero info. + + * mx-op-defs.h (MS_BOOL_OP, SM_BOOL_OP, MM_BOOL_OP, NDS_BOOL_OP, + SND_BOOL_OP, NDND_BOOL_OP): Args now include zero values for both + LHS and RHS. + (MS_BOOL_OPS2, SM_BOOL_OPS2, MM_BOOL_OPS2, NDS_BOOL_OPS2, + SND_BOOL_OPS2, NDND_BOOL_OPS2): New macros. + (MS_BOOL_OPS, SM_BOOL_OPS, MM_BOOL_OPS, NDS_BOOL_OPS, + SND_BOOL_OPS, NDND_BOOL_OPS): Define in terms of 2-zero versions. + + * idx-vector.h (idx_vector::idx_vector_rep::idx_vector_rep (const + intNDArray<U>&)): Use explicit as_double () conversion in call to + tree_to_mat_idx. + + * oct-inttypes.h (octave_int<T>::operator float): New conversion. + (pow): Instead of "if (b_val)", use "if (b_val != zero)". + Likewise for the "if (b_val & one)" test. + (operator <<, operator >>): Type of retval is octave_int<T1>, not T1. + +2004-09-23 David Bateman <dbateman@free.fr> + + * oct-inttypes.h (OCTAVE_INT_DOUBLE_CMP_OP, OCTAVE_DOUBLE_INT_CMP_OP): + New macros. Use them to define mixed intX-double and double-intX ops. + +2004-09-22 Federico Zenith <zenith@chemeng.ntnu.no> + + * DASPK-opts.in, DASRT-opts.in, ODESSA-opts.in: + Fix doc string layout to avoid overfull hbox in printed output. + +2004-09-21 John W. Eaton <jwe@octave.org> + + * mach-info.h (octave_mach_info::flt_fmt_native): Delete. + * mach-info.cc (octave_mach_info::string_to_float_format): + For "native", set actual native format. + (octave_mach_info::float_format_as_string): Delete flt_fmt_native case. + +2004-09-17 David Bateman <dbateman@free.fr> + + * CmplxSCHUR.cc (CmplxSCHUR::init): New arg, calc_unitary to make the + calculation of the unitary matrix optional. + * dbleSCHUR.cc (SCHUR::init): Ditto. + * CmplxSCHUR.h, dbleSCHUR.h: Update decls. + +2004-09-15 David Bateman <dbateman@free.fr> + + * oct-sort.h (octave_sort<T>::set_compare (bool (*comp) (T, T))): + New function to set the comparison function for the sort. + +2004-09-10 John W. Eaton <jwe@octave.org> + + * lo-mappers.cc (xround): Fix typo. + +2004-09-08 John W. Eaton <jwe@octave.org> + + * Array.h (Array::~Array): Declare virtual. + + * idx-vector.h (idx_vector::idx_vector): Initialize rep in member + initializaion list. Don't set rep->count since the rep + constructor does that. + +2004-09-07 John W. Eaton <jwe@octave.org> + + * data-conv.cc (oct_data_conv::string_to_data_type): Handle dt_logical. + (oct_data_conv::data_type_as_string): Likewise. + + * data-conv.h (oct_data_conv::data_type): Add dt_logical to list. + + * Range.cc (round): Delete unused function. + + * lo-mappers.cc (xround): Rename from round. Change all uses. + If HAVE_ROUND, call round, otherwise fake with floor and ceil. + + * oct-inttypes.h: Include <cmath> here. + +2004-09-03 David Bateman <dbateman@free.fr> + + * boolNDArray.cc (boolNDArray::concat, boolNDArray::insert): + New functions for boolean matrix concatenation. + * boolNDArray.h: Provide decls. + +2004-09-03 John W. Eaton <jwe@octave.org> + + * oct-inttpes.h (OCTAVE_INT_CMP_OP): Convert operarands to double + to avoid signed/unsigned int comparison problems. + + * mx-ops: Generate CMP and BOOL ops for mixed integer types and + for mixed integer and double types. + + * mk-ops.awk: Output BIN_OP_DECLS, CMP_OP_DECLS, and BOOL_OP_DECLS + separately, and only if needed. + + * oct-inttypes.h (octave_fit_to_range): Use constructor instead of + static_cast for type conversion. + +2004-09-01 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (pow, operator +, operator -, operator *, + operator /): Handle mixed integer/double ops. If op generates a + NaN, set result to 0. + (octave_int::operator - (void)): Convert to double, then negate, + then fit to range. + + * mx-ops: Define integer types. Include declarations for mixed + integer/double ops. + +2004-08-31 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (pow): Args now const reference. + (octave_int<T>::operator *=, octave_int<T>::operator /=, + octave_int<T>::operator <<=, octave_int<T>::operator >>=): + New member functions. + (OCTAVE_INT_BITSHIFT_OP): Delete macro. + (operator >> (const octave_int<T1>& x, const T2& y)): + Define in terms of >>=. + (operator << (const octave_int<T1>& x, const T2& y)): + Define in terms of <<=. + (bitshift): Operate on octave_int<T> objects, not the values, so + we get proper saturation properties. + +2004-08-31 David Bateman <dbateman@free.fr> + + * oct-inttypes.h (pow (constT, T)): New template. + + * int8NDArray.cc, int16NDArray.cc, int32NDArray.cc, uint8NDArray.cc, + uint16NDArray.cc, uint32NDArray.cc: Instantiate power function. + +2004-08-31 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (octave_int::byte_size): New function. + +2004-08-31 John W. Eaton <jwe@octave.org> + + * Makefile.in (EXTRAS): Add intNDArray.cc to the list. + + * data-conv.h (oct_data_conv::data_type): Include sized types. + Explicitly number enum elements. + + * data-conv.cc (oct_data_conv::string_to_data_type (const + std::string&, int&, oct_data_conv::data_type&, + oct_data_conv::data_type&)): New function. + (oct_data_conv::string_to_data_type (const std::string&, int&, + oct_data_conv::data_type&)): New function. + (oct_data_conv::data_type_as_string): New function. + + * dMatrix.cc (read_int, do_read, Matrix::read): Delete. + (write_int, do_write, Matrix::write): Delete. + * dMatrix.h (Matrix::read, Matrix::write): Delete decls. + + * byte-swap.h: Use template functions and specialization. + Change all uses. + (swap_2_bytes, swap_4_bytes, swap_8_bytes): Delete. + +2004-08-30 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (octave_int_fit_to_range): Use template + specializations to avoid warnings about signed/unsigned comparisons. + +2004-08-28 John W. Eaton <jwe@octave.org> + + * data-conv.cc (do_float_format_conversion (unsigned char *, + size_t, int, oct_mach_info::float_format)): New function. + (GET_SIZED_INT_TYPE): New macro. + (string_to_data_type): Use it to return sized types corresponding + to Octave array data types. + (strip_spaces): New function. + (do_double_format_conversion, do_float_format_conversion): Pass + from_fmt and to_fmt. Don't always assume the to_fmt is the native + float format. + (do_double_format_conversion, + IEEE_big_double_to_IEEE_little_double, + VAX_D_double_to_IEEE_little_double, + VAX_G_double_to_IEEE_little_double, Cray_to_IEEE_little_double, + IEEE_little_double_to_IEEE_big_double, + VAX_D_double_to_IEEE_big_double, VAX_G_double_to_IEEE_big_double, + Cray_to_IEEE_big_double, IEEE_little_double_to_VAX_D_double, + IEEE_big_double_to_VAX_D_double, VAX_G_double_to_VAX_D_double, + Cray_to_VAX_D_double, IEEE_little_double_to_VAX_G_double, + IEEE_big_double_to_VAX_G_double, VAX_D_double_to_VAX_G_double, + Cray_to_VAX_G_double): + Pass data as void*, not double*. + (do_float_format_conversion, IEEE_big_float_to_IEEE_little_float, + VAX_D_float_to_IEEE_little_float, + VAX_G_float_to_IEEE_little_float, Cray_to_IEEE_little_float, + IEEE_little_float_to_IEEE_big_float, + VAX_D_float_to_IEEE_big_float, VAX_G_float_to_IEEE_big_float, + Cray_to_IEEE_big_float, IEEE_little_float_to_VAX_D_float, + IEEE_big_float_to_VAX_D_float, VAX_G_float_to_VAX_D_float, + Cray_to_VAX_D_float, IEEE_little_float_to_VAX_G_float, + IEEE_big_float_to_VAX_G_float, VAX_D_float_to_VAX_G_float, + Cray_to_VAX_G_float): + Pass data as void*, not float*. + +2004-08-27 John W. Eaton <jwe@octave.org> + + * byte-swap.h (swap_bytes): New template versions, with + specializations. + (swap_2_bytes, swap_4_bytes, swap_8_bytes): Delete. + Change all uses. + +2004-08-24 David Bateman <dbateman@free.fr> + + * chNDArray.cc (concat): Check whether matrix to be inserted is + empty instead of checking final matrix. + * dNDArray.cc (concat): Likewise. + * CNDArray.cc (concat): Likewise. + +2004-08-23 David Bateman <dbateman@free.fr> + + * dim-vector.h (dim_vector::concat): Correct incrementation for + non-existent dimensions. + +2004-08-09 John W. Eaton <jwe@octave.org> + + * idx-vector.h (idx_vector::idx_vector_rep::tree_to_mat_idx + (const octave_int<U>&)): New member function. + (idx_vector::idx_vector_rep::tree_to_mat_idx (double, bool&), + idx_vector::idx_vector_rep::tree_to_mat_idx (int)): + Now member functions instead of static in idx-vector.cc. + (idx_vector::idx_vector_rep::idx_vector_rep (const octave_int<U>&), + idx_vector::idx_vector_rep::idx_vector_rep (const intNDArray<U>&)): + New template constructors. + +2004-08-05 John W. Eaton <jwe@octave.org> + + * EIG.cc (EIG::init): Add volatile qualifier to nvr decl. + + * intNDArray.cc (intNDArray<T>::operator !, intNDArray<T>::all, + intNDArray<T>::any): Sprinkle with this-> as needed. + * mx-inlines.cc (MX_ND_REDUCTION, MX_ND_CUMULATIVE_OP): Likewise. + +2004-08-03 John W. Eaton <jwe@octave.org> + + * Array.cc (Array<T>::squeeze): Do nothing for 2-d arrays. For + arrays with more than two dimensions and only one non-singleton + dimension, return a column vector. + +2004-07-28 John W. Eaton <jwe@octave.org> + + * oct-cmplx.h (pow (const Complex&, const double&): + Convert second arg to complex to avoid libstdc++ bug. + +2004-07-27 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (bitshift): New arg, MASK. + (OCTAVE_INT_BITSHIFT_OP): Bitshift does not saturate. + +2004-07-23 John W. Eaton <jwe@octave.org> + + * Array.cc (Array<T>::reshape): Return *this if no change in size. + +2004-07-23 David Bateman <dbateman@free.fr> + + * Array.cc, Array.h (cat_ra): Delete. + * Array.h, Array-C.cc, Array-d.cc, Array-ch.cc, Array-i.cc + (INSTANTIATE_ARRAY_CAT): Delete. + + * dNDArray.cc, dNDArray.h, CNDArray.cc, CNDArray.h, chNDArray.cc, + chNDArray.h, intNDArray.cc, intNDArray.h (cat): Delete. + + * Array.cc (Array<T>::insert): Copy data in NDArray version. + + * dNDArray.cc, dNDArray.h, CNDArray.cc, CNDArray.h, chNDArray.cc, + chNDArray.h (concat): New function used for concatenation that does + an indexed copy of one array into another. + + * dim-vector.h (concat): New function to concatenate dim_vectors. + + * dNDArray.cc, dNDArray.h, CNDArray.cc, CNDArray.h, chNDArray.cc, + chNDArray.h, intNDArray.cc, intNDArray.h (insert): New function for + insertion of one NDArray into another. + + * oct-inttype.cc (OCTAVE_INT_CONCAT_FN, OCTAVE_INT_CONCAT_DECL): New + macros to define the int/uint concatenation functions. + + * uint8NDArray.cc, uint16NDArray.cc, uint32NDArray.cc, uint64NDArray.cc + int8NDArray.cc, int16NDArray.cc, int32NDArray.cc, int64NDArray.cc + (OCTAVE_INT_CONCAT_FN): Instantiate the concatenation function . + + * uint8NDArray.h, uint16NDArray.h, uint32NDArray.h, uint64NDArray.h + int8NDArray.h, int16NDArray.h, int32NDArray.h, int64NDArray.h + (OCTAVE_INT_CONCAT_DECL): Declare the int/uint concatentaion + functions. + +2004-07-22 David Bateman <dbateman@free.fr> + + * oct-sort.h: Don't include oct-obj.h. + + * lo-specfun.cc (is_integer_value): New function. + (zbesj, zbesi, zbesy): Special case negative integer or half + integer orders that cause overflow for small arguments. + +2004-07-12 John W. Eaton <jwe@octave.org> + + * oct-inttypes.h (octave_int<T>::nbits): New function. + (bitshift (const octave_int<T>&, int)): New function. + +2004-06-14 John W. Eaton <jwe@octave.org> + + * mx-base.h: Include headers for new int types. + + * dNDArray.h, dNDArray.cc (NDArray::NDArray (const boolNDArray&), + NDArray::NDArray (const charNDArray&)): Delete. + (template <class U> explicit NDArray (const intNDArray<U>&)): New + constructor. + (NDArray::squeze): Call MArrayN::squeeze, not ArrayN::squeeze. + + * chMatrix.h (CharMatrix::transpose): New forwarding functions for + return type conversion. + + * ComplexNDArray.h, ComplexNDArray.cc + (ComplexNDArray::ComplexNDArray (const ArrayN<Complex>&), + (ComplexNDArray::ComplexNDArray (const NDArray&), + (ComplexNDArray::ComplexNDArray (const boolNDArray&), + (ComplexNDArray::ComplexNDArray (const charNDArray&)): Delete. + + (ComplexNDArray::squeze): Call MArrayN::squeeze, not ArrayN::squeeze. + + * MArrayN.h: + (template <class U> explicit MArrayN<T>::MArrayN (const Array2<U>&), + (template <class U> MArrayN<T>::MArrayN (const ArrayN<U>&), + (template <class U> explicit MArrayN<T>::MArrayN (const MArray<U>&)): + New constructors. + (ArrayN<T>::reshape, ArrayN<T>::permute, ArrayN<T>::ipermute, + ArrayN<T>::squeeze): + New forwarding functions for return type conversion. + + * ArrayN.h: + (template <class U> explicit ArrayN<T>::ArrayN (const Array2<U>&), + (template <class U> explicit ArrayN<T>::ArrayN (const ArrayN<U>&), + (template <class U> explicit ArrayN<T>::ArrayN (const Array<U>&), + (template <class U> explicit ArrayN<T>::ArrayN (const Array<U>&, + const dim_vector&)): New constructors. + (ArrayN<T>::reshape, ArrayN<T>::permute, ArrayN<T>::ipermute, + ArrayN<T>::transpose): + New forwarding functions for return type conversion. + + * Array.h (template <class U> Array<T>::Array (const Array<U>&)): + New constructor. + (Array<T>::coerce, Array<T>::byte_size): New functions. + + * Array-i.cc, MArray-i.cc: Instantiate new integer types. + + * oct-inttypes.h, int16NDArray.h, int32NDArray.h, int64NDArray.h, + int8NDArray.h , intNDArray.h, uint16NDArray.h, uint32NDArray.h, + uint64NDArray.h, uint8NDArray.h, int16NDArray.cc, int32NDArray.cc, + int64NDArray.cc, int8NDArray.cc, intNDArray.cc, uint16NDArray.cc, + uint32NDArray.cc, uint64NDArray.cc, uint8NDArray.cc: New files. + * Makefile.in: Add them to the appropriate lists. + +2004-06-04 John W. Eaton <jwe@octave.org> + + * mx-inlines.cc (MX_ND_REDUCTION): New arg, RET_ELT_TYPE. Use + "RET_ELT_TYPE ()" rather than "false" as fill value for retval + resize op. Change all uses. + +2004-06-03 David Bateman <dbateman@free.fr> + + * Array.cc (assignN): Allow magic colon for dimensions lvalue + greater than the existing number of dimensions in lvalue. + +2004-04-30 David Bateman <dbateman@free.fr> + + * dim_vector.h (dim_vector::dim_vector_rep::dim_vector_rep): + New arg, fill_value. + (dim_vector::resize): Allow optional fill_value argument. + + * Array.cc (Array<T>::index (Array<idx_vector>&, int, const T&)): + Don't chop trailing dimensions of Array<idx_vector> if there is + more than one element in idx_vector. Resize the return value to + the size of Array<idx_vector>. + + * Array-util.cc (short_freeze): Better freeze of last dimension of + idx_vector that is shorter than a dim_vector. + +2004-04-23 John W. Eaton <jwe@octave.org> + + * oct-sort.cc: Don't include oct-obj.h. + +2004-04-22 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::index2, Array<T>::indexN): + Don't set invalid dimensions on return value. + +2004-04-21 John W. Eaton <jwe@octave.org> + + * mx-inlines.cc (MX_ND_REDUCTION): Chop trailing singletons. + +2004-04-06 David Bateman <dbateman@free.fr> + + * Array.cc (Array<T>::resize_no_fill (const dim_vector& dv), + Array<T>::resize_and_fill (const dim_vector& dv, const T& val)): + Make their behavior equivalent except for filling vs. not filling. + + * oct-sort.cc: New template class for arbitrary sorting. + * oct-sort.h: Declaration of sort class. + * Makefile: Add them to the appropriate lists. + +2004-04-02 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mx-inlines.cc (MX_ND_CUMULATIVE_OP): Fix off-by-one error. + +2004-04-02 David Bateman <dbateman@free.fr> + + * lo-specfun.cc (besselj, bessely, besseli, besselk, besselh1, + besselh2, airy, biry, betainc, gammainc, do_bessel): + New N-d array versions. + (SN_BESSEL, NS_BESSEL, NN_BESSEL): New macros. + * lo-specfun.h (besselj, bessely, besseli, besselk, besselh1, + besselh2, airy, biry, betainc, gammainc): Provide decls. + + * dNDArray.cc (NDArray::min, NDArray::max, min, max): + New functions. + * dNDArray.h (NDArray::min, NDArray::max, min, max): Provide decls. + + * CNDArray.cc (ComplexNDArray::min, ComplexNDArray::max, min, max): + New functions. + * CNDArray.h (ComplexNDArray::min, ComplexNDArray::max, min, max): + Provide decls. + +2004-03-17 David Hoover <jazzdaq@yahoo.com> + + * DASPK.cc (DASPK::do_integrate): Always add n*n elements to the + work vector, not just when using a numerical Jacobian. + +2004-03-11 John W. Eaton <jwe@bevo.che.wisc.edu> + + * so-array.cc (SND_CMP_OP, NDS_CMP_OP, NDND_CMP_OP): + Omit empty result args. + + * Array.cc (Array<T>::Array (const Array<T>&, const dim_vector&)): + Move here from Array.h, check that size of array arg is not + smaller than the size defined by the new dimensions. + +2004-03-10 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::index2): Allow result to be N-d if indexing + a scalar or vector with an N-d array. + +2004-03-09 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::index2): If scalar or vector is indexed by + matrix, return object that is the same size as the index. + + * mx-op-defs.h (NDND_CMP_OP, MM_CMP_OP): Require dimensions to agree. + Eliminate MT_RESULT args. Return value is always size of args. + (MS_CMP_OP, SM_CMP_OP, NDS_CMP_OP, SND_CMP_OP): + Eliminate EMPTY_RESULT arg. + Return value is always size of matrix or N-d array arg. + (TBM, FBM, NBM): Delete unused macros. + +2004-03-05 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::maybe_delete_elements): Return immediately + if all LHS dimensions are zero. For one index case, freeze and + sort idx_vec before checking length, and do nothing if + num_to_delete is zero. + (Array<T>::maybe_delete_elements_2): Omit Fortran-indexing warning. + +2004-03-04 David Bateman <dbateman@free.fr> + + * dNDArray.cc (NDArray::ifourier): Arg is int, not const int. + * CNDArray.cc (ComplexNDArray::ifourier): Likewise. + +2004-03-03 Hans Ekkehard Plesser <hans.ekkehard.plesser@nlh.no> + + * base-lu.cc (base_lu<>::L): Check bounds before setting diagonal + element. + +2004-03-03 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Range.h (Range::Range): Add cache to member initialization list. + (Range::clear_cache): New private function. + + * Range.h (Range::set_base, Range::set_limit, Range::set_inc): + Use clear cache. Don't do anything if range does not change. + * Range.cc (Range::sort): Likewise. + +2004-03-02 Paul Kienzle <pkienzle@users.sf.net> + + * Range.cc (Range::matrix_value): Cache result. + (Range::sort): Clear cache. + * Range.h (Range::cache): New data member. + (Range::set_base, Range::set_limit, Range::set_inc): Clear cache. + (Range::print_range): Delete. + +2004-03-02 David Bateman <dbateman@free.fr> + + * oct-fftw.cc: Only two versions of plan, and avoid endless + changes between them. Faster for small fft's. + (octave_fftw_planner::simd_align, octave_fftw_planner::rsimd_align): + New member variables. + (octave_fftw_planner::ialign, octave_fftw_planner::oalign, + octave_fftw_planner::rialign, octave_fftw_planner::roalign): Delete. + Change all uses. + (CHECK_SIMD_ALIGNMENT): New macro. + (octave_fftw_planner::create_plan): Use it. + +2004-03-01 Petter Risholm <risholm@idi.ntnu.no> + + * Array.cc (Array<T>::insertN): Eliminate N-d indexing. + + * mx-inlines.cc (MX_ND_CAT): Delete macro. + + * dNDArray.h, chNDArray.h, CNDArray.h (cat): Change declaration. + * dNDArray.cc (NDArray<T>::cat): Call new form of cat function. + * chNDArray.cc (charNDArray<T>::cat): Ditto. + * CNDArray.cc (ComplexNDArray<T>::cat): Ditto. + + * Array.h (cat_ra): Return int. Accept idx and move args, not add_dim. + * Array.cc (cat_ra): Speed up implementation by avoiding N-d indexing. + +2004-02-24 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-rl-edit.c (octave_rl_set_startup_hook, + octave_rl_get_startup_hook, octave_rl_set_event_hook, + octave_rl_get_event_hook): Omit casts. + * oct-rl-edit.h (rl_startup_hook_fcn_ptr, rl_event_hook_fcn_ptr): + Return value for function pointer typedef is now int. + * cmd-edit.h (command_editor::startup_hook_fcn, + command_editor::event_hook_fcn): Likewise. + * cmd-hist.cc, cmd-hist.h (command_history::goto_mark, + command_history::do_goto_mark, gnu_history::do_goto_mark): + Return type is now int. Return 0. + + * EIG.cc (EIG::init, EIG::symmetric_init): + Query Lapack for workspace size. + +2004-02-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::resize_and_fill (const dim_vector&, const T&)): + Fix thinko in extending dimensions. + +2004-02-20 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Range.cc (Range::matrix_value, Range::min, Range::max): + Don't compute values beyond the limits of the range. + (operator << (std::ostream&, const Range&)): Likewise. + +2004-02-18 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-fftw.cc (octave_fftw_planner::create_plan): + Cast IN and OUT args to ptrdiff_t instead of long before masking. + From Paul Kienzle <pkienzle@users.sf.net>. + + * Array.cc (Array<T>::insertN (const Array<T>&, int, int)): + Rename from Array<T>::insert. + (Array<T>::insert2 (const Array<T>&, int, int)): + Reinstate old Array<T>::insert function under this name. + (Array<T>::insert (const Array<T>&, int, int)): + New function. Dispatch to insert2 or insertN as appropriate. + +2004-02-17 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-fftw.cc (convert_packcomplex_1d, convert_packcomplex_Nd): + Sprinkle with OCTAVE_QUIT. + +2004-02-16 David Bateman <dbateman@free.fr> + + * oct-fftw.cc (octave_fftw_planner::create_plan, octave_fftw::fftNd): + Add support for FFTW 3.x. Include the ability to + use the real to complex transform for fft's of real matrices + (octave_fftw_planner::create_plan2d): Delete. + (octave_fftw::fft2d): Delete. + (convert_packcomplex_1d, convert_packcomplex_Nd): + New static functions. + * oct-fftw.h: Update decls. + + * dMatrix.cc (Matrix::fourier, Matrix::ifourier, + Matrix::fourier2d, Matrix::ifourier2d): FFT's use real to complex + transforms. 1D FFT of a matrix done as single call rather than + loop. Update for FFTW 3.x + * CMatrix.cc (ComplexMatrix::fourier, ComplexMatrix::ifourier, + ComplexMatrix::fourier2d, ComplexMatrix::ifourier2d): 1D fft of a + matrix done as single call rather than loop. Update for FFTW 3.x. + + * dNDArray.cc (NDArray::fourier, NDArray::ifourier, + NDArray::fourierNd, NDArray::ifouriourNd): New fourier transform + functions for Nd arrays. + * dNArray.h Provide decls. + * CNDArray.cc (ComplexNDArray::fourier, ComplexNDArray::ifourier, + ComplexNDArray::fourierNd, ComplexNDArray::ifouriourNd): New + fourier transform functions for complex Nd arrays. + * CNArray.h: Provide decls. + +2004-02-15 Petter Risholm <risholm@stud.ntnu.no> + + * Array.cc (Array<T>::insert (const Array<T>&, int, int)): + Make it work for N-d arrays. + + * ArrayN.h (ArrayN<T>::insert (const ArrayN<T>& a, int, int)): + New function. + + * CNDArray.cc (ComplexNDArray::insert (const NDArray&, int, int), + ComplexNDArray::insert (const ComplexNDArray&, int, int)): + New functions. + * CNDArray.h: Provide decls. + +2004-02-14 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (LINK_DEPS): Always define. + + * Array.cc (Array<T>::squeeze): Always return an array with at + least two dimensions. + +2004-02-13 Petter Risholm <risholm@stud.ntnu.no> + + * mx-inlines.cc (MX_ND_CAT): New macro. + * dNDArray.cc (NDArray::cat): New function. + * dNDArray.h: Provide decls. + * CNDArray.cc (complexNDArray::cat): New function. + * CNDArray.h: Provide decls. + * chNDArray.cc (charNDArray::cat): New function. + * chNDArray.h: Provide decls. + +2004-02-13 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (maybe_delete_elements_2): Allow X(n) = [] for 2-d X. + (Array<T>assign2): Also call maybe_delete_elements for single + index when rows and columns or LHS are both greater than 1. + +2004-02-13 Petter Risholm <risholm@stud.ntnu.no> + + * Array.cc (Array<T>::maybe_delete_elements): + Check for index out of bounds. Handle one index. + + * Array.cc (Array<T>::indexN): Use dim_vector (0, 0) instead of + dim_vector (0) to create empty return vector. + +2004-02-07 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::assignN): Don't crash if trying to resize a + non-empty LHS when the number of lhs dimensions is less than the + number of indices. Detect error if attempting to resize non-empty + LHS with colon indices. + +2004-02-06 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::resize_and_fill): Don't bother to assign any + values unless the length of the new array is greater than 0. + (Array<T>::resize_no_fill): Likewise. + + * Array-util.cc (index_in_bounds): Also return false if ra_idx(i) + is equal to dimensions(i). + + * Array-util.h, Array-util.cc (equal_arrays, any_zero_len, + get_zero_len_size, number_of_elements): + Delete unused functions. + + * Array-util.cc (get_ra_idx): Use dim_vector::numel instead of + number_of_elements function. + * Array.cc (Array<T>::indexN): Likewise. + + * Array.cc (Array<T>::indexN): Use dim_vector::operator == instead + of equal_arrays function. + (Array<T>::index, Array<T>::indexN, Array<T>::assignN) Use + dim_vector::any_zero instead of any_zero_len function. + + * Array.cc (Array<T>::assignN): Eliminate special case for empty index. + Don't skip reshaping and resizing if RHS is empty. + + * Array.cc (Array<T>::assignN): Simplify loop for array assignment. + Move body of MAYBE_RESIZE_ND_DIMS here since it is only used once. + Delete unused variables is_colon and is_colon_equiv. + Correctly resize for expressions like x(:,:,2) = ones(3,3) when + LHS is not yet defined. + Error for resizing if number of indices is less than number of LHS + dimensions. + + * Array.cc (Array<T>::maybe_delete_elements): Maybe warn about + Fortran-style indexing. + +2004-02-05 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::assignN): Simplify. + Allow assignments to succeed if number if indices is less than the + number of RHS dimensions. + +2004-02-05 Petter Risholm <risholm@stud.ntnu.no> + + * Array.cc (Array<T>::maybe_delete_elements): Reshape LHS + when number of indices is less than number of dimensions. + + * Array.cc (Array<T>::assignN, Array<T>::maybe_delete_elements): + Remove unsued variable lhs_inc. + + * Array.cc (Array<T>::maybe_delete_elements): Declare idx_is_colon + and idx_is_colon_equiv Array<int> instead of dim_vector. + + * Array.cc (Array<T>::assignN): Compute new dims in a cleaner way. + + * Array.cc (Array<T>::index): Check for frozen_lengths.length () + == n_dims before checking to see if all indices are colon_equiv. + +2004-02-05 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::assignN): Require RHS == 0x0 matrix for + deleting elements. + (Array<T>::index): Remove trailing singletons in ra_idx, but leave + at least ndims elements. + +2004-02-05 Petter Risholm <risholm@stud.ntnu.no> + + * Array.cc (Array<T>::assignN): Accept assignment of a vector + oriented differently from the index. + + * dim-vector.h (dim_vector::squeeze): Return value always has at + least two dimensions. + +2004-02-04 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dim-vector.h (dim_vector::squeeze): New function. + (Array<T>::assignN): Use it instead of chop_trailing_singltons for + deciding whether the assignment conforms. + + * Array.cc (Array<T>::assignN): Simplify dimension check by + comparing rhs_dims and frozen_len sans trailing singletons. + +2004-02-03 John W. Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.cc (tree_to_mat_idx): New arg, conversion_error. + Call error handler and return conversion_error == true if arg is + not integer. + (IDX_VEC_REP::idx_vector_rep): Exit early if conversion_error. + +2004-02-02 John W. Eaton <jwe@bevo.che.wisc.edu> + + * boolNDArray.h (boolNDArray::boolNDArray): Declare dim_vector + reference arg const. + +2004-01-30 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-flags.cc: Include Array-flags.h, not Array.h. Doh. + +2004-01-30 Jakub Bogusz <qboosh@pld-linux.org> + + * Array-flags.h (liboctave_wfi_flag, liboctave_wrore_flag): + Now bool, to match definition in Array-flags.cc. + +2004-01-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.cc: Include <vector> instead of <memory> for new + definition of OCTAVE_LOCAL_BUFFER. + + * EIG.cc, EIG.h (EIG::init, EIG::symmetric_init, EIG::hermitian_init): + New arg, calc_eigenvectors. + * EIG.h (EIG:EIG): New optional arg, calc_eigenvectors. + Based on patch from David Bateman <dbateman@free.fr>. + +2004-01-22 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::assign2, Array<T>::assignN): + For X(I) = RHS, don't restrict I to fewer elements than X. + + * Array.cc (Array<T>::assign2): Simplify indexing for X(I) = RHS case. + +2004-01-22 Petter Risholm <risholm@stud.ntnu.no> + + * mx-inlines.cc (MX_ND_REDUCTION, MX_ND_CUMULATIVE_OP): + Simplify calculation of number of elements in retval. + + * Array.cc (Array<T>::assignN): Eliminate unnecessray code for + filling when RHS is scalar and dimension lengths agree. + +2004-01-22 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (distclean): Remove mx-ops.h, $(MX_OP_INC), + $(VX_OP_INC), $(MX_OP_SRC), $(VX_OP_SRC), and $(OPTS_INC). + +2004-01-22 Petter Risholm <risholm@stud.ntnu.no> + + * Array.cc (Array<T>::resize_and_fill): Correctly copy old elements. + (Array<T>::assign2): Check for RHS dimensions larger than 2. + +2004-01-21 Petter Risholm <risholm@stud.ntnu.no> + + * Array.h (Array<T>::chop_trailing_singletons): New function. + * Array.cc (Array<T>::assignN): Use it on LHS. + + * Array.cc (Array<T>::assignN): Fix incorrectly nested if statement. + Retrieve scalar element by passin 0 instead of an index array. + Check for singleton dimensions where RHS is matrix or higher dimension. + Make sure index is in bounds. + +2004-01-19 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.cc (octave_ieee_init): Ensure that octave_Inf, + octave_NaN, and octav_NA values are always initialized. Check + floating point format, not HAVE_ISINF, HAVE_FINITE, or HAVE_ISNAN + to decide whether to do IEEE initialization. + +2004-01-06 David Bateman <dbateman@free.fr> + + * CNDArray.cc (ComplexNDArray::any_element_is_inf_or_nan, + ComplexNDArray::all_elements_are_real, ComplexNDArray::all_integers, + ComplexNDArray::too_large_for_float): New functions + + * CNDArray.cc (operator <<, operator >>): New IO operators. + * CNDArray.h: Provide decls. + * dNDArray.cc (operator <<, operator >>): New IO operators. + * dNDArray.h: Provide decls. + +2003-12-10 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mx-ops: Delete bnda x bnda, b x bnda, and bnda x b ops since + they are already defined in boolNDArray.cc. + + * Array-util.cc (get_zero_len_size): Delete. + * Array.cc (Array<T>::index (Array<idx_vector>&, int, const T&)): + Handle zero-length result dimensions the same as empty original + indices. + +2003-12-09 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dim-vector.h (dim_vector::chop_trailing_singleton_dims, + dim_vector::dim_vector_rep::chop_trailing_singleton_dims): + New functions. + * Array.cc (ArrayN<T>::indexN): Use it. + (ArrayN<T>::index (Array<idx_vector>&, int, const T&)): Likewise. + +2003-11-26 John W. Eaton <jwe@bevo.che.wisc.edu> + + * boolNDArray.cc: Define BOOL ops. Define mixed CMP ops. + * boolNDArray.h: Declare BOOL ops. Declare mixed CMP ops. + +2003-11-25 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mk-ops.awk: Also emit #include "Array-util.h". + + * mx-ops: Add bool, boolMatrix, and boolNDarray types. + Add bnda x bnda, b x bnda, and bnda x b ops. + + * MArray-misc.cc: Delete. + * Makefile.in (MATRIX_SRC): Remove it from the list. + + * Array-util.h, Array-util.cc (gripe_nonconformant): Move here from + MArray.h, MArray2.h, MArrayN.h, and MArray-misc.cc. + +2003-11-24 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleQR.cc (QR::init): Use separate pwork pointers. + * CmplxQR.cc (ComplexQR::init): Likewise. + + * oct-group.cc (octave_group::getgrnam): Pass correct args to + two-arg getgrnam version. + + * Array.cc (assignN): Allow single indexing to work. + (Array<T>::range_error (const char*, const Array<int>&)): + Report index values. + + * Array.cc (Array<T>::index): Delete unused arg names. + * ODESSA.cc (odessa_j): Likewise. + * DASRT.cc (ddasrt_f, ddasrt_g): Likewise. + * DASPK.cc (ddaspk_psol): Likewise. + * lo-mappers.cc (imag): Likewise. + * Array-util.cc (get_zero_len_size): Likewise. + * kpse.cc (path_search, path_find_first_of): Likewise. + * cmd-edit.cc (do_generate_filename_completions): Likewise. + + * dim-vector.h (dim_vector::all_ones): New function. + +2003-11-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.h (idx_vector::orig_empty): Check orig_dims for + zeros, not orig_rows or orig_columns. + (idx_vector::idx_vector_rep::orig_rows): Define using orig_dims. + (idx_vector::idx_vector_rep::orig_columns): Likewise. + + * idx-vector.cc (idx_vector::idx_vector_rep::orig_nr, + (idx_vector::idx_vector_rep::orig_nc): Delete. + + * idx-vector.cc (idx_vector::idx_vector_rep): + Use initialization lists for constructors. + + * Array.cc (Array<T>::indexN): Correctly handle single colon index. + Omit special case for ra_idx.capacity () == 1. + Always allow single index for matrix args with optional warning. + + * idx-vector.h, idx-vector.cc: Convert boolMatrix functions to use + boolNDArray. Likewise, convert Matrix functions to use NDArray. + + * Array-so.cc: New file. Move instantiations here from so-array.h. + * Makefile.in (TI_SRC): Add it to the list. + + * MArray-defs.h (DO_VS_OP2, DO_VV_OP2): Accept args for element + type and the names of the left and right operands. Change all uses. + + * so-array.cc, so-array.h: New files. Move streamoff_array here + from src/ov-streamoff.h and src/ov-streamoff.cc. + +2003-11-20 John W. Eaton <jwe@bevo.che.wisc.edu> + + * MArrayN.cc (operator -=, operator +=): Check dimensions, not + just length. + + * Array2.h, Array3.h, DiagArray2.h, DiagArray2.cc, MDiagArray2.h, + ArrayN.h: Add this-> or Base:: qualifiers for references to + non-dependent member functions and data as needed. + + * DiagArray2.h, DiagArray2.cc: Delete unused code. + + * Array2.h (Array2<T>::operator =): Don't copy dimensions here. + * Array3.h (Array3<T>::operator =): Likewise. + * DiagArray2.h (DiagArray2<T>::operator =): Likewise. + Include Array.h, not Array2.h. + +2003-11-19 John W. Eaton <jwe@bevo.che.wisc.edu> + + * str-vec.cc (list_in_columns): Fix previous change. + + * dim-vector.h (dim_vector::num_ones): New function. + * Array.cc (maybe_delete_elements): Use it instead of + num_ones (const Array<int>&). + + * Array.cc (assignN): Omit dubious check of singleton dimensions. + + * dNDArray.cc (NDArray::all_elements_are_int_or_inf_or_nan, + NDArray::any_element_is_inf_or_nan, NDArray::too_large_for_float): + New functions. + * dNDArray.h: Provide decls. + + * dMatrix.h (Matrix::any_element_is_negative, + Matrix::any_element_is_inf_or_nan, Matrix::too_large_for_float, + Matrix::all_elements_are_int_or_inf_or_nan, Matrix::all_integers): + Simplify. + + * dNDArray.cc (NDArray::abs): Make it work for N-d arrays. + * CNDArray.cc (ComplexNDArray::abs): Likewise. + + * dNDArray.cc (real, imag): New functions. + * dNDArray.h: Provide decls. + +2003-11-18 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (TEMPLATE_SRC): Move MArrayN.cc here from MATRIX_SRC. + +2003-11-15 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.h (Array<T>::resize (int, const T&)): Reinstate. + * MArray.h (resize): Delete. + * MArray2.h (resize): Delete. + * DASRT.cc (DASRT::integrate): Use resize, not resize_and_fill. + * ODESSA (ODESSA::integrate): Likewise. + +2003-11-14 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (dist): Depend on stamp-prereq. + +2003-11-12 John Eaton <jwe@bevo.che.wisc.edu> + + * mach-info.c (oct_mach_info::init_float_format) [CRAY]: + Kluge to make it work. + + * lo-ieee.cc (octave_ieee_init): Set octave_Inf, octave_NaN, and + octave_NA to DBL_MAX if native float format is vaxd, vaxg, or cray. + + * cmd-edit.cc (gnu_readline::do_generate_filename_completions, + default_command_editor::do_generate_filename_completions, + command_editor::generate_filename_completions): New functions. + * cmd-edit.h: Provide decls. + * oct-rl-edit.c (octave_rl_filename_completion_function): New + function. + * oct-rl-edit.h: Provide decl. + +2003-11-11 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.h (INSTANTIATE_ARRAY_ASSIGN, INSTANTIATE_ARRAY_AND_ASSIGN, + INSTANTIATE_ARRAY): New macros. + * Array-C.cc, Array-b.cc, Array-ch.cc, Array-d.cc, Array-i.cc, + Array-idx-vec.cc, Array-s.cc, Array-str.cc, ODESSA.cc: Use them. + + * Array.h (Array<T>::ipermute): New function. + +2003-11-11 Petter Risholm <risholm@stud.ntnu.no> + + * Array.cc (Array<T>::permute): New function. + * Array.h: Provide decl. + + * Array-util.cc (calc_permutated_idx): New function. + * Array-util.h: Provide decl. + +2003-11-10 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::index2): Return value has orientation of + indexed value if indexing a vector with a bool matrix. + + * ArrayN.h (ArrayN<T>::get_size): Delete. + + * Array.cc, ArrayN.cc, dNDArray.cc, CNDArray.cc, boolNDArray.cc, + chNDArray.cc: Include Array-util.h instead of ArrayN-inline.h. + + * ArrayN-inline.h: Delete. + * Array-util.h, Array-util.cc: New files, from ArrayN-inline.h. + * Makefile.in: Fix the appropriate lists. + + * Array.cc, Array.h, ArrayN.h, CMatrix.cc, CNDArray.h, + CRowVector.cc, CmplxQR.cc, CollocWt.h, DASPK.h, DASRT.h, DASSL.h, + FEGrid.cc, LP.h, LSODE.h, MArrayN.h, ODE.h, ODES.h, ODESSA.cc, + boolNDArray.h, chNDArray.h, dMatrix.cc, dNDArray.h, dRowVector.cc, + dbleQR.cc, kpse.cc, oct-rl-hist.c, str-vec.cc, str-vec.h: + Avoid -Wshadow warnings. + +2003-11-08 John Eaton <jwe@bevo.che.wisc.edu> + + * Array.h (Array<T>::nil_rep): Qualify return type with typename. + + * mk-ops.awk: Delete elements of bool_headers array individually. + +2003-11-07 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (maybe_delete_elements): Rename arg idx to ra_idx. + +2003-10-31 Petter Risholm <risholm@stud.ntnu.no> + + * mx-inlines.cc (MX_ND_CUMULATIVE_OP): New macro. + + * CNDArray.cc, CNDArray.h (ComplexNDArray::cumsum, + ComplexNDArray::cumprod): Return ComplexNDArray. Handle N-d arrays. + * dNDArray.cc, dNDArray.h (NDArray::cumsum, NDArray::cumprod): + Return NDArray. Handle N-d arrays. + +2003-10-31 John W. Eaton <jwe@bevo.che.wisc.edu> + + * LSODE.cc (LSODE::do_integrate): Avoid name conflict on systems + that upcase Fortran names by calling dlsode instead of lsode. + + * ODESSA.cc (ODESSA::do_integrate): Avoid name conflict on systems + that upcase Fortran names by calling dodessa instead of odessa. + + * file-ops.cc (file_ops::symlink): Cope with systems that expect + non-const args for symlink system call. + (file_ops::readlink): Likewise, for readlink. + + * DASRT.cc (DASRT::integrate): Fix typo in Fortran function name. + +2003-10-30 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mach-info.h (oct_mach_info): Prefix enum elements with flt_fmt_. + Change all uses. + +2003-10-29 Petter Risholm <risholm@stud.ntnu.no> + + * dNDArray.cc (NDArray::cumprod, NDArray::cumsum, NDArray::prod, + NDArray::sum, NDArray::sumsq, NDArray::abs): New functions. + * dNDArray.h: Provide decls. + * CNDArray.cc (ComplexNDArray::cumprod, ComplexNDArray::cumsum, + ComplexNDArray::prod, ComplexNDArray::sum, ComplexNDArray::sumsq, + ComplexNDArray::abs): New functions. + * CNDArray.h: Provide decls. + + * mx-inlines.cc (MX_ND_REDUCTION): Rename from MX_ND_ANY_ALL. + Generalize to handle other reduction operations. + (MX_ND_REAL_OP_REDUCTION, MX_ND_COMPLEX_OP_REDUCTION, + MX_ND_ALL_ANY_REDUCTION): New macros. + +2003-10-29 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::reshape): New function. + * Array.h: Provide decl. + + * dim-vector.h (dim_vector::numel): New function. + + * dim-vector.h (dim_vector_rep::dim_vector_rep (int, const + dim_vector&)): Correctly handle case of n < dv->ndims. + +2003-10-28 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dim-vector.h (dim_vector::any_zero): New function. + (dim_vector::str): New default arg, sep. + + * Array.h (Array<T>::numel): New function. + +2003-10-27 Petter Risholm <risholm@stud.ntnu.no> + + * mx-inlines.cc (MX_ND_ALL_EXPR, MX_ND_ANY_EXPR, + MX_ND_ALL_EVAL, MX_ND_ANY_EVAL, MX_ND_ALL_ANY): New macros. + * dNDArray.h (NDArray::all, NDArray::any): Return type now boolNDArray. + * CNDArray.h (ComplexNDArray::all, ComplexNDArray::any): Likewise. + * boolNDArray.h (boolNDArray::all, boolNDArray::any): Likewise. + * chNDArray.h (charNDArray::all, charNDArray::any): Likewise. + * dNDArray.cc (NDArray::all, NDArray::any): Make them work. + * CNDArray.cc (ComplexNDArray::all, ComplexNDArray::any): Likewise. + * boolNDArray.cc (boolNDArray::all, boolNDArray::any): Likewise. + * chNDArray.cc (charNDArray::all, charNDArray::any): Likewise. + +2003-10-27 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::resize_and_fill): Allow number of dimensions + to change. From Petter Risholm <risholm@stud.ntnu.no>. + + * oct-rand.cc, CColVector.cc, CMatrix.cc, CRowVector.cc, + CmplxAEPBAL.cc CmplxCHOL.cc, CmplxHESS.cc, CmplxLU.cc, CmplxQR.cc, + CmplxQRP.cc, CmplxSCHUR.cc, CmplxSVD.cc, CollocWt.cc, DASPK.cc, + DASRT.cc, DASSL.cc, EIG.cc, LSODE.cc, NLEqn.cc, ODESSA.cc, + Quad.cc, dColVector.cc, dMatrix.cc, dRowVector.cc, dbleAEPBAL.cc, + dbleCHOL.cc, dbleHESS.cc, dbleLU.cc, dbleQR.cc, dbleQRP.cc, + dbleSCHUR.cc, dbleSVD.cc, lo-specfun.cc: + Use new F77 arg macros in declarations of external Fortran + subroutines and for calling them. + +2003-10-25 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::resize_no_fill (const dim_vector&)): + Allow number of dimensions to change. + (Array<T>::resize_no_fill (int, int)): Require ndims to be 0 or 2. + (Array<T>::resize_and_fill (int, int, const T&)): Likewise. + (Array<T>::resize_no_fill (int, int, int)): Require ndims to be 0 or 3. + (Array<T>::resize_and_fill (int, int, int, const T&)): Likewise. + (Array<T>::transpose): Require ndims to be 2. + (Array<T>::index2): Likewise. + (Array<T>::index (idx_vector&, idx_vector&, int, const T&)): Likewise. + (Array<T>::maybe_delete_elements_2): Likewise. + (Array<T>::maybe_delete_elements (idx_vector&, idx_vector&)): Likewise. + (Array<T>::index1): Use resize_and_fill. + (MAYBE_RESIZE_ND_DIMS): Likewise. + + * ODESSA.cc (ODESSA::integrate): Use resize_and_fill for x_s_out. + + * MArray2.h (MArray2<T>::resize (int, int)): New function. + (MArray2<T>::resize (int, int, const T&)): New function. + + * MArray.h (MArray<T>::resize (int)): New function. + (MArray<T>::resize (int, const T&)): New function. + + * DASRT.cc (DASRT::integrate): Use resize_and_fill for jroot. + + * DASPK-opts.in: Use single-arg resize for initial condition + heuristics. + + * dim-vector.h (class dim_vector): Now reference counted. + (dim_vector_rep::elem): Use assert to check that index is in bounds. + +2003-10-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::squeeze): Delete redundant retval decl. + + * mx-cdm-cm.cc, mx-cdm-cm.h, mx-cdm-cs.cc, mx-cdm-cs.h, + mx-cdm-dm.cc, mx-cdm-dm.h, mx-cdm-m.cc, mx-cdm-m.h, mx-cdm-s.cc, + mx-cdm-s.h, mx-cm-cdm.cc, mx-cm-cdm.h, mx-cm-dm.cc, mx-cm-dm.h, + mx-cm-m.cc, mx-cm-m.h, mx-cm-s.cc, mx-cm-s.h, mx-cs-cdm.cc, + mx-cs-cdm.h, mx-cs-dm.cc, mx-cs-dm.h, mx-cs-m.cc, mx-cs-m.h, + mx-dm-cdm.cc, mx-dm-cdm.h, mx-dm-cm.cc, mx-dm-cm.h, mx-dm-cs.cc, + mx-dm-cs.h, mx-dm-m.cc, mx-dm-m.h, mx-dm-s.cc, mx-dm-s.h, + mx-m-cdm.cc, mx-m-cdm.h, mx-m-cm.cc, mx-m-cm.h, mx-m-cs.cc, + mx-m-cs.h, mx-m-dm.cc, mx-m-dm.h, mx-ops.h, mx-s-cdm.cc, + mx-s-cdm.h, mx-s-cm.cc, mx-s-cm.h, mx-s-dm.cc, mx-s-dm.h, + vx-ccv-cv.cc, vx-ccv-cv.h, vx-ccv-s.cc, vx-ccv-s.h, vx-crv-rv.cc, + vx-crv-rv.h, vx-crv-s.cc, vx-crv-s.h, vx-cs-cv.cc, vx-cs-cv.h, + vx-cs-rv.cc, vx-cs-rv.h, vx-cv-ccv.cc, vx-cv-ccv.h, vx-cv-cs.cc, + vx-cv-cs.h, vx-rv-crv.cc, vx-rv-crv.h, vx-rv-cs.cc, vx-rv-cs.h, + vx-s-ccv.cc, vx-s-ccv.h, vx-s-crv.cc, vx-s-crv.h: Delete. These + files are now automatically generated. + + * Makefile.in ($(VX_OP_INC), $(VX_OP_SRC), $(MX_OP_INC), + $(MX_OP_SRC)): Generate lists with new mk-ops.awk script. + Add rules to generate these files and mx-ops.h. + (stamp-prereq): Depend on these files. + + * mx-ops, vx-ops, mk-ops.awk: New files. + * Makefile.in (DISTFILES): Add them to the list. + +2003-10-17 John W. Eaton <jwe@bevo.che.wisc.edu> + + * NDArray.cc (NDArray::NDArray (const boolNDArray), + NDArray::NDArray (const charNDArray)): New constructors. + (NDArray::operator !): New function. + Provide NDS_CMP_OPS, NDS_BOOL_OPS, SND_CMP_OPS, SND_BOOL_OPS, + NDND_CMP_OPS, NDND_BOOL_OPS. + + * CNDArray.cc (ComplexNDArray::ComplexNDArray (const NDArray&), + ComplexNDArray::ComplexNDArray (const boolNDArray&), + ComplexNDArray::ComplexNDArray (const charNDArray&)): + New constructors. + (ComplexNDArray::operator !): New function. + Provide NDS_CMP_OPS, NDS_BOOL_OPS, SND_CMP_OPS, SND_BOOL_OPS, + NDND_CMP_OPS, NDND_BOOL_OPS. + + * ArrayN.h (resize (const dim_vector&)): Fix typo. + + * boolNDArray.cc (boolNDArray::operator !): New function. + Provide NDND_CMP_OPS. + + * MArrayN.cc (operator +=, operator -=): New functions. + Provide product and quotient functions. + + * MArray-misc.cc (gripe_nonconformant (const char *, dim_vector&, + dim_vector&)): New function. + + * dim-vector.h (dim_vector::str, dim_vector::all_zero, + operator ==, operator !=): New functions. + * ArrayN.cc (operator <<): Use dim_vector::str here. + + * Array.cc (Array<T>::resize_no_fill, Array<T>::resize_and_fill): + No need to save old dimensions. + + * oct-rand.cc (MAKE_RAND_ND_ARRAY): New macro. + (octave_rand::nd_array): New function. + * oct-rand.h (octave_rand::nd_array): Provide decl. + + * mx-op-defs.h (NDCMP_OP_DECL, NDBOOL_OP_DECL, NDS_BIN_OP_DECLS, + NDS_BIN_OP, NDS_BIN_OPS, NDS_CMP_OP_DECLS, NDS_CMP_OP, + NDS_CMP_OPS, NDS_BOOL_OP_DECLS, NDS_BOOL_OP, NDS_BOOL_OPS, + NDS_OP_DECLS, SND_BIN_OP_DECLS, SND_BIN_OP, SND_BIN_OPS, + SND_CMP_OP_DECLS, SND_CMP_OP, SND_CMP_OPS, SND_BOOL_OP_DECLS, + SND_BOOL_OP, SND_BOOL_OPS, SND_OP_DECLS, NDND_BIN_OP_DECLS, + NDND_BIN_OP, NDND_BIN_OPS, NDND_CMP_OP_DECLS, NDND_CMP_OP, + NDND_CMP_OPS, NDND_BOOL_OP_DECLS, NDND_BOOL_OP, NDND_BOOL_OPS, + NDND_OP_DECLS): New macros. + * mx-cm-m.h, mx-cm-s.h, mx-cs-m.h, mx-m-cm.h, mx-m-cs.h, + mx-s-cm.h, mx-cm-m.cc, mx-cm-s.cc, mx-cs-m.cc, mx-m-cm.cc, + mx-m-cs.cc, mx-s-cm.cc: Use them. + + * mx-defs.h (class NDArray, class ComplexNDArray, class + boolNDArray, class charNDArray): New forward decls. + +2003-10-15 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (assign2): No error (but don't do anything either) for + expressions like x([],j) = scalar. + +2003-10-09 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (assignN): Allow lhs(:) = scalar. + + * CNDArray.cc (ComplexNDArray::increment_index): New function. + * dNDArray.cc (NDArray::increment_index): Likewise. + * boolNDArray.cc (boolNDArray::increment_index): Likewise. + * chNDArray.cc (charNDArray::increment_index): Likewise. + + * dim-vector.h (rows, cols): Delete unused data members. + + * Array.cc (Array<T>::get_size): Fix thinko. + +2003-10-08 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::squeeze): New function. + * CNDArray.h (ComplexNDArray::squeeze): Likewise. + * dNDArray.h (NDArray::squeeze): Likewise. + * boolNDArray.h (boolNDArray::squeeze): Likewise. + * chNDArray.h (charNDArray::squeeze): Likewise. + +2003-10-06 Petter Risholm <risholm@stud.ntnu.no> + + * Array.cc (ArrayN<T>::indexN): New definition. + * Array.h (Array<T>::indexN): Provide decl. + * Array.cc (ArrayN<T>::index (idx_vector&, int, const T&): + Call indexN if more than 2 indices. + (ArrayN<T>::index (Array<idx_vector>&, int, const T&)): + Make it (mostly) work. + * ArrayN-inline.h (number_of_elements, get_ra_idx, short_freeze): + New functions. + +2003-10-02 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.cc (do_readline): Pass eof to octave_fgetl. + * lo-utils.cc (octave_fgets, octave_fgetl): New overloaded + versions with eof arg. + +2003-09-20 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.h (dimensions): Now public. + template <class LT, class RT> + (assign (Array<LT>&, const Array<RT>&, const LT&), + assign1 (Array<LT>&, const Array<RT>&, const LT&), + assign2 (Array<LT>&, const Array<RT>&, const LT&), + assignN (Array<LT>&, const Array<RT>&, const LT&), + resize_no_fill (int), + resize_no_fill (int, int), + resize_no_fill (int, int, int), + resize_no_fill (const dim_vector&), + resize_and_fill (int, const T&), + resize_and_fill (int, int, const T&), + resize_and_fill (int, int, int, const T&), + resize_and_fill (const dim_vector&, const T&)): Now public. + + * Array.cc: Include <climits>. + +2003-09-19 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc: Merge Array-idx.h. + * Array-idx.h: Delete. + + * chNDArray.h, chNDArray.cc, boolNDArray.h, boolNDArray.cc: New files. + + * Array.h, Array-idx.h, Array.cc: Fold all N-d functionality here. + Turn inheritance hierarchy upside down (2-d and 3-d arrays are now + just special cases of the general purpose N-d Array object). + + * dim-vector.h: New file. Use dim_vector objects instead of + ints or Array<int> objects to represent the size of Array + objects. + + * MArray-defs.h (INSTANTIATE_MARRAYN_FRIENDS): New macro. + + * Array2-idx.h, Array3-idx.h, Array2.cc, Array3.cc: Delete. + + * mx-base.h: Include NDArray header files. + + * MArray-C.cc, MArray-d.cc: Also instantiate ArrayN objects. + + * Array-C.cc, Array-b.cc, Array-ch.cc, Array-d.cc, Array-i.cc, + Array-s.cc: Also instantiate ArrayN objects. + Don't instantiate assign funcitons for Array2 objects. + + * CDiagMatrix.cc (ComplexDiagMatrix::diag): Signal error with + liboctave_error_handler, not cerr. + * CMatrix.cc (ComplexMatrix::diag): Likewise. + * dDiagMatrix.cc (DiagMatrix::diag): Likewise. + * dMatrix.cc (Matrix::diag): Likewise. + + * Array-flags.cc, Array.cc, Array.h, Array2.h, Array3.h, ArrayN.h: + Omit checks for HEAVYWEIGHT_INDEXING. + +2003-09-12 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mx-base.h: Include CNDarray.h. Include dNDArray.h, not NDArray.h. + + * CNDARray.h, CNDArray.cc: New files. + * Makefile.in: Add them to the appropriate lists. + + * dNDArray.h: Rename from NDArray.h. + * dNDArray.cc: Rename from NDArray.cc. + * Makefile.in: Rename them here too. + +2003-09-10 Petter Risholm <risholm@stud.ntnu.no> + + * mx-base.h: Include NDArray.h, not ArrayN.h. + + * MArrayN.cc, MArrayN.h, NDArray.h, NDArray.cc: New files. + * Makefile.in: Add them to the appropriate lists. + +2003-09-09 David Bateman <dbateman@free.fr> + + * lo-specfun.cc (zbesj, zbesy, zbesi, zbesk, zbesh1, zbesh2, airy, + biry): Always request scaled results from AMOS functions and + perform reverse scaling on results if scaled result not requested + by user. + +2003-09-04 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-specfun.cc (xlgamma): Require nonnegative argument. + +2003-09-09 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-d.cc: Instantiate assign functions. + +2003-09-09 Petter Risholm <risholm@stud.ntnu.no> + + * ArrayN-idx.h (vector_equivalent, equal_arrays): New functions. + (get_elt_idx): Index ra_idx correctly. + + * ArrayN-inline.h (index_in_bounds): Index is also condidered in + bounds if it is exactly on the bound. + + * ArrayN.cc (ArrayN<T>::maybe_delete_dims): New function. + * ArrayN.h: Provide decl. + + * ArrayN.h (ArrayN<T>::ArrayN<T> (const Matrix&)): New constructor. + + * idx-vector.h (idx_vector::orig_dims): New member variable. + (idx_vector::idx_vector_rep::orig_dimensions): New function. + (idx_vector::orig_dimensions): New function. + +2003-09-04 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-specfun.cc (xlgamma): Require nonnegative argument. + +2003-09-04 Petter Risholm <risholm@stud.ntnu.no> + + * ArrayN-idx.h (maybe_delete_elements): Implement function. + (is_in, how_many_lgt, all_ones): New functions. + +2003-09-03 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (MATRIX_INC): Add ArrayN-inlines.h to the list. + +2003-09-03 Petter Risholm <risholm@stud.ntnu.no> + + * ArrayN-inline.h: New file. + (index_in_bounds, increment_index): Move here. + * ArrayN.cc: From here. + + * ArrayN.h (maybe_delete_elements): New arg, resize_fill_value. + * ArrayN-idx.h (assign): New function. + +2003-08-28 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-specfun.cc (zbesj, zbesy, zbesi, zbesk, airy, biry): + Also zero imaginary part of result if real part of input value is + zero. + +2003-07-30 Heine Kolltveit <kolltvei@idi.ntnu.no> + + * mx-base.h: Include ArrayN.h. + +2003-30-07 Heine Kolltveit <kolltvei@idi.ntnu.no> + + * ArrayN.cc (operator <<): Corrected output. + +2003-07-30 John W. Eaton <jwe@bevo.che.wisc.edu> + + * ArrayN.cc (increment_index): New arg, start_dimension. + +2003-07-29 Heine Kolltveit <kolltvei@idi.ntnu.no> + + * ArrayN.cc (operator <<): Improve output readability. + +2003-07-29 Petter Risholm <risholm@stud.ntnu.no> + + * ArrayN.cc (ArrayN<T>::resize (const Array<int>&, const T&)): + * ArrayN.cc (ArrayN<T>::resize (const Array<int>&)): + Initialize old_len before changing size. + +2003-07-29 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (install-lib): Use $(INSTALL), not + $(INSTALL_PROGRAM) for $(SHLLIB) files. + +2003-07-25 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc (xmin, xmax): Handle NaN in a Matlab-compatible + way. Handle NA in an R-compatible way. + + * lo-cieee.c (lo_ieee_is_NaN_or_NA): Also check for lo_ieee_is_NA. + (lo_ieee_is_NA): Don't call isnan unless HAVE_ISNAN is defined. + + * lo-mappers.h (octave_is_NA (const Complex&)): Provide decl. + (octave_is_NaN_or_NA (const Complex&)): Likewise. + + * dMatrix.cc (Matrix::row_min, Matrix::row_max, + Matrix::column_min, Matrix::column_max): Ignore NaNs. + * CMatrix.cc (ComplexMatrix::row_min, ComplexMatrix::row_max, + ComplexMatrix::column_min, ComplexMatrix::column_max): Likewise. + +2003-07-11 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (assign (Array2<LT>&, const Array2<RT>&, const LT&)): + Pass true for resize_ok arg to freeze. + * Array-idx.h (assign (Array<LT>&, const Array<RT>&, const LT&)): + Likewise. + + * idx-vector.cc (IDX_VEC_REP::freeze): New arg, warn_resize; + resize_ok arg is now bool. + * idx-vector.h (idx_vector::freeze): Likewise. + + * Array-flags.cc, Array-flags.h (liboctave_wrore_flag): + Rename from liboctave_rre_flag. Now bool. + (liboctave_wfi_flag): Now bool. + + * Array2-idx.h (MAYBE_RESIZE_LHS): Don't check liboctave_rre_flag. + +2003-07-11 Russell Standish <R.Standish@unsw.edu.au> + + * Array.h (resize_fill_value): Now a top-level template function. + Accept object as argument. Change all uses. + +2003-07-09 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-flags.cc, Array-flags.h (liboctave_pcv_flag): Delete. + + * Array2-idx.h (Array2<T>::index): Use liboctave_wfi_flag, not + liboctave_dfi_flag. + (assign): Likewise. For indexed assignments like X(I) = RHS with + X undefined or empty, always create a row vector. + + * Array-flags.cc (liboctave_wfi_flag): Rename from liboctave_dfi_flag. + * Array-flags.h (liboctave_wfi_flag): Ditto. + +2003-06-24 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>::index (idx_vector&, int, const T&)): + Magic colon indexing always produces an object with one column. + +2003-06-21 Paul Kienzle <pkienzle@users.sf.net> + + * kpse-xfns.h (NAME_BEGINS_WITH_DEVICE): Arg is std::string, not char*. + + * lo-ieee.h (signbit): Eliminate redundant extern "C" decl. + +2003-06-18 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (any_element_is_negative): If new optional arg + neg_zero is true, also return true for negative zero. + +2003-06-16 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASSL.cc (DASSL::do_integrate): Set liw to 21 + n, not 20 + n. + Handle step limit. + * DASSL-opts.in: New option for step limit. + +2003-06-16 Per Persson <persquare@mac.com> + + * oct-shlib.cc: Include mach-o/dyld.h, not Mach-O/dyld.h. + +2003-06-16 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASRT.cc (DASRT::integrate): Set liw to 21 + n, not 20 + n. + Store step limit in iwork(20), not iwork(18). + +2003-05-16 Paul Kienzle <pkienzle@users.sf.net> + + * oct-rand.cc: Use liboctave's clock layer instead of the system clock. + +2003-05-14 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in: Handle DESTDIR. + + * kpse.cc (kpse_path_iterator::next): Skip consecutive colons here. + (kpse_path_iterator::set_end): Don't miss last element when not + followed by a colon. + +2003-05-11 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-idx.h (Array<T>::index): Fix off-by-one error. + +2003-05-07 John W. Eaton <jwe@bevo.che.wisc.edu> + + * kpse.cc (kpse_absolute_p): Fix typo in translation. + (find_first_of): Also do an absolute search on each + name before looking in the path. + +2003-05-04 John W. Eaton <jwe@bevo.che.wisc.edu> + + * kpse.cc (dir_list_add): Ensure that directory ends with a + directory separator. + +2003-04-30 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pathsearch.cc: Include kpse.cc here. + + * kpse.cc: All functions are now static. Massive surgery to + condense kpathsearch library to a single file of just the + essentials for Octave and convert to using C++ strings (no more + calls to malloc, very few calls to new, so there should be much + less potential for introducing memory leaks now). + + * Makefile.in (EXTRAS): Move kpse.cc here from + LIBOCT_PATHSEARCH_CXX_SOURCES. + + * kpse.h, kpse-config.h: Delete. + * Makefile.in (INCLUDES): Delete them from the list. + +2003-04-26 John W. Eaton <jwe@bevo.che.wisc.edu> + + * str-vec.cc (string_vector::append (const std::string&), + string_vector::append (const string_vector&)): New methods. + +2003-04-24 John W. Eaton <jwe@bevo.che.wisc.edu> + + * kpse.cc, kpse.h: Replace fn_type with std::string. + + * lo-ieee.h (lo_ieee_signbit): Provide signbit decl for MinGW systems. + + * kpse.cc (xclosedir): Don't define or declare for Windows. + (READABLE): Now a static function to avoid warnings from MinGW + compiler. + +2003-04-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * kpse.cc: Move most functions from kpse-xfns.c here and make + static. Include most of kpse-xfns.h directly, removing + unnecessary bits. + + * dMatrix.cc (Matrix::pseudo_inverse): Now const. + * CMatrix.cc (ComplexMatrix::pseudo_inverse): Likewise. + +2003-04-18 John W. Eaton <jwe@bevo.che.wisc.edu> + + * getopt.c, getopt1.c, getopt.h: Move here from kpathsea. + * Makefile.in: Add them to the appropriates lists. + + * oct-getopt.c: Include "getopt.h", not <kpathsea/getopt.h>. + + * Makefile.in (liboctave.$(LIBEXT), liboctave.$(SHLEXT)): Adjust + for new locations of kpathsea objects. + Delete kpathsea targets. + + * pathsearch.cc (dir_path::set_program_name): Delete. + + * kpse.cc: New file. + * Makefile.in (LIBOCT_PATHSEARCH_CXX_SOURCES): Add it to the list. + + * kpse.c: New file. + * Makefile.in (LIBOCT_PATHSEARCH_C_SOURCES): Add it to the list. + + * kpse.h, kpse-config.h, kpse-xfns.h: New files. + * Makefile.in (INCLUDES): Add them to the list. + + * oct-kpse.h: Delete. + * Makefile.in (INCLUDES): Delete it from the list. + +2003-04-07 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleSVD.h (SVD::SVD, SVD::operator =): Also copy type_computed. + * CmplxSVD.h (ComplexSVD::ComplexSVD, ComplexSVD::operator =): + Likewise. + From Quentin H. Spencer <qspencer@ieee.org>. + +2003-03-03 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-getopt.c: Include <kpathsea/getopt.h>, not "getopt.h". + +2003-02-21 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-alloc.h (DECLARE_OCTAVE_ALLOCATOR): Handle systems with or + without placement delete. + + * CMatrix.cc (ComplexMatrix::all_elements_are_real): Don't lose -0 + imaginary parts. + + * lo-ieee.h (lo_ieee_signbit): New macro. + +2003-02-18 David Bateman <dbateman@free.fr> + + * dMatrix.cc (Matrix::inverse, Matrix::determinant, Matrix::solve): + Use Lapack instead of Linpack. + * CMatrix.cc (ComplexMatrix::inverse, ComplexMatrix::determinant, + ComplexMatrix::solve): Likewise. + + * dMatrix.cc (Matrix::determinant, Matrix::inverse): New arg, + calc_cond. If 0, skip condition number calculation. + * CMatrix.cc (ComplexMatrix::determinant, ComplexMatrix::inverse): + Likewise. + + * CmplxLU.cc (ComplexLU::ComplexLU): Allow non-square matrices. + * dbleLU.cc (LU::LU): Likewise. + * base-lu.cc (base_lu::L), base_lu::U, base_lu::P): Likewise. + +2002-10-31 John W. Eaton <jwe@bevo.che.wisc.edu> + + * octave.test/arith/prod-4.m, octave.test/arith/sum-4.m: + +2003-02-14 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>::index): Fix thinko. + Additional compatibility fix. + +2003-02-13 Arno Klaassen <arno@scito.com> + + * Array2-idx.h, Array2.cc, Array2.h, Array3.cc, Array3.h, + ArrayN.cc, ArrayN.h, DiagArray2.cc, DiagArray2.h, MDiagArray2.h: + Sprinkle with Array<T>:: as necessary for gcc 3.4. + +2003-02-13 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>::index (idx_vector&, int, const T&)): + Compatibility fix. + +2003-02-10 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CColVector.cc (ComplexColumnVector::extract_n): New function. + * CRowVector.cc (ComplexRowVector::extract_n): Likewise. + * CMatrix.cc (ComplexMatrix::extract_n): Likewise. + * dColVector.cc (ColumnVector::extract_n): Likewise. + * dRowVector.cc (RowVector::extract_n): Likewise. + * dMatrix.cc (Matrix::extract_n): Likewise. + + * CColVector.cc (ComplexColumnVector::insert): Improve efficiency + with make_unique and xelem. + * CRowVector.cc (ComplexRowVector::insert): Likewise. + * CMatrix.cc (ComplexMatrix::insert, ComplexMatrix::fill, + ComplexMatrix::extract, ComplexMatrix::row, + ComplexMatrix::column): Likewise. + * dColVector.cc (ColumnVector::insert): Likewise. + * dRowVector.cc (RowVector::insert): Likewise. + * dMatrix.cc (Matrix::insert, Matrix::fill, Matrix::extract, + Matrix::row, Matrix::column): Likewise. + +2003-01-30 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc (imag (double)): Return 0.0 for all args, even NaN. + +2003-01-28 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.cc, dMatrix.cc: Move min and max functions here, from + src/DLD-FUNCTIONS/minmax.cc, and make them extern. + * CMatrix.h, dMatrix.h: Provide decls. + +2003-01-24 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-rand.h, oct-rand.cc: New files. + * Makefile.in: Add them to the appropriate lists. + +2003-01-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>::index): Fix off-by-one error. + +2003-01-16 Mumit Khan <khan@nanotech.wisc.edu> + + * oct-syscalls.cc: Include signal.h. + +2003-01-10 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-syscalls.cc (octave_syscalls::kill): New function. + * oct-syscalls.h: Provide decl. + + +2003-01-06 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::read): Set size and return immediately if + there is nothing to read. + +2003-01-05 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-cutils.c: Define _XOPEN_SOURCE. + +2003-01-04 John W. Eaton <jwe@bevo.che.wisc.edu> + + * getopt.h: Update to version from kpathsearch, so we will install + the version that we are using. + + * getopt.c, getopt1.c: Delete. + (INCLUDES): Delete them from the list. We'll get these files from + kpathsearch. + + * Makefile.in (liboctave.$(LIBEXT)): Link directly to + ../kpathsea/STATIC/*.o. + (liboctave.$(SHLEXT)): Link directly to ../kpathsea/SHARED/*.o. + +2003-01-03 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (read_int, write_int): Avoid warnings about + unreachable code. + + * oct-alloc.h (DECLARE_OCTAVE_ALLOCATOR): Define operator delete + to correspond to placement new operator. + + * dbleDET.cc (DET::value_will_overflow): We want det[1], not det[2]. + (DET::value_will_underflow): Likewise. + * CmplxDET.cc (ComplexDET::value_will_overflow): Likewise. + (ComplexDET::value_will_underflow): Likewise. + + * Makefile.in (distclean): Also remove stamp-prereq. + + * Array2-idx.h (Array2<T>::assign): If assignment conforms but the + RHS and index are empty matrices, don't do anything. + +2002-12-26 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pathsearch.cc (make_retval, free_c_array, make_c_names, + delete_c_names): New helper functions. + (dir_path::find_first_of): New function. + (dir_path::find_all_first_of): Likewise. + * pathsearch.h: Provide decls. + + * oct-kpse.c (octave_kpse_path_find_first_of): New function. + (octave_kpse_all_path_find_first_of): Likewise. + * oct-kpse.h: Provide decls. + +2002-12-19 John W. Eaton <jwe@bevo.che.wisc.edu> + + * ODESSA.cc (ODESSA::integrate): Handle maxord. + * ODESSA-opts.in: Likewise. + + * LSODE.cc (ODESSA::integrate): Handle maxord. + * LSODE-opts.in: Likewise. + +2002-12-18 John W. Eaton <jwe@bevo.che.wisc.edu> + + * ODESSA.cc (ODESSA::ODESSA): Initialize "initialized" data member + in all constructors. + + * Makefile.in (liboctave.$(SHLEXT)): Include $(LIBKPATHSEA) here. + (LINK_DEPS): Not here. + +2002-12-06 John W. Eaton <jwe@bevo.che.wisc.edu> + + * str-vec.cc (string_vector::compare): New static member function. + * str-vec.h: Provide decl. + (string_vector::sort): Use it. + (str_vec_compare): Delete static function. + + * oct-alloc.h (DECLARE_OCTAVE_ALLOCATOR): Also declare and define + a placement operator new. + +2002-12-03 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Matrix.h: Include mx-ops.h too. + * mx-ops.h: New file. + +2002-11-20 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASRT.cc, DASRT.h, Array.cc, ArrayN.h, Array.h, Array2.cc, + Array2.h, Array3.cc, Array3.h, Bounds.cc, Bounds.h, CRowVector.h, + CDiagMatrix.cc, CDiagMatrix.h, CMatrix.cc, CMatrix.h, + CRowVector.cc, CColVector.h, ChangeLog, CmplxAEPBAL.cc, + CmplxAEPBAL.h, CmplxCHOL.cc, CmplxCHOL.h, CmplxDET.cc, CmplxDET.h, + CmplxHESS.cc, CmplxHESS.h, CmplxLU.cc, CmplxLU.h, CmplxQR.cc, + CmplxQR.h, CmplxQRP.cc, ArrayN.cc, CmplxQRP.h, CmplxSCHUR.cc, + CmplxSCHUR.h, CmplxSVD.cc, CmplxSVD.h, CollocWt.cc, dMatrix.cc, + CollocWt.h, EIG.h, DASSL.cc, FEGrid.h, DASSL.h, DiagArray2.cc, + DiagArray2.h, EIG.cc, FEGrid.cc, LSODE.cc, LPsolve.cc, LPsolve.h, + LSODE.h, LinConst.cc, LinConst.h, MArray.h, MArray.cc, MArray2.cc, + MArray2.h, MDiagArray2.cc, MDiagArray2.h, Range.cc, NLConst.h, + NLEqn.cc, Range.h, NLEqn.h, Quad.cc, dbleQR.h, Quad.h, base-lu.cc, + base-lu.h, boolMatrix.cc, boolMatrix.h, dColVector.cc, + dColVector.h, dDiagMatrix.cc, dDiagMatrix.h, dMatrix.h, + dRowVector.cc, dRowVector.h, dbleAEPBAL.cc, dbleAEPBAL.h, + dbleCHOL.cc, dbleCHOL.h, dbleDET.cc, dbleDET.h, dbleHESS.cc, + dbleHESS.h, dbleLU.cc, dbleLU.h, dbleQR.cc, dbleQRP.cc, dbleQRP.h, + dbleSCHUR.cc, dbleSCHUR.h, dbleSVD.cc, dbleSVD.h, idx-vector.cc, + idx-vector.h, oct-alloc.cc, CColVector.cc, DASPK.h, DASPK.cc, + ODESSA.h, ODES.h, ODESSA.cc, ODES.cc, chMatrix.h, chMatrix.cc: + Use "defined (USE_PRAGMA_INTERFACE_IMPLEMENTATION)" instead of + "! defined (NO_PRAGMA_INTERFACE_IMPLEMENTATION)". + +2002-11-15 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-shlib.cc (octave_dlopen_shlib::open): Use RTLD_GLOBAL too. + From Remy Bruno <remy.bruno@libertysurf.fr> + +2002-11-14 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-specfun.cc: Use F77_FUNC instead of F77_XFCN for calls to + fortran code that should run fast enough that it is not worth all + the setup costs of F77_XFCN. + + * Quad.cc (user_function): Surround body of function with + BEGIN_INTERRUPT_WITH_EXCEPTIONS, END_INTERRUPT_WITH_EXCEPTIONS. + * ODESSA.cc (odessa_f, odessa_j, odessa_b): Likewise. + * NLEqn.cc (hybrd1_fcn, hybrj1_fcn): Likewise. + * LSODE.cc (lsode_f, lsode_j): Likewise. + * DASSL.cc (ddassl_f, ddassl_j): Likewise. + * DASRT.cc (ddasrt_f, ddasrt_j, ddasrt_g): Likewise. + * DASPK.cc (ddaspk_f, ddaspk_psol, ddaspk_j): Likewise. + +2002-11-11 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.cc (octave_ieee_init): Check defined (__osf__) instead + of ! defined (linux). + +2002-11-09 Per Persson <persquare@mac.com> + + * oct-shlib.cc (octave_dyld_shlib): New class. + (make_shlib): Instantiate octave_dyld_shlib. + +2002-11-06 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.cc, dMatrix.cc: Sprinkle with OCTAVE_QUIT. + + * ODESSA.cc (odessa_f, odessa_j, odessa_b): Abort on error. + + * Array.h: Include <cstddef> here. + +2002-11-01 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASPK.cc (DASPK::do_integrate): Resize rwork and iwork before + using them. Accept inequality contraint option of 0. Assign + pabs_tol and prel_tol before calling DASPK. Don't redeclare + abs_tol and rel_tol. + + * cmd-edit.h (command_editor::filename_completion_desired): New + static function. + (command_editor::do_filename_completion_desired): New virtual function. + * oct-rl-edit.c (octave_rl_filename_completion_desired): New function. + * oct-rl-edit.h: Provide decl. + + * Array2.cc (Array2<T>::get_size): #define MALLOC_OVERHEAD to + avoid OS X linker bug. + * ArrayN.cc (ArrayN<T>::get_size): Likewise. + +2002-10-31 John W. Eaton <jwe@bevo.che.wisc.edu> + + * ODESFunc.h (ODESFunc::ODES_fsub, ODESFunc::ODES_bsub, + ODESFunc::ODES_jsub): Reorder args for consistency with other + solvers. + * ODESSA.cc: Fix all callers. + + * mx-inlines.cc (MX_BASE_REDUCTION_OP): Also return scalar + MT_RESULT if nr == 1 && nc == 0 && dim == -1 (i.e., + sum(zeros(1,0)) returns 0, not [](1x0)). + +2002-10-30 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (LINK_DEPS): Include $(FLIBS) here too. + +2002-10-29 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASRT.cc (DASRT::integrate): Fix computation of lrw + (ddasrt_f): Combine loops. + + * NLEqn.cc (NLEqn::solve): Return current estimate of solution + instead of empty vector if user termninates iteration. + +2002-10-28 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-utils.cc (read_inf_nan_na, octave_read_double, + octave_read_complex, octave_write_double, octave_write_complex): + New functions. + * CMatrix.cc (operator << (std::ostream&, const ComplexMatrix&)): + Use octave_write_complex. + (operator >> (std::istream&, const ComplexMatrix&)): + Use octave_read_complex. + * dMatrix.cc (operator << (std::ostream&, double)): + Use octave_write_double. + (operator >> (std::istream&, double)): Use octave_read_double. + +2002-10-25 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-kpse.c (octave_kpse_clear_dir_cache): Delete. + * oct-kpse.h: Delete decl. + * pathsearch.cc (dir_path::init): Delete unnecessary call to + ::octave_kpse_clear_dir_cache. + +2002-10-24 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-sstream.h: Undef HAVE_SSTREAM if using a version of g++ + earlier than 3.0. + + * Makefile.in (LINK_DEPS): Include $(LIBKPATHSEA) here. + (liboctave.$(SHLEXT)): Not here. + +2002-10-17 Paul Kienzle <pkienzle@users.sf.net> + + * oct-shlib.cc (octave_w32_shlib): New class to support Windows. + +2002-10-16 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (install-lib): Don't bother with versions for + $(SHLBIN) files. + +2002-10-16 Paul Kienzle <pkienzle@users.sf.net> + + * Makefile.in (LIB_DEPS): Include $(LIBS). + +2002-10-14 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-cieee.c: Move everything but lo_ieee_init here. + (lo_ieee_Inf_value, lo_ieee_NA_value, lo_ieee_NaN_value): + New functions. + + * Makefile.in (install): No need to use cd to create links. + (LINK_DEPS): Include $(LIBOCTAVE_LFLAGS) before list of libraries. + +2002-10-14 Paul Kienzle <pkienzle@users.sf.net> + + * Makefile.in: Merge liboctave with liboct-readline and + liboct-pathsearch. + Use link dependencies for shared libs if INCLUDE_LINK_DEPS. + (libraries): Depend on versioned library. + (liboctave.$(SHLEXT), liboctave.$(SHLEXT_VER)): Reverse actions -- + build unversioned library, symbolic link adds version info. + (install, uninstall): Handle link and load forms of the library + separately. + +2002-10-11 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-time.cc: Use OCTAVE_USE_WINDOWS_API instead of __WIN32__ and + __CYGWIN__. + + * file-ops.cc (file_ops::dir_sep_char, file_ops::dir_sep_str, + file_ops::dir_sep_chars): New static functions to replace + OCTAVE_DIR_SEP_CHAR, OCTAVE_DIR_SEP_STR, OCTAVE_DIR_SEP_CHARS. + + * oct-env.cc (octave_env::do_set_program_name): + Use file_ops::dir_sep_chars instead of OCTAVE_DIR_SEP_CHARS. + (octave_env::do_base_pathname): Likewise. + (octave_env::do_make_absolute): Likewise. + + * oct-env.cc (octave_env::do_make_absolute): + Use file_ops::dir_sep_str instead of OCTAVE_DIR_SEP_STR. + (octave_env::do_get_home_directory): Likewise. + + * file-ops.cc (is_dir_sep): Use dir_sep_chars instead of embedding + that information here too. + (tilde_find_suffix, isolate_tilde_prefix, tilde_expand_word): + Use file_ops::dir_sep_char instead of OCTAVE_DIR_SEP_CHAR. + + * file-ops.h: Use OCTAVE_HAVE_WINDOWS_FILESYSTEM and + OCTAVE_HAVE_POSIX_FILESYSTEM instead of __WIN32__ and __CYGWIN__. + +2002-10-09 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-env.h (octave_env::current_directory): Now mutable. + (octave_env:do_getcwd): Now const. + + * file-ops.h, file-ops.cc (file_ops::is_dir_sep): New function. + (OCTAVE_DIR_SEP_CHAR, OCTAVE_DIR_SEP_STR, OCTAVE_DIR_SEP_CHARS, + OCTAVE_CURRENT_DIR_STR): New macros. + * oct-env.cc (is_dir_sep): Delete. + (octave_env::do_base_pathname): Look for OCTAVE_DIR_SEP_CHARS, not '/'. + (octave_env::do_set_program_name): Likewise. + (octave_env::do_polite_directory_format): Use file_ops::is_dir_sep + instead of checking for '/'. + (octave_env::pathname_backup): Likewise. + (octave_env::do_absolute_pathname): Likewise. + (octave_env::do_make_absolute): Likewise. + If dot_path is empty, use getcwd to set current_dir. + (octave_env::do_get_home_directory): Use OCTAVE_DIR_SEP_STR + instead of "/". + +2002-10-07 Paul Kienzle <pkienzle@users.sf.net> + + * lo-cutils.c: On non-Posix Windows systems, include winsock.h. + +2002-10-07 Paul Kienzle <pkienzle@users.sf.net> + + * oct-env.cc (octave_env::do_absolute_pathname): Recognize + absolute path names under MinGW as well. + +2002-10-07 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-env.cc: Include <cctype> too. + +2002-10-04 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-env.cc (octave_env::do_absolute_pathname): Handle Windows + filenames. + (octave_env::do_make_absolute): Check for absolute name with + do_absolute_path. + (octave_env::do_chdir): Likewise. + (is_dir_sep): New function. + +2002-10-03 Paul Kienzle <pkienzle@users.sf.net> + + * oct-time.cc (octave_time::stamp): Better resolution for Windows + systems. + +2002-10-02 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::read): Clean up error handling logic. + +2002-09-30 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.cc (file_ops::mkdir): Handle one-arg mkdir here. + + * lo-specfun.cc (acosh): Call xdacosh, not dacosh. + +2002-09-27 Per Persson <persquare@mac.com> + + * oct-group.cc (octave_group::octave_group): Dont' forget to set + gr_gid too. + +2002-09-27 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc (xisnan, xfinite, xisinf): Simply forward to + lo_ieee_* functions. + * Makefile.in (LIBOCTAVE_C_SOURCES): Add lo-cieee.c to the list. + * lo-ieee.cc (lo_ieee_double): Rename from ieee_double. + (LO_IEEE_NA_HW, LO_IEEE_NA_LW): Rename from NA_HW and NA_LW. + * lo-cieee.c: New file. + [SCO] (isinf, isnan): Move here from lo-ieee.cc. + * lo-ieee.h: Now all extern "C". + (lo_ieee_isnan, lo_ieee_finite, lo_ieee_isinf): Move here from + lo-mappers.cc and rename from xisnan, xfinite, xisinf. + + * lo-ieee.cc (lo_ieee_hw, lo_ieee_low): Rename from hw and lw. + Now extern. + +2002-09-26 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc, Array.h, Array2.cc, Array2.h, Array3.cc, Array3.h, + ArrayN.cc, ArrayN.h, Bounds.cc, Bounds.h, CColVector.cc, + CColVector.h, CDiagMatrix.cc, CDiagMatrix.h, CMatrix.cc, + CMatrix.h, CRowVector.cc, CRowVector.h, CmplxAEPBAL.cc, + CmplxAEPBAL.h, CmplxCHOL.cc, CmplxCHOL.h, CmplxDET.cc, CmplxDET.h, + CmplxHESS.cc, CmplxHESS.h, CmplxLU.cc, CmplxLU.h, CmplxQR.cc, + CmplxQR.h, CmplxQRP.cc, CmplxQRP.h, CmplxSCHUR.cc, CmplxSCHUR.h, + CmplxSVD.cc, CmplxSVD.h, CollocWt.cc, CollocWt.h, DAE.cc, + DASPK.cc, DASPK.h, DASRT.cc, DASRT.h, DASSL.cc, DASSL.h, + DiagArray2.cc, DiagArray2.h, EIG.cc, EIG.h, FEGrid.cc, FEGrid.h, + LPsolve.cc, LPsolve.h, LSODE.cc, LSODE.h, LinConst.cc, LinConst.h, + MArray.cc, MArray.h, MArray2.cc, MArray2.h, MDiagArray2.cc, + MDiagArray2.h, NLConst.h, NLEqn.cc, NLEqn.h, ODES.cc, ODES.h, + ODESSA.cc, ODESSA.h, Quad.cc, Quad.h, Range.cc, Range.h, + base-lu.cc, base-lu.h, boolMatrix.cc, boolMatrix.h, chMatrix.cc, + chMatrix.h, dColVector.cc, dColVector.h, dDiagMatrix.cc, + dDiagMatrix.h, dMatrix.cc, dMatrix.h, dRowVector.cc, dRowVector.h, + dbleAEPBAL.cc, dbleAEPBAL.h, dbleCHOL.cc, dbleCHOL.h, dbleDET.cc, + dbleDET.h, dbleHESS.cc, dbleHESS.h, dbleLU.cc, dbleLU.h, + dbleQR.cc, dbleQR.h, dbleQRP.cc, dbleQRP.h, dbleSCHUR.cc, + dbleSCHUR.h, dbleSVD.cc, dbleSVD.h, idx-vector.cc, idx-vector.h, + oct-alloc.cc: + If __GNUG__, use pragma interface/implementation. Allow this to + be turned off by defining NO_PRAGMA_INTERFACE_IMPLEMENTATION. + +2002-09-26 Paul Kienzle <pkienzle@users.sf.net> + + * file-ops.cc (file_ops::readlink): Don't declare buffer if + system readlink function is not available. + + * lo-mappers.cc (xerf, xerfc): Delete. + * lo-mappers.h (xerf, xerfc): Delete decls. + + * lo-mappers.cc: Remove unused #define M_PI. + * lo-specfun.cc: Add #define M_PI if needed. + +2002-09-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.cc (do_decode_prompt_string): Cope with possibility + that geteuid doesn't exist. + + * LP.h: Rename LP class to octave_LP. + LPsolve.h: Change all uses. + + * file-ops.cc, oct-passwd.cc oct-syscalls.cc oct-group.cc: Remove + incorrect token-pasting op. + + * statdefs.h [! S_ISLNK]: undef HAVE_LSTAT instead of trying to + define lstat. + +2002-09-19 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc, Array.h, Array2.cc, Array2.h, Array3.cc, Array3.h, + ArrayN.cc, ArrayN.h, Bounds.cc, Bounds.h, CColVector.cc, + CColVector.h, CDiagMatrix.cc, CDiagMatrix.h, CMatrix.cc, + CMatrix.h, CRowVector.cc, CRowVector.h, CmplxAEPBAL.cc, + CmplxAEPBAL.h, CmplxCHOL.cc, CmplxCHOL.h, CmplxDET.cc, CmplxDET.h, + CmplxHESS.cc, CmplxHESS.h, CmplxLU.cc, CmplxLU.h, CmplxQR.cc, + CmplxQR.h, CmplxQRP.cc, CmplxQRP.h, CmplxSCHUR.cc, CmplxSCHUR.h, + CmplxSVD.cc, CmplxSVD.h, CollocWt.cc, CollocWt.h, DAE.cc, + DASPK.cc, DASPK.h, DASRT.cc, DASRT.h, DASSL.cc, DASSL.h, + DiagArray2.cc, DiagArray2.h, EIG.cc, EIG.h, FEGrid.cc, FEGrid.h, + LPsolve.cc, LPsolve.h, LSODE.cc, LSODE.h, LinConst.cc, LinConst.h, + MArray.cc, MArray.h, MArray2.cc, MArray2.h, MDiagArray2.cc, + MDiagArray2.h, NLConst.h, NLEqn.cc, NLEqn.h, ODES.cc, ODES.h, + ODESSA.cc, ODESSA.h, Quad.cc, Quad.h, Range.cc, Range.h, + base-lu.cc, base-lu.h, boolMatrix.cc, boolMatrix.h, chMatrix.cc, + chMatrix.h, dColVector.cc, dColVector.h, dDiagMatrix.cc, + dDiagMatrix.h, dMatrix.cc, dMatrix.h, dRowVector.cc, dRowVector.h, + dbleAEPBAL.cc, dbleAEPBAL.h, dbleCHOL.cc, dbleCHOL.h, dbleDET.cc, + dbleDET.h, dbleHESS.cc, dbleHESS.h, dbleLU.cc, dbleLU.h, + dbleQR.cc, dbleQR.h, dbleQRP.cc, dbleQRP.h, dbleSCHUR.cc, + dbleSCHUR.h, dbleSVD.cc, dbleSVD.h, idx-vector.cc, idx-vector.h, + oct-alloc.cc: + Use USE_PRAGMA_INTERFACE_IMPLEMENTATION instead of __GNUG__ + to decide whether to use the interface/implementation pragmas. + +2002-09-08 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (INCLUDES): Add lo-sstream.h to the list. + +2002-08-17 Mumit Khan <khan@nanotech.wisc.edu> + + * CmplxCHOL.h, CollocWt.h, cmd-edit.h, oct-shlib.h: Don't use + qualified names. + +2002-08-17 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.h, Array2-idx.h, DiagArray2.cc, Array2.cc, Array3.cc, + ArrayN.cc: Add typename where needed. + + * DASPK.cc: Include lo-sstream.h and use macros instead of using + strstream classes directly. + * DASRT.cc: Likewise. + * DASSL.cc: Likewise. + * LSODE.cc: Likewise. + * ODESSA.cc: Likewise. + + * cmd-hist.cc: Don't include <strstream>. + * oct-shlib.cc: Likewise. + + * lo-sstream.h: New file. + +2002-08-16 John W. Eaton <jwe@bevo.che.wisc.edu> + + * LSODE.h (rel_tol, abs_tol, px, pabs_tol, piwork, prwork, itol): + New data members. + (LSODE::sanity_checked): Delete unused data member. + + * DASPKL.h (initialized, abs_tol, rel_tol, px, pxdot, pabs_tol, + prel_tol, pinfo, piwork, prwork): New data members. + * DASSL.h (DASSL): Likewise. + + * DASRT.h (DASRT::sanity_checked): Delete unused data member. + + * DASRT.cc (DASRT::integrate (double)): Better handling of + initialization, changes in options, etc. + * DASPK.cc (DASPK::do_integrate): Likewise. + * DASSL.cc (DASSL::do_integrate): Likewise. + * LSODE.cc (LSODE::do_integrate): Likewise. + +2002-08-15 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DAEFunc.h (DAEFunc::reset): New data member. + * DAERTFunc.h (DAERTFunc::reset): Likewise. + + * base-de.h (base_diff_eqn::set_stop_time): Force restart here. + (base_diff_eqn::clear_stop_time): Likewise. + + * DASSL.cc (DASSL::do_integrate (double)): Handle more optoins. + * DASPK.cc (DASPK::do_integrate (double)): Likewise. + +2002-08-15 Paul Kienzle <pkienzle@users.sf.net> + + * DASPK-opts.in, DASPK.h: Move include to .in file. + * DASRT-opts.in, DASRT.h: Likewise. + * DASSL-opts.in, DASSL.h: Likewise. + * LSODE-opts.in, LSODE.h: Likewise. + * NLEqn-opts.in, NLEqn.h: Likewise. + * ODESSA-opts.in, ODESSA.h: Likewise. + +2002-08-14 John W. Eaton <jwe@bevo.che.wisc.edu> + + * LSODE.cc (LSODE::error_message): Also return current T on + failures when that makes sense. + * DASSL.cc (DASSL::error_message): Likewise. + * DASRT.cc (DASRT::error_message): Likewise. + * DASPK.cc (DASPK::error_message): Likewise. + * ODESSA.cc (ODESSA:error_message): Likewise. + + * Makefile.in (liboct-pathsearch.$(SHLEXT_VER)): Link to + $(LIBKPATHSEA) here. + +2002-08-08 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.cc (lo_ieee_is_NA): New function. + (lo_ieee_is_NaN_or_NA): New function. + (octave_NA): New global value. + (octave_ieee_init): Initialize it. + * lo-mappers.cc (octave_is_NA): New function. + (octave_is_NaN_or_NA): New function. + (xisnan): Return false if NaN looks like a missing value. + (xisnan (const Complex&)): Use xisnan here. + +2002-08-02 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.h (ComplexMatrix::all, ComplexMatrix::any, + ComplexMatrix::cumprod, ComplexMatrix::cumsum, + ComplexMatrix::prod, ComplexMatrix::sum, ComplexMatrix::sumsq): + Default value for dim is -1, not 0. + * dMatrix.h (Matrix::all, Matrix::any, Matrix::cumprod, + Matrix::cumsum, Matrix::prod, Matrix::sum, Matrix::sumsq): Likewise. + * boolMatrix.h (boolMatrix:all, boolMatrix::any): Likewise. + * chMatrix.h (charMatrix::all, charMatrix::any): Likewise. + + * mx-inlines.cc (MX_ANY_ALL_OP_ROW_CODE, MX_ANY_ALL_OP_COL_CODE): + New macros. + (MX_ANY_ALL_OP): Define MX_ANY_ALL_OP using them and + MX_BASE_REDUCTION_OP. + (MX_CUMULATIVE_OP): Fix spelling. Change all uses. + +2002-08-01 John W. Eaton <jwe@bevo.che.wisc.edu> + + * chMatrix.h, chMatrix.cc (charMatrix::any, charMatrix::all): + Return boolMatrix, not Matrix. + + * mx-inlines.cc (MX_ANY_ALL_OP, MX_ALL_OP, MX_ANY_OP): New macros. + * dMatrix.cc (Matrix::any): Replace guts with MX_ANY_OP. + (Matrix::all): Replace guts with MX_ALL_OP. + * CMatrix.cc (ComplexMatrix::any): Replace guts with MX_ANY_OP. + (ComplexMatrix::all): Replace guts with MX_ALL_OP. + * boolMatrix.cc (boolMatrix::any): Replace guts with MX_ANY_OP. + (boolMatrix::all): Replace guts with MX_ALL_OP. + * chMatrix.cc (charMatrix::any): Replace guts with MX_ANY_OP. + (charMatrix::all): Replace guts with MX_ALL_OP. + + * dMatrix.h (Matrix::any): New arg, dim. + (Matrix::all): Likewise. + * CMatrix.h (ComplexMatrix::any): Likewise. + (ComplexMatrix::all): Likewise. + * boolMatrix.h (boolMatrix::any): Likewise. + (boolMatrix::all): Likewise. + * chMatrix.h (charMatrix::any): Likewise. + (charMatrix::all): Likewise. + + * Makefile.in: Use $@-t instead of $@.t. + +2002-07-25 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-specfun.cc (gammainc): New arg, err, for scalar version. + Use it in matrix versions to avoid spewing multiple errors. + Call xgammainc instead of dgamit. + +2002-07-22 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.cc (ComplexMatrix::ComplexMatrix (const boolMatrix&)): + Get rows and columns right in loop. + (ComplexMatrix::ComplexMatrix (const charMatrix&)): Likewise. + +2002-07-19 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASPK.cc (DASPK::do_integrate): Allow array tolerances. + * DASRT.cc (DASRT::integrate): Likewise. + * DASSL.cc (DASSL::do_integrate): Likewise. + + * Quad.cc: Don't pass tolerances in constructors. + + * DASPK-opts.in, DASRT-opts.in, DASSL-opts.in, LSODE-opts.in, + NLeqn-opts.in, ODESSA-opts.in, Quad-opts.in: New files. + * DASPK-opts.h, DASRT-opts.h, DASSL-opts.h, LSODE-opts.h, + NLeqn-opts.h, ODESSA-opts.h, Quad-opts.h: Generate automatically + from corresponding .in files. + * LSODE.h, Quad.h: Replace options class definitions with included + file. + * Makefile.in (OPTS_INC_SRC, OPTS_INC): New variables, new rule to + create OPTS_INC files from OPTS_INC_SRC files. + (stamp-prereq): New target. + (libraries): Depend on stamp-prereq. + Include stamp-prereq along with $(MAKEDEPS). + +2002-07-17 John W. Eaton <jwe@bevo.che.wisc.edu> + + * base-de.h (base_diff_eqn::istate): New data member. + (base_diff_eqn::integration_state): New member function. + * LSODE.h, LSODE.cc, ODESSA.h, ODESSA.cc: Delete corresponding + data members and functions. + * DASPK.h, DASRT.h, DASSL.h: Delete idid data member. + * DASPK.cc, DASRT.cc, DASSL.cc: Use istate instead of idid. + +2002-07-16 John W. Eaton <jwe@bevo.che.wisc.edu> + + * base-de.h (base_diff_eqn::stop_time, + base_diff_eqn::stop_time_set, base_diff_eqn::restart, + base_diff_eqn::integration_error): New data members. + (base_diff_eqn::set_stop_time, base_diff_eqn::clear_stop_time, + base_diff_eqn::force_restart, base_diff_eqn::integration_ok, + base_diff_eqn::error_message): New member functions. + * LSODE.h, LSODE.cc, DASSL.h, DASSL.cc, DASPK.h, DASPK.cc, + DASRT.h, DASRT.cc, ODESSA.h, ODESSA.cc: Delete corresponding data + members and functions. + + * DASRT.h (DASRT::set_ng, DASRT::get_ng): Delete + * DASRT.cc (DASRT::DASRT): Set ng here. + (DASRT::integrate): Don't forget to set nn. + + * DAEFunc.h (DAEFunc): Jacobian function now follows format of DASSL. + * DASSL.cc (ddassl_j): Make it work. + * DASPK.cc (ddaspk_j): Likewise. + + * DAE.cc: Delete. + + * DAERT.h, DAERTFunc.h, DASRT.h, DASRT.cc: New files for DAE + solving with root finding. + * Makefile.in: Add them to the appropriate lists. + + * base-dae.h: New file. + * Makefile.in (INCLUDES): Add it to the list. + * DAE.h (DAE): Derive from base_diff_alg_eqn, not base_diff_eqn. + +2002-07-10 John W. Eaton <jwe@bevo.che.wisc.edu> + + * ODE.h: Move integrate and do_integrate method declarations and + definitions here. + * base-de.h: From here. + + * ODES.h, ODES.cc, ODESFunc.h, ODESSA.h, ODESSA.cc: New files. + * Makefile.in: Add them to the appropriate lists. + (LIBOCTAVE_CXX_SOURCES): + +2002-07-02 John W. Eaton <jwe@bevo.che.wisc.edu> + + * NLEqn.cc (NLEqn::error_message): New function. + * NLEqn.h (NLEqn::solution_state, NLEqn::solution_ok): New functions. + +2002-07-01 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-utils.cc (octave_fgetl): New function. + * cmd-edit.cc (do_readline): Use it instead of octave_fgets. + +2002-05-24 John W. Eaton <jwe@bevo.che.wisc.edu> + + * LSODE.cc (LSODE::error_message): New function. + * LSODE.h: Provide decl. + (LSODE::integration_state): New function. + (LSODE::integration_ok): New function. + +2002-05-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * LSODE.cc (LSODE_options::x_integration_method): New data member. + (LSODE_options::set_integration_method, + LSODE_options::integration_method): New functions. + + * LSODE.h (LSODE_options::x_absolute_tolerance): Now Array<double>. + Change all uses. + (LSODE_OPTIONS::absolute_tolerance): Return Array<double>, not double. + (LSODE_OPTIONS::set_absolute_tolerance (const Array<double>&)): + New function. + + * Array.h (Array::fortran_vec): New const version. + +2002-05-22 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.cc (gnu_readline::history_search_backward): New function. + (gnu_readline::history_search_forward): Likewise. + (gnu_readline::gnu_readline): Use them instead of passing pointers + to extern "C" functions to octave_rl_ad_defun. + +2002-05-22 Mumit Khan <khan@nanotech.wisc.edu> + + * DASPK.cc (ddaspk_psol): Return value. + * oct-rl-edit.c: Use /* ... */ to comment. + +2002-05-20 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASSL.h (DASSL_options::init): Undo previous change. + (DASSL_options::set_absolute_tolerance): Likewise. + * LSODE.h (LSODE_options::init): Likewise. + (LSODE_options::set_absolute_tolerance): Likewise. + + * DASPK.h (DASPK_options::init): Use default absolute tolerance of + sqrt(eps), not eps^2. + DASPK_options::set_absolute_tolerance): Likewise. + +2002-05-17 Mumit Khan <khan@nanotech.wisc.edu> + + * Array.h (Array<T>::resize_fill_value): Return default initialized + object. + +2002-05-14 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-rl-edit.c (OCTAVE_RL_SAVE_STRING): New macro. + (octave_rl_set_name, octave_rl_set_basic_quote_characters): Use it. + (octave_rl_set_basic_word_break_characters, + octave_rl_set_completer_word_break_characters): New functions. + * oct-rl-edit.h: Provide decls. + * cmd-edit.cc (gnu_readline::do_set_basic_word_break_characters, + gnu_readline::do_set_completer_word_break_characters): New functions. + (command_editor::set_basic_quote_characters, + command_editor::set_completion_append_character): New static functions. + * cmd-edit.h: Provide decls. + (command_editor::do_set_basic_word_break_characters, + command_editor::do_set_completer_word_break_characters): + New virtual functions. + + * CMatrix.h, boolMatrix.h, chMatrix.h, dMatrix.h + (resize_fill_value): New static function. + + * Array-idx.h (Array<T>::index): New args, resize_ok and + resize_fill_value. + * Array2-idx.h (Array2<T>::index): Likewise. + * ArrayN-idx.h (ArrayN<T>::index): Likewise. + + * Array2.cc (Array<T>::print_info): New function. + * Array2.h: Provide decl. + + * Array.cc (Array<T>::print_info): New function. + * Array.h: Provide decl. + +2002-05-03 John W. Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.h (idx_vector::idx_vector (int)): New function. + (idx_vector_rep::idx_vector_rep (int)): New decl. + * idx-vector.cc (idx_vector_rep::idx_vector_rep (int)): New function. + + * Array.h (Array<T>::resize_fill_value (void)): New static function. + (assign (Array<LT>&, const Array<RT>&)): Use it. + * Array2.h (assign (Array2<LT>&, const Array2<RT>&)): Use it. + * ArrayN.h (assign (ArrayN<LT>&, const ArrayN<RT>&)): Use it. + +2002-05-02 Cai Jianming <caijianming@yahoo.co.uk> + + * Array3.h (Array3<T>::checkelem): Improve error message. + * ArrayN.h (ArrayN<T>::range_error): Likewise. + * DiagArray2.cc (DiagArray2<T>::checkelem): Likewise. + * DiagArray2.cc (DiagArray2<T>::operator ()): Likewise. + +2002-04-30 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASSL.h (DASSL_options::init): Undo previous change. + (DASSL_options::set_absolute_tolerance): Likewise. + +2002-04-27 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASPK.h, DASPK.cc: New files. + * Makefile.in: Add them to the appropriate lists. + +2002-04-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>::index (idx_vector&, idx_vector&) const): + Simplify indexing when one or both of the indices are empty. + +2002-04-11 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASSL.h (DASSL_options::init): Set absolute tolerance to eps ^ 2. + (DASSL_options::set_absolute_tolerance): Likewise. + * LSODE.h (LSODE_options::init): Likewise. + (LSODE_options::set_absolute_tolerance): Likewise. + +2002-04-03 Steven G. Johnson <stevenj@alum.mit.edu> + + * f2c-main.c (MAIN_, MAIN__): Delete. Use F77_DUMMY_MAIN instead. + * file-stat.cc (file_stat::update_internal, file_stat::copy): + Use HAVE_STRUCT_STAT_ST_RDEV instead of HAVE_ST_RDEV. + Use HAVE_STRUCT_STAT_ST_BLKSIZE instead of HAVE_ST_BLKSIZE. + Use HAVE_STRUCT_STAT_ST_BLOCKS instead of HAVE_ST_BLOCKS. + * file-stat.h: Likewise. + * oct-time.cc (octave_time::octave_time, octave_base_tm::strftime, + octave_base_tm::init, octave_strptime::init): Use HAVE_TM_ZONE + instead of HAVE_STRUCT_TM_TM_ZONE. + * strftime.c: Likewise. + * lo-specfun.cc, mach-info.cc, CColVector.cc, CMatrix.cc, + CRowVector.cc, CmplxAEPBAL.cc, CmplxCHOL.cc, CmplxHESS.cc, + CmplxLU.cc, CmplxQR.cc, CmplxQRP.cc, CmplxSCHUR.cc, CmplxSVD.cc, + CollocWt.cc, DASSL.cc, EIG.cc, LSODE.cc, NLEqn.cc, Quad.cc, + dColVector.cc, dMatrix.cc, dRowVector.cc, dbleAEPBAL.cc, + dbleCHOL.cc, dbleHESS.cc, dbleLU.cc, dbleQR.cc, dbleQRP.cc, + dbleSCHUR.cc, dbleSVD.cc: Use F77_FUNC instead of F77_FCN. + +2002-04-02 Paul Kienzle <pkienzle@users.sf.net> + + * CmplxQR.cc (ComplexQR::init): Use economy QR decomposition + internally when the user requests it. + * CmplxQRP.cc (ComplexQRP::init): Ditto. + * dbleQR.cc (QR::init): Ditto. + * dbleQRP.cc (QRP::init): Ditto. + +2002-02-22 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-fftw.cc (octave_fftw::fft2d): Avoid having to find a + definition for NULL by passing 0 as the last arg to fftwnd_one. + (octave_fftw::ifft2d): Likewise. + +2002-02-22 Paul Kienzle <pkienzle@jazz.ncnr.nist.gov> + + * lo-mappers.cc (arg): Simply call atan2 (0.0, x). + +2001-12-17 John W. Eaton <jwe@bevo.che.wisc.edu> + + * data-conv.cc (LS_DO_READ): Don't do anything unless len > 0. + (LS_DO_WRITE): Likewise. + +2001-11-16 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mx-inlines.cc (MX_CUMMULATIVE_OP): New macro. + * CMatrix.cc (ComplexMatrix::cumprod, ComplexMatrix::cumsum): Use it. + * dMatrix.cc (Matrix::cumprod, Matrix::cumsum): Likewise. + + * mx-inlines.cc (MX_REDUCTION_OP, MX_REDUCTION_OP_COL_EXPR, + MX_REDUCTION_OP_ROW_EXPR): New macros. + * dMatrix.cc (Matrix::prod, Matrix::sum): Use MX_REDUCTION_OP. + * CMatrix.cc (ComplexMatrix::prod, ComplexMatrix::sum): Likewise. + + * mx-inlines.cc (MX_BASE_REDUCTION_OP): New macro. + DIM == -1 now means no orientation for vector sums. + * dMatrix.cc (ComplexMatrix::sumsq): Use it. + * CMatrix.cc (ComplexMatrix::sumsq): Likewise. + +2001-11-08 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Range.cc (Range::nelem_internal): Special case ranges that must + have zero elements. + +2001-11-06 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in: Split out readline and pathsearch functionality + into separate liboct-readline and liboct-pathsearch libraries. + + * oct-rl-edit.c (octave_rl_clear_screen): Call rl_clear_screen, + not _rl_clear_screen. Temporarily redefine rl_redisplay_function + to do nothing for this call to rl_clear_screen. + +2001-10-08 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASSL.cc (ddassl_f): Handle IRES returned from user supplied + function. + * DAEFunc.h (DAERHSFunc): Add IRES to prototype. + +2001-06-07 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::inverse, Matrix::solve, Matrix::determinant, + Matrix::inverse): Handle the case of rcond being a NaN the same as + a signular matrix. From "Jianming" <caijianming@yahoo.co.uk>. + * CMatrix.cc (ComplexMatrix::inverse, ComplexMatrix::solve, + ComplexMatrix::determinant, ComplexMatrix::inverse): Likewise. + +2001-05-31 John W. Eaton <jwe@bevo.che.wisc.edu> + + * chMatrix.cc (charMatrix::row_as_string): New parameter, raw. + + * Array-i.cc, Array-s.cc, Array-d.cc, Array-ch.cc, Array-C.cc, + Array-b.cc: Instantiate three arg assign functions. + + * ArrayN.cc (assign (ArrayN<LT>&, const ArrayN<RT>&, const LT&)): + New arg, resize_fill_value. + * ArrayN.h: Provide declaration. + (assign (ArrayN<LT>&, const ArrayN<RT>&): Define here by calling + three arg version. + + * Array3.cc (assign (Array3<LT>&, const Array3<RT>&, const LT&)): + New arg, resize_fill_value. + * Array3.h: Provide declaration. + (assign (Array3<LT>&, const Array3<RT>&): Define here by calling + three arg version. + + * Array2.cc (assign (Array2<LT>&, const Array2<RT>&, const LT&)): + New arg, resize_fill_value. + * Array2.h: Provide declaration. + (assign (Array2<LT>&, const Array2<RT>&): Define here by calling + three arg version. + + * Array.cc (assign (Array<LT>&, const Array<RT>&, const LT&)): + New arg, resize_fill_value. + * Array.h: Provide declaration. + (assign (Array<LT>&, const Array<RT>&): Define here by calling + three arg version. + +2001-05-17 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pathsearch.cc (dir_path::set_program_name): Set the environment + variables SELFAUTOLOC, SELFAUTODIR, SELFAUTOPARENT, and TEXMFDBS + to the empty string. + +2001-05-15 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2.h (Array2<T>::operator = (const Array2<T>&)): + Don't check for rep != a.rep. + +2001-05-02 Mumit Khan <khan@nanotech.wisc.edu> + + * oct-fftw.h, oct-fftw.cc: New files. + * Makefile.in (INCLUDES, SOURCES): Add new files. + * CMatrix.cc (ComplexMatrix::{fourier, ifourier, fourier2d, + ifourier2d}): Use fftw if available. + * dMatrix.cc (Matrix::{fourier, ifourier, fourier2d, ifourier2d}): + Likewise. + +2001-04-25 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (install-lib): Don't use mk-libdir-link. + (install-inc): Don't use mk-includedir-link. + +2001-02-28 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-cutils.c (octave_gethostname): New function. + * lo-utils.h: Provide declaration. + * oct-env.cc (octave_env::do_get_host_name): + Call octave_gethostname, instead of gethostname. + + * lo-cutils.c (gethostname): Define here. + * lo-sysdep.cc: Not here. + +2001-02-07 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-cutils.c: Don't declare strptime. + (oct_strptime): Cast return type of strptime to char*. + +2001-02-06 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-rl-edit.c (octave_rl_newline): Call rl_newline with two args. + (octave_rl_set_name): call rl_re_read_init_file with two args. + (octave_rl_read_init_file): Ditto. + (octave_rl_clear_undo_list): Call rl_free_undo_list, not + free_undo_list. + (octave_rl_completion_matches): Call rl_completion_matches, not + completion_matches. + (octave_rl_enable_paren_matching): New function. + (octave_rl_set_blink_matching_paren_flag): Delete. + (octave_rl_get_blink_matching_paren_flag): Delete. + + * lo-mappers.h, lo-mappers.cc (log10 (const Complex&), + tanh (const Complex&)): Declare and define if not + CXX_ISO_COMPLIANT_LIBRARY. + +2001-02-05 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.h (tanh (const Complex&)): Only declare if not + CXX_ISO_COMPLIANT_LIBRARY. + +2001-02-05 Mumit Khan <khan@nanotech.wisc.edu> + + * lo-mappers.cc (tanh (const Complex&)): Only define if not + CXX_ISO_COMPLIANT_LIBRARY. + + * Makefile.in (TEMPLATE_AR, TEMPLATE_ARFLAGS): Use to create + archive libraries containing templates. + + * ArrayN-idx.h (freeze, all_ok, any_orig_empty, any_zero_len, + get_zero_len_size, all_colon_equiv): Inline. + (ArrayN<T>::index): Rename idx to arr_idx. + * ArrayN.cc (ArrayN<T>::index, ArrayN<T>::compute_index, + ArrayN<T>::get_size, ArrayN<T>::range_error, ArrayN<T>::range_error, + increment_index, ArrayN<T>::resize, ArrayN<T>::insert): Likewise. + +2001-02-05 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.h, lo-mappers.cc (tan (const Complex&), + log10 (const Complex&)): Delete. + + * oct-cmplx.h: Define forwarding functions for real, imag, abs, + arg, norm, conj, polar, cos, cosh, exp, log, log10, pow, sin, + sinh, sqrt, tan, and tanh. + +2001-01-31 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.cc, help.cc, load-save.cc, pr-output.cc, utils.cc: + Add std:: namespace qualifier as needed. + + * mx-inlines.cc: Rename all functions with mx_inline_ prefix. + Change all uses to match. + +2001-01-29 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-cutils.c: Don't delcare strptime. + +2001-01-02 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.cc (operator * (const ComplexMatrix&, const ComplexMatrix&): + Return correct size result for empty matrix case. + +2000-12-15 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc (xmin (const Complex&, const Complex& y): + If args are equal in magnitude, return first arg instead of + second. + +2000-12-13 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Range.cc (Range::nelem_internal): Call tfloor, not round, but + then try harder to compute correct number of elements. + + * dMatrix.cc (Matrix::lssolve): Ask DGELSS for size of work vector. + * CMatrix.cc (ComplexMatrix::lssolve): Likewise, for ZGELSS. + +2000-12-09 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Range.cc (Range::nelem_internal): Call round here, not tfloor. + Rename n_intervals to be n_elt. + + * strptime.c: Surround everything after including config.h in + #ifndef HAVE_STRPTIME ... #endif. + +2000-11-29 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-idx.h (assign): When resizing, cast fill value to LT. + * Array2-idx.h (MAYBE_RESIZE_LHS): Likewise. + +2000-11-28 John W. Eaton <jwe@bevo.che.wisc.edu> + + * MArray-defs.h: Protect against multiple inclusion. + +2000-11-20 John W. Eaton <jwe@bevo.che.wisc.edu> + + * data-conv.h (enum save_type): Move LS_U_LONG and LS_LONG to the + end of the list, to be compatible with previous versions of Octave. + +2000-11-16 Paul Kienzle <pkienzle@kienzle.powernet.co.uk> + + * oct-time.cc (DEFINE_SET_INT_FIELD_FCN): Don't check limits here, + since mktime is supposed to `normalize' the results for us. + +2000-10-31 Paul Kienzle <pkienzle@kienzle.powernet.co.uk> + + * Array2.cc (Array2<T>::transpose): Avoid copy for empty matrices + and vectors. Use xelem for faster access to elements when copying. + +2000-10-18 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.cc (ComplexMatrix::cumsum, ComplexMatrix::cumprod): + Correct indexing for operation across rows. + * dMatrix.cc (Matrix::cumsum, Matrix::cumprod): Likewise. + +2000-10-12 Paul Kienzle <pkienzle@kienzle.powernet.co.uk> + + * Array2-idx.h (Array2<T>::index (idx_vector&)): Avoid copying + elements if arg is a colon. + +2000-10-12 Cai Jianming <caijianming@yahoo.co.uk> + + * dMatrix.cc (Matrix::cumprod (int) const): New arg, DIM. + (Matrix::cumsum (int) const): Likewise. + (Matrix::prod (int) const): Likewise. + (Matrix::sum (int) const): Likewise. + (Matrix::sumsq (int) const): Likewise. + * CMatrix.cc (ComplexMatrix::cumprod (int dim) const): Likewise. + (ComplexMatrix::cumsum (int) const): Likewise. + (ComplexMatrix::prod (int) const): Likewise. + (ComplexMatrix::sum (int) const): Likewise. + (ComplexMatrix::sumsq (int) const): Likewise. + +2000-10-10 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>::index (idx_vector&)): Correctly set + size if Array<T>::index returns an empty array. + +2000-08-02 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.cc (file_ops::link, file_ops::symlink, + file_ops::readlink): New functions. + +2000-08-01 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>::index (idx_vector&)): If a scalar is + indexed, always return an object the same size as the index arg. + + * oct-time.cc (octave_base_tm::strftime): Return empty string for + empty format. + +2000-07-25 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-cutils.c (oct_strptime): New function. + * oct-time.cc (octave_strptime::init): Call it instead of strptime. + Don't declare strptime. Don't define _XOPEN_SOURCE or _BSD_SOURCE. + +2000-07-18 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-time.cc: Comment out _BSD_SOURCE and _XOPEN_SOURCE definitions. + + * Makefile.in (MATRIX_INC): Add ArrayN-idx.h to the list. + +2000-06-29 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.h (read_int): Provide declaration. + +2000-06-29 James R. Van Zandt <jrv@vanzandt.mv.com> + + * data-conv.cc (read_doubles): Handle EIGHT_BYTE_INT cases. + (write_doubles): Ditto. + * data-conv.h: Ditto. + (enum save_type): New values, LS_U_LONG and LS_LONG. + +2000-06-27 John W. Eaton <jwe@bevo.che.wisc.edu> + + * boolMatrix.h: Declare MM_CMP_OPS here. + * boolMatrix.cc: Define them here. + +2000-06-08 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (assign): Allow x(bool) = RHS to succeed if x is + previously undefined and set size of x to size of bool index. + * idx-vector.cc (IDX_VEC_REP::maybe_convert_one_zero_to_idx): + Allow z_len to be zero. + (IDX_VEC_REP::freeze): If z_len is zero, set frozen_at_z_len to len. + If frozen, don't assert that frozen_at_z_len == z_len. + +2000-05-20 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-rl-edit.c (octave_rl_clear_screen): Call _rl_clear_screen + instead of rl_clear_screen. + +2000-05-11 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-d.cc: Instantiate ArrayN<double> here too. + * Array-idx-vec.cc, ArrayN-idx.h, ArrayN.cc, ArrayN.h: New files. + * Makefile.in: Add them to the appropriate lists. + +2000-04-06 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array<T>::operator =): Don't set max_indices to 1 here. + +2000-03-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-sysdep.h: octave_chdir returns int, not bool. + +2000-03-21 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (liboctave.$(SHLEXT)): Delete target + before rebuilding. + +2000-03-21 Ben Sapp <bsapp@nua.lampf.lanl.gov>: + + * Makefile.in (liboctave.$(LIBEXT)): New target. + (libraries): Depend only on library targets, not archive members. + +2000-03-17 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in: (objects): New target. + + * lo-cutils.c: New file. + * Makefile.in (SOURCES): Add it to the list. + * lo-utils.h: Declare octave_qsort here. + * Array.h (Array::qsort): Use it here. + +2000-03-08 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-time.cc: Include <sys/types.h> and <unistd.h>, if available. + +2000-02-18 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-rl-hist.c (octave_history_list): Do something when not + printing line numbers. Fix reallocation of retval. + +2000-02-11 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (install-inc): Install files in + $(octincludedir)/octave. + (uninstall): Remove them from the correct directory too. + + * oct-time.cc: Temporarily define _BSD_SOURCE and _XOPEN_SOURCE if + they are not already defined. + +2000-02-08 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CRowVector.cc, CRowVector.h, CColVector.cc, CColVector.h: + Delete declarations and definitions of mixed-type vector-vector ops. + +2000-02-07 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.h, CMatrix.cc: Add lssolve methods for real-valued RHS + matrix and vector objects. + + * mx-op-defs.h (DMM_BIN_OP): Explicitly request conversion to + return type from second arg type. + (MDM_BIN_OP): Likewise, for first arg type. + + * dMatrix.cc (Matrix::fourier, Matrix::ifourier, + Matrix::fourier2d, Matrix::ifourier2d): Likewise. + + * EIG.cc (EIG::symmetric_init, EIG::hermitian_init): Explicitly + request ColumnVector to ComplexColumnVector, and Matrix to + ComplexMatrix conversions. + + * CmplxAEPBAL.cc (ComplexAEPBALANCE::init): Give balancing_mat its + initial value using ComplexMatrix constructor. + + * CColVector.cc (product, quotient, + operator * (const DiagMatrix&, const ComplexColumnVetor&)): + Fix type of returned value. + * CDiagMatrix.cc (ComplexDiagMatrix::row, + ComplexDiagMatrix::column, ComplexDiagMatrix::inverse): Likewise. + + * Array.h, CColVector.h, CDiagMatrix.h, CMatrix.h, CRowVector.h, + MArray.h, MDiagArray2.h, dColVector.h, dDiagMatrix.h, dMatrix.h, + dRowVector.h: Declare some constructors explicit, to disallow + potentially problematic automatic type conversions. + +2000-02-05 John W. Eaton <jwe@bevo.che.wisc.edu> + + * vx-rv-crv.h, vx-cv-ccv.h, vx-crv-rv.h, vx-ccv-cv.h, + vx-rv-crv.cc, vx-cv-ccv.cc, vx-crv-rv.cc, vx-ccv-cv.cc: + More new files. + * Makefile.in: Add them to the appropriate lists. + + * vx-ccv-s.h, vx-crv-s.h, vx-cs-cv.h, vx-cs-rv.h, vx-cv-cs.h, + vx-rv-cs.h, vx-s-ccv.h, vx-s-crv.h, vx-ccv-s.cc, vx-crv-s.cc, + vx-cs-cv.cc, vx-cs-rv.cc, vx-cv-cs.cc, vx-rv-cs.cc, vx-s-ccv.cc, + vx-s-crv.cc:, New files. + * Makefile.in: Add them to the appropriate lists. + + * CRowVector.h, CRowVector.cc, CColVector.h, CColVector.cc: + Delete scalar by vector and vector by scalar binary ops. + + * MArray-defs.h: More new macros to handle MDiagArray operators. + * dDiagMatrix.h, CDiagMatrix.h: Use the op-forwarding macros. + +2000-02-04 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-rl-edit.c (octave_rl_set_event_hook): Take address of + rl_event_hook before casting to void **. + (octave_rl_set_startup_hook): Likewise, for rl_startup_hook. + + * MArray-defs.h: Many new macros to make declaration and + definition of operators more consistent. + + * MArray.h, MArray2.h, dColVector.h, dRowVector.h, CColVector.h, + CRowVector.h, dMatrix.h, CMatrix.h: Use them. + +2000-02-03 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::ifourier): Cast divisor to double. + (Matrix::ifourier2d): Likewise. + * CMatrix.cc (ComplexMatrix::ifourier): Likewise. + (ComplexMatrix::ifourier2d): Likewise. + + * Array.h (Array::ArrayRep::qsort): Cast len to size_t. + +2000-02-01 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-rl-edit.c, oct-rl-edit.h: New files for interface to GNU + readline library. + * Makefile.in: Add them to the appropriate lists. + + * oct-rl-hist.c, oct-rl-hist.h: New files for interface to GNU + readline history library. + * Makefile.in: Add them to the appropriate lists. + + * data-conv.cc (LS_DO_WRITE): Cast arg to ostream::write to char*. + (LS_DO_READ): Likewise, for istream::read. + (write_doubles): Likewise. + (read_doubles): Likewise. + + * oct-env.cc (octave_env::do_polite_directory_format): + Use operator== and substr method to do limited-length string + comparison. + + * Array2-idx.h, Array-idx.h: Avoid shadowing warnings for idx. + + * Quad.h: Use do_integrate as name of pure virtual function. + + * base-de.h: Use tt instead of t as arg names. + Add method with tcrit arg. + + * DAE.h, DAE.cc: Likewise, also xx for x. + + * DASSL.cc (dassl_fcn_ptr, dassl_jac_ptr): New typedefs. + * LSODE.cc: lsode_fcn_ptr, lsode_jac_ptr): Ditto. + * Quad.cc (quad_fcn_ptr): Ditto. + * NLEqn.cc (hybrd1_fcn_ptr, hybrj1_fcn_ptr): Ditto. + + * oct-getopt.h, oct-getopt.c: New files for interface to getopt. + * Makefile.in: Add them to the appropriate lists. + + * oct-kpse.h, oct-kpse.c: New files for interface to kpathsearch. + * Makefile.in: Add them to the appropriate lists. + + * dMatrix.cc (write_int, read_int): No longer declared static. + + * CDiagMatrix.h: Delete decls for friend operators that are + handled by MDiagArray2 class. Move others outside class decl and + strip friend status. + * dDiagMatrix.h: Likewise. + + * MArray.h: Delete decls for friend operators inside class decl. + * MArray2.h: Ditto. + * MDiagArray2.h: Ditto. + + * MArray-defs.h (DO_VS_OP,, DO_SV_OP, DO_VV_OP, NEGV): Pass all + necessary parameters. Don't allocate memory in the macro. Change + all uses. + + * dMatrix.h (class Matrix): Delete `friend class' decls. + * CMatrix.h (class ComplexMatrix): Ditto. + + * mx-op-defs (MS_BOOL_OP, MS_BOOL_OPS, SM_BOOL_OP, SM_BOOL_OPS, + MM_BOOL_OP, MM_BOOL_OPS, MDM_MULTIPLY_OP, MDM_BIN_OPS, + DMM_MULTIPLY_OP, DMM_BIN_OPS): Pass zero constant as final arg, to + avoid type conflicts. Change all uses. + + * strptime.c (__mon_yday): Fix size of array decl. + + * mx-inlines.cc: Use `xnot' instead of `not' for function name. + + * chMatrix.cc (charMatrix::row_as_string): Delete extraneous + default value for second arg. + + * Array2.cc (Array2<T>::resize): Add Array<T>:: qulaifier to + references to ArrayRep. + +2000-01-31 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.h (Array::ArrayRep): Now protected, not private. + + * All source files: Include iostream, fstream, strstream, + etc. as needed instead of using forward declarations for these + classes. Add std:: qualifier as needed. + +2000-01-30 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-time.cc: Declare strptime extern "C". + +2000-01-29 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-time.cc [! HAVE_STRPTIME]: Provide declaration. + +2000-01-28 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2.h (Array2<T>::get_size): Now protected instead of private. + * Array3.h, Array3.cc: Use it in constructors and resize methods + to get total size to be allocated. + + * DASSL.cc (DASSL::integrate): Declare do_restart and save_output + as bool, not int. + +2000-01-26 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (assign (Array2<LT>& lhs, const Array2<RT>& rhs)): + Allow A(idx) = RHS if idx is a boolean index with the same shape + as A, even when do_fortran_indexing is not enabled. + (Array2<T>::index (idx_vector& idx) const): Likewise, for A(idx). + +2000-01-25 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::solve (...)): Add new variant with + function pointer as final arg. Passed function (if any) will be + called for singularity errors. + * CMatrix.cc (ComplexMatrix::solve (...)): Likewise. + + * dMatrix.cc (Matrix::pseudo_inverse): Use economy SVD. + * CMatrix.cc (ComplexMatrix::pseudo_inverse): Likewise. + + * lo-ieee.cc (octave_ieee_init): Don't include sunmath.h. + No longer bother with infinity or quiet_nan. + + * Array2.cc (Array2<T>::get_size): New function. + (Array2<T>::Array2, Array2<T>::resize): Use it. + +2000-01-23 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>::maybe_delete_elements (idx_vector&)): + New function. + (assign (Array2<LT>& lhs, const Array2<RT>& rhs)): + Use it when indexing with one arg instead of faking a second one. + (Array2<T>::maybe_delete_elements (idx_vector&, idx_vector&)): + Return empty matrices with the correct dimensions for A(:,:) = [] + and also A(:,idx) = [], and A(idx,:) = [] when idx enumerates all + rows or columns. + + * idx-vector.cc (IDX_VEC_REP::is_colon_equiv): Recognize a bool + vector that is all true values with a length equal to n as colon + equivalent. + +2000-01-22 John W. Eaton <jwe@bevo.che.wisc.edu> + + * strptime.c: Only include langinfo.h if _LIBC is defined. + +2000-01-21 A. Scottedward Hodel <a.s.hodel@eng.auburn.edu> + + * CMatrix.cc (ComplexMatrix::expm): Apply permutation and scaling + operations directly in step 2 and reverse step 2. + * dMatrix.cc (Matrix::expm): Apply permutation and scaling + operations directly in step 2 and reverse step 2. + +2000-01-20 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-time.h, oct-time.cc (octave_strptime): New class. + + * strptime.c: New file, from glibc 2.1.2. + * Makefile.in (SOURCES): Add strptime.c to the list. + +2000-01-11 John W. Eaton <jwe@bevo.che.wisc.edu> + + * MArray.h (MArray <const Array<T>&)): New constructor. + +2000-01-10 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pathsearch.cc (dir_path::all_directories): Avoid dereferencing + NULL directory list returned from kpse_element_dirs + +1999-12-08 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleLU.cc (LU::LU): Call DGETRF directly instead of calling DGESV. + * CmplxLU.cc (ComplexLU::ComplexLU): Likewise, call ZGETRF + directly, instead of calling ZGESV. + +1999-11-18 John W. Eaton <jwe@bevo.che.wisc.edu> + + * data-conv.cc (init_sized_type_lookup_table): New function. + (string_to_data_type): Use it to improve lookup of data types. + +1999-11-16 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (is_symmetric): Move here from Array2.cc. + * Array2.h (is_symmetric): Delete declaration. + +1999-11-10 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-env.cc (do_get_user_name): Reverse sense of test. + +1999-11-07 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-time.cc (Fstrftime): Undo previous change. + (octave_time::octave_time (const octave_base_tm&)): Likewise. + +1999-11-03 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleSVD.cc (SVD::init): Let DGESVD determine work space requirement. + * CmplxSVD.cc (ComplexSVD::init): Likewise, for complex version. + + * dbleSCHUR.cc (SCHUR::init): IWORK is always referenced by dgeesx. + Don't forget to pass length of third string argument to dgeesx. + + * CmplxSCHUR.cc (ComplexSCHUR::init): Don't forget to pass length + of third string argument to zgeesx. + +1999-11-02 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DiagArray2.cc (DiagArray2<T>::operator () (int, int)): + On errors, simply return `T ()'. + (DiagArray2<T>::checkelem (int, int)): Likewise. + +1999-11-02 A. Scottedward Hodel <a.s.hodel@eng.auburn.edu> + + * dMatrix.cc (Matrix::expm): Do balancing here instead of using + AEPBALANCE class. + * CMatrix.cc (ComplexMatrix::expm): Likewise. + +1999-10-29 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-shlib.cc, oct-shlib.h: New files. + * Makefile.in (INCLUDES, SOURCES): Add them to the lists. + +1999-10-26 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CRowVector.cc (linspace): Allow npoints == 1 if x1 == x2. + * dRowVector.cc (linspace): Ditto. + + * oct-time.cc (Fstrftime): Don't save or delete tm_zone. + (octave_time::octave_time (const octave_base_tm&)): Likewise. + +1999-10-21 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASSL.cc (DASSL::do_integrate (double)): If we have a function + to evaluate the Jacobian, set info(4), not iwork(4). + Set rwork(1) to the maximum step size, not rwork(2). + +1999-10-14 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-time.cc: Include <climits>. + +1999-10-13 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.h (command_editor::do_resize_terminal): New function. + * cmd-edit.cc (command_editor::resize_terminal): New function. + (gnu_readline::do_resize_terminal): New function. + +Fri Sep 3 12:39:17 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc: Include ieeefp.h and sunmath.h if we have them. + * lo-ieee.c: Likewise. + Delete extern "C" declarations for infinity and quiet_nan. + +Fri Aug 20 07:58:00 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mx-inlines.cc (VS_OP, SV_OP, VV_OP): Delete `extern template' decls. + (VS_OP_FCN, SV_OP_FCN, VV_OP_FCN): Declare template functions + `inline', not `static inline'. + + * idx-vector.cc (intcmp): Declare args as const void *, not int *, + then cast to const int * to compare. + +Fri Jul 16 11:23:51 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DAEFunc.h: Remove useless preprocessor conditional. + +Thu Jul 15 14:10:33 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.cc (command_editor::do_decode_prompt_string): + Use octave_time object instead of time_t. + + * file-stat.h (file_stat::fs_atime, file_stat::fs_mtime, + file_stat::fs_ctime): Now octave_time objects. + (file_stat::atime, file_stat::mtime, file_stat::ctime): + Return octave_time objects. + (file_stat::is_newer): Args are now octave_time objects instead of + time_t. + + * oct-time.h (octave_time::as_double): Delete. + (octave_time::operator double ()): New function. + (octave_time::operator time_t ()): New function. + (octave_time::ctime): New function. + (octave_base_tm::strftime): Renamed from format_as_string. + (octave_base_tm::asctime): New function. + (operator == (const octave_time&, const octave_time&), + operator != (const octave_time&, const octave_time&), + operator < (const octave_time&, const octave_time&), + operator <= (const octave_time&, const octave_time&), + operator > (const octave_time&, const octave_time&), + operator >= (const octave_time&, const octave_time&)): + New comparison functions. + + * strftime.c: Move here from src directory. + * Makefile.in (SOURCES): Add it to the list. + + * oct-time.h (octave_time::octave_time (time_t)): New constructor. + +Wed Jul 14 17:38:07 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-time.h, oct-time.cc: New files. + * Makefile.in (INCLUDES, SOURCES): Add them to the lists. + + * systime.h: Move here from src directory. + * Makefile.in (INCLUDES): Add it to the list. + +Mon Jul 12 22:34:34 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mx-defs.h (b_d_Mapper, b_c_Mapper): New typedefs. + * dMatrix.cc (Matrix::map (b_d_Mapper)): New function. + * CMatrix.cc (ComplexMatrix::map (b_c_Mapper)): New function. + * lo-mappers.cc (xisinf, xisnan, xfinite): Return bool, not double. + + * lo-mappers.cc (xmin, xmax): New functions to correctly handle NaNs. + +Mon May 10 07:45:11 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * MArray-defs.h (DO_VV_OP2): Fix macro definition to use arg. + +Wed May 5 20:06:10 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>index (idx_vector& idx)): Always return a + column vector for A(:), for compatibility with Matlab. + +Fri Apr 23 11:52:23 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * LSODE.cc (LSODE::do_integrate (double)): Don't forget to set + iopt when there are optional inputs in rwork or iwork. + +Fri Mar 26 11:26:32 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (libraries): Use the libfoo.a(objects) method of + creating static libs. + +Thu Mar 4 02:17:04 1999 James Macnicol <jamesm@evans.ee.adfa.oz.au> + + * data-conv.cc (oct_data_conv::string_to_data_type): Handle uint16 + and uint32 data types. + +Thu Mar 4 01:51:37 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.cc (octave_ieee_init): Don't use __alpha__-specific code + for Linux. Remove old Linux-specific code. + +Tue Jan 19 09:34:55 1999 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (operator * (const ColumnVector& v, const RowVector& a)): + Don't require lengths to be equal. + * CMatrix.cc (operator * (const ComplexColumnVector& v, const + ComplexRowVector& a)): Likewise + +Tue Nov 24 23:38:19 1998 Eric Norum <eric@skatter.USask.Ca> + + * statdefs.h: Only define mode_t if not already defined. + +Tue Nov 24 17:24:52 1998 john <john@arrows.demon.co.uk> + + * lo-specfun.cc (airy, biry): Set imaginary part of result to zero + when appropriate. + +Mon Nov 23 09:57:05 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.cc (gnu_readline::gnu_readline): Set terminal name + before calling rl_initialize. + +Tue Nov 17 23:47:24 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-specfun.cc (besselh, airy, biry): New functions. + Update Bessel function support to use library by D. E. Amos. + +Thu Nov 12 17:44:15 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.h (command_editor::readline): Add new variation that + allows EOF information to be passed back to caller. + + * dMatrix.cc (Matrix::read): Do the right thing for EOF when + amount of data to read is unspecified. + +Tue Nov 10 07:53:15 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-alloc.h (DECLARE_OCTAVE_ALLOCATOR): New macro. + (DEFINE_OCTAVE_ALLOCATOR): Ditto. + + * byte-swap.h (swap_bytes, swap_2_bytes, swap_4_bytes, swap_8_bytes): + Add volatile qualifier to void* arg. + Cast volatile void* arg to volatile char*. + +Mon Nov 9 08:28:31 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.h (command_editor::do_set_event_hook): New function. + (command_editor::do_restore_event_hook): Ditto. + * cmd-edit.cc (command_editor::set_event_hook): Ditto. + (command_editor::restore_event_hook): Ditto. + (gnu_readline::do_set_event_hook): Ditto. + (gnu_readline::do_restore_event_hook): Ditto. + (gnu_readline::previous_event_hook): New data member. + (gnu_readline::gnu_readline): Initialize previous_event_hook. + +Mon Nov 2 13:36:04 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (BINDISTLIBS): Don't include .$(SHLEXT_VER) in name. + + * Makefile.in (stmp-pic): New target. + ($(PICOBJ)): Depend on stmp-pic, not pic. + (clean): Remove stmp-pic + + * Makefile.in: Undo previous change to avoid optmization when + compiling lo-ieee.cc. + +Sun Nov 1 10:10:40 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc (xfinite): Define in terms of xfinite for real and + imaginary parts. + (xisinf): Define in terms of xisinf for real and imaginary parts. + +Thu Oct 29 18:57:50 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * boolMatrix.cc (boolMatrix::operator !): New function. + +Fri Oct 23 21:46:20 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pathsearch.h (dir_path::default_path): New data member. + * pathsearch.cc (dir_path::init): Use it. + + * Makefile.in: Avoid optmization when compiling lo-ieee.cc. + +Fri Oct 16 01:08:30 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * chMatrix.cc (charMatrix::extract): New function. + (charMatrix::charMatrix (char c)): New constructor. + +Tue Oct 13 22:11:08 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.h: (command_editor::do_read_init_file): New function. + * cmd-edit.cc (command_editor::read_init_file): New function. + (gnu_readline::do_read_init_file): Likewise. + +Fri Sep 25 14:26:44 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-env.cc (octave_env::do_get_home_directory): + If HOME can't be found, set it to "/". + (octave_env::do_get_user_name) + If user name can't be found, set it to "unknown". + (octave_env::do_get_host_name) + If host name can't be found, set it to "unknown". + + * pathsearch.h (dir_path::rehash): New function. + * pathsearch.cc (dir_path::init): Clear kpathsea's internal + diretcory cache before doing initialization. + +Thu Sep 24 13:23:25 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Qzval): Delete. + (qzhes, qzit, qzval): Delete F77_FCN declarations. + * dMatrix.h (Qzval): Delete declaration. + + * dbleGEPBAL.h, dbleGEPBAL.cc: Delete. + * Makefile.in (MATRIX_INC, MATRIX_SRC): Delete them from the lists. + * mx-ext.h: Don't include dbleGEPBAL. + + * lo-ieee.cc (octave_ieee_init): For now, use X_CAST instead of + static_cast. + +Fri Sep 4 10:58:22 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::read): Skip after reading, not before. + From: Dr.-Ing. Torsten Finke <fi@igh-essen.com>. + +Wed Sep 2 09:50:21 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.cc (octave_ieee_init): For Linux on arm, don't rely on + HUGE_VAL and NAN. + +Wed Aug 26 15:04:57 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (assign (Array2<LT>& lhs, const Array2<RT>& rhs)): + Handle x(i) = scalar for do_fortran_indexing == 1. + +Thu Jul 30 00:34:10 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.cc (ComplexMatrix::ComplexMatrix (const charMatrix&)): + Alloctate space before attempting to use it. + (ComplexMatrix::ComplexMatrix (const boolMatrix&)): Likewise. + +Mon Jun 22 17:04:27 1998 Tomislav Goles <tom@ait-tech.com> + + * EIG.cc (EIG::init): Move invariant code outside loop. + +Thu Jun 18 11:08:23 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * MArray2.cc (MARRAY_A2A2_OP): If operands are empty, make result + have the same size as the operands. + +Thu May 28 10:41:04 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DASSL.cc (DASSL::do_integrate): If an exception occurs in the + call to ddassl, set integration_error to 1 before calling the + error handler and returning. + * LSODE.cc (LSODE::do_integrate): Likewise. + +Wed May 27 13:46:30 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (assign): Allow A([],[]) = scalar and, if + do_fortran_indexing is set, A([]) = scalar. + * Array-idx.h (assign): Allow A([]) = scalar. + +Thu May 14 11:50:24 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mx-op-defs.h (MDM_MULTIPLY_OP): Compute result if dm_nc > 0, not + if dm_nc == 0. + +Thu Apr 23 16:15:37 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pathsearch.h (dir_path::p_orig): New field. + * pathsearch.cc (dir_path::init): Perform variable and tilde + expansion on the original path here. + (dir_path::find_all): Don't do anything if not initialized. + +Tue Apr 14 14:41:30 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (index): Allow x(:) even when do_fortran_indexing + is not set. + (index): Allow x = zeros (2, 0); x(1,:) to work. + + * lo-specfun.cc (gammainc): Use dgamit to compute + (\int_0^x exp(-t) t^(a-1) dt)/gamma(a), not just + \int_0^x exp(-t) t^(a-1) dt. + +Wed Apr 8 22:50:44 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-C.cc, Array-b.cc, Array-ch.cc, Array-i.cc, Array-d.cc, + Array-s.cc: Change return types of all `assign' explicit + instantiations to be int, not void, to match the template decl in + Array.h. + +Mon Apr 6 00:27:06 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-specfun.cc (gammainc): Reorder args in call to xdgami. + +Thu Feb 19 01:16:38 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-specfun.cc (xgamma, xlgamma): Define here. + * lo-mappers.cc: Not here. + + * lo-specfun.h: Declare xgamma and xlgamma here. + * lo-mappers.h: Not here. + + * lo-specfun.h: Never declare gamma or lgamma. + +Tue Feb 10 16:14:36 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-idx.h (assign): Allow A([]) = X to succeed if X is an + empty matrix of any dimension. + +Thu Feb 5 02:12:38 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-syscalls.cc (octave_syscalls::vfork): New function. + + * lo-specfun.cc: Don't include dbleBessel.h. + + * Makefile.in (INCLUDES): Delete oct-math.h from the list. + + * dir-ops.h (dir_entry::operator bool ()): Return bool, not void*. + * file-stat.h (file_stat::operator bool ()): Likewise. + * idx-vector.h (idx_vector::operator bool ()): Likewise. + * oct-group.h (octave_group::operator bool ()): Likewise. + * oct-passwd.h (octave_passwd::operator bool ()): Likewise. + + * data-conv.cc (IEEE_little_double_to_IEEE_big_double): + Don't cast arg in call to swap_8_bytes. + (IEEE_big_double_to_IEEE_little_double): Ditto + (IEEE_big_float_to_IEEE_little_float): Don't cast arg in call to + swap_4_bytes. + (IEEE_little_float_to_IEEE_big_float): Ditto + + * oct-alloc.cc (grow): Use X_CAST, not static_cast. + * prog-args.cc (prog_args::getopt): Likewise. + * dMatrix.cc (read_int, do_read, write_int, do_write): Likewise. + * cmd-edit.cc (gnu_readline::do_set_completion_function): Likewise. + * data-conv.cc (LS_DO_READ, LS_DO_WRITE, read_doubles, write_doubles): + Likewise. + + * byte-swap.h (swap_bytes, swap_2_bytes, swap_4_bytes, + swap_8_bytes): Declare ptr arg as void*, then use cast. + +Mon Feb 2 01:42:56 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (install, uninstall): Use $(octlibdir), not $(libdir). + Use $(mk-libdir-link). + + * file-stat.cc (file_stat::update_internal): Use stat and lstat, + not SAFE_STAT and SAFE_LSTAT. + (lstat): New function, defined if HAVE_LSTAT is not defined. + * safe-xstat.hin, safe-xstat.cin: Delete. + * Makefile.in: Delete rules for safe-stat.h, safe-stat.c, + safe-lstat.h, and safe-lstat.cc. + +Fri Jan 30 23:48:43 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * chMatrix.cc (charMatrix::all, charMatrix::any): New functions. + +Tue Jan 20 16:30:00 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::expm): Skip trace normalization step if the + trace is negative. + * CMatrix.cc (ComplexMatrix::expm): Skip trace normalization if + the real part of the trace is negative. + +Mon Jan 19 16:01:59 1998 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::expm): Call xdlange instead of dlange. + * CMatrix.cc (ComplexMatrix::expm): Call xzlange instead of zlange. + + * Array2-idx.h (assign): Allow operations like a = 1; a(2:3) = [1;2] + to succeed. + +Thu Dec 18 14:53:45 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.cc (IDX_VEC_REP::sort): Don't do anything unless len > 1. + (make_uniq): Likewise. + +Fri Dec 12 10:58:33 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.cc (octave_ieee_init): Check for linux before __alpha__. + +Sun Nov 30 14:59:12 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc: Include cmath and lo-specfun.h, not oct-math.h. + + * lo-specfun.h, lo-specfun.cc: New files. + * Makefile.in (INCLUDES, SOURCES): Add them to the lists. + + * acosh.c, asinh.c, atanh.c, erf.c, erfc.c, gamma.c, lgamma.c, + oct-math.h: Delete. + * Makefile.in (SOURCES): Delete them from the list. + +Wed Nov 26 20:02:13 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-sysdep.cc (octave_getcwd): Prefer getcwd over getwd. + +Wed Nov 19 02:30:04 1997 Mumit Khan <khan@dhaka.xraylith.wisc.edu> + + Changes to make support egcs snapshots that implement explicit + specification of template functions according to CD2. + + * MArray.h: If NEED_TEMPLATE_FCN_SPECS is defined, add explicit + template function specs for template friends. + * MArray2.h: Likewise. + * MDiagArray2.h: Likewise. + +Thu Nov 13 21:57:16 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.cc (sumsq): Compute equivalent of sum (x .* conj (x)) + +Thu Oct 2 17:13:02 1997 Mumit Khan <khan@dhaka.xraylith.wisc.edu> + + * CRowVector.cc (linspace): Removed attempt for implicit conversion + to complex<double>(int) instead of complex<double>(double). + + * lo-mappers.cc (atanh): Ditto. + +Thu Jul 31 22:13:54 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.cc (IDX_VEC_REP::sort): New function. + * idx-vector.h (idx_vector::sort): Ditto. + * Array2-idx.h (Array2<T>::maybe_delete_elements): Use it before + trying to delete elements specified by the index vectors. + +Fri Jul 25 17:31:26 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::lssolve): Increase lwork by factor of 16. + * CMatrix.cc (ComplexMatrix::lssolve): Ditto. + +Thu Jul 24 14:32:48 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.cc (tilde_expand_word): Fix off-by-one error. + +Wed Jul 9 19:40:23 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-sysdep.cc (octave_getcwd): If getwd is available, use it. + Call error handler if we can't find the current directory. + +Mon Jul 7 21:14:41 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc (xisnan (double)): Return only 1 or 0. + (xfinite (double)): Ditto. + + * dbleQR.cc (QR::init): Don't forget to initialize Q when type is raw. + * CmplxQR.cc (ComplexQR::init): Ditto. + +Sun Jun 15 21:06:37 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc (acos (const Complex&)): Select branch that is + compatible with Matlab. + +Tue Jun 10 10:58:05 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h: Correctly handle empty matrices indexed by a + single colon. + +Fri Jun 6 04:27:40 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc (xlgamma): Use F77_XFCN function to call dlgams. + (xgamma): Likewise, for calling xdgamma. + + * FSQP.h, NPSOL.h, QPSOL.h, FSQP.cc, NPSOL.cc, QPSOL.cc: Delete + * Makefile.in (INCLUDES, SOURCES): Remove them from the lists. + + * file-ops.cc (file_ops::tilde_expand): Steal more code from bash + to do better job expanding tildes. + + * str-vec.cc (string_vector::string_vector (const char * const *): + Use temporary variable to compute length. + +Thu Jun 5 01:44:43 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in: Make building of static library optional. + (liboctave.$(SHLEXT_VER)): Add $(SONAME_FLAGS) to command. + + * Makefile.in (stamp-picdir): Delete. + (pic): New target. Don't worry so much about creating pic + directory only when it is really needed. + (stamp-interp): Delete. + (libraries): New target. Depend on shared library directly. + +Wed Jun 4 00:08:55 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pathsearch.h, pathsearch.cc (dir_pat::set_program_name): + New static function. + +Mon Jun 2 12:44:14 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-mappers.cc (fix): Use floor and ceil instead of casting to int. + +Thu May 22 16:20:43 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.h, cmd-edit.cc: Rename set_paren_string_delimiters to + set_basic_quote_characters, to match new version of readline. + + * cmd-edit.cc (do_restore_terminal_state): Call readline function + for restoring terminal state through rl_deprep_term_function, now + declared in readline.h + (rl_deprep_terminal): Delete declaration. + +Wed May 21 16:30:25 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (install-in): Use new mk-includedir-link macro. + (install-lib): Install in $octlibdir. Use new mk-libdir-link macro. + +Thu May 15 11:46:42 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-edit.cc (command_editor::increment_current_command_number): + New static function. + +Mon May 12 02:14:13 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.cc (IDX_VEC_REP::is_colon_equiv): Make it work when + the vector is not sorted. + + * CMatrix.cc (ComplexMatrix::operator !): Return boolMatrix. + * dMatrix.cc (Matrix::operator !): Likewise + +Wed May 7 21:14:06 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-syscalls.h, oct-syscalls.cc: New files. + + * cmd-edit.h, cmd-edit.cc: Handle completion function. + + * str-vec.h, str-vec.cc (string_vector::uniq): New function. + +Tue May 6 00:52:02 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (INCLUDES_FOR_INSTALL): New variable. + (install-inc): Use it. + + * file-ops.h, file-ops.cc (tempnam): Add DIR and PREFIX args. + Handle errors and missing functions consistently. + + * oct-group.h, oct-group.cc: New files. + + * oct-passwd.cc: Handle errors and missing functions consistently. + + * str-vec.h, str-vec.cc (c_str_vec, delete_c_str_vec): New functions. + +Mon May 5 17:53:01 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.cc: (file_ops::tilde_expand): Use new octave_passwd class. + * oct-env.cc (octave_env::do_get_user_name): Likewise. + + * oct-passwd.h, oct-passwd.cc: New files. + +Sun May 4 22:17:08 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * statdefs.h: Only include sys/types.h if HAVE_SYS_STAT_H is defined. + + * mach-info.h, mach-info.cc: Add missing const qualifiers. + (instance_ok ()): New function. + + * glob-match.h, glob-match.cc: Rename from oct-glob.h, oct-glob.cc. + + * cmd-hist.h, cmd-hist.cc: Make it work without GNU readline. + + * lo-utils.h, lo-utils.cc (strsave, octave_putenv): Move here from + src/utils.h and src/utils.cc. + (octave_fgets): New function, extracted from src/input.cc. + + * cmd-edit.h, cmd-edit.cc: New files. Provide wrapper class for + GNU readline, and allow Octave to work without GNU readline. + + * lo-sysdep.h, lo-sysdep.cc: New files for miscellaneous + system-dependent functions. + + * oct-env.h, oct-env.cc: New files for process environment stuff. + + * file-stat.h, file-stat.cc: New files. Extract file_stat class + from file-ops.h and file-ops.cc and move here. + + * file-ops.h, file-ops.cc: Wrap functions in struct. Move + tilde_expand functions here from src/dirfns.cc. + +Fri May 2 19:50:12 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pathlen.h: New file, from ../src. + +Tue Apr 29 04:39:01 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>::maybe_delete_elements): Prevent + out-of-bounds indexing of the index array. + * Array-idx.h (Array<T>::maybe_delete_elements): Likewise. + +Fri Mar 28 15:37:09 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * LSODE.h (x_step_limit): New field. + (LSODE_options::init): Initialize it. + (LSODE_options::copy): Copy it. + (LSODE_options::set_step_limit, LSODE_options::step_limit): + New functions. + (LSODE::working_too_hard): Delete. + * LSODE.cc (LSODE::do_integrate): Handle step limit. + +Wed Mar 26 15:31:57 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * MArray-b.cc: Delete. + * Makefile.in: Delete it from the lists. + + * boolMatrix.h (class bboolMatrix): Derive from Array2, not + MArray2, since most of the numeric ops don't really make sense. + +Tue Mar 25 17:37:25 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * boolMatrix.cc (boolMatrix::all, boolMatrix::any): New functions. + + * dMatrix.cc (Matrix::all, Matrix::any): Return boolMatrix. + * CMatrix.cc (ComplexMatrix::all, ComplexMatrix::any): Likewise. + + * idx-vector.h (idx_vector::idx_vector_rep::freeze, + idx_vector::freeze): Delete prefer_zero_one arg. + * Array-idx.h, Array2-idx.h: Change all callers. + + * Array-flags.h, Array-flags.cc (liboctave_pzo_flag): Delete. + + * mx-op-defs.h: New file for operator definitions. + * mx-cdm-cm.h, mx-cdm-cs.h, mx-cdm-dm.h, mx-cdm-m.h, mx-cdm-s.h, + mx-cm-cdm.h, mx-cm-dm.h, mx-cm-m.h, mx-cm-s.h, mx-cs-cdm.h, + mx-cs-dm.h, mx-cs-m.h, mx-dm-cdm.h, mx-dm-cm.h, mx-dm-cs.h, + mx-dm-m.h, mx-dm-s.h, mx-m-cdm.h, mx-m-cm.h, mx-m-cs.h, mx-m-dm.h, + mx-s-cdm.h, mx-s-cm.h, mx-s-dm.h, mx-cdm-cm.cc, mx-cdm-cs.cc, + mx-cdm-dm.cc, mx-cdm-m.cc, mx-cdm-s.cc, mx-cm-cdm.cc, mx-cm-dm.cc, + mx-cm-m.cc, mx-cm-s.cc, mx-cs-cdm.cc, mx-cs-dm.cc, mx-cs-m.cc, + mx-dm-cdm.cc, mx-dm-cm.cc, mx-dm-cs.cc, mx-dm-m.cc, mx-dm-s.cc, + mx-m-cdm.cc, mx-m-cm.cc, mx-m-cs.cc, mx-m-dm.cc, mx-s-cdm.cc, + mx-s-cm.cc, mx-s-dm.cc: + New files for mixed-type operations. + * Makefiles.in: Add them to the appropriate lists. + + * mx-inlines.cc: Add bool by bool EQ ops. + + * idx-vector.h, idx-vector.cc: Add constructors for bool and + boolMatrix types. + (idx_vector::maybe_convert_one_zero_to_idx, + idx_vector::idx_vector_rep::maybe_convert_one_zero_to_idx): + Delete second arg, prefer_zero_one. Change all callers. + + * boolMatrix.h, boolMatrix.cc: New files. + * mx-base.h: Include boolMatrix.h here. + * mx-defs.h: Provide forward declaration for boolMatrix here. + + * chMatrix.h, chMatrix.cc: Delete unused junk. + + * dMatrix.h, CMatrix.h: Delete friend declarations for operator+, + operator-, operator*, product, and quotient functions. + Add constructor for boolMatrix type. + * dMatrix.cc, CMatrix.cc: Delete operator+, operator-, operator*, + product, and quotient functions. + + * CDiagMatrix.h: Delete friend declarations for operator+, + operator-, and product functions. + * CDiagMatrix.h: Delete operator+, operator-, and product functions. + + * Array-b.cc: Also instantiate 2d and 2d diagonal arrays. + +Fri Mar 14 00:29:46 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * EIG.cc (EIG::hermitian_init (const ComplexMatrix&)): New function. + (EIG::init (const ComplexMatrix&)): Call it if arg is hermitian. + (EIG::symmetric_init (const Matrix&)): New function. + (EIG::init (const Matrix&)): Call it if arg is symmetric. + + * CMatrix.cc (ComplexMatrix::is_hermitian): New function. + +Thu Mar 13 17:04:26 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2.cc (is_symmetric): New function. + * Array2.h (is_square): New function. + +Wed Mar 12 16:59:49 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (install-strip): New target. + +Mon Mar 10 22:34:22 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CmplxCHOL.cc, CmplxHESS.cc, CmplxLU.cc, CmplxQR.cc, + CmplxQRP.cc, CmplxSCHUR.cc, CmplxSVD.cc, EIG.cc, dbleCHOL.cc, + dbleHESS.cc, dbleLU.cc, dbleQR.cc, dbleQRP.cc, dbleSCHUR.cc, + dbleSVD.cc: Don't include mx-inlines.cc. + + * mx-inlines.cc: Abuse the preprocessor to eliminate lots of + duplicate code. + +Sun Mar 9 03:44:52 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleQR.h (QR): Delete extra comma at end of list. + + * prog-args.cc (prog_args::getopt): Add missing const in cast. + + * dbleSVD.h (SVD::type): Delete extra comma at end of list. + + * idx-vector.h (idx_vector): Delete unnecessary idx_vector:: and + idx_vecotr_rep:: qualifiers. + + * Array.h (class Array): Delete unnecessary Array<T>:: qualifiers. + + * data-conv.h (save_type): Delete extra comma at end of list. + + * CMatrix.cc, FEGrid.cc, Range.cc, dMatrix.cc, data-conv.cc, + dir-ops.cc, file-ops.h, idx-vector.cc, idx-vector.h, lo-ieee.cc, + lo-mappers.cc, oct-alloc.cc: Use `static_cast<T> (val)' instead of + old C-style `(T) val' casts. + +Thu Mar 6 20:20:01 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (operator >>): Return if an error occurs instead of + just breaking out of the innermost loop. + * CMatrix.cc (operator >>): Likewise. + +Sat Mar 1 15:23:14 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Version 2.0.5 released. + +Fri Feb 28 20:11:23 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CmplxQR.cc (ComplexQR::init): New function. + (ComplexQR::ComplexQR): Use it. Use initializer list too. + * CmplxQRP.cc (ComplexQRP::init): New function. + Get sizes right in all cases. + (ComplexQR::ComplexQRP): Use it. Use initializer list too. + + * dbleQR.cc (QR::init): New function. + (QR::QR): Use it. Use initializer list too. + * dbleQRP.cc (QRP::init): New function. + Get sizes right in all cases. + (QR::QRP): Use it. Use initializer list too. + +Wed Feb 26 15:46:28 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mach-info.cc (oct_mach_info::string_to_float_format): + Recognize "vaxg", not "vax_g". + +Fri Feb 21 16:07:56 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (Array2<T>::maybe_delete_elements): Use correct + dimension in check for colon equivalent index. + * idx-vector.cc (IDX_VEC_REP::is_colon_equiv): A single-element + index whose value is 0 is also colon eqivalent for n == 1. + + * lo-ieee.cc (octave_ieee_init): Reorder #ifdef stuff to put + system-specific tests first. + +Thu Feb 20 02:58:05 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Version 2.0.4 released. + +Wed Feb 19 09:42:30 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.cc: D'oh, it's `extern "C"', not `#extern "C"'. + +Tue Feb 18 09:22:04 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Version 2.0.3 released. + +Fri Feb 14 16:23:47 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (bin-dist): Don't write empty strings to LIBRARIES. + +Thu Feb 13 14:35:19 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (stamp-prereq): Depend on stamp-picdir. + (all): Don't depend on stamp-prereq or stamp-picdir. + (liboctave.a, stamp-shared): Do depend on stamp-prereq. + (stamp-picdir): Silence noise about making pic. + (stamp-shared): Use $(SH_LD) $(SH_LDFLAGS) instead of $(CXX) -shared. + + * Array2-idx.h (Array2<T>::index (idx_vector&, idx_vector&)): + Fix typo in last change. + + * CColVector.cc (ComplexColumnVector::map (d_c_mapper)): + Convert from friend (moved from dColVector.cc). + * CMatrix.cc (ComplexMatrix::map (d_c_mapper)): + Likewise (moved from dMatrix.cc). + * CRowVector.cc (ComplexRowVector::map (d_c_mapper)): + Likewise (moved from dRowVector.cc). + + * dColVector.cc (ColumnVector::map (d_d_mapper)): Convert from friend. + * dMatrix.cc (Matrix::map (d_d_mapper)): Likewise. + * dRowVector.cc (RowVector::map (d_d_mapper)): Likewise. + * CColVector.cc (ComplexColumnVector::map (c_c_mapper)): Likewise. + * CMatrix.cc (ComplexMatrix::map (c_c_mapper)): Likewise. + * CRowVector.cc (ComplexRowVector::map (c_c_mapper)): Likewise. + + * dColVector.cc (ColumnVector::apply): Rename from map, return *this. + * dMatrix.cc (Matrix::apply): Likewise. + * dRowVector.cc (RowVector::apply): Likewise. + * CColVector.cc (ComplexColumnVector::apply): Likewise. + * CMatrix.cc (ComplexMatrix::apply): Likewise. + * CRowVector.cc (ComplexRowVector::apply): Likewise. + +Tue Feb 11 19:44:28 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.cc: Declare quiet_nan() and infinity(). + +Mon Feb 10 01:17:45 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.cc (oct_unlink (const string&, string&)): + New two-arg version. + (oct_rmdir (const string&, string&)): New two-arg version. + (oct_mkdir (const string&, mode_t, string&)): New three-arg version. + (oct_mkfifo (const string&, mode_t, string&)): New three-arg version. + (oct_rename (const string&, const string&, string&)): + New three-arg version. + +Fri Feb 7 13:15:55 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.h (idx_vector::orig_empty): New function. + + * Array2-idx.h (Array2<T>::index (idx_vector&, idx_vector&)): + Don't always resize to [](0x0) if one of the indices is empty or + zero. + +Sun Feb 2 22:33:44 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-hist.cc (command_history::read): New arg, must_exist. + Set line_in_file here too. + (command_history::read_range): New arg, must_exist. + +Fri Jan 31 09:21:57 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * f2c-main.c: Change C++-style comments to C-style comments. + +Tue Jan 28 10:46:02 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (install-inc): Create a relative symbolic link. + +Mon Jan 27 15:52:27 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Version 2.0.2 released. + +Sat Jan 25 22:36:21 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (bin-dist): New target. + +Wed Jan 22 16:18:53 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleSVD.cc (SVD::init): Work around apparent dgesvd() bug. + * CmplxSVD.cc (ComplexSVD::init): Work around apparent zgesvd() bug. + +Mon Jan 20 18:44:11 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * chMatrix.cc (charMatrix::charMatrix (const string&)): + If the number of columns is zero, also set the number of rows to zero. + (charMatrix::charMatrix (const char *)): Likewise. + +Tue Jan 7 00:16:57 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Version 2.0.1 released. + +Sun Jan 5 12:07:45 1997 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::read): Correctly compute the number of + columns for resizing when the number of rows is specified but the + number of columns is not. + +Wed Dec 18 16:18:58 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Range.cc (operator -): New function. + + * lo-ieee.cc: Include <nan.h> on all systems that have it. + +Fri Dec 13 02:01:32 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (assign): Delay resizing left hand side until we + know if the assignment conforms. + +Tue Dec 10 01:43:09 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Version 2.0 released. + +Fri Dec 6 14:41:15 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (assign): If index is a colon, set number of + elements to the lhs dimension if the lhs dimension is greater than + zero. Otherwise, set it to the rhs dimension. + + * Version 1.94. + + * Array2-idx.h (assign): Test for rhs scalar case first. + If index is colon, set number of elements to lhs dimension, not + rhs dimension. + +Thu Dec 5 13:05:18 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * sun-utils.h: Don't declare MAIN_ or MAIN__ here. + * sun-utils.cc: Delete. + * f2c-main.c: New file + + * Makefile.in: Fix file name lists. + + * CMatrix.cc (lssolve): Don't redeclare retval, resize it. + +Wed Dec 4 12:24:24 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Qzval): Don't try to use same memory three times. + Create result using Complex constructor, not multiplication. + Order elements as they are returned from Eispack. + +Mon Dec 2 00:26:41 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.cc (octave_ieee_init): Kluge for octave_Inf on SCO. + Only include nan.h if SCO is defined. Define _IEEE before + including it and undefine it afterward. + [SCO] (isnan): Don't mistake Inf as NaN. + + * Array-idx.h (assign): Only resize if assignment conforms. + +Wed Nov 20 01:00:40 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (INCLUDES): Delete lo-error.h. + * lo-error.h: Delete (moved to libcruft/misc). + + * Version 1.93. + +Tue Nov 19 23:07:45 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-glob.cc (glob_match::match): Don't expect our flag values to + be the same as they are in fnmatch.h. + + * f77-fcn.c, f77-fcn.h: Move to libcruft/misc directory. + + * Makefile.in (INCLUDES): Delete f77-fcn.h. + (SOURCES): Delete f77-fcn.c. + +Fri Nov 15 13:47:34 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.h: [SCO]: Declare isinf and isnan. + +Thu Nov 14 00:06:53 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Version 1.92. + +Wed Nov 13 11:19:22 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-hist.cc (command_history::add): Ignore empty input lines, or + lines that have only carriage return or newline. + + * lo-ieee.cc (isnan, isinf): Provide functions for SCO. + +Tue Nov 12 11:11:21 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.cc (idx_is_inf_or_nan): New function. + (IDX_VEC_REP::idx_vector_rep): Use it. + +Sun Nov 10 17:09:24 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * str-vec.h, str-vec.cc: Add constructors to make string vectors + from vectors of C strings. + + * oct-glob.h, oct-glob.cc (glob_match): Allow pat to be a string + vector. + (glob_match::match): Allow match string to be a string vector. + (glob_match::glob): New function. + + * chMatrix.cc (charMatrix::row_as_string): New arg, strip_ws. + + * Array-b.cc: New file. + * Makefile.in (TI_SRC): Add it to the list. + +Fri Nov 8 18:09:12 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.cc: Change #include "" to #include <> for safe-lstat.h + and safe-stat.h, to avoid getting them from $srcdir when we really + want the version from the build directory. (Maybe this should be + done for all the include files, not just those that are + auto-generated? Hmm.) + +Thu Nov 7 10:45:11 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Version 1.91. + + * Array3.cc (Array3<T>::resize): Make it work. + +Wed Nov 6 22:44:33 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-alloc.h, oct-alloc.cc: New files. + * Makefile.in: Add them to the lists. + +Mon Nov 4 21:49:51 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleQRP.cc (QRP::QRP): Don't pass tmp data to unsafe constructor. + * CmplxQRP.cc (ComplexQRP::ComplexQRP): Ditto. + +Sun Nov 3 15:45:37 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.cc (file_stat::is_blk, file_stat::is_chr, + file_stat::is_dir, file_stat::is_fifo, file_stat::is_lnk, + file_stat::is_reg, file_stat::is_sock): Just return false if the + underlying macro is not defined. + + * oct-math.h (lgamma, gamma): Delete declarations. + (asinh, acosh, atanh, erf, erfc): Declare arg types too. + Protect declarations with #ifdef HAVE_*. + +Wed Oct 30 11:42:58 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Version 1.90. + + * Makefile.in (DISTFILES): Add ChangeLog. + + * cmd-hist.cc: Only include fcntl.h if HAVE_FCNTL_H. + + * Matrix-ext.cc: Include <cfloat>, not <float.h>. + + * CMatrix.cc, cmd-hist.cc, file-ops.cc, file-ops.h, filemode.c, + mkdir.c, rename.c, rmdir.c, safe-xstat.cin, statdefs.h, sysdir.h, + tempname.c, utils.cc: Only include sys/types.h if HAVE_SYS_TYPES_H. + + * Array3.h (T Array3<T>::checkelem): Return T() for bogus value, + since that is now accepatble syntax, even for built-in types. + * Array2.h (T Array2<T>::checkelem): Likewise + +Sat Oct 26 23:37:34 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.cc (mkfifo) [! HAVE_MKFIFO]: Just print an error + message and return -1. + +Fri Oct 25 01:24:51 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * str-vec.h (str_vec_compare): Declare args as const void *, then + cast them to const string * in the body of the function. + + * file-ops.cc (file_stat::mode_as_string): Explicitly construct + string from buf. + + * Array3.h (Array3::checkelem): Tag bogus return value with + GCC_ATTRIBUTE_UNUSED. + * Array2.h (Array2::checkelem): Likewise. + +Thu Oct 24 19:40:36 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Quad.h (Quad): Define virtual destructor. + +Tue Oct 15 11:34:48 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.cc (ComplexMatrix::all_elements_are_real): new function. + +Sun Oct 13 11:19:00 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * sun-utils.h: Conditionally declare MAIN__ too. Declare MAIN_ + and MAIN__ extern "C". + * sun-utils.cc: Include sun-utils.h here. Delete extern "C" stuff. + +Sat Oct 12 12:40:00 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * MArray-misc.cc: New file. + * Makefile.in (MATRIX_SRC): Add it to the list. + + * mx-inlines.cc (equal): Return bool, not int. + + * idx-vector.h (idx_vector (double)): New constructor. + + * chMatrix.h, chMatrix.cc, CMatrix.h, CMatrix.cc, dMatrix.h, + dMatrix.cc, dDiagMatrix.h, dDiagMatrix.cc, dRowVector.h, + dRowVector.cc, dColVector.h, dColVector.cc, CColVector.h, + CColVector.cc, CDiagMatrix.h, CDiagMatrix.cc, CRowVector.h, + CRowVector.cc: Logical operators return bool, not int. + + * CMatrix.h, CMatrix.cc (ComplexMatrix::any_element_is_inf_or_nan): + New function. + + * dMatrix.h, dMatrix.cc (Matrix::any_element_is_negative, + Matrix::any_element_is_inf_or_nan, Matrix::abs, + Matrix::all_elements_are_inf_or_nan): New functions. + + * Range.h, Range.cc (Range::all_elements_are_ints): New function. + + * MArray.cc, MArray2.cc, MDiagArray2.cc: Call gripe_nonconformant + for errors. Simplify macros by converting FCN to string for error + messages. + + * Array-idx.h (Array<T>::index): New function. Don't call + clear_index() here. + (Array<T>::value): Call it, do call clear_index() here. + * Array2-idx.h (Array<T>::value, Array<T>::index): Likewise, for + one and two arg index functions. + +Tue Sep 17 21:21:16 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * DAEFunc.h: Delete #pragma interface since there is no longer a + separate implementation file. + +Tue Aug 20 17:38:46 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (stamp-picdir): Only create a pic subdirectory if + SHARED_LIBS is true AND CPICFLAG or CXXPICFLAG is not empty. + + * idx-vector.cc (IDX_VEC_REP::is_colon_equiv): Rename arg sort to + sort_uniq. If sort_uniq is nonzero, sort the elements and make + them uniq. + + * CMatrix.cc (ComplexMatrix::row_max, ComplexMatrix::row_min, + ComplexMatrix::column_max, ComplexMatrix::column_min): + Rewrite. Also return index as a reference arg. + (ComplexMatrix::row_max_loc, ComplexMatrix::row_min_loc, + ComplexMatrix::column_max_loc, ComplexMatrix::column_min_loc): + Delete. + + * dMatrix.cc (Matrix::row_max, Matrix::row_min, + Matrix::column_max, Matrix::column_min): + Rewrite. Also return index as a reference arg. + (Matrix::row_max_loc, Matrix::row_min_loc, + Matrix::column_max_loc, Matrix::column_min_loc): Delete. + +Fri Aug 9 05:01:04 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::row_min, Matrix::row_min_loc, + Matrix::row_max, Matrix::row_max_loc, Matrix::column_min, + Matrix::column_min_loc, Matrix::column_max, + Matrix::column_max_loc): Ignore leading NaNs. + * CMatrix.cc (ComplexMatrix::row_min, ComplexMatrix::row_min_loc, + ComplexMatrix::row_max, ComplexMatrix::row_max_loc, + ComplexMatrix::column_min, ComplexMatrix::column_min_loc, + ComplexMatrix::column_max, ComplexMatrix::column_max_loc): Ignore + leading NaNs. + +Thu Aug 8 16:04:17 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * QPSOL.cc (QPSOL::do_minimize): Insert linear constraint bounds + starting at n, not 0. + +Sat Jul 27 02:54:44 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::Matrix (const RowVector&), + Matrix::Matrix (const ColumnVector&)): New constructors. + + * CMatrix.cc (ComplexMatrix::ComplexMatrix (const RowVector&), + ComplexMatrix::ComplexMatrix (const ColumnVector&), + ComplexMatrix::ComplexMatrix (const ComplexRowVector&), + ComplexMatrix::ComplexMatrix (const ComplexColumnVector&)): + New constructors. + + * chMatrix.cc (charMatrix::charMatrix (const string_vector&)): + New constructor. + +Wed Jul 24 16:39:16 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * LSODE.cc (do_integrate): Check to make sure that the state and + derivative vectors are the same size. + * DASSL.cc (do_integrate): Likewise. + +Sun Jul 14 17:30:37 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::read, Matrix::write): Convert to use + iostreams and handler data format conversions. Delete old methods + that used stdio. + + * data-conv.h, data-conv.cc (oct_data_conv): New class. + +Fri Jul 12 13:52:44 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * mach-info.h: Rename from float-fmt.h. + * mach-info.cc: Rename from float-fmt.cc. + Handle machine information using a singlton class. + * Makefile.in: Update appropriate lists. + +Tue Jul 9 11:49:10 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-flags.cc: Provide definitions for the flags even if + OCTAVE_SOURCE is not defined. + + * Array.h, Array2.h, Array3.h: BOUNDS_CHECKING now affects + operator(), not elem(). + * Array3.h: Move indexing methods here from Array3.cc. + +Mon Jun 24 02:30:05 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array3.cc (checkelem): Fix typo in call to Array2<T>::elem(). + + * Makefile.in (install-lib): Use INSTALL_PROGRAM instead of + INSTALL_DATA for shared libs. + +Thu Jun 6 09:59:06 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Quad.cc: Include lo-error.h here too. + +Mon May 27 12:41:07 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * file-ops.h: Include sys/types.h here. + +Wed May 22 00:20:24 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * chMatrix.cc (charMatrix::transpose): Provide definition. + + * Array-idx.h (maybe_delete_elements): Correctly compute number of + elements in result. + * Array2-idx.h (maybe_delete_elements): Likewise for number of + rows and columns in result. + +Tue May 21 23:46:09 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleQR.cc (QR::QR): Don't create result from to-be-deleted data. + * CmplxQR.cc (ComplexQR::ComplexQR): Likewise. + +Fri May 17 03:06:02 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (install-inc): Install in octincludedir, not includedir. + +Sun May 12 03:40:01 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (uninstall): Also delete shared library. + Split install into install-libs and install-includes. + (install-inc): If linkdir is a directory, leave it alone. + + * sun-utils.cc (MAIN__): Define for Linux/ELF systems. + +Thu May 2 20:19:01 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-idx.h (assign): Handle A(:) = X for A undefined or empty. + * Array2-idx.h (assign): Likewise. + +Tue Apr 30 05:43:06 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2.cc (Array2<T>::range_error): New functions. + + * Array.h (class Array<T>): elem() and operator() are now + equivalent, and do bounds checking by default. + * Array2.cc (class Array2<T>): Likewise. + +Sat Apr 6 21:26:11 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (maintainer-clean, distclean): Also delete + stamp-picdir, stamp-shared, and pic directory. + (stamp-prereq): New target. + +Fri Mar 29 13:44:13 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * NPSOL.h (NPSOL_options::set_option (const char *, int)): + New function. + + * Array.h, Array.cc (Array<T>::range_error ()): New functions. + * Array.h (Array<T>::checkelem): Use them. + + * base-lu.h, base-lu.cc: Parameterize based on types of matrix + elements too. + * dbleLU.h, dbleLU.cc, CmplxLU.h, CmplxLU.cc: Change to match. + + * MDiagArray2.h (MDiagArray2 (const MArray<T>& a)): Delete. + + * Makefile.in (distclean): Delete so_locations, which is created + on DEC Alpha systems. + +Sat Mar 23 04:02:53 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.h (HEAVYWEIGHT_INDEXING): Do define this here if it is not + already defined. + +Fri Mar 22 23:53:58 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pathsearch.cc: Include config.h. + +Wed Mar 20 04:54:03 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2-idx.h (assign (Array2<LT>&, const Array2<RT>&)): Don't + allow M(I, J) = scalar if I or J is empty. + + * Array-idx.h: Delete Array2 and Array3 code (now in Array2-idx.h + and Array3-idx.h). + +Thu Mar 7 10:20:12 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-error.h: Make comments C friendly. + +Sun Mar 3 14:04:32 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2.h (make_unique): Move all indexing functions here. + * Array2.cc: From here. + + * Array.h, Array2.h (NO_BOUNDS_CHECKING): New macro to control + whether operator() calls elem or checkelem. + + * Array.h (make_unique): New private function. + Move all indexing functions here. + * Array.cc: From here. + + * pathsearch.cc (dir_path::find_all): Index tmp, don't dereference + it too. + + * Array-d.cc, Array-ch.cc, Array-C.cc, Array-s.cc, Array-str.cc, + Array-i.cc, MArray-i.cc, MArray-s.cc, MArray-d.cc, MArray-ch.cc, + MArray-C.cc: Include config.h. + + * Array.h, Array2.h, DiagArray2.h, Array3.h: + Don't define HEAVYWEIGHT_INDEXING here. + +Sat Mar 2 18:39:35 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * base-lu.h, base-lu.cc: New files. + * Makefile.in: Add them to the appropriate lists. + * dbleLU.h, dbleLU.cc, CmplxLU.h, Cmplx.cc: Derive from base_lu. + +Fri Mar 1 08:30:58 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array2.h, Array3.h, DiagArray2.h: New files, extracted from Array.h + * Array2-idx.h, Array3-idx.h: New files, extracted from Array-idx.h + * Array2.cc, Array3.cc, DiagArray2.cc: New files, from Array.cc. + * MArray2.h, MDiagArray2.h: New files, extracted from MArray.h. + * MArray2.cc, MDiagArray2.cc, MArray-defs.h: New files, from MArray.cc. + + * MArray.h (INSTANTIATE_MARRAY_FRIENDS): New macro. + (INSTANTIATE_MARRAY2_FRIENDS): Likewise. + (INSTANTIATE_MDIAGARRAY_FRIENDS): Likewise. + * MArray-C.cc, MArray-ch.cc, MArray-c.cc, MArray-i.cc, MArray-s.cc: + Simplify using new macros. + +Mon Feb 26 03:04:29 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (install): If $(includedir) ends in version string, + make link to name that does not include version info. + + * lo-ieee.cc: Include <cmath> here. + +Fri Feb 16 20:52:34 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-ieee.cc, lo-ieee.h: New files. + * lo-mappers.cc, lo-mappers.h: New files. + * lo-utils.cc, lo-utils.h: New files. + * Makefile.in: Add them to the appropriate lists. + +Thu Feb 15 22:02:17 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (all_integers, too_large_for_float): New functions. + * CMatrix.cc (all_integers, too_large_for_float): New functions. + + * byte-swap.h, data-conv.h, data-conv.cc, float-fmt.h, + float-fmt.cc: New files. + * Makefile.in: Include them in the appropriate lists. + +Wed Feb 14 01:49:47 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Qzval): New function. + +Tue Feb 13 12:41:54 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * NPSOL.cc (NPSOL_options::set_option): Arg key is now string, not + char*. + + * DASSL.h, DASSL.cc: Do better management of temporary workspace. + Use F77_XFCN to call Fortran subroutine. + * dColVector.cc, CColVector.cc: Likewise. + * dRowVector.cc, CRowVector.cc: Likewise. + * NPSOL.h, NPSOL.cc: Likewise. + * CmplxCHOL.cc: Likewise. + * dbleCHOL.cc: Likewise. + * CMatrix.cc: Likewise. + * dMatrix.cc: Likewise. + * QPSOL.cc: Likewise. + * LSODE.cc: Likewise. + +Sun Feb 11 14:14:26 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleHESS.cc (HESS::init): Dimension of tau is n-1, not n+1. + + * dbleSCHUR.h, dbleSCHUR.cc: Do better management of temporary + workspace. Use F77_XFCN to call Fortran subroutine. + * CmplxAEPBAL.h, CmplxAEPBAL.cc: Likewise. + * CmplxSCHUR.h, CmplxSCHUR.cc: Likewise. + * dbleGEPBAL.h, dbleGEPBAL.cc: Likewise. + * dbleAEPBAL.h, dbleAEPBAL.cc: Likewise. + * CmplxHESS.h, CmplxHESS.cc: Likewise. + * CmplxSVD.h, CmplxSVD.cc: Likewise. + * dbleHESS.h, dbleHESS.cc: Likewise. + * dbleSVD.h, dbleSVD.cc: Likewise. + * EIG.h, EIG.cc; Likewise. + * CollocWt.cc: Likewise. + * NLEqn.cc: Likewise. + * Quad.cc: Likewise. + +Sat Feb 10 12:14:59 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleLU.h, dbleLU.cc: Do better management of temporary workspace. + Use F77_XFCN to call Fortran subroutine. + * CmplxLU.h, CmplxLU.cc: Ditto. + * dbleQR.h, dbleQR.cc: Ditto. + * CmplxQR.h, CmplxQR.cc: Ditto. + * dbleQRP.h, dbleQRP.cc: Ditto. + * CmplxQRP.h, CmplxQRP.cc: Ditto. + + * dir-ops.h (dir_entry::dir): Declare as void*, not DIR*. + (struct DIR): delete forward declaration. + (dir_entry::operator = (const dir_entry$)): Protect against + copying same object. + * dir-ops.cc: Cast dir appropriately. + +Fri Feb 9 16:12:44 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * lo-error.cc: Moved to libcruft/misc. + * Makefile.in: Delete it from the list. + + * f77-fcn.c (f77_context, f77_exception_encountered): Delete + definitions (they have been moved to libcruft/misc/f77-extern.cc). + + * Array-flags.h: New file. + * Array-idx.h: Include it here. + * Makefile.in (MATRIX_INC): Add it to the list. + + * Array-flags.cc: Renamed from Array-ext.cc. + (liboctave_dfi_flag): Renamed from dfi_flag. + (liboctave_pcv_flag): Renamed from pcv_flag. + (liboctave_pzo_flag): Renamed from pzo_flag. + (liboctave_rre_flag): Renamed from rre_flag. + * Array-idx.h: Change all uses of dfi_flag, etc. + * Makefile.in (MATRIX_SRC): Change file name here too. + + * Makefile.in (LIBOCTAVE_LFLAGS, LIBOCTAVE_LIBS): New variables. + (stamp-shared): Use them here. + +Tue Feb 6 09:53:41 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-hist.cc (command_history::ignore_entries): Delete default + argument value. + +Mon Feb 5 12:07:50 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CmplxAEPBAL.h, CmplxCHOL.h, CmplxDET.h, CmplxHESS.h, CmplxLU.h, + CmplxQR.h, CmplxQRP.h, CmplxSCHUR.h, CmplxSVD.h, dbleAEPBAL.h, + dbleCHOL.h, dbleDET.h, dbleGEPBAL.h, dbleHESS.h, dbleLU.h, + dbleQR.h, dbleQRP.h, dbleSCHUR.h, dbleSVD.h: + Clean up constructors, assigment operator. + +Sun Feb 4 03:12:04 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * NPSOL.cc (do_minimize): Use F77_XFCN to call npsol. + Check f77_exception_encountered on return. + + * f77-fcn.c (f77_exception_encountered): New variable. + (F77_XFCN): Set it. + * f77-fcn.h: Provide declaration. + + * QPSOL.h (QPSOL_options::set_options): Renamed from copy(). + + * NPSOL.h (NPSOL_options::set_options): Renamed from copy(). + + * NLEqn.h (NLEqn_options::set_options): New function. + * Quad.h (Quad_options::set_options): Likewise. + + * LP.h (class LP): Add accessors for LP data. + + * NLEqn.h (NLEqn::n): Delete. + + * NLEqn.h (class NLEqn::n): Likewise. + + * NLP.h (class NLP): Add accessors for NLP data. + + * NPSOL.h (class NPSOL_options): Move constructors, set, and + access functions here. + * NPSOL.cc.cc: From here. + + * QLD.h (class QLD): Add destructor definition. + * Objective.h (class Objective): Likewise. + * ODEFunc.h (class ODEFunc): Likewise. + * NLFunc.h (class NLFunc): Likewise. + * NLEqn.h (class NLEqn): Likewise. + * NLConst.h (class NLConst): Likewise. + * LinConst.h (class LinConst): Likewise. + * LSODE.h (class LSODE_options): Likewise. + * CollocWt.h (class CollocWt): Likewise. + * Bounds.h (class Bounds): Likewise. + + * QLD.cc (QLD::set_default_options): Delete. + + * QP.h (QP): Add accessors for QP data. + Add copy constructor, operator =, and destructor definitions. + + * Range.h, Quad.h, QP.h, QLD.h, Objective.h, NLP.h, NLFunc.h, + NLConst.h, LinConst.h, LSODE.h, LP.h, FEGrid.h, EIG.h, DASSL.h, + DAEFunc.h, CollocWt.h, Bounds.h: + Clean up constructors, assigment operator. + + * dRowVector.cc (RowVector::transpose): Use magic of reference + counting to avoid duplicating the data immediately. + * dColVector.cc (ColumnVector::transpose): Likewise. + * CRowVector.cc (ComplexrowVector::transpose): Likewise. + * CColVector.cc (ComplexColumnVector::transpose): Likewise. + +Sat Feb 3 01:02:36 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * prog-args.h (prog_args::option_argument): New enum. + + * f77-fcn.h: Rename from f77-uscore.h. + (F77_XFCN_ERROR, F77_XFCN): New macros. + * f77-fcn.c: New file. + * Makefile.in (SOURCES): Add it to the list. + + * ODEFunc.h: Clean up. + + * DASSL.cc, DASSL.h: New files. + * Makefile.in: Add them to the appropriate lists. + + * LSODE.cc, LSODE.h: New files. + * Makefile.in: Add them to the appropriate lists. + + * ODE.cc: Delete. + * Makefile.in (SOURCES): Remove from list. + + * base-de.h, DAE.cc: New files. + * Makefile.in: Add them to the appropriate lists. + * ODE.h: Only define interface for ODE classes. + * DAE.h: Only define interface for ODE classes. + + * LPsolve.cc (do_minimize): Print sorry not implemented message. + (LPsolve::set_default_options)): Delete + * LPsolve.h (class LPsolve): Add operator =, copy constructor, and + destructor. + + * LP.h (class LP): Add operator =, copy constructor, and destructor. + + * QPSOL.h (QPSOL::QPSOL (const QPSOL&)): New constructor. + (QPSOL::operator =): Call base class operator = instead of assuming + we know what to copy. + + * base-min.h (size): New function. + + * NLP.h (NLP::size): Delete. + (NLP::NLP (const NLP&)): New constructor. + (NLP::operator =): Call base class operator = instead of assuming + we know what to copy. + + * NPSOL.h, NPSOL.cc (NPSOL::option): Delete. + (class NPSOL): Add operator = and destructor. + + * NPSOL.h: Add NPSOL_options() to list of constructor initalizers. + +Fri Feb 2 22:52:55 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (liboctave.a): Depend on $(PICOBJ). + +Wed Jan 31 05:29:25 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Givens, Sylvester, Matrix::expm): New functions. + * CMatrix.cc (Givens, Sylvester, ComplexMatrix::expm): Ditto. + +Mon Jan 29 00:00:12 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * prog-args.h, prog-args.cc: New files. + * Makefile.in: Add them to lists. + + * getopt.h, getopt.c, getopt1.c: New files. + * Makefile.in: Add them to the lists. + + * oct-term.h, oct-term.cc: New files. + * Makefile.in: Add them to the lists. + + * str-vec.cc: New file. + * Makefile.in (SOURCES): Add it to the list. + + * file-ops.cc (oct_tmpnam): Move here from src/utils.cc. + + * tempname.c, tempnam.c: Move here from src directory. + * Makefile.in: Add to lists. + +Sun Jan 28 23:06:19 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * cmd-hist.h, cmd-hist.cc: New files. + * Makefile.in: Add them to lists. + +Thu Jan 25 20:36:05 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * oct-glob.h, oct-glob.cc: New files. + * Makefile.in: Add them to lists. + +Wed Jan 24 01:55:08 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pathsearch.h, pathsearch.cc: New files. + * Makefile.in: Add them to lists. + + * dir-ops.h, dir-ops.cc: New files. + * sysdir.h: Move here from src directory. + * Makefile.in: Add them to lists. + + * Array.h (Array::qsort): Return *this, not void. + * str-vec.h (string_vector::qsort): Likewise. + + * chMatrix.cc (row_as_string): Resize result to eliminate + unnecessary NULs. + +Tue Jan 23 00:40:58 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * safe-xstat.hin, safe-xstat.cin, statdefs.h, file-ops.h, + file-ops.cc, filemode.c, mkdir.c, rmdir.c, rename.c: + Files moved here from src directory. + * Makefile.in: Add them to lists. Include appropriate rules. + + * acosh.c, asinh.c, atanh.c, erf.c, erfc.c, gamma.c, lgamma.c: + Use pointers, not references (this is C code!). + + * oct-math.h: New file. + * acosh.c, asinh.c, atanh.c, erf.c, erfc.c, gamma.c, lgamma.c: + Files moved here from src directory. + * Makefile.in: Add them to lists. + +Sun Jan 21 22:53:37 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.cc (make_uniq): Fix major brain-o. + + * CmplxSCHUR.h, CmplxSCHUR.cc, dbleSCHUR.h, dbleSCHUR.cc: + Convert to use string class instead of char*. + + * str-vec.h, Array-str.cc: New files. + + * Array.h (Array::qsort): New function. + +Fri Jan 12 01:45:10 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.h: Nest ArrayRep class inside Array class. + Refer to ArrayRep, not ArrayRep<T>. + Move all ArrayRep functions inline. + Don't declare other Array classes as friends of ArrayRep. + * Array.cc: Delete ArrayRep functions. + * Array-idx.h: Refer to ArrayRep, not ArrayRep<T>. + + * Array-C.cc, Array-ch.cc, Array-d.cc, Array-i.cc, Array-s.cc: + Don't instantiate ArrayRep objects. + +Wed Jan 10 04:40:21 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * chMatrix.cc (charMatrix::charMatrix (const string&)): + New constructor. + +Tue Jan 9 04:44:56 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dbleGEPBAL.cc (GEPBALANCE::init): Use string instead of char* + for balance_job arg. + * dbleAEPBAL.cc (AEPBALANCE::init): Likewise. + * CmplxAEPBAL.cc (ComplexAEPBALANCE::init): Likewise. + + * chMatrix.cc (row_as_string): Return string, not const char*. + +Mon Jan 8 03:20:01 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (clean): If $(SHARED_LIBS), also remove shared libs. + + * chMatrix.cc (row_as_string): Undo previous change. + +Sun Jan 7 19:50:16 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * chMatrix.cc (row_as_string): Do memory management here. Caller + is expected to save string if necessary. + +Sat Jan 6 19:28:20 1996 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array.h (class DiagArray): Enable nested Proxy class for all + platforms. + + * Array.cc (Array<T>::operator = (const Array<T>&)): If rep == + a.rep, don't mess with count. + * Array.h (Array2<T>& operator = (const Array2<T>&)): Likewise, + don't do anything if reps are the same. + (Array3<T>& operator = (const Array3<T>&) + + * Array.h (ArrayRep<T>::operator = (const ArrayRep<T>&)): + Declare private with no definition to prevent misuse. + + * Array.cc (Array2<T>::insert (const Array2<T>&, int, int)): + Get range check right. + * dMatrix.cc (Matrix::insert (const RowVector&, int, int)): Ditto. + (Matrix::insert (const ColumnVector&, int, int)): Ditto. + (Matrix::insert (const DiagMatrix&, int, int)): Ditto. + * CMatrix.cc (ComplexMatrix::insert (const Matrix&, int, int)): Ditto. + (ComplexMatrix::insert (const RowVector&, int, int)): Ditto. + (ComplexMatrix::insert (const ColumnVector&, int, int)): Ditto. + (ComplexMatrix::insert (const DiagMatrix&, int, int)): Ditto. + (ComplexMatrix::insert (const ComplexRowVector&, int, int)): Ditto. + (ComplexMatrix::insert (const ComplexColumnVector&, int, int)): Ditto. + (ComplexMatrix::insert (const ComplexDiagMatrix&, int, int)): Ditto. + * dRowVector.cc (RowVector::insert (const RowVector&, int)): Ditto. + * dColVector.cc + (ColumnVector::insert (const ColumnVector&, int)): Ditto. + * CRowVector.cc + (ComplexRowVector::insert (const RowVector&, int)): Ditto. + (ComplexRowVector::insert (const ComplexRowVector&, int)): Ditto. + * CColVector.cc + (ComplexColumnVector::insert (const ColumnVector&, int)): Ditto. + (ComplexColumnVector::insert (const ComplexColumnVector&, int)): Ditto. + + * dMatrix.cc (Matrix::insert (const DiagMatrix&, int, int)): + Also fill in zeros, not just the diagonal. + + * CDiagMatrix.cc (ComplexDiagMatrix::fill (double, int, int)): + Use END parameter properly. + (ComplexDiagMatrix::fill (const Complex&, int, int)): Ditto. + * dDiagMatrix.cc (DiagMatrix::fill (double, int, int)): Ditto. + + * Array.h (ArrayRep<T>::ArrayRep (void)): Set count to 1 here. + (ArrayRep<T>::ArrayRep (T *, int)): Likewise. + * Array.cc (ArrayRep<T>::ArrayRep (const ArrayRep<T>&)): + Don't copy count. Set it to 1. + (ArrayRep<T>::ArrayRep (int)): Set count to 1 here. + + * Array.h (Array<T>::Array (T *, int)): After constructing rep, + don't set rep->count to 1 here (now handled by ArrayRep + constructors). + (Array<T>::Array (void)): Ditto. + (Array<T>::Array (int)): Ditto. + (Array<T>::T& elem (int)): Ditto. + * Array-idx.h (Array<T>::maybe_delete_elements (idx_vector&)): Ditto. + (Array2<T>::maybe_delete_elements (idx_vector&, idx_vector&)): Ditto. + * Array.cc: (Array<T>::Array (int, const T&)): Ditto. + (Array<T>::resize (int)): Ditto. + (Array<T>::resize (int, const T&)) :Ditto. + (Array<T>::fortran_vec (void)): Ditto. + (Array2<T>::resize (int, int)): Ditto. + (Array2<T>::resize (int, int, const T&)): Ditto. + (DiagArray<T>::resize (int, int)): Ditto. + (DiagArray<T>::resize (int, int, const T&)): Ditto. + +Sun Dec 31 21:23:26 1995 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Array-ch.cc: Rename from Array-c.cc. + * MArray-ch.cc: Rename from MArray-c.cc. + * chMatrix.cc: Rename from cMatrix.cc. + * chMatrix.h: Rename from cMatrix.h. + * Makefile.in (TI_SRC): Use new names here. + * mx-base.h: Likewise. + +Fri Dec 29 21:45:00 1995 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in: Handle shared libraries. + +Thu Dec 28 14:18:34 1995 John W. Eaton <jwe@bevo.che.wisc.edu> + + * CRowVector.cc (operator * (ComplexRowVector, ComplexMatrix)): + Correctly compute length of return value. Correct rows and + columns in zgemv call. + * dRowVector.cc (operator * (RowVector, Matrix)): Likewise. + +Tue Dec 26 00:37:57 1995 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (stamp-picdir): New target. + (all): Depend on it. + +Sun Dec 24 03:10:41 1995 John W. Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in (INCLUDES): Remove QLD.h. + (SOURCES): Remove QLD.cc. + +Wed Dec 20 00:43:46 1995 John W. Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc (Matrix::inverse): New arg, force. + If force is nonzero, invert even if matrix is singular. + (ComplexMatrix::inverse): Likewise. + + * dRowVector.cc, mx-inlines.cc, dMatrix.cc, dDiagMatrix.cc, + dColVector.cc,MArray-C.cc, CmplxDET.cc, CRowVector.cc, CMatrix.cc, + CDiagMatrix.cc, CColVector.cc, Array-C.cc, CmplxDET.h, CMatrix.h: + Include "oct-cmplx.h" instead of <Complex.h>. + + * mx-defs.h: Include oct-cmplx.h in place of forward declaration + for class Complex. + + * oct-cmplx.h: New file. + * Makefile.in (INCLUDES): Add it to the list. + + * idx-vector.cc (IDX_VEC_REP::idx_vector_rep): Don't redeclare len. + (IDX_VEC_REP::maybe_convert_one_zero_to_idx): Don't redeclare count. + (IDX_VEC_REP::freeze): Don't redeclare max_val and min_val. + (intcmp, sort_data, make_uniq, copy_data, IDX_VEC_REP::print): + Avoid g++ bugs. + +Tue Nov 14 14:24:16 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * Array-idx.h (maybe_delete_elements): Give useful error message. + + * dbleSCHUR.cc, dbleSVD.cc: Include iostream.h. + +Mon Nov 13 08:35:07 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * CDiagMatrix.cc (inverse): Return retval, not *this. + * dDiagMatrix.cc (inverse): Use same method as for Complex case. + +Sat Nov 4 05:06:12 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * Array.h, Array.cc, Array-idx.h [HEAVYWEIGHT_INDEXING]: Keep + index vector object with Array, not ArrayRep. + +Fri Nov 3 06:52:38 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * Array-idx.h (assign (Array2<T>&, const Array2<T>&): Don't fail + if index is a colon and resizing is maybe needed. + +Tue Oct 31 17:40:01 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.cc (IDX_VEC_REP::is_colon_equiv): Don't return true + if we have a vector of 1's. + + * Array-idx.h (assign (Array2<LT>&, Array2<RT>&): If lhs has no + current orientation, require index and rhs to conform unless + do_fortran_indexing flag is set. + +Sun Oct 15 23:32:08 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * Array-d.cc, Array-C.cc, mx-base.h, mx-inlines.cc, dDiagMatrix.h, + CDiagMatrix.h, CMatrix.cc, CMatrix.h, dMatrix.h, mx-defs.h, + cMatrix.h, MArray.cc, MArray.h, MArray-i.cc, MArray-c.cc, + MArray-s.cc, Array.h, Array.cc, Array-c.cc, Array-i.cc, + Array-s.cc, cMatrix.cc, Array-idx.h, dMatrix.cc: + Massive changes to support additional data types. Only charMatrix + is currently used in Octave. + +Thu Oct 12 02:22:36 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * Array.cc (Array2<T>::insert (Array2<T>&, int, int): New function. + * CMatrix.cc (ComplexMatrix::insert (ComplexMatrix&, int, int): + Simply call Array2<Complex> version. + * dMatrix.cc (Matrix::insert (Matrix&, int, int): Similarly, just + call Array2<double> version. + + * Array-C.cc, Array-d.cc: Instantiate new assign functions too. + + * Array.h, Array.cc: Massive overhaul to support new way of + handling indexing. + * idx-vector.h, idx-vector.cc: Likewise. + * Array-ext.cc, Array-idx.h: New files. + * Makefile.in: Add them to the appropriate lists. + +Wed Oct 11 00:49:58 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * Range.cc (nelem_internal): Use tfloor here, not round. + +Sun Oct 8 18:21:02 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * idx-vector.h, idx-vector.cc: New files, moved from ../src. + * Makefile.in (SOURCES, INCLUDES): Include them in the lists. + +Sat Oct 7 19:07:02 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * CMatrix.cc (pseudo_inverse): Avoid bogus g++ warning. + + * Array.h: Move simple member functions here. + * Array.cc: From here. + +Fri Oct 6 00:36:04 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * Range.cc (tfloor, tceil, round): New static functions. + (Range::nelem_internal): Rewrite to use better method. + + * dbleSVD.h (SVD::type): New item, sigma_only. + (type_computed): New var. + * dbleSVD.cc (left_singular_matrix, right_singular_matrix): + Handle possible error condition. + (init): Allow for SVD::sigma_only, save type computed. + * CmplxSVD.cc (left_singular_matrix, right_singular_matrix): + Handle possible error condition. + (init): Allow for SVD::sigma_only, save type computed. + +Wed Oct 4 15:33:35 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * Nearly all non-matrix .h and .cc files: + Move short function bodies into class declarations for inlining. + Generally clean up. + + * base-min.h: New file. + * LP.h (class LP): Derive from base_minimizer. + * QLP.h (class QLP): Derive from base_minimizer. + * NLP.h (class NLP): Derive from base_minimizer. + * Makefile.in (INCLUDES): Add base-min.h to the list. + + * Makefile.in (SOURCES): Delete DAEFunc.cc, LP.cc, NLConst.cc, + NLFunc.cc, Objective.cc and QP.cc from list. + +Tue Sep 26 04:14:23 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * dbleSCHUR.cc (select_ana): Remove name of unused parameter. + (SCHUR::SCHUR): Delete unused parameter ord. + * CmplxSCHUR.h (ComplexSCHUR::CmplxSCHUR): Likewise. + + * CRowVector.cc + (ComplexRowVector::operator+ (const Complex&, const RowVector&), + (ComplexRowVector::operator- (const Complex&, const RowVector&), + (ComplexRowVector::operator* (const Complex&, const RowVector&), + (ComplexRowVector::operator/ (const Complex&, const RowVector&)): + Actually do something. + + * dMatrix.cc (Matrix::lssolve (ComplexMatrix&)): Use dummy vars. + (Matrix::lssolve (ComplexMatrix&, int&)): Likewise. + (Matrix::lssolve (ComplexMatrix&, int&, int&)): Likewise. + + * Quad.cc (Quad_options::Quad_options (double, double)): New function. + * (Quad::Quad (integrand_fcn, double, double): Properly initialize + tolerances. + + * DAE.cc (ddassl_f, ddassl_j): Remove names of unused parameters. + * LPsolve.cc (LPsolve::minimize): Likewise. + * NPSOL.cc (NPSOL::option, npsol_confun, npsol_objfun): Likewise. + * ODE.cc (lsode_f, lsode_j): Likewise. + * QPSOL.cc (qphess): Likewise. + +Fri Sep 22 04:14:51 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * dMatrix.cc: Include <cstring>. + + * Array.cc: Try harder to avoid warnings from gcc in functions + that return bogus values after calling the error handler. + +Thu Sep 14 00:56:00 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in: Use `ifndef omit_deps', not `ifndef $(omit_deps)'. + + * Makefile.in (TEMPLATE_SRC): Add Array-i.cc to the list. + +Tue Aug 22 00:41:06 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * DAE.cc (dassl_f): Add UNUSED attribute for unused parameters. + (dassl_j): Likewise. + + * DAE.cc, NLEqn.cc, NPSOL.cc, ODE.cc, CColVector.cc, CMatrix.cc, + dColVector.cc, dMatrix.cc, CmplxLU.cc, dbleLU.cc, QPSOL.cc, + Array.cc, CollocWt.cc, FEGrid.h, LinConst.h: + Update for change in for loop variable scope for gcc 2.7.0. + +Mon Aug 21 19:34:53 1995 John Eaton <jwe@bevo.che.wisc.edu> + + * Makefile.in: Only include dependency files if $(omit_deps) is + not set. + +Mon May 1 13:26:00 1995 John Eaton (jwe@bullwinkle.che.utexas.edu) + + * dbleSCHUR.h dbleSVD.h dbleQRP.h dbleQR.h dbleHESS.h dbleLU.h + dbleCHOL.h dbleGEPBAL.h dbleAEPBAL.h dbleDET.h dDiagMatrix.h + dColVector.h dMatrix.h dRowVector.h Quad.h Range.h QPSOL.h QLD.h + ODEFunc.h QP.h Objective.h NPSOL.h ODE.h NLEqn.h NLFunc.h + NLConst.h LinConst.h LPsolve.h LP.h FSQP.h FEGrid.h EIG.h + DAEFunc.h CollocWt.h DAE.h CmplxSVD.h CmplxQRP.h CmplxSCHUR.h + CmplxHESS.h CmplxDET.h CmplxLU.h CmplxQR.h CmplxCHOL.h + CmplxAEPBAL.h CRowVector.h CDiagMatrix.h Bounds.h CColVector.h + CMatrix.h dbleSCHUR.cc dbleSVD.cc dbleQRP.cc dbleQR.cc + dbleGEPBAL.cc dbleLU.cc dbleHESS.cc dbleDET.cc dbleCHOL.cc + dbleAEPBAL.cc dColVector.cc dRowVector.cc dMatrix.cc + dDiagMatrix.cc QPSOL.cc Range.cc Quad.cc QP.cc ODEFunc.cc QLD.cc + Objective.cc NLEqn.cc ODE.cc NPSOL.cc NLFunc.cc LPsolve.cc + NLConst.cc LinConst.cc FSQP.cc FEGrid.cc LP.cc DAE.cc EIG.cc + CollocWt.cc DAEFunc.cc CmplxSVD.cc CmplxSCHUR.cc CmplxQRP.cc + CmplxLU.cc CmplxQR.cc CmplxHESS.cc CmplxDET.cc CmplxCHOL.cc + CmplxAEPBAL.cc CRowVector.cc CColVector.cc CMatrix.cc + CDiagMatrix.cc Bounds.cc MArray.h MArray.cc Array.cc Array.h + NLP.h: Use pragma interface/implementation. Don't surround + contents in extern "C++". + * lo-error.h sun-utils.h: Don't surround contents in extern "C++". + +Tue Apr 11 10:59:24 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * f77-uscore.h (F77_FCN): Allow for possibility of uppercase + identifiers. + * utils.cc dbleSVD.cc dbleSCHUR.cc dbleQRP.cc dbleQR.cc dbleLU.cc + dbleHESS.cc dbleGEPBAL.cc dbleAEPBAL.cc dRowVector.cc + dColVector.cc QLD.cc CmplxSVD.cc CmplxCHOL.cc CmplxHESS.cc + CmplxQR.cc CmplxQRP.cc QPSOL.cc CmplxAEPBAL.cc CmplxLU.cc + CmplxSCHUR.cc dMatrix.cc CColVector.cc CRowVector.cc dbleCHOL.cc + CollocWt.cc NLEqn.cc EIG.cc DAE.cc ODE.cc CMatrix.cc NPSOL.cc + Quad.cc: Change usage of F77_FCN to match new definition + + * utils.cc dbleSVD.cc dbleSCHUR.cc dbleQRP.cc dbleQR.cc dbleLU.cc + dbleHESS.cc dbleGEPBAL.cc dbleAEPBAL.cc dRowVector.cc + dColVector.cc QLD.cc CmplxSVD.cc CmplxCHOL.cc CmplxHESS.cc + CmplxQR.cc CmplxQRP.cc QPSOL.cc CmplxAEPBAL.cc CmplxLU.cc + CmplxSCHUR.cc dMatrix.cc CColVector.cc CRowVector.cc dbleCHOL.cc + CollocWt.cc NLEqn.cc EIG.cc DAE.cc ODE.cc CMatrix.cc NPSOL.cc + Quad.cc: Where appropriate, declare Fortran subroutines to take + args by reference instead of pointer. Change all callers. + +Sun Apr 9 20:11:56 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * MArray.h (MArray2::~MArray2, MDiagArray::~MDiagArray): New + functions. Make += and -= operators friend functions. + + * Array.h (Array2::~Array2, Array3::~Array3, + DiagArray::~DiagArray): New functions. + +Wed Apr 5 21:21:13 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * Makefile.in (EXTRAS): Don't distribute mx-kludge.cc. + (MATRIX_INC): Don't distribute mx-kludge.h. + + * CColVector.h CColVector.cc CDiagMatrix.h CDiagMatrix.cc + CMatrix.h CMatrix.cc CRowVector.h CRowVector.cc dColVector.h + dColVector.cc dDiagMatrix.h dDiagMatrix.cc dMatrix.h dMatrix.cc + dRowVector.h dRowVector.cc: + Derive classes from MArray, MArray2, and MDiagArray, not Array, + Array2, and DiagArray2. + Don't use functions defined in mx-kludge.cc for arithmetic + like-type operations on arrays. + + * MArray.cc: Use the classes defined here like-type mathematical + operations on Array objects. Abuse CPP more. + * Makefile.in (TEMPLATE_SRC): Add it to the list. + (EXTRAS): Delete it from this list. + + * MArray-C.cc, MArray-d.cc: New files. + * Makefile.in (TI_SRC): Add them to the list. + +Tue Apr 4 14:13:46 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * mx-kludge.cc: Abuse CPP even more. + +Mon Apr 3 21:05:30 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * Objective.h (objective_function): Add missing const. + (gradient_function): Likewise. + + * CColVector.h CColVector.cc CDiagMatrix.h CDiagMatrix.cc + CMatrix.h CMatrix.cc CRowVector.h CRowVector.cc dColVector.h + dColVector.cc dDiagMatrix.h dDiagMatrix.cc dMatrix.h dMatrix.cc + dRowVector.h dRowVector.cc: + Reorganize to declare and define friends where they should be, + based on the use of private constructors. + +Fri Mar 31 10:09:40 1995 John Eaton <jwe@schoch.che.utexas.edu> + + * CRowVector.h (linspace): Add declaration. + * dRowVector.h (linspace): Likewise. + + * dMatrix.cc (Matrix::inverse, Matrix::determinant, Matrix::solve): + Force result of rcond + 1.0 to be stored. + * CMatrix.cc (ComplexMatrix::inverse, ComplexMatrix::determinant, + ComplexMatrix::solve): Likewise. + +See ChangeLog.1 in the top level directory for earlier changes.
--- a/liboctave/PermMatrix.cc +++ b/liboctave/PermMatrix.cc @@ -118,6 +118,53 @@ } PermMatrix +PermMatrix::power (octave_idx_type m) const +{ + octave_idx_type n = rows (); + bool res_colp = _colp; + if (m < 0) + { + res_colp = ! res_colp; + m = -m; + } + else if (m == 0) + return PermMatrix (n); + + const octave_idx_type *p = data (); + Array<octave_idx_type> res_pvec (n, -1); + octave_idx_type *q = res_pvec.fortran_vec (); + + for (octave_idx_type ics = 0; ics < n; ics++) + { + if (q[ics] > 0) + continue; + + // go forward m steps or until a cycle is found. + octave_idx_type ic, j; + for (j = 1, ic = p[ics]; j != m && ic != ics; j++, ic = p[ic]) ; + if (ic == ics) + { + // reduce power. + octave_idx_type mm = m % j; + // go forward mm steps. + for (j = 0, ic = ics; j != mm; j++, ic = p[ic]) ; + } + + // now ic = p^m[ics]. Loop through the whole cycle. + octave_idx_type jcs = ics; + do + { + q[jcs] = ic; + jcs = p[jcs]; ic = p[ic]; + } + while (jcs != ics); + + } + + return PermMatrix (res_pvec, res_colp, false); +} + +PermMatrix operator *(const PermMatrix& a, const PermMatrix& b) { const Array<octave_idx_type> ia = a.pvec (), ib = b.pvec ();
--- a/liboctave/PermMatrix.h +++ b/liboctave/PermMatrix.h @@ -97,6 +97,9 @@ // Determinant, i.e. the sign of permutation. octave_idx_type determinant (void) const; + // Efficient integer power of a permutation. + PermMatrix power (octave_idx_type n) const; + bool is_col_perm (void) const { return _colp; } bool is_row_perm (void) const { return !_colp; }
--- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2009-03-11 Jaroslav Hajek <highegg@gmail.com> + + * xpow.cc (xpow (const PermMatrix&, double), xpow (const PermMatrix&, + float)): New functions. + * xpow.h: Declare them. + * DLD-FUNCTIONS/op-pm-pm.cc: Support permutation matrix ^ scalar. + * DLD-FUNCTIONS/op-fpm-fpm.cc: Ditto. + 2009-03-11 Jaroslav Hajek <highegg@gmail.com> * ov-ch-mat.cc (octave_char_matrix::double_value,
--- a/src/OPERATORS/op-fpm-fpm.cc +++ b/src/OPERATORS/op-fpm-fpm.cc @@ -30,8 +30,10 @@ #include "ov-perm.h" #include "ov-flt-perm.h" #include "ov-flt-re-mat.h" +#include "ov-float.h" #include "ov-typeinfo.h" #include "ops.h" +#include "xpow.h" DEFUNOP (transpose, float_perm_matrix) { @@ -60,6 +62,13 @@ return octave_value (v1.perm_matrix_value ().inverse () * v2.perm_matrix_value (), false); } +DEFBINOP (pow, float_perm_matrix, float_scalar) +{ + CAST_BINOP_ARGS (const octave_float_perm_matrix&, const octave_float_scalar&); + + return xpow (v1.perm_matrix_value (), v2.float_scalar_value ()); +} + CONVDECL (float_perm_matrix_to_float_matrix) { CAST_CONV_ARG (const octave_float_perm_matrix&); @@ -83,6 +92,7 @@ INSTALL_BINOP (op_mul, octave_float_perm_matrix, octave_float_perm_matrix, mul); INSTALL_BINOP (op_div, octave_float_perm_matrix, octave_float_perm_matrix, div); INSTALL_BINOP (op_ldiv, octave_float_perm_matrix, octave_float_perm_matrix, ldiv); + INSTALL_BINOP (op_pow, octave_float_perm_matrix, octave_float_scalar, pow); INSTALL_CONVOP (octave_float_perm_matrix, octave_float_matrix, float_perm_matrix_to_float_matrix); INSTALL_CONVOP (octave_float_perm_matrix, octave_perm_matrix, float_perm_matrix_to_perm_matrix);
--- a/src/OPERATORS/op-pm-pm.cc +++ b/src/OPERATORS/op-pm-pm.cc @@ -30,8 +30,10 @@ #include "ov-perm.h" #include "ov-flt-perm.h" #include "ov-re-mat.h" +#include "ov-scalar.h" #include "ov-typeinfo.h" #include "ops.h" +#include "xpow.h" DEFUNOP (transpose, perm_matrix) { @@ -55,6 +57,13 @@ return (v1.perm_matrix_value ().inverse () * v2.perm_matrix_value ()); } +DEFBINOP (pow, perm_matrix, scalar) +{ + CAST_BINOP_ARGS (const octave_perm_matrix&, const octave_scalar&); + + return xpow (v1.perm_matrix_value (), v2.scalar_value ()); +} + CONVDECL (perm_matrix_to_matrix) { CAST_CONV_ARG (const octave_perm_matrix&); @@ -78,6 +87,7 @@ INSTALL_BINOP (op_mul, octave_perm_matrix, octave_perm_matrix, mul); INSTALL_BINOP (op_div, octave_perm_matrix, octave_perm_matrix, div); INSTALL_BINOP (op_ldiv, octave_perm_matrix, octave_perm_matrix, ldiv); + INSTALL_BINOP (op_pow, octave_perm_matrix, octave_scalar, pow); INSTALL_CONVOP (octave_perm_matrix, octave_matrix, perm_matrix_to_matrix); INSTALL_CONVOP (octave_perm_matrix, octave_float_perm_matrix, perm_matrix_to_float_perm_matrix);
--- a/src/xpow.cc +++ b/src/xpow.cc @@ -38,6 +38,7 @@ #include "dDiagMatrix.h" #include "fDiagMatrix.h" #include "dMatrix.h" +#include "PermMatrix.h" #include "mx-cm-cdm.h" #include "oct-cmplx.h" #include "quit.h" @@ -296,6 +297,18 @@ return retval; } +// -*- 5p -*- +octave_value +xpow (const PermMatrix& a, double b) +{ + octave_value retval; + int btmp = static_cast<int> (b); + if (btmp == b) + return a.power (btmp); + else + return xpow (Matrix (a), b); +} + // -*- 6 -*- octave_value xpow (const Matrix& a, const Complex& b) @@ -1576,6 +1589,18 @@ return retval; } +// -*- 5p -*- +octave_value +xpow (const PermMatrix& a, float b) +{ + octave_value retval; + int btmp = static_cast<int> (b); + if (btmp == b) + return octave_value (a.power (btmp), true); + else + return xpow (FloatMatrix (a), b); +} + // -*- 6 -*- octave_value xpow (const FloatMatrix& a, const FloatComplex& b)
--- a/src/xpow.h +++ b/src/xpow.h @@ -34,6 +34,7 @@ class ComplexDiagMatrix; class FloatDiagMatrix; class FloatComplexDiagMatrix; +class PermMatrix; class NDArray; class FloatNDArray; class ComplexNDArray; @@ -51,6 +52,8 @@ extern octave_value xpow (const DiagMatrix& a, double b); extern octave_value xpow (const DiagMatrix& a, const Complex& b); +extern octave_value xpow (const PermMatrix& a, double b); + extern octave_value xpow (const Complex& a, double b); extern octave_value xpow (const Complex& a, const Matrix& b); extern octave_value xpow (const Complex& a, const Complex& b); @@ -106,6 +109,8 @@ extern octave_value xpow (const FloatDiagMatrix& a, float b); extern octave_value xpow (const FloatDiagMatrix& a, const FloatComplex& b); +extern octave_value xpow (const PermMatrix& a, float b); + extern octave_value xpow (const FloatComplex& a, float b); extern octave_value xpow (const FloatComplex& a, const FloatMatrix& b); extern octave_value xpow (const FloatComplex& a, const FloatComplex& b);