Giter VIP home page Giter VIP logo

lela's Introduction

Library for Exact Linear Algebra (LELA)
=======================================

LELA is a C++ template-library for computations in (normally) exact
linear algebra. It is flexible in two respects:
  - the choice of ring over which to compute
  - the choice of vector- and matrix-representation, i.e. dense vs. sparse

LELA uses C++ templates to provide the best feasible performance for
each of the above choices. It also includes wrappers for some other
libraries, such as M4RI (see http://m4ri.sagemath.org/) and CBLAS to
make use of highly specialised implementations available in certain
cases. All of these dependencies are optional; if the libraries are
not present, LELA will fall back to its own routines at a cost of some
performance.

An introductory tutorial on the use of LELA may be found in the file
doc/tutorial.html

For questions, please make use of our mailing-list at
[email protected]

LELA was originally derived from LinBox (see http://www.linalg.org/).

Some key differences between LELA and LinBox are the following:

 - LELA does not have any built-in facilities for black-box linear
   algebra.

 - LELA uses a completely new system for vector- and
   matrix-arithmetic. There is a single BLAS-like interface which
   handles all cases and the underlying mechanism is designed to be
   versatile and extensible. LinBox in contrast has two separate
   interfaces (MatrixDomain and VectorDomain vs. fflas) for matrix-
   and vector-arithmetic, each one with its own advantages and
   limitations.

 - LELA currently does not implement many of the high-level algorithms
   which are present in LinBox, particularly for calculations over the
   integers.

 - LELA has far fewer vector-representation-types over general rings
   than LinBox: only one for sparse vectors vs. three.

 - LELA has far better support for GF2 than LinBox, including fast
   word-based operations, a wrapper for M4RI, and a new "hybrid"
   vector-representation-type which is well suited to elimination
   problems with sparse matrices over GF(2).

 - LELA defines an interface for rings while LinBox defines an
   interface for fields. LELA-rings do not assume that all non-zero
   entries are invertible or that all nonzero elements divide all
   others. Instead the ring-interface reports whether inversion
   respectively division was successful.

 - Unlike fflas, LELA does not currently automatically convert
   matrices with an integral representation to a floating point
   representation before multiplying them. To take advantage of fast
   floating-point operations, the user must use such a representation
   throughout.

lela's People

Contributors

ederc avatar ffischer avatar hovinen avatar malb avatar martani avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

lela's Issues

lela-0.1.0/_build/tests/../../lela/blas/level1-cblas.h:190: undefined reference to `cblas_daxpy'

make distcheck DISTCHECK_CONFIGURE_FLAGS="--with-libpolys=/GITHUB/w/LINBOX --without-blas"

fails for me with the following:

test-blas-cblas-module.o: In function LELA::DenseMatrix<float>& LELA::BLAS3::_gemm<LELA::TypeWrapperRing<float>, LELA::BLASModule<float>::Tag>::gemm_impl<LELA::BLASModule<float>, LELA::DenseMatrix<float>, LELA::DenseMatrix<float>, LELA::DenseMatrix<float> >(LELA::TypeWrapperRing<float> const&, LELA::BLASModule<float>&, float, LELA::DenseMatrix<float> const&, LELA::DenseMatrix<float> const&, float, LELA::DenseMatrix<float>&, LELA::MatrixStorageTypes::Dense, LELA::MatrixStorageTypes::Dense, LELA::MatrixStorageTypes::Dense)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level3-cblas.h:52: undefined reference tocblas_sgemm'
test-blas-cblas-module.o: In function LELA::DenseMatrix<float>& LELA::BLAS3::_gemm<LELA::TypeWrapperRing<float>, LELA::BLASModule<float>::Tag>::gemm_impl<LELA::BLASModule<float>, LELA::TransposeMatrix<LELA::DenseMatrix<float>, LELA::MatrixIteratorTypes::RowCol>, LELA::DenseMatrix<float>, LELA::DenseMatrix<float> >(LELA::TypeWrapperRing<float> const&, LELA::BLASModule<float>&, float, LELA::TransposeMatrix<LELA::DenseMatrix<float>, LELA::MatrixIteratorTypes::RowCol> const&, LELA::DenseMatrix<float> const&, float, LELA::DenseMatrix<float>&, LELA::MatrixStorageTypes::DenseTranspose, LELA::MatrixStorageTypes::Dense, LELA::MatrixStorageTypes::Dense)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level3-cblas.h:67: undefined reference tocblas_sgemm'
test-blas-cblas-module.o: In function LELA::DenseMatrix<float>& LELA::BLAS3::_gemm<LELA::TypeWrapperRing<float>, LELA::BLASModule<float>::Tag>::gemm_impl<LELA::BLASModule<float>, LELA::TransposeMatrix<LELA::DenseMatrix<float>, LELA::MatrixIteratorTypes::RowCol>, LELA::TransposeMatrix<LELA::DenseMatrix<float>, LELA::MatrixIteratorTypes::RowCol>, LELA::DenseMatrix<float> >(LELA::TypeWrapperRing<float> const&, LELA::BLASModule<float>&, float, LELA::TransposeMatrix<LELA::DenseMatrix<float>, LELA::MatrixIteratorTypes::RowCol> const&, LELA::TransposeMatrix<LELA::DenseMatrix<float>, LELA::MatrixIteratorTypes::RowCol> const&, float, LELA::DenseMatrix<float>&, LELA::MatrixStorageTypes::DenseTranspose, LELA::MatrixStorageTypes::DenseTranspose, LELA::MatrixStorageTypes::Dense)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level3-cblas.h:97: undefined reference tocblas_sgemm'
test-blas-cblas-module.o: In function LELA::DenseMatrix<float>& LELA::BLAS3::_gemm<LELA::TypeWrapperRing<float>, LELA::BLASModule<float>::Tag>::gemm_impl<LELA::BLASModule<float>, LELA::DenseMatrix<float>, LELA::TransposeMatrix<LELA::DenseMatrix<float>, LELA::MatrixIteratorTypes::RowCol>, LELA::DenseMatrix<float> >(LELA::TypeWrapperRing<float> const&, LELA::BLASModule<float>&, float, LELA::DenseMatrix<float> const&, LELA::TransposeMatrix<LELA::DenseMatrix<float>, LELA::MatrixIteratorTypes::RowCol> const&, float, LELA::DenseMatrix<float>&, LELA::MatrixStorageTypes::Dense, LELA::MatrixStorageTypes::DenseTranspose, LELA::MatrixStorageTypes::Dense)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level3-cblas.h:82: undefined reference tocblas_sgemm'
test-blas-cblas-module.o: In function LELA::DenseMatrix<double>& LELA::BLAS3::_gemm<LELA::TypeWrapperRing<double>, LELA::BLASModule<double>::Tag>::gemm_impl<LELA::BLASModule<double>, LELA::DenseMatrix<double>, LELA::DenseMatrix<double>, LELA::DenseMatrix<double> >(LELA::TypeWrapperRing<double> const&, LELA::BLASModule<double>&, double, LELA::DenseMatrix<double> const&, LELA::DenseMatrix<double> const&, double, LELA::DenseMatrix<double>&, LELA::MatrixStorageTypes::Dense, LELA::MatrixStorageTypes::Dense, LELA::MatrixStorageTypes::Dense)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level3-cblas.h:203: undefined reference tocblas_dgemm'
test-blas-cblas-module.o: In function LELA::DenseMatrix<double>& LELA::BLAS3::_gemm<LELA::TypeWrapperRing<double>, LELA::BLASModule<double>::Tag>::gemm_impl<LELA::BLASModule<double>, LELA::TransposeMatrix<LELA::DenseMatrix<double>, LELA::MatrixIteratorTypes::RowCol>, LELA::DenseMatrix<double>, LELA::DenseMatrix<double> >(LELA::TypeWrapperRing<double> const&, LELA::BLASModule<double>&, double, LELA::TransposeMatrix<LELA::DenseMatrix<double>, LELA::MatrixIteratorTypes::RowCol> const&, LELA::DenseMatrix<double> const&, double, LELA::DenseMatrix<double>&, LELA::MatrixStorageTypes::DenseTranspose, LELA::MatrixStorageTypes::Dense, LELA::MatrixStorageTypes::Dense)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level3-cblas.h:215: undefined reference tocblas_dgemm'
test-blas-cblas-module.o: In function LELA::DenseMatrix<double>& LELA::BLAS3::_gemm<LELA::TypeWrapperRing<double>, LELA::BLASModule<double>::Tag>::gemm_impl<LELA::BLASModule<double>, LELA::TransposeMatrix<LELA::DenseMatrix<double>, LELA::MatrixIteratorTypes::RowCol>, LELA::TransposeMatrix<LELA::DenseMatrix<double>, LELA::MatrixIteratorTypes::RowCol>, LELA::DenseMatrix<double> >(LELA::TypeWrapperRing<double> const&, LELA::BLASModule<double>&, double, LELA::TransposeMatrix<LELA::DenseMatrix<double>, LELA::MatrixIteratorTypes::RowCol> const&, LELA::TransposeMatrix<LELA::DenseMatrix<double>, LELA::MatrixIteratorTypes::RowCol> const&, double, LELA::DenseMatrix<double>&, LELA::MatrixStorageTypes::DenseTranspose, LELA::MatrixStorageTypes::DenseTranspose, LELA::MatrixStorageTypes::Dense)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level3-cblas.h:239: undefined reference tocblas_dgemm'
test-blas-cblas-module.o: In function LELA::DenseMatrix<double>& LELA::BLAS3::_gemm<LELA::TypeWrapperRing<double>, LELA::BLASModule<double>::Tag>::gemm_impl<LELA::BLASModule<double>, LELA::DenseMatrix<double>, LELA::TransposeMatrix<LELA::DenseMatrix<double>, LELA::MatrixIteratorTypes::RowCol>, LELA::DenseMatrix<double> >(LELA::TypeWrapperRing<double> const&, LELA::BLASModule<double>&, double, LELA::DenseMatrix<double> const&, LELA::TransposeMatrix<LELA::DenseMatrix<double>, LELA::MatrixIteratorTypes::RowCol> const&, double, LELA::DenseMatrix<double>&, LELA::MatrixStorageTypes::Dense, LELA::MatrixStorageTypes::DenseTranspose, LELA::MatrixStorageTypes::Dense)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level3-cblas.h:227: undefined reference tocblas_dgemm'
test-blas-cblas-module.o: In function LELA::Subvector<__gnu_cxx::__normal_iterator<float*, std::vector<float, std::allocator<float> > >, __gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > >& LELA::BLAS1::_axpy<LELA::TypeWrapperRing<float>, LELA::BLASModule<float>::Tag>::axpy_impl<LELA::BLASModule<float>, LELA::Subvector<__gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > >, __gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > >, LELA::Subvector<__gnu_cxx::__normal_iterator<float*, std::vector<float, std::allocator<float> > >, __gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > > >(LELA::TypeWrapperRing<float> const&, LELA::BLASModule<float>&, float, LELA::Subvector<__gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > >, __gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > > const&, LELA::Subvector<__gnu_cxx::__normal_iterator<float*, std::vector<float, std::allocator<float> > >, __gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > >&, LELA::VectorRepresentationTypes::Dense, LELA::VectorStorageTypes::Real, LELA::VectorRepresentationTypes::Dense, LELA::VectorStorageTypes::Real)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level1-cblas.h:163: undefined reference tocblas_saxpy'
test-blas-cblas-module.o: In function LELA::Subvector<__gnu_cxx::__normal_iterator<float*, std::vector<float, std::allocator<float> > >, __gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > >& LELA::BLAS1::_axpy<LELA::TypeWrapperRing<float>, LELA::BLASModule<float>::Tag>::axpy_impl<LELA::BLASModule<float>, LELA::Subvector<LELA::Subiterator<__gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > >, LELA::Subiterator<__gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > > >, LELA::Subvector<__gnu_cxx::__normal_iterator<float*, std::vector<float, std::allocator<float> > >, __gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > > >(LELA::TypeWrapperRing<float> const&, LELA::BLASModule<float>&, float, LELA::Subvector<LELA::Subiterator<__gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > >, LELA::Subiterator<__gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > > > const&, LELA::Subvector<__gnu_cxx::__normal_iterator<float*, std::vector<float, std::allocator<float> > >, __gnu_cxx::__normal_iterator<float const*, std::vector<float, std::allocator<float> > > >&, LELA::VectorRepresentationTypes::Dense, LELA::VectorStorageTypes::Real, LELA::VectorRepresentationTypes::Dense, LELA::VectorStorageTypes::Real)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level1-cblas.h:163: undefined reference tocblas_saxpy'
test-blas-cblas-module.o: In function LELA::Subvector<__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, __gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > >& LELA::BLAS1::_axpy<LELA::TypeWrapperRing<double>, LELA::BLASModule<double>::Tag>::axpy_impl<LELA::BLASModule<double>, LELA::Subvector<__gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > >, __gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > >, LELA::Subvector<__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, __gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > > >(LELA::TypeWrapperRing<double> const&, LELA::BLASModule<double>&, double, LELA::Subvector<__gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > >, __gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > > const&, LELA::Subvector<__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, __gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > >&, LELA::VectorRepresentationTypes::Dense, LELA::VectorStorageTypes::Real, LELA::VectorRepresentationTypes::Dense, LELA::VectorStorageTypes::Real)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level1-cblas.h:190: undefined reference tocblas_daxpy'
test-blas-cblas-module.o: In function LELA::Subvector<__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, __gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > >& LELA::BLAS1::_axpy<LELA::TypeWrapperRing<double>, LELA::BLASModule<double>::Tag>::axpy_impl<LELA::BLASModule<double>, LELA::Subvector<LELA::Subiterator<__gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > >, LELA::Subiterator<__gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > > >, LELA::Subvector<__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, __gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > > >(LELA::TypeWrapperRing<double> const&, LELA::BLASModule<double>&, double, LELA::Subvector<LELA::Subiterator<__gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > >, LELA::Subiterator<__gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > > > const&, LELA::Subvector<__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, __gnu_cxx::__normal_iterator<double const*, std::vector<double, std::allocator<double> > > >&, LELA::VectorRepresentationTypes::Dense, LELA::VectorStorageTypes::Real, LELA::VectorRepresentationTypes::Dense, LELA::VectorStorageTypes::Real)': /mnt/DATA/GITHUB/w/Linbox-F4/lela-0.1.0/_build/tests/../../lela/blas/level1-cblas.h:190: undefined reference tocblas_daxpy'
collect2: ld returned 1 exit status
make[4]: *** [test-blas-cblas-module] Error 1

configure said:

checking for C interface to BLAS... not found
checking for other BLAS... not found

uninitialized warnings....

libtool: link: g++ -Wall -O2 -o diff diff.o support.o -Wl,-rpath -Wl,/usr/lib -L/GITHUB/w/LINBOX/lib -lpolys_g -lcoeffs_g -lresources_g -lreporter_g -lmisc_g -lfactory -lomalloc_g /usr/lib/libntl.so -L/usr/lib /usr/lib/libgf2x.so -ldl -lgmp -lgmpxx -lpng /usr/lib/libm4ri.so -lm ../lela/.libs/liblela.a
In file included from ../../lela/algorithms/elimination.h:225:0,
from ../../lela/solutions/echelon-form.h:18,
from ../../util/row-echelon-form.C:19:
../../lela/blas/level1-gf2.tcc: In member function ‘Matrix& LELA::Elimination<Ring, Modules>::echelonize(Matrix&, LELA::Elimination<Ring, Modules>::Permutation&, size_t&, LELA::Elimination<Ring, Modules>::Element&, PivotStrategy, bool) const [with Matrix = LELA::DenseMatrix, PivotStrategy = LELA::DensePivotStrategy<LELA::GF2, LELA::AllModulesLELA::GF2 >, Ring = LELA::GF2, Modules = LELA::AllModulesLELA::GF2, LELA::Elimination<Ring, Modules>::Permutation = std::vector<std::pair<unsigned int, unsigned int> >, size_t = long unsigned int, LELA::Elimination<Ring, Modules>::Element = bool]’:
../../lela/blas/level1-gf2.tcc:294:3: warning: ‘((void)(& j_A)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::end’ may be used uninitialized in this function [-Wuninitialized]
../../lela/algorithms/elimination.tcc:64:36: note: ‘
((void_)(& j_A)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::end’ was declared here
../../lela/blas/level1-gf2.tcc:292:4: warning: ‘
((void_)(& j_A)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::begin’ may be used uninitialized in this function [-Wuninitialized]
../../lela/algorithms/elimination.tcc:64:36: note: ‘
((void_)(& j_A)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::begin’ was declared here
../../lela/matrix/m4ri-matrix.h: In member function ‘Matrix1& LELA::Elimination<Ring, Modules>::echelonize_reduced(Matrix1&, Matrix2&, LELA::Elimination<Ring, Modules>::Permutation&, size_t&, LELA::Elimination<Ring, Modules>::Element&, PivotStrategy, bool) const [with Matrix1 = LELA::DenseMatrix, Matrix2 = LELA::DenseMatrix, PivotStrategy = LELA::DensePivotStrategy<LELA::GF2, LELA::AllModulesLELA::GF2 >, Ring = LELA::GF2, Modules = LELA::AllModulesLELA::GF2, LELA::Elimination<Ring, Modules>::Permutation = std::vector<std::pair<unsigned int, unsigned int> >, size_t = long unsigned int, LELA::Elimination<Ring, Modules>::Element = bool]’:
../../lela/matrix/m4ri-matrix.h:143:4: warning: ‘j_L.LELA::M4RIMatrix::RowIteratorPT<long long unsigned int*, const long long unsigned int*, LELA::M4RIMatrixBase*>::idx’ may be used uninitialized in this function [-Wuninitialized]
../../lela/algorithms/elimination.tcc:163:37: note: ‘j_L.LELA::M4RIMatrix::RowIteratorPT<long long unsigned int*, const long long unsigned int*, LELA::M4RIMatrixBase*>::idx’ was declared here
../../lela/blas/level1-gf2.tcc:294:3: warning: ‘
((void
)(& j_L)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::end’ may be used uninitialized in this function [-Wuninitialized]
../../lela/algorithms/elimination.tcc:163:37: note: ‘
((void
)(& j_L)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::end’ was declared here
../../lela/algorithms/elimination.tcc:163:37: warning: ‘
((void_)(& j_L)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::begin’ may be used uninitialized in this function [-Wuninitialized]
../../lela/matrix/m4ri-matrix.h: In member function ‘Matrix1& LELA::Elimination<Ring, Modules>::echelonize_reduced(Matrix1&, Matrix2&, LELA::Elimination<Ring, Modules>::Permutation&, size_t&, LELA::Elimination<Ring, Modules>::Element&, PivotStrategy, bool) const [with Matrix1 = LELA::SparseMatrix<bool, std::vector >, Matrix2 = LELA::DenseMatrix, PivotStrategy = LELA::SparsePartialPivotStrategy<LELA::GF2, LELA::AllModulesLELA::GF2 >, Ring = LELA::GF2, Modules = LELA::AllModulesLELA::GF2, LELA::Elimination<Ring, Modules>::Permutation = std::vector<std::pair<unsigned int, unsigned int> >, size_t = long unsigned int, LELA::Elimination<Ring, Modules>::Element = bool]’:
../../lela/matrix/m4ri-matrix.h:143:4: warning: ‘j_L.LELA::M4RIMatrix::RowIteratorPT<long long unsigned int*, const long long unsigned int*, LELA::M4RIMatrixBase*>::idx’ may be used uninitialized in this function [-Wuninitialized]
../../lela/algorithms/elimination.tcc:163:37: note: ‘j_L.LELA::M4RIMatrix::RowIteratorPT<long long unsigned int*, const long long unsigned int*, LELA::M4RIMatrixBase*>::idx’ was declared here
../../lela/blas/level1-gf2.tcc:294:3: warning: ‘
((void
)(& j_L)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::end’ may be used uninitialized in this function [-Wuninitialized]
../../lela/algorithms/elimination.tcc:163:37: note: ‘
((void
)(& j_L)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::end’ was declared here
../../lela/algorithms/elimination.tcc:163:37: warning: ‘
((void_)(& j_L)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::begin’ may be used uninitialized in this function [-Wuninitialized]
../../lela/matrix/m4ri-matrix.h: In member function ‘Matrix1& LELA::Elimination<Ring, Modules>::echelonize_reduced(Matrix1&, Matrix2&, LELA::Elimination<Ring, Modules>::Permutation&, size_t&, LELA::Elimination<Ring, Modules>::Element&, PivotStrategy, bool) const [with Matrix1 = LELA::SparseMatrix<bool, LELA::HybridVector<LELA::BigEndian, short unsigned int, long unsigned int> >, Matrix2 = LELA::DenseMatrix, PivotStrategy = LELA::SparsePartialPivotStrategy<LELA::GF2, LELA::AllModulesLELA::GF2 >, Ring = LELA::GF2, Modules = LELA::AllModulesLELA::GF2, LELA::Elimination<Ring, Modules>::Permutation = std::vector<std::pair<unsigned int, unsigned int> >, size_t = long unsigned int, LELA::Elimination<Ring, Modules>::Element = bool]’:
../../lela/matrix/m4ri-matrix.h:143:4: warning: ‘j_L.LELA::M4RIMatrix::RowIteratorPT<long long unsigned int*, const long long unsigned int*, LELA::M4RIMatrixBase*>::idx’ may be used uninitialized in this function [-Wuninitialized]
../../lela/algorithms/elimination.tcc:163:37: note: ‘j_L.LELA::M4RIMatrix::RowIteratorPT<long long unsigned int*, const long long unsigned int*, LELA::M4RIMatrixBase*>::idx’ was declared here
../../lela/blas/level1-gf2.tcc:294:3: warning: ‘
((void
)(& j_L)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::end’ may be used uninitialized in this function [-Wuninitialized]
../../lela/algorithms/elimination.tcc:163:37: note: ‘
((void
)(& j_L)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::end’ was declared here
../../lela/algorithms/elimination.tcc:163:37: warning: ‘
((void_)(& j_L)+16).LELA::BitSubvectorWordAligned<long long unsigned int*, const long long unsigned int*, LELA::BigEndian >::_begin’ may be used uninitialized in this function [-Wuninitialized]

GaussJordan - another(!) use of undefined elements in testFaugereLachartre

lela/algorithms/gauss-jordan.tcc:271 : ctx.F.mulin (d, aii); where d is undefined (but aii is ok)

gdb backtrace:
#8 0x00000000004361c1 in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffe1f0, A=..., L=..., d_0=..., P=..., r=@0x7fffffffb9c8, h=@0x7fffffffb9bc, d=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:271
#9 0x0000000000436607 in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffe1f0, A=..., L=..., d_0=..., P=..., r=@0x7fffffffbf70, h=@0x7fffffffbf68, d=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:328
#10 0x000000000043690d in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffe1f0, A=..., L=..., d_0=..., P=..., r=@0x7fffffffc520, h=@0x7fffffffc518, d=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:358
#11 0x000000000043690d in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffe1f0, A=..., L=..., d_0=..., P=..., r=@0x7fffffffcad0, h=@0x7fffffffcac8, d=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:358
#12 0x000000000043690d in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffe1f0, A=..., L=..., d_0=..., P=..., r=@0x7fffffffd088, h=@0x7fffffffd07c, d=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:358
#13 0x0000000000436607 in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffe1f0, A=..., L=..., d_0=..., P=..., r=@0x7fffffffd630, h=@0x7fffffffd628, d=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:328
#14 0x000000000043690d in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffe1f0, A=..., L=..., d_0=..., P=..., r=@0x7fffffffda78, h=@0x7fffffffd78c, d=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:358
#15 0x000000000042fbbe in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::echelonizeLELA::DenseMatrix<Number, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (

this=0x7fffffffe1f0, A=..., P=..., rank=@0x7fffffffda78, det=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:421

#16 0x000000000042971e in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::echelonizeLELA::DenseMatrix (this=0x7fffffffe1f0, A=..., P=..., rank=@0x7fffffffda78, det=...)

at ../lela/algorithms/gauss-jordan.h:124

#17 0x0000000000420e64 in LELA::EchelonForm<MyModular, LELA::AllModules<MyModular > >::echelonize (this=0x7fffffffe1d8, A=..., reduced=false,

method=LELA::EchelonForm<MyModular<float>, LELA::AllModules<MyModular<float> > >::METHOD_ASYMPTOTICALLY_FAST_GJ) at ../lela/solutions/echelon-form.h:130

#18 0x000000000041a36d in LELA::FaugereLachartre<MyModular, LELA::AllModules<MyModular > >::echelonize<LELA::SparseMatrix<Number, LELA::SparseVector<Number, std::vector, std::vector<Number, std::allocator > >, LELA::VectorRepresentationTypes::Sparse> > (this=0x7fffffffe1d0, R=..., X=..., rank=@0x7fffffffe378, det=...) at ../lela/algorithms/faugere-lachartre.tcc:297
#19 0x00000000004158d3 in testFaugereLachartre<MyModular > (R=..., text=0x55552c "GF(5)", m=96, n=128) at test-faugere-lachartre.C:179
#20 0x000000000040edec in main (argc=1, argv=0x7fffffffe548) at test-faugere-lachartre.C:241

test-strassen-winograd

after your fix:

ERROR (at copy_impl in ../lela/blas/level3-generic.tcc:102):
Precondition not met:A.rowdim () == B.rowdim ()
terminate called after throwing an instance of 'LELA::PreconditionFailed'
/bin/sh: line 5: 26878 Aborted ${dir}$tst
FAIL: test-strassen-winograd

GMP check is broken?

./configure --with-gmp="/opt/local"

results in

checking for GMP >= 1.0... *******************************************************************************
ERROR: GMP not found!
GMP version 3.1.1 or greater with --enable-cxx is required for this library to compile. Please
make sure GMP is installed and specify its location with the option
--with-gmp= when running configure.

whereas i have it all under that prefix:

/opt/local/include/gmp.h
/opt/local/include/gmpxx.h
/opt/local/lib/libgmp.10.dylib
/opt/local/lib/libgmp.3.dylib
/opt/local/lib/libgmp.a
/opt/local/lib/libgmp.dylib
/opt/local/lib/libgmp.la
/opt/local/lib/libgmpxx.4.dylib
/opt/local/lib/libgmpxx.a
/opt/local/lib/libgmpxx.dylib
/opt/local/lib/libgmpxx.la

the config.log contains

g++ -o conftest conftest.cpp -L/opt/local/lib -lgmp -lgmpxx >&5
conftest.cpp:36:17: error: gmp.h: No such file or directory
...
and
g++ -o conftest conftest.cpp -L/opt/local/lib -lgmp -lgmpxx -L/opt/local/lib -lgmp -lgmpxx >&5
conftest.cpp:36:17: error: gmp.h: No such file or directory
...

So i guess you don't pass -I/opt/local/include to the checker!!!

AFAIK, we fixed this issue in libpolys so why not to use the fixed gmp check?

reference folder should be renamed

Hi,

after trying to install the library, I encountered initially the following error:

... LELA-master/install-sh: ./html/* does not exist.

It seems that the doc/Makefile.am tries to locate the html folder instead of the reference. After renaming it to html and re-executed the./configure; make; make install;the installation process went on smoothly.

I also renamed the reference.doxy file to html.doxy ; not totally sure if needed.

Thank you!

GaussJordan - use of undefined ring elements!

lela/algorithms/gauss-jordan.tcc:74: ctx.F.mulin (d, aii); where d is undefined...!

started with EF.echelonize(D, true) for a Dense 10x10 (initialized!) matrix...

gdb backtrace:
#7 0x0000000000410b58 in CoeffDomain::mulin (this=0x7fffffffe3b0, x=..., y=...) at ../lela/ring/coeffs.h:606
#8 0x000000000042e736 in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussJordanTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffded8, A=..., k=0, d_0=..., U=..., P=..., r=@0x7fffffffc878, h=@0x7fffffffc86c, d=..., S=..., T=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:74
#9 0x000000000042ebdf in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussJordanTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffded8, A=..., k=0, d_0=..., U=..., P=..., r=@0x7fffffffd038, h=@0x7fffffffd02c, d=..., S=..., T=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:131
#10 0x000000000042ebdf in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussJordanTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffded8, A=..., k=0, d_0=..., U=..., P=..., r=@0x7fffffffd7f8, h=@0x7fffffffd7ec, d=..., S=..., T=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:131
#11 0x000000000042ebdf in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::GaussJordanTransformLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffded8, A=..., k=0, d_0=..., U=..., P=..., r=@0x7fffffffdd68, h=@0x7fffffffda2c, d=..., S=..., T=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:131
#12 0x0000000000425cab in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::echelonize_reducedLELA::DenseMatrix<Number, LELA::DenseMatrix, LELA::DensePivotStrategy<MyModular, LELA::AllModules<MyModular > > > (this=0x7fffffffded8, A=..., L=..., P=..., rank=@0x7fffffffdd68, det=..., PS=...) at ../lela/algorithms/gauss-jordan.tcc:453
#13 0x000000000041b85a in LELA::GaussJordan<MyModular, LELA::AllModules<MyModular > >::echelonize_reducedLELA::DenseMatrix<Number, LELA::DenseMatrix > (this=0x7fffffffded8, A=..., L=..., P=...,

rank=@0x7fffffffdd68, det=...) at ../lela/algorithms/gauss-jordan.h:168

#14 0x00000000004172b3 in LELA::EchelonForm<MyModular, LELA::AllModules<MyModular > >::echelonize (this=0x7fffffffdec0, A=..., reduced=true,

method=LELA::EchelonForm<MyModular<unsigned char>, LELA::AllModules<MyModular<unsigned char> > >::METHOD_ASYMPTOTICALLY_FAST_GJ) at ../lela/solutions/echelon-form.h:128

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.