2009-08-16 Jaroslav Hajek * dMatrix.cc, fMatrix.cc, CMatrix.cc, fCMatrix.cc: Add more tests. * CMatrix.cc (xgemm): Fix vector * matrix case. * fCMatrix.cc (xgemm): Ditto. 2009-08-16 Jaroslav Hajek * fMatrix.cc, fCMatrix.cc: Make tests use single precision. 2009-08-16 Jaroslav Hajek * CMatrix.cc (xgemm): Fix typo. Add test. * fCMatrix.cc (xgemm): Ditto. 2009-07-20 John W. Eaton * lo-ieee.cc (octave_ieee_init) [__NetBSD__]: Call nan to initialize Octave_NaN and nanf, to initialize Octave_Float_NaN. 2009-07-08 John W. Eaton * dim-vector.h (dim_vector::dim_vector_rep::dim_vector_rep (octave_idx_type, const dim_vector_rep *, int)): Enforce 2-d objects here. (dim_vector::dim_vector_rep::dim_vector_rep): Simply copy object. (dim_vector::resize): Allow N < 2. 2009-07-21 Jaroslav Hajek Version 3.2.2 released. 2009-07-03 Jaroslav Hajek * Sparse-op-defs.h (SPARSE_ALL_OP): Fix typo. * dSparse.cc (SparseMatrix::prod): Ditto. * CSparse.cc (ComplexSparseMatrix::prod): Ditto. 2009-07-02 Jaroslav Hajek * Sparse-diag-op-defs.h (inner_do_add_sm_dm): Rewrite to ensure ordering of row indices. 2009-06-26 Michael Goffioul * pathsearch.h (class dir_path::static_members): Decorate with OCTAVE_API. 2009-06-24 Alexander Barth * eigs-base.cc (EigsRealSymmetricMatrix, EigsRealSymmetricMatrixShift, EigsRealSymmetricFunc, EigsRealNonSymmetricMatrix, EigsRealNonSymmetricMatrixShift, EigsRealNonSymmetricFunc, EigsComplexNonSymmetricMatrix, EigsComplexNonSymmetricMatrixShift, EigsComplexNonSymmetricFunc): Use octave_idx_type for parameters of type LOGICAL in ARPACK. 2009-06-22 Jaroslav Hajek * chMatrix.cc (charMatrix::charMatrix (const string_vector&)): Optimize w.r.t. COW of std::string. 2009-06-18 Jaroslav Hajek * dMatrix.cc (xgemm): Replace resize() with uninitialized allocations where appropriate. * fMatrix.cc (xgemm): Ditto. * CMatrix.cc (xgemm): Ditto. * fCMatrix.cc (xgemm): Ditto. 2009-06-09 Jaroslav Hajek * cmd-edit.cc (command_editor::force_default_editor): New static method. * cmd-edit.h: Declare it. 2009-06-09 Jaroslav Hajek * lo-mappers.cc (xlog2 (const Complex&, int&), xlog2 (const FloatComplex&, int&)): Use more robust expression. 2009-06-07 Jaroslav Hajek * Array.cc (Array::find): Avoid allocating excessive memory. Fix order for backward searches. 2009-05-25 Jaroslav Hajek Version 3.2.0 released. 2009-06-02 Jaroslav Hajek * Array-C.cc (class DiagArray2::Proxy): Only explicitly instantiate DiagArray2::Proxy on MSVC. * Array-d.cc (class DiagArray2::Proxy): Ditto. * Array-f.cc (class DiagArray2::Proxy): Ditto. * Array-fC.cc (class DiagArray2::Proxy): Ditto. 2009-05-26 John W. Eaton * pathsearch.h (dir_path::path_sep_char (char), dir_path::static_members::path_sep_char (char)): New functions. 2009-05-21 Michael Goffioul * Array-C.cc (class DiagArray2::Proxy): Tag with OCTAVE_API. * Array-d.cc (class DiagArray2::Proxy): Ditto. * Array-f.cc (class DiagArray2::Proxy): Ditto. * Array-fC.cc (class DiagArray2::Proxy): Ditto. * Array.cc (class octave_sort): Ditto. * CColVector.h (conj, operator*, operator>>, operator<<): Ditto. * CDiagMatrix.h (class ComplexDiagMatrix, conj, operator*): Ditto. * CMatrix.h (conj): Ditto. * CNDArray.h (conj): Ditto. * PermMatrix.h (class PermMatrix, operator*): Ditto. * dDiagMatrix.h (class DiagMatrix): Ditto. * fCColVector.h (conj, operator*, operator>>, operator<<): Ditto. * fCDiagMatrix.h (class FloatComplexDiagMatrix, conj, operator*): Ditto. * fCMatrix.h (conj): Ditto. * fCNDArray.h (conj): Ditto. * fDiagMatrix.h (operator*): Ditto. * oct-locbuf.h (octave_chunk_buffer::octave_chunk_buffer, octave_chunk_buffer::~octave_chunk_buffer): Ditto. * oct-inttypes.cc (octave_int_cmp_op::emulate_op): Ditto. * DET.h (class base_det): Remove OCTAVE_API (cannot be applied on templates). * oct-inttypes.cc (octave_int_cmp_op::emulate_op): Ditto. * CmplxQR.cc (ComplexQR::insert_col, ComplexQR::delete_col): Copy volatile variable to avoid MSVC compilation error (cannot pass volatile variable as const& argument). * dbleQR.cc (QR::insert_col, QR::delete_col): Ditto. * fCmplxQR.cc (FloatComplexQR::insert_col, FloatComplexQR::delete_col): Ditto. * floatQR.cc (FloatQR::insert_col, FloatQR::delete_col): Ditto. * oct-mutex.cc: Exclude pthread.h inclusion under Win32. * base-aepbal.h (base_aepbal::operator=): Add missing return statement. 2009-05-20 Jaroslav Hajek * eigs-base.cc ( EigsRealSymmetricMatrix, EigsRealSymmetricMatrixShift, EigsRealSymmetricFunc, EigsRealNonSymmetricMatrix, EigsRealNonSymmetricMatrixShift, EigsRealNonSymmetricFunc, EigsComplexNonSymmetricMatrix, EigsComplexNonSymmetricMatrixShift, EigsComplexNonSymmetricFunc): Update tests. 2009-05-21 Jaroslav Hajek * CMatrix.cc (ComplexMatrix::all, ComplexMatrix::any, ComplexMatrix::cumprod, ComplexMatrix::cumsum, ComplexMatrix::prod, ComplexMatrix::sum, ComplexMatrix::sumsq): Use explicit template qualifications to workaround bugs in Intel C++ and MSVC++ compilers. * CNDArray.cc (ComplexNDArray::all, ComplexNDArray::any, ComplexNDArray::cumprod, ComplexNDArray::cumsum, ComplexNDArray::prod, ComplexNDArray::sum, ComplexNDArray::sumsq): Ditto. * boolMatrix.cc (boolMatrix::all, boolMatrix::any): Ditto. * boolNDArray.cc (boolNDArray::all, boolNDArray::any): Ditto. * chMatrix.cc (charMatrix::all, charMatrix::any): Ditto. * chNDArray.cc (charNDArray::all, charNDArray::any): Ditto. * dMatrix.cc (Matrix::all, Matrix::any, Matrix::cumprod, Matrix::cumsum, Matrix::prod, Matrix::sum, Matrix::sumsq): Ditto. * dNDArray.cc (NDArray::all, NDArray::any, NDArray::cumprod, NDArray::cumsum, NDArray::prod, NDArray::sum, NDArray::sumsq): Ditto. * fCMatrix.cc (FloatComplexMatrix::all, FloatComplexMatrix::any, FloatComplexMatrix::cumprod, FloatComplexMatrix::cumsum, FloatComplexMatrix::prod, FloatComplexMatrix::sum, FloatComplexMatrix::sumsq): Ditto. * fCNDArray.cc (FloatComplexNDArray::all, FloatComplexNDArray::any, FloatComplexNDArray::cumprod, FloatComplexNDArray::cumsum, FloatComplexNDArray::prod, FloatComplexNDArray::sum, FloatComplexNDArray::sumsq): Ditto. * fMatrix.cc (FloatMatrix::all, FloatMatrix::any, FloatMatrix::cumprod, FloatMatrix::cumsum, FloatMatrix::prod, FloatMatrix::sum, FloatMatrix::sumsq): Ditto. * fNDArray.cc (FloatNDArray::all, FloatNDArray::any, FloatNDArray::cumprod, FloatNDArray::cumsum, FloatNDArray::prod, FloatNDArray::sum, FloatNDArray::sumsq): Ditto. * intNDArray.cc (intNDArray::all, intNDArray::any, intNDArray::cumsum, intNDArray::sum): Ditto. 2009-05-20 Jaroslav Hajek * Makefile.in: Remove reference to ArrayN-idx.h. 2009-05-20 Jaroslav Hajek * Array-voidp.cc: New source. * Array.cc (NO_INSTANTIATE_ARRAY_SORT): const T& -> T const & * Makefile.in: Include it. 2009-05-15 Jaroslav Hajek * Array.cc (Array::instantiation_guard): New function (INSTANTIATE_ARRAY): Always override it here. * Array.h: Declare it. 2009-05-15 Jaroslav Hajek * ArrayN-idx.h: Remove file. * ArrayN.cc: Don't include it. * MArrayN.cc: Dtto. 2009-05-09 Jaroslav Hajek * Array-util.cc (zero_dims_inquire): Move j++ out of branch. 2009-05-07 Marco Atzeri * Makefile.in: (SHLPRE): Rename from SHLLIBPRE. 2009-05-05 Robert T. Short * file-ops.h (file_ops::tail) New function. 2009-05-05 Carsten Clark * Quad.cc (user_function): Use access_double and assign_double on SPARC only, not on all Sun systems. * sun-utils.h: Likewise, define these functions on SPARC only. 2009-05-05 Jaroslav Hajek * Sparse.cc (assign1): Fix an old indexing bug. 2009-05-04 Carsten Clark * Quad.cc (float_user_function): Remove Sun/GCC special case. 2009-04-16 Jaroslav Hajek * idx-vector.cc (idx_vector::idx_range_rep::idx_range_rep (const Range&)): Check for positive integer indices. Unify gripes. 2009-04-15 Jaroslav Hajek * Array.cc (rec_permute_helper::blk_trans): Declare as static. (Array::transpose): Reuse it. 2009-04-04 Jaroslav Hajek * Array.cc (Array::make_unique): Don't economize when unique. (Array::resize_fill (octave_idx_type, const T&)): Optimize push & pop operations. (Array::delete_elements (const idx_vector&)): Do pop operation using resize. 2009-03-29 Jaroslav Hajek * Array.cc (Array::assign): Remove redundant checks after invalid resize. 2009-03-26 Jaroslav Hajek * Array.cc (Array::find): Reshape result for Matlab compatibility. * Array.h (Array): Add friend template declaration. 2009-03-27 Jaroslav Hajek * idx-vector.cc (idx_vector::idx_vector_rep::idx_vector_rep (const Array&): Use more M*b-compatible behaviour. 2009-03-26 Jaroslav Hajek * dim-vector.h (dim_vector::numel): Add optional argument, simplify. 2009-03-26 Jaroslav Hajek * Array.h (Array::dims): Return a const reference. (Array::is_vector): New method. 2009-03-26 Jaroslav Hajek * Array.cc (Array::find): New method. * Array.h: Declare it. 2009-03-25 John W. Eaton * EIG.cc (EIG::init (const Matrix&, bool), EIG::init (const Matrix&, const Matrix&, bool)): Avoid volatile declaration for tmp variable. * Makefile.in (MATRIX_INC): Add Sparse-diag-op-defs.h and Sparse-perm-op-defs.h to the list. 2009-03-25 Jaroslav Hajek * oct-inttypes.cc (INT_DOUBLE_BINOP_DECL (*, uint64), INT_DOUBLE_BINOP_DECL (*, int64)): x -> y where appropriate. 2009-03-25 Jaroslav Hajek * Array.cc (rec_permute_helper::use_blk): New field. (rec_permute_helper::blk_trans): New method. (rec_permute_helper::rec_permute_helper): Use smart reductions, detect possibility of using blocked transpose. (rec_permute_helper::do_permute): Use blocked transpose if possible. 2009-03-23 Jaroslav Hajek * idx-vector.cc (convert_index(double,...)): Simplify. 2009-03-21 Jaroslav Hajek * Array-d.cc: lo_ieee_isnan -> xisnan. * Array-f.cc: Ditto. * oct-inttypes.cc: Ditto. * oct-inttypes.h: Ditto. * CDiagMatrix.cc: Add missing include. * fCDiagMatrix.cc: Ditto. 2009-03-20 Jaroslav Hajek * CColVector.cc, CMatrix.cc, CNDArray.cc, CRowVector.cc, CSparse.cc, boolSparse.cc, dColVector.cc, dMatrix.cc, dNDArray.cc, dRowVector.cc, dSparse.cc, fCColVector.cc, fCMatrix.cc, fCNDArray.cc, fCRowVector.cc, fColVector.cc, fMatrix.cc, fNDArray.cc, fRowVector.cc, intNDArray.cc: Allow empty arrays in stream input operators. 2009-03-20 Jaroslav Hajek * Array.h (Array::fastmap): New method. * dNDArray.cc (NDArray::isnan, NDArray::isinf, NDArray::isfinite): New methods. * dNDArray.h: Declare them. * fNDArray.cc (FloatNDArray::isnan, FloatNDArray::isinf, FloatNDArray::isfinite): New methods. * fNDArray.h: Declare them. * CNDArray.cc (ComplexNDArray::isnan, ComplexNDArray::isinf, ComplexNDArray::isfinite): New methods. * CNDArray.h: Declare them. * fCNDArray.cc (FloatComplexNDArray::isnan, FloatComplexNDArray::isinf, FloatComplexNDArray::isfinite): New methods. * fCNDArray.h: Declare them. * lo-mappers.h (xisnan, xisinf, xfinite): If possible, use definitions from . 2009-03-18 Jaroslav Hajek * oct-norm.cc (get_eps): Remove that hack. (higham): Use std::numeric_limits instead. Include OCTAVE_QUIT. 2009-03-16 Jason Riedy * Sparse.cc (transpose): Eliminate the workspace by computing in retval.xcidx. * CSparse.cc (hermitian): Eliminate the workspace by computing in retval.xcidx. 2009-03-14 Jaroslav Hajek * mx-op-decl.h (NDS_BOOL_OP_DECLS, SND_BOOL_OP_DECLS, NDND_BOOL_OP_DECLS): Support compound binary ops. * mx-op-defs.h (NDS_BOOL_OPS, SND_BOOL_OPS, NDND_BOOL_OPS): Ditto. Optimize. * mx-op-defs.h (NDS_CMP_OP, SND_CMP_OP, NDND_CMP_OP): Optimize. 2009-03-14 Jaroslav Hajek * fNDArray.h (FloatMatrix::matrix_value): Fix return type. * dNDArray.cc (Matrix::matrix_value): Simplify. * fNDArray.cc (FloatMatrix::matrix_value): Simplify. * CNDArray.cc (ComplexMatrix::matrix_value): Simplify. * fCNDArray.cc (FloatComplexMatrix::matrix_value): Simplify. 2009-03-13 Jaroslav Hajek * Range.h (Range::Range (double, double, octave_idx_type)): Remove constructor body. * Range.cc: Move it here. Check for invalid range op results. (all operators): Validate cache for invalid range op results. * idx-vector.h (idx_vector::index): Optimize zero-step range case. * idx-vector.cc (idx_vector::maybe_reduce): Always reduce colon in singleton dimension. 2009-03-10 Jason Riedy * sparse-base-lu.cc (Pr_mat): New member function. Return the row permutation as a PermMatrix. (Pc_mat): New member function. Return the col permutation as a PermMatrix. * sparse-base-lu.h (sparse_base_lu): Declare Pc_mat and Pr_mat member functions. 2009-03-09 Jason Riedy * Sparse-diag-op-defs.h (octave_impl::inner_do_add_sm_dm): New template function. Implementation for adding sparse and diagonal matrices. Takes two functional arguments, opa and opd, to generate both subtraction variants. (octave_impl::do_commutative_add_dm_sm): New template function. Ensure A+D and D+A use the same generated code. (octave_impl::do_add_dm_sm): New template function. Check arguments for diag + sparse and call inner routine. (octave_impl::do_sub_dm_sm): New template function. Check arguments for diag - sparse and call inner routine. (octave_impl::do_add_sm_dm): New template function. Check arguments for sparse + diag and call inner routine. (octave_impl::do_sub_sm_dm): New template function. Check arguments for sparse - diag and call inner routine. * dSparse.h (operator +): Declare overrides for real diag + sparse. (operator -): Declare overrides for real diag - sparse, sparse - diag. * dSparse.cc (operator +): Define overrides for real diag + sparse. (operator -): Define overrides for real diag - sparse, sparse - diag. * CSparse.h (operator +): Declare overrides for complex and real combinations of diag + sparse. (operator -): Declare overrides for complex and real combinations of diag - sparse, sparse - diag. * CSparse.cc (operator +): Define overrides for complex and real combinations of diag + sparse. (operator -): Define overrides for complex and real combinations of diag - sparse, sparse - diag. 2009-03-08 Jason Riedy * Sparse-diag-op-defs.h (octave_impl::do_mul_dm_sm) (octave_impl::do_mul_sm_dm): New template functions. Implementations for sparse * diag and diag * sparse. * CSparse.h (operator *, trans_mul, herm_mul): Add overloads for DiagMatrix and ComplexDiagMatrix. * CSparse.cc (operator *, trans_mul, herm_mul): Implement operations by calling approprate functions in Sparse-diag-op-defs.h. * dSparse.h (operator *, trans_mul): Add overloads for DiagMatrix. * dSparse.cc (operator *, trans_mul): Implement operations by calling approprate functions in Sparse-diag-op-defs.h. 2009-03-12 John W. Eaton * oct-inttypes.h (bitshift): Apply mask even if not shifting. From Seb Astien . 2009-03-11 Jaroslav Hajek * PermMatrix.cc (PermMatrix::power): New method. * PermMatrix.h: Declare it. 2009-03-11 Jaroslav Hajek * 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 * Sparse-perm-op-defs.h (octinternal_do_mul_colpm_sm): New template function. Logic for the column permutation * sparse matrix operator. (octinternal_do_mul_pm_sm): New template function. Logic for the permutation matrix * sparse matrix operator. Note that there is no special row perm * sparse routine; the permutation is inverted and the col perm routine is called. (octinternal_do_mul_sm_rowpm): New template function. Logic for the sparse matrix * row permutation operator. (octinternal_do_mul_sm_colpm): New template function. Logic for the sparse matrix * column permutation operator. (octinternal_do_mul_sm_pm): New template function. Logic for the sparse matrix * permutation matrix operator. * dSparse.h (operator *): Declare sparse * permutation and permutation * sparse. * dSparse.cc (operator *): Define sparse * permutation and permutation * sparse. * CSparse.h (operator *): Declare sparse * permutation and permutation * sparse. * CSparse.cc (operator *): Define sparse * permutation and permutation * sparse. 2009-03-10 Jason Riedy * sparse-base-lu.cc (Pc_vec): The column permutation should be Ufact.cols ()-long, not Lfact.rows ()-long. 2009-03-10 Jason Riedy * 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 * 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 instead of . 2009-03-10 Jaroslav Hajek * mx-inlines.cc (OP_CUMMINMAX_FCN2): r -> r0 where appropriate. 2009-03-08 Jaroslav Hajek * idx-vector.h (idx_vector::bloop): loop --> bloop. (idx_vector::loop): New method. * MArray.cc (MArray::idx_add (cons idx_vector&, T)) (MArray::idx_add (cons idx_vector&, const MArray&)): New methods. * MArray.h: Declare them. 2009-03-05 Jason Riedy * Sparse.h (Sparse::elt_type): Remove typedef, replace with: * Sparse.h (Sparse::element_type): Add typedef to be consistent with Array.h * DiagArray2.h (DiagArray2::elt_type): Likewise, removed. * DiagArray2.h (DiagArray2::element_type): Define by using Array::element_type. * intNDArray.h (intNDArray::element_type): Remove, inherited from MArrayN. 2009-03-05 Jaroslav Hajek * 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 * PermMatrix.h (PermMatrix::elem): Fix comparisons. 2009-03-03 Jaroslav Hajek * lo-mappers.cc (xmin (float, float), xmax (float, float)): Simplify. 2009-03-02 Jaroslav Hajek * mx-inlines.cc: Add missing #include. 2009-02-25 John W. Eaton * Makefile.in: Make maintainer-clean and distclean the same. 2009-02-25 Jaroslav Hajek * oct-inttypes.cc (pow (const octave_int&, const octave_int&)): Simplify. 2009-02-23 Jaroslav Hajek * 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 * 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 * oct-sort.h (octave_sort::MergeState::MergeState): New constructor. (octave_sort::MergeState::~MergeState): New destructor. (octave_sort::MergeState::reset, octave_sort::MergeState::getmem, octave_sort::MergeState::getmemi): New methods. (octave_sort::sort, octave_sort::merge_lo, octave_sort::merge_hi octave_sort::merge_at): Reflect change. 2009-02-19 Jaroslav Hajek * oct-types.h (sortmode): Move enum here. * oct-sort.h (octave_sort::ms): Declare as pointer. (octave_sort::lookup): New overloaded method. * oct-sort.cc: Reflect change to ms. (octave_sort::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::lookup): New overloaded method. * Array.h: Declare it. 2009-02-18 John W. Eaton * 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 * Array.cc (Array::resize (const dim_vector&)): Check for negative dimensions. 2009-02-18 Jaroslav Hajek * oct-inttypes.cc (pow (const octave_int&, const octave_int&)): Use octave_int comparisons to avoid warning for unsigned types. 2009-02-17 Jaroslav Hajek * Array.cc (Array::resize (const dim_vector&)): Remove dead branch. 2009-02-17 Jaroslav Hajek * 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 * 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 * mx-inlines.cc (OP_MINMAX_FCN): Correct behaviour with NaNs. 2009-02-17 Jaroslav Hajek * 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 * Array.cc (Array::assign (const idx_vector& i, const idx_vector& j,...)): Fix invalid dimension inquiry. 2009-02-16 Jaroslav Hajek * 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 * 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 * 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 * 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 * chMatrix.cc (charMatrix::all, charMatrix::any): Use do_mx_red_op. * chNDArray.cc (charNDArray::all, charNDArray::any): Ditto. 2009-02-16 John W. Eaton * cmd-edit.cc (default_command_editor::do_readline): Use fputs instead of fprintf. 2009-02-14 Jaroslav Hajek * 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 * 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 * 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 * oct-inttypes.h (if_else_type): Remove (octave_int_base::truncate_int): Use if_then_else. 2009-02-12 John W. Eaton * 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::octave_sort, octave_sort::set_compare, octave_sort::compare): Use typedef to simplify decl. (octave_sort::ascending_compare, octave_sort::descending_compare): Use ref_param::type for parameter decl. * Array.cc (sort_isnan): Use ref_param::type for parameter decl. (Array::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 * oct-sort.cc (octave_sort::is_sorted, octave_sort::sort_rows, octave_sort::is_sorted_rows): New methods. * oct-sort.h: Declare them. * Array.cc (Array::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 * oct-sort.cc (octave_sort): Rewrite for optimizations. Allow inlined comparison functor and by-the-way indexed sorting. * oct-sort.h (octave_sort): Update interface. * Array.cc (Array::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 * 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 . 2009-02-05 Jaroslav Hajek * 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 * 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::merge_hi): std::copy -> std::copy_backward where appropriate. 2009-02-05 John W. Eaton * Array-util.cc (zero_dims_inquire): Eliminate unused variable MATCH. * Sparse.cc (assign (Sparse& lhs, const Sparse& rhs)): Eliminate unused variable N. * MArray-f.cc (MArray::norm (float p) const, MArray::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 * oct-locbuf.h: Specialize OCTAVE_LOCAL_BUFFER to use chunked allocation for pointers and const pointers. 2009-02-03 Benjamin Lindner * Makefile.in: Add missing library reference. 2009-02-03 Jaroslav Hajek * Array.cc (Array::sort (octave_idx_type, sortmode)): Copy array on-the-fly. (Array::sort (Array &, octave_idx_type, sortmode)): Copy array on-the-fly, use bare pointers rather than vec_index. * Array-d.cc (Array::sort (octave_idx_type, sortmode)): Copy array on-the-fly. (Array::sort (Array &, octave_idx_type, sortmode)): Copy array on-the-fly, use bare pointers rather than vec_index. * Array-f.cc (Array::sort (octave_idx_type, sortmode)): Copy array on-the-fly. (Array::sort (Array &, octave_idx_type, sortmode)): Copy array on-the-fly, use bare pointers rather than vec_index. 2009-02-02 Jaroslav Hajek * 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 * intNDArray.h (intNDArray: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 * Makefile.in (LIBRARIES, install, uninstall): Use SHLLIBPRE and SHLBINPRE library prefixes. From Marco Atzeri . 2009-01-28 Jaroslav Hajek * 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 * Makefile.in (LINK_DEPS): Include ARPACK_LIBS and REGEX_LIBS in the list. 2009-01-27 Jaroslav Hajek * 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 * Array.cc (Array::assign (const idx_vector&, const Array&)): Optimize assignment to an empty array. (Array::assign (const idx_vector&, const idx_vector&, const Array&)): Optimize assignment to an empty array. 2009-01-22 Jaroslav Hajek * Array2.h (Array2::index): Declare resize_ok as bool. * ArrayN.h (ArrayN::index): Ditto. Declare index vectors as const refs. 2009-01-22 Jaroslav Hajek * Range.cc (sort_internal): Add missing test. 2009-01-22 Jaroslav Hajek * Array.cc (Array::index (..., bool resize_ok)): Optimize the all-scalar-indices cases. 2009-01-22 Jaroslav Hajek * 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 * 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 * 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 * 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 * Array.h (Array): Document internal use of slice_data and slice_len. 2009-01-15 John W. Eaton * Sparse.cc (Sparse::reshape): Include mismatched dimensions in error message. * Array.cc (Array::reshape): Likewise. From Robert Millan . 2009-01-14 Jaroslav Hajek * Array.h (Array::rep, Array::dimensions): Make protected. * Array.cc (Array::make_unique): Move implementation here. (Array::fill): Ditto. * DiagArray2.h (DiagArray2): Reimplement without abusing Array internals. (DiagArray2::operator Array2): New method. * DiagArray2.cc (DiagArray2): Update methods. * MDiagArray2.h (MDiagArray2::operator Array2): Simplify. * PermMatrix.h (PermMatrix): Reimplement without abusing Array internals. * PermMatrix.cc (PermMatrix): Update methods. 2009-01-14 Jaroslav Hajek * Array.cc, Array.h (all Array constructors): Handle slice_data and slice_len. (Array::Array (const Array&, const dim_vector&, octave_idx_type, octave_idx_type)): New constructor. (Array::index): Use shallow copy when index reduces to a contiguous range. (Array::make_unique): Rewrite. (Array::ArrayRep): Delete redundant methods. (rec_index_helper::is_cont_range): New method. (Array::maybe_economize): New method. * DiagArray2.cc (DiagArray2::resize): Fix the mess. 2008-01-15 Rafael Laboissiere * oct-md5.cc: Include . 2009-01-13 Jaroslav Hajek * 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 * eigs-base.cc: New file with template wrapper for ARPACK. * Makefile.in (TEMPLATE_SRC): Add it here. 2008-12-16 Jaroslav Hajek * Array.cc (rec_permute_helper): New class. (Array::permute): Rewrite using the recursive algorithm. 2008-12-12 David Bateman * sparse-base-chol.cc (inverse): Fix inversion based on cholesky factorization. 2008-12-12 Jaroslav Hajek * 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 * mx-op-defs.h (DMDM_BIN_OP): Fix invalid buffer length. 2008-12-10 Jaroslav Hajek * 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 * 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 * idx-vector.cc (idx_vector::idx_vector_rep::idx_vector_rep (const Sparse&)): New constructor. * idx_vector.h: Declare it. (idx_vector::idx_vector (const Sparse&)): New constructor. * idx-vector.cc (idx_vector::idx_vector_rep::idx_vector_rep (const Array&)): Fix extent calculation. 2008-12-09 David Bateman * Makefile.in (INCLUDES): Add oct-locbuf.h 2008-12-07 Jaroslav Hajek * 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 * oct-locbuf.h (OCTAVE_LOCAL_BUFFER_INIT): New macro. 2008-10-29 Jaroslav Hajek * 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 * DiagArray2.h (DiagArray2): Inherit Array privately. (DiagArray2::dim1, dim2, rows, columns, cols, length, nelem, numel, byte_size, dims): New methods. (DiagArray2::diag): New method decl. * DiagArray2.cc (DiagArray2::diag): New method. * MDiagArray2.h (MDiagArray2::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 privately. (PermMatrix::dim1, dim2, rows, columns, cols, length, nelem, numel, byte_size, dims): New methods. 2008-12-04 Jaroslav Hajek * 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 * idx-vector.cc (idx-vector::complement): Add missing delete. 2008-12-04 Jaroslav Hajek * 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 * PermMatrix.h, PermMatrix.cc: New sources. * MDiagArray2.cc (MDiagArray2::is_multiple_of_identity): New method. * MDiagArray2.h (MDiagArray2::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 * DiagArray2.h (DiagArray2::DiagArray2 (const DiagArray2&)): New template constructor. (DiagArray2::elem, xelem, operator ()): Move to header file to enable inlining. * DiagArray2.cc (DiagArray2::elem, xelem, operator ()): Remove implementations. * MDiagArray2.h (MDiagArray2::MDiagArray2 (const DiagArray2&)): New template constructor. (MDiagArray2::nnz): New method. * MDiagArray2.cc (MDiagArray2::nnz): Implement it. * dDiagMatrix.h (DiagMatrix::DiagMatrix (const DiagArray2&)): 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&)): 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&)): 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&)): 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 * 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 * 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 * DET.h (base_det::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 * 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 * 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 * dir-ops.cc (dir_entry::read): Use std::list to cache names before converting to string_vector. 2008-11-14 David Bateman * Array2.h (Array2 Array2::index): Correct use of resize_fill_value. 2008-11-12 Michael Goffioul * MArray-C.cc, MArray-d.cc, MArray-f.cc, MArray-fC.cc: Declare MArray::norm specialization before implicit MArray 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&)): Ditto. * oct-inttypes.cc (octave_int::type_name): Ditto. * oct-inttypes.cc (powf(const octave_int&,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 * DiagArray2.h (DiagArray2::maybe_delete_elements): Remove declaration. 2008-11-09 Jaroslav Hajek * oct-norm.cc: Don't include Array.cc. (column_norms (const MArray2&, ...)): Use std::vector instead of Array for accumulator containers. Use empty constructor instead of Array::resize. (row_norms (const MArray2&, ...)): Ditto. (column_norms (const MSparse2&, ...)): Ditto. (row_norms (const MSparse2&, ...)): Ditto. 2008-10-31 Jaroslav Hajek * 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::norm), MArray-d.cc (MArray::norm), MArray-fC.cc (MArray::norm), MArray-f.cc (MArray::norm): Wrap a call to xnorm. * MArray-defs.h (MARRAY_NORM_BODY): Remove. 2008-11-02 Jaroslav Hajek * idx-vector.cc (idx_vector::is_complement): Set resulting extent correctly. * Array.cc (Array::delete_elements (int, const idx_vector&)): Fix check for invalid dim. 2008-10-31 Jaroslav Hajek * 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 * oct-inttypes.h (octave_int_abs): New function. (octave_int_arith_base::div): Use octave_int_abs instead of std::abs. * oct-inttypes.cc (octave_int_arith_base): Ditto. 2008-10-28 Jaroslav Hajek * 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::index, Array::resize_fill, Array::resize, Array::assign, Array::delete_elements): Rewrite. * Array.h (Array::index, Array::resize_fill, Array::resize, Array::assign, Array::delete_elements): Rewrite interfaces. * Array2.h (Array2::resize): Call Array::resize_fill. * Array3.h (Array3::resize): Call Array::resize_fill. * ArrayN.h (ArrayN::resize): Remove declarations. (ArrayN::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 * 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 * 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 * lo-specfun.cc (zbesi): Fix scaling factor for negative alpha. (cbesi): Likewise. 2008-10-23 John Swensen * oct-shlib.cc (octave_dyld_shlib::open): Call NSLinkEditError to get better diagnostic if NSLinkModule fails. 2008-10-23 John W. Eaton * oct-shlib.cc (octave_dlopen_shlib::open): Use RTLD_NOW instead of RTLD_LAZY. 2008-10-12 Jaroslav Hajek * 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 * sparse-util.h (SparseCholPrint): Change char * argument to const char *. * sparse-util.cc (SparseCholPrint): Likewise. 2008-10-09 Jaroslav Hajek * oct-sort.cc (octave_sort::merge_getmem, octave_sort::merge_freemem): Replace malloc -> new [], free -> delete []. (octave_sort::merge_lo, octave_sort::merge_hi): Replace std::memcpy and std::memmove with std::copy. 2008-10-08 John W. Eaton * 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 * oct-inttypes.h (octave_base_int::compute_threshold): Return exclusive bounds rather than inclusive, be resistant to compiler optimizations. (octave_base_int::convert_real): Use exclusive bounds. 2008-10-07 Jaroslav Hajek * oct-inttypes.h (OCTAVE_INT_DOUBLE_BIN_OP): Change octave_int64 to octave_uint64 where appropriate. 2008-10-06 David Bateman * 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 * Spasre-op-defs.h: Undo previous change. 2008-10-01 Jaroslav Hajek * oct-inttypes.h (octave_int::one, octave_int::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 * oct-lookup.h: Mark functions inline. Add missing std:: qualifiers. 2008-10-06 John W. Eaton * Sparse.h (Sparse::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 * Array.h (Array::maybe_delete_elements): Remove rfv argument from declaration. * Array.cc (Array::maybe_delete_elements): Remove all usages of rfv. 2008-10-03 Jaroslav Hajek * Array.cc (assignN): Do not call maybe_delete_elements when for empty matrix. 2008-09-30 Jaroslav Hajek * oct-inttypes.h: Mostly rewrite. * oct-inttypes.cc: Modstly rewrite. 2008-09-29 Jaroslav Hajek * Array.cc (Array::maybe_delete_elements_2(idx_vector&)): Return on empty index vector. 2008-09-26 Jaroslav Hajek * Array.cc (assign1, assign2, assignN): Do not call maybe_delete_elements. (maybe_delete_elements (Array&)): 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 * oct-rand.cc (initialize_mersenne_twister): Use separate initializations for each generator to avoid correlation. 2008-09-12 Jaroslav Hajek * oct-inttypes.h (pow (const octave_int&, const octave_int&)): 2008-09-19 John W. Eaton * Array.cc (assign1, assign2, assignN): Clear lhs index before throwing error. (Array::value): Clear index before throwing error. 2008-09-18 Jaroslav Hajek * 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 * Array.h (Array::coerce): Use octave_idx_type instead of int. 2008-09-12 Jaroslav Hajek * oct-inttypes.h (pow (const octave_int&, const octave_int&)): Handle negative exponent correctly. 2008-08-19 David Bateman * oct-inttypes.h (template inline T2 octave_int_fit_to_range (const T1&, const T2&, const T2&), template inline T octave_int_fit_to_range (const double&, const T&, const T&), template <> inline T2 octave_int_fit_to_range (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::conv_error_type): New enum to flag conversion and math warnings. (octave_int::octave_int (U i), octave_int::octave_int (double i), octave_int<>::octave_int (const octave_int& i)): Flag conversion and math errors other than integer truncation. (octave_int octave_int::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 octave_int powf (float, const octave_int&), template octave_int powf (const octave_int&, float)): New functions. 2008-08-12 Jaroslav Hajek * 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 * Array.cc (no_op_fcn): New static function. (Array::hermitian): If fcn is null, set to no_op_fcn. 2008-08-07 John W. Eaton * 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 * 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 * 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 * oct-inttypes.h: Style fixes. 2008-07-30 Jaroslav Hajek * oct-inttypes.h (octave_int::trunc_flag): New member static field. (octave_int::get_trunc_flag, octave_int::clear_trunc_flag): New member functions. (octave_int::octave_int (const octave_int&)): set trunc_flag on truncation. (SPECIALIZE_WIDENING_CONVERSION): New macro. (DECLARE_OCTAVE_INT_TYPENAME): New macro. 2008-07-29 David Bateman * 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 * lo-math.h: Ensure log2 is undefined from cmath in C++ mode. 2008-07-21 Michael Goffioul * 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 * regex-match.cc (regex_match::init): Initialize err to 0. 2008-07-19 John W. Eaton * 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 * 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 * dNDArray.cc: Do not include ctor NDArray(Array, bool, bool) into conditional HAVE_FFTW3 preprocessor statement. 2008-07-16 John W. Eaton * 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 * 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 * oct-mutex.h, oct-mutex.cc: New files. * Makefile.in: Add them to appropriate lists. 2008-07-15 John W. Eaton * oct-sort.cc, oct-sort.h (octave_sort::count_run): Declare descending arg as bool&. (octave_sort::sort): Pass bool to count_run for descending arg. 2008-07-11 John W. Eaton * 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::sort): Likewise. * Array-d.cc (Array::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)): 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 * dNDArray.cc (NDArray::NDArray (const Array&, bool, bool)): New constructor. * dNDArray.h: Provide decl. 2008-07-10 Michael Goffioul * lo-specfun.h: Fix typo in erff/erfcf declaration. * lo-specfun.cc: Ditto. Add atanhf implementation. 2008-06-20 Jaroslav Hajek * MatrixType.h: Add missing include statement. 2008-06-13 Michael Goffioul * lo-mappers.cc (arg): Remove ambiguity about atan2(float,float) usage. * fCmplxDET.cc (FloatComplexDET::initialize10): Likewise, for pow. 2008-06-11 John W. Eaton * so-array.h, so-array.cc, Array-so.cc: Delete. * Makefile.in: Remove them from the lists. 2008-06-05 John W. Eaton * oct-shlib.cc (octave_base_shlib::remove): Only dereference counter if iterator is valid. 2008-06-02 David Bateman * 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 * 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 * 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 * 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 * 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 * Array.cc (Array Array::transpose () const): Modify for tiled transpose to limit the number of cache misses. (Array Array::hermitian (T (*)(const&)) const): New method for matrix conjugate transpose. * Array.h (Array hermitian (T (*)(const&)) const): Declare it. * DiagArray2.cc (DiagArray2 DiagArray2::transpose () const): Specialization for diagonal arrays. (DiagArray2 DiagArray2::transpose (T (*) (const&)) const): Ditto. * MArray.h (MArray hermitian transpose () const): Ditto. * MArray2.h (MArray2 hermitian hermitian hermitian transpose () const): Ditto. (MDiagArray hermitian * 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 * dSparse.cc: Replace some DGBCON with GPBCON where they are incorrectly used. 2008-05-13 David Bateman * 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 * 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 * oct-rl-edit.c (octave_read_init_file): Simply call rl_read_init_file. 2008-05-01 John W. Eaton * 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 * 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 * oct-lookup.h (seq_lookup): Do not use output value of fill_n (MSVC does not support it). 2008-04-24 Michael Goffioul * lo-sysdep.cc (octave_popen2): Don't set PIPE_NOWAIT for parentWrite. 2008-04-21 John W. Eaton * idx-vector.cc (IDX_VEC_REP::idx_vector_rep (const boolNDArray&)): Fix for-loop condition. 2008-04-19 Jaroslav Hajek * CmplxCHOL.cc, CmplxQR.cc, dbleCHOL.cc, dbleQR.cc: Fix calls to error() 2008-04-16 David Bateman * Sparse.h (Sparse& operator = (Sparse&)): Move definition of the operator for here * Sparse.cc (Sparse& Sparse::operator = (Sparse&)): To here. Also delete idx. * Array.h (Array& operator = (Array&)): Move definition of the operator for here * Array.cc (Array& Array::operator = (Array&)): To here. Also delete idx. 2008-04-09 Michael Goffioul * 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 * 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 * lo-sysdep.cc [__WIN32__ && ! __CYGWIN__]: Include windows.h. 2008-03-27 Jaroslav Hajek * oct-lookup.h: New file. 2008-03-26 David Bateman * Array.cc (assignN): Additional fix for vector assignments. 2008-03-25 David Bateman * 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 * 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 * lo-mappers.cc (xtrunc): New function. * lo-mappers.h: Provide decl. 2008-03-25 Jaroslav Hajek * 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 * mx-ops: Definite binary operators for mixed integer array + array case, except for 64bit cases. 2008-03-21 David Bateman * oct-sparse.h: Add headers for amd.h. 2008-03-20 David Bateman * Array.cc (Array Array::diag (octave_idx_type) const): New method for diag function. * Array.h (Array diag (octave_idx_type) const): Declare it. * Array2.h (Array2 diag (octave_idx_type) const): New method. * MArray2.h (MArray2 diag (octave_idx_type) const): ditto. * ArrayN.h (ArrayN diag (octave_idx_type) const): ditto. * MArrayN.h (MArrayN diag (octave_idx_type) const): ditto. * Sparse.cc (Sparse Sparse::diag (octave_idx_type) const): New method for the diag function. * Sparse.h (Sparse diag (octave_idx_type) const): Declare it. * MSparse.h (MSparse 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 intNDArray::diag (void) const): ditto. * intNDArray.h (intNDArray 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 intNDArray::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 * oct-env.cc (octave_env::do_base_pathname): Also handle rooted relative filenames. 2008-03-19 David Bateman * Array.cc (assignN): If orig_empty allow assignment like a(1:10,1)=1:10 * Sparse.h (template Sparse map (F fcn) const): New template function. * MSparse.h (template MSparse 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 * 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::min, intNDArray::max): ditto. * Array.cc (Array::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 * oct-inttypes.h (octave_int_fit_to_range): Use partial specialization for double values. 2008-03-08 John W. Eaton * Sparse.cc (Sparse::index, assign): Likewise. * Array.cc (Array::index1, Array::index2, Array::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 * 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 * 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 * 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 * Array-C.cc, Sparse-C.cc: Include oct-sort.cc after definitions of < and > operators. 2008-03-03 David Bateman * Sparse.cc (assign1, assign1): Take care of repeated index values. Adapt the test code to check for these cases. 2008-03-03 Jaroslav Hajek * 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 * oct-rand.cc (class octave_rand): Make it a proper singleton class. 2008-02-26 John W. Eaton * 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 * oct-inttypes.h (octave_int_helper): New class. Provide specializations for signed and unsigned types. (octave_int::operator >>=, octave_int::abs, octave_int::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 * 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 * 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 lu_type sparse_base_lu :: Y (void) const): New method to simulate the retirn of xGETRF. * sparse-base-lu.h (template lu_type sparse_base_lu :: 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 * 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 * boolNDArray.h (boolNDArray (const Array2&)): Delete. * Marray2.h (MArray2 (const Array2&), MArray2 (const MArray2&)): New templated constructors. * Array2.h (Array2 (const Array&), Array2 (const Array&, 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::map): New function. * Array2.h (Array2::map): New function. * MArrayN.h (MArrayN::map): New function. * ArrayN.h (ArrayN::map): New function. * Array.h (Array::map): New function. * functor.h: New file. * Makefile.in (INCLUDES): Add it to the list. 2008-02-20 David Bateman * 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 * 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 * 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 * CMatrix.cc: Declare xilaenv instead of ilaenv. (ComplexMatrix::lssolve): Call xilaenv instead of ilaenv. 2008-02-12 Jason Riedy * Array.cc (ascending_compare, descending_compare): Remove non-standard extern in the instantiations. * oct-sort.cc: Include 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 * sparse-sort.cc: Don't explicitly instantiate class octave_sort, class octave_sort, or class octave_sort. * 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 * Makefile.in ($(MAKEDEPS)): Skip dependencies if omit_deps is defined. 2008-02-08 John W. Eaton * oct-sort.h (enum sortmode): Eliminate UNDEFINED. Change all uses of UNDEFINED to ASCENDING. 2008-02-07 John W. Eaton * Range.cc (Range::sort_internal): Rename from sort. New arg, ASCENDING, with default value of true. (Range::sort_internal (Array&, bool)): New function. (Range::sort (octave_idx_type, sortmode) const): New function. (Range::sort (Array&, octave_idx_type, sortmode) const): New function. * Range.h: Fix/provide decls. * intNDArray.cc (intNDArray::any (int)): Use != for comparison. 2008-02-06 John W. Eaton * 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 * Makefile.in: Unconditionally include $(MAKEDEPS). Mark $(MAKEDEPS) as .PHONY targets if omit_deps is true. 2008-02-03 Michael Goffioul * Array.cc (ascending_compare, descending_compare, Array::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. 2008-02-03 John W. Eaton * Array-i.cc: Also instantiate Arrays for long long type if it exists. 2008-02-03 Michael Goffioul * Array.cc: Don't include Range.h. 2008-01-31 David Bateman * 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 sort (octave_idx_type, sortmode) const, Array sort (Array &, 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 Array::sort (octave_idx_type, sortmode) const, Array Array::sort (Array &, 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 Array::sort (octave_idx_type, sortmode) const, Array Array::sort (Array &, 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::sort. * CSparse.cc, dSparse.cc: Remove inclusion of octa-sort.h. * Sparse.h ( Sparse sort (octave_idx_type, sortmode) const, Sparse sort (Array &, 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 Sparse::sort (octave_idx_type, sortmode) const, Sparse Sparse::sort (Sparse &, 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 * 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 * dMatrix.cc (Matrix::expm): Correctly perform reverse permutation. * CMatrix.cc (ComplexMatrix::expm): Likewise. 2008-01-22 Michael Goffioul * oct-time.cc (octave_base_tim::init): Validate pointer argument; this fixes the "localtime(-1)" crash under Windows. 2008-01-18 John W. Eaton * 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 . 2008-01-10 Kim Hansen * Sparse.cc: New tests for slicing of sparse matrices. 2008-01-07 David Bateman * Sparse-op-defs.h (SPARSE_ANY_ALL_OP_ROW_CODE): Don't break from loop if this test succeeds. 2008-01-03 David Bateman * 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 Version 3.0.0 released. 2007-12-18 David Bateman * Sparse.cc (template Sparse Sparse::index (idx_vector&, int) const): Fix case indexing of non zero scalar stored as a sparse matrix. (template Sparse Sparse::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 * Array.cc (Array::indexN): Correctly handle scalar indexed by N-d array. 2007-12-17 David Bateman * Sparse-op-defs.h (SPARSE_ANY_ALL_OP_ROW_CODE): Use ridx for row index. 2007-12-11 John W. Eaton * Sparse.cc (Sparse::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 * 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 * oct-time.cc (octave_base_tm::init): Only assign t->tm_zone if it is not 0. 2007-12-07 David Bateman * 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 * 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 * Sparse.cc (assign (Sparse&, const Sparse&)): Do nothing if one index is empty. 2007-12-04 David Bateman * Sparse.cc (assign (Sparse&, const Sparse&)): Resize matrix as well if one dimension of lhs is zero and the rhs index exceeds the lhs index. * Sparse.cc (assign1 (Sparse&, const Sparse&)): 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 * Array-util.h: Tag permute_vector_compare with OCTAVE_API. 2007-12-03 Moritz Borgmann * 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 * Sparse.cc (template int assign (Sparse&, const Sparse&)): Only set return matrix size to rhs values if both no. rows and columns are zero. 2007-11-30 John W. Eaton * 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 * idx-vector.h (idx_vector::idx_vector_rep (const intNDArray&)): 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 * intNDArray.cc (template intNDArray intNDArray::max (int) const, template intNDArray intNDArray::max (ArrayN&, int) const, template intNDArray intNDArray::min (int) const, template intNDArray intNDArray::min (ArrayN&, 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::index (idx_vector&, idx_vector&, int, const T& rfv) const): If ndims != 2 call ND version of index. 2007-11-14 John W. Eaton * 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 . 2007-11-07 Michael Goffioul * dMatrix.cc, CMatrix.cc: Help MSVC compiler to resolve ambiguities related to math functions (in C++ mode). 2007-11-06 David Bateman * intNDArray.cc (intNDArray intNDArray::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 . 2007-10-30 David Bateman * DASRT-opts.in, LSODE-opts.in: Doc fixes for small book format. 2007-10-30 John W. Eaton * CMatrix.cc (lssolve): Compute size of rwork and iwork arrays. * dMatrix.cc (lssolve): Compute size of iwork array. 2007-10-29 David Bateman * 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 * 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 * 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 * strptime.c: Also compile if OCTAVE_HAVE_BROKEN_STRPTIME is defined. 2007-10-23 John W. Eaton * CRowVector.cc (operator * const ComplexRowVector&, const ComplexColumnVector&)): Delete spurious code left from patch. 2007-10-22 Kim Hansen * chMatrix.cc, lo-utils.cc, oct-env.cc, oct-uname.cc, sparse-sort.cc: Include . 2007-10-17 John W. Eaton * 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::sparse_base_chol_rep::init): Likewise. 2007-10-16 John W. Eaton * 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 * Change copyright notices in all files that are part of Octave to GPLv3 or any later version. 2007-10-11 Brian Gough * DASSL-opts.in, LSODE-opts.in: Spelling fixes. 2007-10-10 Olli Saarela * DASPK-opts.in, DASRT-opts.in, DASSL-opts.in: Spelling fixes. 2007-10-10 John W. Eaton * LPsolve.h, LPsolve.cc: Delete. * Makefile.in: Remove them from the INCLUDES and LIBOCTAVE_CXX_SOURCES lists. 2007-10-09 John W. Eaton * 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 * oct-time.cc (octave_strptime::init): Only call mktime if mday is valud and mon and year are also filled in. * Array2.h (Array2::Array2(const dim_vector&), Array2::Array(const dim_vector&, const T&)): Check that dim_vector is 2 dimensional. * Sparse.cc (Sparse Sparse::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&, Sparse)): 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 * 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 * 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 * lo-specfun.cc (zlgamma): New function. 2007-10-04 John W. Eaton * oct-sort.cc (octave_sort::binarysort): Remove register qualifiers on local variables. 2007-10-04 Marco Caliari * CMatrix.cc (ComplexMatrix::expm): Limit shift to values less than log(realmax) to avoid issues with NaN. 2007-10-01 John W. Eaton * oct-time.cc (octave_strptime::init): Call mktime to propertly initialize wday and yday. From Matthias Drochner . * cmd-edit.cc (command_editor::do_decode_prompt_string): Don't insert extra '\001' when decoding \[ and \]. 2007-09-26 David Bateman * 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 * 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 * Array.cc (assign1 (Array&, const Array&, const LT&)): Also allow resizing empty LHS if it is 1x0 or 0xN. 2007-09-19 John W. Eaton * 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 * 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 * lo-utils.cc (octave_read_complex, octave_read_double): Skip leading whitespace. 2007-09-13 John W. Eaton * 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 * Array.cc (assign1): Don't call make_unique for invalid assignment. 2007-09-10 David Bateman * Array.h (Array::make_unique): Make public so that the ::assign functions can access it directly. * Array.cc (Array::maybe_delete_elements_1(idx_vector&), Array::maybe_delete_elements_1(idx_vector&), Array::maybe_delete_elements(idx_vector&, idx_vector&), Array::maybe_delete_elements(Array&, const T&)): Use xelem for non const RHS to avoid call to make_unique. (int assign1 (Array&, const Array&, const LT&)): Use xelem for LHS and call lhs.make_unique() only once. Special case the is_colon index case and use Array::xelem(octave_idx_type) rather than Array::xelem(octave_idx_type,octave_idx_type) and bring the additional multiplication out of the inner loop. (int assign2 (Array&, const Array&, const LT&)): ditto. (int assignN (Array&, const Array&, 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 * Array.cc (Array::fortran_vec): Call make_unique instead of manipulating rep directly. * Array.h (idx, idx_count): Declare mutable. (Array::set_index, Array::clear_index, Array::value): Now const. 2007-09-06 David Bateman * Array-util.cc (increment_index): dimensions can have singleton trailing dimensions. * Array.h (range_error, xelem, checkelem, elem, operator ()): Modify use of Array to Array 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 * 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 * 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 * MSparse.h (MSparse& insert (const Sparse&, const Array&)): New method. (MSparse (const dim_vector&, octave_idx_type)): Ditto. * dSparse.h (SparseMatrix& SparseMatrix::insert (const SparseMatrix&, const Array&)): ditto. (SparseMatrix (const dim_vector&, octave_idx_type)): ditto. * dSparse.cc (SparseMatrix& SparseMatrix::insert (const SparseMatrix&, const Array&)): ditto. * boolSparse.h (SparseBoolMatrix& SparseBoolMatrix::insert (const SparseBoolMatrix&, const Array&)): ditto. * boolSparse.cc (SparseBoolMatrix& SparseBoolMatrix::insert (const SparseBoolMatrix&, const Array&)): ditto. * CSparse.h (SparseComplexMatrix& SparseComplexMatrix::insert (const SparseMatrix&, const Array&), SparseComplexMatrix& SparseComplexMatrix::insert (const SparseComplexMatrix&, const Array&)): ditto. (SparseComplexMatrix (const dim_vector&, octave_idx_type)): ditto. * CSparse.cc (SparseComplexMatrix& SparseComplexMatrix::insert (const SparseMatrix&, const Array&), SparseComplexMatrix& SparseComplexMatrix::insert (const SparseComplexMatrix&, const Array&)): ditto. 2007-08-19 David Bateman * Sparse.cc (Sparse::permute): Avoid shadowing warning. 2007-08-14 John W. Eaton * Sparse.cc (Sparse::permute): permutation vector is zero based. Simplify. (Sparse::reshape): Warn about reshaping to N-d array. 2007-08-10 Michael Goffioul * 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 * Makefile.in: Adjust DISTFILES to allow out of tree "make dist" to work. 2007-06-04 David Bateman * oct-inttypes.h (octave_int& operator <<= (const T2&), octave_int& 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 * 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 * dMatrix.cc (Matrix::expm): Special case for scalar arg. * CMatrix.cc (ComplexMatrix::expm): Likewise. 2007-06-06 Michael Goffioul * 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 * file-ops.cc: Typo. * Sparse.cc (Sparse Sparse::reshape): If length of new dimensions is greater than 2, collapse to 2-D. 2007-06-02 David Bateman * SparseCmplxQR.cc: Changes to support CXSparse 2.2.0. 2007-05-31 John W. Eaton * 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 * oct-sparse.h: Don't surround included files with extern "C" { ... }. 2007-05-16 David Bateman * dRowVector.cc (linspace): Return second argument if fewer than two values are requested. * CRowVector.cc (linspace): Likewise. 2007-04-27 John W. Eaton * lo-mappers.cc (signum (const Complex&)): Special case for (0, 0). 2007-04-25 John W. Eaton * oct-fftw.h (octave_fftw): Tag with OCTAVE_API. 2007-04-20 John W. Eaton * Array.cc (assign1): For x(:) = RHS, require rhs_len == lhs_len, not rhs_len == 1. 2007-04-18 Michael Goffioul * oct-md5.h (oct_md5, oct_md5_file): Tag decls with OCTAVE_API. 2007-04-13 John W. Eaton * Array.cc (Array::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 * SparseCmplxQR.cc (SparseComplexQR::SparseComplexQR_rep::SparseComplexQR_rep): Move GCC_ATTR_UNUSED before the parameter decl. From Luis Ortiz . 2007-04-06 John W. Eaton * MArray-defs.h (MARRAY_NORM_BODY): New macro. * MArray.h (MArray::norm): New function. * MArray.cc: Provide decl. * MArray-d.cc (MArray::norm): Define double specialization. * MArray-C.cc (MArray::norm): Define Complex specialization. 2007-04-04 John W. Eaton * Range.cc (Range::nelem_internal): Likewise. * lo-utils.cc (NINT): Use numeric_limits instead of INT_MAX. (NINTbig): Use numeric_limits instead of INT_MAX. From Scott Pakin . 2007-04-04 David Bateman * 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 * intNDArray.cc (intNDArray): Delete spurious semicolon. * CMatrix.cc (ComplexMatrix::tinverse): Use Array 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 * dMatrix.h (Matrix::inverse): Reinstate versions without MatrixType argument. * CMatrix.h (ComplexMatrix::inverse): Likewise. 2007-03-27 John W. Eaton * Makefile.in (DISTDIRS): Delete variable. (dist): Delete action for DISTDIRS. Use ln instead of $(LN_S). 2007-03-26 David Bateman * 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 David Bateman * 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 * Range.cc (Range::all_elements_are_ints): Improve check. 2007-03-26 John W. Eaton * chNDArray.cc, chMatrix.cc: Also generate comparison and bool ops. * chNDArray.h, chMatrix.h: Provide decls. 2007-03-24 Luis Ortiz * MatrixType.cc (MatrixType::MatrixType (void)): Initialize sp_bandden to zero for performance reasons as it's not used. 2007-03-23 David Bateman * oct-rand.cc (octave_rand::seed): Seed differently for big and little endian. 2007-03-15 John W. Eaton * lo-mappers.cc (acos): Use formula similar to what we use for asin. From Alexander Barth . 2007-03-12 John W. Eaton * oct-inttypes.h (octave_int::octave_int (double)): New Specialization. Round arg. (operator / (const octave_int&, const octave_int&)): Round result before converting type. 2007-03-07 John W. Eaton * 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&, const Array&, const LT&)): Only allow resizing empty LHS if it is 0x0. * Array.cc (Array::maybe_delete_elements (Array&, const T&)): Handle case of more indices than dimensions. (assign (Array&, const Array&, const LT&)): Allow more cases to be handled by assignN. (assignN (Array&, const Array&, const LT&)): Special cases for 2-d array assignments for speed. Improve handling of scalar RHS and empty indices. 2007-03-05 David Bateman * 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 * str-vec.h (string_vector::empty): Return bool, not int. 2007-03-01 David Bateman * 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 * Makefile.in (uninstall): Delete files listed in $(INCLUDES_FOR_INSTALL), instead of $(INCLUDES). From Thomas Treichl . 2007-02-27 Michael Goffioul * file-ops.cc (file_ops::recursive_rmdir): Close dir_entry object before calling rmdir. 2007-02-26 Michael Goffioul * 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 * 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 * oct-shlib.h (octave_shlib::relative): New data member. (octave_shlib::mark_relative, octave_shlib::is_relative): New functions. 2007-02-16 Michael Goffioul * 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 * kpse.cc (expand_elt): Omit special treatment for //. 2007-02-06 John W. Eaton * file-ops.cc (file_ops::canonicalize_file_name) [HAVE_REALPATH]: Don't delete value returned from realpath. 2007-02-05 Thomas Treichl * file-ops.cc (file_ops::canonicalize_file_name): Provide implementation if realpath function is available. 2007-01-29 Michael Goffioul * oct-fftw.h: Sprinkle with OCTAVE_API as needed. 2007-01-17 Michael Goffioul * lo-sysdep.cc (octave_chdir): Handle directory names like "C:" on Windows systems. 2007-01-16 John W. Eaton * 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 * Makefile.in (LINK_DEPS): Include $(CAMD_LIBS) in the list. 2007-01-10 John W. Eaton * oct-sparse.h: Use HAVE_CHOLMOD_CHOLMOD_H, not HAVE_UMFPACK_CHOLMOD_H for case of "cholmod/cholmod.h". 2007-01-08 David Bateman * oct-sparse.h: Replace sparsesuite with suitesparse and SPARSESUITE with SUITESPARSE to match upstream name. 2007-01-05 David Bateman * 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 * 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 * boolSparse.cc (SparseBoolMatrix::operator !): Fix off-by-one error. 2006-12-22 John W. Eaton * 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 * 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 * 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 * strptime.c (day_of_the_week): Use code from current glibc sources. 2006-12-05 John W. Eaton * 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 * randpoisson.c (oct_fill_randp): For lambda > 1e8, upper limit of loop is n, not L. 2006-11-30 John W. Eaton * lo-utils.cc (octave_read_double, read_inf_nan_na): Also recognize [+-][Ii]nf. 2006-11-28 David Bateman * 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 * oct-env.cc (do_absolute_pathname): Undo previous change. 2006-11-20 John W. Eaton * oct-env.cc (octave_env::do_absolute_pathname): Also return true for ".", and names beginning with "./" or "../". 2006-11-14 Luis F. Ortiz * CMatrix.cc, dMatrix.cc: New tests. 2006-11-13 Michael Goffioul * Array-d.cc, dDiagMatrix.h: Sprinkle with OCTAVE_API as needed. 2006-11-11 John W. Eaton * Makefile.in ($(OPTS_INC), mx-ops.h): Use $(simple-move-if-change-rule) here. 2006-11-09 David Bateman * sparse-base-chol.cc (sparse_base_chol_rep::Q): Cast perms(i) to octave_idx_type, not int. 2006-11-08 John W. Eaton * dir-ops.cc (dir_entry::read): Avoid rewinddir. 2006-11-06 John W. Eaton * Array.cc (assignN): Exit early if invalid indices are found. 2006-11-03 Michael Goffioul * strftime.c [HAVE_TZNAME]: Tag tzname with OCTAVE_IMPORT. 2006-11-03 John W. Eaton * 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 * 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 * oct-time.cc [! HAVE_STRFTIME]: Declare strftime. 2006-10-26 Michael Goffioul * mx-op-defs.h (NDS_CMP_OP1, NDS_CMP_OPS1, NDS_CMP_OP2, NDS_CMP_OPS2): New macros. 2006-10-26 John W. Eaton * 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 * 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 * oct-inttypes.cc (INSTANTIATE_INTTYPE_BIN_OP): Provide explicit type qualification for OP. 2006-10-26 David Bateman * Sparse.cc (Sparse::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 * Sparse.cc (assign): Clear lhs index after error. 2006-10-25 David Bateman * Sparse.cc (assign (Sparse&, const Sparse&)): Fix previous patch so it works. 2006-10-25 Michael Goffioul * 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 * Sparse.cc (assign (Sparse&, const Sparse&)): Resize the lhs at the point we know the assignment can succeed if the lhs is empty. 2006-10-23 John W. Eaton * Array.cc (assign2): Don't require vector assignments to be oriented. 2006-10-17 John W. Eaton * 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 * 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 * Makefile.in: Adapt rules to use $(LIBPRE). 2006-10-03 David Bateman * MatrixType.cc (MatrixType::MatrixType): Avoid crash if np == 0 or p == 0. 2006-10-02 John W. Eaton * dbleDET.cc (DET::initialize2): Ensure arg to log10 is double. * CmplxDET.cc (ComplexDET::initialize2): Likewise. 2006-09-22 David Bateman * MatrixType.h (MatrixType::MatrixType(const SparseComplexMatrix&)): Remove spurious warning. 2006-09-15 John W. Eaton * Array.cc (Array::index (Array&, int, const T&) const): Handle resizing. * intNDArray.h (intNDArray:elt_type): New typedef. 2006-09-11 John W. Eaton * 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 . * 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 * chNDArray.cc (charNDArray::any, charNDArray::all): Compare elements to '\0', not ' '. 2006-08-25 John W. Eaton * mx-inlines.cc (MX_ND_REDUCTION): Special case for 0x0 arrays. 2006-08-23 John W. Eaton * 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 * 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 * 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::any_element_not_one_or_zero): New function. * intNDArray.h: Provide decl. * Array.cc (Array::permute): Only rearrange values if array is not empty. 2006-07-26 John W. Eaton * 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 * Sparse.h (Sparse::mex_get_data, Sparse::mex_get_ir, Sparse::mex_get_jc): New functions. 2006-07-21 John W. Eaton * oct-inttypes.h (octave_int::mex_get_data): New function. * Array.h (Array::mex_get_data): New function. 2006-07-19 John W. Eaton * oct-inttypes.h (octave_int::operator bool (void)): New function. 2006-07-16 John W. Eaton * 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 * data-conv.cc: Instantiante swap_bytes templates here. * MatrixType.cc (MatrixType::MatrixType): Use complete initializer lists in constructors. 2006-07-06 John W. Eaton * str-vec.cc (string_vector::string_vector (std::list&)): New constructor. * str-vec.h: Provide decl. 2006-07-01 David Bateman * 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 * 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 * Sparse.cc (Sparse::SparseRep::elem): Avoid out of bounds array access. 2006-06-27 John W. Eaton * Makefile.in: Finish renaming of OBJECTS -> LIBOCTAVE_OBJECTS. 2006-06-21 John W. Eaton * 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 * 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 * Array.cc (assignN): Maybe reshape LHS before doing assignment. 2006-05-23 John W. Eaton * 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 * EIG.cc (EIG::init): Trap Inf and NaN values here. From Keith Goodman . 2006-05-08 David Bateman * Sparse-op-defs.h (SPARSE_SPARSE_MUL): fix bug in previous modification. 2006-05-09 David Bateman * 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 * 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 * 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 * 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 * 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 * 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::maybe_delete_elements, Array::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::index): Likewise. 2006-04-26 John W. Eaton * 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 * randmtzig.c (randmt, randi53, randi54, randi64, randu32, randu53): Omit inline from decl. * Sparse.cc (Sparse::index): Use std::vector to avoid local array with variable dimension. 2006-04-16 John W. Eaton * 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 to avoid local array with variable dimension. 2006-04-13 David Bateman * Sparse.cc (assign (Sparse&, const Sparse&)): Optimize assignment. 2006-04-13 John W. Eaton * Sparse.cc (assign (Sparse&, const Sparse&)): 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::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 * ArrayN.h (ArrayN::ArrayN): Qualify fill with Array base class. * DiagArray2.h (DiagArray2::DiagArray2): Likewise. 2006-04-03 David Bateman * Sparse.cc (Sparse::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 * dSparse.cc (SparseMatrix::bsolve): Integer work vector is Array, 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 * SparseQR.h: Publish externally used friends. * SparseCmplxQR.h: ditto. 2006-03-21 John W. Eaton * lo-specfun.cc (betainc): Use F77_XFCN instead of F77_FUNC for call to xdbetai. 2006-03-21 David Bateman * 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 * str-vec.cc (vector::list_in_columns): New optional arg, width. 2006-03-16 David Bateman * 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::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 * oct-time.cc (octave_strptime::init): Return useful character count. 2006-03-08 David Bateman * 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::transpose (void) const): Accelerate algorithm. * CSparse.cc (SparseComplexMatrix::transpose (void) const): ditto. 2006-03-01 John W. Eaton * 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 * Array.cc (assignN): Clear index before reshaping. * Array.h (Array::operator =): Don't set idx to 0 if copying self. 2006-02-20 David Bateman * 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::Sparse (octave_idx_type, octave_idx_type, T)): Treat case where third argument is zero. 2006-02-15 John W. Eaton * 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 * Makefile.in (LINK_DEPS): Add missing dependencies on colamd, ccolamd and cxsparse 2006-02-13 John W. Eaton * 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 * mx-inlines.cc (MX_ND_REDUCTION): Store in cummulative product of all dimensions in CP_SZ. 2006-02-09 John W. Eaton * mx-inlines.cc (MX_ND_CUMULATIVE_OP): Store in cummulative product of all dimensions in CP_SZ. 2006-02-09 David Bateman * 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 * Array-util.h (calc_permutated_idx): Delete. * Array.cc (permute_vector): New data structure. (permute_vector_compare): New function. (Array::permute): Rewrite to avoid calc_permutated_index for improved performance. 2006-02-04 David Bateman * COLAMD: Remove all files, as now unused. 2006-01-31 John W. Eaton * Sparse.h (Sparse::nzmax): New function. (Sparse::nnz): Rename from nonzero. Change all uses of old nnz function to be nzmax. Change all uses of nonzero to be nnz. (Sparse::nzmx): Rename from nnz (data member). Change all uses. 2006-01-21 David Bateman * sparse-sort.cc (bool octave_sparse_sidxl_comp): 64-bit fix. (bool octave_idx_vector_comp): New function. (template class octave_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&, Sparse&)): Treat cases of unordered LHS indexes in assignment using new octave_idx_vector_sort class. (int assign(Sparse&, Sparse&)): ditto. 2006-01-30 John W. Eaton * so-array.h (streamoff_array::nnz): New funtion. * boolNDArray.h (boolNDArray::nnz): New function. * MArrayN.h (MArrayN::nnz): New function. * MArray.h (MArray::nnz): New function. 2006-01-04 David Bateman * 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. 2005-12-28 David Bateman * 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 * LSODE.cc (LSODE::do_integrate (double)): Resize iwork and rwork before setting any values in either array. 2005-11-29 John W. Eaton * oct-uname.h, oct-uname.cc: New files. * Makefile.in: Add them to the appropriate lists. 2005-11-11 John W. Eaton * Array.cc (Array::indexN): Simplify. 2005-11-09 John W. Eaton * oct-inttypes.h (octave_int::operator char (void) const): New conversion op. 2005-11-01 John W. Eaton * Makefile.in (distclean): Also remove oct-types.h. From Quentin Spencer . 2005-10-31 David Bateman * dSparse.cc, CSparse.cc: Use C++ true/false instead of preprocessor defined TRUE/FALSE. 2005-10-30 John W. Eaton * mx-inlines.cc (MX_ND_REDUCTION): Iterate in direction of DIM. (MX_ND_CUMULATIVE_OP): Likewise. 2005-10-29 John W. Eaton * mx-inlines.cc (MX_ND_REDUCTION): Avoid increment_index to speed things up. Simplify. * Array.cc (Array::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 * oct-sparse.h: Fix typo in HAVE_UFSPARSE_UMFPACK_H. From Quentin Spencer . * 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 * Array.cc (assignN): Reshape to final size instead of resizing. 2005-10-26 John W. Eaton * oct-sparse.h: New file. * oct-sparse.h.in: Delete. 2005-10-26 David Bateman * sparse-base-chol.h: Include cholmod specific code in HAVE_CHOLMOD * sparse-base-chol.cc: ditto. 2005-10-26 John W. Eaton Changes for GCC 4.1, tip from Arno J. Klaassen : * 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 * 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 * oct-env.cc (octave_env::have_x11_display): New function. * oct-env.h: Provide decl. 2005-09-29 John W. Eaton * 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 * file-ops.cc (file_ops::recursive_rmdir): New function. * file-ops.h: Provide decl. 2005-09-19 David Bateman * 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 * 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 * 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 * 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 * 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 * 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 * 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 * oct-inttypes.h (OCTAVE_S_US_FTR): Compare <= 0 instead of < 0 to avoid warnings for unsigned types. 2005-07-07 John W. Eaton * dSparse.cc (SparseMatrix::factorize): Initialize Numeric to 0. * CSparse.cc (SparseComplexMatrix::factorize:) Likewise. 2005-06-15 John W. Eaton * 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 * 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 * 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 * Array.cc (assignN): Try harder to correctly resize previously empty LHS. 2005-05-16 David Bateman * dSparse.h: Change UMFPACK_LONG_IDX to IDX_TYPE_LONG. * CSparse.h: ditto. 2005-05-10 David Bateman * dSparse.cc (determinant): Free numeric factorization after sucessful calculation. * CSparse.cc (determinant): ditto. 2005-05-06 John W. Eaton * 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 * Array.cc (Array::permute): Call chop_trailing_singletons on retval before return. 2005-05-04 John W. Eaton * 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 * Makefile.in (LINK_DEPS): List $(UMFPACK_LIBS) ahead of $(BLAS_LIBS). From Dmitri A. Sergatskov . 2005-04-29 David Bateman * 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 * str-vec.cc (string_vector::delete_c_str_vec): Correctly free array and its contents. 2005-04-22 John W. Eaton * 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 * Makefile.in (DISTFILES): Include oct-types.h.in in the list. 2005-04-19 John W. Eaton * Array.cc (assignN): Don't crash if the index list is empty. 2005-04-14 David Bateman * 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 * 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 * Makefile.in: include oct-types in INCLUDES so that it is installed 2005-04-08 John W. Eaton * Makefile.in (clean): Use exact filenames instead of *.xxx. * Initial merge of 64-bit changes from Clinton Chee: 2005-04-07 John W. Eaton * MArray-i.cc, Array-i.cc: Instantiate Array and MArray. * 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 * 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 * dim-vector.h, lo-utils.h: Include oct-types.h. * oct-types.h.in: New file. 2005-03-31 Clinton Chee * lo-utils.cc (NINTbig): New function. * lo-utils.h: Provide decl. 2005-04-06 David Bateman * Makefile.in: Link to UMFPACK_LIBS. 2005-04-05 John W. Eaton * Array.cc (assignN): Avoid shadowed declaration in previous change. 2005-04-01 John W. Eaton * 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 * 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::Proxy::operator T ()): Likewise. 2005-03-26 John W. Eaton * 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 * Makefile.in (MATRIX_INC): Remove oct-spparms.h from the list. 2005-03-14 John W. Eaton * 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 instead of just "umfpack.h". * CSparse.cc: Likewise. * SparsedbleLU.cc: Likewise. * SparseCmplxLU.cc: Likewise. 2005-03-14 David Bateman * CSParse.cc, SparseCmplxLU.cc, SparsedbleLU.cc, dSparse.cc: Allow compilation to succeed if UMFPACK is not available. 2005-03-09 John W. Eaton * Makefile.in (bin-dist): Delete target. (BINDISTLIBS, BINDISTFILES): Delete variables. 2005-03-01 John W. Eaton * ODESSA.h, ODESSA.cc, ODESSA-opts.in: Delete. * Makefile.in: Remove them from the lists. 2005-02-28 John W. Eaton * Makefile.in (LINK_DEPS): Remove -lglob from the list. 2005-02-27 David Bateman * Sparse.cc (Sparse::reshape): Set cidx for the N last elements in the sparse matrix. 2005-02-25 John W. Eaton Sparse merge. 2005-02-13 David Bateman * 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 * 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 * 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::type (int) const, bool Sparse::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 * Array.cc (Array::insert (const Array&, const Array&)): Modify calculation of number elements to skip between copied blocks. 2005-01-07 David Bateman * 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 * 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 * 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::Sparse, Sparse::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 * 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 and Andy Adler . * 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 * 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 * Array.cc (Array::permute): Allow permutation vector longer than number of dimenensions of permuted matrix. * Array.cc (Array::permute): Use zero-based indexing for perm_vec. * Array-util.cc (calc_permutated_idx): Likewise. 2005-02-10 David Bateman * CNDArray.cc (ComplexNDarray::operator !): Change sense of test. * CMatrix.cc (ComplexMatrix::operator !): Likewise. 2005-02-09 John W. Eaton * 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 * Array-util.cc (freeze): Improve error message. 2005-01-26 David Bateman * Array.cc (Array::insert): Handle generic case, not just special case for fast concatenation. 2005-01-18 John W. Eaton * 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 * Array.cc (Array::insert (const Array&, const Array&)): Modify calculation of number elements to skip between copied blocks. 2005-01-18 John W. Eaton * idx-vector.cc (IDX_VEC_REP::freeze): Call warning handler, not error handler, to warn about resizing. 2004-12-27 Martin Dalecki * 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 * 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 . 2004-11-18 John W. Eaton * 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 * 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::index): Call generic N-d indexing function if idx_arg is N-d. 2004-11-09 David Bateman * 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::concat): New method. * intNDArray.h: Provide decl. 2004-11-08 John W. Eaton * 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 * dMatrix.cc (Matrix::inverse): Return info == -1 for any failure. * CMatrix.cc (ComplexMatrix::inverse): Likewise. 2004-10-19 John W. Eaton * Array.cc (assignN): Avoid resizing if assignment will fail. 2004-10-18 John W. Eaton * 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 * 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 * Array.cc (assign2, assignN): If index is empty, allow RHS to be any empty matrix, not just []. 2004-09-23 John W. Eaton * 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&)): Use explicit as_double () conversion in call to tree_to_mat_idx. * oct-inttypes.h (octave_int::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, not T1. 2004-09-23 David Bateman * 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 * 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 * 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 * 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 * oct-sort.h (octave_sort::set_compare (bool (*comp) (T, T))): New function to set the comparison function for the sort. 2004-09-10 John W. Eaton * lo-mappers.cc (xround): Fix typo. 2004-09-08 John W. Eaton * 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 * 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 here. 2004-09-03 David Bateman * boolNDArray.cc (boolNDArray::concat, boolNDArray::insert): New functions for boolean matrix concatenation. * boolNDArray.h: Provide decls. 2004-09-03 John W. Eaton * 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 * 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 * oct-inttypes.h (pow): Args now const reference. (octave_int::operator *=, octave_int::operator /=, octave_int::operator <<=, octave_int::operator >>=): New member functions. (OCTAVE_INT_BITSHIFT_OP): Delete macro. (operator >> (const octave_int& x, const T2& y)): Define in terms of >>=. (operator << (const octave_int& x, const T2& y)): Define in terms of <<=. (bitshift): Operate on octave_int objects, not the values, so we get proper saturation properties. 2004-08-31 David Bateman * 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 * oct-inttypes.h (octave_int::byte_size): New function. 2004-08-31 John W. Eaton * 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 * oct-inttypes.h (octave_int_fit_to_range): Use template specializations to avoid warnings about signed/unsigned comparisons. 2004-08-28 John W. Eaton * 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 * 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 * 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 * dim-vector.h (dim_vector::concat): Correct incrementation for non-existent dimensions. 2004-08-09 John W. Eaton * idx-vector.h (idx_vector::idx_vector_rep::tree_to_mat_idx (const octave_int&)): 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&), idx_vector::idx_vector_rep::idx_vector_rep (const intNDArray&)): New template constructors. 2004-08-05 John W. Eaton * EIG.cc (EIG::init): Add volatile qualifier to nvr decl. * intNDArray.cc (intNDArray::operator !, intNDArray::all, intNDArray::any): Sprinkle with this-> as needed. * mx-inlines.cc (MX_ND_REDUCTION, MX_ND_CUMULATIVE_OP): Likewise. 2004-08-03 John W. Eaton * Array.cc (Array::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 * oct-cmplx.h (pow (const Complex&, const double&): Convert second arg to complex to avoid libstdc++ bug. 2004-07-27 John W. Eaton * oct-inttypes.h (bitshift): New arg, MASK. (OCTAVE_INT_BITSHIFT_OP): Bitshift does not saturate. 2004-07-23 John W. Eaton * Array.cc (Array::reshape): Return *this if no change in size. 2004-07-23 David Bateman * 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::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 * 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 * oct-inttypes.h (octave_int::nbits): New function. (bitshift (const octave_int&, int)): New function. 2004-06-14 John W. Eaton * mx-base.h: Include headers for new int types. * dNDArray.h, dNDArray.cc (NDArray::NDArray (const boolNDArray&), NDArray::NDArray (const charNDArray&)): Delete. (template explicit NDArray (const intNDArray&)): 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&), (ComplexNDArray::ComplexNDArray (const NDArray&), (ComplexNDArray::ComplexNDArray (const boolNDArray&), (ComplexNDArray::ComplexNDArray (const charNDArray&)): Delete. (ComplexNDArray::squeze): Call MArrayN::squeeze, not ArrayN::squeeze. * MArrayN.h: (template explicit MArrayN::MArrayN (const Array2&), (template MArrayN::MArrayN (const ArrayN&), (template explicit MArrayN::MArrayN (const MArray&)): New constructors. (ArrayN::reshape, ArrayN::permute, ArrayN::ipermute, ArrayN::squeeze): New forwarding functions for return type conversion. * ArrayN.h: (template explicit ArrayN::ArrayN (const Array2&), (template explicit ArrayN::ArrayN (const ArrayN&), (template explicit ArrayN::ArrayN (const Array&), (template explicit ArrayN::ArrayN (const Array&, const dim_vector&)): New constructors. (ArrayN::reshape, ArrayN::permute, ArrayN::ipermute, ArrayN::transpose): New forwarding functions for return type conversion. * Array.h (template Array::Array (const Array&)): New constructor. (Array::coerce, Array::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 * 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 * Array.cc (assignN): Allow magic colon for dimensions lvalue greater than the existing number of dimensions in lvalue. 2004-04-30 David Bateman * 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::index (Array&, int, const T&)): Don't chop trailing dimensions of Array if there is more than one element in idx_vector. Resize the return value to the size of Array. * 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 * oct-sort.cc: Don't include oct-obj.h. 2004-04-22 John W. Eaton * Array.cc (Array::index2, Array::indexN): Don't set invalid dimensions on return value. 2004-04-21 John W. Eaton * mx-inlines.cc (MX_ND_REDUCTION): Chop trailing singletons. 2004-04-06 David Bateman * Array.cc (Array::resize_no_fill (const dim_vector& dv), Array::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 * mx-inlines.cc (MX_ND_CUMULATIVE_OP): Fix off-by-one error. 2004-04-02 David Bateman * 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 * 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 * so-array.cc (SND_CMP_OP, NDS_CMP_OP, NDND_CMP_OP): Omit empty result args. * Array.cc (Array::Array (const Array&, 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 * Array.cc (Array::index2): Allow result to be N-d if indexing a scalar or vector with an N-d array. 2004-03-09 John W. Eaton * Array.cc (Array::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 * Array.cc (Array::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::maybe_delete_elements_2): Omit Fortran-indexing warning. 2004-03-04 David Bateman * dNDArray.cc (NDArray::ifourier): Arg is int, not const int. * CNDArray.cc (ComplexNDArray::ifourier): Likewise. 2004-03-03 Hans Ekkehard Plesser * base-lu.cc (base_lu<>::L): Check bounds before setting diagonal element. 2004-03-03 John W. Eaton * 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 * 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 * 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 * Array.cc (Array::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::cat): Call new form of cat function. * chNDArray.cc (charNDArray::cat): Ditto. * CNDArray.cc (ComplexNDArray::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 * 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 * Array.cc (Array::resize_and_fill (const dim_vector&, const T&)): Fix thinko in extending dimensions. 2004-02-20 John W. Eaton * 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 * oct-fftw.cc (octave_fftw_planner::create_plan): Cast IN and OUT args to ptrdiff_t instead of long before masking. From Paul Kienzle . * Array.cc (Array::insertN (const Array&, int, int)): Rename from Array::insert. (Array::insert2 (const Array&, int, int)): Reinstate old Array::insert function under this name. (Array::insert (const Array&, int, int)): New function. Dispatch to insert2 or insertN as appropriate. 2004-02-17 John W. Eaton * oct-fftw.cc (convert_packcomplex_1d, convert_packcomplex_Nd): Sprinkle with OCTAVE_QUIT. 2004-02-16 David Bateman * 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 * Array.cc (Array::insert (const Array&, int, int)): Make it work for N-d arrays. * ArrayN.h (ArrayN::insert (const ArrayN& 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 * Makefile.in (LINK_DEPS): Always define. * Array.cc (Array::squeeze): Always return an array with at least two dimensions. 2004-02-13 Petter Risholm * 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 * Array.cc (maybe_delete_elements_2): Allow X(n) = [] for 2-d X. (Arrayassign2): Also call maybe_delete_elements for single index when rows and columns or LHS are both greater than 1. 2004-02-13 Petter Risholm * Array.cc (Array::maybe_delete_elements): Check for index out of bounds. Handle one index. * Array.cc (Array::indexN): Use dim_vector (0, 0) instead of dim_vector (0) to create empty return vector. 2004-02-07 John W. Eaton * Array.cc (Array::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 * Array.cc (Array::resize_and_fill): Don't bother to assign any values unless the length of the new array is greater than 0. (Array::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::indexN): Likewise. * Array.cc (Array::indexN): Use dim_vector::operator == instead of equal_arrays function. (Array::index, Array::indexN, Array::assignN) Use dim_vector::any_zero instead of any_zero_len function. * Array.cc (Array::assignN): Eliminate special case for empty index. Don't skip reshaping and resizing if RHS is empty. * Array.cc (Array::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::maybe_delete_elements): Maybe warn about Fortran-style indexing. 2004-02-05 John W. Eaton * Array.cc (Array::assignN): Simplify. Allow assignments to succeed if number if indices is less than the number of RHS dimensions. 2004-02-05 Petter Risholm * Array.cc (Array::maybe_delete_elements): Reshape LHS when number of indices is less than number of dimensions. * Array.cc (Array::assignN, Array::maybe_delete_elements): Remove unsued variable lhs_inc. * Array.cc (Array::maybe_delete_elements): Declare idx_is_colon and idx_is_colon_equiv Array instead of dim_vector. * Array.cc (Array::assignN): Compute new dims in a cleaner way. * Array.cc (Array::index): Check for frozen_lengths.length () == n_dims before checking to see if all indices are colon_equiv. 2004-02-05 John W. Eaton * Array.cc (Array::assignN): Require RHS == 0x0 matrix for deleting elements. (Array::index): Remove trailing singletons in ra_idx, but leave at least ndims elements. 2004-02-05 Petter Risholm * Array.cc (Array::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 * dim-vector.h (dim_vector::squeeze): New function. (Array::assignN): Use it instead of chop_trailing_singltons for deciding whether the assignment conforms. * Array.cc (Array::assignN): Simplify dimension check by comparing rhs_dims and frozen_len sans trailing singletons. 2004-02-03 John W. Eaton * 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 * boolNDArray.h (boolNDArray::boolNDArray): Declare dim_vector reference arg const. 2004-01-30 John W. Eaton * Array-flags.cc: Include Array-flags.h, not Array.h. Doh. 2004-01-30 Jakub Bogusz * Array-flags.h (liboctave_wfi_flag, liboctave_wrore_flag): Now bool, to match definition in Array-flags.cc. 2004-01-23 John W. Eaton * file-ops.cc: Include instead of 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 . 2004-01-22 John W. Eaton * Array.cc (Array::assign2, Array::assignN): For X(I) = RHS, don't restrict I to fewer elements than X. * Array.cc (Array::assign2): Simplify indexing for X(I) = RHS case. 2004-01-22 Petter Risholm * mx-inlines.cc (MX_ND_REDUCTION, MX_ND_CUMULATIVE_OP): Simplify calculation of number of elements in retval. * Array.cc (Array::assignN): Eliminate unnecessray code for filling when RHS is scalar and dimension lengths agree. 2004-01-22 John W. Eaton * 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 * Array.cc (Array::resize_and_fill): Correctly copy old elements. (Array::assign2): Check for RHS dimensions larger than 2. 2004-01-21 Petter Risholm * Array.h (Array::chop_trailing_singletons): New function. * Array.cc (Array::assignN): Use it on LHS. * Array.cc (Array::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 * 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 * 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 * 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::index (Array&, int, const T&)): Handle zero-length result dimensions the same as empty original indices. 2003-12-09 John W. Eaton * dim-vector.h (dim_vector::chop_trailing_singleton_dims, dim_vector::dim_vector_rep::chop_trailing_singleton_dims): New functions. * Array.cc (ArrayN::indexN): Use it. (ArrayN::index (Array&, int, const T&)): Likewise. 2003-11-26 John W. Eaton * boolNDArray.cc: Define BOOL ops. Define mixed CMP ops. * boolNDArray.h: Declare BOOL ops. Declare mixed CMP ops. 2003-11-25 John W. Eaton * 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 * 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::range_error (const char*, const Array&)): Report index values. * Array.cc (Array::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 * 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::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 * 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::operator =): Don't copy dimensions here. * Array3.h (Array3::operator =): Likewise. * DiagArray2.h (DiagArray2::operator =): Likewise. Include Array.h, not Array2.h. 2003-11-19 John W. Eaton * 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&). * 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 * Makefile.in (TEMPLATE_SRC): Move MArrayN.cc here from MATRIX_SRC. 2003-11-15 John W. Eaton * Array.h (Array::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 * Makefile.in (dist): Depend on stamp-prereq. 2003-11-12 John Eaton * 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 * 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::ipermute): New function. 2003-11-11 Petter Risholm * Array.cc (Array::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 * Array.cc (Array::index2): Return value has orientation of indexed value if indexing a vector with a bool matrix. * ArrayN.h (ArrayN::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 * Array.h (Array::nil_rep): Qualify return type with typename. * mk-ops.awk: Delete elements of bool_headers array individually. 2003-11-07 John W. Eaton * Array.cc (maybe_delete_elements): Rename arg idx to ra_idx. 2003-10-31 Petter Risholm * 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 * 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 * mach-info.h (oct_mach_info): Prefix enum elements with flt_fmt_. Change all uses. 2003-10-29 Petter Risholm * 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 * Array.cc (Array::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 * dim-vector.h (dim_vector::any_zero): New function. (dim_vector::str): New default arg, sep. * Array.h (Array::numel): New function. 2003-10-27 Petter Risholm * 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 * Array.cc (Array::resize_and_fill): Allow number of dimensions to change. From Petter Risholm . * 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 * Array.cc (Array::resize_no_fill (const dim_vector&)): Allow number of dimensions to change. (Array::resize_no_fill (int, int)): Require ndims to be 0 or 2. (Array::resize_and_fill (int, int, const T&)): Likewise. (Array::resize_no_fill (int, int, int)): Require ndims to be 0 or 3. (Array::resize_and_fill (int, int, int, const T&)): Likewise. (Array::transpose): Require ndims to be 2. (Array::index2): Likewise. (Array::index (idx_vector&, idx_vector&, int, const T&)): Likewise. (Array::maybe_delete_elements_2): Likewise. (Array::maybe_delete_elements (idx_vector&, idx_vector&)): Likewise. (Array::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::resize (int, int)): New function. (MArray2::resize (int, int, const T&)): New function. * MArray.h (MArray::resize (int)): New function. (MArray::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 * Array.cc (Array::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 * 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::resize_no_fill, Array::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 * Array.cc (assign2): No error (but don't do anything either) for expressions like x([],j) = scalar. 2003-10-09 John W. Eaton * 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::get_size): Fix thinko. 2003-10-08 John W. Eaton * Array.cc (Array::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 * Array.cc (ArrayN::indexN): New definition. * Array.h (Array::indexN): Provide decl. * Array.cc (ArrayN::index (idx_vector&, int, const T&): Call indexN if more than 2 indices. (ArrayN::index (Array&, 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 * 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 * Array.h (dimensions): Now public. template (assign (Array&, const Array&, const LT&), assign1 (Array&, const Array&, const LT&), assign2 (Array&, const Array&, const LT&), assignN (Array&, const Array&, 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 . 2003-09-19 John W. Eaton * 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 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 * 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 * 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 * 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 * lo-specfun.cc (xlgamma): Require nonnegative argument. 2003-09-09 John W. Eaton * Array-d.cc: Instantiate assign functions. 2003-09-09 Petter Risholm * 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::maybe_delete_dims): New function. * ArrayN.h: Provide decl. * ArrayN.h (ArrayN::ArrayN (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 * lo-specfun.cc (xlgamma): Require nonnegative argument. 2003-09-04 Petter Risholm * ArrayN-idx.h (maybe_delete_elements): Implement function. (is_in, how_many_lgt, all_ones): New functions. 2003-09-03 John W. Eaton * Makefile.in (MATRIX_INC): Add ArrayN-inlines.h to the list. 2003-09-03 Petter Risholm * 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 * 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 * mx-base.h: Include ArrayN.h. 2003-30-07 Heine Kolltveit * ArrayN.cc (operator <<): Corrected output. 2003-07-30 John W. Eaton * ArrayN.cc (increment_index): New arg, start_dimension. 2003-07-29 Heine Kolltveit * ArrayN.cc (operator <<): Improve output readability. 2003-07-29 Petter Risholm * ArrayN.cc (ArrayN::resize (const Array&, const T&)): * ArrayN.cc (ArrayN::resize (const Array&)): Initialize old_len before changing size. 2003-07-29 John W. Eaton * Makefile.in (install-lib): Use $(INSTALL), not $(INSTALL_PROGRAM) for $(SHLLIB) files. 2003-07-25 John W. Eaton * 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 * Array2-idx.h (assign (Array2&, const Array2&, const LT&)): Pass true for resize_ok arg to freeze. * Array-idx.h (assign (Array&, const Array&, 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 * Array.h (resize_fill_value): Now a top-level template function. Accept object as argument. Change all uses. 2003-07-09 John W. Eaton * Array-flags.cc, Array-flags.h (liboctave_pcv_flag): Delete. * Array2-idx.h (Array2::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 * Array2-idx.h (Array2::index (idx_vector&, int, const T&)): Magic colon indexing always produces an object with one column. 2003-06-21 Paul Kienzle * 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 * 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 * 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 * oct-shlib.cc: Include mach-o/dyld.h, not Mach-O/dyld.h. 2003-06-16 John W. Eaton * 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 * oct-rand.cc: Use liboctave's clock layer instead of the system clock. 2003-05-14 John W. Eaton * 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 * Array-idx.h (Array::index): Fix off-by-one error. 2003-05-07 John W. Eaton * 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 * kpse.cc (dir_list_add): Ensure that directory ends with a directory separator. 2003-04-30 John W. Eaton * 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 * str-vec.cc (string_vector::append (const std::string&), string_vector::append (const string_vector&)): New methods. 2003-04-24 John W. Eaton * 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 * 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 * 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 . * 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 * dbleSVD.h (SVD::SVD, SVD::operator =): Also copy type_computed. * CmplxSVD.h (ComplexSVD::ComplexSVD, ComplexSVD::operator =): Likewise. From Quentin H. Spencer . 2003-03-03 John W. Eaton * oct-getopt.c: Include , not "getopt.h". 2003-02-21 John W. Eaton * 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 * 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 * octave.test/arith/prod-4.m, octave.test/arith/sum-4.m: 2003-02-14 John W. Eaton * Array2-idx.h (Array2::index): Fix thinko. Additional compatibility fix. 2003-02-13 Arno Klaassen * Array2-idx.h, Array2.cc, Array2.h, Array3.cc, Array3.h, ArrayN.cc, ArrayN.h, DiagArray2.cc, DiagArray2.h, MDiagArray2.h: Sprinkle with Array:: as necessary for gcc 3.4. 2003-02-13 John W. Eaton * Array2-idx.h (Array2::index (idx_vector&, int, const T&)): Compatibility fix. 2003-02-10 John W. Eaton * 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 * lo-mappers.cc (imag (double)): Return 0.0 for all args, even NaN. 2003-01-28 John W. Eaton * 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 * oct-rand.h, oct-rand.cc: New files. * Makefile.in: Add them to the appropriate lists. 2003-01-23 John W. Eaton * Array2-idx.h (Array2::index): Fix off-by-one error. 2003-01-16 Mumit Khan * oct-syscalls.cc: Include signal.h. 2003-01-10 John W. Eaton * oct-syscalls.cc (octave_syscalls::kill): New function. * oct-syscalls.h: Provide decl. 2003-01-06 John W. Eaton * dMatrix.cc (Matrix::read): Set size and return immediately if there is nothing to read. 2003-01-05 John W. Eaton * lo-cutils.c: Define _XOPEN_SOURCE. 2003-01-04 John W. Eaton * 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 * 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::assign): If assignment conforms but the RHS and index are empty matrices, don't do anything. 2002-12-26 John W. Eaton * 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 * 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 * 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 * 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 * Matrix.h: Include mx-ops.h too. * mx-ops.h: New file. 2002-11-20 John W. Eaton * 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 * oct-shlib.cc (octave_dlopen_shlib::open): Use RTLD_GLOBAL too. From Remy Bruno 2002-11-14 John W. Eaton * 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 * lo-ieee.cc (octave_ieee_init): Check defined (__osf__) instead of ! defined (linux). 2002-11-09 Per Persson * oct-shlib.cc (octave_dyld_shlib): New class. (make_shlib): Instantiate octave_dyld_shlib. 2002-11-06 John W. Eaton * CMatrix.cc, dMatrix.cc: Sprinkle with OCTAVE_QUIT. * ODESSA.cc (odessa_f, odessa_j, odessa_b): Abort on error. * Array.h: Include here. 2002-11-01 John W. Eaton * 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::get_size): #define MALLOC_OVERHEAD to avoid OS X linker bug. * ArrayN.cc (ArrayN::get_size): Likewise. 2002-10-31 John W. Eaton * 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 * Makefile.in (LINK_DEPS): Include $(FLIBS) here too. 2002-10-29 John W. Eaton * 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 * 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 * 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 * 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 * oct-shlib.cc (octave_w32_shlib): New class to support Windows. 2002-10-16 John W. Eaton * Makefile.in (install-lib): Don't bother with versions for $(SHLBIN) files. 2002-10-16 Paul Kienzle * Makefile.in (LIB_DEPS): Include $(LIBS). 2002-10-14 John W. Eaton * 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 * 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 * 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 * 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 * lo-cutils.c: On non-Posix Windows systems, include winsock.h. 2002-10-07 Paul Kienzle * oct-env.cc (octave_env::do_absolute_pathname): Recognize absolute path names under MinGW as well. 2002-10-07 John W. Eaton * oct-env.cc: Include too. 2002-10-04 John W. Eaton * 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 * oct-time.cc (octave_time::stamp): Better resolution for Windows systems. 2002-10-02 John W. Eaton * dMatrix.cc (Matrix::read): Clean up error handling logic. 2002-09-30 John W. Eaton * file-ops.cc (file_ops::mkdir): Handle one-arg mkdir here. * lo-specfun.cc (acosh): Call xdacosh, not dacosh. 2002-09-27 Per Persson * oct-group.cc (octave_group::octave_group): Dont' forget to set gr_gid too. 2002-09-27 John W. Eaton * 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 * 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 * 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 * 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 * 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 * Makefile.in (INCLUDES): Add lo-sstream.h to the list. 2002-08-17 Mumit Khan * CmplxCHOL.h, CollocWt.h, cmd-edit.h, oct-shlib.h: Don't use qualified names. 2002-08-17 John W. Eaton * 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 . * oct-shlib.cc: Likewise. * lo-sstream.h: New file. 2002-08-16 John W. Eaton * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * CMatrix.cc (ComplexMatrix::ComplexMatrix (const boolMatrix&)): Get rows and columns right in loop. (ComplexMatrix::ComplexMatrix (const charMatrix&)): Likewise. 2002-07-19 John W. Eaton * 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 * 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 * 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 * 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 * NLEqn.cc (NLEqn::error_message): New function. * NLEqn.h (NLEqn::solution_state, NLEqn::solution_ok): New functions. 2002-07-01 John W. Eaton * lo-utils.cc (octave_fgetl): New function. * cmd-edit.cc (do_readline): Use it instead of octave_fgets. 2002-05-24 John W. Eaton * 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 * 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. Change all uses. (LSODE_OPTIONS::absolute_tolerance): Return Array, not double. (LSODE_OPTIONS::set_absolute_tolerance (const Array&)): New function. * Array.h (Array::fortran_vec): New const version. 2002-05-22 John W. Eaton * 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 * DASPK.cc (ddaspk_psol): Return value. * oct-rl-edit.c: Use /* ... */ to comment. 2002-05-20 John W. Eaton * 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 * Array.h (Array::resize_fill_value): Return default initialized object. 2002-05-14 John W. Eaton * 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::index): New args, resize_ok and resize_fill_value. * Array2-idx.h (Array2::index): Likewise. * ArrayN-idx.h (ArrayN::index): Likewise. * Array2.cc (Array::print_info): New function. * Array2.h: Provide decl. * Array.cc (Array::print_info): New function. * Array.h: Provide decl. 2002-05-03 John W. Eaton * 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::resize_fill_value (void)): New static function. (assign (Array&, const Array&)): Use it. * Array2.h (assign (Array2&, const Array2&)): Use it. * ArrayN.h (assign (ArrayN&, const ArrayN&)): Use it. 2002-05-02 Cai Jianming * Array3.h (Array3::checkelem): Improve error message. * ArrayN.h (ArrayN::range_error): Likewise. * DiagArray2.cc (DiagArray2::checkelem): Likewise. * DiagArray2.cc (DiagArray2::operator ()): Likewise. 2002-04-30 John W. Eaton * DASSL.h (DASSL_options::init): Undo previous change. (DASSL_options::set_absolute_tolerance): Likewise. 2002-04-27 John W. Eaton * DASPK.h, DASPK.cc: New files. * Makefile.in: Add them to the appropriate lists. 2002-04-23 John W. Eaton * Array2-idx.h (Array2::index (idx_vector&, idx_vector&) const): Simplify indexing when one or both of the indices are empty. 2002-04-11 John W. Eaton * 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 * 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 * 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 * 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 * lo-mappers.cc (arg): Simply call atan2 (0.0, x). 2001-12-17 John W. Eaton * data-conv.cc (LS_DO_READ): Don't do anything unless len > 0. (LS_DO_WRITE): Likewise. 2001-11-16 John W. Eaton * 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 * Range.cc (Range::nelem_internal): Special case ranges that must have zero elements. 2001-11-06 John W. Eaton * 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 * DASSL.cc (ddassl_f): Handle IRES returned from user supplied function. * DAEFunc.h (DAERHSFunc): Add IRES to prototype. 2001-06-07 John W. Eaton * 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" . * CMatrix.cc (ComplexMatrix::inverse, ComplexMatrix::solve, ComplexMatrix::determinant, ComplexMatrix::inverse): Likewise. 2001-05-31 John W. Eaton * 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&, const ArrayN&, const LT&)): New arg, resize_fill_value. * ArrayN.h: Provide declaration. (assign (ArrayN&, const ArrayN&): Define here by calling three arg version. * Array3.cc (assign (Array3&, const Array3&, const LT&)): New arg, resize_fill_value. * Array3.h: Provide declaration. (assign (Array3&, const Array3&): Define here by calling three arg version. * Array2.cc (assign (Array2&, const Array2&, const LT&)): New arg, resize_fill_value. * Array2.h: Provide declaration. (assign (Array2&, const Array2&): Define here by calling three arg version. * Array.cc (assign (Array&, const Array&, const LT&)): New arg, resize_fill_value. * Array.h: Provide declaration. (assign (Array&, const Array&): Define here by calling three arg version. 2001-05-17 John W. Eaton * 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 * Array2.h (Array2::operator = (const Array2&)): Don't check for rep != a.rep. 2001-05-02 Mumit Khan * 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 * Makefile.in (install-lib): Don't use mk-libdir-link. (install-inc): Don't use mk-includedir-link. 2001-02-28 John W. Eaton * 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 * lo-cutils.c: Don't declare strptime. (oct_strptime): Cast return type of strptime to char*. 2001-02-06 John W. Eaton * 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 * lo-mappers.h (tanh (const Complex&)): Only declare if not CXX_ISO_COMPLIANT_LIBRARY. 2001-02-05 Mumit Khan * 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::index): Rename idx to arr_idx. * ArrayN.cc (ArrayN::index, ArrayN::compute_index, ArrayN::get_size, ArrayN::range_error, ArrayN::range_error, increment_index, ArrayN::resize, ArrayN::insert): Likewise. 2001-02-05 John W. Eaton * 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 * 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 * lo-cutils.c: Don't delcare strptime. 2001-01-02 John W. Eaton * CMatrix.cc (operator * (const ComplexMatrix&, const ComplexMatrix&): Return correct size result for empty matrix case. 2000-12-15 John W. Eaton * 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 * 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 * 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 * Array-idx.h (assign): When resizing, cast fill value to LT. * Array2-idx.h (MAYBE_RESIZE_LHS): Likewise. 2000-11-28 John W. Eaton * MArray-defs.h: Protect against multiple inclusion. 2000-11-20 John W. Eaton * 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 * 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 * Array2.cc (Array2::transpose): Avoid copy for empty matrices and vectors. Use xelem for faster access to elements when copying. 2000-10-18 John W. Eaton * CMatrix.cc (ComplexMatrix::cumsum, ComplexMatrix::cumprod): Correct indexing for operation across rows. * dMatrix.cc (Matrix::cumsum, Matrix::cumprod): Likewise. 2000-10-12 Paul Kienzle * Array2-idx.h (Array2::index (idx_vector&)): Avoid copying elements if arg is a colon. 2000-10-12 Cai Jianming * 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 * Array2-idx.h (Array2::index (idx_vector&)): Correctly set size if Array::index returns an empty array. 2000-08-02 John W. Eaton * file-ops.cc (file_ops::link, file_ops::symlink, file_ops::readlink): New functions. 2000-08-01 John W. Eaton * Array2-idx.h (Array2::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 * 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 * 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 * dMatrix.h (read_int): Provide declaration. 2000-06-29 James R. Van Zandt * 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 * boolMatrix.h: Declare MM_CMP_OPS here. * boolMatrix.cc: Define them here. 2000-06-08 John W. Eaton * 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 * oct-rl-edit.c (octave_rl_clear_screen): Call _rl_clear_screen instead of rl_clear_screen. 2000-05-11 John W. Eaton * Array-d.cc: Instantiate ArrayN 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 * Array.cc (Array::operator =): Don't set max_indices to 1 here. 2000-03-23 John W. Eaton * lo-sysdep.h: octave_chdir returns int, not bool. 2000-03-21 John W. Eaton * Makefile.in (liboctave.$(SHLEXT)): Delete target before rebuilding. 2000-03-21 Ben Sapp : * Makefile.in (liboctave.$(LIBEXT)): New target. (libraries): Depend only on library targets, not archive members. 2000-03-17 John W. Eaton * 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 * oct-time.cc: Include and , if available. 2000-02-18 John W. Eaton * oct-rl-hist.c (octave_history_list): Do something when not printing line numbers. Fix reallocation of retval. 2000-02-11 John W. Eaton * 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 * CRowVector.cc, CRowVector.h, CColVector.cc, CColVector.h: Delete declarations and definitions of mixed-type vector-vector ops. 2000-02-07 John W. Eaton * 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 * 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 * 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 * 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 * 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::resize): Add Array:: qulaifier to references to ArrayRep. 2000-01-31 John W. Eaton * 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 * oct-time.cc: Declare strptime extern "C". 2000-01-29 John W. Eaton * oct-time.cc [! HAVE_STRPTIME]: Provide declaration. 2000-01-28 John W. Eaton * Array2.h (Array2::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 * Array2-idx.h (assign (Array2& lhs, const Array2& 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::index (idx_vector& idx) const): Likewise, for A(idx). 2000-01-25 John W. Eaton * 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::get_size): New function. (Array2::Array2, Array2::resize): Use it. 2000-01-23 John W. Eaton * Array2-idx.h (Array2::maybe_delete_elements (idx_vector&)): New function. (assign (Array2& lhs, const Array2& rhs)): Use it when indexing with one arg instead of faking a second one. (Array2::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 * strptime.c: Only include langinfo.h if _LIBC is defined. 2000-01-21 A. Scottedward Hodel * 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 * 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 * MArray.h (MArray &)): New constructor. 2000-01-10 John W. Eaton * pathsearch.cc (dir_path::all_directories): Avoid dereferencing NULL directory list returned from kpse_element_dirs 1999-12-08 John W. Eaton * 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 * 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 * dMatrix.cc (is_symmetric): Move here from Array2.cc. * Array2.h (is_symmetric): Delete declaration. 1999-11-10 John W. Eaton * oct-env.cc (do_get_user_name): Reverse sense of test. 1999-11-07 John W. Eaton * oct-time.cc (Fstrftime): Undo previous change. (octave_time::octave_time (const octave_base_tm&)): Likewise. 1999-11-03 John W. Eaton * 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 * DiagArray2.cc (DiagArray2::operator () (int, int)): On errors, simply return `T ()'. (DiagArray2::checkelem (int, int)): Likewise. 1999-11-02 A. Scottedward Hodel * dMatrix.cc (Matrix::expm): Do balancing here instead of using AEPBALANCE class. * CMatrix.cc (ComplexMatrix::expm): Likewise. 1999-10-29 John W. Eaton * oct-shlib.cc, oct-shlib.h: New files. * Makefile.in (INCLUDES, SOURCES): Add them to the lists. 1999-10-26 John W. Eaton * 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 * 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 * oct-time.cc: Include . 1999-10-13 John W. Eaton * 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 * 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 * 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 * DAEFunc.h: Remove useless preprocessor conditional. Thu Jul 15 14:10:33 1999 John W. Eaton * 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 * 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 * 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 * MArray-defs.h (DO_VV_OP2): Fix macro definition to use arg. Wed May 5 20:06:10 1999 John W. Eaton * Array2-idx.h (Array2index (idx_vector& idx)): Always return a column vector for A(:), for compatibility with Matlab. Fri Apr 23 11:52:23 1999 John W. Eaton * 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 * Makefile.in (libraries): Use the libfoo.a(objects) method of creating static libs. Thu Mar 4 02:17:04 1999 James Macnicol * 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 * 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 * 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 * statdefs.h: Only define mode_t if not already defined. Tue Nov 24 17:24:52 1998 john * lo-specfun.cc (airy, biry): Set imaginary part of result to zero when appropriate. Mon Nov 23 09:57:05 1998 John W. Eaton * cmd-edit.cc (gnu_readline::gnu_readline): Set terminal name before calling rl_initialize. Tue Nov 17 23:47:24 1998 John W. Eaton * 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 * 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 * 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 * 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 * 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 * 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 * boolMatrix.cc (boolMatrix::operator !): New function. Fri Oct 23 21:46:20 1998 John W. Eaton * 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 * chMatrix.cc (charMatrix::extract): New function. (charMatrix::charMatrix (char c)): New constructor. Tue Oct 13 22:11:08 1998 John W. Eaton * 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 * 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 * 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 * dMatrix.cc (Matrix::read): Skip after reading, not before. From: Dr.-Ing. Torsten Finke . Wed Sep 2 09:50:21 1998 John W. Eaton * 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 * Array2-idx.h (assign (Array2& lhs, const Array2& rhs)): Handle x(i) = scalar for do_fortran_indexing == 1. Thu Jul 30 00:34:10 1998 John W. Eaton * 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 * EIG.cc (EIG::init): Move invariant code outside loop. Thu Jun 18 11:08:23 1998 John W. Eaton * 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 * 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 * 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 * 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 * 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 * 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 * 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 * lo-specfun.cc (gammainc): Reorder args in call to xdgami. Thu Feb 19 01:16:38 1998 John W. Eaton * 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 * 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 * 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 * 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 * chMatrix.cc (charMatrix::all, charMatrix::any): New functions. Tue Jan 20 16:30:00 1998 John W. Eaton * 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 * 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 * 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 * lo-ieee.cc (octave_ieee_init): Check for linux before __alpha__. Sun Nov 30 14:59:12 1997 John W. Eaton * 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 * lo-sysdep.cc (octave_getcwd): Prefer getcwd over getwd. Wed Nov 19 02:30:04 1997 Mumit Khan 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 * CMatrix.cc (sumsq): Compute equivalent of sum (x .* conj (x)) Thu Oct 2 17:13:02 1997 Mumit Khan * CRowVector.cc (linspace): Removed attempt for implicit conversion to complex(int) instead of complex(double). * lo-mappers.cc (atanh): Ditto. Thu Jul 31 22:13:54 1997 John W. Eaton * idx-vector.cc (IDX_VEC_REP::sort): New function. * idx-vector.h (idx_vector::sort): Ditto. * Array2-idx.h (Array2::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 * 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 * file-ops.cc (tilde_expand_word): Fix off-by-one error. Wed Jul 9 19:40:23 1997 John W. Eaton * 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 * 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 * lo-mappers.cc (acos (const Complex&)): Select branch that is compatible with Matlab. Tue Jun 10 10:58:05 1997 John W. Eaton * Array2-idx.h: Correctly handle empty matrices indexed by a single colon. Fri Jun 6 04:27:40 1997 John W. Eaton * 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 * 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 * pathsearch.h, pathsearch.cc (dir_pat::set_program_name): New static function. Mon Jun 2 12:44:14 1997 John W. Eaton * lo-mappers.cc (fix): Use floor and ceil instead of casting to int. Thu May 22 16:20:43 1997 John W. Eaton * 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 * 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 * cmd-edit.cc (command_editor::increment_current_command_number): New static function. Mon May 12 02:14:13 1997 John W. Eaton * 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 * 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 * 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 * 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 * 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 * pathlen.h: New file, from ../src. Tue Apr 29 04:39:01 1997 John W. Eaton * Array2-idx.h (Array2::maybe_delete_elements): Prevent out-of-bounds indexing of the index array. * Array-idx.h (Array::maybe_delete_elements): Likewise. Fri Mar 28 15:37:09 1997 John W. Eaton * 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 * 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 * 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 * 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 * Array2.cc (is_symmetric): New function. * Array2.h (is_square): New function. Wed Mar 12 16:59:49 1997 John W. Eaton * Makefile.in (install-strip): New target. Mon Mar 10 22:34:22 1997 John W. Eaton * 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 * 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:: 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 (val)' instead of old C-style `(T) val' casts. Thu Mar 6 20:20:01 1997 John W. Eaton * 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 * Version 2.0.5 released. Fri Feb 28 20:11:23 1997 John W. Eaton * 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 * 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 * Array2-idx.h (Array2::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 * Version 2.0.4 released. Wed Feb 19 09:42:30 1997 John W. Eaton * lo-ieee.cc: D'oh, it's `extern "C"', not `#extern "C"'. Tue Feb 18 09:22:04 1997 John W. Eaton * Version 2.0.3 released. Fri Feb 14 16:23:47 1997 John W. Eaton * Makefile.in (bin-dist): Don't write empty strings to LIBRARIES. Thu Feb 13 14:35:19 1997 John W. Eaton * 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::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 * lo-ieee.cc: Declare quiet_nan() and infinity(). Mon Feb 10 01:17:45 1997 John W. Eaton * 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 * idx-vector.h (idx_vector::orig_empty): New function. * Array2-idx.h (Array2::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 * 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 * f2c-main.c: Change C++-style comments to C-style comments. Tue Jan 28 10:46:02 1997 John W. Eaton * Makefile.in (install-inc): Create a relative symbolic link. Mon Jan 27 15:52:27 1997 John W. Eaton * Version 2.0.2 released. Sat Jan 25 22:36:21 1997 John W. Eaton * Makefile.in (bin-dist): New target. Wed Jan 22 16:18:53 1997 John W. Eaton * 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 * 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 * Version 2.0.1 released. Sun Jan 5 12:07:45 1997 John W. Eaton * 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 * Range.cc (operator -): New function. * lo-ieee.cc: Include on all systems that have it. Fri Dec 13 02:01:32 1996 John W. Eaton * 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 * Version 2.0 released. Fri Dec 6 14:41:15 1996 John W. Eaton * 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 * 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 * 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 * 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 * 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 * 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 * lo-ieee.h: [SCO]: Declare isinf and isnan. Thu Nov 14 00:06:53 1996 John W. Eaton * Version 1.92. Wed Nov 13 11:19:22 1996 John W. Eaton * 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 * 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 * 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 * 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 * Version 1.91. * Array3.cc (Array3::resize): Make it work. Wed Nov 6 22:44:33 1996 John W. Eaton * 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 * 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 * 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 * Version 1.90. * Makefile.in (DISTFILES): Add ChangeLog. * cmd-hist.cc: Only include fcntl.h if HAVE_FCNTL_H. * Matrix-ext.cc: Include , not . * 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::checkelem): Return T() for bogus value, since that is now accepatble syntax, even for built-in types. * Array2.h (T Array2::checkelem): Likewise Sat Oct 26 23:37:34 1996 John W. Eaton * file-ops.cc (mkfifo) [! HAVE_MKFIFO]: Just print an error message and return -1. Fri Oct 25 01:24:51 1996 John W. Eaton * 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 * Quad.h (Quad): Define virtual destructor. Tue Oct 15 11:34:48 1996 John W. Eaton * CMatrix.cc (ComplexMatrix::all_elements_are_real): new function. Sun Oct 13 11:19:00 1996 John W. Eaton * 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 * 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::index): New function. Don't call clear_index() here. (Array::value): Call it, do call clear_index() here. * Array2-idx.h (Array::value, Array::index): Likewise, for one and two arg index functions. Tue Sep 17 21:21:16 1996 John W. Eaton * DAEFunc.h: Delete #pragma interface since there is no longer a separate implementation file. Tue Aug 20 17:38:46 1996 John W. Eaton * 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 * 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 * QPSOL.cc (QPSOL::do_minimize): Insert linear constraint bounds starting at n, not 0. Sat Jul 27 02:54:44 1996 John W. Eaton * 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 * 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 * 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 * 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 * 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 * Array3.cc (checkelem): Fix typo in call to Array2::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 * Quad.cc: Include lo-error.h here too. Mon May 27 12:41:07 1996 John W. Eaton * file-ops.h: Include sys/types.h here. Wed May 22 00:20:24 1996 John W. Eaton * 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 * 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 * Makefile.in (install-inc): Install in octincludedir, not includedir. Sun May 12 03:40:01 1996 John W. Eaton * 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 * 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 * Array2.cc (Array2::range_error): New functions. * Array.h (class Array): elem() and operator() are now equivalent, and do bounds checking by default. * Array2.cc (class Array2): Likewise. Sat Apr 6 21:26:11 1996 John W. Eaton * 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 * NPSOL.h (NPSOL_options::set_option (const char *, int)): New function. * Array.h, Array.cc (Array::range_error ()): New functions. * Array.h (Array::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& 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 * Array.h (HEAVYWEIGHT_INDEXING): Do define this here if it is not already defined. Fri Mar 22 23:53:58 1996 John W. Eaton * pathsearch.cc: Include config.h. Wed Mar 20 04:54:03 1996 John W. Eaton * Array2-idx.h (assign (Array2&, const Array2&)): 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 * lo-error.h: Make comments C friendly. Sun Mar 3 14:04:32 1996 John W. Eaton * 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 * 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 * 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 * Makefile.in (install): If $(includedir) ends in version string, make link to name that does not include version info. * lo-ieee.cc: Include here. Fri Feb 16 20:52:34 1996 John W. Eaton * 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 * 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 * dMatrix.cc (Qzval): New function. Tue Feb 13 12:41:54 1996 John W. Eaton * 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 * 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 * 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 * 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 * cmd-hist.cc (command_history::ignore_entries): Delete default argument value. Mon Feb 5 12:07:50 1996 John W. Eaton * 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 * 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 * 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 * Makefile.in (liboctave.a): Depend on $(PICOBJ). Wed Jan 31 05:29:25 1996 John W. Eaton * 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 * 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 * cmd-hist.h, cmd-hist.cc: New files. * Makefile.in: Add them to lists. Thu Jan 25 20:36:05 1996 John W. Eaton * oct-glob.h, oct-glob.cc: New files. * Makefile.in: Add them to lists. Wed Jan 24 01:55:08 1996 John W. Eaton * 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 * 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 * 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 * Array.h: Nest ArrayRep class inside Array class. Refer to ArrayRep, not ArrayRep. 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. * 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 * chMatrix.cc (charMatrix::charMatrix (const string&)): New constructor. Tue Jan 9 04:44:56 1996 John W. Eaton * 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 * 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 * 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 * Array.h (class DiagArray): Enable nested Proxy class for all platforms. * Array.cc (Array::operator = (const Array&)): If rep == a.rep, don't mess with count. * Array.h (Array2& operator = (const Array2&)): Likewise, don't do anything if reps are the same. (Array3& operator = (const Array3&) * Array.h (ArrayRep::operator = (const ArrayRep&)): Declare private with no definition to prevent misuse. * Array.cc (Array2::insert (const Array2&, 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::ArrayRep (void)): Set count to 1 here. (ArrayRep::ArrayRep (T *, int)): Likewise. * Array.cc (ArrayRep::ArrayRep (const ArrayRep&)): Don't copy count. Set it to 1. (ArrayRep::ArrayRep (int)): Set count to 1 here. * Array.h (Array::Array (T *, int)): After constructing rep, don't set rep->count to 1 here (now handled by ArrayRep constructors). (Array::Array (void)): Ditto. (Array::Array (int)): Ditto. (Array::T& elem (int)): Ditto. * Array-idx.h (Array::maybe_delete_elements (idx_vector&)): Ditto. (Array2::maybe_delete_elements (idx_vector&, idx_vector&)): Ditto. * Array.cc: (Array::Array (int, const T&)): Ditto. (Array::resize (int)): Ditto. (Array::resize (int, const T&)) :Ditto. (Array::fortran_vec (void)): Ditto. (Array2::resize (int, int)): Ditto. (Array2::resize (int, int, const T&)): Ditto. (DiagArray::resize (int, int)): Ditto. (DiagArray::resize (int, int, const T&)): Ditto. Sun Dec 31 21:23:26 1995 John W. Eaton * 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 * Makefile.in: Handle shared libraries. Thu Dec 28 14:18:34 1995 John W. Eaton * 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 * Makefile.in (stamp-picdir): New target. (all): Depend on it. Sun Dec 24 03:10:41 1995 John W. Eaton * Makefile.in (INCLUDES): Remove QLD.h. (SOURCES): Remove QLD.cc. Wed Dec 20 00:43:46 1995 John W. Eaton * 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 . * 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 * 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 * 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 * 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 * Array-idx.h (assign (Array2&, const Array2&): Don't fail if index is a colon and resizing is maybe needed. Tue Oct 31 17:40:01 1995 John Eaton * 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&, Array2&): 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 * 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 * Array.cc (Array2::insert (Array2&, int, int): New function. * CMatrix.cc (ComplexMatrix::insert (ComplexMatrix&, int, int): Simply call Array2 version. * dMatrix.cc (Matrix::insert (Matrix&, int, int): Similarly, just call Array2 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 * Range.cc (nelem_internal): Use tfloor here, not round. Sun Oct 8 18:21:02 1995 John Eaton * 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 * 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 * 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 * 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 * 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 * dMatrix.cc: Include . * 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 * 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 * 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 * 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 * 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 * 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 * 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 * mx-kludge.cc: Abuse CPP even more. Mon Apr 3 21:05:30 1995 John Eaton * 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 * 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.