Skip to content

Releases: baihacker/pe

pe9.0

01 Sep 08:37
Compare
Choose a tag to compare
  1. Add PrimerModer.
  2. Add DVAConv.
  3. Use ModValue to hold modulo values.
  4. Add SquareRootMod, Sieve.
  5. New concept implementation.
  6. Improve make_const_arg_type.
  7. Add Span.
  8. Modern C++.
    • Use std::begin, std::end.
    • Use constexpr.
  9. Cleanups
    • Remove unused codes.
    • Deprecate some codes.

pe8.0

02 Sep 02:30
Compare
Choose a tag to compare
  1. Add CombModerPrimePower, CombModerPrimeSquare.
  2. Replace PE_MEM macro by Cached class.
  3. Rename pe_internal namespace to internal.
  4. Add HighestBitIndex, LowestBitIndex, LowestBit, BitCeil, BitIndex.
  5. Add GeoConstant, RadToDegree, Rotation, RotationHalfPi, RotationPi.
  6. Use int64 explicitly instead of auto.
  7. Add ModNoMore, ModAtLeast.
  8. Add LogI.
  9. Rename InitInv to InitializeInverse.
  10. Add GenerateSequence.
  11. Add PolyShift, PolyShiftLeft, PolyShiftRight.
  12. Refactor polynimal lib.
  13. Rename pe_poly_base_min_25 to pe_poly_base_min25.
  14. Don't use unnecessary std::move.

pe7.0

01 Sep 08:37
Compare
Choose a tag to compare
  • 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

02 Sep 02:06
Compare
Choose a tag to compare
  • 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

02 Sep 00:18
Compare
Choose a tag to compare

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

01 Sep 15:56
Compare
Choose a tag to compare

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

31 Aug 22:09
Compare
Choose a tag to compare

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.
  • Test
    • Auto test on ubuntu, windows.
    • Add performance test, result.
  • Integrations
  • Other

Usage

See homepage of pe.

pe2.0

27 Dec 00:39
Compare
Choose a tag to compare

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.

pe1.0

04 Sep 18:44
Compare
Choose a tag to compare

pe1.0 release