Releases: baihacker/pe
Releases · baihacker/pe
pe9.0
pe8.0
- Add CombModerPrimePower, CombModerPrimeSquare.
- Replace PE_MEM macro by Cached class.
- Rename pe_internal namespace to internal.
- Add HighestBitIndex, LowestBitIndex, LowestBit, BitCeil, BitIndex.
- Add GeoConstant, RadToDegree, Rotation, RotationHalfPi, RotationPi.
- Use int64 explicitly instead of auto.
- Add ModNoMore, ModAtLeast.
- Add LogI.
- Rename InitInv to InitializeInverse.
- Add GenerateSequence.
- Add PolyShift, PolyShiftLeft, PolyShiftRight.
- Refactor polynimal lib.
- Rename pe_poly_base_min_25 to pe_poly_base_min25.
- Don't use unnecessary std::move.
pe7.0
- Integrate primecount and primesieve.
- Refine libraries_on_win64.md.
- Refine file structure.
- Introduce pe namespace.
- Add BinarySearchFirst and BinarySearchLast.
- Don't use namespace std.
- Unified class interface. The calculation method is always Cal.
- CountNotDiv.
- More bit operation methods.
- Add ExtendedInt.
- Fine grained concept checking.
- Factor pe initializer and int.
- Add AnswerPrompter.
- Add TableFormatter, IntegerRange, CountIntegersInRanges, SolveInequatility.
- Add CountModValue, SumModValue, CountCoprime, SumCoprime.
- Add InitSigma0, InitSigma1, IntegerFactorization, FactorizedInteger.
- Add PMin.
- Refactor polynomial library implementation.
pe6.0
- Use modern C++ style
- Use Google C++ style. Change naming convention.
- Improved range support.
- Support calculating rad in nt base.
- New method/class: GetRadFactors, GetRadFactorsWithMu, CalRad, InitSeqProd2, sigma0_sum_fast, sigma1_sum_fast, dc3 suffix array, SAM, PeMatrix, pe_bswap, pe_bitreverse, PowerModer, PowerModerEx, DfaSummer, CarlitzWordsCounter.
- New methods added to integer concept: FAbs, ToInt, ToFloat, ToString, Power
- Add concept check.
- Refine NModNumber.
- Helper method for float128.
- Add pe db which is used store precaclulated prime count/sum.
- Refine examples.
pe5.0
Changes
- General
- Use C++17
- Use google C++ style, modern C++ style
- Add symbol polynomial support
- Add range support.
- New functions
- parallel_execute
- halton
- init_seq_prod2
- two_squares
- two_squares_full
- to_basek
- from_basek
- dot
- cross
- p1_sum_mod, ap_sum_mod
- p2_sum_mod, square_sum_mod
- p3_sum_mod, cube_sum_mod
- p4_sum_mod, quad_sum_mod
- p5_sum_mod, pent_sum_mod
- p6_sum_mod, hexa_sum_mod
- p7_sum_mod, hept_sum_mod
- gp_sum_mod
- count_pythagorean_triple, count_pythagorean_triple_ex
- New classes
- PSum
- PSumMod
- PartitionMobius
- PermHashA
- PermHashB
- MultiSet
- hash class for int128
- SFCounter
- MuSummer
- MuPhiSummer
- Sigma0Summer
- MuPhiSumModer
- Sigma0SumModer
- PatternNumberCounter
- MValueBaseT
- MValueBaseTP
- DfaCounter
- Concept check for PeModNumber and PeGbi.
- Reorg polynomial implementation.
- Integrate NTL.
- Use new type for signed size.
- Designated initializers for pe.
- Continuous integration
- Test in gcc and clang++ in parallel
- Reduce test size for test on commit.
- Use complete test in daily test.
pe4.0
pe4.0 release
Changes
- Use C++14.
- General utilities and improvements.
- Use pe_config to config the library and add script to generate the config.
- Add PeInitializer to initialize the library.
- Pretty print more containers.
- Add array implementation which support fix or dynamic dimensions.
- Add Line2D.
- IO
- Read value from console.
- Introduce macro to help define and initialize variables.
- Add flint based ntt implementation.
- Add class to help handle set partitions: Partition
- Unify memory allocator.
- Refine folder structures of polynomial related codes.
- Integer
- Support Mpz which is an alias of mpz_class. Add several construction method for it.
- Add MpInteger which is a wrapper of mpz_class.
- numeric_limits supports int128.
- Support to print uint128.
- Support integer traits.
- Modular arithmetic
- Add sum_mod, prod_mod for more than 2 parameters.
- Refine the implementation of mul_mod_ex.
- Refine NModNumber and NModNumberM.
- Matrix arithmetic
- Improve power_mod for matrix.
- Parallel algorithms
- parallel_find_first
- parallel_find_last.
- Number theory
- find_prime_idx
- find_prime_idx_sg
- nrooti
- sqrti
- init_comb
- gcd for more than 2 parameters.
- Mathematica
- Add class IntPoly, IntPoly2D to generate the mma code which uses InterpolatingPolynomial.
- Add compile function to convert mma expression to c++.
pe3.0
pe3.0 release
Changes
- Support vscode.
- New features/algorithm/class/method
- fft.
- bit tricks
- Fraction.
- Mpf: multi-precision floating number. (A wrapper of gmp's mpf.)
- SFCounter: count square free number.
- MiuPhiSumModer: compute the sum of mu or phi.
- PowerSumModer, PowerSumModerB1, PowerSumModerB: different algorithm of computing the sum of integer powers.
- CombModer: compute binomial(n, m) for small mod.
- CombModerEx: compute binomial(n, m) for large prime.
- prime count/sum: compute the count or the sum of prime.
- prime count/sum mod: compute the count or the sum of p % m = a specified value.
- FactModer, n! % p
- FactSumModer: (1!+2!+...+n!%p)
- poly_evaluate_mod_normal or poly_evaluate_mod_bls: two algorithms of polynomial multi-point evaluation.
- RUBit: range based update and query the value of a specified index.
- RSQBit: index based update and value of a range.
- other methods not listed here.
- Improvement
- Infrastructure improvement
- Concept supports lazy evaluation.
- Support int promotion.
- ntt implementation
- Use variant ntt implementations.
- min_25 implementation.
- flint implementation.
- libbf implementation.
- pe builtin implementation.
- poly_mul will choose proper implementation automatically.
- Support big mod number.
- Use variant ntt implementations.
- Infrastructure improvement
- Test
- Auto test on ubuntu, windows.
- Add performance test, result.
- Integrations
- Other
- Libraries on Win64: a document about how to build libraries on windows 64.
Usage
See homepage of pe.
pe2.0
pe2.0 release
New features
- Support big integer.
- Integrate gmp.
- Big integer will use ntt if necessary.
- Support ntt.
- Support geometry.
- Integrate Eigen for matrix manipulation.
- Refine paralell computation framework.
- Integrate openmp.
- The internal implementation will use openmp if necessary.
- Add parallel algorithms.
- Support polynomial operations.
- Support generating function.
- Add tests.
Usage
See homepage of pe.