mersenneforum.org  

Go Back   mersenneforum.org > Factoring Projects > GMP-ECM

Reply
 
Thread Tools
Old 2009-01-17, 09:02   #1
Andi47
 
Andi47's Avatar
 
Oct 2004
Austria

46628 Posts
Default How exactly does the -I option work?

I just tried

Code:
ecm -nn -c 100 -I 1 <ecm.txt 5e4 >>out1.txt
The first two curves were done on B1 = 50000 and B1 = 51108 resp., thus indicating a multiplicator of approx. 1.022.

The last two curves were done on B1 = 185663 and B1 = 187373 resp., thus indicating a multiplicator of approx. 1.009.

So how exactly is the increment calculated?

Last fiddled with by Andi47 on 2009-01-17 at 09:02 Reason: typo
Andi47 is offline   Reply With Quote
Old 2009-01-17, 09:35   #2
henryzz
Just call me Henry
 
henryzz's Avatar
 
"David"
Sep 2007
Cambridge (GMT/BST)

16A216 Posts
Default

Code:
double
calc_B1_AutoIncrement (double cur_B1, double incB1val, int calcInc)
{
  const double const_adj = 1.33;
  double B1Mod;
  if (!calcInc)
    return cur_B1 + incB1val;  /* incB1val is a constant to add to B1 */

  /* This simple table was "created" based upon the "Optimal B1 table"
     in the README file */
  if (cur_B1 < 2000.)
    B1Mod = 200.;
  else if (cur_B1 < 11000.)  /* 30 curves from B1=2000 to 11000 */
    {
      B1Mod = 300.    * (1. - ((cur_B1 - 2000.) / 9000.));
      B1Mod +=433.334 * (1. - ((11000. - cur_B1) / 9000.));
    }
  else if (cur_B1 < 50000.)  /* 90 curves from B1=11000 to 50000 */
    {
      B1Mod = 433.334 * (1. - ((cur_B1 - 11000.) / 39000.));
      B1Mod +=833.334 * (1. - ((50000. - cur_B1) / 39000.));
    }
  else if (cur_B1 < 250000.)  /* 240 curves from B1=50000 to 250000 */
    {
      B1Mod = 833.334 * (1. - ((cur_B1 - 50000.) / 200000.));
      B1Mod +=1500.   * (1. - ((250000. - cur_B1) / 200000.));
    }
  else if (cur_B1 < 1000000.)  /* 500 curves from B1=250000 to 1e6 */
    {
      B1Mod = 1500.        * (1. - ((cur_B1 - 250000.) / 750000.));
      B1Mod +=1818.18182   * (1. - ((1000000. - cur_B1) / 750000.));
    }
  else if (cur_B1 < 3000000.)  /* 1100 curves from B1=1e6 to 3e6 */
    {
      B1Mod = 1818.18182   * (1. - ((cur_B1 - 1000000.) / 2000000.));
      B1Mod +=2758.621     * (1. - ((3000000. - cur_B1) / 2000000.));
    }
  else if (cur_B1 < 11000000.)  /* 2900 curves from B1=3e6 to 11e6 */
    {
      B1Mod = 2758.621     * (1. - ((cur_B1 - 3000000.) / 8000000.));
      B1Mod +=5818.18182   * (1. - ((11000000. - cur_B1) / 8000000.));
    }
  else if (cur_B1 < 43000000.)  /* 5500 curves from B1=11e6 to 43e6 */
    {
      B1Mod = 5818.18182   * (1. - ((cur_B1 - 11000000.) / 32000000.));
      B1Mod +=7444.44445   * (1. - ((43000000. - cur_B1) / 32000000.));
    }
  else if (cur_B1 < 110000000.)  /* 9000 curves from B1=43e6 to 11e7 */
    {
      B1Mod = 7444.44445   * (1. - ((cur_B1 - 43000000.)  / 67000000.));
      B1Mod +=6818.18182   * (1. - ((110000000. - cur_B1) / 67000000.));
    }
  else if (cur_B1 < 260000000.)  /* 22000 curves from B1=11e7 to 26e7 */
    {
      B1Mod = 6818.18182   * (1. - ((cur_B1 - 110000000.) / 150000000.));
      B1Mod +=11346.1539   * (1. - ((260000000. - cur_B1) / 150000000.));
    }
  else if (cur_B1 < 850000000.)  /* 52000 curves from B1=26e7 to 85e7 */
    {
      B1Mod = 11346.1539   * (1. - ((cur_B1 - 260000000.) / 590000000.));
      B1Mod +=24698.8      * (1. - ((850000000. - cur_B1) / 590000000.));
    }
  else if (cur_B1 < 2900000000.)  /* 83000 curves from B1=85e7 to 29e8 */
    {
      B1Mod = 24698.8      * (1. - ((cur_B1 - 850000000.)  / 2050000000.));
      B1Mod +=50000.0      * (1. - ((2900000000. - cur_B1) / 2050000000.));
    }
  else
    B1Mod = 50000.;

  return floor (cur_B1 + const_adj*(B1Mod*incB1val) + 0.5);
}
this is the code that does it in 6.2.1
edit: whoops copied an extra function

Last fiddled with by henryzz on 2009-01-17 at 09:40
henryzz is offline   Reply With Quote
Old 2009-01-17, 10:11   #3
10metreh
 
10metreh's Avatar
 
Nov 2008

91216 Posts
Default

Quote:
Originally Posted by Andi47 View Post
I just tried

Code:
ecm -nn -c 100 -I 1 <ecm.txt 5e4 >>out1.txt
The first two curves were done on B1 = 50000 and B1 = 51108 resp., thus indicating a multiplicator of approx. 1.022.

The last two curves were done on B1 = 185663 and B1 = 187373 resp., thus indicating a multiplicator of approx. 1.009.

So how exactly is the increment calculated?
I got my 1.2 estimate from B1 = 2e3. I didn't check to see if it changed.
10metreh is offline   Reply With Quote
Reply

Thread Tools


Similar Threads
Thread Thread Starter Forum Replies Last Post
Option to prefer higher category work? Runtime Error PrimeNet 4 2018-01-07 20:20
"Start at Bootup" option didn't work on Windows XP machine? ixfd64 Software 1 2014-12-31 17:14
PEEK OPTION Raman Game 1 - ♚♛♝♞♜♟ - Shaolin Pirates 6 2012-12-05 08:07
mprime -b cli option gone?!? koekie Software 4 2009-01-02 07:10
PauseWhileRunning option doesn't work Flash_ili Software 5 2008-11-22 18:17

All times are UTC. The time now is 04:17.

Thu Jan 21 04:17:37 UTC 2021 up 49 days, 28 mins, 0 users, load averages: 1.61, 1.58, 1.49

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.

This forum has received and complied with 0 (zero) government requests for information.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.
A copy of the license is included in the FAQ.