We are hiring ! See our job offers.

Tip revision: **4201397494d9af8b687117e8ff4d85a8944f5c5a** authored by ** Software Heritage ** on **11 June 2019, 10:15:02 UTC**

**hal: Deposit 298 in collection hal**

Tip revision: **4201397**

ChangeLog

```
2019-06-07 v2.4.1
Minor updates:
* fix setnumthreads in pDet
* add README.md in distribution
* support for Hygon Dhyana
2019-05-10 v2.4.0
New features:
* fsytrf: a symmetric triangular factorization, revealign the RPM
* fsyrk, fsyr2k, ftrssyr2k, ftrstr: subroutines for symmetric operations
* support for AVX512 vectorization
* parallelization of fgemm-rns, fsytrf, echelon forms, det, rank, etc
* API for parallel routines outside of par-block (for e.g. SageMath)
Improvements:
* more examples
* more benchmarks: fgesv
* many bug fixes
* improved testsuite
* update to the Givaro's revamped modular fields
* improved igemm
* improved test coverage for SIMD
* improved charpoly
* improved freduce and consequently speed up most routines
2017-12-21 v2.3.2
Improvements:
* minor bug fixes in the build system and with GF2
* new specialization for fgemv over recint
2017-11-22 v2.3.1
Improvements:
* minor bug fixes in the build system
* improved cblas/fblas detection and use
2017-11-17 v2.3.0
Improvements:
* improved build system (instruction set detection, C++11 and clang compatibility, ...)
* improved fttrtri (triangular matrix inverse)
* increased test-suite coverage
* more autotuning
* clean-up and update all random matrix generator so they can be seeded.
* clean-up the test-suite and enable seeding parameter
* many bug fixes (and merging sage patches)
New features:
* new pfgemv routine (parallel matrix vector product)
* new fpotrf routine (Cholesky factorization) and symmetric rand generator
* new tutorials
* Gauss-Jordan inverse made to work
Changes in API
* change signature for CharPoly (now takes a polynomial domain as input)
* change the signature of ftrtrm
2016-07-30 v2.2.2
* many bug fixes ensuring a consistent support of clang, gcc-4.8 5.3 6.1
icpc on i386 x86_64, ubuntu and fedora, ppcle and osx
* new SIMD detection
* use pkgconfig
* new feature: checkers for Freivalds based verification
* improved performance of permutation application
2016-04-08 v2.2.1
* many fixes to the build system
* more consistent use of flags and dependency to precompiled code
* fixes all remaining issues for the integration in SageMath
* numerous minor fixes to the parallel code
2016-02-23 v2.2.0
* new precompiled interface
* improvements and API change for the parallel code
* new random matrix generators
* fix many bugs
2015-06-11 v2.1.0
Test suite and benchmark improvement :
* much larger coverage
* run most tests over a wide range of fields
* systematic interface and options
New features:
* parallel PLUQ
* computation of rank profiles and rank profile matrices
* echelon and reduced echelon forms form both LUdivine and PLUQ
* getters to the forms and the transformation matrices
* igemm routine for BLAS like gemm on 64bits ints
* support of Modular<int64_t> and ModularBalanced<int64_t> using igemm,
to support fields of bitsize between 25 and 31
* support of Modular<rint<K> > for Z/pZ with p of size > 32bits (based
on Givaro's RecInt multiprecision integers)
* support of RNS based gaussian elimination on multiprecision fields
* Paladin: DSL for parallel programming adressing OMP, TBB and Kaapi
Improvements:
* a lot of new sparse mat-vec product improvements
* faster parallel and sequential fgemm
* many bugs found and removed (no known bugs at release time)
* improved helper system, with mode of operations
2014-08-08 v2.0.0
code update :
* rank profile
* clean namespaces
* use field one, zero, etc
* fix clang warnings
* more blas wrappers (sger, sdot, copy, etc)
* simplification of fgemm
* simplify blas detection (+cflags)
* easier permutation handling
* improve testers
* use std::min, max
* many functions have API change to use last pointer argument for return
* some more doc
* and probably many more in 2+ years !
bugs :
* correct permutations
* fix fgemm, fgemv, ftrmm, ftrsm bugs
* mem leaks
* bugs for degenerate cases
* fix bounds
* and probably many more in 2+ years !
new features :
* new pluq 2x2 recursive alg
* leftlooking
* parallel OMP fgemm, ftrmm, ftrsm
* parallel KAAPI fgemm, ftrmm, ftrsm
* new testers for pluq, fgemm, etc
* new tester for Bini approximate formula
* fadd, fsub, finit, fscal, etc
* vectorisation using AVX(2)
* in place schedules
* new Echelon code
* helper design for fgemm, fgemv, etc
* template factorisation for modular/multiprecision fields
* helper traits
* automatic matrix field conversion (ie double -> float)
* add spmv kernels
* enable use of sparse MKL
* parallel.h, avx and simd files
* new DSL for parallelism
* RNS and multiprecision fields
* new const_cast, fflas_new etc functions
* element_ptr in fields
* use Givaro dependency (compulsory now)
* new test for regressions (with tickets)
* and probably many more in 2+ years !
2011-04-15 v1.4.0
* Convert project to autotools (à la LinBox et Givaro)
2008-06-05 v1.3.3
* fix the design of specializations to modular<double> modular<float>
* give a proper name to ModularBalanced
* fix the bugs in the bound computations (Winograd recursion over the
finite field was too deep)
* prepare the interface for integrating compressed representation for
small finite fields
2007-09-28 v1.3.2
* add routines fgetrs and fgesv (cf LAPACK), for system solving.
supports rectangular, over/underdetermined systems.
2007-08-29 v1.3.1
* add the benchmark directory, for automatic benchmarking against GOTO
and ATLAS BLAS. Adapted from Pascal Giorgi's benchmark system.
2007-08-28 v1.3.0
* new version of ftrmm ftrsm: ftrsm based on a multicascade algorithm
reducing the number of modular reductions). Automated generation of each
of the 48 specializations
* several bug fixes
* add regression tests: testeur_fgemm, testeur_lqup and testeur_ftrsm
2007-07-05 v1.2.2
* add a transposed version of the LQUP decomposition routine
LUdivine
* fix many bugs in LUdivine
* new schedules for Winograd algorithm for matrix multiplication:
2 cases depending whether beta = 0 or not, taken form [Huss
Ledermann & Al. 96]
* add rowEchelon and ReducedRowEchelon routines + associated tests
2007-06-21 v1.2.1
* add the use of float BLAS, if the field caradinality is small enough
* improve genericity: gemm can be use over any field domain (not
requiring any conversion to a integral representation)
* add a variant of Winograd's algorithm with less temporaries for
the operation C = AxB
* add ColumnEchelon and ReducedColumnEchelon routines, using an
inplace algorithm, based on the LQUP decompositon of LUdivine
* add routines ftrtri (replacing invL), ftrtrm.
* fix bunch of memory leaks in the tests (not yet finished)
2007-03-13 v1.1.2
* change the genericity system for trsm to detect Field
implementations over double (compatibility with LinBox)
2007-03-11 v1.1.1
* complete preconditioning phase for the new Charpoly algorithm
* new Charpoly algorithm renamed CharpolyArithProg
* add exception for failure of the LasVegas algrithm
* default charpoly is now: 2 attempts to CharpolyArithProg, then LUKrylov
2007-02-27 v1.1.0
* change some naming conventions in the directories
* add a LQUP routine for small dimension (LUdivine_small) and the
cascading with LUdivine
* put the bound computations in the same file
* add dense_generator.C for the generation of random dense
matrices in tests
* add the new algorithm for characteristic polynomial (temporarily
named frobenius)
2006-08-11 v1.0.1
* add the field implementation modular-positive.h, especially for
p=2
* add a the flag 'balanced' to the finite fields modular<double>,
to switch to the apropriate bound computation (fgemm and trsm)
* fix a bug in LUDivine LQUP elimination (initialisation of the
permutation P for N=1 in the terminal case)
* fix a bug in the determination of the number of recursive levels
of Winograd Algorithm.
```