minBLEPS once and for all

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

Hello people.

After successfully implementing minBLEP on a Sawtooth wave WITHOUT Hard Sync, using the following code, I am trying without luck to implement Hard Sync.

Normal minBLEP - works perfectly:

Code: Select all

            mPhase += mPhaseIncrement;
            index = (index+1)%cirBuffSize;
            
            //Normal minBLEP:
            while(mPhase >= 1.0)
            {
                mPhase -= 1.0;
                double exactCrossTime = 1.0-((mPhaseIncrement-mPhase)/mPhaseIncrement);
                populateCircularBufferForSawtoothWave(exactCrossTime, 1.f);
            }
            
            circularBuffer[index] += (mPhase-mPhaseIncrement);
            double output = 1.7f *(circularBuffer[index] - 0.4f);
            circularBuffer[index] = 0.0;
Where populateCircularBufferForSawtoothWave looks like:

Code: Select all

inline void ZeusOsc::populateCircularBufferForSawtoothWave(float offset, float scale)
{
    const float *minBlep;
    MinBlepData *blepData= new MinBlepData();
    minBlep= blepData->getBlep();
    
    for(int i = 0; i < (cirBuffSize-1); i++)
    {
        double tempIndex = (offset*overS)+(i*overS);
        double tempFraction = tempIndex-floor(tempIndex);
        circularBuffer[(index+i)%cirBuffSize] += (scale-LERP(tempFraction, minBlep[(int)floor(tempIndex)], minBlep[(int)ceil(tempIndex)]) * scale);
    }
    
    delete blepData;
}
And my minBLEP data came from Daniel Werner's function GenerateMinBLEP(cirBuffSize/2, overS) with cirBuffSize(48), overS(32) = 1536 samples. I'm assuming there is nothing wrong with the minBLEP data as it gives a perfectly alias free NON HS Sawtooth.

My Problem :( .......

What I need help with guys, if possible, is that my code for the 'Master resets Slave minBLEP' is not right:

Code: Select all

                mSyncPhase += mSyncPhaseIncrement;

                //Master resets Slave minBLEP:
                if(mSyncPhase >= 1.0)
                {
                    mPhase = 0.0;
                    mSyncPhase -= 1.f;
                    
                    double masterPeriod = 1.f/mSyncFrequency;
                    double slavePeriod = 1.f/mFrequency;
                    double slaveIsThisManySamplesThrough = fmod (masterPeriod,slavePeriod);
                    double scale = slaveIsThisManySamplesThrough/slavePeriod;
                    
                    double exactCrossTime = scale-((mPhaseIncrement-mPhase)/mPhaseIncrement);
                    
                    float slaveWillBeResetTo = safediv((mPhaseIncrement * mSyncPhase), mSyncPhaseIncrement);

                    populateCircularBufferForSawtoothWave(exactCrossTime, scale);
                    
                    mPhase = slaveWillBeResetTo;
                }

            }

            mPhase += mPhaseIncrement;
            index = (index+1)%cirBuffSize;
            
            //Normal minBLEP:
            while(mPhase >= 1.0)
            {
                mPhase -= 1.0;
                double exactCrossTime = 1.0-((mPhaseIncrement-mPhase)/mPhaseIncrement);
                populateCircularBufferForSawtoothWave(exactCrossTime, 1.f);
            }
            
            circularBuffer[index] += (mPhase-mPhaseIncrement);
            double output = 1.7f *(circularBuffer[index] - 0.4f);
            circularBuffer[index] = 0.0;
I believe that my scale calculation is correct but I think slaveWillBeResetTo is wrong. There are three reasons I think my code is wrong:

1 - I can hear the aliasing on a test note with Master 15 semitones below the Slave.
2 - I can see the aliasing:

Image

3 - The waveform looks about right aside from a 'bump', which looks like a sync function maybe, after the slave has been reset:

Image

Incidentally, I originally had:

Code: Select all

double exactCrossTime = 1.f-((mPhaseIncrement-mPhase)/mPhaseIncrement);
using 1.f NOT scale and this gave a larger bump:

Image

So I suppose that at least one of scale, exactCrossTime or slaveWillBeResetTo are wrong or maybe my entire logic for 'Master resets Slave minBLEP' is wrong :scared:

Can anybody spot my mistakes/ correct the code. Thanks in advance

Dave

Post

Can't quite get my head round your code but you seem to have got confused in there somewhere. Where you are calculating exactCrossTime, mPhase has been set to 0.0, so exactCrossTime will be set to the same value as scale. This is clearly wrong for your call to populateCircularBufferForSawtoothWave().

What you should aim to do is:
When mSyncPhase exceeds 1.0, subtract 1.0 from it. Calculate the exact time when mSyncPhase would have reached 1.0 (this is the value to use for exactCrossTime) and work out what value mPhase would have had at that time. This is the value to use for scale, it is exactly the size of the step in mPhase (which happens somewhere mid-sample). Then work out what value mPhase will have at the end of the current sample and set it accordingly.

Post

kryptonaut wrote:Can't quite get my head round your code but you seem to have got confused in there somewhere.
Agreed. I'm confused about this for sure but I have tried to follow your advise and the result is still loads of aliasing so I'm posting in this thread again with the hope that I can get this solved. Thanks very much for your response though kryptonaut :)

Below is my full code and the part in question 'Master resets Slave minBLEP:' is just a few lines long. I already know that the populateCircularBufferForSawtoothWave method is correct as it produces a perfect result for a non-Hard Sync sawtooth:

Code: Select all

mSyncPhase += mSyncPhaseIncrement;
            mPhase += mPhaseIncrement;
            index = (index+1)%cirBuffSize;
            
            //Master resets Slave minBLEP:
            if(mSyncPhase > 1.0)
            {
                
                //When mSyncPhase exceeds 1.0, subtract 1.0 from it:
                mSyncPhase -= 1.f;
                
                //Calculate the exact time when mSyncPhase would have reached 1.0 (this is the value to use for exactCrossTime):
                double exactCrossTime = mSyncPhase/mSyncPhaseIncrement;
                
                //Work out what value mPhase would have had at that time. This is the value to use for scale, it is exactly the size of the step in mPhase (which happens somewhere mid-sample):
                double scale = fmod (1.f/mSyncFrequency,1.f/mFrequency);
                
                //Populate the circular buffer:
                populateCircularBufferForSawtoothWave(exactCrossTime, scale);
                
                //Work out what value mPhase will have at the end of the current sample and set it accordingly:
                mPhase = exactCrossTime * mPhaseIncrement;
                
            }
            
            //Normal minBLEP:
            while(mPhase >= 1.0)
            {
                mPhase -= 1.0;
                double exactCrossTime = 1.0-((mPhaseIncrement-mPhase)/mPhaseIncrement);
                populateCircularBufferForSawtoothWave(exactCrossTime, 1.f);
            }
            
            circularBuffer[index] += (mPhase-mPhaseIncrement);
            double output = 1.7f *(circularBuffer[index] - 0.4f);
            circularBuffer[index] = 0.0;
Breaking it down bit by bit:
When mSyncPhase exceeds 1.0, subtract 1.0 from it.

Code: Select all

mSyncPhase -= 1.f; 
OK, so I'm sure this is correct :D
Calculate the exact time when mSyncPhase would have reached 1.0 (this is the value to use for exactCrossTime)
Image

Well, I drew a picture illustrating the distance from the discontinuity and it seems to me that the exact cross time at our current sample (b) is very simply the Sync Phase divided by the Sync Phase Increment:

Code: Select all

double exactCrossTime = mSyncPhase/mSyncPhaseIncrement;
However, this disagrees with the way the exact cross time is calculated for 'normal reset' as outlined by Amusesmile earlier in this thread:

Code: Select all

double exactCrossTime = 1.0-((mPhaseIncrement-mPhase)/mPhaseIncrement);
So, I tried both my 'intuition' for the exact cross time and the latter (more on this soon)
Work out what value mPhase would have had at that time. This is the value to use for scale, it is exactly the size of the step in mPhase (which happens somewhere mid-sample).

Code: Select all

double scale = fmod (1.f/mSyncFrequency,1.f/mFrequency);
I'm pretty sure that for a slave and master frequency, this scale calculation is correct.
Then work out what value mPhase will have at the end of the current sample and set it accordingly.

Code: Select all

mPhase = exactCrossTime * mPhaseIncrement;
OK, so after the help from kryptonaut and drawing my little sketch and thinking a little more about the issue it seems obvious that at point b, mPhase must be set to the right value as it is already part way through it's cycle. I again used intuition to deduce that this would be the crosstime, multiplied by the mPhaseIncrement.

4 ways: so, since I was unsure about which version of exactCrossTime was right and what mPhase should be set to, I tried 4 combinations and they all led to aliasing HS, though the waveform always looked right:

Image

Spectrum 1 = my intuition for crosstime and mPhase = exactCrossTime * mPhaseIncrement:

Image

Spectrum 2 = my intuition for crosstime and mPhase = exactCrossTime * mSyncPhaseIncrement:

Image

Spectrum 3 = same crosstime calc (for Sync) and mPhase = exactCrossTime * mPhaseIncrement:

Image

Spectrum 4 = same crosstime calc (for Sync) and mPhase = exactCrossTime * mSyncPhaseIncrement:

Image

I'm sure you all know what Hard Sync on an analogue synth looks like but here's one of mine doing HS:

Image

While this isn't the same master slave ratio it shows that my current minBLEP efforts are way off! Though I suspect minBLEP doesn't produce such a clean spectrum anyway.

Anyway, thanks for reading this far but if anybody can comment on those 3 lines of code that might be wrong I'd appreciate it. Thanks :help:

Post

d_m_chambers_ wrote:Image
Your Syncphase is between "a" and your crossing line. Not between your crossing line and "b".

Post

If you work it out,

Code: Select all

double exactCrossTime = 1.0-((mPhaseIncrement-mPhase)/mPhaseIncrement);
is identical to the 'intuitive' method

Code: Select all

double exactCrossTime = mPhase/mPhaseIncrement;
As Urs points out, the crosstime you are calculating is the time between the crosstime and the end of the sample period - worth checking that's what populateCircularBufferForSawtoothWave requires. You may need to pass in 1-crosstime instead? If mPhaseIncrement is the reciprocal of a whole number then for your straight sawtooth (no HS) you will always get a crosstime of very near to 0 (or possibly very near to 1), which might hide errors in the usage of populateCircularBufferForSawtoothWave - verify your nonHS wave works with arbitrary frequencies or phaseincrements first.

The code

Code: Select all

