View Single Post
Old 2022-09-21, 18:21   #212
bsquared
 
bsquared's Avatar
 
"Ben"
Feb 2007

372310 Posts
Default

Update:
I borrowed some single-limb vector multiply functions from avx-ecm to make a vectorized version of microecm that operates up to 52 bits (the precision limit of the multipliers). Here it is compared to the others when processing the 100k input test sets. vec_uecm is structured to process large-ish lists of inputs... that turned out to be necessary in order to keep vector occupancy high.

Code:
timings in seconds for 100k inputs.
Bits   vec_uecm   uecm     Lehman  Brent  
42     0.24       0.41      0.38   1.13
44     0.29       0.51      0.59   1.50 
46     0.35       0.64      0.94   1.99   
48     0.44       0.81             2.75
50     0.53       0.99             3.76   
52     0.65       1.25             5.23
54                1.55             7.29
56                1.95             10.3
58                2.46             14.4
60                3.06             20.3
62                3.90             28.7
64                4.76
Code is available in the yafu github.

Last fiddled with by bsquared on 2022-09-21 at 18:37
bsquared is offline   Reply With Quote