public class TestTimeZeta
{
final static double PI = 3.1415926535897932384626433832795028841971693993751;
final static double PI_INV = 1.0/PI;
final static double TWO_PI = 2*PI;
final static double TWO_PI_INV = 0.5*PI_INV;
final static int NPREP = 1048576; final static int NPREP2 = NPREP/2;
final static double GRID = TWO_PI/NPREP;
final static double GRID_INV = NPREP*TWO_PI_INV;
int MDIMENS;
int nzevalu;
double[] cosValue = new double[NPREP+10];
LnSqrt[] sqrtinvLn = null;
private class LnSqrt {
double ln;
double sqrtinvLow;
double sqrtinvHigh;
}
TestTimeZeta(long LASTN, int NRANGE)
{
MDIMENS = 50000; sqrtinvLn = new LnSqrt[MDIMENS+1];
for (int i = 1; i <= MDIMENS; ++i) {
sqrtinvLn[i] = new LnSqrt();
sqrtinvLn[i].ln = Math.log((double)i);
sqrtinvLn[i].sqrtinvLow = sqrtinvLn[i].sqrtinvHigh = Math.sqrt(1.0/i);
}
cosValue[0] = 1.0;
for (int i = 1; i <= NPREP+9; ++i) {
cosValue[i] = Math.cos(i*GRID);
}
}
double[] sumZ(double t, int m, double thetaMod)
{
++nzevalu;
double[] zLowHigh = new double[2];
switch (m&3) {
case 0: {
double d = t*sqrtinvLn[m].ln;
int idx = (int)(Math.abs(thetaMod-(d-Math.floor(d*TWO_PI_INV)*TWO_PI))*GRID_INV);
if (idx < NPREP2) {
zLowHigh[0] += sqrtinvLn[m].sqrtinvLow*cosValue[idx+1];
zLowHigh[1] += cosValue[idx]*sqrtinvLn[m].sqrtinvHigh;
} else {
zLowHigh[0] += sqrtinvLn[m].sqrtinvLow*cosValue[idx];
zLowHigh[1] += cosValue[idx+1]*sqrtinvLn[m].sqrtinvHigh;
}
--m;
}
case 3: {
double d = t*sqrtinvLn[m].ln;
int idx = (int)(Math.abs(thetaMod-(d-Math.floor(d*TWO_PI_INV)*TWO_PI))*GRID_INV);
if (idx < NPREP2) {
zLowHigh[0] += sqrtinvLn[m].sqrtinvLow*cosValue[idx+1];
zLowHigh[1] += cosValue[idx]*sqrtinvLn[m].sqrtinvHigh;
} else {
zLowHigh[0] += sqrtinvLn[m].sqrtinvLow*cosValue[idx];
zLowHigh[1] += cosValue[idx+1]*sqrtinvLn[m].sqrtinvHigh;
}
--m;
}
case 2: {
double d = t*sqrtinvLn[m].ln;
int idx = (int)(Math.abs(thetaMod-(d-Math.floor(d*TWO_PI_INV)*TWO_PI))*GRID_INV);
if (idx < NPREP2) {
zLowHigh[0] += sqrtinvLn[m].sqrtinvLow*cosValue[idx+1];
zLowHigh[1] += cosValue[idx]*sqrtinvLn[m].sqrtinvHigh;
} else {
zLowHigh[0] += sqrtinvLn[m].sqrtinvLow*cosValue[idx];
zLowHigh[1] += cosValue[idx+1]*sqrtinvLn[m].sqrtinvHigh;
}
}
default: break;
}
double[] value = new double[16];
for (int i = 2; i < m; i += 4) {
value[0] = sqrtinvLn[i+0].sqrtinvLow; value[1] = sqrtinvLn[i+0].sqrtinvHigh;
value[4] = sqrtinvLn[i+1].sqrtinvLow; value[5] = sqrtinvLn[i+1].sqrtinvHigh;
value[8] = sqrtinvLn[i+2].sqrtinvLow; value[9] = sqrtinvLn[i+2].sqrtinvHigh;
value[12] = sqrtinvLn[i+3].sqrtinvLow; value[13] = sqrtinvLn[i+3].sqrtinvHigh;
double d = t*sqrtinvLn[i+0].ln;
int idx0 = (int)(Math.abs(thetaMod-(d-Math.floor(d*TWO_PI_INV)*TWO_PI))*GRID_INV);
d = t*sqrtinvLn[i+1].ln;
int idx1 = (int)(Math.abs(thetaMod-(d-Math.floor(d*TWO_PI_INV)*TWO_PI))*GRID_INV);
d = t*sqrtinvLn[i+2].ln;
int idx2 = (int)(Math.abs(thetaMod-(d-Math.floor(d*TWO_PI_INV)*TWO_PI))*GRID_INV);
d = t*sqrtinvLn[i+3].ln;
int idx3 = (int)(Math.abs(thetaMod-(d-Math.floor(d*TWO_PI_INV)*TWO_PI))*GRID_INV);
value[2] = cosValue[idx0]; value[3] = cosValue[idx0+1];
value[6] = cosValue[idx1]; value[7] = cosValue[idx1+1];
value[10] = cosValue[idx2]; value[11] = cosValue[idx2+1];
value[14] = cosValue[idx3]; value[15] = cosValue[idx3+1];
if (idx0 > NPREP2) { d = value[2]; value[2] = value[3]; value[3] = d; }
if (idx1 > NPREP2) { d = value[6]; value[6] = value[7]; value[7] = d; }
if (idx2 > NPREP2) { d = value[10]; value[10] = value[11]; value[11] = d; }
if (idx3 > NPREP2) { d = value[14]; value[14] = value[15]; value[15] = d; }
zLowHigh[0] += value[0]*value[3] + value[4]*value[7] + value[8]*value[11] + value[12]*value[15];
zLowHigh[1] += value[1]*value[2] + value[5]*value[6] + value[9]*value[10] + value[13]*value[14];
}
zLowHigh[0] *= 2; zLowHigh[1] *= 2;
return zLowHigh;
}
public static void main(String[] args)
{
TestTimeZeta t = new TestTimeZeta(10000000000L, 500);
double[] d = t.sumZ(3293531632.4153862, 22895, 3.1415895731903487);
System.out.println("d=" + d[0] + ',' + d[1]);
d = t.sumZ(3293531632.7283354, 22895, 6.2831845642478621);
long start = System.currentTimeMillis();
d = t.sumZ(3293531633.0412841, 22895, 3.1415894613275883);
d = t.sumZ(3293531633.3542333, 22895, 6.2831844524148384);
d = t.sumZ(3293531633.667182, 22895, 3.1415893495243004);
d = t.sumZ(3293531633.1977587, 22895, 4.7123869568693548);
d = t.sumZ(3293531633.9801311, 22895, 6.2831843406412862);
d = t.sumZ(3293531634.2930803, 22895, 3.1415940245935539);
d = t.sumZ(3293531634.6060286, 22895, 6.2831794421141369);
d = t.sumZ(3293531634.9189782, 22895, 3.1415939129092108);
d = t.sumZ(3293531635.2319269, 22895, 6.2831841172726);
d = t.sumZ(3293531635.5448761, 22895, 3.1415938012843396);
d = t.sumZ(3293531635.8578248, 22895, 6.283184005677465);
d = t.sumZ(3293531636.1707735, 22895, 3.1415889029058714);
d = t.sumZ(3293531636.4837227, 22895, 6.2831838941418026);
d = t.sumZ(3293531636.7966719, 22895, 3.1415935782130151);
d = t.sumZ(3293531637.109621, 22895, 3.2622990956174174e-006);
d = t.sumZ(3293531637.4225693, 22895, 3.1415886799534913);
d = t.sumZ(3293531637.7355185, 22895, 6.2831836712488949);
d = t.sumZ(3293531638.0484676, 22895, 3.1415933553795794);
d = t.sumZ(3293531637.5790439, 22895, 4.7123861755993346);
d = t.sumZ(3293531638.3614163, 22895, 6.2831835598916497);
d = t.sumZ(3293531638.6743655, 22895, 3.1415932440520704);
d = t.sumZ(3293531638.9873142, 22895, 6.283183448593876);
d = t.sumZ(3293531638.8308401, 22895, 4.7123907397276499);
d = t.sumZ(3293531638.7526026, 22895, 3.9269895984828604);
d = t.sumZ(3293531638.7134838, 22895, 3.5342890278608143);
d = t.sumZ(3293531639.3002629, 22895, 3.1415883459709639);
d = t.sumZ(3293531639.6132126, 22895, 2.8169890590267939e-006);
d = t.sumZ(3293531639.9261608, 22895, 3.1415882347623993);
d = t.sumZ(3293531639.4567375, 22895, 4.7123858416614111);
d = t.sumZ(3293531639.5349751, 22895, 5.4977869829145636);
d = t.sumZ(3293531639.4958563, 22895, 5.1050864122878714);
d = t.sumZ(3293531640.2391105, 22895, 2.7058102307651135e-006);
d = t.sumZ(3293531640.5520587, 22895, 3.1415881236133072);
d = t.sumZ(3293531640.0826359, 22895, 4.7123905172807845);
d = t.sumZ(3293531640.8650079, 22895, 6.2831831150573914);
d = t.sumZ(3293531641.1779571, 22895, 3.1415927993367574);
d = t.sumZ(3293531641.0214825, 22895, 1.5707953036054225);
d = t.sumZ(3293531641.4909058, 22895, 6.2831830039975074);
d = t.sumZ(3293531641.8038549, 22895, 3.1415926883066101);
d = t.sumZ(3293531642.1168041, 22895, 2.3726305801062327e-006);
d = t.sumZ(3293531642.4297523, 22895, 3.1415877905228649);
d = t.sumZ(3293531642.2732782, 22895, 1.5707950815748639);
d = t.sumZ(3293531642.7427015, 22895, 6.2831827820561577);
d = t.sumZ(3293531643.0556502, 22895, 3.141587679611662);
d = t.sumZ(3293531643.3685994, 22895, 6.283182671174691);
d = t.sumZ(3293531643.6815486, 22895, 3.1415923555730019);
d = t.sumZ(3293531643.525074, 22895, 1.5707948597821948);
d = t.sumZ(3293531643.9944978, 22895, 2.0399861806363532e-006);
d = t.sumZ(3293531644.3074465, 22895, 3.1415922447807438);
d = t.sumZ(3293531644.6203952, 22895, 6.2831824495901749);
d = t.sumZ(3293531644.9333444, 22895, 3.1415921340479582);
d = t.sumZ(3293531645.2462931, 22895, 6.2831823388871255);
d = t.sumZ(3293531645.5592427, 22895, 3.1415968101877154);
d = t.sumZ(3293531645.872191, 22895, 6.2831822282435486);
d = t.sumZ(3293531645.7157168, 22895, 4.7123895192137732);
d = t.sumZ(3293531645.6374798, 22895, 3.9269931647002796);
d = t.sumZ(3293531645.7939539, 22895, 5.4977858737281959);
d = t.sumZ(3293531645.4027681, 22895, 1.5707993143523038);
d = t.sumZ(3293531645.4810057, 22895, 2.3562004556760803);
d = t.sumZ(3293531646.1851401, 22895, 3.1415919127608039);
d = t.sumZ(3293531646.4980893, 22895, 1.5972929276366545e-006);
d = t.sumZ(3293531646.811038, 22895, 3.1415918022064355);
d = t.sumZ(3293531647.1239872, 22895, 1.4867682952723943e-006);
d = t.sumZ(3293531647.4369359, 22895, 3.1415916917115392);
d = t.sumZ(3293531647.7498846, 22895, 6.2831818966696513);
d = t.sumZ(3293531648.0628338, 22895, 3.1415915812761153);
d = t.sumZ(3293531648.3757825, 22895, 6.2831817862639632);
d = t.sumZ(3293531648.6887317, 22895, 3.1415914709001638);
d = t.sumZ(3293531649.0016804, 22895, 6.2831816759177483);
d = t.sumZ(3293531649.3146296, 22895, 3.1415913605836847);
d = t.sumZ(3293531649.6275787, 22895, 1.0452644893576747e-006);
d = t.sumZ(3293531649.9405274, 22895, 3.1415912503266781);
d = t.sumZ(3293531650.2534766, 22895, 9.3503721876451802e-007);
d = t.sumZ(3293531650.5664253, 22895, 3.1415911401291434);
d = t.sumZ(3293531650.879375, 22895, 5.6116824912266831e-006);
d = t.sumZ(3293531651.1923232, 22895, 3.1415910299910812);
d = t.sumZ(3293531651.5052719, 22895, 6.2831812351276106);
d = t.sumZ(3293531651.3487978, 22895, 4.7123885259640224);
d = t.sumZ(3293531651.8182211, 22895, 3.1415909199124918);
d = t.sumZ(3293531652.1311703, 22895, 6.0471224111011857e-007);
d = t.sumZ(3293531652.4441195, 22895, 3.1415955967064453);
d = t.sumZ(3293531652.7570682, 22895, 4.9472285993363944e-007);
d = t.sumZ(3293531653.0700164, 22895, 3.1415859131206583);
d = t.sumZ(3293531652.2876449, 22895, 1.5707981007074847);
d = t.sumZ(3293531653.382966, 22895, 3.8479295111130294e-007);
d = t.sumZ(3293531653.6959147, 22895, 3.1415905900335566);
d = t.sumZ(3293531654.0088639, 22895, 2.7492251464309573e-007);
d = t.sumZ(3293531653.8523893, 22895, 4.7123880860659701);
d = t.sumZ(3293531654.3218126, 22895, 3.1415904801928565);
d = t.sumZ(3293531654.6347618, 22895, 1.65111550529007e-007);
d = t.sumZ(3293531654.947711, 22895, 3.1415951572246992);
d = t.sumZ(3293531654.7912364, 22895, 1.5707976611662664);
d = t.sumZ(3293531654.7129993, 22895, 0.78540130654497931);
d = t.sumZ(3293531655.2606597, 22895, 5.5360058769026599e-008);
d = t.sumZ(3293531655.5736089, 22895, 3.1415950475029439);
d = t.sumZ(3293531655.8865571, 22895, 6.2831804660345547);
d = t.sumZ(3293531656.1995063, 22895, 3.1415901510275894);
d = t.sumZ(3293531656.5124555, 22895, 6.2831851432150785);
d = t.sumZ(3293531656.0430317, 22895, 1.5707926549394204);
d = t.sumZ(3293531656.8254042, 22895, 3.1415900414247786);
d = t.sumZ(3293531657.1383533, 22895, 6.2831850336420043);
d = t.sumZ(3293531656.6689301, 22895, 1.5707973321348125);
d = t.sumZ(3293531657.4513021, 22895, 3.1415899318814402);
d = t.sumZ(3293531657.7642508, 22895, 6.2831801373153304);
d = t.sumZ(3293531658.0772004, 22895, 3.141594609210645);
d = t.sumZ(3293531657.6077766, 22895, 4.712387428003062);
d = t.sumZ(3293531658.3901486, 22895, 6.2831800278612002);
d = t.sumZ(3293531658.7030983, 22895, 3.1415944997862515);
d = t.sumZ(3293531659.016047, 22895, 6.2831847052796137);
d = t.sumZ(3293531659.3289962, 22895, 3.1415943904213299);
d = t.sumZ(3293531659.1725216, 22895, 1.5707968942588202);
d = t.sumZ(3293531659.6419449, 22895, 6.2831845959444292);
d = t.sumZ(3293531659.9548936, 22895, 3.1415894943028095);
d = t.sumZ(3293531660.2678428, 22895, 6.2831844866687163);
d = t.sumZ(3293531660.580792, 22895, 3.1415941718699041);
d = t.sumZ(3293531660.1113682, 22895, 4.7123869904839042);
d = t.sumZ(3293531660.1896057, 22895, 5.4977881319823814);
d = t.sumZ(3293531660.0331306, 22895, 3.9269858489863565);
d = t.sumZ(3293531660.4243174, 22895, 1.5707966756776581);
d = t.sumZ(3293531660.3460798, 22895, 0.78539553417639352);
d = t.sumZ(3293531660.8937411, 22895, 3.8570859602882485e-006);
d = t.sumZ(3293531661.2066894, 22895, 3.1415892758703281);
d = t.sumZ(3293531661.5196381, 22895, 6.2831794814826356);
d = t.sumZ(3293531661.8325872, 22895, 3.1415891667432962);
d = t.sumZ(3293531662.1455364, 22895, 6.2831841591984112);
d = t.sumZ(3293531662.4584856, 22895, 3.1415938444888081);
d = t.sumZ(3293531662.7714343, 22895, 6.283184050160588);
d = t.sumZ(3293531663.084383, 22895, 3.1415889486676489);
d = t.sumZ(3293531663.3973327, 22895, 3.4208157217152296e-006);
d = t.sumZ(3293531663.7102809, 22895, 3.1415888397190339);
d = t.sumZ(3293531664.0232306, 22895, 3.3118968429568768e-006);
d = t.sumZ(3293531664.3361788, 22895, 3.1415887308298913);
d = t.sumZ(3293531663.8667555, 22895, 4.7123863359893372);
d = t.sumZ(3293531664.649128, 22895, 6.2831837234039511);
d = t.sumZ(3293531664.9620771, 22895, 3.1415934088132929);
d = t.sumZ(3293531665.2750258, 22895, 6.2831836146040176);
d = t.sumZ(3293531665.587975, 22895, 3.1415933000430951);
d = t.sumZ(3293531665.9009237, 22895, 6.2831835058635557);
d = t.sumZ(3293531666.2138724, 22895, 3.1415884045192977);
d = t.sumZ(3293531666.5268216, 22895, 6.2831833971825661);
d = t.sumZ(3293531666.8397703, 22895, 3.1415882958680443);
d = t.sumZ(3293531667.1527195, 22895, 6.283183288561049);
d = t.sumZ(3293531667.4656687, 22895, 3.1415929740893356);
d = t.sumZ(3293531667.7786179, 22895, 2.6596324898390551e-006);
d = t.sumZ(3293531668.0915666, 22895, 3.1415928655570271);
d = t.sumZ(3293531668.4045153, 22895, 6.2831830714964321);
d = t.sumZ(3293531668.7174644, 22895, 3.1415927570841906);
d = t.sumZ(3293531669.0304132, 22895, 6.2831829630533322);
d = t.sumZ(3293531668.5609899, 22895, 1.5707952606986597);
d = t.sumZ(3293531669.3433628, 22895, 3.1415974354838991);
d = t.sumZ(3293531669.656311, 22895, 6.2831828546697048);
d = t.sumZ(3293531669.9692597, 22895, 3.1415877535038637);
d = t.sumZ(3293531670.2822089, 22895, 6.283182746345549);
d = t.sumZ(3293531670.5951581, 22895, 3.1415924320225166);
d = t.sumZ(3293531670.9081073, 22895, 2.1177143519724067e-006);
d = t.sumZ(3293531671.221056, 22895, 3.1415923237875698);
d = t.sumZ(3293531671.5340047, 22895, 6.2831825298756554);
d = t.sumZ(3293531671.8469539, 22895, 3.1415922156120955);
d = t.sumZ(3293531671.6904793, 22895, 1.5707947191522238);
d = t.sumZ(3293531672.1599026, 22895, 6.2831824217299177);
d = t.sumZ(3293531672.4728518, 22895, 3.1415921074960935);
d = t.sumZ(3293531672.7858005, 22895, 6.2831823136436515);
d = t.sumZ(3293531672.3163772, 22895, 1.5707946110213538);
d = t.sumZ(3293531673.0987496, 22895, 3.141591999439564);
d = t.sumZ(3293531673.4116988, 22895, 1.6852503440477981e-006);
d = t.sumZ(3293531673.7246475, 22895, 3.1415918914425065);
d = t.sumZ(3293531674.0375967, 22895, 1.5772830229510962e-006);
d = t.sumZ(3293531674.3505449, 22895, 3.1415869966918493);
d = t.sumZ(3293531674.6634941, 22895, 6.2831819897416885);
d = t.sumZ(3293531674.9764433, 22895, 3.1415916756268092);
d = t.sumZ(3293531675.289392, 22895, 6.2831818818933121);
d = t.sumZ(3293531675.6023412, 22895, 3.1415915678081689);
d = t.sumZ(3293531675.1329174, 22895, 4.7123843853516654);
d = t.sumZ(3293531675.9152904, 22895, 1.2537378937834867e-006);
d = t.sumZ(3293531676.2282395, 22895, 3.1415962468620733);
d = t.sumZ(3293531675.7588158, 22895, 4.7123890643609663);
d = t.sumZ(3293531676.5411882, 22895, 1.1460084621017463e-006);
d = t.sumZ(3293531676.8541365, 22895, 3.1415865655362327);
d = t.sumZ(3293531677.1670861, 22895, 1.0383385027737167e-006);
d = t.sumZ(3293531677.0106115, 22895, 4.7123888489318384);
d = t.sumZ(3293531677.4800348, 22895, 3.1415912447090824);
d = t.sumZ(3293531677.792984, 22895, 9.3072801579938874e-007);
d = t.sumZ(3293531678.1059327, 22895, 3.1415911371283314);
d = t.sumZ(3293531677.9494581, 22895, 1.5707936405197787);
d = t.sumZ(3293531678.4188814, 22895, 6.2831813435435153);
d = t.sumZ(3293531678.7318306, 22895, 3.1415910296070528);
d = t.sumZ(3293531679.0447798, 22895, 7.1568545891178783e-007);
d = t.sumZ(3293531679.357729, 22895, 3.1415957089583197);
d = t.sumZ(3293531679.2012544, 22895, 1.5707982123200308);
d = t.sumZ(3293531679.6706772, 22895, 6.2831811286199031);
d = t.sumZ(3293531679.9836264, 22895, 3.141590814742913);
d = t.sumZ(3293531680.2965755, 22895, 5.0088079143885246e-007);
d = t.sumZ(3293531680.6095243, 22895, 3.1415907074000518);
d = t.sumZ(3293531680.9224734, 22895, 3.9356766623285661e-007);
d = t.sumZ(3293531681.2354221, 22895, 3.1415906001166625);
d = t.sumZ(3293531681.5483708, 22895, 6.2831808066805266);
d = t.sumZ(3293531681.8613205, 22895, 3.1415952797058186);
d = t.sumZ(3293531682.1742687, 22895, 6.2831806994863468);
d = t.sumZ(3293531682.4872184, 22895, 3.1415951725413747);
d = t.sumZ(3293531682.8001666, 22895, 6.2831805923516386);
d = t.sumZ(3293531683.1131158, 22895, 3.1415902786233296);
d = t.sumZ(3293531683.426065, 22895, 6.2831852720894759);
d = t.sumZ(3293531683.2695904, 22895, 4.7123877753545438);
d = t.sumZ(3293531683.7390137, 22895, 3.14159017157783);
d = t.sumZ(3293531684.0519629, 22895, 6.2831851650737116);
d = t.sumZ(3293531684.3649116, 22895, 3.1415900645918025);
d = t.sumZ(3293531684.6778612, 22895, 4.5377509075705884e-006);
d = t.sumZ(3293531683.8954883, 22895, 4.7123876683239123);
d = t.sumZ(3293531684.9908094, 22895, 3.1415899576652477);
d = t.sumZ(3293531685.3037581, 22895, 6.2831801644075291);
d = t.sumZ(3293531685.6167073, 22895, 3.141589850798165);
d = t.sumZ(3293531685.9296565, 22895, 6.2831848443832561);
d = t.sumZ(3293531686.2426057, 22895, 3.1415945308036282);
d = t.sumZ(3293531686.5555544, 22895, 6.2831847376053815);
d = t.sumZ(3293531686.8685031, 22895, 3.1415896372424168);
d = t.sumZ(3293531687.1814523, 22895, 6.2831846308869803);
d = t.sumZ(3293531687.494401, 22895, 3.1415895305537513);
d = t.sumZ(3293531687.8073506, 22895, 4.0038615376785399e-006);
d = t.sumZ(3293531687.650876, 22895, 4.7123918142021157);
d = t.sumZ(3293531688.1202989, 22895, 3.1415894239245583);
d = t.sumZ(3293531688.433248, 22895, 6.2831844176285943);
d = t.sumZ(3293531688.7461972, 22895, 3.1415941041679107);
d = t.sumZ(3293531689.0591459, 22895, 6.2831843110886094);
d = t.sumZ(3293531689.3720951, 22895, 3.1415939976576626);
d = t.sumZ(3293531689.6850438, 22895, 6.283184204608097);
d = t.sumZ(3293531689.9979925, 22895, 3.1415891043938129);
d = t.sumZ(3293531690.3109417, 22895, 6.283184098187057);
d = t.sumZ(3293531690.1544671, 22895, 4.7123866012885767);
d = t.sumZ(3293531690.6238904, 22895, 3.1415889980025091);
d = t.sumZ(3293531690.9368396, 22895, 6.2831839918254895);
d = t.sumZ(3293531691.2497883, 22895, 3.1415888916706778);
d = t.sumZ(3293531691.5627375, 22895, 6.2831838855233944);
d = t.sumZ(3293531691.8756866, 22895, 3.1415935722113923);
d = t.sumZ(3293531692.1886353, 22895, 6.2831837792807717);
d = t.sumZ(3293531691.7192121, 22895, 1.5707960752757417);
d = t.sumZ(3293531692.5015845, 22895, 3.1415934659985059);
d = t.sumZ(3293531692.8145332, 22895, 6.2831836730976214);
d = t.sumZ(3293531693.1274829, 22895, 3.1415981466581653);
d = t.sumZ(3293531693.4404311, 22895, 6.2831835669739426);
d = t.sumZ(3293531693.7533798, 22895, 3.1415884669380758);
d = t.sumZ(3293531694.066329, 22895, 6.2831834609097372);
d = t.sumZ(3293531694.3792782, 22895, 3.1415931477166801);
d = t.sumZ(3293531694.6922274, 22895, 2.8345384910227972e-006);
d = t.sumZ(3293531695.0051761, 22895, 3.1415930417416829);
d = t.sumZ(3293531695.3181243, 22895, 6.2831784621466689);
d = t.sumZ(3293531695.631074, 22895, 3.1415929358261581);
d = t.sumZ(3293531695.9440227, 22895, 6.2831831430739538);
d = t.sumZ(3293531695.7875481, 22895, 4.7123856460416604);
d = t.sumZ(3293531696.2569718, 22895, 3.1415928299701052);
d = t.sumZ(3293531696.5699205, 22895, 6.2831830372476372);
d = t.sumZ(3293531696.8828697, 22895, 3.1415927241735253);
d = t.sumZ(3293531697.1958189, 22895, 2.4111142810230254e-006);
d = t.sumZ(3293531697.5087676, 22895, 3.1415926184364174);
d = t.sumZ(3293531697.8217168, 22895, 2.3054069094064576e-006);
d = t.sumZ(3293531698.134665, 22895, 3.1415877259457079);
d = t.sumZ(3293531698.4476142, 22895, 6.2831827201255228);
d = t.sumZ(3293531698.7605634, 22895, 3.1415924071406187);
d = t.sumZ(3293531699.0735121, 22895, 6.2831826145370959);
d = t.sumZ(3293531699.3864613, 22895, 3.141592301581928);
d = t.sumZ(3293531699.69941, 22895, 6.2831825090081406);
d = t.sumZ(3293531700.0123587, 22895, 3.1415874092696354);
d = t.sumZ(3293531700.3253083, 22895, 1.8831721464733538e-006);
d = t.sumZ(3293531700.6382565, 22895, 3.1415873038298892);
d = t.sumZ(3293531700.9512062, 22895, 1.777762136623311e-006);
d = t.sumZ(3293531701.2641549, 22895, 3.1415919852626897);
d = t.sumZ(3293531701.5771041, 22895, 1.6724115991265398e-006);
d = t.sumZ(3293531701.8900528, 22895, 3.1415918799418887);
d = t.sumZ(3293531702.2030015, 22895, 6.2831820874870461);
d = t.sumZ(3293531702.5159507, 22895, 3.1415917746805597);
d = t.sumZ(3293531702.0465269, 22895, 4.7123845903060717);
d = t.sumZ(3293531702.8288994, 22895, 6.2831819822554529);
d = t.sumZ(3293531703.141849, 22895, 3.1415964562917775);
d = t.sumZ(3293531703.4547973, 22895, 6.283181877083333);
d = t.sumZ(3293531703.767746, 22895, 3.1415867775232442);
d = t.sumZ(3293531703.2983232, 22895, 4.7123891666856963);
d = t.sumZ(3293531704.0806952, 22895, 6.2831817719706846);
d = t.sumZ(3293531704.3936443, 22895, 3.1415914592534069);
d = t.sumZ(3293531704.7065935, 22895, 1.1465509969413571e-006);
d = t.sumZ(3293531705.0195422, 22895, 3.1415913542299672);
d = t.sumZ(3293531705.3324909, 22895, 6.2831815619238052);
d = t.sumZ(3293531705.6454406, 22895, 3.1415960360790747);
d = t.sumZ(3293531705.488966, 22895, 1.5707985388163255);
d = t.sumZ(3293531705.9583888, 22895, 6.2831814569895741);
d = t.sumZ(3293531706.2713385, 22895, 3.1415959311745798);
d = t.sumZ(3293531706.5842867, 22895, 6.2831813521148154);
d = t.sumZ(3293531706.1148634, 22895, 1.5707936470838879);
d = t.sumZ(3293531706.1931009, 22895, 2.3561947891287693);
d = t.sumZ(3293531706.0366259, 22895, 0.78539250503993596);
d = t.sumZ(3293531706.4278126, 22895, 4.7123886416428391);
d = t.sumZ(3293531706.8972359, 22895, 3.1415910395164826);
d = t.sumZ(3293531707.2101851, 22895, 7.2693301755094178e-007);
d = t.sumZ(3293531707.5231338, 22895, 3.1415909347309325);
d = t.sumZ(3293531707.8360829, 22895, 6.2217720358625971e-007);
d = t.sumZ(3293531708.1490316, 22895, 3.1415908300048545);
d = t.sumZ(3293531708.4619803, 22895, 6.2831810378473731);
d = t.sumZ(3293531707.6796083, 22895, 4.7123884320420029);
d = t.sumZ(3293531707.7578459, 22895, 5.497789574105469);
d = t.sumZ(3293531708.7749295, 22895, 3.1415907253382489);
d = t.sumZ(3293531709.0878782, 22895, 6.2831809332105042);
d = t.sumZ(3293531709.4008274, 22895, 3.1415906207311162);
d = t.sumZ(3293531709.7137766, 22895, 3.0826659581105165e-007);
d = t.sumZ(3293531710.0267258, 22895, 3.1415953029965302);
d = t.sumZ(3293531709.557302, 22895, 4.7123881180867908);
d = t.sumZ(3293531710.3396745, 22895, 2.0374867125889044e-007);
d = t.sumZ(3293531710.6526232, 22895, 3.1415904116952666);
d = t.sumZ(3293531710.9655724, 22895, 9.9290219059830633e-008);
d = t.sumZ(3293531711.2785211, 22895, 3.1415903072665508);
d = t.sumZ(3293531711.5914707, 22895, 4.7817043143099443e-006);
d = t.sumZ(3293531711.9044189, 22895, 3.1415902028973073);
d = t.sumZ(3293531712.2173676, 22895, 6.2831804109182432);
d = t.sumZ(3293531712.5303168, 22895, 3.1415900985875358);
d = t.sumZ(3293531712.843266, 22895, 6.2831850934512827);
d = t.sumZ(3293531713.1562152, 22895, 3.141594781150312);
d = t.sumZ(3293531713.4691639, 22895, 6.2831849892307199);
d = t.sumZ(3293531713.7821126, 22895, 3.1415898901464101);
d = t.sumZ(3293531713.625638, 22895, 1.5707923926903757);
d = t.sumZ(3293531714.0950618, 22895, 6.2831848850696295);
d = t.sumZ(3293531714.4080105, 22895, 3.1415897860150559);
d = t.sumZ(3293531714.7209597, 22895, 6.2831847809680115);
d = t.sumZ(3293531715.0339084, 22895, 3.1415896819431741);
d = t.sumZ(3293531715.3468575, 22895, 6.2831846769258659);
d = t.sumZ(3293531715.6598067, 22895, 3.1415943647438396);
d = t.sumZ(3293531715.9727554, 22895, 6.2831845729431928);
d = t.sumZ(3293531716.2857046, 22895, 3.1415942607909026);
d = t.sumZ(3293531716.5986528, 22895, 6.2831796822069164);
d = t.sumZ(3293531716.911602, 22895, 3.1415893700843625);
d = t.sumZ(3293531717.2245512, 22895, 6.2831843651562629);
d = t.sumZ(3293531717.5374999, 22895, 3.1415892662503699);
d = t.sumZ(3293531717.3810253, 22895, 1.5707917687051269);
d = t.sumZ(3293531717.8504491, 22895, 6.283184261352007);
d = t.sumZ(3293531718.1633983, 22895, 3.1415939492889251);
d = t.sumZ(3293531718.4763474, 22895, 3.6372407118034053e-006);
d = t.sumZ(3293531718.7892962, 22895, 3.1415938455738774);
d = t.sumZ(3293531719.1022444, 22895, 6.2831792671088351);
d = t.sumZ(3293531719.415194, 22895, 3.1415937419183022);
d = t.sumZ(3293531719.7281427, 22895, 6.2831839502960722);
d = t.sumZ(3293531719.5716686, 22895, 4.7123912395118666);
d = t.sumZ(3293531719.4934311, 22895, 3.9269900973080816);
d = t.sumZ(3293531719.6499057, 22895, 5.497787594903504);
d = t.sumZ(3293531719.2587194, 22895, 1.5707962443284549);
d = t.sumZ(3293531720.0410919, 22895, 3.141593638322199);
d = t.sumZ(3293531720.3540406, 22895, 6.2831838467297052);
d = t.sumZ(3293531720.6669893, 22895, 3.1415887479724924);
d = t.sumZ(3293531720.197566, 22895, 4.7123863491175557);
d = t.sumZ(3293531720.9799385, 22895, 6.2831837432228106);
d = t.sumZ(3293531721.2928872, 22895, 3.141588644495334);
d = t.sumZ(3293531720.8234639, 22895, 4.712386245595793);
d = t.sumZ(3293531721.6058369, 22895, 3.1194088775104369e-006);
d = t.sumZ(3293531721.9187851, 22895, 3.1415885410776481);
d = t.sumZ(3293531722.2317343, 22895, 6.2831835363874387);
d = t.sumZ(3293531722.5446835, 22895, 3.1415932245325102);
d = t.sumZ(3293531722.3882089, 22895, 1.5707957268683226);
d = t.sumZ(3293531722.8576322, 22895, 6.2831834330589604);
d = t.sumZ(3293531723.1705813, 22895, 3.1415931212337691);
d = t.sumZ(3293531723.48353, 22895, 6.2831833297899555);
d = t.sumZ(3293531723.7964787, 22895, 3.1415882311814238);
d = t.sumZ(3293531724.1094284, 22895, 2.7062139124282938e-006);
d = t.sumZ(3293531724.4223766, 22895, 3.1415881280016276);
d = t.sumZ(3293531724.7353263, 22895, 2.6030638520399201e-006);
d = t.sumZ(3293531725.0482745, 22895, 3.1415880248813033);
d = t.sumZ(3293531725.3612237, 22895, 6.2831830203397745);
d = t.sumZ(3293531725.2047491, 22895, 4.7123855226086802);
d = t.sumZ(3293531725.6741729, 22895, 3.1415927086335271);
d = t.sumZ(3293531725.9871216, 22895, 6.2831829173086584);
d = t.sumZ(3293531726.3000708, 22895, 3.1415926056321477);
d = t.sumZ(3293531726.1435962, 22895, 1.5707951078787514);
d = t.sumZ(3293531726.0653591, 22895, 0.78539875240998525);
d = t.sumZ(3293531726.2218332, 22895, 2.3561914633484471);
d = t.sumZ(3293531725.8306475, 22895, 4.7123902063757726);
d = t.sumZ(3293531726.6130195, 22895, 6.2831828143370156);
d = t.sumZ(3293531726.9259691, 22895, 3.1415972895033168);
d = t.sumZ(3293531726.4565449, 22895, 4.7123853165761851);
d = t.sumZ(3293531727.2389174, 22895, 6.2831827114248444);
d = t.sumZ(3293531727.5518661, 22895, 3.1415876129947296);
d = t.sumZ(3293531727.8648152, 22895, 6.2831826085721456);
d = t.sumZ(3293531728.1777644, 22895, 3.1415922969848431);
d = t.sumZ(3293531728.4907136, 22895, 1.985412409118954e-006);
d = t.sumZ(3293531728.8036623, 22895, 3.1415921942213534);
d = t.sumZ(3293531729.116611, 22895, 6.2831824030451653);
d = t.sumZ(3293531729.4295602, 22895, 3.1415920915173352);
d = t.sumZ(3293531729.7425089, 22895, 6.2831823003708838);
d = t.sumZ(3293531730.0554585, 22895, 3.1415967756858665);
d = t.sumZ(3293531730.3684068, 22895, 6.2831821977560747);
d = t.sumZ(3293531730.681356, 22895, 3.141591886287717);
d = t.sumZ(3293531730.9943051, 22895, 1.5748342275606019e-006);
d = t.sumZ(3293531731.3072538, 22895, 3.1415917837621161);
d = t.sumZ(3293531731.620203, 22895, 1.4723383630528642e-006);
d = t.sumZ(3293531731.9331517, 22895, 3.1415916812959881);
d = t.sumZ(3293531732.2461004, 22895, 6.2831818902684811);
d = t.sumZ(3293531732.5590496, 22895, 3.141591578889332);
d = t.sumZ(3293531732.402575, 22895, 1.5707940809872545);
d = t.sumZ(3293531732.8719983, 22895, 6.2831817878915608);
d = t.sumZ(3293531733.1849475, 22895, 3.1415914765421484);
d = t.sumZ(3293531733.4978962, 22895, 6.2831816855741138);
d = t.sumZ(3293531733.8108454, 22895, 3.1415913742544368);
d = t.sumZ(3293531734.1237946, 22895, 1.0629496285489752e-006);
d = t.sumZ(3293531734.4367433, 22895, 3.141591272026198);
d = t.sumZ(3293531734.7496924, 22895, 9.6075112580471182e-007);
d = t.sumZ(3293531735.0626411, 22895, 3.1415911698574313);
d = t.sumZ(3293531734.906167, 22895, 1.5707984587089585);
d = t.sumZ(3293531735.3755908, 22895, 5.645425172230922e-006);
d = t.sumZ(3293531735.688539, 22895, 3.1415910677481373);
d = t.sumZ(3293531736.0014877, 22895, 6.2831812768990467);
d = t.sumZ(3293531736.3144369, 22895, 3.1415909656983154);
d = t.sumZ(3293531736.6273861, 22895, 6.5451245168783946e-007);
d = t.sumZ(3293531736.9403353, 22895, 3.1415956505210425);
d = t.sumZ(3293531737.253284, 22895, 5.5255183835415062e-007);
d = t.sumZ(3293531736.7838607, 22895, 1.5707981525148886);
d = t.sumZ(3293531737.5662322, 22895, 3.1415859749640114);
d = t.sumZ(3293531737.8791819, 22895, 4.5065069737307711e-007);
d = t.sumZ(3293531738.1921306, 22895, 3.1415906599056838);
d = t.sumZ(3293531738.5050797, 22895, 3.4880902874460875e-007);
d = t.sumZ(3293531738.8180285, 22895, 3.1415905580937511);
d = t.sumZ(3293531738.035656, 22895, 1.5707931618697935);
d = t.sumZ(3293531739.1309776, 22895, 2.4702683246873348e-007);
d = t.sumZ(3293531739.4439268, 22895, 3.1415952431543683);
d = t.sumZ(3293531739.756875, 22895, 6.2831806656706179);
d = t.sumZ(3293531740.0698247, 22895, 3.1415951414613805);
d = t.sumZ(3293531740.3827729, 22895, 6.2831805640073659);
d = t.sumZ(3293531740.6957221, 22895, 3.1415902530147881);
d = t.sumZ(3293531741.0086713, 22895, 6.2831852492166647);
d = t.sumZ(3293531740.8521967, 22895, 4.7123877511138677);
d = t.sumZ(3293531741.32162, 22895, 3.1415901514407447);
d = t.sumZ(3293531741.6345692, 22895, 6.2831851476723575);
d = t.sumZ(3293531741.4780946, 22895, 4.7123876495546924);
d = t.sumZ(3293531741.9475179, 22895, 3.1415900499261742);
d = t.sumZ(3293531742.2604666, 22895, 6.2831802593744452);
d = t.sumZ(3293531742.5734162, 22895, 3.1415947352841531);
d = t.sumZ(3293531742.8863645, 22895, 6.2831801579490829);
d = t.sumZ(3293531743.1993141, 22895, 3.141594633888527);
d = t.sumZ(3293531743.5122628, 22895, 6.2831848433962705);
d = t.sumZ(3293531743.825212, 22895, 3.1415945325523738);
d = t.sumZ(3293531744.1381607, 22895, 6.283184742089853);
d = t.sumZ(3293531744.4511094, 22895, 3.141589644462615);
d = t.sumZ(3293531744.7640586, 22895, 6.283184640842908);
d = t.sumZ(3293531744.607584, 22895, 4.7123871426509032);
d = t.sumZ(3293531745.0770073, 22895, 3.1415895432454057);
d = t.sumZ(3293531745.389957, 22895, 4.0192889266428638e-006);
d = t.sumZ(3293531745.7029052, 22895, 3.1415894420876693);
d = t.sumZ(3293531745.5464311, 22895, 1.5707967306864394);
d = t.sumZ(3293531746.0158539, 22895, 6.2831796517143577);
d = t.sumZ(3293531746.3288031, 22895, 3.1415893409894049);
d = t.sumZ(3293531746.6417522, 22895, 6.2831843374589074);
d = t.sumZ(3293531745.8593798, 22895, 4.7123869403056942);
d = t.sumZ(3293531746.9547014, 22895, 3.1415940267636908);
d = t.sumZ(3293531747.2676501, 22895, 6.2831842364498511);
d = t.sumZ(3293531747.5805988, 22895, 3.1415891389712938);
d = t.sumZ(3293531747.8935485, 22895, 3.6151337593464073e-006);
d = t.sumZ(3293531748.2064967, 22895, 3.1415890380514466);
d = t.sumZ(3293531748.5194464, 22895, 3.5142436484033809e-006);
d = t.sumZ(3293531748.0500226, 22895, 1.5707963265907443);
d = t.sumZ(3293531748.8323946, 22895, 3.1415889371910715);
d = t.sumZ(3293531749.1453438, 22895, 6.2831839337795188);
d = t.sumZ(3293531749.458293, 22895, 3.1415936232032471);
d = t.sumZ(3293531749.7712417, 22895, 6.2831838330083523);
d = t.sumZ(3293531750.0841908, 22895, 3.1415935224618168);
d = t.sumZ(3293531750.3971395, 22895, 6.2831837322966582);
d = t.sumZ(3293531750.7100883, 22895, 3.1415886349667814);
d = t.sumZ(3293531751.0230374, 22895, 6.2831836316444365);
d = t.sumZ(3293531751.3359861, 22895, 3.141588534344296);
d = t.sumZ(3293531751.6489353, 22895, 6.2831835310516873);
d = t.sumZ(3293531751.9618845, 22895, 3.1415932205943609);
d = t.sumZ(3293531751.8054099, 22895, 1.5707957222313724);
d = t.sumZ(3293531752.2748337, 22895, 2.9101519021454761e-006);
d = t.sumZ(3293531752.5877824, 22895, 3.1415931200908203);
d = t.sumZ(3293531752.9007311, 22895, 6.2831833300446061);
d = t.sumZ(3293531753.2136803, 22895, 3.1415930196467516);
d = t.sumZ(3293531753.526629, 22895, 6.2831832296302741);
d = t.sumZ(3293531753.8395786, 22895, 3.1415977060752338);
d = t.sumZ(3293531754.1525269, 22895, 6.2831831292754137);
d = t.sumZ(3293531754.4654756, 22895, 3.1415880321239538);
d = t.sumZ(3293531754.7784247, 22895, 6.2831830289800266);
d = t.sumZ(3293531754.309001, 22895, 1.5707905337014931);
d = t.sumZ(3293531755.0913739, 22895, 3.1415927186713808);
d = t.sumZ(3293531755.4043231, 22895, 2.4083776032867989e-006);
d = t.sumZ(3293531755.7172718, 22895, 3.1415926184652019);
d = t.sumZ(3293531756.0302205, 22895, 6.2831828285676687);
d = t.sumZ(3293531756.3431697, 22895, 3.1415925183184954);
d = t.sumZ(3293531756.6561184, 22895, 6.283182728450698);
d = t.sumZ(3293531756.9690676, 22895, 3.1415924182312613);
d = t.sumZ(3293531757.2820163, 22895, 6.2831826283932006);
d = t.sumZ(3293531757.5949655, 22895, 3.1415923182034993);
d = t.sumZ(3293531757.9079146, 22895, 2.0080286665411063e-006);
d = t.sumZ(3293531758.2208629, 22895, 3.1415874314221313);
d = t.sumZ(3293531758.5338125, 22895, 1.9080901132353176e-006);
d = t.sumZ(3293531758.8467607, 22895, 3.141587331513314);
d = t.sumZ(3293531759.1597099, 22895, 6.2831823285775403);
d = t.sumZ(3293531759.4726591, 22895, 3.1415920184770481);
d = t.sumZ(3293531759.7856078, 22895, 6.2831822287579318);
d = t.sumZ(3293531760.098557, 22895, 3.1415919186871752);
d = t.sumZ(3293531760.4115062, 22895, 1.608631287431295e-006);
d = t.sumZ(3293531760.7244554, 22895, 3.1415966057698541);
d = t.sumZ(3293531761.0374041, 22895, 1.5089306235343644e-006);
d = t.sumZ(3293531761.3503523, 22895, 3.141586932472769);
d = t.sumZ(3293531761.6633019, 22895, 1.4092894319896202e-006);
d = t.sumZ(3293531761.9762506, 22895, 3.1415916196743923);
d = t.sumZ(3293531762.2891998, 22895, 1.3097077127970516e-006);
d = t.sumZ(3293531762.6021485, 22895, 3.1415915201224092);
d = t.sumZ(3293531762.1327252, 22895, 4.7123891182789874);
d = t.sumZ(3293531762.9150972, 22895, 6.2831817305519735);
d = t.sumZ(3293531763.2280464, 22895, 3.1415914206298985);
d = t.sumZ(3293531763.0715718, 22895, 1.5707939219992844);
d = t.sumZ(3293531762.9933348, 22895, 0.78539756609191047);
d = t.sumZ(3293531762.954216, 22895, 0.39269699473203268);
d = t.sumZ(3293531763.5409951, 22895, 6.2831816310891995);
d = t.sumZ(3293531763.8539448, 22895, 3.141596108009939);
d = t.sumZ(3293531764.166893, 22895, 6.283181531685897);
d = t.sumZ(3293531764.4798422, 22895, 3.141591221823294);
d = t.sumZ(3293531764.7927914, 22895, 9.1197555954829615e-007);
d = t.sumZ(3293531765.1057401, 22895, 3.1415911225092006);
d = t.sumZ(3293531765.4186893, 22895, 8.1269120211643074e-007);
d = t.sumZ(3293531765.731638, 22895, 3.1415910232545792);
d = t.sumZ(3293531766.0445867, 22895, 6.2831812338328241);
d = t.sumZ(3293531766.3575363, 22895, 3.1415957108725094);
d = t.sumZ(3293531766.6704845, 22895, 6.2831811346674113);
d = t.sumZ(3293531765.2622147, 22895, 4.7123886211881363);
d = t.sumZ(3293531766.9834342, 22895, 3.1415956117368329);
d = t.sumZ(3293531767.2963824, 22895, 6.283181035561471);
d = t.sumZ(3293531767.6093316, 22895, 3.1415907258475495);
d = t.sumZ(3293531767.9222808, 22895, 4.1614849590992776e-007);
d = t.sumZ(3293531767.7658062, 22895, 4.7123882245859576);
d = t.sumZ(3293531768.2352295, 22895, 3.1415906268308178);
d = t.sumZ(3293531768.5481787, 22895, 3.1716150023848557e-007);
d = t.sumZ(3293531768.8611274, 22895, 3.1415905278735581);
d = t.sumZ(3293531769.1740766, 22895, 2.1823397691909352e-007);
d = t.sumZ(3293531769.017602, 22895, 4.712388026641702);
d = t.sumZ(3293531769.4870253, 22895, 3.1415904289757708);
d = t.sumZ(3293531769.799974, 22895, 6.283180639732433);
d = t.sumZ(3293531770.1129231, 22895, 3.1415903301374564);
d = t.sumZ(3293531770.4258723, 22895, 2.0557347336417325e-008);
d = t.sumZ(3293531770.7388215, 22895, 3.1415950181716932);
d = t.sumZ(3293531770.2693977, 22895, 4.7123878289353369);
d = t.sumZ(3293531771.0517702, 22895, 6.2831852289878274);
d = t.sumZ(3293531771.3647189, 22895, 3.1415901326392435);
d = t.sumZ(3293531771.6776681, 22895, 6.283185130298194);
d = t.sumZ(3293531771.9906168, 22895, 3.1415900339793459);
d = t.sumZ(3293531771.5211935, 22895, 4.7123876314668598);
d = t.sumZ(3293531771.599431, 22895, 5.497788774288602);
d = t.sumZ(3293531772.3035665, 22895, 4.5113015250935241e-006);
d = t.sumZ(3293531772.6165147, 22895, 3.1415899353789203);
d = t.sumZ(3293531772.9294639, 22895, 6.2831849330973428);
d = t.sumZ(3293531772.4600406, 22895, 1.5707972233383642);
d = t.sumZ(3293531773.242413, 22895, 3.1415946236510468);
d = t.sumZ(3293531773.5553617, 22895, 6.2831848345861259);
d = t.sumZ(3293531773.0859385, 22895, 1.5707971247825432);
d = t.sumZ(3293531773.8683109, 22895, 3.1415945251695665);
d = t.sumZ(3293531774.1812596, 22895, 6.2831847361343813);
d = t.sumZ(3293531774.4942083, 22895, 3.1415896399344785);
d = t.sumZ(3293531774.8071575, 22895, 6.2831846377421092);
d = t.sumZ(3293531775.1201062, 22895, 3.1415895415719421);
d = t.sumZ(3293531775.4330554, 22895, 6.2831845394093095);
d = t.sumZ(3293531775.7460041, 22895, 3.1415894432688787);
d = t.sumZ(3293531776.0589533, 22895, 6.2831844411359823);
d = t.sumZ(3293531776.3719025, 22895, 3.1415941318383673);
d = t.sumZ(3293531776.6848507, 22895, 6.2831795561090473);
d = t.sumZ(3293531776.9978004, 22895, 3.1415940336542483);
d = t.sumZ(3293531777.3107486, 22895, 6.283179457954664);
d = t.sumZ(3293531776.8413258, 22895, 1.5707965346965358);
d = t.sumZ(3293531776.9195633, 22895, 2.3561976775814673);
d = t.sumZ(3293531776.7630882, 22895, 0.78539539181253371);
d = t.sumZ(3293531777.1542745, 22895, 4.7123867458025979);
d = t.sumZ(3293531777.0760374, 22895, 3.9269903897279583);
d = t.sumZ(3293531777.6236982, 22895, 3.1415939355296016);
d = t.sumZ(3293531777.9366469, 22895, 6.2831841466728342);
d = t.sumZ(3293531778.2495956, 22895, 3.1415890506513477);
d = t.sumZ(3293531778.5625448, 22895, 6.2831840486373958);
d = t.sumZ(3293531778.0931215, 22895, 1.570796338476979);
d = t.sumZ(3293531778.875494, 22895, 3.1415937394587257);
d = t.sumZ(3293531779.1884432, 22895, 3.4302949236678968e-006);
d = t.sumZ(3293531779.5013919, 22895, 3.1415936415124963);
d = t.sumZ(3293531779.8143401, 22895, 6.2831790659318569);
d = t.sumZ(3293531780.1272898, 22895, 3.1415935436257389);
d = t.sumZ(3293531779.9708147, 22895, 1.5707912577806062);
d = t.sumZ(3293531779.8925772, 22895, 0.78539011485943355);
d = t.sumZ(3293531780.4402385, 22895, 6.2831837548879159);
d = t.sumZ(3293531780.7531877, 22895, 3.1415934457984545);
d = t.sumZ(3293531781.0661364, 22895, 6.2831836570903672);
d = t.sumZ(3293531781.3790851, 22895, 3.1415885612175618);
d = t.sumZ(3293531781.6920342, 22895, 6.2831835593522909);
d = t.sumZ(3293531782.0049829, 22895, 3.1415884635092217);
d = t.sumZ(3293531782.3179326, 22895, 2.9413071807314861e-006);
d = t.sumZ(3293531782.6308808, 22895, 3.1415883658603536);
d = t.sumZ(3293531781.8485088, 22895, 1.5707957512456445);
d = t.sumZ(3293531782.94383, 22895, 6.2831833640545556);
d = t.sumZ(3293531783.2567792, 22895, 3.1415930550840385);
d = t.sumZ(3293531783.5697279, 22895, 6.2831832664948966);
d = t.sumZ(3293531783.8826771, 22895, 3.1415929575541157);
d = t.sumZ(3293531784.1956258, 22895, 6.2831831689947091);
d = t.sumZ(3293531784.5085745, 22895, 3.1415880732705848);
d = t.sumZ(3293531784.0391512, 22895, 4.7123856698660136);
d = t.sumZ(3293531784.8215241, 22895, 2.5511874887148625e-006);
d = t.sumZ(3293531785.1344724, 22895, 3.1415879758596064);
d = t.sumZ(3293531785.447422, 22895, 2.4538062465901263e-006);
d = t.sumZ(3293531785.7603703, 22895, 3.1415878785081004);
d = t.sumZ(3293531785.6038961, 22895, 1.570795166155315);
d = t.sumZ(3293531785.5256591, 22895, 0.78539880998031608);
d = t.sumZ(3293531785.5647774, 22895, 1.1780945946611592);
d = t.sumZ(3293531786.0733199, 22895, 2.3564844768171346e-006);
d = t.sumZ(3293531786.3862686, 22895, 3.141592568029147);
d = t.sumZ(3293531786.6992173, 22895, 6.2831827795886852);
d = t.sumZ(3293531787.0121665, 22895, 3.1415924707965859);
d = t.sumZ(3293531787.3251152, 22895, 6.2831826823858599);
d = t.sumZ(3293531787.1686411, 22895, 4.7123899699959049);
d = t.sumZ(3293531787.6380649, 22895, 3.1415971604365773);
d = t.sumZ(3293531787.9510131, 22895, 6.2831825852425078);
d = t.sumZ(3293531788.2639618, 22895, 3.1415874896967995);
d = t.sumZ(3293531788.576911, 22895, 6.2831824881586273);
d = t.sumZ(3293531788.8898602, 22895, 3.1415921794557362);
long stop = System.currentTimeMillis();
System.out.println("time=" + (stop-start));
System.out.println("nzevalu=" + t.nzevalu);
}
}