double scale = fmod (1.f/mSyncFrequency,1.f/mFrequency);
looks rather clunky and inefficient. (No idea if it's correct, but the plots look a bit wrong around the small sawtooth step.) The size of the step in mPhase (which is what you want to use for scale) is simply the value it would have had minus the value it actually gets reset to, i.e. rearranging things a bit:

Code: Select all

// calculate new value for Phase
double newPhase=exactCrossTime * mPhaseIncrement;
// calculate step in Phase
double scale=mPhase-newPhase;
// add in the minBLEP
populateCircularBufferForSawtoothWave(exactCrossTime, scale);
// update Phase
mPhase=newPhase;
Give that a try, after checking that the first parameter to populate... is meant to be used the way you are using it.

Post

kryptonaut wrote: The code

Code: Select all

double scale = fmod (1.f/mSyncFrequency,1.f/mFrequency);
looks rather clunky and inefficient. (No idea if it's correct, but the plots look a bit wrong around the small sawtooth step.) The size of the step in mPhase (which is what you want to use for scale) is simply the value it would have had minus the value it actually gets reset to, i.e. rearranging things a bit:
My thoughts exactly .. doesn't make any sense. The "newPhase" calculation is also wrong.

The correct (at least the easiest) way is as follows:

1. solve the exact reset time (that part looks fine)

2. solve the slave-phase at that particular time (but don't set it as the actual slave phase!):
- if you didn't increment slave phase yet, then this is simply slavePhase+exactCrossTime*slaveFreq
- if you DID increment slave phase earlier, then this is slavePhase-(1-exactCrossTime)*slaveFreq since you need to go backwards in time

3. evaluate the waveform at the phase-value you solved in (2) and subtract it from the initial waveform value (at phase=0) .. the result is the correct scaling for the BLEP (for higher order BLEPs, repeat the same with any non-zero derivatives and scale results by slaveFreq^N for the Nth derivative; this assumes your BLEP tables are sensibly scaled.. but it's hard to get the trivial step wrong at least)

4. subtract the phase-value you solved in (2) from the actual slave phase, the result is the new slave phase

There is an additional corner case where a slave has a transition (either from one segment to another, or normal reset) earlier during the same sample, so after (1) you should then go and check for any events (transitions or resets) for the slave with the crossing time as the upper limit of what to process and only once the next event is past this time can you continue with (2..4) .. but it just takes some restructuring of code really so I'd just get the normal cases working fine first.

Post

Also, I don't know if anyone pointed that out yet... calculating a minBLEP in 32 bit floating point precision is rather bad. If you take the otherwise excellent code by Daniel Werner, make sure to change everything to double precision, especially the cepstrum and anything DFT. You can still keep the final minBLEP in a single precision float table. The difference should be audible.

Post

Also also - you appear to be allocating, creating and deleting the BLEP data in every call to populateCircularBufferForSawtoothWave - which is a bad idea (although it will probably work (slowly) until the heap gives up). Create the data once at startup, delete it at the end.

@mystran - what's wrong with the calculation of newPhase? It's the phaseincrement for a whole step multiplied by the post-crossing fraction of a step, which should be ok shouldn't it?

Post

As a practical tip, I structure my code something like this (depending a bit on what other features are required):

Code: Select all

void renderDualVCO(...)
{
   ..process some book-keeping..

   for ( samples )
   {
      ..process modulation, bump phases..

      // see below, master is "0" and slave is "1"
      // common case is "no sync" so i usually template it but .. doesn't matter really
      stepVCO<true>(state, 0, 1.)
      stepVCO<false>(state, 1, 1.)

      ..add naive waveforms to buffer ..
   }
}

template <bool doSync>
void stepVCO(VCO & vco, int id, float phaseLimit)
{
   VCO::State & state = vco.state[id];
   // would have a switch somewhere for wave-type usually
   // but let's just do saw
   while(true)
   {
      // for more complicated waves, we'd first check here what segment
      // the VCO claims to be in, then bump it forward (processing transitions) until the VCO
      // is actually process up to the segment that matches it's phase value.. with "reset" being
      // a special case "segment" at phase value ~1 (usually I vary the reset point slightly over time)
      // but saw-waves have no segments other than the one ramp so we just go straight into reset
      if(state.phase < resetPhase) return;
      double t = .. solve reset time ..
      if(t > phaseLimit) return; // only process up to limit
      // and the reason we have a limit is so we can do this!
      if(doSync) stepVCO(vco, id+1, t);

      resetVCO(vco, id, t);  // bleps for master
      resetVCO(vco, id+1, t); // bleps for slave
   }
}
This correct handles slave events before master events during the same sample. It correct handles slave events after master events as well (since we repeat stepVCO for slave with limit at 1 afterwards) and it even handles multiple master and slave events resets in any arbitrary order within the same sample .. and it can be extended rather trivially to arbitrary hard-sync chains if you think they would be useful.

As an exercise one can add analytic ring-mod too. It only works well for low order segments, because the number of non-zero derivatives gets out of control otherwise (and after a few they start having some numeric problems too, because the scaling factors involved can get pretty huge), but it's fine for saws and triangles and the like.. but essentially as long as you make sure to process events of the participating oscillators always in the order they happen in time, it's relatively simple to solve the derivatives of a transitioning oscillator multiplied by the instantaneous waveform of the other one and synthesize the correct band-limited ring-modulation too

Post

kryptonaut wrote: @mystran - what's wrong with the calculation of newPhase? It's the phaseincrement for a whole step multiplied by the post-crossing fraction of a step, which should be ok shouldn't it?
Does "exactCrossTime" go backwards from the end of the sample? If that's the case then I suppose you can do it like that as well.

Post

mystran wrote:
kryptonaut wrote: @mystran - what's wrong with the calculation of newPhase? It's the phaseincrement for a whole step multiplied by the post-crossing fraction of a step, which should be ok shouldn't it?
Does "exactCrossTime" go backwards from the end of the sample? If that's the case then I suppose you can do it like that as well.
Yes, in this code it does. The variable name is misleading, but I think the calculation I suggested is correct.

Post

kryptonaut wrote:verify your nonHS wave works with arbitrary frequencies or phaseincrements first.
Yep - I did some conditional logging and the passed in exact cross time had a variety of values and the non-HS wave is perfect for every midi note:

Code: Select all

2016-08-12 16:55:48,040 INFO  [default] exactCrossTime is > 0.4: 0.622601
2016-08-12 16:55:48,040 INFO  [default] exactCrossTime is > 0.4: 0.931582
2016-08-12 16:55:48,040 INFO  [default] exactCrossTime is > 0.4: 0.484743
2016-08-12 16:55:48,040 INFO  [default] exactCrossTime is > 0.4: 0.591064
2016-08-12 16:55:48,041 INFO  [default] exactCrossTime is > 0.4: 0.793724
2016-08-12 16:55:48,041 INFO  [default] exactCrossTime is > 0.4: 0.900045
2016-08-12 16:55:48,041 INFO  [default] exactCrossTime is > 0.4: 0.453206
2016-08-12 16:55:48,051 INFO  [default] exactCrossTime is > 0.4: 0.762187
2016-08-12 16:55:48,051 INFO  [default] exactCrossTime is > 0.4: 0.868508
2016-08-12 16:55:48,051 INFO  [default] exactCrossTime is > 0.4: 0.421669
2016-08-12 16:55:48,052 INFO  [default] exactCrossTime is > 0.4: 0.624329
2016-08-12 16:55:48,052 INFO  [default] exactCrossTime is > 0.4: 0.73065
kryptonaut wrote: Give that a try, after checking that the first parameter to populate... is meant to be used the way you are using it.
kryptonaut, your new phase calc did seem to help, the spectrum looked cleaner and there was a tad less aliasing (I think) but I'm starting to think Urs is onto something with his info about DW's code so I'll try his suggestion:
Urs wrote:Also, I don't know if anyone pointed that out yet... calculating a minBLEP in 32 bit floating point precision is rather bad. If you take the otherwise excellent code by Daniel Werner, make sure to change everything to double precision, especially the cepstrum and anything DFT. You can still keep the final minBLEP in a single precision float table. The difference should be audible.
Thanks Urs.
kryptonaut wrote:Also also - you appear to be allocating, creating and deleting the BLEP data in every call to populateCircularBufferForSawtoothWave - which is a bad idea (although it will probably work (slowly) until the heap gives up). Create the data once at startup, delete it at the end.
Yes, thanks - I originally had this done as you suggested but at some point my imagination must have told me this was a good idea or made an audible difference :D

@mystran - All your help and detail is amazing :) I've been banging my head against the wall for ages with this :dog: so I really appreciate all the help I'm getting today. I should have made it clearer that my buffer filling code is like amusesmile's orginal:

Code: Select all

inline void ZeusOsc::populateCircularBufferForSawtoothWave(float offset, float scale)
{
    const float *minBlep;
    MinBlepData *blepData= new MinBlepData();
    minBlep= blepData->getBlep();
    
    for(int i = 0; i < (cirBuffSize-1); i++)
    {
        double tempIndex = (offset*overS)+(i*overS);
        double tempFraction = tempIndex-floor(tempIndex);
        circularBuffer[(index+i)%cirBuffSize] += (scale-LERP(tempFraction, minBlep[(int)floor(tempIndex)], minBlep[(int)ceil(tempIndex)]) * scale);
    }
    
    delete blepData;
}
I'll try amending the DW data as per Urs suggestion and report back.

Post

Ok, well if examining the code doesn't shed any light, I'd suggest setting the master and slave frequencies so that the short 'synced' cycle is only fractionally short of a full one, and then look at it on a 'scope and check that the BLEP on the slightly short step looks pretty much like the others - i.e. the right amplitude, and starting at the right place. Then try making the short cycle around a half the length of the others and check the BLEP is halved in amplitude as well. If something is going wrong it may well be visible.

In the plots you showed, the ringing on the short synced step looks rather low in amplitude to me, and there also seems to be some curious pre-ringing which isn't seen on the full steps. Actually on the plots there also seems to be some kind of bump on the full steps, just after the ringing almost reaches zero. Are you adding the correct amount of data from the BLEP buffer into the circular buffer?

If everything looks right then maybe it is just numerical accuracy, but if your non-HS wave gives a clean spectrum then it seems that accuracy isn't the (main) problem.

Post

kryptonaut wrote:Ok, well if examining the code doesn't shed any light, I'd suggest setting the master and slave frequencies so that the short 'synced' cycle is only fractionally short of a full one, and then look at it on a 'scope and check that the BLEP on the slightly short step looks pretty much like the others - i.e. the right amplitude, and starting at the right place. Then try making the short cycle around a half the length of the others and check the BLEP is halved in amplitude as well. If something is going wrong it may well be visible.

In the plots you showed, the ringing on the short synced step looks rather low in amplitude to me, and there also seems to be some curious pre-ringing which isn't seen on the full steps. Actually on the plots there also seems to be some kind of bump on the full steps, just after the ringing almost reaches zero. Are you adding the correct amount of data from the BLEP buffer into the circular buffer?

If everything looks right then maybe it is just numerical accuracy, but if your non-HS wave gives a clean spectrum then it seems that accuracy isn't the (main) problem.
Hi. I'll take a closer look later tonight but I've exported some samples to Dropbox:

https://www.dropbox.com/sh/5po4hlvvxpan ... IFSEa?dl=0

They are notes C2 to C5:

Master 17 below Slave
Master 29 below Slave

and 'Some Sweeping'

So, the result is the best so far with the updated DW data and your suggestion for new phase. OBVIOUSLY this defeats the whole point of doing the minBLEP but a low pass filter, set to 0.8 so taking off the top 20% sounds quite nice but I'd still like to know how 'far away' my current HS sound is from what is achievable with minBLEP. Any comments welcome.

Master 17 below Slave Filtered
Master 29 below Slave Filtered
Some Sweeping Filtered
mystran wrote:
kryptonaut wrote: @mystran - what's wrong with the calculation of newPhase? It's the phaseincrement for a whole step multiplied by the post-crossing fraction of a step, which should be ok shouldn't it?
Does "exactCrossTime" go backwards from the end of the sample? If that's the case then I suppose you can do it like that as well.
mystan, do you think the current code is ok, or close anyway, or should I be following your steps?

The current (best sound so far but with aliasing):

Code: Select all

            mSyncPhase += mSyncPhaseIncrement;
            mPhase += mPhaseIncrement;
            index = (index+1)%cirBuffSize;
            
            //Master resets Slave minBLEP:
            if(mSyncPhase > 1.0)
            {
                
                //When mSyncPhase exceeds 1.0, subtract 1.0 from it:
                mSyncPhase -= 1.f;
                
                //Calculate the exact time when mSyncPhase would have reached 1.0 (this is the value to use for exactCrossTime):
                double exactCrossTime = mSyncPhase/mSyncPhaseIncrement;
                
                // calculate new value for Phase
                double newPhase=exactCrossTime * mPhaseIncrement;
                // calculate step in Phase
                double scale=mPhase-newPhase;
                // add in the minBLEP
                populateCircularBufferForSawtoothWave(exactCrossTime, scale);
                // update Phase
                mPhase=newPhase;

            }
            
            //Normal minBLEP:
            while(mPhase >= 1.0)
            {
                mPhase -= 1.0;
                double exactCrossTime = 1.0-((mPhaseIncrement-mPhase)/mPhaseIncrement);
                populateCircularBufferForSawtoothWave(exactCrossTime, 1.f);
            }
            
            circularBuffer[index] += (mPhase-mPhaseIncrement);
            double output = 1.7f *(circularBuffer[index] - 0.4f);
            circularBuffer[index] = 0.0;
Where:

Code: Select all

inline void ZeusOsc::populateCircularBufferForSawtoothWave(float offset, float scale)
{
    const float *minBlep;
    MinBlepData *blepData= new MinBlepData();
    minBlep= blepData->getBlep();
    
    for(int i = 0; i < (cirBuffSize-1); i++)
    {
        double tempIndex = (offset*overS)+(i*overS);
        double tempFraction = tempIndex-floor(tempIndex);
        circularBuffer[(index+i)%cirBuffSize] += (scale-LERP(tempFraction, minBlep[(int)floor(tempIndex)], minBlep[(int)ceil(tempIndex)]) * scale);
    }
    
    delete blepData;
}
And for completeness, the updated to double precision DW minBLEP data:

Code: Select all

//cirBuffSize(48), overS(64) = 3072 samples
const float ursSuggestedMinBlep64[]= {
    -6.41329e-07
    ,-2.68114e-06
    ,-1.92188e-06
    ,5.01661e-07
    ,5.36056e-06
    ,1.27453e-05
    ,2.19583e-05
    ,3.40409e-05
    ,4.86688e-05
    ,6.59722e-05
    ,8.53181e-05
    ,0.000107264
    ,0.000131772
    ,0.000159247
    ,0.000189718
    ,0.000222791
    ,0.000259003
    ,0.000298344
    ,0.000340659
    ,0.000386559
    ,0.000435725
    ,0.000488586
    ,0.000545389
    ,0.000606379
    ,0.000670998
    ,0.000739954
    ,0.000813732
    ,0.000892148
    ,0.000976019
    ,0.0010647
    ,0.00115936
    ,0.00125996
    ,0.00136648
    ,0.0014798
    ,0.00160014
    ,0.00172811
    ,0.00186371
    ,0.002008
    ,0.00216105
    ,0.00232353
    ,0.0024956
    ,0.00267815
    ,0.00287185
    ,0.00307716
    ,0.00329531
    ,0.0035263
    ,0.00377136
    ,0.00403096
    ,0.0043058
    ,0.00459726
    ,0.00490579
    ,0.00523273
    ,0.00557866
    ,0.00594474
    ,0.00633186
    ,0.00674157
    ,0.00717464
    ,0.00763211
    ,0.00811557
    ,0.00862597
    ,0.00916483
    ,0.00973351
    ,0.0103332
    ,0.0109652
    ,0.0116314
    ,0.0123331
    ,0.013072
    ,0.0138496
    ,0.0146674
    ,0.0155274
    ,0.0164309
    ,0.0173797
    ,0.0183759
    ,0.0194213
    ,0.0205178
    ,0.0216672
    ,0.0228713
    ,0.0241324
    ,0.0254527
    ,0.0268331
    ,0.0282771
    ,0.0297859
    ,0.0313621
    ,0.0330076
    ,0.0347249
    ,0.0365159
    ,0.0383827
    ,0.0403279
    ,0.0423538
    ,0.0444626
    ,0.0466563
    ,0.0489377
    ,0.0513087
    ,0.0537717
    ,0.0563294
    ,0.0589837
    ,0.0617369
    ,0.0645916
    ,0.0675499
    ,0.070614
    ,0.0737863
    ,0.077069
    ,0.0804644
    ,0.0839748
    ,0.0876021
    ,0.0913488
    ,0.095217
    ,0.0992083
    ,0.103325
    ,0.107569
    ,0.111943
    ,0.116448
    ,0.121085
    ,0.125858
    ,0.130767
    ,0.135814
    ,0.141001
    ,0.14633
    ,0.1518
    ,0.157415
    ,0.163175
    ,0.169081
    ,0.175134
    ,0.181336
    ,0.187687
    ,0.194187
    ,0.200838
    ,0.20764
    ,0.214594
    ,0.221699
    ,0.228956
    ,0.236365
    ,0.243926
    ,0.251638
    ,0.259502
    ,0.267516
    ,0.27568
    ,0.283994
    ,0.292456
    ,0.301066
    ,0.309821
    ,0.318722
    ,0.327765
    ,0.33695
    ,0.346275
    ,0.355738
    ,0.365336
    ,0.375067
    ,0.38493
    ,0.39492
    ,0.405036
    ,0.415274
    ,0.425631
    ,0.436105
    ,0.446691
    ,0.457387
    ,0.468187
    ,0.479089
    ,0.490088
    ,0.50118
    ,0.512361
    ,0.523626
    ,0.534971
    ,0.54639
    ,0.557879
    ,0.569433
    ,0.581046
    ,0.592712
    ,0.604428
    ,0.616186
    ,0.627981
    ,0.639808
    ,0.651659
    ,0.66353
    ,0.675414
    ,0.687304
    ,0.699194
    ,0.711078
    ,0.72295
    ,0.734801
    ,0.746627
    ,0.75842
    ,0.770173
    ,0.781879
    ,0.793532
    ,0.805124
    ,0.816648
    ,0.828098
    ,0.839467
    ,0.850747
    ,0.861931
    ,0.873013
    ,0.883986
    ,0.894841
    ,0.905574
    ,0.916176
    ,0.926641
    ,0.936962
    ,0.947133
    ,0.957146
    ,0.966995
    ,0.976675
    ,0.986177
    ,0.995497
    ,1.00463
    ,1.01356
    ,1.0223
    ,1.03083
    ,1.03915
    ,1.04725
    ,1.05512
    ,1.06277
    ,1.07019
    ,1.07737
    ,1.08431
    ,1.091
    ,1.09744
    ,1.10363
    ,1.10956
    ,1.11523
    ,1.12063
    ,1.12577
    ,1.13064
    ,1.13523
    ,1.13956
    ,1.1436
    ,1.14737
    ,1.15086
    ,1.15407
    ,1.15699
    ,1.15964
    ,1.162
    ,1.16409
    ,1.16589
    ,1.16741
    ,1.16865
    ,1.16961
    ,1.17029
    ,1.1707
    ,1.17083
    ,1.1707
    ,1.17029
    ,1.16962
    ,1.16869
    ,1.16749
    ,1.16605
    ,1.16435
    ,1.1624
    ,1.16022
    ,1.15779
    ,1.15514
    ,1.15225
    ,1.14915
    ,1.14583
    ,1.1423
    ,1.13856
    ,1.13464
    ,1.13052
    ,1.12621
    ,1.12174
    ,1.11709
    ,1.11229
    ,1.10733
    ,1.10222
    ,1.09698
    ,1.09161
    ,1.08612
    ,1.08051
    ,1.0748
    ,1.069
    ,1.06311
    ,1.05714
    ,1.0511
    ,1.04501
    ,1.03886
    ,1.03267
    ,1.02645
    ,1.0202
    ,1.01393
    ,1.00766
    ,1.0014
    ,0.995142
    ,0.988908
    ,0.982702
    ,0.976534
    ,0.970412
    ,0.964346
    ,0.958342
    ,0.952411
    ,0.946559
    ,0.940795
    ,0.935126
    ,0.92956
    ,0.924105
    ,0.918768
    ,0.913555
    ,0.908475
    ,0.903532
    ,0.898735
    ,0.894088
    ,0.889598
    ,0.885271
    ,0.881112
    ,0.877125
    ,0.873317
    ,0.86969
    ,0.866251
    ,0.863001
    ,0.859946
    ,0.857089
    ,0.854432
    ,0.851978
    ,0.84973
    ,0.847689
    ,0.845858
    ,0.844238
    ,0.842829
    ,0.841633
    ,0.84065
    ,0.83988
    ,0.839322
    ,0.838977
    ,0.838843
    ,0.838919
    ,0.839204
    ,0.839694
    ,0.84039
    ,0.841286
    ,0.842382
    ,0.843673
    ,0.845157
    ,0.846829
    ,0.848686
    ,0.850723
    ,0.852935
    ,0.855319
    ,0.857868
    ,0.860577
    ,0.863441
    ,0.866454
    ,0.86961
    ,0.872903
    ,0.876327
    ,0.879874
    ,0.883537
    ,0.887311
    ,0.891188
    ,0.89516
    ,0.899221
    ,0.903363
    ,0.907578
    ,0.911859
    ,0.916197
    ,0.920586
    ,0.925017
    ,0.929482
    ,0.933974
    ,0.938484
    ,0.943005
    ,0.947529
    ,0.952048
    ,0.956554
    ,0.96104
    ,0.965497
    ,0.969919
    ,0.974297
    ,0.978624
    ,0.982894
    ,0.987098
    ,0.99123
    ,0.995284
    ,0.999252
    ,1.00313
    ,1.0069
    ,1.01058
    ,1.01414
    ,1.01759
    ,1.02091
    ,1.02411
    ,1.02718
    ,1.03011
    ,1.0329
    ,1.03555
    ,1.03804
    ,1.04039
    ,1.04258
    ,1.04461
    ,1.04648
    ,1.04818
    ,1.04972
    ,1.0511
    ,1.0523
    ,1.05333
    ,1.0542
    ,1.05489
    ,1.0554
    ,1.05575
    ,1.05592
    ,1.05593
    ,1.05576
    ,1.05543
    ,1.05493
    ,1.05426
    ,1.05343
    ,1.05244
    ,1.05129
    ,1.04999
    ,1.04854
    ,1.04693
    ,1.04519
    ,1.0433
    ,1.04128
    ,1.03913
    ,1.03685
    ,1.03445
    ,1.03193
    ,1.02931
    ,1.02658
    ,1.02374
    ,1.02082
    ,1.01781
    ,1.01471
    ,1.01154
    ,1.0083
    ,1.005
    ,1.00164
    ,0.998239
    ,0.994791
    ,0.991308
    ,0.987795
    ,0.984261
    ,0.980711
    ,0.977154
    ,0.973595
    ,0.970041
    ,0.9665
    ,0.962977
    ,0.95948
    ,0.956015
    ,0.952589
    ,0.949207
    ,0.945876
    ,0.942603
    ,0.939393
    ,0.936252
    ,0.933186
    ,0.930201
    ,0.927301
    ,0.924492
    ,0.921778
    ,0.919166
    ,0.916658
    ,0.91426
    ,0.911975
    ,0.909807
    ,0.90776
    ,0.905838
    ,0.904043
    ,0.902378
    ,0.900846
    ,0.899449
    ,0.898189
    ,0.897067
    ,0.896086
    ,0.895247
    ,0.89455
    ,0.893996
    ,0.893585
    ,0.893318
    ,0.893194
    ,0.893213
    ,0.893374
    ,0.893676
    ,0.894117
    ,0.894696
    ,0.895411
    ,0.896261
    ,0.897242
    ,0.898352
    ,0.899588
    ,0.900947
    ,0.902426
    ,0.904021
    ,0.905729
    ,0.907545
    ,0.909465
    ,0.911485
    ,0.913601
    ,0.915807
    ,0.918099
    ,0.920472
    ,0.92292
    ,0.925439
    ,0.928022
    ,0.930665
    ,0.933362
    ,0.936106
    ,0.938893
    ,0.941716
    ,0.94457
    ,0.947449
    ,0.950346
    ,0.953256
    ,0.956174
    ,0.959091
    ,0.962005
    ,0.964907
    ,0.967792
    ,0.970655
    ,0.97349
    ,0.976291
    ,0.979053
    ,0.98177
    ,0.984437
    ,0.987049
    ,0.989601
    ,0.992087
    ,0.994503
    ,0.996845
    ,0.999108
    ,1.00129
    ,1.00338
    ,1.00538
    ,1.00729
    ,1.0091
    ,1.0108
    ,1.0124
    ,1.0139
    ,1.01528
    ,1.01656
    ,1.01772
    ,1.01876
    ,1.01969
    ,1.02049
    ,1.02118
    ,1.02174
    ,1.02219
    ,1.02251
    ,1.02271
    ,1.02279
    ,1.02274
    ,1.02258
    ,1.0223
    ,1.02189
    ,1.02137
    ,1.02074
    ,1.01999
    ,1.01913
    ,1.01816
    ,1.01708
    ,1.0159
    ,1.01462
    ,1.01324
    ,1.01177
    ,1.0102
    ,1.00855
    ,1.00681
    ,1.005
    ,1.00311
    ,1.00114
    ,0.999115
    ,0.997024
    ,0.994875
    ,0.992674
    ,0.990425
    ,0.988133
    ,0.985803
    ,0.983441
    ,0.98105
    ,0.978637
    ,0.976207
    ,0.973764
    ,0.971315
    ,0.968863
    ,0.966415
    ,0.963975
    ,0.961549
    ,0.959142
    ,0.956758
    ,0.954403
    ,0.952081
    ,0.949797
    ,0.947557
    ,0.945363
    ,0.943221
    ,0.941135
    ,0.939109
    ,0.937148
    ,0.935254
    ,0.933432
    ,0.931686
    ,0.930018
    ,0.928432
    ,0.926931
    ,0.925517
    ,0.924194
    ,0.922964
    ,0.921828
    ,0.920788
    ,0.919848
    ,0.919008
    ,0.918269
    ,0.917633
    ,0.9171
    ,0.916671
    ,0.916347
    ,0.916128
    ,0.916014
    ,0.916004
    ,0.916098
    ,0.916296
    ,0.916596
    ,0.916998
    ,0.9175
    ,0.9181
    ,0.918798
    ,0.91959
    ,0.920475
    ,0.921451
    ,0.922515
    ,0.923664
    ,0.924896
    ,0.926207
    ,0.927594
    ,0.929054
    ,0.930584
    ,0.93218
    ,0.933838
    ,0.935554
    ,0.937325
    ,0.939146
    ,0.941013
    ,0.942922
    ,0.944868
    ,0.946849
    ,0.948857
    ,0.95089
    ,0.952943
    ,0.955012
    ,0.957091
    ,0.959177
    ,0.961264
    ,0.963348
    ,0.965425
    ,0.96749
    ,0.969539
    ,0.971567
    ,0.973571
    ,0.975545
    ,0.977487
    ,0.979391
    ,0.981253
    ,0.983071
    ,0.984839
    ,0.986555
    ,0.988215
    ,0.989816
    ,0.991353
    ,0.992825
    ,0.994228
    ,0.995561
    ,0.996819
    ,0.998
    ,0.999104
    ,1.00013
    ,1.00107
    ,1.00192
    ,1.00269
    ,1.00337
    ,1.00397
    ,1.00447
    ,1.00489
    ,1.00522
    ,1.00545
    ,1.00559
    ,1.00565
    ,1.00561
    ,1.00548
    ,1.00527
    ,1.00496
    ,1.00457
    ,1.00409
    ,1.00353
    ,1.00289
    ,1.00216
    ,1.00135
    ,1.00047
    ,0.99951
    ,0.998479
    ,0.997377
    ,0.996209
    ,0.994976
    ,0.993682
    ,0.99233
    ,0.990922
    ,0.989463
    ,0.987956
    ,0.986403
    ,0.98481
    ,0.98318
    ,0.981515
    ,0.979821
    ,0.978101
    ,0.976359
    ,0.974598
    ,0.972824
    ,0.971039
    ,0.969248
    ,0.967455
    ,0.965663
    ,0.963877
    ,0.962101
    ,0.960338
    ,0.958592
    ,0.956868
    ,0.955168
    ,0.953497
    ,0.951858
    ,0.950255
    ,0.94869
    ,0.947168
    ,0.945691
    ,0.944263
    ,0.942886
    ,0.941563
    ,0.940298
    ,0.939092
    ,0.937948
    ,0.936869
    ,0.935855
    ,0.934911
    ,0.934036
    ,0.933233
    ,0.932504
    ,0.931849
    ,0.931269
    ,0.930766
    ,0.930341
    ,0.929994
    ,0.929725
    ,0.929536
    ,0.929425
    ,0.929392
    ,0.929439
    ,0.929563
    ,0.929765
    ,0.930043
    ,0.930397
    ,0.930827
    ,0.931329
    ,0.931903
    ,0.932548
    ,0.93326
    ,0.93404
    ,0.934885
    ,0.935792
    ,0.936759
    ,0.937784
    ,0.938864
    ,0.939996
    ,0.941179
    ,0.942408
    ,0.943682
    ,0.944996
    ,0.946348
    ,0.947735
    ,0.949153
    ,0.9506
    ,0.952072
    ,0.953564
    ,0.955075
    ,0.9566
    ,0.958136
    ,0.959679
    ,0.961226
    ,0.962774
    ,0.964319
    ,0.965857
    ,0.967386
    ,0.968901
    ,0.9704
    ,0.971879
    ,0.973334
    ,0.974764
    ,0.976164
    ,0.977532
    ,0.978864
    ,0.980158
    ,0.981411
    ,0.98262
    ,0.983783
    ,0.984898
    ,0.985961
    ,0.986973
    ,0.987928
    ,0.988827
    ,0.989666
    ,0.990446
    ,0.991164
    ,0.991818
    ,0.992408
    ,0.992933
    ,0.993391
    ,0.993781
    ,0.994104
    ,0.994359
    ,0.994545
    ,0.994663
    ,0.994712
    ,0.994693
    ,0.994606
    ,0.994452
    ,0.99423
    ,0.993942
    ,0.993589
    ,0.993172
    ,0.992692
    ,0.992151
    ,0.991549
    ,0.990889
    ,0.990172
    ,0.9894
    ,0.988576
    ,0.987701
    ,0.986777
    ,0.985807
    ,0.984793
    ,0.983738
    ,0.982643
    ,0.981513
    ,0.98035
    ,0.979155
    ,0.977934
    ,0.976687
    ,0.975418
    ,0.97413
    ,0.972826
    ,0.971509
    ,0.970182
    ,0.968849
    ,0.967511
    ,0.966173
    ,0.964837
    ,0.963507
    ,0.962185
    ,0.960874
    ,0.959578
    ,0.958299
    ,0.957039
    ,0.955803
    ,0.954591
    ,0.953408
    ,0.952256
    ,0.951136
    ,0.950053
    ,0.949007
    ,0.948001
    ,0.947037
    ,0.946118
    ,0.945245
    ,0.944419
    ,0.943644
    ,0.942919
    ,0.942247
    ,0.941629
    ,0.941066
    ,0.940559
    ,0.940109
    ,0.939717
    ,0.939383
    ,0.939108
    ,0.938892
    ,0.938737
    ,0.93864
    ,0.938604
    ,0.938627
    ,0.938709
    ,0.938849
    ,0.939048
    ,0.939304
    ,0.939617
    ,0.939985
    ,0.940408
    ,0.940884
    ,0.941412
    ,0.941991
    ,0.942618
    ,0.943293
    ,0.944014
    ,0.944778
    ,0.945585
    ,0.946431
    ,0.947314
    ,0.948233
    ,0.949186
    ,0.950169
    ,0.951181
    ,0.952219
    ,0.953281
    ,0.954363
    ,0.955464
    ,0.956582
    ,0.957712
    ,0.958853
    ,0.960002
    ,0.961156
    ,0.962313
    ,0.963469
    ,0.964623
    ,0.965772
    ,0.966912
    ,0.968042
    ,0.969159
    ,0.970261
    ,0.971344
    ,0.972407
    ,0.973446
    ,0.974462
    ,0.975449
    ,0.976408
    ,0.977334
    ,0.978227
    ,0.979085
    ,0.979905
    ,0.980687
    ,0.981427
    ,0.982126
    ,0.982782
    ,0.983392
    ,0.983956
    ,0.984473
    ,0.984942
    ,0.985363
    ,0.985732
    ,0.986053
    ,0.986321
    ,0.986539
    ,0.986706
    ,0.98682
    ,0.986883
    ,0.986895
    ,0.986855
    ,0.986764
    ,0.986621
    ,0.986429
    ,0.986188
    ,0.985897
    ,0.985559
    ,0.985175
    ,0.984744
    ,0.984269
    ,0.983751
    ,0.983191
    ,0.982591
    ,0.981953
    ,0.981277
    ,0.980566
    ,0.979821
    ,0.979045
    ,0.978239
    ,0.977404
    ,0.976545
    ,0.975662
    ,0.974757
    ,0.973833
    ,0.972892
    ,0.971936
    ,0.970968
    ,0.96999
    ,0.969004
    ,0.968012
    ,0.967017
    ,0.966021
    ,0.965026
    ,0.964035
    ,0.96305
    ,0.962074
    ,0.961108
    ,0.960154
    ,0.959215
    ,0.958294
    ,0.957391
    ,0.956508
    ,0.95565
    ,0.954816
    ,0.954008
    ,0.953229
    ,0.95248
    ,0.951762
    ,0.951078
    ,0.950428
    ,0.949815
    ,0.949239
    ,0.948701
    ,0.948202
    ,0.947744
    ,0.947328
    ,0.946954
    ,0.946622
    ,0.946333
    ,0.946089
    ,0.945888
    ,0.945733
    ,0.945622
    ,0.945555
    ,0.945533
    ,0.945556
    ,0.945623
    ,0.945734
    ,0.945888
    ,0.946085
    ,0.946324
    ,0.946605
    ,0.946927
    ,0.947288
    ,0.947687
    ,0.948125
    ,0.948599
    ,0.949107
    ,0.94965
    ,0.950225
    ,0.950831
    ,0.951466
    ,0.952128
    ,0.952817
    ,0.95353
    ,0.954266
    ,0.955022
    ,0.955797
    ,0.956589
    ,0.957396
    ,0.958217
    ,0.959048
    ,0.959889
    ,0.960736
    ,0.961589
    ,0.962445
    ,0.963302
    ,0.964159
    ,0.965012
    ,0.96586
    ,0.966702
    ,0.967535
    ,0.968357
    ,0.969167
    ,0.969962
    ,0.970741
    ,0.971503
    ,0.972245
    ,0.972965
    ,0.973664
    ,0.974337
    ,0.974985
    ,0.975606
    ,0.976198
    ,0.976761
    ,0.977293
    ,0.977792
    ,0.978259
    ,0.978692
    ,0.979089
    ,0.979452
    ,0.979778
    ,0.980068
    ,0.98032
    ,0.980534
    ,0.98071
    ,0.980848
    ,0.980948
    ,0.981009
    ,0.981031
    ,0.981015
    ,0.980961
    ,0.98087
    ,0.980741
    ,0.980576
    ,0.980373
    ,0.980135
    ,0.979863
    ,0.979556
    ,0.979215
    ,0.978843
    ,0.978439
    ,0.978005
    ,0.977542
    ,0.97705
    ,0.976533
    ,0.97599
    ,0.975423
    ,0.974835
    ,0.974224
    ,0.973595
    ,0.972948
    ,0.972285
    ,0.971607
    ,0.970916
    ,0.970214
    ,0.969503
    ,0.968784
    ,0.968058
    ,0.967328
    ,0.966596
    ,0.965863
    ,0.96513
    ,0.9644
    ,0.963674
    ,0.962955
    ,0.962242
    ,0.961539
    ,0.960847
    ,0.960167
    ,0.959501
    ,0.95885
    ,0.958216
    ,0.957601
    ,0.957005
    ,0.956429
    ,0.955876
    ,0.955347
    ,0.954841
    ,0.954362
    ,0.953908
    ,0.953482
    ,0.953085
    ,0.952717
    ,0.952378
    ,0.95207
    ,0.951793
    ,0.951548
    ,0.951334
    ,0.951153
    ,0.951005
    ,0.950889
    ,0.950806
    ,0.950756
    ,0.950739
    ,0.950755
    ,0.950803
    ,0.950883
    ,0.950995
    ,0.951139
    ,0.951314
    ,0.951519
    ,0.951753
    ,0.952018
    ,0.95231
    ,0.95263
    ,0.952976
    ,0.953348
    ,0.953745
    ,0.954165
    ,0.954608
    ,0.955071
    ,0.955555
    ,0.956058
    ,0.956578
    ,0.957116
    ,0.957668
    ,0.958233
    ,0.958811
    ,0.959399
    ,0.959996
    ,0.960602
    ,0.961213
    ,0.96183
    ,0.96245
    ,0.963072
    ,0.963694
    ,0.964315
    ,0.964934
    ,0.965549
    ,0.966159
    ,0.966762
    ,0.967357
    ,0.967942
    ,0.968516
    ,0.969079
    ,0.969628
    ,0.970162
    ,0.970681
    ,0.971182
    ,0.971666
    ,0.97213
    ,0.972575
    ,0.972998
    ,0.973399
    ,0.973778
    ,0.974133
    ,0.974463
    ,0.974769
    ,0.975049
    ,0.975304
    ,0.975532
    ,0.975732
    ,0.975906
    ,0.976052
    ,0.976171
    ,0.976261
    ,0.976323
    ,0.976358
    ,0.976365
    ,0.976344
    ,0.976295
    ,0.97622
    ,0.976117
    ,0.975988
    ,0.975832
    ,0.975651
    ,0.975444
    ,0.975214
    ,0.974959
    ,0.974682
    ,0.974382
    ,0.974061
    ,0.97372
    ,0.973358
    ,0.972978
    ,0.97258
    ,0.972165
    ,0.971735
    ,0.971289
    ,0.970831
    ,0.970361
    ,0.969879
    ,0.969388
    ,0.968888
    ,0.968381
    ,0.967867
    ,0.967349
    ,0.966827
    ,0.966302
    ,0.965776
    ,0.965251
    ,0.964727
    ,0.964205
    ,0.963687
    ,0.963174
    ,0.962667
    ,0.962168
    ,0.961677
    ,0.961196
    ,0.960726
    ,0.960267
    ,0.959821
    ,0.959389
    ,0.958972
    ,0.95857
    ,0.958185
    ,0.957817
    ,0.957467
    ,0.957136
    ,0.956824
    ,0.956533
    ,0.956263
    ,0.956013
    ,0.955786
    ,0.95558
    ,0.955397
    ,0.955237
    ,0.9551
    ,0.954986
    ,0.954895
    ,0.954829
    ,0.954785
    ,0.954766
    ,0.954769
    ,0.954796
    ,0.954847
    ,0.954919
    ,0.955015
    ,0.955133
    ,0.955272
    ,0.955433
    ,0.955615
    ,0.955818
    ,0.95604
    ,0.956281
    ,0.956541
    ,0.956818
    ,0.957112
    ,0.957422
    ,0.957748
    ,0.958088
    ,0.958441
    ,0.958808
    ,0.959186
    ,0.959574
    ,0.959973
    ,0.96038
    ,0.960795
    ,0.961216
    ,0.961644
    ,0.962075
    ,0.96251
    ,0.962948
    ,0.963387
    ,0.963827
    ,0.964266
    ,0.964703
    ,0.965138
    ,0.965568
    ,0.965994
    ,0.966415
    ,0.966829
    ,0.967234
    ,0.967632
    ,0.968019
    ,0.968397
    ,0.968764
    ,0.969117
    ,0.969459
    ,0.969786
    ,0.9701
    ,0.970398
    ,0.970681
    ,0.970948
    ,0.971199
    ,0.971432
    ,0.971648
    ,0.971846
    ,0.972024
    ,0.972184
    ,0.972326
    ,0.972447
    ,0.97255
    ,0.972633
    ,0.972696
    ,0.97274
    ,0.972763
    ,0.972767
    ,0.972752
    ,0.972717
    ,0.972662
    ,0.972589
    ,0.972498
    ,0.972388
    ,0.97226
    ,0.972114
    ,0.971951
    ,0.971772
    ,0.971576
    ,0.971365
    ,0.971139
    ,0.970898
    ,0.970645
    ,0.970377
    ,0.970098
    ,0.969807
    ,0.969505
    ,0.969193
    ,0.968872
    ,0.968543
    ,0.968205
    ,0.967861
    ,0.967511
    ,0.967157
    ,0.966798
    ,0.966437
    ,0.966073
    ,0.965707
    ,0.965341
    ,0.964975
    ,0.96461
    ,0.964247
    ,0.963887
    ,0.963531
    ,0.963179
    ,0.962833
    ,0.962494
    ,0.962161
    ,0.961836
    ,0.96152
    ,0.961213
    ,0.960914
    ,0.960627
    ,0.960351
    ,0.960087
    ,0.959835
    ,0.959595
    ,0.95937
    ,0.959157
    ,0.958959
    ,0.958776
    ,0.958607
    ,0.958453
    ,0.958316
    ,0.958194
    ,0.958089
    ,0.957999
    ,0.957925
    ,0.957868
    ,0.957827
    ,0.957802
    ,0.957794
    ,0.957802
    ,0.957826
    ,0.957867
    ,0.957923
    ,0.957994
    ,0.958081
    ,0.958184
    ,0.9583
    ,0.958432
    ,0.958576
    ,0.958735
    ,0.958906
    ,0.959091
    ,0.959286
    ,0.959493
    ,0.959711
    ,0.95994
    ,0.960178
    ,0.960426
    ,0.960681
    ,0.960944
    ,0.961215
    ,0.961492
    ,0.961775
    ,0.962062
    ,0.962354
    ,0.962649
    ,0.962947
    ,0.963248
    ,0.963549
    ,0.963851
    ,0.964154
    ,0.964455
    ,0.964755
    ,0.965052
    ,0.965346
    ,0.965637
    ,0.965923
    ,0.966205
    ,0.96648
    ,0.966748
    ,0.967011
    ,0.967266
    ,0.967513
    ,0.967751
    ,0.96798
    ,0.968199
    ,0.968409
    ,0.968609
    ,0.968797
    ,0.968973
    ,0.969139
    ,0.969292
    ,0.969434
    ,0.969562
    ,0.969678
    ,0.96978
    ,0.96987
    ,0.969946
    ,0.970009
    ,0.970059
    ,0.970095
    ,0.970117
    ,0.970126
    ,0.970121
    ,0.970104
    ,0.970073
    ,0.97003
    ,0.969973
    ,0.969905
    ,0.969824
    ,0.969731
    ,0.969627
    ,0.96951
    ,0.969383
    ,0.969245
    ,0.969096
    ,0.968938
    ,0.96877
    ,0.968593
    ,0.968407
    ,0.968214
    ,0.968013
    ,0.967804
    ,0.96759
    ,0.96737
    ,0.967145
    ,0.966914
    ,0.966681
    ,0.966443
    ,0.966203
    ,0.96596
    ,0.965716
    ,0.96547
    ,0.965225
    ,0.964979
    ,0.964734
    ,0.964489
    ,0.964248
    ,0.964008
    ,0.963772
    ,0.963539
    ,0.963311
    ,0.963086
    ,0.962867
    ,0.962654
    ,0.962446
    ,0.962245
    ,0.962051
    ,0.961865
    ,0.961687
    ,0.961517
    ,0.961355
    ,0.961202
    ,0.961059
    ,0.960926
    ,0.960801
    ,0.960687
    ,0.960582
    ,0.960489
    ,0.960406
    ,0.960333
    ,0.960272
    ,0.960221
    ,0.960181
    ,0.960153
    ,0.960134
    ,0.960127
    ,0.960131
    ,0.960146
    ,0.960171
    ,0.960207
    ,0.960254
    ,0.96031
    ,0.960377
    ,0.960453
    ,0.960539
    ,0.960634
    ,0.960738
    ,0.960851
    ,0.960973
    ,0.961102
    ,0.961239
    ,0.961383
    ,0.961534
    ,0.961691
    ,0.961855
    ,0.962023
    ,0.962198
    ,0.962377
    ,0.962561
    ,0.962748
    ,0.962938
    ,0.963131
    ,0.963327
    ,0.963525
    ,0.963724
    ,0.963924
    ,0.964125
    ,0.964324
    ,0.964524
    ,0.964723
    ,0.96492
    ,0.965115
    ,0.965307
    ,0.965497
    ,0.965683
    ,0.965867
    ,0.966046
    ,0.96622
    ,0.966391
    ,0.966555
    ,0.966714
    ,0.966867
    ,0.967014
    ,0.967155
    ,0.967288
    ,0.967415
    ,0.967535
    ,0.967647
    ,0.967751
    ,0.967848
    ,0.967936
    ,0.968017
    ,0.968089
    ,0.968154
    ,0.968209
    ,0.968257
    ,0.968296
    ,0.968327
    ,0.968348
    ,0.968363
    ,0.968368
    ,0.968366
    ,0.968356
    ,0.968337
    ,0.968311
    ,0.968277
    ,0.968236
    ,0.968187
    ,0.968132
    ,0.96807
    ,0.968001
    ,0.967926
    ,0.967845
    ,0.967758
    ,0.967666
    ,0.96757
    ,0.967468
    ,0.967363
    ,0.967254
    ,0.967141
    ,0.967025
    ,0.966906
    ,0.966785
    ,0.966662
    ,0.966538
    ,0.966413
    ,0.966287
    ,0.966161
    ,0.966035
    ,0.96591
    ,0.965786
    ,0.965663
    ,0.965542
    ,0.965423
    ,0.965307
    ,0.965195
    ,0.965086
    ,0.964981
    ,0.96488
    ,0.964784
    ,0.964693
    ,0.964606
    ,0.964526
    ,0.964452
    ,0.964384
    ,0.964324
    ,0.964271
    ,0.964225
    ,0.964187
    ,0.964156
    ,0.964134
    ,0.964119
    ,0.964113
    ,0.964116
    ,0.964128
    ,0.964149
    ,0.964179
    ,0.964218
    ,0.964267
    ,0.964325
    ,0.964393
    ,0.964471
    ,0.964559
    ,0.964655
    ,0.964762
    ,0.964878
    ,0.965004
    ,0.96514
    ,0.965286
    ,0.965441
    ,0.965605
    ,0.965779
    ,0.965962
    ,0.966155
    ,0.966357
    ,0.966568
    ,0.966787
    ,0.967015
    ,0.967251
    ,0.967495
    ,0.967748
    ,0.968008
    ,0.968276
    ,0.968551
    ,0.968832
    ,0.969122
    ,0.969418
    ,0.96972
    ,0.970028
    ,0.970343
    ,0.970663
    ,0.970989
    ,0.971319
    ,0.971655
    ,0.971995
    ,0.97234
    ,0.972689
    ,0.973042
    ,0.973399
    ,0.973759
    ,0.974123
    ,0.974489
    ,0.974859
    ,0.975231
    ,0.975605
    ,0.975981
    ,0.97636
    ,0.97674
    ,0.977121
    ,0.977504
    ,0.977888
    ,0.978273
    ,0.978658
    ,0.979045
    ,0.979432
    ,0.979819
    ,0.980207
    ,0.980595
    ,0.980983
    ,0.98137
    ,0.981758
    ,0.982145
    ,0.982533
    ,0.982919
    ,0.983306
    ,0.983691
    ,0.984077
    ,0.984463
    ,0.984847
    ,0.985231
    ,0.985614
    ,0.985996
    ,0.986378
    ,0.986759
    ,0.98714
    ,0.98752
    ,0.987899
    ,0.988278
    ,0.988656
    ,0.989034
    ,0.989412
    ,0.989788
    ,0.990165
    ,0.990541
    ,0.990917
    ,0.991293
    ,0.991668
    ,0.992042
    ,0.992418
    ,0.992792
    ,0.993166
    ,0.99354
    ,0.993914
    ,0.994287
    ,0.99466
    ,0.995033
    ,0.995407
    ,0.995779
    ,0.996151
    ,0.996522
    ,0.996893
    ,0.997264
    ,0.997635
    ,0.998005
    ,0.998374
    ,0.998742
    ,0.999109
    ,0.999476
    ,0.999842
    ,1.00021
    ,1.00057
    ,1.00093
    ,1.00129
    ,1.00165
    ,1.002
    ,1.00236
    ,1.00271
    ,1.00305
    ,1.0034
    ,1.00374
    ,1.00408
    ,1.00441
    ,1.00475
    ,1.00507
    ,1.0054
    ,1.00572
    ,1.00603
    ,1.00634
    ,1.00664
    ,1.00694
    ,1.00723
    ,1.00751
    ,1.00779
    ,1.00806
    ,1.00833
    ,1.00858
    ,1.00883
    ,1.00907
    ,1.0093
    ,1.00952
    ,1.00974
    ,1.00994
    ,1.01013
    ,1.01032
    ,1.01049
    ,1.01066
    ,1.01081
    ,1.01095
    ,1.01108
    ,1.0112
    ,1.0113
    ,1.0114
    ,1.01148
    ,1.01155
    ,1.01161
    ,1.01165
    ,1.01168
    ,1.0117
    ,1.0117
    ,1.01169
    ,1.01167
    ,1.01163
    ,1.01159
    ,1.01152
    ,1.01145
    ,1.01136
    ,1.01125
    ,1.01113
    ,1.011
    ,1.01086
    ,1.0107
    ,1.01053
    ,1.01035
    ,1.01015
    ,1.00994
    ,1.00972
    ,1.00949
    ,1.00925
    ,1.00899
    ,1.00872
    ,1.00844
    ,1.00816
    ,1.00786
    ,1.00755
    ,1.00723
    ,1.0069
    ,1.00657
    ,1.00622
    ,1.00587
    ,1.00552
    ,1.00515
    ,1.00478
    ,1.0044
    ,1.00402
    ,1.00363
    ,1.00325
    ,1.00285
    ,1.00246
    ,1.00206
    ,1.00166
    ,1.00126
    ,1.00086
    ,1.00046
    ,1.00006
    ,0.999661
    ,0.999267
    ,0.998874
    ,0.998486
    ,0.998101
    ,0.997721
    ,0.997346
    ,0.996978
    ,0.996616
    ,0.996262
    ,0.995915
    ,0.995577
    ,0.995248
    ,0.994928
    ,0.994618
    ,0.994319
    ,0.994031
    ,0.993754
    ,0.99349
    ,0.993238
    ,0.992999
    ,0.992773
    ,0.992561
    ,0.992362
    ,0.992178
    ,0.992009
    ,0.991855
    ,0.991717
    ,0.991594
    ,0.991487
    ,0.991396
    ,0.991321
    ,0.991262
    ,0.991219
    ,0.991194
    ,0.991185
    ,0.991192
    ,0.991215
    ,0.991256
    ,0.991312
    ,0.991385
    ,0.991475
    ,0.99158
    ,0.991701
    ,0.991838
    ,0.991989
    ,0.992156
    ,0.992338
    ,0.992535
    ,0.992746
    ,0.99297
    ,0.993207
    ,0.993458
    ,0.993721
    ,0.993997
    ,0.994284
    ,0.994581
    ,0.99489
    ,0.995207
    ,0.995535
    ,0.995871
    ,0.996215
    ,0.996566
    ,0.996924
    ,0.997289
    ,0.997658
    ,0.998032
    ,0.998411
    ,0.998793
    ,0.999178
    ,0.999565
    ,0.999954
    ,1.00034
    ,1.00073
    ,1.00112
    ,1.00151
    ,1.00189
    ,1.00227
    ,1.00265
    ,1.00302
    ,1.00339
    ,1.00375
    ,1.00411
    ,1.00446
    ,1.0048
    ,1.00513
    ,1.00545
    ,1.00577
    ,1.00607
    ,1.00637
    ,1.00665
    ,1.00692
    ,1.00718
    ,1.00742
    ,1.00766
    ,1.00788
    ,1.00808
    ,1.00827
    ,1.00845
    ,1.00861
    ,1.00876
    ,1.00889
    ,1.009
    ,1.0091
    ,1.00918
    ,1.00925
    ,1.0093
    ,1.00934
    ,1.00935
    ,1.00936
    ,1.00934
    ,1.00931
    ,1.00926
    ,1.0092
    ,1.00912
    ,1.00903
    ,1.00892
    ,1.00879
    ,1.00865
    ,1.00849
    ,1.00832
    ,1.00814
    ,1.00794
    ,1.00773
    ,1.00751
    ,1.00728
    ,1.00703
    ,1.00677
    ,1.0065
    ,1.00622
    ,1.00593
    ,1.00564
    ,1.00533
    ,1.00501
    ,1.00469
    ,1.00436
    ,1.00403
    ,1.00369
    ,1.00335
    ,1.003
    ,1.00265
    ,1.0023
    ,1.00194
    ,1.00158
    ,1.00123
    ,1.00087
    ,1.00052
    ,1.00016
    ,0.999813
    ,0.999465
    ,0.999122
    ,0.998783
    ,0.998449
    ,0.99812
    ,0.997798
    ,0.997483
    ,0.997176
    ,0.996877
    ,0.996587
    ,0.996306
    ,0.996035
    ,0.995774
    ,0.995525
    ,0.995287
    ,0.995061
    ,0.994847
    ,0.994646
    ,0.994458
    ,0.994284
    ,0.994123
    ,0.993976
    ,0.993844
    ,0.993725
    ,0.993622
    ,0.993533
    ,0.99346
    ,0.993401
    ,0.993358
    ,0.99333
    ,0.993317
    ,0.99332
    ,0.993338
    ,0.99337
    ,0.993417
    ,0.99348
    ,0.993558
    ,0.99365
    ,0.993756
    ,0.993876
    ,0.99401
    ,0.994158
    ,0.994318
    ,0.994492
    ,0.994677
    ,0.994875
    ,0.995084
    ,0.995304
    ,0.995534
    ,0.995775
    ,0.996025
    ,0.996284
    ,0.996551
    ,0.996826
    ,0.997108
    ,0.997397
    ,0.997692
    ,0.997993
    ,0.998298
    ,0.998608
    ,0.998922
    ,0.999238
    ,0.999557
    ,0.999877
    ,1.0002
    ,1.00052
    ,1.00084
    ,1.00116
    ,1.00148
    ,1.00179
    ,1.0021
    ,1.00241
    ,1.00272
    ,1.00301
    ,1.00331
    ,1.0036
    ,1.00388
    ,1.00415
    ,1.00442
    ,1.00467
    ,1.00492
    ,1.00516
    ,1.00539
    ,1.00561
    ,1.00582
    ,1.00601
    ,1.0062
    ,1.00637
    ,1.00653
    ,1.00668
    ,1.00682
    ,1.00694
    ,1.00705
    ,1.00715
    ,1.00723
    ,1.0073
    ,1.00736
    ,1.0074
    ,1.00743
    ,1.00744
    ,1.00744
    ,1.00743
    ,1.0074
    ,1.00736
    ,1.00731
    ,1.00724
    ,1.00716
    ,1.00706
    ,1.00695
    ,1.00683
    ,1.0067
    ,1.00656
    ,1.0064
    ,1.00623
    ,1.00606
    ,1.00587
    ,1.00567
    ,1.00546
    ,1.00525
    ,1.00502
    ,1.00479
    ,1.00455
    ,1.0043
    ,1.00404
    ,1.00378
    ,1.00352
    ,1.00325
    ,1.00297
    ,1.00269
    ,1.00241
    ,1.00213
    ,1.00184
    ,1.00156
    ,1.00127
    ,1.00098
    ,1.0007
    ,1.00041
    ,1.00013
    ,0.999847
    ,0.99957
    ,0.999295
    ,0.999026
    ,0.99876
    ,0.998501
    ,0.998247
    ,0.998
    ,0.997759
    ,0.997525
    ,0.9973
    ,0.997083
    ,0.996875
    ,0.996676
    ,0.996486
    ,0.996307
    ,0.996138
    ,0.995979
    ,0.995832
    ,0.995696
    ,0.995571
    ,0.995458
    ,0.995356
    ,0.995267
    ,0.99519
    ,0.995125
    ,0.995073
    ,0.995034
    ,0.995007
    ,0.994993
    ,0.994992
    ,0.995002
    ,0.995026
    ,0.995062
    ,0.995111
    ,0.995171
    ,0.995245
    ,0.995329
    ,0.995425
    ,0.995532
    ,0.995651
    ,0.99578
    ,0.99592
    ,0.99607
    ,0.996229
    ,0.996398
    ,0.996576
    ,0.996763
    ,0.996958
    ,0.997161
    ,0.99737
    ,0.997587
    ,0.99781
    ,0.998039
    ,0.998273
    ,0.998511
    ,0.998754
    ,0.999001
    ,0.999251
    ,0.999504
    ,0.999759
    ,1.00001
    ,1.00027
    ,1.00053
    ,1.00078
    ,1.00104
    ,1.00129
    ,1.00155
    ,1.0018
    ,1.00204
    ,1.00229
    ,1.00253
    ,1.00276
    ,1.00299
    ,1.00322
    ,1.00344
    ,1.00365
    ,1.00386
    ,1.00405
    ,1.00425
    ,1.00443
    ,1.0046
    ,1.00477
    ,1.00492
    ,1.00507
    ,1.0052
    ,1.00533
    ,1.00545
    ,1.00555
    ,1.00565
    ,1.00573
    ,1.0058
    ,1.00586
    ,1.00591
    ,1.00595
    ,1.00598
    ,1.006
    ,1.006
    ,1.006
    ,1.00598
    ,1.00595
    ,1.00591
    ,1.00586
    ,1.0058
    ,1.00572
    ,1.00564
    ,1.00555
    ,1.00544
    ,1.00533
    ,1.00521
    ,1.00507
    ,1.00493
    ,1.00478
    ,1.00462
    ,1.00446
    ,1.00428
    ,1.0041
    ,1.00392
    ,1.00372
    ,1.00352
    ,1.00332
    ,1.00311
    ,1.0029
    ,1.00268
    ,1.00246
    ,1.00224
    ,1.00201
    ,1.00179
    ,1.00156
    ,1.00133
    ,1.0011
    ,1.00087
    ,1.00064
    ,1.00041
    ,1.00019
    ,0.999963
    ,0.999742
    ,0.999524
    ,0.99931
    ,0.9991
    ,0.998895
    ,0.998695
    ,0.9985
    ,0.998312
    ,0.998129
    ,0.997954
    ,0.997785
    ,0.997623
    ,0.997469
    ,0.997323
    ,0.997187
    ,0.997058
    ,0.996939
    ,0.996828
    ,0.996726
    ,0.996634
    ,0.996552
    ,0.99648
    ,0.996417
    ,0.996365
    ,0.996324
    ,0.996291
    ,0.99627
    ,0.996258
    ,0.996257
    ,0.996267
    ,0.996287
    ,0.996317
    ,0.996356
    ,0.996406
    ,0.996465
    ,0.996535
    ,0.996613
    ,0.996701
    ,0.996797
    ,0.996902
    ,0.997016
    ,0.997138
    ,0.997268
    ,0.997405
    ,0.99755
    ,0.997701
    ,0.997858
    ,0.998022
    ,0.998192
    ,0.998367
    ,0.998548
    ,0.998732
    ,0.998921
    ,0.999114
    ,0.999309
    ,0.999507
    ,0.999708
    ,0.99991
    ,1.00011
    ,1.00032
    ,1.00052
    ,1.00073
    ,1.00093
    ,1.00114
    ,1.00134
    ,1.00154
    ,1.00174
    ,1.00193
    ,1.00212
    ,1.00231
    ,1.0025
    ,1.00268
    ,1.00285
    ,1.00302
    ,1.00318
    ,1.00334
    ,1.00349
    ,1.00364
    ,1.00378
    ,1.00391
    ,1.00403
    ,1.00415
    ,1.00426
    ,1.00436
    ,1.00445
    ,1.00453
    ,1.00461
    ,1.00467
    ,1.00473
    ,1.00478
    ,1.00481
    ,1.00484
    ,1.00486
    ,1.00487
    ,1.00488
    ,1.00487
    ,1.00485
    ,1.00482
    ,1.00479
    ,1.00474
    ,1.00469
    ,1.00463
    ,1.00456
    ,1.00448
    ,1.00439
    ,1.0043
    ,1.0042
    ,1.00409
    ,1.00397
    ,1.00385
    ,1.00372
    ,1.00358
    ,1.00344
    ,1.0033
    ,1.00314
    ,1.00299
    ,1.00282
    ,1.00266
    ,1.00249
    ,1.00232
    ,1.00214
    ,1.00196
    ,1.00179
    ,1.0016
    ,1.00142
    ,1.00124
    ,1.00105
    ,1.00087
    ,1.00069
    ,1.00051
    ,1.00033
    ,1.00015
    ,0.999971
    ,0.999797
    ,0.999626
    ,0.999457
    ,0.999293
    ,0.999133
    ,0.998978
    ,0.998827
    ,0.998681
    ,0.99854
    ,0.998406
    ,0.998277
    ,0.998154
    ,0.998038
    ,0.997929
    ,0.997827
    ,0.997732
    ,0.997644
    ,0.997564
    ,0.997492
    ,0.997427
    ,0.99737
    ,0.997322
    ,0.997282
    ,0.99725
    ,0.997226
    ,0.997211
    ,0.997204
    ,0.997205
    ,0.997214
    ,0.997232
    ,0.997258
    ,0.997292
    ,0.997334
    ,0.997384
    ,0.997441
    ,0.997506
    ,0.997579
    ,0.997658
    ,0.997744
    ,0.997837
    ,0.997936
    ,0.998042
    ,0.998154
    ,0.998272
    ,0.998395
    ,0.998523
    ,0.998656
    ,0.998793
    ,0.998934
    ,0.999079
    ,0.999228
    ,0.999381
    ,0.999535
    ,0.999692
    ,0.999851
    ,1.00001
    ,1.00017
    ,1.00034
    ,1.0005
    ,1.00066
    ,1.00083
    ,1.00099
    ,1.00115
    ,1.00131
    ,1.00147
    ,1.00162
    ,1.00178
    ,1.00193
    ,1.00207
    ,1.00222
    ,1.00236
    ,1.00249
    ,1.00263
    ,1.00275
    ,1.00287
    ,1.00299
    ,1.0031
    ,1.00321
    ,1.00331
    ,1.0034
    ,1.00349
    ,1.00357
    ,1.00364
    ,1.00371
    ,1.00377
    ,1.00382
    ,1.00387
    ,1.0039
    ,1.00394
    ,1.00396
    ,1.00397
    ,1.00398
    ,1.00399
    ,1.00398
    ,1.00397
    ,1.00395
    ,1.00392
    ,1.00388
    ,1.00384
    ,1.00379
    ,1.00374
    ,1.00367
    ,1.00361
    ,1.00353
    ,1.00345
    ,1.00336
    ,1.00327
    ,1.00317
    ,1.00307
    ,1.00296
    ,1.00285
    ,1.00273
    ,1.00261
    ,1.00249
    ,1.00236
    ,1.00223
    ,1.00209
    ,1.00196
    ,1.00182
    ,1.00168
    ,1.00154
    ,1.00139
    ,1.00125
    ,1.00111
    ,1.00096
    ,1.00082
    ,1.00068
    ,1.00053
    ,1.00039
    ,1.00025
    ,1.00011
    ,0.999977
    ,0.999844
    ,0.999713
    ,0.999586
    ,0.999462
    ,0.999341
    ,0.999224
    ,0.999112
    ,0.999003
    ,0.9989
    ,0.998801
    ,0.998708
    ,0.998619
    ,0.998536
    ,0.998459
    ,0.998387
    ,0.998322
    ,0.998263
    ,0.99821
    ,0.998163
    ,0.998122
    ,0.998088
    ,0.998061
    ,0.998039
    ,0.998024
    ,0.998016
    ,0.998014
    ,0.998019
    ,0.998031
    ,0.998049
    ,0.998074
    ,0.998105
    ,0.998142
    ,0.998185
    ,0.998234
    ,0.998289
    ,0.998349
    ,0.998416
    ,0.998487
    ,0.998564
    ,0.998645
    ,0.998732
    ,0.998822
    ,0.998916
    ,0.999015
    ,0.999118
    ,0.999224
    ,0.999334
    ,0.999446
    ,0.999561
    ,0.999679
    ,0.999798
    ,0.99992
    ,1.00004
    ,1.00017
    ,1.00029
    ,1.00042
    ,1.00055
    ,1.00067
    ,1.0008
    ,1.00093
    ,1.00105
    ,1.00117
    ,1.0013
    ,1.00142
    ,1.00154
    ,1.00165
    ,1.00177
    ,1.00188
    ,1.00199
    ,1.00209
    ,1.00219
    ,1.00229
    ,1.00239
    ,1.00248
    ,1.00256
    ,1.00264
    ,1.00272
    ,1.00279
    ,1.00286
    ,1.00292
    ,1.00297
    ,1.00302
    ,1.00307
    ,1.00311
    ,1.00314
    ,1.00317
    ,1.00319
    ,1.00321
    ,1.00322
    ,1.00323
    ,1.00323
    ,1.00322
    ,1.00321
    ,1.00319
    ,1.00317
    ,1.00314
    ,1.00311
    ,1.00307
    ,1.00302
    ,1.00297
    ,1.00292
    ,1.00286
    ,1.0028
    ,1.00273
    ,1.00266
    ,1.00258
    ,1.0025
    ,1.00242
    ,1.00233
    ,1.00224
    ,1.00215
    ,1.00205
    ,1.00195
    ,1.00185
    ,1.00174
    ,1.00164
    ,1.00153
    ,1.00142
    ,1.00131
    ,1.0012
    ,1.00109
    ,1.00098
    ,1.00087
    ,1.00076
    ,1.00065
    ,1.00054
    ,1.00044
    ,1.00033
    ,1.00022
    ,1.00012
    ,1.00002
    ,0.999922
    ,0.999825
    ,0.999731
    ,0.999642
    ,0.999554
    ,0.99947
    ,0.99939
    ,0.999313
    ,0.999241
    ,0.999172
    ,0.999108
    ,0.999048
    ,0.998991
    ,0.99894
    ,0.998893
    ,0.998851
    ,0.998815
    ,0.998782
    ,0.998756
    ,0.998733
    ,0.998715
    ,0.998703
    ,0.998695
    ,0.998692
    ,0.998696
    ,0.998704
    ,0.998717
    ,0.998734
    ,0.998757
    ,0.998784
    ,0.998816
    ,0.998852
    ,0.998893
    ,0.998938
    ,0.998988
    ,0.999042
    ,0.9991
    ,0.999163
    ,0.999226
    ,0.999294
    ,0.999366
    ,0.99944
    ,0.999518
    ,0.999598
    ,0.999681
    ,0.999767
    ,0.999854
    ,0.999943
    ,1.00003
    ,1.00012
    ,1.00022
    ,1.00031
    ,1.00041
    ,1.0005
    ,1.00059
    ,1.00069
    ,1.00079
    ,1.00088
    ,1.00097
    ,1.00107
    ,1.00116
    ,1.00125
    ,1.00134
    ,1.00143
    ,1.00151
    ,1.0016
    ,1.00168
    ,1.00176
    ,1.00183
    ,1.00191
    ,1.00198
    ,1.00205
    ,1.00211
    ,1.00217
    ,1.00223
    ,1.00228
    ,1.00233
    ,1.00237
    ,1.00241
    ,1.00245
    ,1.00248
    ,1.00251
    ,1.00254
    ,1.00256
    ,1.00257
    ,1.00259
    ,1.00259
    ,1.0026
    ,1.00259
    ,1.00259
    ,1.00258
    ,1.00256
    ,1.00254
    ,1.00252
    ,1.0025
    ,1.00246
    ,1.00243
    ,1.00239
    ,1.00235
    ,1.0023
    ,1.00226
    ,1.0022
    ,1.00215
    ,1.00209
    ,1.00203
    ,1.00197
    ,1.0019
    ,1.00183
    ,1.00176
    ,1.00169
    ,1.00161
    ,1.00154
    ,1.00146
    ,1.00138
    ,1.0013
    ,1.00122
    ,1.00114
    ,1.00106
    ,1.00097
    ,1.00089
    ,1.00081
    ,1.00073
    ,1.00065
    ,1.00057
    ,1.00049
    ,1.00041
    ,1.00033
    ,1.00026
    ,1.00018
    ,1.00011
    ,1.00004
    ,0.999971
    ,0.999905
    ,0.999841
    ,0.99978
    ,0.999722
    ,0.999667
    ,0.999615
    ,0.999565
    ,0.99952
    ,0.999477
    ,0.999437
    ,0.999402
    ,0.999369
    ,0.999339
    ,0.999312
    ,0.99929
    ,0.999272
    ,0.999257
    ,0.999247
    ,0.999239
    ,0.999238
    ,0.999238
    ,0.999243
    ,0.999251
    ,0.999263
    ,0.999278
    ,0.999297
    ,0.999319
    ,0.999344
    ,0.999374
    ,0.999406
    ,0.999441
    ,0.99948
    ,0.999521
    ,0.999565
    ,0.999612
    ,0.999662
    ,0.999713
    ,0.999767
    ,0.999824
    ,0.999881
    ,0.999942
    ,1
    ,1.00007
    ,1.00013
    ,1.0002
    ,1.00026
    ,1.00033
    ,1.0004
    ,1.00047
    ,1.00054
    ,1.00061
    ,1.00068
    ,1.00075
    ,1.00082
    ,1.00089
    ,1.00096
    ,1.00102
    ,1.00109
    ,1.00116
    ,1.00122
    ,1.00128
    ,1.00135
    ,1.0014
    ,1.00146
    ,1.00152
    ,1.00157
    ,1.00162
    ,1.00167
    ,1.00172
    ,1.00176
    ,1.0018
    ,1.00184
    ,1.00188
    ,1.00191
    ,1.00194
    ,1.00197
    ,1.00199
    ,1.00201
    ,1.00203
    ,1.00205
    ,1.00206
    ,1.00207
    ,1.00207
    ,1.00207
    ,1.00207
    ,1.00207
    ,1.00206
    ,1.00205
    ,1.00204
    ,1.00202
    ,1.002
    ,1.00198
    ,1.00196
    ,1.00193
    ,1.0019
    ,1.00187
    ,1.00183
    ,1.00179
    ,1.00175
    ,1.00171
    ,1.00167
    ,1.00162
    ,1.00157
    ,1.00152
    ,1.00147
    ,1.00142
    ,1.00137
    ,1.00131
    ,1.00126
    ,1.0012
    ,1.00114
    ,1.00109
    ,1.00103
    ,1.00097
    ,1.00091
    ,1.00085
    ,1.00079
    ,1.00073
    ,1.00068
    ,1.00062
    ,1.00056
    ,1.00051
    ,1.00045
    ,1.0004
    ,1.00035
    ,1.0003
    ,1.00025
    ,1.0002
    ,1.00015
    ,1.00011
    ,1.00006
    ,1.00002
    ,0.999984
    ,0.999947
    ,0.999913
    ,0.999881
    ,0.999851
    ,0.999824
    ,0.999799
    ,0.999777
    ,0.999757
    ,0.999739
    ,0.999723
    ,0.99971
    ,0.999702
    ,0.999695
    ,0.999692
    ,0.99969
    ,0.999691
    ,0.999695
    ,0.9997
    ,0.999709
    ,0.99972
    ,0.999734
    ,0.999752
    ,0.99977
    ,0.999791
    ,0.999814
    ,0.99984
    ,0.999867
    ,0.999897
    ,0.999928
    ,0.999961
    ,0.999995
    ,1.00003
    ,1.00007
    ,1.00011
    ,1.00015
    ,1.0002
    ,1.00024
    ,1.00028
    ,1.00033
    ,1.00038
    ,1.00042
    ,1.00047
    ,1.00052
    ,1.00057
    ,1.00062
    ,1.00067
    ,1.00072
    ,1.00076
    ,1.00081
    ,1.00086
    ,1.00091
    ,1.00096
    ,1.001
    ,1.00105
    ,1.00109
    ,1.00114
    ,1.00118
    ,1.00122
    ,1.00126
    ,1.0013
    ,1.00133
    ,1.00137
    ,1.0014
    ,1.00143
    ,1.00146
    ,1.00149
    ,1.00151
    ,1.00154
    ,1.00156
    ,1.00158
    ,1.0016
    ,1.00161
    ,1.00163
    ,1.00164
    ,1.00165
    ,1.00165
    ,1.00166
    ,1.00166
    ,1.00166
    ,1.00166
    ,1.00165
    ,1.00165
    ,1.00164
    ,1.00163
    ,1.00161
    ,1.0016
    ,1.00158
    ,1.00156
    ,1.00154
    ,1.00152
    ,1.0015
    ,1.00147
    ,1.00144
    ,1.00141
    ,1.00138
    ,1.00135
    ,1.00132
    ,1.00128
    ,1.00125
    ,1.00121
    ,1.00117
    ,1.00113
    ,1.00109
    ,1.00106
    ,1.00102
    ,1.00098
    ,1.00093
    ,1.00089
    ,1.00085
    ,1.00081
    ,1.00077
    ,1.00073
    ,1.00069
    ,1.00065
    ,1.00061
    ,1.00057
    ,1.00053
    ,1.00049
    ,1.00046
    ,1.00042
    ,1.00039
    ,1.00035
    ,1.00032
    ,1.00029
    ,1.00026
    ,1.00023
    ,1.0002
    ,1.00017
    ,1.00015
    ,1.00013
    ,1.00011
    ,1.00009
    ,1.00007
    ,1.00005
    ,1.00004
    ,1.00003
    ,1.00001
    ,1.00001
    ,1
}
Thanks for all your help guys 8)

Post

d_m_chambers_ wrote:
mystran wrote:
kryptonaut wrote: @mystran - what's wrong with the calculation of newPhase? It's the phaseincrement for a whole step multiplied by the post-crossing fraction of a step, which should be ok shouldn't it?
Does "exactCrossTime" go backwards from the end of the sample? If that's the case then I suppose you can do it like that as well.
Urgh, my brain seems not to be working today at all..

Post Reply

Return to “DSP and Plugin Development”