You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+9-4Lines changed: 9 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -32,12 +32,13 @@ Other noteworthy parts of this library are
32
32
33
33
## Releases
34
34
35
+
* v1.4.0 was mainly a quality assurance initiative: Upgrade log4j to version 2, convert the project to Maven structure, set up a CI in github, and convert main() method tests into JUnit tests. Next, it fixes two more bugs resulting from the poor initial integration of TinyEcm64, leading to CombinedFactorAlgorithm.factor() to omit factors of some composites having 46 to 62 bit and several small factors including at least one square, or CombinedFactorAlgorithm.findSingleFactor() to fail termination for some numbers of the same characteristics. Last not least, the performance of all PollardRho- and TinyEcm64-variants has been improved considerably.
35
36
* v1.3.1: Fixed two bugs that may lead to factoring failures when trying to factor arguments in the range 32..62 bit using class CombinedFactorAlgorithm.
36
37
These bugs were introduced 2021-07-12 shortly after release 1.1, so they affect release 1.2 and 1.3.
37
38
* v1.3: Implemented Gaussian integer and quaternion arithmetics including gcd's, and a four-square finder using them.
38
39
* v1.2: Implemented SIQS with three large primes (but with the current parametrization, 3-partials are not found for N<=400 bit)
39
40
* v1.1: Faster sieve for large N, speedup close to factor 2 at 360 bit inputs. Improved Gaussian solvers (by Dave McGuigan), including a parallel Gaussian solver that outperforms Block-Lanczos until about 375 bit on a Ryzen 3900X with 20 threads.
40
-
From now on, <strong>Java 10</strong> is required!
41
+
From now on, Java 9 is required!
41
42
* v1.0: Integrated and adjusted Dario Alpern's ECM in class CombinedFactorAlgorithm.
42
43
* v0.9.11: Added SSOZJ, a fast twin prime sieve; guard analysis code by final static booleans, so that the code is removed by the compiler when the boolean is set to false.
43
44
* v0.9.10: Added port of Ben Buhrow's tinyecm.c.
@@ -74,16 +75,20 @@ The amount of analysis and logging can be influenced by setting the static varia
74
75
Note that for factoring very large numbers with multi-threaded algorithms like PSIQS, PSIQS_U, CombinedFactorAlgorithm or BatchFactorizer, the number of threads should not exceed the number of physical cores of your computer. The number size bound where this effect sets in seems to depend mostly on the L3 cache of your computer. The cause is explained well in [SMT disadvantages](https://en.wikipedia.org/wiki/Simultaneous_multithreading#Disadvantages).
75
76
76
77
77
-
## Factoring records
78
+
## Factoring performance
78
79
79
-
My current factoring record is the 400 bit (121 decimal digits) hard semiprime
80
+
Here is an actual performance comparison of [jml 1.4.0 CombinedFactorAlgorithm vs. Yafu](doc/PSIQS-performance.txt). They seem to be more or less on the same level now.
81
+
82
+
jml's current factoring record is the 400 bit (121 decimal digits) hard semiprime
Its factorization took less than 22 hours on a Ryzen 9 3900X with 12 sieve threads using jml 1.1. See [factoring report on mersenneforum.org](https://www.mersenneforum.org/showthread.php?p=583868#post583868).
86
89
90
+
Actually it should be easy to beat that. I didn't try that number or anything bigger again.
91
+
87
92
88
93
## Authors
89
94
@@ -102,7 +107,7 @@ Big thanks to
102
107
* Graeme Willoughby for his great comments on the BigInteger algorithms in the SqrtInt, SqrtExact, Root and PurePowerTest classes
103
108
* Thilo Harich for a great collaboration and his immense improvements on the Lehman factoring method
104
109
* Ben Buhrow for his free, open source [tinyecm.c](https://www.mersenneforum.org/showpost.php?p=521028&postcount=84) and his comments on mersenneforum.org that helped a lot to improve the performance of my Java port
105
-
* Dave McGuigan, who contributed a parallel Gaussian solver and even sped up my single-threaded Gaussian solver by a remarkable factor
110
+
* Dave McGuigan, who contributed a parallel Gaussian solver, even sped up my single-threaded Gaussian solver by a remarkable factor, and helped to improve some of my PollardRho implementations
106
111
107
112
Some (other) third-party software reused in this library:
Test platform: AMD Ryzen 3900X with 32 GB RAM, SSD, Windows 10 (64 bit).
24
+
25
+
Candidates:
26
+
* jml-1.4.0 is https://github.com/TilmanNeumann/java-math-library/blob/master/src/main/java/de/tilman_neumann/jml/factor/CombinedFactorAlgorithmRunner.java,
27
+
compiled to bytecode and run with graalvm-jdk-23.0.1+11.1 (compiler compliance level 10).
28
+
it is running some Ecm, too, which makes no sense for these numbers, but the overhead should be small.
29
+
* Yafu 1.34.5 is yafu-x64.exe from https://sourceforge.net/projects/yafu/files/
30
+
* YaFu 2.11 is yafu-x64-avx2.exe (because my CPU does not support AVX512) from https://github.com/bbuhrow/yafu
31
+
32
+
All programs were run with 12 threads.
33
+
34
+
Results in seconds:
20
35
21
-
The last number was supposed to have 340 bit, but sometimes my test number generator falls 1 bit short.
0 commit comments