From ea75bfbfdf9f7181695b3024f2491567a4df395e Mon Sep 17 00:00:00 2001 From: Eric Hanson <5846501+ericphanson@users.noreply.github.com> Date: Sat, 22 May 2021 14:35:01 +0200 Subject: [PATCH] add in-place `mt_pgram!`, and multitaper spectrogram, multitaper csd, multitaper coherence (#401) * Initial multitaper spectrogram code ported from a private Beacon repo Co-authored-by: Alex Arslan Co-authored-by: Kalyan Palepu Co-authored-by: kolia * fix size of `tmp`, rename fields, return spectrogram object * format * port WIP coherence and cross spectral code Co-authored-by: Alex Arslan Co-authored-by: Kalyan Palepu Co-authored-by: kolia wip wip wip wip add WIP cross-spectra code so I don't lose it Co-authored-by: Alex Arslan Co-authored-by: Kalyan Palepu Co-authored-by: kolia fix bug, change syntax for 1.0 format wip wip wip fix Rename `sample_rate` -> `fs` fixes * transfer tests Co-authored-by: Alex Arslan Co-authored-by: Kalyan Palepu Co-authored-by: kolia * add some MATLAB reference tests Co-authored-by: mich11 swap order to match Onda wip align better with existing api fix test Fix MATLAB reference test Co-authored-by: mich11 * fix csd bugs, add tests fix bugs rename add coherence reference test * remove `d`s since these aren't normalized as densities * whoops, rm extraneous file * fix typo * infer `MTSpectrogramConfig` eltype from `MTConfig` eltype * rm `n_freq_bins`, `n_time_points`, add some checks to the MTSpectrogramConfig constructor * try to fix bugs... * fix find-and-replace bug * reformat * test magically works now (?) * handle `n_samples < samples_per_window` * tweak `coherence_from_cs!` * improve test coverage * tweak `MTSpectrogramConfig` API, add `mt_spectrogram` method, improve docstrings * coherence should be 1 on the diagonal * allow and test mixed-precision operations * allocate less, use aligned memory * make `demean=false` the default * don't export `allocate_output` * don't shadow `DSP.freq` * don't average over frequencies in the coherence * Update src/periodograms.jl * add note crediting MNE-python * change names, allow taper weight configuration * update docstrings * adjust docstring, make loadable on 1.0 * fixes * add test and note that two-sided FFTs not supported in CSD * add tests * argh Julia 1.0 * increase codecov * fix very broken tests, make them more robust * add docs, cleanup docstrings * rm old keyword argument from docstring * rm old comment * should be slightly faster to do the `real` inside rather than outside Co-authored-by: Alex Arslan Co-authored-by: Kalyan Palepu Co-authored-by: kolia Co-authored-by: mich11 --- docs/src/periodograms.md | 24 +- src/DSP.jl | 5 + src/multitaper.jl | 825 +++++++ src/periodograms.jl | 91 +- .../data/csd_array_multitaper_frequencies.txt | 512 +++++ test/data/csd_array_multitaper_values_im.txt | 2048 +++++++++++++++++ test/data/csd_array_multitaper_values_re.txt | 2048 +++++++++++++++++ test/data/noise.txt | 1024 +++++++++ test/data/pmtm_fx.txt | 1025 +++++++++ test/data/pmtm_fz.txt | 2048 +++++++++++++++++ test/data/pmtm_pxx.txt | 1025 +++++++++ test/data/pmtm_pzz.txt | 2048 +++++++++++++++++ test/data/pmtm_x.txt | 2000 ++++++++++++++++ test/data/pmtm_y.txt | 2000 ++++++++++++++++ test/multitaper.jl | 343 +++ test/periodograms.jl | 149 ++ test/runtests.jl | 8 +- test/util.jl | 18 +- 18 files changed, 17171 insertions(+), 70 deletions(-) create mode 100644 src/multitaper.jl create mode 100644 test/data/csd_array_multitaper_frequencies.txt create mode 100644 test/data/csd_array_multitaper_values_im.txt create mode 100644 test/data/csd_array_multitaper_values_re.txt create mode 100644 test/data/noise.txt create mode 100644 test/data/pmtm_fx.txt create mode 100644 test/data/pmtm_fz.txt create mode 100644 test/data/pmtm_pxx.txt create mode 100644 test/data/pmtm_pzz.txt create mode 100644 test/data/pmtm_x.txt create mode 100644 test/data/pmtm_y.txt create mode 100644 test/multitaper.jl diff --git a/docs/src/periodograms.md b/docs/src/periodograms.md index 01587fa64..cf0136255 100644 --- a/docs/src/periodograms.md +++ b/docs/src/periodograms.md @@ -4,11 +4,33 @@ arraysplit periodogram(s::AbstractVector{T}) where T <: Number welch_pgram -mt_pgram spectrogram stft periodogram(s::AbstractMatrix{T}) where T <: Real freq power time +coherence +``` + +## Multitaper periodogram estimation + +```@docs +mt_pgram +mt_pgram! +mt_spectrogram +mt_spectrogram! +mt_cross_power_spectra +mt_cross_power_spectra! +mt_coherence +mt_coherence! +``` + +### Configuration objects + +```@docs +MTConfig +MTSpectrogramConfig +MTCrossSpectraConfig +MTCoherenceConfig ``` diff --git a/src/DSP.jl b/src/DSP.jl index bdc60ca76..a9bc52ee3 100644 --- a/src/DSP.jl +++ b/src/DSP.jl @@ -6,6 +6,11 @@ using IterTools: subsets export conv, deconv, filt, filt!, xcorr +# This function has methods added in `peridograms` but is not exported, +# so we define it here so one can do `DSP.allocate_output` instead of +# `DSP.Periodograms.allocate_output`. +function allocate_output end + include("dspbase.jl") include("util.jl") diff --git a/src/multitaper.jl b/src/multitaper.jl new file mode 100644 index 000000000..8c46086ff --- /dev/null +++ b/src/multitaper.jl @@ -0,0 +1,825 @@ +##### +##### Multitapered periodogram +##### + +struct MTConfig{T,R1,F,P,T1,T2,W,R2} + n_samples::Int + fs::R1 + nfft::Int + ntapers::Int + freq::F + plan::P + fft_input_tmp::T1 + fft_output_tmp::T2 + window::W + onesided::Bool + r::R2 # inverse normalization; e.g. equal to `fs*N` for an unwindowed/untapered periodogram of a signal of length `N` + # e.g. equal to `fs*ntapers*ones(ntapers)` when tapered by properly normalized window functions (i.e. norm-2 equal to 1 for each taper) + # can be adjusted to weight the tapers, e.g. by the eigenvalues of the DPSS windows + function MTConfig{T}(n_samples, nfft, ntapers, freq, fs, plan, fft_input_tmp, + fft_output_tmp, window, onesided, r) where {T} + n_samples > 0 || throw(ArgumentError("`n_samples` must be positive")) + nfft >= n_samples || throw(ArgumentError("Must have `nfft >= n_samples`")) + ntapers > 0 || throw(ArgumentError("`ntapers` must be positive")) + fs > 0 || throw(ArgumentError("`fs` must be positive")) + if size(plan) != size(fft_input_tmp) + throw(DimensionMismatch("""Must have `size(plan) == size(fft_input_tmp)`; + got `size(plan)` = $(size(plan)) and `size(fft_input_tmp)` = $(size(fft_input_tmp))""")) + end + if size(fft_input_tmp) != (nfft,) + throw(DimensionMismatch("""Must have `size(fft_input_tmp) == (nfft,)`; + got `size(fft_input_tmp)` = $(size(fft_input_tmp)) and `nfft` = $(nfft)""")) + end + if size(fft_output_tmp) != (length(freq),) + throw(DimensionMismatch("""Must have `size(fft_output_tmp) == (length(freq),)`; + got `size(fft_output_tmp)` = $(size(fft_output_tmp)) and `length(freq)` = $(length(freq))""")) + end + if size(window) != (n_samples, ntapers) + throw(DimensionMismatch("""Must have `size(window) == (n_samples, ntapers)`; + got `size(window)` = $(size(window)) and `(ntapers, n_samples)` = $((n_samples, ntapers))""")) + end + if size(r) != (ntapers,) + throw(DimensionMismatch("""Must have `size(r) == (ntapers,)`; + got `size(r)` = $(size(r)) and `(ntapers,)` = $((ntapers,))""")) + end + if onesided && T <: Complex + throw(ArgumentError("cannot compute one-sided FFT of a complex signal")) + end + return new{T,typeof(fs),typeof(freq),typeof(plan),typeof(fft_input_tmp), + typeof(fft_output_tmp),typeof(window),typeof(r)}(n_samples, fs, nfft, + ntapers, freq, plan, + fft_input_tmp, + fft_output_tmp, window, + onesided, r) + end +end + +# provides an `MTConfig` with `keep_only_large_evals` and `weight_by_evals` options used in some of the reference tests. +function dpss_config(::Type{T}, n_samples; nw=4, ntapers = 2nw-1, fs=1, keep_only_large_evals=false, + weight_by_evals=false, kwargs...) where {T} + + window = dpss(n_samples, nw, ntapers) + + if keep_only_large_evals + evals = dpsseig(window, nw) + keep_evals_mask = evals .> 0.9 + window = window[:, keep_evals_mask] + evals = evals[keep_evals_mask] + ntapers = size(window, 2) + else + evals = nothing + end + + if weight_by_evals + if evals === nothing + evals = dpsseig(window, nw) + end + taper_weights = evals ./ sum(evals) + else + taper_weights = fill(1/ntapers, ntapers) + end + + return MTConfig{T}(n_samples; window=window, nw=nw, ntapers=ntapers, taper_weights=taper_weights, fs=fs, kwargs...) +end + + +""" + MTConfig{T}(n_samples; fs=1, + nfft = nextpow(2, n_samples), + window = nothing, + nw = 4, + ntapers = 2 * nw - 1, + taper_weights = fill(1/ntapers, ntapers), + onesided::Bool=T<:Real, + fft_flags = FFTW.MEASURE) + +Creates a config object which holds the configuration state +and temporary variables used in multitaper computations, +e.g. [`mt_pgram!`](@ref), [`mt_spectrogram`](@ref), [`MTSpectrogramConfig`](@ref), +[`MTCrossSpectraConfig`](@ref), and [`MTCoherenceConfig`](@ref). + +An `MTConfig` can be re-used between computations as long +as none of the input arguments change. + +* `n_samples`: the number of samples to be used as input when computing multitaper periodograms + with this configuration. Used for pre-allocating temporary buffers. +* `fs`: the number of samples per second of the input signal +* `nfft`: length of input vector to the FFT; if `nfft > n_samples`, then the + input signal will be zero-padded until it is of length `nfft`. +* `window`: window function to use for tapering. If left at the default of `nothing`, + `window` will be set to `dpss(n_samples, nw, ntapers)`. +* `ntapers`: the number of tapers to use. +* `taper_weights = fill(1/ntapers, ntapers)`: how to weight the contribution of each taper. + The default setting is to simply average them. +* `onesided`: whether or not to compute a "one-sided" FFT by using that real signal data + yields conjugate-symmetry in Fourier space. +* `fft_flags`: flags to control how the FFT plan is generated. +""" +function MTConfig{T}(n_samples; fs=1, nfft=nextpow(2, n_samples), window=nothing, nw=4, + ntapers=2 * nw - 1, taper_weights = fill(1/ntapers, ntapers), + onesided::Bool=T <: Real, + fft_flags=FFTW.MEASURE) where {T} + if onesided && T <: Complex + throw(ArgumentError("cannot compute one-sided FFT of a complex signal")) + end + n_samples > 0 || throw(ArgumentError("`n_samples` must be positive")) + nfft >= n_samples || throw(ArgumentError("Must have `nfft >= n_samples`")) + freq = onesided ? rfftfreq(nfft, fs) : fftfreq(nfft, fs) + fft_input_tmp = Vector{T}(undef, nfft) + fft_output_tmp = Vector{fftouttype(T)}(undef, length(freq)) + plan = onesided ? plan_rfft(fft_input_tmp; flags=fft_flags) : + plan_fft(fft_input_tmp; flags=fft_flags) + if window === nothing + r = fs ./ taper_weights + window = dpss(n_samples, nw, ntapers) + else + r = fs .* vec(sum(abs2, window; dims=1)) ./ taper_weights + end + + return MTConfig{T}(n_samples, nfft, ntapers, freq, fs, plan, fft_input_tmp, + fft_output_tmp, window, onesided, r) +end + +function allocate_output(config::MTConfig{T}) where {T} + return Vector{fftabs2type(T)}(undef, length(config.freq)) +end + + +# Internal function used in [`mt_pgram!`](@ref) and [`mt_cross_power_spectra!`](@ref). +function mt_fft_tapered!(fft_output, signal, taper_index, config) + # Create the input: tapered + zero-padded version of the signal + fft_input = config.fft_input_tmp + @inbounds for i in 1:length(signal) + fft_input[i] = config.window[i, taper_index] * signal[i] + end + fft_input[(length(signal) + 1):(config.nfft)] .= 0 + + # do the FFT + mul!(fft_output, config.plan, fft_input) + return nothing +end + + +""" + mt_pgram(s; onesided=eltype(s)<:Real, nfft=nextfastfft(n), fs=1, nw=4, ntapers=iceil(2nw)-1, window=dpss(length(s), nw, ntapers)) + mt_pgram(signal::AbstractVector, config::MTConfig) + +Computes the multitaper periodogram of a signal `s`. + +If `window` is not specified, the signal is tapered with +`ntapers` discrete prolate spheroidal sequences with +time-bandwidth product `nw`. Each sequence is equally weighted; +adaptive multitaper is not (yet) supported. + +If `window` is specified, each column is applied as a taper. The +sum of periodograms is normalized by the total sum of squares of +`window`. + +Returns a `Periodogram`. + +See also [`mt_pgram!`](@ref) and [`MTConfig`](@ref). +""" +mt_pgram + +function mt_pgram(s::AbstractVector{T}; onesided::Bool=eltype(s)<:Real, + nfft::Int=nextfastfft(length(s)), fs::Real=1, + nw::Real=4, ntapers::Int=ceil(Int, 2nw)-1, + window::Union{AbstractMatrix,Nothing}=nothing) where T<:Number + config = MTConfig{T}(length(s); fs = fs, + nfft = nfft, window = window, nw = nw, ntapers = ntapers, onesided = onesided, + fft_flags = FFTW.ESTIMATE) + out = allocate_output(config) + return mt_pgram!(out, s, config) +end + +function mt_pgram!(output, s::AbstractVector{T}; onesided::Bool=eltype(s)<:Real, + nfft::Int=nextfastfft(length(s)), fs::Real=1, + nw::Real=4, ntapers::Int=ceil(Int, 2nw)-1, + window::Union{AbstractMatrix,Nothing}=nothing) where T<:Number + config = MTConfig{T}(length(s); fs = fs, + nfft = nfft, window = window, nw = nw, ntapers = ntapers, onesided = onesided, + fft_flags = FFTW.ESTIMATE) + return mt_pgram!(output, s, config) +end + +function mt_pgram(signal::AbstractVector, config::MTConfig) + out = allocate_output(config) + return mt_pgram!(out, signal, config) +end + +""" + mt_pgram!(output, s::AbstractVector{T}; onesided::Bool=eltype(s)<:Real, + nfft::Int=nextfastfft(length(s)), fs::Real=1, + nw::Real=4, ntapers::Int=ceil(Int, 2nw)-1, + window::Union{AbstractMatrix,Nothing}=nothing) where T<:Number + mt_pgram!(output::AbstractVector, signal::AbstractVector, config::MTConfig) -> Periodogram + +Computes a multitapered periodogram, storing the output in `output`. Arguments: + +* `signal::AbstractVector`: should be of length `config.n_samples` +* `output::AbstractVector`: should be of length `length(config.freq)` + +Optionally pass an [`MTConfig`](@ref) object to preallocate temporary variables +and choose configuration settings; otherwise, keyword arguments may be passed +to choose those settings. + +Returns a `Periodogram`. + +See also [`mt_pgram`](@ref) and [`MTConfig`](@ref). +""" +mt_pgram! + +function mt_pgram!(output::AbstractVector, signal::AbstractVector, config::MTConfig) + if length(output) != length(config.freq) + throw(DimensionMismatch("""Expected `output` to be of length `length(config.freq)`; + got `length(output) = $(length(output)) and `length(config.freq)` = $(length(config.freq))""")) + end + if length(signal) != config.n_samples + throw(DimensionMismatch("""Expected `signal` to be of length `config.n_samples`; + got `length(signal) == $(length(signal)) and `config.n_samples` = $(config.n_samples)""")) + end + fft_output = config.fft_output_tmp + + output .= 0 + for taper_index in 1:(config.ntapers) + mt_fft_tapered!(fft_output, signal, taper_index, config) + fft2pow!(output, fft_output, config.nfft, config.r[taper_index], config.onesided) + end + return Periodogram(output, config.freq) +end + +##### +##### Multitapered spectrogram +##### + +struct MTSpectrogramConfig{T,C<:MTConfig{T}} + n_samples::Int + n_overlap_samples::Int + time::FloatRange{Float64} + mt_config::C +end + +""" + MTSpectrogramConfig(n_samples, mt_config::MTConfig{T}, n_overlap_samples) where {T} + MTSpectrogramConfig{T}(n_samples, samples_per_window, n_overlap_samples; fs=1, kwargs...) where {T} + +Creates a `MTSpectrogramConfig` which holds configuration and temporary variables for [`mt_spectrogram`](@ref) and [`mt_spectrogram!`](@ref). +Any keyword arguments accepted by [`MTConfig`](@ref) may be passed here, or an `MTConfig` object itself. +""" +function MTSpectrogramConfig(n_samples::Int, mt_config::MTConfig{T}, n_overlap_samples::Int) where {T} + samples_per_window = mt_config.n_samples + if samples_per_window <= n_overlap_samples + throw(ArgumentError("Need `samples_per_window > n_overlap_samples`; got `samples_per_window` = $(samples_per_window) and `n_overlap_samples` = $(n_overlap_samples).")) + end + + f = samples_per_window / 2 + hop = samples_per_window - n_overlap_samples + + len = n_samples < samples_per_window ? 0 : div(n_samples - samples_per_window, samples_per_window - n_overlap_samples) + 1 + time = range(f, step = hop, length = len) / mt_config.fs + return MTSpectrogramConfig{T,typeof(mt_config)}(n_samples, n_overlap_samples, time, + mt_config) +end + +# add a method for if the user specifies the type, i.e. `MTSpectrogramConfig{T}` +function MTSpectrogramConfig{T}(n_samples::Int, mt_config::MTConfig{T}, n_overlap_samples::Int) where {T} + return MTSpectrogramConfig(n_samples, mt_config, n_overlap_samples) +end + +# Create the `MTConfig` if it's not passed +function MTSpectrogramConfig{T}(n_samples::Int, samples_per_window::Int, + n_overlap_samples::Int; fs=1, kwargs...) where {T} + return MTSpectrogramConfig(n_samples, MTConfig{T}(samples_per_window; fs=fs, kwargs...), n_overlap_samples) +end + +""" + mt_spectrogram!(output, signal::AbstractVector{T}, n::Int=length(signal) >> 3, + n_overlap::Int=n >> 1; fs::Int=1, onesided::Bool=T <: Real, kwargs...) where {T} + mt_spectrogram!(destination::AbstractMatrix, signal::AbstractVector, config::MTSpectrogramConfig) + +Computes a multitaper spectrogram using the parameters specified in `config`. Arguments: + +* `destination`: `length(config.mt_config.freq)` x `length(config.time)` matrix. This can be created by `DSP.allocate_output(config)`. +* `signal`: vector of length `config.n_samples` +* `config`: optionally, pass an [`MTSpectrogramConfig`](@ref) object to hold temporary variables and configuration settings. Otherwise, settings arguments may be passed directly. + +Returns a `Spectrogram`. + +See also [`mt_spectrogram`](@ref). +""" +mt_spectrogram! + +function mt_spectrogram!(output, signal::AbstractVector{T}, n::Int=length(signal) >> 3, + n_overlap::Int=n >> 1; fs::Int=1, onesided::Bool=T <: Real, + kwargs...) where {T} + config = MTSpectrogramConfig{T}(length(signal), n, n_overlap; fs=fs, onesided=onesided, + fft_flags=FFTW.ESTIMATE, kwargs...) + return mt_spectrogram!(output, signal, config) +end + +@views function mt_spectrogram!(destination::AbstractMatrix, signal::AbstractVector, + config::MTSpectrogramConfig) + if size(destination) != (length(config.mt_config.freq), length(config.time)) + throw(DimensionMismatch("""Expected `destination` to be of size `(length(config.mt_config.freq), length(config.time))`; + got `size(destination) == $(size(destination)) and + `(length(config.mt_config.freq), length(config.time))` = $((length(config.mt_config.freq), length(config.time)))""")) + end + if length(signal) != config.n_samples + throw(DimensionMismatch("""Expected `signal` to be of length `config.n_samples`; + got `length(signal) = $(length(signal)) and `config.n_samples` = $(config.n_samples)""")) + end + samples_per_window = config.mt_config.n_samples + subepochs = arraysplit(signal, samples_per_window, config.n_overlap_samples) + @assert length(subepochs) == length(config.time) + for (time_index, subepoch) in enumerate(subepochs) + mt_pgram!(destination[:, time_index], subepoch, config.mt_config) + end + return Spectrogram(destination, config.mt_config.freq, config.time) +end + +function allocate_output(config::MTSpectrogramConfig{T}) where {T} + return Matrix{fftabs2type(T)}(undef, length(config.mt_config.freq), length(config.time)) +end + +function mt_spectrogram(signal::AbstractVector, config::MTSpectrogramConfig) + output = allocate_output(config) + return mt_spectrogram!(output, signal, config) +end + +""" + mt_spectrogram(signal::AbstractVector{T}, n::Int=length(s) >> 3, + n_overlap::Int=n >> 1; fs::Int=1, + onesided::Bool=T <: Real, kwargs...) where {T} + mt_spectrogram(signal::AbstractVector, config::MTSpectrogramConfig) + +Compute a multitaper spectrogram, returning a `Spectrogram` object. +Optionally pass a [`MTSpectrogramConfig`](@ref) object; otherwise, any additional keyword +arguments accepted by [`MTConfig`](@ref) may be passed to configure the tapering. + +Returns a `Spectrogram`. + +See also [`mt_spectrogram!`](@ref). +""" +mt_spectrogram + +function mt_spectrogram(signal::AbstractVector{T}, n::Int=length(signal) >> 3, + n_overlap::Int=n >> 1; fs::Int=1, onesided::Bool=T <: Real, + kwargs...) where {T} + config = MTSpectrogramConfig{T}(length(signal), n, n_overlap; fs=fs, onesided=onesided, + fft_flags=FFTW.ESTIMATE, kwargs...) + X = allocate_output(config) + return mt_spectrogram!(X, signal, config) +end + + + + +""" + mt_spectrogram(signal::AbstractVector, mt_config::MTConfig, + n_overlap::Int=mt_config.n_samples >> 1) -> Spectrogram + +Compute a multitaper spectrogram using an an [`MTConfig`](@ref) object to choose +the window size. Note that all the workspace variables are contained in the [`MTConfig`](@ref) object, and this object can be re-used between spectrogram computations, so that only the output needs to be allocated. + +Returns a `Spectrogram`. + +See also [`mt_spectrogram!`](@ref). + +## Example + +```julia +signal1 = sin.(10_000) .+ randn(10_000) +mt_config = MTConfig{Float64}(1000) # 1000 samples per window +spec1 = mt_spectrogram(signal1, mt_config, 500) +signal2 = cos.(2_000) .+ randn(2_000) +spec2 = mt_spectrogram(signal2, mt_config, 250) # same `mt_config`, different signal, different overlap +``` +""" +function mt_spectrogram(signal::AbstractVector, mt_config::MTConfig{T}, + n_overlap::Int=mt_config.n_samples >> 1) where {T} + config = MTSpectrogramConfig{T}(length(signal), mt_config, n_overlap) + X = allocate_output(config) + return mt_spectrogram!(X, signal, config) +end + +##### +##### Multitapered cross spectral matrix +##### + +# the following code was initially ported from MNE-python before being partially rewritten. +# MNE-python's 3-clause BSD license can be found here: . + + +""" + CrossPowerSpectra{T,F,A<:AbstractArray{T, 3}} + +Access the power (an `n_channels` x `n_channels` x `length(freq)` array) via the function [`power`](@ref), and the frequencies by the function [`freq`](@ref). + +See also [`mt_cross_power_spectra`](@ref) and [`mt_cross_power_spectra!`](@ref). +""" +struct CrossPowerSpectra{T,F,A<:AbstractArray{T, 3}} + power::A + freq::F +end + +freq(c::CrossPowerSpectra) = c.freq +power(c::CrossPowerSpectra) = c.power + +function check_onesided_real(mt_config::MTConfig{T}) where T + if !((T <: Real) && mt_config.onesided) + throw(ArgumentError("Only real data is supported (with the default choice of `onesided=true`) for this operation.")) + end + return nothing +end + +struct MTCrossSpectraConfig{T,T1,T2,T3,T4,F,T5,T6,C<:MTConfig{T}} + n_channels::Int + normalization_weights::T1 + x_mt::T2 + demean::Bool + mean_per_channel::T3 + demeaned_signal::T4 + freq::F + freq_range::T5 + freq_inds::T6 + ensure_aligned::Bool + mt_config::C + function MTCrossSpectraConfig{T,T1,T2,T3,T4,F,T5,T6,C}(n_channels, normalization_weights, + x_mt, demean, mean_per_channel, demeaned_signal, freq, freq_range, + freq_inds, ensure_aligned, mt_config) where {T,T1,T2,T3,T4,F,T5,T6,C} + check_onesided_real(mt_config) # this restriction is artifical; the code needs to be generalized + return new{T,T1,T2,T3,T4,F,T5,T6,C}(n_channels, normalization_weights, x_mt, + demean, mean_per_channel, demeaned_signal, freq, freq_range, + freq_inds, ensure_aligned, mt_config) + end +end + +""" + MTCrossSpectraConfig{T}(n_channels, n_samples; fs=1, demean=false, freq_range=nothing, + ensure_aligned = T == Float32 || T == Complex{Float32}, kwargs...) where {T} + MTCrossSpectraConfig(n_channels, mt_config::MTConfig{T}; demean=false, freq_range=nothing, + ensure_aligned = T == Float32 || T == Complex{Float32}) + +Creates a configuration object used for [`mt_cross_power_spectra`](@ref) and [`mt_cross_power_spectra!`](@ref). + +* `n_channels`: the number of channels of the input. +* `n_samples`: the number of samples for each channel of the input. +* `demean`: if `true`, the channelwise mean will be subtracted from the input signals before the cross spectral powers are computed. +* `freq_range`: if `nothing`, all frequencies are retained. Otherwise, only frequencies between `first(freq_range)` and `last(freq_range)` are retained. +* `ensure_aligned = T == Float32 || T == Complex{Float32}`: perform an extra copy to ensure that the FFT output is memory-aligned +* Additionally, either pass an [`MTConfig`](@ref) object, or keyword arguments such as `fs` accepted by [`MTConfig`](@ref). + +Returns a `CrossPowerSpectra` object. +""" +function MTCrossSpectraConfig{T}(n_channels, n_samples; fs=1, demean=false, + freq_range=nothing, + ensure_aligned = T == Float32 || T == Complex{Float32}, + kwargs...) where {T} + mt_config = MTConfig{T}(n_samples; fs=fs, kwargs...) + return MTCrossSpectraConfig{T}(n_channels, mt_config; demean=demean, freq_range=freq_range, ensure_aligned=ensure_aligned) +end + +# extra method to ensure it's ok to pass the redundant type parameter {T} +MTCrossSpectraConfig{T}(n_channels, mt_config::MTConfig{T}; demean=false, + freq_range=nothing, ensure_aligned = T == Float32 || T == Complex{Float32}) where {T} = MTCrossSpectraConfig(n_channels, mt_config; demean=demean, + freq_range=freq_range, ensure_aligned = ensure_aligned) + +function MTCrossSpectraConfig(n_channels, mt_config::MTConfig{T}; demean=false, + freq_range=nothing, ensure_aligned = T == Float32 || T == Complex{Float32}) where {T} + + n_samples = mt_config.n_samples + if demean + mean_per_channel = Vector{T}(undef, n_channels) + demeaned_signal = Matrix{T}(undef, n_channels, n_samples) + else + mean_per_channel = nothing + demeaned_signal = nothing + end + + normalization_weights = 2 ./ mt_config.r + + x_mt = Array{fftouttype(T),3}(undef, length(mt_config.freq), mt_config.ntapers, + n_channels) + if freq_range !== nothing + freq_mask = first(freq_range) .< mt_config.freq .< last(freq_range) + freq_inds = findall(freq_mask) + freq = mt_config.freq[freq_mask] + else + freq_inds = eachindex(mt_config.freq) + freq = mt_config.freq + end + return MTCrossSpectraConfig{T,typeof(normalization_weights),typeof(x_mt), + typeof(mean_per_channel),typeof(demeaned_signal), + typeof(freq),typeof(freq_range),typeof(freq_inds), + typeof(mt_config)}(n_channels, normalization_weights, x_mt, demean, + mean_per_channel, demeaned_signal, freq, + freq_range, freq_inds, ensure_aligned, mt_config) +end + +function allocate_output(config::MTCrossSpectraConfig{T}) where {T} + return Array{fftouttype(T),3}(undef, config.n_channels, config.n_channels, + length(config.freq)) +end + +""" + mt_cross_power_spectra!(output, signal::AbstractMatrix; fs=1, kwargs...) + mt_cross_power_spectra!(output, signal::AbstractMatrix, config::MTCrossSpectraConfig) + +Computes multitapered cross power spectra between channels of a signal. Arguments: + +* `output`: `n_channels` x `n_channels` x `length(config.freq)`. Can be created by `DSP.allocate_output(config)`. +* `signal`: `n_channels` x `n_samples` +* `config`: `MTCrossSpectraConfig{T}`: optionally pass a [`MTCrossSpectraConfig`](@ref) to + preallocate temporary and choose configuration settings. + Otherwise, one may pass any keyword arguments accepted by this object. + +Produces a `CrossPowerSpectra` object holding the `n_channels` x `n_channels` x `n_frequencies` +output array and the corresponding frequencies (accessed by [`freq`](@ref)). + +See also [`mt_cross_power_spectra`](@ref) and [`MTCrossSpectraConfig`](@ref). +""" +mt_cross_power_spectra! + +function mt_cross_power_spectra!(output, signal::AbstractMatrix{T}; fs=1, kwargs...) where {T} + n_channels, n_samples = size(signal) + config = MTCrossSpectraConfig{T}(n_channels, n_samples; fs=fs, fft_flags=FFTW.ESTIMATE, + kwargs...) + return mt_cross_power_spectra!(output, signal, config) +end + +@views function mt_cross_power_spectra!(output, signal::AbstractMatrix, + config::MTCrossSpectraConfig) + if size(signal) != (config.n_channels, config.mt_config.n_samples) + throw(DimensionMismatch("Size of `signal` does not match `(config.n_channels, config.mt_config.n_samples)`; + got `size(signal)`=$(size(signal)) but `(config.n_channels, config.mt_config.n_samples)`=$((config.n_channels, config.mt_config.n_samples))")) + end + if size(output) != (config.n_channels, config.n_channels, length(config.freq_inds)) + throw(DimensionMismatch("Size of `output` does not match `(config.n_channels, config.n_channels, length(config.freq_inds))`; + got `size(output)`=$(size(output)) but `(config.n_channels, config.n_channels, length(config.freq_inds))`=$((config.n_channels, config.n_channels, length(config.freq_inds)))")) + end + + if config.demean + mean!(config.mean_per_channel, signal) + config.demeaned_signal .= signal .- config.mean_per_channel + signal = config.demeaned_signal + end + + x_mt = config.x_mt + + if config.ensure_aligned + mt_fft_tapered_multichannel_ensure_aligned!(x_mt, signal, config) + else + mt_fft_tapered_multichannel!(x_mt, signal, config) + end + x_mt[1, :, :] ./= sqrt(2) + if iseven(config.mt_config.nfft) + x_mt[end, :, :] ./= sqrt(2) + end + cs_inner!(output, config.normalization_weights, x_mt, config) + return CrossPowerSpectra(output, config.freq) +end + +function mt_fft_tapered_multichannel_ensure_aligned!(x_mt, signal, config) + fft_output = config.mt_config.fft_output_tmp + for k in 1:(config.n_channels), taper in 1:config.mt_config.ntapers + # we do this in two steps so that we are sure `fft_output` has the memory alignment FFTW expects (without needing the `FFTW.UNALIGNED` flag) + mt_fft_tapered!(fft_output, signal[k, :], taper, config.mt_config) + x_mt[:, taper, k] .= fft_output + end +end + +@views function mt_fft_tapered_multichannel!(x_mt, signal, config) + for k in 1:(config.n_channels), taper in 1:config.mt_config.ntapers + mt_fft_tapered!(x_mt[:, taper, k], signal[k, :], taper, config.mt_config) + end +end + +function cs_inner!(output, normalization_weights, x_mt, config) + freq_inds = config.freq_inds + n_channels = config.n_channels + @boundscheck checkbounds(output, 1:n_channels, 1:n_channels, 1:length(freq_inds)) + @boundscheck checkbounds(normalization_weights, 1:length(normalization_weights)) + @boundscheck checkbounds(x_mt, freq_inds, 1:length(normalization_weights), 1:n_channels) + output .= zero(eltype(output)) + # Up to the `normalization_weights` scaling, we have + # J_k^l(f) = x_mt[k, f, l] + # Ŝ^lm(f) = output[l, m, f] + # using the notation from https://en.wikipedia.org/wiki/Multitaper#The_method + # so the formula `Ŝ^lm(f) = \sum_k conj(J_k^l(f)) * (J_k^m(f))`` becomes the following loop: + @inbounds for (fi, f) in enumerate(freq_inds), + m in 1:n_channels, + l in 1:n_channels, + k in 1:length(normalization_weights) + + output[l, m, fi] += normalization_weights[k] * x_mt[f, k, l] * conj(x_mt[f, k, m]) + end + return nothing +end + +""" + mt_cross_power_spectra(signal::AbstractMatrix{T}; fs=1, kwargs...) where {T} + mt_cross_power_spectra(signal::AbstractMatrix, config::MTCrossSpectraConfig) + +Computes multitapered cross power spectra between channels of a signal. Arguments: + +* `signal`: `n_channels` x `n_samples` +* Optionally pass an [`MTCrossSpectraConfig`](@ref) object to preallocate temporary variables +and choose configuration settings. Otherwise, any keyword arguments accepted by [`MTCrossSpectraConfig`](@ref) may be passed here. + +Produces a `CrossPowerSpectra` object holding the `n_channels` x `n_channels` x `n_frequencies` +output array (accessed by [`power`](@ref)) and the corresponding frequencies (accessed by [`freq`](@ref)). + +See also [`mt_cross_power_spectra!`](@ref) and [`MTCrossSpectraConfig`](@ref). +""" +mt_cross_power_spectra + +function mt_cross_power_spectra(signal::AbstractMatrix{T}; fs=1, kwargs...) where {T} + n_channels, n_samples = size(signal) + config = MTCrossSpectraConfig{T}(n_channels, n_samples; fs=fs, fft_flags=FFTW.ESTIMATE, + kwargs...) + return mt_cross_power_spectra(signal, config) +end + +function mt_cross_power_spectra(signal::AbstractMatrix, config::MTCrossSpectraConfig) + output = allocate_output(config) + return mt_cross_power_spectra!(output, signal, config) +end + +##### +##### Multitapered coherences +##### + +struct MTCoherenceConfig{T,T1,C<:MTCrossSpectraConfig{T}} + cs_matrix::T1 + cs_config::C +end + +""" + MTCoherenceConfig{T}(n_channels, n_samples; fs=1, demean=false, freq_range=nothing, kwargs...) where T + MTCoherenceConfig(cs_config::MTCrossSpectraConfig{T}) where {T} + MTCoherenceConfig(n_channels, mt_config::MTConfig{T}; demean=false, freq_range=nothing, + ensure_aligned = T == Float32 || T == Complex{Float32}) where {T} + +Creates a configuration object for coherences from a [`MTCrossSpectraConfig`](@ref). Provides a helper method +with the same arugments as `MTCrossSpectraConfig` to construct the `MTCrossSpectraConfig` object. + +See also [`mt_coherence`](@ref) and [`mt_coherence!`](@ref). +""" +function MTCoherenceConfig(cs_config::MTCrossSpectraConfig{T}) where {T} + cs_matrix = allocate_output(cs_config) + return MTCoherenceConfig{T,typeof(cs_matrix),typeof(cs_config)}(cs_matrix, cs_config) +end + +# add a method to cover the case in which the user specifies the `{T}` here +MTCoherenceConfig{T}(cs_config::MTCrossSpectraConfig{T}) where {T} = MTCoherenceConfig(cs_config) + +function MTCoherenceConfig{T}(n_channels, n_samples; fs=1, demean=false, + freq_range=nothing, kwargs...) where {T} + cs_config = MTCrossSpectraConfig{T}(n_channels, n_samples; fs=fs, demean=demean, + freq_range=freq_range, kwargs...) + cs_matrix = allocate_output(cs_config) + return MTCoherenceConfig{T,typeof(cs_matrix),typeof(cs_config)}(cs_matrix, cs_config) +end + +# ensure it's OK to pass the extra {T} type parameter +function MTCoherenceConfig{T}(n_channels, mt_config::MTConfig{T}; demean=false, + freq_range=nothing, ensure_aligned = T == Float32 || T == Complex{Float32}) where T + return MTCoherenceConfig(n_channels, mt_config; demean=demean, + freq_range=freq_range, ensure_aligned = ensure_aligned) +end + +function MTCoherenceConfig(n_channels, mt_config::MTConfig{T}; demean=false, + freq_range=nothing, ensure_aligned = T == Float32 || T == Complex{Float32}) where {T} + cs_config = MTCrossSpectraConfig(n_channels, mt_config; demean=demean, + freq_range=freq_range, ensure_aligned=ensure_aligned) + cs_matrix = allocate_output(cs_config) + return MTCoherenceConfig{T,typeof(cs_matrix),typeof(cs_config)}(cs_matrix, cs_config) +end + + +function allocate_output(config::MTCoherenceConfig{T}) where {T} + return Array{real(T)}(undef, config.cs_config.n_channels, config.cs_config.n_channels, length(config.cs_config.freq)) +end + +""" + coherence_from_cs!(output::AbstractArray, cs_matrix) + +Compute the pairwise channel coherences from a cross spectral matrix, storing the result in `output`. +""" +function coherence_from_cs!(output::AbstractArray{T}, cs_matrix) where T + n_channels = size(cs_matrix, 2) + n_freqs = size(cs_matrix, 3) + @boundscheck checkbounds(output, 1:n_channels, 1:n_channels, 1:n_freqs) + @boundscheck checkbounds(cs_matrix, 1:n_channels, 1:n_channels, 1:n_freqs) + output .= zero(T) + @inbounds for ch2 in 1:n_channels + for ch1 in (ch2 + 1):n_channels # lower triangular matrix + for f in 1:n_freqs + output[ch1, ch2, f] += abs(cs_matrix[ch1, ch2, f]) / + sqrt(real(cs_matrix[ch1, ch1, f] * + cs_matrix[ch2, ch2, f])) + end + end + end + output .+= PermutedDimsArray(output, (2, 1, 3)) # symmetrize + # diagonal elements should be `1` for any frequency + @inbounds for i in 1:n_channels + output[i, i, :] .= one(T) + end + return nothing +end + +""" + Coherence + +Holds an `n_channels` x `n_channels` x `length(freq)` array consisting of the pairwise coherences between each channel for each frequency which is accessed by [`coherence`](@ref), as well +as the frequencies accessed by [`freq`](@ref). + +See also [`mt_coherence`](@ref) and [`mt_coherence!`](@ref). +""" +struct Coherence{T,F,A<:AbstractArray{T, 3}} + coherence::A + freq::F +end + +freq(c::Coherence) = c.freq + +""" + coherence(c::Coherence) + +Given an `Coherence` object, returns an `n_channels` x `n_channels` x `length(freq(c))` +array consisting of the pairwise coherences between each channel for each frequency. +""" +coherence(c::Coherence) = c.coherence + +""" + mt_coherence!(output, signal::AbstractMatrix; fs=1, freq_range=nothing, demean=false, kwargs...) + mt_coherence!(output, signal::AbstractMatrix, config::MTCoherenceConfig) + +Computes the pairwise coherences between channels. + +* `output`: `n_channels` x `n_channels` matrix +* `signal`: `n_samples` x `n_channels` matrix +* `config`: optional configuration object that pre-allocates temporary variables and choose settings. + +Returns a `Coherence` object. + +See also [`mt_coherence`](@ref) and [`MTCoherenceConfig`](@ref). +""" +mt_coherence! + +function mt_coherence!(output, signal::AbstractMatrix, + config::MTCoherenceConfig) + if size(signal) != (config.cs_config.n_channels, config.cs_config.mt_config.n_samples) + throw(DimensionMismatch("Size of `signal` does not match `(config.cs_config.n_channels, config.cs_config.mt_config.n_samples)`; + got `size(signal)`=$(size(signal)) but `(config.cs_config.n_channels, config.cs_config.mt_config.n_samples)`=$((config.cs_config.n_channels, config.cs_config.mt_config.n_samples))")) + end + if size(output) != (config.cs_config.n_channels, config.cs_config.n_channels, length(config.cs_config.freq)) + throw(DimensionMismatch("Size of `output` does not match `(config.cs_config.n_channels, config.cs_config.n_channels, length(config.cs_config.freq))`; + got `size(output)`=$(size(output)) but `(config.cs_config.n_channels, config.cs_config.n_channels, length(config.cs_config.freq))`=$((config.cs_config.n_channels, config.cs_config.n_channels, length(config.cs_config.freq)))")) + end + cs = mt_cross_power_spectra!(config.cs_matrix, signal, config.cs_config) + coherence_from_cs!(output, power(cs)) + + return Coherence(output, config.cs_config.freq) +end + +function mt_coherence!(output, signal::AbstractMatrix{T}; fs=1, freq_range=nothing, demean=false, + kwargs...) where {T} + n_channels, n_samples = size(signal) + config = MTCoherenceConfig{T}(n_channels, n_samples; fs=fs, demean=demean, + freq_range=freq_range, + fft_flags=FFTW.ESTIMATE, kwargs...) + return mt_coherence!(output, signal, config) +end + + +""" + mt_coherence(signal::AbstractMatrix{T}; fs=1, freq_range = nothing, demean=false, kwargs...) where T + mt_coherence(signal::AbstractMatrix, config::MTCoherenceConfig) + +Arguments: + +* `signal`: `n_channels` x `n_samples` matrix +* Optionally pass an `MTCoherenceConfig` to pre-allocate temporary variables and choose configuration settings, otherwise, see [`MTCrossSpectraConfig`](@ref) for the meaning of the keyword arguments. + +Returns a `Coherence` object. + +See also [`mt_coherence`](@ref) and [`MTCoherenceConfig`](@ref). +""" +mt_coherence + +function mt_coherence(signal::AbstractMatrix{T}; fs=1, freq_range=nothing, demean=false, + kwargs...) where {T} + n_channels, n_samples = size(signal) + config = MTCoherenceConfig{T}(n_channels, n_samples; fs=fs, demean=demean, + freq_range=freq_range, + fft_flags=FFTW.ESTIMATE, kwargs...) + return mt_coherence(signal, config) +end + + +function mt_coherence(signal::AbstractMatrix, config::MTCoherenceConfig) + cohs = allocate_output(config) + return mt_coherence!(cohs, signal, config) +end diff --git a/src/periodograms.jl b/src/periodograms.jl index b33d4718e..5cba85c1a 100644 --- a/src/periodograms.jl +++ b/src/periodograms.jl @@ -3,11 +3,17 @@ module Periodograms using LinearAlgebra: mul! using ..Util, ..Windows -export arraysplit, nextfastfft, periodogram, welch_pgram, mt_pgram, - spectrogram, power, freq, stft +using Statistics: mean! +export arraysplit, nextfastfft, periodogram, welch_pgram, + spectrogram, power, freq, stft, + MTConfig, mt_pgram, mt_pgram!, + MTSpectrogramConfig, mt_spectrogram, mt_spectrogram!, + MTCrossSpectraConfig, mt_cross_power_spectra, mt_cross_power_spectra!, + MTCoherenceConfig, mt_coherence, mt_coherence!, + coherence +import ..DSP: allocate_output using FFTW import FFTW: Frequencies, fftfreq, rfftfreq - ## ARRAY SPLITTER struct ArraySplit{T<:AbstractVector,S,W} <: AbstractVector{Vector{S}} @@ -22,7 +28,7 @@ struct ArraySplit{T<:AbstractVector,S,W} <: AbstractVector{Vector{S}} # n = noverlap is a problem - the algorithm will not terminate. (0 ≤ noverlap < n) || error("noverlap must be between zero and n") nfft >= n || error("nfft must be >= n") - new{Ti,Si,Wi}(s, zeros(Si, nfft), n, noverlap, window, div((length(s) - n), n - noverlap)+1) + new{Ti,Si,Wi}(s, zeros(Si, nfft), n, noverlap, window, length(s) >= n ? div((length(s) - n), n - noverlap)+1 : 0) end end ArraySplit(s::AbstractVector, n, noverlap, nfft, window) = @@ -62,7 +68,7 @@ Base.collect(x::ArraySplit) = collect(copy(a) for a in x) ## UTILITY FUNCTIONS # Convert the output of an FFT to a PSD and add it to out -function fft2pow!(out::Array{T}, s_fft::Vector{Complex{T}}, nfft::Int, r::Real, onesided::Bool, offset::Int=0) where T +function fft2pow!(out::AbstractArray{T}, s_fft::AbstractVector{Complex{T}}, nfft::Int, r::Real, onesided::Bool, offset::Int=0) where T m1 = convert(T, 1/r) n = length(s_fft) if onesided @@ -184,12 +190,12 @@ end ## PERIODOGRAMS abstract type TFR{T} end -struct Periodogram{T,F<:Union{Frequencies,AbstractRange}} <: TFR{T} - power::Vector{T} +struct Periodogram{T,F<:Union{Frequencies,AbstractRange}, V <: AbstractVector{T}} <: TFR{T} + power::V freq::F end -struct Periodogram2{T,F1<:Union{Frequencies,AbstractRange},F2<:Union{Frequencies,AbstractRange}} <: TFR{T} - power::Matrix{T} +struct Periodogram2{T,F1<:Union{Frequencies,AbstractRange},F2<:Union{Frequencies,AbstractRange}, M<:AbstractMatrix{T}} <: TFR{T} + power::M freq1::F1 freq2::F2 end @@ -197,21 +203,24 @@ end """ power(p) -For a Periodogram, returns the computed power at each frequency as +For a `Periodogram`, returns the computed power at each frequency as a Vector. -For a Spectrogram, returns the computed power at each frequency and +For a `Spectrogram`, returns the computed power at each frequency and time bin as a Matrix. Dimensions are frequency × time. + +For a `CrossPowerSpectra`, returns the pairwise power between each pair +of channels at each frequency. Dimensions are channel x channel x frequency. """ power(p::TFR) = p.power """ freq(p) -Returns the frequency bin centers for a given Periodogram or -Spectrogram object. +Returns the frequency bin centers for a given `Periodogram`, +`Spectrogram`, `CrossPowerSpectra`, or `Coherence` object. -Returns a tuple of frequency bin centers for a given Periodogram2 +Returns a tuple of frequency bin centers for a given `Periodogram2` object. """ freq(p::TFR) = p.freq @@ -381,62 +390,14 @@ function welch_pgram(s::AbstractVector{T}, n::Int=length(s)>>3, noverlap::Int=n> Periodogram(out, onesided ? rfftfreq(nfft, fs) : fftfreq(nfft, fs)) end -""" - mt_pgram(s; onesided=eltype(s)<:Real, nfft=nextfastfft(n), fs=1, nw=4, ntapers=iceil(2nw)-1, window=dpss(length(s), nw, ntapers)) - -Computes the multitaper periodogram of a signal `s`. - -If `window` is not specified, the signal is tapered with -`ntapers` discrete prolate spheroidal sequences with -time-bandwidth product `nw`. Each sequence is equally weighted; -adaptive multitaper is not (yet) supported. - -If `window` is specified, each column is applied as a taper. The -sum of periodograms is normalized by the total sum of squares of -`window`. - -See also: [`dpss`](@ref) -""" -function mt_pgram(s::AbstractVector{T}; onesided::Bool=eltype(s)<:Real, - nfft::Int=nextfastfft(length(s)), fs::Real=1, - nw::Real=4, ntapers::Int=ceil(Int, 2nw)-1, - window::Union{AbstractMatrix,Nothing}=nothing) where T<:Number - onesided && T <: Complex && error("cannot compute one-sided FFT of a complex signal") - nfft >= length(s) || error("nfft must be >= n") - - if isa(window, Nothing) - window = dpss(length(s), nw, ntapers) - r::T = fs*ntapers - else - size(window, 1) == length(s) || - error(DimensionMismatch("length of signal $(length(s)) must match first dimension of window $(size(window,1))")) - r = fs*sum(abs2, window) - end - - out = zeros(fftabs2type(T), onesided ? (nfft >> 1)+1 : nfft) - input = zeros(fftintype(T), nfft) - tmp = Vector{fftouttype(T)}(undef, T<:Real ? (nfft >> 1)+1 : nfft) - - plan = forward_plan(input, tmp) - for j = 1:size(window, 2) - for i = 1:size(window, 1) - @inbounds input[i] = window[i, j]*s[i] - end - mul!(tmp, plan, input) - fft2pow!(out, tmp, nfft, r, onesided) - end - - Periodogram(out, onesided ? rfftfreq(nfft, fs) : fftfreq(nfft, fs)) -end - ## SPECTROGRAM @static if isdefined(Base, :StepRangeLen) const FloatRange{T} = StepRangeLen{T,Base.TwicePrecision{T},Base.TwicePrecision{T}} end -struct Spectrogram{T,F<:Union{Frequencies,AbstractRange}} <: TFR{T} - power::Matrix{T} +struct Spectrogram{T,F<:Union{Frequencies,AbstractRange}, M<:AbstractMatrix{T}} <: TFR{T} + power::M freq::F time::FloatRange{Float64} end @@ -508,4 +469,6 @@ function stft(s::AbstractVector{T}, n::Int=length(s)>>3, noverlap::Int=n>>1, out end +include("multitaper.jl") + end # end module definition diff --git a/test/data/csd_array_multitaper_frequencies.txt b/test/data/csd_array_multitaper_frequencies.txt new file mode 100644 index 000000000..30846cf72 --- /dev/null +++ b/test/data/csd_array_multitaper_frequencies.txt @@ -0,0 +1,512 @@ +0.9765625 +1.953125 +2.9296875 +3.90625 +4.8828125 +5.859375 +6.8359375 +7.8125 +8.7890625 +9.765625 +10.7421875 +11.71875 +12.6953125 +13.671875 +14.6484375 +15.625 +16.6015625 +17.578125 +18.5546875 +19.53125 +20.5078125 +21.484375 +22.4609375 +23.4375 +24.4140625 +25.390625 +26.3671875 +27.34375 +28.3203125 +29.296875 +30.2734375 +31.25 +32.2265625 +33.203125 +34.1796875 +35.15625 +36.1328125 +37.109375 +38.0859375 +39.0625 +40.0390625 +41.015625 +41.9921875 +42.96875 +43.9453125 +44.921875 +45.8984375 +46.875 +47.8515625 +48.828125 +49.8046875 +50.78125 +51.7578125 +52.734375 +53.7109375 +54.6875 +55.6640625 +56.640625 +57.6171875 +58.59375 +59.5703125 +60.546875 +61.5234375 +62.5 +63.4765625 +64.453125 +65.4296875 +66.40625 +67.3828125 +68.359375 +69.3359375 +70.3125 +71.2890625 +72.265625 +73.2421875 +74.21875 +75.1953125 +76.171875 +77.1484375 +78.125 +79.1015625 +80.078125 +81.0546875 +82.03125 +83.0078125 +83.984375 +84.9609375 +85.9375 +86.9140625 +87.890625 +88.8671875 +89.84375 +90.8203125 +91.796875 +92.7734375 +93.75 +94.7265625 +95.703125 +96.6796875 +97.65625 +98.6328125 +99.609375 +100.5859375 +101.5625 +102.5390625 +103.515625 +104.4921875 +105.46875 +106.4453125 +107.421875 +108.3984375 +109.375 +110.3515625 +111.328125 +112.3046875 +113.28125 +114.2578125 +115.234375 +116.2109375 +117.1875 +118.1640625 +119.140625 +120.1171875 +121.09375 +122.0703125 +123.046875 +124.0234375 +125.0 +125.9765625 +126.953125 +127.9296875 +128.90625 +129.8828125 +130.859375 +131.8359375 +132.8125 +133.7890625 +134.765625 +135.7421875 +136.71875 +137.6953125 +138.671875 +139.6484375 +140.625 +141.6015625 +142.578125 +143.5546875 +144.53125 +145.5078125 +146.484375 +147.4609375 +148.4375 +149.4140625 +150.390625 +151.3671875 +152.34375 +153.3203125 +154.296875 +155.2734375 +156.25 +157.2265625 +158.203125 +159.1796875 +160.15625 +161.1328125 +162.109375 +163.0859375 +164.0625 +165.0390625 +166.015625 +166.9921875 +167.96875 +168.9453125 +169.921875 +170.8984375 +171.875 +172.8515625 +173.828125 +174.8046875 +175.78125 +176.7578125 +177.734375 +178.7109375 +179.6875 +180.6640625 +181.640625 +182.6171875 +183.59375 +184.5703125 +185.546875 +186.5234375 +187.5 +188.4765625 +189.453125 +190.4296875 +191.40625 +192.3828125 +193.359375 +194.3359375 +195.3125 +196.2890625 +197.265625 +198.2421875 +199.21875 +200.1953125 +201.171875 +202.1484375 +203.125 +204.1015625 +205.078125 +206.0546875 +207.03125 +208.0078125 +208.984375 +209.9609375 +210.9375 +211.9140625 +212.890625 +213.8671875 +214.84375 +215.8203125 +216.796875 +217.7734375 +218.75 +219.7265625 +220.703125 +221.6796875 +222.65625 +223.6328125 +224.609375 +225.5859375 +226.5625 +227.5390625 +228.515625 +229.4921875 +230.46875 +231.4453125 +232.421875 +233.3984375 +234.375 +235.3515625 +236.328125 +237.3046875 +238.28125 +239.2578125 +240.234375 +241.2109375 +242.1875 +243.1640625 +244.140625 +245.1171875 +246.09375 +247.0703125 +248.046875 +249.0234375 +250.0 +250.9765625 +251.953125 +252.9296875 +253.90625 +254.8828125 +255.859375 +256.8359375 +257.8125 +258.7890625 +259.765625 +260.7421875 +261.71875 +262.6953125 +263.671875 +264.6484375 +265.625 +266.6015625 +267.578125 +268.5546875 +269.53125 +270.5078125 +271.484375 +272.4609375 +273.4375 +274.4140625 +275.390625 +276.3671875 +277.34375 +278.3203125 +279.296875 +280.2734375 +281.25 +282.2265625 +283.203125 +284.1796875 +285.15625 +286.1328125 +287.109375 +288.0859375 +289.0625 +290.0390625 +291.015625 +291.9921875 +292.96875 +293.9453125 +294.921875 +295.8984375 +296.875 +297.8515625 +298.828125 +299.8046875 +300.78125 +301.7578125 +302.734375 +303.7109375 +304.6875 +305.6640625 +306.640625 +307.6171875 +308.59375 +309.5703125 +310.546875 +311.5234375 +312.5 +313.4765625 +314.453125 +315.4296875 +316.40625 +317.3828125 +318.359375 +319.3359375 +320.3125 +321.2890625 +322.265625 +323.2421875 +324.21875 +325.1953125 +326.171875 +327.1484375 +328.125 +329.1015625 +330.078125 +331.0546875 +332.03125 +333.0078125 +333.984375 +334.9609375 +335.9375 +336.9140625 +337.890625 +338.8671875 +339.84375 +340.8203125 +341.796875 +342.7734375 +343.75 +344.7265625 +345.703125 +346.6796875 +347.65625 +348.6328125 +349.609375 +350.5859375 +351.5625 +352.5390625 +353.515625 +354.4921875 +355.46875 +356.4453125 +357.421875 +358.3984375 +359.375 +360.3515625 +361.328125 +362.3046875 +363.28125 +364.2578125 +365.234375 +366.2109375 +367.1875 +368.1640625 +369.140625 +370.1171875 +371.09375 +372.0703125 +373.046875 +374.0234375 +375.0 +375.9765625 +376.953125 +377.9296875 +378.90625 +379.8828125 +380.859375 +381.8359375 +382.8125 +383.7890625 +384.765625 +385.7421875 +386.71875 +387.6953125 +388.671875 +389.6484375 +390.625 +391.6015625 +392.578125 +393.5546875 +394.53125 +395.5078125 +396.484375 +397.4609375 +398.4375 +399.4140625 +400.390625 +401.3671875 +402.34375 +403.3203125 +404.296875 +405.2734375 +406.25 +407.2265625 +408.203125 +409.1796875 +410.15625 +411.1328125 +412.109375 +413.0859375 +414.0625 +415.0390625 +416.015625 +416.9921875 +417.96875 +418.9453125 +419.921875 +420.8984375 +421.875 +422.8515625 +423.828125 +424.8046875 +425.78125 +426.7578125 +427.734375 +428.7109375 +429.6875 +430.6640625 +431.640625 +432.6171875 +433.59375 +434.5703125 +435.546875 +436.5234375 +437.5 +438.4765625 +439.453125 +440.4296875 +441.40625 +442.3828125 +443.359375 +444.3359375 +445.3125 +446.2890625 +447.265625 +448.2421875 +449.21875 +450.1953125 +451.171875 +452.1484375 +453.125 +454.1015625 +455.078125 +456.0546875 +457.03125 +458.0078125 +458.984375 +459.9609375 +460.9375 +461.9140625 +462.890625 +463.8671875 +464.84375 +465.8203125 +466.796875 +467.7734375 +468.75 +469.7265625 +470.703125 +471.6796875 +472.65625 +473.6328125 +474.609375 +475.5859375 +476.5625 +477.5390625 +478.515625 +479.4921875 +480.46875 +481.4453125 +482.421875 +483.3984375 +484.375 +485.3515625 +486.328125 +487.3046875 +488.28125 +489.2578125 +490.234375 +491.2109375 +492.1875 +493.1640625 +494.140625 +495.1171875 +496.09375 +497.0703125 +498.046875 +499.0234375 +500.0 diff --git a/test/data/csd_array_multitaper_values_im.txt b/test/data/csd_array_multitaper_values_im.txt new file mode 100644 index 000000000..a385ff7fe --- /dev/null +++ b/test/data/csd_array_multitaper_values_im.txt @@ -0,0 +1,2048 @@ +0.0 +1.8843212433557654e-19 +-1.8843212433557654e-19 +0.0 +0.0 +3.4170532671149925e-19 +-3.4170532671149925e-19 +0.0 +0.0 +5.45964082207829e-19 +-5.45964082207829e-19 +0.0 +0.0 +5.197860311115803e-19 +-5.197860311115803e-19 +0.0 +0.0 +9.93032452729851e-21 +-9.93032452729851e-21 +0.0 +0.0 +4.1126667996846647e-19 +-4.1126667996846647e-19 +0.0 +0.0 +-3.546669166585232e-20 +3.546669166585232e-20 +0.0 +0.0 +5.430205394267288e-19 +-5.430205394267288e-19 +0.0 +0.0 +-6.052784117052088e-19 +6.052784117052088e-19 +0.0 +0.0 +-2.8041854027294054e-18 +2.8041854027294054e-18 +0.0 +0.0 +4.678983643411351e-18 +-4.678983643411351e-18 +0.0 +0.0 +6.153183969417667e-18 +-6.153183969417667e-18 +0.0 +0.0 +1.281913326962014e-18 +-1.281913326962014e-18 +0.0 +0.0 +4.5507923107151495e-18 +-4.5507923107151495e-18 +0.0 +0.0 +3.571330409333236e-18 +-3.571330409333236e-18 +0.0 +0.0 +4.927276108730031e-18 +-4.927276108730031e-18 +0.0 +0.0 +-2.4837367340026823e-19 +2.4837367340026823e-19 +0.0 +0.0 +-4.822194111767446e-19 +4.822194111767446e-19 +0.0 +0.0 +-6.435528358475135e-19 +6.435528358475135e-19 +0.0 +0.0 +-8.044379298407519e-19 +8.044379298407519e-19 +0.0 +0.0 +-4.981968595441703e-19 +4.981968595441703e-19 +0.0 +0.0 +-8.035570978406174e-20 +8.035570978406174e-20 +0.0 +0.0 +2.365529481711984e-19 +-2.365529481711984e-19 +0.0 +0.0 +3.748254238547061e-19 +-3.748254238547061e-19 +0.0 +0.0 +3.283108073855162e-19 +-3.283108073855162e-19 +0.0 +0.0 +2.874187256256281e-19 +-2.874187256256281e-19 +0.0 +0.0 +2.372967779699197e-19 +-2.372967779699197e-19 +0.0 +0.0 +2.498865876646273e-19 +-2.498865876646273e-19 +0.0 +0.0 +-1.133174485925734e-20 +1.133174485925734e-20 +0.0 +0.0 +1.862168969342874e-19 +-1.862168969342874e-19 +0.0 +0.0 +-2.95775669654591e-21 +2.95775669654591e-21 +0.0 +0.0 +-1.2606199960379108e-19 +1.2606199960379108e-19 +0.0 +0.0 +-2.284162873925254e-19 +2.284162873925254e-19 +0.0 +0.0 +-1.3926304082253552e-19 +1.3926304082253552e-19 +0.0 +0.0 +-4.873821988822145e-20 +4.873821988822145e-20 +0.0 +0.0 +2.2340457255455894e-20 +-2.2340457255455894e-20 +0.0 +0.0 +-7.052227919325527e-20 +7.052227919325527e-20 +0.0 +0.0 +6.341718123638479e-20 +-6.341718123638479e-20 +0.0 +0.0 +1.9934653026898805e-21 +-1.9934653026898805e-21 +0.0 +0.0 +4.5745190156384826e-20 +-4.5745190156384826e-20 +0.0 +0.0 +2.4639343647682172e-20 +-2.4639343647682172e-20 +0.0 +0.0 +6.167875392020809e-20 +-6.167875392020809e-20 +0.0 +0.0 +5.448559821524296e-20 +-5.448559821524296e-20 +0.0 +0.0 +1.8113613733078745e-20 +-1.8113613733078745e-20 +0.0 +0.0 +-1.5123824416278836e-21 +1.5123824416278836e-21 +0.0 +0.0 +-1.703641729528628e-20 +1.703641729528628e-20 +0.0 +0.0 +-7.894950092093266e-20 +7.894950092093266e-20 +0.0 +0.0 +-1.3559727496006082e-20 +1.3559727496006082e-20 +0.0 +0.0 +6.1494037190185995e-21 +-6.1494037190185995e-21 +0.0 +0.0 +2.6790248192662275e-20 +-2.6790248192662275e-20 +0.0 +0.0 +2.943744569449251e-20 +-2.943744569449251e-20 +0.0 +0.0 +-5.91736309879376e-21 +5.91736309879376e-21 +0.0 +0.0 +1.8163605187332665e-20 +-1.8163605187332665e-20 +0.0 +0.0 +2.527004027467452e-20 +-2.527004027467452e-20 +0.0 +0.0 +1.8750522769776378e-20 +-1.8750522769776378e-20 +0.0 +0.0 +3.1518369444367915e-20 +-3.1518369444367915e-20 +0.0 +0.0 +-2.0733862734307234e-21 +2.0733862734307234e-21 +0.0 +0.0 +-7.97840391377715e-21 +7.97840391377715e-21 +0.0 +0.0 +-2.942928766057064e-20 +2.942928766057064e-20 +0.0 +0.0 +-3.316907997190603e-20 +3.316907997190603e-20 +0.0 +0.0 +-3.820020677980229e-20 +3.820020677980229e-20 +0.0 +0.0 +-2.8041940989882124e-20 +2.8041940989882124e-20 +0.0 +0.0 +-3.2696434614072426e-21 +3.2696434614072426e-21 +0.0 +0.0 +1.8775884595818777e-20 +-1.8775884595818777e-20 +0.0 +0.0 +8.700745664443285e-21 +-8.700745664443285e-21 +0.0 +0.0 +6.010184228339367e-21 +-6.010184228339367e-21 +0.0 +0.0 +1.129770649759327e-20 +-1.129770649759327e-20 +0.0 +0.0 +2.1614475380463273e-20 +-2.1614475380463273e-20 +0.0 +0.0 +3.8887816145120844e-20 +-3.8887816145120844e-20 +0.0 +0.0 +5.055869363607751e-21 +-5.055869363607751e-21 +0.0 +0.0 +2.027248379593512e-20 +-2.027248379593512e-20 +0.0 +0.0 +4.6197045064709065e-21 +-4.6197045064709065e-21 +0.0 +0.0 +-9.062789058005327e-21 +9.062789058005327e-21 +0.0 +0.0 +-2.7290907508824676e-20 +2.7290907508824676e-20 +0.0 +0.0 +-2.0515587509412443e-20 +2.0515587509412443e-20 +0.0 +0.0 +-9.771072827268019e-21 +9.771072827268019e-21 +0.0 +0.0 +-4.538928890180233e-22 +4.538928890180233e-22 +0.0 +0.0 +-8.018167409802255e-21 +8.018167409802255e-21 +0.0 +0.0 +9.777448642060303e-21 +-9.777448642060303e-21 +0.0 +0.0 +-4.407260499176634e-21 +4.407260499176634e-21 +0.0 +0.0 +4.284476429312713e-21 +-4.284476429312713e-21 +0.0 +0.0 +6.874588701223098e-21 +-6.874588701223098e-21 +0.0 +0.0 +1.8175842213032178e-20 +-1.8175842213032178e-20 +0.0 +0.0 +9.156146998440355e-21 +-9.156146998440355e-21 +0.0 +0.0 +-5.201716956281194e-22 +5.201716956281194e-22 +0.0 +0.0 +-3.817442798924811e-21 +3.817442798924811e-21 +0.0 +0.0 +8.699110031689165e-22 +-8.699110031689165e-22 +0.0 +0.0 +-1.562721037557441e-20 +1.562721037557441e-20 +0.0 +0.0 +-7.983122380351594e-21 +7.983122380351594e-21 +0.0 +0.0 +-2.4558717391660498e-21 +2.4558717391660498e-21 +0.0 +0.0 +3.3064306363666277e-21 +-3.3064306363666277e-21 +0.0 +0.0 +2.5540032327722513e-21 +-2.5540032327722513e-21 +0.0 +0.0 +-2.8183717497400465e-21 +2.8183717497400465e-21 +0.0 +0.0 +1.8539417181032474e-21 +-1.8539417181032474e-21 +0.0 +0.0 +-1.886815342021831e-23 +1.886815342021831e-23 +0.0 +0.0 +1.1869710334758782e-20 +-1.1869710334758782e-20 +0.0 +0.0 +1.5908915093774714e-20 +-1.5908915093774714e-20 +0.0 +0.0 +9.984310289830377e-21 +-9.984310289830377e-21 +0.0 +0.0 +5.025267851360465e-21 +-5.025267851360465e-21 +0.0 +0.0 +-8.59553536477578e-21 +8.59553536477578e-21 +0.0 +0.0 +2.792993626373639e-22 +-2.792993626373639e-22 +0.0 +0.0 +-1.0254465235905e-20 +1.0254465235905e-20 +0.0 +0.0 +-9.392621158153032e-21 +9.392621158153032e-21 +0.0 +0.0 +-3.620879635673119e-21 +3.620879635673119e-21 +0.0 +0.0 +2.508906234832909e-22 +-2.508906234832909e-22 +0.0 +0.0 +-4.031357917426705e-21 +4.031357917426705e-21 +0.0 +0.0 +-5.967839116057571e-21 +5.967839116057571e-21 +0.0 +0.0 +-2.79905916336004e-21 +2.79905916336004e-21 +0.0 +0.0 +7.763381568718369e-21 +-7.763381568718369e-21 +0.0 +0.0 +1.3956971483705986e-20 +-1.3956971483705986e-20 +0.0 +0.0 +5.961819759641555e-21 +-5.961819759641555e-21 +0.0 +0.0 +2.5073143134735407e-20 +-2.5073143134735407e-20 +0.0 +0.0 +5.8849580712084235e-21 +-5.8849580712084235e-21 +0.0 +0.0 +-2.0648801858247738e-22 +2.0648801858247738e-22 +0.0 +0.0 +-5.57727500347962e-21 +5.57727500347962e-21 +0.0 +0.0 +-3.952576289874482e-21 +3.952576289874482e-21 +0.0 +0.0 +-1.3157869439555749e-21 +1.3157869439555749e-21 +0.0 +0.0 +-5.832796627749705e-21 +5.832796627749705e-21 +0.0 +0.0 +-9.61032723307421e-21 +9.61032723307421e-21 +0.0 +0.0 +1.3273232411519368e-21 +-1.3273232411519368e-21 +0.0 +0.0 +-6.638044740872892e-21 +6.638044740872892e-21 +0.0 +0.0 +2.5471009765462584e-22 +-2.5471009765462584e-22 +0.0 +0.0 +1.6392719503948534e-21 +-1.6392719503948534e-21 +0.0 +0.0 +7.492414994362384e-21 +-7.492414994362384e-21 +0.0 +0.0 +9.524427690966356e-21 +-9.524427690966356e-21 +0.0 +0.0 +3.779987838945592e-21 +-3.779987838945592e-21 +0.0 +0.0 +4.3354940019524626e-21 +-4.3354940019524626e-21 +0.0 +0.0 +8.15181320447781e-23 +-8.15181320447781e-23 +0.0 +0.0 +-8.208248558432844e-21 +8.208248558432844e-21 +0.0 +0.0 +-1.088940421639075e-22 +1.088940421639075e-22 +0.0 +0.0 +-1.2893090811663813e-21 +1.2893090811663813e-21 +0.0 +0.0 +-1.9819638981173866e-21 +1.9819638981173866e-21 +0.0 +0.0 +-3.0774450949375107e-21 +3.0774450949375107e-21 +0.0 +0.0 +-4.843269807482426e-21 +4.843269807482426e-21 +0.0 +0.0 +-1.4139657886891141e-21 +1.4139657886891141e-21 +0.0 +0.0 +2.39122844615577e-21 +-2.39122844615577e-21 +0.0 +0.0 +5.862809620103959e-21 +-5.862809620103959e-21 +0.0 +0.0 +1.035780315207845e-20 +-1.035780315207845e-20 +0.0 +0.0 +6.15819834448295e-21 +-6.15819834448295e-21 +0.0 +0.0 +6.6963610641940015e-21 +-6.6963610641940015e-21 +0.0 +0.0 +5.713801933353646e-22 +-5.713801933353646e-22 +0.0 +0.0 +2.746975223130048e-21 +-2.746975223130048e-21 +0.0 +0.0 +-7.234215952843015e-22 +7.234215952843015e-22 +0.0 +0.0 +4.1751156303621325e-21 +-4.1751156303621325e-21 +0.0 +0.0 +-3.306128701693766e-21 +3.306128701693766e-21 +0.0 +0.0 +-1.6684225060001824e-21 +1.6684225060001824e-21 +0.0 +0.0 +-4.9767584341342016e-21 +4.9767584341342016e-21 +0.0 +0.0 +-7.352522142894823e-21 +7.352522142894823e-21 +0.0 +0.0 +-7.950920366049485e-21 +7.950920366049485e-21 +0.0 +0.0 +1.2743920604273221e-21 +-1.2743920604273221e-21 +0.0 +0.0 +6.0127900996087354e-21 +-6.0127900996087354e-21 +0.0 +0.0 +7.859793802603341e-21 +-7.859793802603341e-21 +0.0 +0.0 +8.149249404004666e-21 +-8.149249404004666e-21 +0.0 +0.0 +5.094219425637051e-21 +-5.094219425637051e-21 +0.0 +0.0 +2.8263569322735857e-21 +-2.8263569322735857e-21 +0.0 +0.0 +-1.41428727749255e-21 +1.41428727749255e-21 +0.0 +0.0 +-5.633161304198395e-22 +5.633161304198395e-22 +0.0 +0.0 +1.4216646301405568e-21 +-1.4216646301405568e-21 +0.0 +0.0 +-3.1565192880434018e-21 +3.1565192880434018e-21 +0.0 +0.0 +-5.246601887075684e-21 +5.246601887075684e-21 +0.0 +0.0 +-3.3433526888674564e-21 +3.3433526888674564e-21 +0.0 +0.0 +-9.579905482232137e-21 +9.579905482232137e-21 +0.0 +0.0 +-1.0574878361392714e-21 +1.0574878361392714e-21 +0.0 +0.0 +3.0268252383762094e-21 +-3.0268252383762094e-21 +0.0 +0.0 +7.491610344419254e-21 +-7.491610344419254e-21 +0.0 +0.0 +7.074918353222443e-21 +-7.074918353222443e-21 +0.0 +0.0 +3.278845511111031e-21 +-3.278845511111031e-21 +0.0 +0.0 +3.104153043753728e-21 +-3.104153043753728e-21 +0.0 +0.0 +2.6202695594264397e-21 +-2.6202695594264397e-21 +0.0 +0.0 +-1.3848876565150593e-21 +1.3848876565150593e-21 +0.0 +0.0 +7.864553139570186e-22 +-7.864553139570186e-22 +0.0 +0.0 +-1.459303666496383e-21 +1.459303666496383e-21 +0.0 +0.0 +-1.6258699323187403e-21 +1.6258699323187403e-21 +0.0 +0.0 +-3.3792423329876723e-21 +3.3792423329876723e-21 +0.0 +0.0 +-4.843132853018516e-21 +4.843132853018516e-21 +0.0 +0.0 +-1.8236179495236916e-21 +1.8236179495236916e-21 +0.0 +0.0 +-1.1302271987530636e-21 +1.1302271987530636e-21 +0.0 +0.0 +2.5695041383952152e-21 +-2.5695041383952152e-21 +0.0 +0.0 +8.665397040903715e-21 +-8.665397040903715e-21 +0.0 +0.0 +4.506564707337643e-21 +-4.506564707337643e-21 +0.0 +0.0 +4.883639955490982e-21 +-4.883639955490982e-21 +0.0 +0.0 +7.0924050696579295e-22 +-7.0924050696579295e-22 +0.0 +0.0 +3.65501386956587e-21 +-3.65501386956587e-21 +0.0 +0.0 +2.5011010941019396e-21 +-2.5011010941019396e-21 +0.0 +0.0 +-9.736983058333546e-22 +9.736983058333546e-22 +0.0 +0.0 +-3.0800556818958292e-21 +3.0800556818958292e-21 +0.0 +0.0 +3.3166042931113134e-22 +-3.3166042931113134e-22 +0.0 +0.0 +-4.193308386994414e-21 +4.193308386994414e-21 +0.0 +0.0 +-4.68593968535076e-21 +4.68593968535076e-21 +0.0 +0.0 +-7.248775618750388e-21 +7.248775618750388e-21 +0.0 +0.0 +-1.784336771580779e-21 +1.784336771580779e-21 +0.0 +0.0 +1.7987274403101507e-21 +-1.7987274403101507e-21 +0.0 +0.0 +4.667285324014647e-21 +-4.667285324014647e-21 +0.0 +0.0 +2.716560184336157e-21 +-2.716560184336157e-21 +0.0 +0.0 +2.241598098423429e-21 +-2.241598098423429e-21 +0.0 +0.0 +1.4793003845375218e-21 +-1.4793003845375218e-21 +0.0 +0.0 +2.525141640226639e-21 +-2.525141640226639e-21 +0.0 +0.0 +3.740411188293871e-21 +-3.740411188293871e-21 +0.0 +0.0 +5.4551452229533135e-21 +-5.4551452229533135e-21 +0.0 +0.0 +-1.4859699364897302e-21 +1.4859699364897302e-21 +0.0 +0.0 +1.9490860832784634e-21 +-1.9490860832784634e-21 +0.0 +0.0 +-1.173177976555923e-21 +1.173177976555923e-21 +0.0 +0.0 +-6.1004773951088695e-21 +6.1004773951088695e-21 +0.0 +0.0 +-4.135059569599484e-21 +4.135059569599484e-21 +0.0 +0.0 +-1.6897039760530986e-21 +1.6897039760530986e-21 +0.0 +0.0 +3.504715992843881e-21 +-3.504715992843881e-21 +0.0 +0.0 +1.7047022553634583e-21 +-1.7047022553634583e-21 +0.0 +0.0 +6.291891849147826e-22 +-6.291891849147826e-22 +0.0 +0.0 +3.641486443684105e-21 +-3.641486443684105e-21 +0.0 +0.0 +2.0377835680295504e-21 +-2.0377835680295504e-21 +0.0 +0.0 +1.4656031806789602e-21 +-1.4656031806789602e-21 +0.0 +0.0 +4.168597550578188e-21 +-4.168597550578188e-21 +0.0 +0.0 +1.5601280549362451e-21 +-1.5601280549362451e-21 +0.0 +0.0 +-4.50533304754538e-22 +4.50533304754538e-22 +0.0 +0.0 +-4.308524832742662e-21 +4.308524832742662e-21 +0.0 +0.0 +-4.4585762700341454e-21 +4.4585762700341454e-21 +0.0 +0.0 +-3.527736507129133e-21 +3.527736507129133e-21 +0.0 +0.0 +-4.71253649771241e-21 +4.71253649771241e-21 +0.0 +0.0 +-5.473164840571365e-22 +5.473164840571365e-22 +0.0 +0.0 +5.389807354209012e-21 +-5.389807354209012e-21 +0.0 +0.0 +3.1431300108501344e-21 +-3.1431300108501344e-21 +0.0 +0.0 +4.505555721405247e-21 +-4.505555721405247e-21 +0.0 +0.0 +1.145109021637368e-21 +-1.145109021637368e-21 +0.0 +0.0 +6.379788745928314e-21 +-6.379788745928314e-21 +0.0 +0.0 +5.8621045351236084e-21 +-5.8621045351236084e-21 +0.0 +0.0 +2.6937021573466356e-21 +-2.6937021573466356e-21 +0.0 +0.0 +2.6410770644402777e-21 +-2.6410770644402777e-21 +0.0 +0.0 +1.943753039793502e-21 +-1.943753039793502e-21 +0.0 +0.0 +-2.9559660724909513e-21 +2.9559660724909513e-21 +0.0 +0.0 +-1.9040353179083502e-21 +1.9040353179083502e-21 +0.0 +0.0 +-9.527887049120716e-21 +9.527887049120716e-21 +0.0 +0.0 +-2.9041767367289692e-21 +2.9041767367289692e-21 +0.0 +0.0 +-3.0180324076881257e-21 +3.0180324076881257e-21 +0.0 +0.0 +-4.0780110922532095e-22 +4.0780110922532095e-22 +0.0 +0.0 +1.887370821778985e-21 +-1.887370821778985e-21 +0.0 +0.0 +5.647073507656833e-22 +-5.647073507656833e-22 +0.0 +0.0 +3.6652692504230817e-22 +-3.6652692504230817e-22 +0.0 +0.0 +2.9899965630922306e-21 +-2.9899965630922306e-21 +0.0 +0.0 +4.303587369302889e-21 +-4.303587369302889e-21 +0.0 +0.0 +9.208042660763768e-21 +-9.208042660763768e-21 +0.0 +0.0 +2.4679651390431496e-21 +-2.4679651390431496e-21 +0.0 +0.0 +6.955899296318337e-22 +-6.955899296318337e-22 +0.0 +0.0 +-1.3821490763825216e-21 +1.3821490763825216e-21 +0.0 +0.0 +-5.238425992017013e-21 +5.238425992017013e-21 +0.0 +0.0 +-5.7606918390998984e-21 +5.7606918390998984e-21 +0.0 +0.0 +-2.3159018247111007e-21 +2.3159018247111007e-21 +0.0 +0.0 +-2.93463420284928e-22 +2.93463420284928e-22 +0.0 +0.0 +2.1475436362617396e-21 +-2.1475436362617396e-21 +0.0 +0.0 +1.4557928901122232e-21 +-1.4557928901122232e-21 +0.0 +0.0 +3.577922453967696e-21 +-3.577922453967696e-21 +0.0 +0.0 +1.1976936741328031e-21 +-1.1976936741328031e-21 +0.0 +0.0 +2.669478854170276e-21 +-2.669478854170276e-21 +0.0 +0.0 +5.42954474611454e-21 +-5.42954474611454e-21 +0.0 +0.0 +7.415832120353463e-21 +-7.415832120353463e-21 +0.0 +0.0 +2.5163226124972762e-21 +-2.5163226124972762e-21 +0.0 +0.0 +-1.8120044218010647e-21 +1.8120044218010647e-21 +0.0 +0.0 +-3.395103506485224e-21 +3.395103506485224e-21 +0.0 +0.0 +-3.5566144472487595e-21 +3.5566144472487595e-21 +0.0 +0.0 +-6.754371789430368e-21 +6.754371789430368e-21 +0.0 +0.0 +-4.700842993959494e-21 +4.700842993959494e-21 +0.0 +0.0 +-9.662650491807716e-23 +9.662650491807716e-23 +0.0 +0.0 +-1.7937687865250366e-22 +1.7937687865250366e-22 +0.0 +0.0 +-4.646604691634902e-22 +4.646604691634902e-22 +0.0 +0.0 +-2.9148072132344693e-21 +2.9148072132344693e-21 +0.0 +0.0 +2.074331693515319e-21 +-2.074331693515319e-21 +0.0 +0.0 +6.434531139743719e-21 +-6.434531139743719e-21 +0.0 +0.0 +8.025120472280615e-21 +-8.025120472280615e-21 +0.0 +0.0 +4.481148031782934e-21 +-4.481148031782934e-21 +0.0 +0.0 +6.7643799664390824e-21 +-6.7643799664390824e-21 +0.0 +0.0 +3.962248718679083e-21 +-3.962248718679083e-21 +0.0 +0.0 +-9.3739223158859e-22 +9.3739223158859e-22 +0.0 +0.0 +-6.737122442999086e-21 +6.737122442999086e-21 +0.0 +0.0 +-1.988602465986691e-21 +1.988602465986691e-21 +0.0 +0.0 +-6.336504682171568e-21 +6.336504682171568e-21 +0.0 +0.0 +-7.406169086784067e-22 +7.406169086784067e-22 +0.0 +0.0 +-1.1102862255137603e-21 +1.1102862255137603e-21 +0.0 +0.0 +-2.275654370424998e-21 +2.275654370424998e-21 +0.0 +0.0 +-1.0093685255551405e-21 +1.0093685255551405e-21 +0.0 +0.0 +3.859998275913946e-23 +-3.859998275913946e-23 +0.0 +0.0 +5.1197977974871274e-21 +-5.1197977974871274e-21 +0.0 +0.0 +1.4796833223169567e-20 +-1.4796833223169567e-20 +0.0 +0.0 +5.015405399423487e-21 +-5.015405399423487e-21 +0.0 +0.0 +6.496371210420893e-21 +-6.496371210420893e-21 +0.0 +0.0 +-3.0830749952799006e-22 +3.0830749952799006e-22 +0.0 +0.0 +-5.04130378504699e-21 +5.04130378504699e-21 +0.0 +0.0 +-5.104272398659468e-21 +5.104272398659468e-21 +0.0 +0.0 +-5.239379741127319e-21 +5.239379741127319e-21 +0.0 +0.0 +-4.82387301981623e-21 +4.82387301981623e-21 +0.0 +0.0 +-1.7300823354487237e-21 +1.7300823354487237e-21 +0.0 +0.0 +-5.859767964996539e-21 +5.859767964996539e-21 +0.0 +0.0 +7.988487625753389e-21 +-7.988487625753389e-21 +0.0 +0.0 +-1.582516220365025e-21 +1.582516220365025e-21 +0.0 +0.0 +4.379107358769745e-21 +-4.379107358769745e-21 +0.0 +0.0 +1.2187383110112925e-20 +-1.2187383110112925e-20 +0.0 +0.0 +1.6648359668504206e-20 +-1.6648359668504206e-20 +0.0 +0.0 +1.2943967411879599e-20 +-1.2943967411879599e-20 +0.0 +0.0 +4.6507789378926155e-21 +-4.6507789378926155e-21 +0.0 +0.0 +-6.519837455013791e-21 +6.519837455013791e-21 +0.0 +0.0 +1.7386596332572976e-21 +-1.7386596332572976e-21 +0.0 +0.0 +-1.0746089752508676e-20 +1.0746089752508676e-20 +0.0 +0.0 +-6.204641057774671e-21 +6.204641057774671e-21 +0.0 +0.0 +-1.996600114310533e-21 +1.996600114310533e-21 +0.0 +0.0 +-7.731941252089477e-21 +7.731941252089477e-21 +0.0 +0.0 +-7.145093893327707e-21 +7.145093893327707e-21 +0.0 +0.0 +-8.345073292452669e-21 +8.345073292452669e-21 +0.0 +0.0 +-6.01059441248161e-22 +6.01059441248161e-22 +0.0 +0.0 +9.398143267805084e-21 +-9.398143267805084e-21 +0.0 +0.0 +1.2038984557591363e-20 +-1.2038984557591363e-20 +0.0 +0.0 +1.5059774901457317e-20 +-1.5059774901457317e-20 +0.0 +0.0 +1.5223910539811854e-20 +-1.5223910539811854e-20 +0.0 +0.0 +1.0133333732463814e-20 +-1.0133333732463814e-20 +0.0 +0.0 +4.8917100562768445e-21 +-4.8917100562768445e-21 +0.0 +0.0 +-2.6041722685605304e-21 +2.6041722685605304e-21 +0.0 +0.0 +2.5724098594286104e-21 +-2.5724098594286104e-21 +0.0 +0.0 +1.95100064891156e-21 +-1.95100064891156e-21 +0.0 +0.0 +3.671210645064505e-21 +-3.671210645064505e-21 +0.0 +0.0 +3.3146276298399483e-21 +-3.3146276298399483e-21 +0.0 +0.0 +-7.888599156532976e-21 +7.888599156532976e-21 +0.0 +0.0 +-4.596163045782324e-21 +4.596163045782324e-21 +0.0 +0.0 +1.4412099610526462e-20 +-1.4412099610526462e-20 +0.0 +0.0 +3.517503877666885e-20 +-3.517503877666885e-20 +0.0 +0.0 +5.476949816732934e-20 +-5.476949816732934e-20 +0.0 +0.0 +3.621151125949292e-20 +-3.621151125949292e-20 +0.0 +0.0 +2.317906428407433e-20 +-2.317906428407433e-20 +0.0 +0.0 +-1.0289341999076219e-20 +1.0289341999076219e-20 +0.0 +0.0 +-4.308437082756841e-20 +4.308437082756841e-20 +0.0 +0.0 +-7.015878337396733e-20 +7.015878337396733e-20 +0.0 +0.0 +-6.425008154686082e-20 +6.425008154686082e-20 +0.0 +0.0 +-3.134978043077342e-20 +3.134978043077342e-20 +0.0 +0.0 +5.319017372553454e-22 +-5.319017372553454e-22 +0.0 +0.0 +3.821890223176806e-20 +-3.821890223176806e-20 +0.0 +0.0 +-1.9405824569142425e-20 +1.9405824569142425e-20 +0.0 +0.0 +1.6832238344688545e-20 +-1.6832238344688545e-20 +0.0 +0.0 +-2.53976187114131e-20 +2.53976187114131e-20 +0.0 +0.0 +-5.253259151823308e-20 +5.253259151823308e-20 +0.0 +0.0 +-7.315188654595254e-20 +7.315188654595254e-20 +0.0 +0.0 +-5.005989873650994e-20 +5.005989873650994e-20 +0.0 +0.0 +-3.1223718453598155e-20 +3.1223718453598155e-20 +0.0 +0.0 +-2.809945767636845e-21 +2.809945767636845e-21 +0.0 +0.0 +-4.723750628931144e-20 +4.723750628931144e-20 +0.0 +0.0 +1.1588351330003074e-20 +-1.1588351330003074e-20 +0.0 +0.0 +5.751034066216314e-21 +-5.751034066216314e-21 +0.0 +0.0 +3.567139676402034e-21 +-3.567139676402034e-21 +0.0 +0.0 +-8.122148065040792e-21 +8.122148065040792e-21 +0.0 +0.0 +-1.965842083646112e-20 +1.965842083646112e-20 +0.0 +0.0 +-2.1330138291053224e-20 +2.1330138291053224e-20 +0.0 +0.0 +-1.452396898898425e-20 +1.452396898898425e-20 +0.0 +0.0 +1.9112318628201318e-21 +-1.9112318628201318e-21 +0.0 +0.0 +2.460478589888058e-20 +-2.460478589888058e-20 +0.0 +0.0 +4.512214957153922e-20 +-4.512214957153922e-20 +0.0 +0.0 +6.982188146198449e-20 +-6.982188146198449e-20 +0.0 +0.0 +6.583726246014525e-20 +-6.583726246014525e-20 +0.0 +0.0 +4.47366272820129e-20 +-4.47366272820129e-20 +0.0 +0.0 +-1.5105016067184609e-21 +1.5105016067184609e-21 +0.0 +0.0 +-3.7554084553435367e-20 +3.7554084553435367e-20 +0.0 +0.0 +-1.7498533451767867e-20 +1.7498533451767867e-20 +0.0 +0.0 +-1.6561655122779466e-22 +1.6561655122779466e-22 +0.0 +0.0 +-3.1840138798709844e-21 +3.1840138798709844e-21 +0.0 +0.0 +4.741387477827215e-20 +-4.741387477827215e-20 +0.0 +0.0 +6.243217745966609e-20 +-6.243217745966609e-20 +0.0 +0.0 +4.835652481585588e-20 +-4.835652481585588e-20 +0.0 +0.0 +2.67415693989346e-20 +-2.67415693989346e-20 +0.0 +0.0 +-1.6681115732595237e-20 +1.6681115732595237e-20 +0.0 +0.0 +1.55688627357159e-20 +-1.55688627357159e-20 +0.0 +0.0 +-1.610257233510958e-20 +1.610257233510958e-20 +0.0 +0.0 +-2.103859205601808e-20 +2.103859205601808e-20 +0.0 +0.0 +-1.2239799285768574e-20 +1.2239799285768574e-20 +0.0 +0.0 +-2.1789072954884042e-21 +2.1789072954884042e-21 +0.0 +0.0 +-1.1842564472950026e-20 +1.1842564472950026e-20 +0.0 +0.0 +-1.411364143654996e-20 +1.411364143654996e-20 +0.0 +0.0 +-9.975903244254878e-21 +9.975903244254878e-21 +0.0 +0.0 +9.129888637290028e-22 +-9.129888637290028e-22 +0.0 +0.0 +7.625171228828856e-21 +-7.625171228828856e-21 +0.0 +0.0 +1.4860538214573866e-20 +-1.4860538214573866e-20 +0.0 +0.0 +8.262347160293998e-21 +-8.262347160293998e-21 +0.0 +0.0 +1.063434861404474e-21 +-1.063434861404474e-21 +0.0 +0.0 +-4.6648931874091354e-21 +4.6648931874091354e-21 +0.0 +0.0 +-2.3983302519997926e-21 +2.3983302519997926e-21 +0.0 +0.0 +-3.1945367067883937e-21 +3.1945367067883937e-21 +0.0 +0.0 +-1.4337031974108005e-21 +1.4337031974108005e-21 +0.0 +0.0 +-8.267955923397489e-21 +8.267955923397489e-21 +0.0 +0.0 +-1.9965237418526476e-21 +1.9965237418526476e-21 +0.0 +0.0 +-4.086108233137853e-21 +4.086108233137853e-21 +0.0 +0.0 +-9.14503271902915e-22 +9.14503271902915e-22 +0.0 +0.0 +1.9035938284795761e-22 +-1.9035938284795761e-22 +0.0 +0.0 +4.668913789876429e-21 +-4.668913789876429e-21 +0.0 +0.0 +9.341024422993066e-21 +-9.341024422993066e-21 +0.0 +0.0 +8.216364024829618e-21 +-8.216364024829618e-21 +0.0 +0.0 +8.901161815558935e-21 +-8.901161815558935e-21 +0.0 +0.0 +1.839356333083438e-21 +-1.839356333083438e-21 +0.0 +0.0 +-5.189281723169257e-21 +5.189281723169257e-21 +0.0 +0.0 +-3.740351822897589e-21 +3.740351822897589e-21 +0.0 +0.0 +-5.626738161013694e-21 +5.626738161013694e-21 +0.0 +0.0 +-2.0046433263305737e-21 +2.0046433263305737e-21 +0.0 +0.0 +-5.3214800658783506e-21 +5.3214800658783506e-21 +0.0 +0.0 +-8.218802722436525e-21 +8.218802722436525e-21 +0.0 +0.0 +-3.786325941430018e-21 +3.786325941430018e-21 +0.0 +0.0 +-1.279160669307e-21 +1.279160669307e-21 +0.0 +0.0 +-4.824720086068088e-21 +4.824720086068088e-21 +0.0 +0.0 +4.448393376295133e-21 +-4.448393376295133e-21 +0.0 +0.0 +7.326519851600047e-21 +-7.326519851600047e-21 +0.0 +0.0 +9.33573964178112e-21 +-9.33573964178112e-21 +0.0 +0.0 +3.528406566428034e-21 +-3.528406566428034e-21 +0.0 +0.0 +-1.5410862170677264e-21 +1.5410862170677264e-21 +0.0 +0.0 +1.191053164934434e-21 +-1.191053164934434e-21 +0.0 +0.0 +9.669553224767512e-23 +-9.669553224767512e-23 +0.0 +0.0 +-1.3193033530329747e-21 +1.3193033530329747e-21 +0.0 +0.0 +-5.41861768667826e-22 +5.41861768667826e-22 +0.0 +0.0 +-4.504636595335112e-21 +4.504636595335112e-21 +0.0 +0.0 +-4.2186387837575204e-21 +4.2186387837575204e-21 +0.0 +0.0 +-4.631456728228659e-21 +4.631456728228659e-21 +0.0 +0.0 +-1.3668709070530153e-21 +1.3668709070530153e-21 +0.0 +0.0 +9.474949047511772e-22 +-9.474949047511772e-22 +0.0 +0.0 +1.1911112829122425e-22 +-1.1911112829122425e-22 +0.0 +0.0 +4.891195422399183e-21 +-4.891195422399183e-21 +0.0 +0.0 +5.981635885782481e-21 +-5.981635885782481e-21 +0.0 +0.0 +2.367387161994056e-21 +-2.367387161994056e-21 +0.0 +0.0 +-1.281039518670851e-21 +1.281039518670851e-21 +0.0 +0.0 +-6.032321524059391e-22 +6.032321524059391e-22 +0.0 +0.0 +-8.380699765931149e-22 +8.380699765931149e-22 +0.0 +0.0 +1.3516846456815223e-21 +-1.3516846456815223e-21 +0.0 +0.0 +-2.935129023942921e-21 +2.935129023942921e-21 +0.0 +0.0 +-3.6150165819256674e-21 +3.6150165819256674e-21 +0.0 +0.0 +-5.334031758739139e-21 +5.334031758739139e-21 +0.0 +0.0 +-3.774805603754632e-21 +3.774805603754632e-21 +0.0 +0.0 +-8.584904215899568e-22 +8.584904215899568e-22 +0.0 +0.0 +1.319162178909454e-21 +-1.319162178909454e-21 +0.0 +0.0 +1.7202173198433686e-21 +-1.7202173198433686e-21 +0.0 +0.0 +2.7743202391586686e-21 +-2.7743202391586686e-21 +0.0 +0.0 +4.345201786852697e-21 +-4.345201786852697e-21 +0.0 +0.0 +3.543731863732885e-21 +-3.543731863732885e-21 +0.0 +0.0 +-1.2521261438452303e-21 +1.2521261438452303e-21 +0.0 +0.0 +2.562784609694632e-22 +-2.562784609694632e-22 +0.0 +0.0 +6.287669995615998e-22 +-6.287669995615998e-22 +0.0 +0.0 +2.3902534483034373e-21 +-2.3902534483034373e-21 +0.0 +0.0 +-1.5351614643592476e-21 +1.5351614643592476e-21 +0.0 +0.0 +-4.1277717111895755e-21 +4.1277717111895755e-21 +0.0 +0.0 +-3.620609486255944e-21 +3.620609486255944e-21 +0.0 +0.0 +-2.5199001668237907e-21 +2.5199001668237907e-21 +0.0 +0.0 +-2.783914165068412e-21 +2.783914165068412e-21 +0.0 +0.0 +-3.8099921645148243e-23 +3.8099921645148243e-23 +0.0 +0.0 +2.1377476166380238e-21 +-2.1377476166380238e-21 +0.0 +0.0 +3.766109900962399e-21 +-3.766109900962399e-21 +0.0 +0.0 +1.6549964910547588e-21 +-1.6549964910547588e-21 +0.0 +0.0 +9.871905011424814e-22 +-9.871905011424814e-22 +0.0 +0.0 +6.0047998349459575e-22 +-6.0047998349459575e-22 +0.0 +0.0 +8.777823689610263e-22 +-8.777823689610263e-22 +0.0 +0.0 +-3.5116741985734405e-22 +3.5116741985734405e-22 +0.0 +0.0 +2.125964703378311e-21 +-2.125964703378311e-21 +0.0 +0.0 +-2.4519137798731097e-21 +2.4519137798731097e-21 +0.0 +0.0 +-2.0559421911802902e-21 +2.0559421911802902e-21 +0.0 +0.0 +-5.354491019183006e-21 +5.354491019183006e-21 +0.0 +0.0 +-2.8283307991351076e-21 +2.8283307991351076e-21 +0.0 +0.0 +-1.3188277307347529e-21 +1.3188277307347529e-21 +0.0 +0.0 +-1.6119711901049441e-21 +1.6119711901049441e-21 +0.0 +0.0 +1.1314410315254831e-21 +-1.1314410315254831e-21 +0.0 +0.0 +7.852167919932265e-22 +-7.852167919932265e-22 +0.0 +0.0 +1.8562303542728788e-21 +-1.8562303542728788e-21 +0.0 +0.0 +9.129306268154958e-22 +-9.129306268154958e-22 +0.0 +0.0 +6.609392994824159e-22 +-6.609392994824159e-22 +0.0 +0.0 +3.4245194189572575e-22 +-3.4245194189572575e-22 +0.0 +0.0 +1.3192805606043932e-21 +-1.3192805606043932e-21 +0.0 +0.0 +-1.0906294544377078e-22 +1.0906294544377078e-22 +0.0 +0.0 +-1.0483442765664584e-21 +1.0483442765664584e-21 +0.0 +0.0 +-4.468284175793802e-21 +4.468284175793802e-21 +0.0 +0.0 +-3.3500673779009014e-21 +3.3500673779009014e-21 +0.0 +0.0 +-1.3816495968307215e-21 +1.3816495968307215e-21 +0.0 +0.0 +5.484106819158237e-22 +-5.484106819158237e-22 +0.0 +0.0 +1.7355939426894972e-21 +-1.7355939426894972e-21 +0.0 +0.0 +8.015847058622013e-22 +-8.015847058622013e-22 +0.0 +0.0 +1.8503286692458344e-21 +-1.8503286692458344e-21 +0.0 +0.0 +3.0788639617414226e-21 +-3.0788639617414226e-21 +0.0 +0.0 +-5.656097602201153e-22 +5.656097602201153e-22 +0.0 +0.0 +1.704262231921732e-21 +-1.704262231921732e-21 +0.0 +0.0 +1.2975586055908568e-21 +-1.2975586055908568e-21 +0.0 +0.0 +2.0664997373022143e-21 +-2.0664997373022143e-21 +0.0 +0.0 +6.648329472877315e-22 +-6.648329472877315e-22 +0.0 +0.0 +-1.940289422565048e-21 +1.940289422565048e-21 +0.0 +0.0 +-2.7060605011820125e-21 +2.7060605011820125e-21 +0.0 +0.0 +-2.3407532894232882e-21 +2.3407532894232882e-21 +0.0 +0.0 +-3.8595502578757384e-21 +3.8595502578757384e-21 +0.0 +0.0 +-2.0281777423634526e-21 +2.0281777423634526e-21 +0.0 +0.0 +4.968662375256909e-22 +-4.968662375256909e-22 +0.0 +0.0 +6.006479177931849e-22 +-6.006479177931849e-22 +0.0 +0.0 +-1.3192174908587992e-22 +1.3192174908587992e-22 +0.0 +0.0 +-1.8332298501428223e-22 +1.8332298501428223e-22 +0.0 +0.0 +1.2479466768044075e-21 +-1.2479466768044075e-21 +0.0 +0.0 +2.1292719952324263e-21 +-2.1292719952324263e-21 +0.0 +0.0 +2.536542711643779e-21 +-2.536542711643779e-21 +0.0 +0.0 +3.3721685628242918e-21 +-3.3721685628242918e-21 +0.0 +0.0 +3.914839992878558e-22 +-3.914839992878558e-22 +0.0 +0.0 +7.248588921736937e-23 +-7.248588921736937e-23 +0.0 +0.0 +-3.554244094796304e-21 +3.554244094796304e-21 +0.0 +0.0 +-1.6483867512145242e-21 +1.6483867512145242e-21 +0.0 +0.0 +-2.486079330219464e-21 +2.486079330219464e-21 +0.0 +0.0 +-5.554319788725624e-22 +5.554319788725624e-22 +0.0 +0.0 +8.853604200000259e-22 +-8.853604200000259e-22 +0.0 +0.0 +1.8404970625557203e-21 +-1.8404970625557203e-21 +0.0 +0.0 +4.653361562588784e-22 +-4.653361562588784e-22 +0.0 +0.0 +5.5551714113543885e-22 +-5.5551714113543885e-22 +0.0 +0.0 +1.7655815067433793e-21 +-1.7655815067433793e-21 +0.0 +0.0 +1.611417377937842e-21 +-1.611417377937842e-21 +0.0 +0.0 +1.1531164084973645e-22 +-1.1531164084973645e-22 +0.0 +0.0 +2.0173356535608993e-21 +-2.0173356535608993e-21 +0.0 +0.0 +1.2264837873894212e-21 +-1.2264837873894212e-21 +0.0 +0.0 +-2.0420448990372754e-21 +2.0420448990372754e-21 +0.0 +0.0 +-3.809528266717322e-21 +3.809528266717322e-21 +0.0 +0.0 +-2.4281748249645675e-21 +2.4281748249645675e-21 +0.0 +0.0 +-2.312317928283481e-21 +2.312317928283481e-21 +0.0 +0.0 +-9.649967410120993e-22 +9.649967410120993e-22 +0.0 +0.0 +-1.6783231534641025e-21 +1.6783231534641025e-21 +0.0 +0.0 +0.0 +0.0 +0.0 diff --git a/test/data/csd_array_multitaper_values_re.txt b/test/data/csd_array_multitaper_values_re.txt new file mode 100644 index 000000000..297fcb5be --- /dev/null +++ b/test/data/csd_array_multitaper_values_re.txt @@ -0,0 +1,2048 @@ +8.674525666835231e-5 +-8.674525666835207e-5 +-8.674525666835207e-5 +8.674525666835183e-5 +9.091090341420867e-5 +-9.091090341420852e-5 +-9.091090341420852e-5 +9.091090341420836e-5 +9.918578015748879e-5 +-9.918578015748854e-5 +-9.918578015748854e-5 +9.918578015748827e-5 +9.941585878170356e-5 +-9.941585878170373e-5 +-9.941585878170373e-5 +9.941585878170391e-5 +7.331558535570706e-5 +-7.331558535570688e-5 +-7.331558535570688e-5 +7.331558535570672e-5 +7.375468367965271e-5 +-7.375468367965287e-5 +-7.375468367965287e-5 +7.375468367965306e-5 +6.795733061322099e-5 +-6.795733061322107e-5 +-6.795733061322107e-5 +6.795733061322115e-5 +0.0004859642699811505 +-0.0004859642699811493 +-0.0004859642699811493 +0.0004859642699811481 +0.06524638089942406 +-0.06524638089942407 +-0.06524638089942407 +0.06524638089942406 +0.06896842740816744 +-0.06896842740816744 +-0.06896842740816744 +0.06896842740816744 +0.06983420354282181 +-0.0698342035428218 +-0.0698342035428218 +0.0698342035428218 +0.06995611056698582 +-0.06995611056698582 +-0.06995611056698582 +0.06995611056698582 +0.06955891697741512 +-0.06955891697741512 +-0.06955891697741512 +0.06955891697741512 +0.06836366380821855 +-0.06836366380821855 +-0.06836366380821855 +0.06836366380821854 +0.06472998251025826 +-0.06472998251025826 +-0.06472998251025826 +0.06472998251025826 +0.032140972480062424 +-0.032140972480062424 +-0.032140972480062424 +0.03214097248006243 +0.0008921756550985135 +-0.0008921756550985143 +-0.0008921756550985143 +0.0008921756550985151 +0.0003967700244500413 +-0.00039677002445004194 +-0.00039677002445004194 +0.0003967700244500427 +0.00022702234816109951 +-0.00022702234816109979 +-0.00022702234816109979 +0.00022702234816109998 +0.000148517929500854 +-0.00014851792950085384 +-0.00014851792950085384 +0.00014851792950085362 +0.00010539323065328679 +-0.00010539323065328622 +-0.00010539323065328622 +0.00010539323065328565 +7.900728379922167e-5 +-7.900728379922091e-5 +-7.900728379922091e-5 +7.900728379922011e-5 +6.162281650952452e-5 +-6.162281650952402e-5 +-6.162281650952402e-5 +6.16228165095235e-5 +4.953146361280199e-5 +-4.953146361280167e-5 +-4.953146361280167e-5 +4.953146361280135e-5 +4.076526284037429e-5 +-4.0765262840374174e-5 +-4.0765262840374174e-5 +4.0765262840374066e-5 +3.419726015077768e-5 +-3.419726015077766e-5 +-3.419726015077766e-5 +3.4197260150777634e-5 +2.914276035948902e-5 +-2.914276035948906e-5 +-2.914276035948906e-5 +2.91427603594891e-5 +2.516555985110911e-5 +-2.5165559851109344e-5 +-2.5165559851109344e-5 +2.516555985110957e-5 +2.1976728370605123e-5 +-2.1976728370605262e-5 +-2.1976728370605262e-5 +2.1976728370605404e-5 +1.9378546320964572e-5 +-1.9378546320964663e-5 +-1.9378546320964663e-5 +1.9378546320964765e-5 +1.7231909821819126e-5 +-1.7231909821819393e-5 +-1.7231909821819393e-5 +1.723190982181966e-5 +1.5436589486624576e-5 +-1.5436589486624765e-5 +-1.5436589486624765e-5 +1.543658948662495e-5 +1.3918848910170998e-5 +-1.3918848910171062e-5 +-1.3918848910171062e-5 +1.3918848910171126e-5 +1.2623440606344915e-5 +-1.2623440606344837e-5 +-1.2623440606344837e-5 +1.2623440606344762e-5 +1.150829301294372e-5 +-1.150829301294357e-5 +-1.150829301294357e-5 +1.1508293012943423e-5 +1.0540900443158367e-5 +-1.0540900443158347e-5 +-1.0540900443158347e-5 +1.0540900443158328e-5 +9.69581863322866e-6 +-9.695818633228577e-6 +-9.695818633228577e-6 +9.695818633228498e-6 +8.952894636306041e-6 +-8.952894636305997e-6 +-8.952894636305997e-6 +8.95289463630595e-6 +8.295994562428813e-6 +-8.295994562428773e-6 +-8.295994562428773e-6 +8.295994562428734e-6 +7.7120751247051e-6 +-7.71207512470507e-6 +-7.71207512470507e-6 +7.712075124705037e-6 +7.190496627851307e-6 +-7.190496627851288e-6 +-7.190496627851288e-6 +7.1904966278512696e-6 +6.7225081249816865e-6 +-6.7225081249816915e-6 +-6.7225081249816915e-6 +6.7225081249816975e-6 +6.300857075363424e-6 +-6.300857075363466e-6 +-6.300857075363466e-6 +6.300857075363507e-6 +5.919490199816078e-6 +-5.919490199816126e-6 +-5.919490199816126e-6 +5.919490199816174e-6 +5.573321937080144e-6 +-5.573321937080167e-6 +-5.573321937080167e-6 +5.573321937080189e-6 +5.258053564158592e-6 +-5.258053564158645e-6 +-5.258053564158645e-6 +5.2580535641587e-6 +4.970030676823444e-6 +-4.970030676823437e-6 +-4.970030676823437e-6 +4.970030676823431e-6 +4.706129992091278e-6 +-4.706129992091241e-6 +-4.706129992091241e-6 +4.706129992091205e-6 +4.463668763883954e-6 +-4.463668763883902e-6 +-4.463668763883902e-6 +4.4636687638838505e-6 +4.240331783632789e-6 +-4.24033178363277e-6 +-4.24033178363277e-6 +4.240331783632752e-6 +4.034112162656222e-6 +-4.0341121626562175e-6 +-4.0341121626562175e-6 +4.034112162656215e-6 +3.843262995153226e-6 +-3.843262995153235e-6 +-3.843262995153235e-6 +3.843262995153243e-6 +3.6662576708243705e-6 +-3.666257670824356e-6 +-3.666257670824356e-6 +3.666257670824343e-6 +3.5017571085549437e-6 +-3.5017571085549454e-6 +-3.5017571085549454e-6 +3.501757108554948e-6 +3.3485825621799183e-6 +-3.3485825621799188e-6 +-3.3485825621799188e-6 +3.348582562179919e-6 +3.2056929385470356e-6 +-3.205692938547067e-6 +-3.205692938547067e-6 +3.2056929385470987e-6 +3.0721657898622498e-6 +-3.0721657898622773e-6 +-3.0721657898622773e-6 +3.0721657898623053e-6 +2.947181313706362e-6 +-2.947181313706399e-6 +-2.947181313706399e-6 +2.9471813137064354e-6 +2.8300088273391757e-6 +-2.8300088273391956e-6 +-2.8300088273391956e-6 +2.8300088273392146e-6 +2.719995287205409e-6 +-2.719995287205419e-6 +-2.719995287205419e-6 +2.7199952872054285e-6 +2.616555506618623e-6 +-2.6165555066186257e-6 +-2.6165555066186257e-6 +2.616555506618628e-6 +2.5191637896005872e-6 +-2.5191637896005665e-6 +-2.5191637896005665e-6 +2.519163789600546e-6 +2.4273467505552534e-6 +-2.427346750555222e-6 +-2.427346750555222e-6 +2.4273467505551916e-6 +2.3406771308583914e-6 +-2.340677130858381e-6 +-2.340677130858381e-6 +2.3406771308583706e-6 +2.258768456694534e-6 +-2.2587684566945173e-6 +-2.2587684566945173e-6 +2.2587684566945e-6 +2.1812704093700593e-6 +-2.1812704093700563e-6 +-2.1812704093700563e-6 +2.1812704093700533e-6 +2.1078648011231513e-6 +-2.1078648011231318e-6 +-2.1078648011231318e-6 +2.1078648011231123e-6 +2.0382620672489288e-6 +-2.0382620672489144e-6 +-2.0382620672489144e-6 +2.0382620672489e-6 +1.9721981998855737e-6 +-1.97219819988558e-6 +-1.97219819988558e-6 +1.972198199885586e-6 +1.909432060783385e-6 +-1.909432060783391e-6 +-1.909432060783391e-6 +1.9094320607833963e-6 +1.8497430202195188e-6 +-1.849743020219533e-6 +-1.849743020219533e-6 +1.8497430202195467e-6 +1.7929288774053714e-6 +-1.7929288774054053e-6 +-1.7929288774054053e-6 +1.792928877405439e-6 +1.7388040244995423e-6 +-1.7388040244995724e-6 +-1.7388040244995724e-6 +1.7388040244996024e-6 +1.6871978220100251e-6 +-1.6871978220100476e-6 +-1.6871978220100476e-6 +1.6871978220100702e-6 +1.6379531580881591e-6 +-1.6379531580881521e-6 +-1.6379531580881521e-6 +1.6379531580881452e-6 +1.5909251681973082e-6 +-1.5909251681973048e-6 +-1.5909251681973048e-6 +1.5909251681973016e-6 +1.545980094971987e-6 +-1.5459800949719893e-6 +-1.5459800949719893e-6 +1.5459800949719912e-6 +1.502994270913632e-6 +-1.5029942709136246e-6 +-1.5029942709136246e-6 +1.5029942709136174e-6 +1.4618532089489456e-6 +-1.4618532089489353e-6 +-1.4618532089489353e-6 +1.4618532089489245e-6 +1.4224507879141068e-6 +-1.4224507879140985e-6 +-1.4224507879140985e-6 +1.4224507879140907e-6 +1.3846885217461867e-6 +-1.384688521746173e-6 +-1.384688521746173e-6 +1.3846885217461592e-6 +1.3484749026463042e-6 +-1.348474902646296e-6 +-1.348474902646296e-6 +1.348474902646287e-6 +1.3137248097300468e-6 +-1.3137248097300381e-6 +-1.3137248097300381e-6 +1.3137248097300292e-6 +1.2803589757736998e-6 +-1.2803589757737112e-6 +-1.2803589757737112e-6 +1.2803589757737227e-6 +1.2483035055836913e-6 +-1.248303505583705e-6 +-1.248303505583705e-6 +1.2483035055837184e-6 +1.2174894403296902e-6 +-1.2174894403296983e-6 +-1.2174894403296983e-6 +1.2174894403297065e-6 +1.1878523628644158e-6 +-1.18785236286443e-6 +-1.18785236286443e-6 +1.1878523628644446e-6 +1.1593320396603339e-6 +-1.1593320396603366e-6 +-1.1593320396603366e-6 +1.159332039660339e-6 +1.131872095507631e-6 +-1.1318720955076226e-6 +-1.1318720955076226e-6 +1.1318720955076137e-6 +1.1054197175748676e-6 +-1.1054197175748614e-6 +-1.1054197175748614e-6 +1.105419717574855e-6 +1.079925385822997e-6 +-1.0799253858229928e-6 +-1.0799253858229928e-6 +1.0799253858229883e-6 +1.055342627110537e-6 +-1.0553426271105342e-6 +-1.0553426271105342e-6 +1.0553426271105313e-6 +1.031627790625053e-6 +-1.0316277906250483e-6 +-1.0316277906250483e-6 +1.0316277906250438e-6 +1.0087398425423504e-6 +-1.0087398425423352e-6 +-1.0087398425423352e-6 +1.0087398425423197e-6 +9.866401780417266e-7 +-9.866401780417207e-7 +-9.866401780417207e-7 +9.86640178041715e-7 +9.652924490136175e-7 +-9.652924490136054e-7 +-9.652924490136054e-7 +9.65292449013593e-7 +9.446624059682356e-7 +-9.446624059682414e-7 +-9.446624059682414e-7 +9.446624059682467e-7 +9.247177528183907e-7 +-9.247177528184042e-7 +-9.247177528184042e-7 +9.247177528184179e-7 +9.05428013342285e-7 +-9.054280133422987e-7 +-9.054280133422987e-7 +9.054280133423126e-7 +8.86764408260731e-7 +-8.867644082607411e-7 +-8.867644082607411e-7 +8.867644082607511e-7 +8.686997419678122e-7 +-8.686997419678202e-7 +-8.686997419678202e-7 +8.686997419678285e-7 +8.512082980544294e-7 +-8.512082980544352e-7 +-8.512082980544352e-7 +8.512082980544408e-7 +8.342657428476689e-7 +-8.342657428476643e-7 +-8.342657428476643e-7 +8.342657428476601e-7 +8.178490362670379e-7 +-8.178490362670289e-7 +-8.178490362670289e-7 +8.178490362670198e-7 +8.019363493659892e-7 +-8.019363493659828e-7 +-8.019363493659828e-7 +8.019363493659761e-7 +7.865069879886764e-7 +-7.865069879886724e-7 +-7.865069879886724e-7 +7.865069879886684e-7 +7.715413220254268e-7 +-7.715413220254222e-7 +-7.715413220254222e-7 +7.715413220254179e-7 +7.570207198007335e-7 +-7.570207198007201e-7 +-7.570207198007201e-7 +7.570207198007067e-7 +7.42927487168655e-7 +-7.42927487168645e-7 +-7.42927487168645e-7 +7.429274871686347e-7 +7.292448109326455e-7 +-7.292448109326415e-7 +-7.292448109326415e-7 +7.292448109326373e-7 +7.159567062391042e-7 +-7.159567062391022e-7 +-7.159567062391022e-7 +7.159567062391003e-7 +7.030479676279493e-7 +-7.030479676279574e-7 +-7.030479676279574e-7 +7.030479676279658e-7 +6.905041234499259e-7 +-6.905041234499366e-7 +-6.905041234499366e-7 +6.905041234499472e-7 +6.783113933878473e-7 +-6.783113933878594e-7 +-6.783113933878594e-7 +6.783113933878717e-7 +6.66456648840123e-7 +-6.664566488401305e-7 +-6.664566488401305e-7 +6.664566488401377e-7 +6.549273759480199e-7 +-6.549273759480202e-7 +-6.549273759480202e-7 +6.549273759480202e-7 +6.43711641064744e-7 +-6.437116410647476e-7 +-6.437116410647476e-7 +6.437116410647511e-7 +6.327980584834372e-7 +-6.327980584834374e-7 +-6.327980584834374e-7 +6.32798058483438e-7 +6.221757602551264e-7 +-6.221757602551262e-7 +-6.221757602551262e-7 +6.22175760255126e-7 +6.118343679430265e-7 +-6.118343679430266e-7 +-6.118343679430266e-7 +6.118343679430267e-7 +6.017639661711516e-7 +-6.017639661711459e-7 +-6.017639661711459e-7 +6.017639661711403e-7 +5.919550778379414e-7 +-5.919550778379333e-7 +-5.919550778379333e-7 +5.919550778379251e-7 +5.823986408747062e-7 +-5.823986408746999e-7 +-5.823986408746999e-7 +5.823986408746933e-7 +5.730859864401476e-7 +-5.730859864401416e-7 +-5.730859864401416e-7 +5.730859864401355e-7 +5.64008818448773e-7 +-5.640088184487781e-7 +-5.640088184487781e-7 +5.640088184487832e-7 +5.55159194341431e-7 +-5.551591943414342e-7 +-5.551591943414342e-7 +5.551591943414372e-7 +5.465295070106924e-7 +-5.465295070106973e-7 +-5.465295070106973e-7 +5.465295070107021e-7 +5.381124678033785e-7 +-5.381124678033871e-7 +-5.381124678033871e-7 +5.381124678033958e-7 +5.299010905259739e-7 +-5.299010905259759e-7 +-5.299010905259759e-7 +5.299010905259782e-7 +5.218886763862828e-7 +-5.218886763862831e-7 +-5.218886763862831e-7 +5.218886763862833e-7 +5.140687998082653e-7 +-5.140687998082642e-7 +-5.140687998082642e-7 +5.140687998082633e-7 +5.064352950627848e-7 +-5.064352950627855e-7 +-5.064352950627855e-7 +5.064352950627861e-7 +4.989822436603707e-7 +-4.98982243660371e-7 +-4.98982243660371e-7 +4.989822436603713e-7 +4.917039624569044e-7 +-4.917039624569017e-7 +-4.917039624569017e-7 +4.917039624568994e-7 +4.845949924257628e-7 +-4.845949924257575e-7 +-4.845949924257575e-7 +4.845949924257521e-7 +4.776500880544304e-7 +-4.776500880544231e-7 +-4.776500880544231e-7 +4.776500880544158e-7 +4.708642073252835e-7 +-4.708642073252742e-7 +-4.708642073252742e-7 +4.708642073252649e-7 +4.6423250224461776e-7 +-4.6423250224461723e-7 +-4.6423250224461723e-7 +4.642325022446168e-7 +4.57750309884984e-7 +-4.577503098849883e-7 +-4.577503098849883e-7 +4.5775030988499277e-7 +4.514131439097307e-7 +-4.514131439097372e-7 +-4.514131439097372e-7 +4.5141314390974373e-7 +4.452166865494813e-7 +-4.452166865494876e-7 +-4.452166865494876e-7 +4.4521668654949394e-7 +4.3915678100398327e-7 +-4.391567810039854e-7 +-4.391567810039854e-7 +4.391567810039875e-7 +4.3322942424246207e-7 +-4.3322942424246895e-7 +-4.3322942424246895e-7 +4.3322942424247583e-7 +4.2743076017981526e-7 +-4.2743076017981775e-7 +-4.2743076017981775e-7 +4.2743076017982024e-7 +4.217570732051945e-7 +-4.2175707320519136e-7 +-4.2175707320519136e-7 +4.2175707320518834e-7 +4.1620478204316127e-7 +-4.162047820431646e-7 +-4.162047820431646e-7 +4.16204782043168e-7 +4.1077043392719376e-7 +-4.107704339271926e-7 +-4.107704339271926e-7 +4.107704339271914e-7 +4.0545069906791766e-7 +-4.054506990679161e-7 +-4.054506990679161e-7 +4.0545069906791464e-7 +4.002423653986193e-7 +-4.002423653986128e-7 +-4.002423653986128e-7 +4.0024236539860623e-7 +3.9514233358270114e-7 +-3.9514233358269315e-7 +-3.9514233358269315e-7 +3.951423335826851e-7 +3.9014761226760524e-7 +-3.9014761226760175e-7 +-3.9014761226760175e-7 +3.901476122675983e-7 +3.8525531357196677e-7 +-3.852553135719639e-7 +-3.852553135719639e-7 +3.85255313571961e-7 +3.804626487921477e-7 +-3.804626487921482e-7 +-3.804626487921482e-7 +3.804626487921487e-7 +3.7576692431686374e-7 +-3.757669243168667e-7 +-3.757669243168667e-7 +3.757669243168696e-7 +3.7116553773753135e-7 +-3.7116553773753527e-7 +-3.7116553773753527e-7 +3.7116553773753924e-7 +3.666559741444558e-7 +-3.666559741444601e-7 +-3.666559741444601e-7 +3.666559741444643e-7 +3.622358025979798e-7 +-3.6223580259798034e-7 +-3.6223580259798034e-7 +3.6223580259798087e-7 +3.579026727657228e-7 +-3.5790267276572715e-7 +-3.5790267276572715e-7 +3.5790267276573144e-7 +3.536543117167005e-7 +-3.5365431171670477e-7 +-3.5365431171670477e-7 +3.536543117167091e-7 +3.4948852086412884e-7 +-3.494885208641345e-7 +-3.494885208641345e-7 +3.4948852086413996e-7 +3.454031730488614e-7 +-3.454031730488639e-7 +-3.454031730488639e-7 +3.4540317304886637e-7 +3.4139620975630046e-7 +-3.4139620975630226e-7 +-3.4139620975630226e-7 +3.413962097563041e-7 +3.374656384595893e-7 +-3.374656384595849e-7 +-3.374656384595849e-7 +3.374656384595805e-7 +3.3360953008283545e-7 +-3.3360953008283217e-7 +-3.3360953008283217e-7 +3.336095300828289e-7 +3.298260165777764e-7 +-3.2982601657777053e-7 +-3.2982601657777053e-7 +3.2982601657776465e-7 +3.2611328860853104e-7 +-3.261132886085325e-7 +-3.261132886085325e-7 +3.2611328860853405e-7 +3.2246959333855876e-7 +-3.2246959333855976e-7 +-3.2246959333855976e-7 +3.2246959333856077e-7 +3.188932323150427e-7 +-3.1889323231504426e-7 +-3.1889323231504426e-7 +3.1889323231504585e-7 +3.153825594453614e-7 +-3.153825594453637e-7 +-3.153825594453637e-7 +3.153825594453661e-7 +3.1193597906163636e-7 +-3.1193597906163816e-7 +-3.1193597906163816e-7 +3.1193597906164e-7 +3.085519440683014e-7 +-3.085519440683011e-7 +-3.085519440683011e-7 +3.085519440683009e-7 +3.052289541693575e-7 +-3.052289541693596e-7 +-3.052289541693596e-7 +3.052289541693616e-7 +3.019655541707732e-7 +-3.019655541707763e-7 +-3.019655541707763e-7 +3.0196555417077933e-7 +2.987603323548309e-7 +-2.987603323548321e-7 +-2.987603323548321e-7 +2.987603323548334e-7 +2.9561191892265717e-7 +-2.956119189226564e-7 +-2.956119189226564e-7 +2.956119189226556e-7 +2.925189845018907e-7 +-2.9251898450188523e-7 +-2.9251898450188523e-7 +2.925189845018797e-7 +2.89480238716176e-7 +-2.894802387161701e-7 +-2.894802387161701e-7 +2.894802387161643e-7 +2.864944288137968e-7 +-2.8649442881378806e-7 +-2.8649442881378806e-7 +2.8649442881377927e-7 +2.8356033835232414e-7 +-2.835603383523189e-7 +-2.835603383523189e-7 +2.8356033835231365e-7 +2.8067678593713304e-7 +-2.806767859371319e-7 +-2.806767859371319e-7 +2.8067678593713076e-7 +2.7784262401070787e-7 +-2.778426240107088e-7 +-2.778426240107088e-7 +2.778426240107097e-7 +2.750567376909742e-7 +-2.7505673769097803e-7 +-2.7505673769097803e-7 +2.750567376909819e-7 +2.7231804365592e-7 +-2.723180436559248e-7 +-2.723180436559248e-7 +2.7231804365592954e-7 +2.6962548907272123e-7 +-2.696254890727262e-7 +-2.696254890727262e-7 +2.6962548907273113e-7 +2.6697805056912725e-7 +-2.669780505691332e-7 +-2.669780505691332e-7 +2.6697805056913916e-7 +2.643747332454188e-7 +-2.6437473324542075e-7 +-2.6437473324542075e-7 +2.643747332454227e-7 +2.6181456972484007e-7 +-2.6181456972484574e-7 +-2.6181456972484574e-7 +2.6181456972485135e-7 +2.592966192411275e-7 +-2.592966192411305e-7 +-2.592966192411305e-7 +2.592966192411335e-7 +2.568199667610772e-7 +-2.568199667610803e-7 +-2.568199667610803e-7 +2.568199667610836e-7 +2.5438372214111895e-7 +-2.5438372214111493e-7 +-2.5438372214111493e-7 +2.54383722141111e-7 +2.519870193158252e-7 +-2.5198701931581926e-7 +-2.5198701931581926e-7 +2.519870193158132e-7 +2.4962901551749e-7 +-2.496290155174884e-7 +-2.496290155174884e-7 +2.496290155174868e-7 +2.473088905250501e-7 +-2.473088905250462e-7 +-2.473088905250462e-7 +2.473088905250423e-7 +2.45025845941336e-7 +-2.450258459413343e-7 +-2.450258459413343e-7 +2.4502584594133263e-7 +2.4277910449721897e-7 +-2.4277910449721764e-7 +-2.4277910449721764e-7 +2.427791044972163e-7 +2.4056790938177975e-7 +-2.405679093817793e-7 +-2.405679093817793e-7 +2.4056790938177895e-7 +2.3839152359701815e-7 +-2.383915235970198e-7 +-2.383915235970198e-7 +2.3839152359702146e-7 +2.3624922933654006e-7 +-2.3624922933653797e-7 +-2.3624922933653797e-7 +2.3624922933653587e-7 +2.3414032738670964e-7 +-2.3414032738671286e-7 +-2.3414032738671286e-7 +2.3414032738671612e-7 +2.3206413654981035e-7 +-2.3206413654981364e-7 +-2.3206413654981364e-7 +2.3206413654981702e-7 +2.3001999308789612e-7 +-2.3001999308789994e-7 +-2.3001999308789994e-7 +2.3001999308790375e-7 +2.280072501867543e-7 +-2.2800725018675792e-7 +-2.2800725018675792e-7 +2.2800725018676155e-7 +2.260252774390145e-7 +-2.2602527743901685e-7 +-2.2602527743901685e-7 +2.2602527743901925e-7 +2.2407346034569622e-7 +-2.2407346034569066e-7 +-2.2407346034569066e-7 +2.2407346034568505e-7 +2.2215119983534264e-7 +-2.221511998353374e-7 +-2.221511998353374e-7 +2.2215119983533216e-7 +2.2025791180022986e-7 +-2.2025791180022433e-7 +-2.2025791180022433e-7 +2.2025791180021871e-7 +2.183930266486289e-7 +-2.1839302664863002e-7 +-2.1839302664863002e-7 +2.1839302664863105e-7 +2.1655598887294295e-7 +-2.1655598887293993e-7 +-2.1655598887293993e-7 +2.1655598887293692e-7 +2.147462566325507e-7 +-2.1474625663255204e-7 +-2.1474625663255204e-7 +2.1474625663255342e-7 +2.1296330135132947e-7 +-2.1296330135133088e-7 +-2.1296330135133088e-7 +2.129633013513323e-7 +2.1120660732873115e-7 +-2.1120660732873205e-7 +-2.1120660732873205e-7 +2.1120660732873295e-7 +2.094756713643798e-7 +-2.0947567136438173e-7 +-2.0947567136438173e-7 +2.094756713643837e-7 +2.077700023952671e-7 +-2.077700023952725e-7 +-2.077700023952725e-7 +2.0777000239527787e-7 +2.060891211453433e-7 +-2.0608912114534747e-7 +-2.0608912114534747e-7 +2.0608912114535165e-7 +2.0443255978680973e-7 +-2.044325597868118e-7 +-2.044325597868118e-7 +2.044325597868138e-7 +2.027998616128204e-7 +-2.027998616128221e-7 +-2.027998616128221e-7 +2.0279986161282383e-7 +2.0119058072108175e-7 +-2.011905807210816e-7 +-2.011905807210816e-7 +2.0119058072108148e-7 +1.9960428170795205e-7 +-1.9960428170794784e-7 +-1.9960428170794784e-7 +1.9960428170794366e-7 +1.9804053937258292e-7 +-1.980405393725757e-7 +-1.980405393725757e-7 +1.9804053937256844e-7 +1.964989384308914e-7 +-1.9649893843088574e-7 +-1.9649893843088574e-7 +1.964989384308801e-7 +1.9497907323878612e-7 +-1.9497907323878612e-7 +-1.9497907323878612e-7 +1.9497907323878612e-7 +1.934805475244516e-7 +-1.9348054752445097e-7 +-1.9348054752445097e-7 +1.9348054752445033e-7 +1.9200297412925457e-7 +-1.920029741292522e-7 +-1.920029741292522e-7 +1.920029741292499e-7 +1.9054597475711188e-7 +-1.9054597475710878e-7 +-1.9054597475710878e-7 +1.905459747571056e-7 +1.891091797317114e-7 +-1.8910917973171234e-7 +-1.8910917973171234e-7 +1.8910917973171332e-7 +1.8769222776172608e-7 +-1.8769222776173036e-7 +-1.8769222776173036e-7 +1.8769222776173457e-7 +1.862947657132456e-7 +-1.8629476571324974e-7 +-1.8629476571324974e-7 +1.8629476571325387e-7 +1.8491644838958939e-7 +-1.8491644838959362e-7 +-1.8491644838959362e-7 +1.8491644838959788e-7 +1.8355693831796335e-7 +-1.8355693831796872e-7 +-1.8355693831796872e-7 +1.8355693831797404e-7 +1.822159055428463e-7 +-1.8221590554285174e-7 +-1.8221590554285174e-7 +1.8221590554285714e-7 +1.8089302742578358e-7 +-1.8089302742578448e-7 +-1.8089302742578448e-7 +1.8089302742578527e-7 +1.795879884514379e-7 +-1.79587988451435e-7 +-1.79587988451435e-7 +1.7958798845143207e-7 +1.7830048003959042e-7 +-1.783004800395866e-7 +-1.783004800395866e-7 +1.783004800395828e-7 +1.77030200363017e-7 +-1.7703020036301222e-7 +-1.7703020036301222e-7 +1.7703020036300746e-7 +1.7577685417080967e-7 +-1.7577685417081108e-7 +-1.7577685417081108e-7 +1.7577685417081243e-7 +1.745401526172528e-7 +-1.745401526172513e-7 +-1.745401526172513e-7 +1.7454015261724974e-7 +1.7331981309569794e-7 +-1.7331981309569773e-7 +-1.7331981309569773e-7 +1.7331981309569752e-7 +1.7211555907770518e-7 +-1.7211555907770153e-7 +-1.7211555907770153e-7 +1.7211555907769795e-7 +1.709271199567744e-7 +-1.7092711995677164e-7 +-1.7092711995677164e-7 +1.7092711995676889e-7 +1.6975423089696838e-7 +-1.697542308969696e-7 +-1.697542308969696e-7 +1.6975423089697085e-7 +1.685966326858818e-7 +-1.6859663268588511e-7 +-1.6859663268588511e-7 +1.685966326858885e-7 +1.6745407159217326e-7 +-1.6745407159217543e-7 +-1.6745407159217543e-7 +1.6745407159217755e-7 +1.6632629922708723e-7 +-1.663262992270894e-7 +-1.663262992270894e-7 +1.663262992270916e-7 +1.6521307241024906e-7 +-1.6521307241025017e-7 +-1.6521307241025017e-7 +1.6521307241025134e-7 +1.6411415303926528e-7 +-1.6411415303926255e-7 +-1.6411415303926255e-7 +1.6411415303925988e-7 +1.63029307963217e-7 +-1.6302930796321278e-7 +-1.6302930796321278e-7 +1.630293079632086e-7 +1.6195830885980454e-7 +-1.6195830885979446e-7 +-1.6195830885979446e-7 +1.6195830885978445e-7 +1.6090093211600176e-7 +-1.6090093211600144e-7 +-1.6090093211600144e-7 +1.6090093211600115e-7 +1.5985695871224222e-7 +-1.5985695871223962e-7 +-1.5985695871223962e-7 +1.5985695871223698e-7 +1.5882617410986334e-7 +-1.58826174109864e-7 +-1.58826174109864e-7 +1.5882617410986464e-7 +1.5780836814178288e-7 +-1.5780836814178343e-7 +-1.5780836814178343e-7 +1.5780836814178394e-7 +1.5680333490633682e-7 +-1.568033349063345e-7 +-1.568033349063345e-7 +1.5680333490633224e-7 +1.558108726640053e-7 +-1.5581087266400435e-7 +-1.5581087266400435e-7 +1.5581087266400345e-7 +1.5483078373724252e-7 +-1.548307837372468e-7 +-1.548307837372468e-7 +1.5483078373725104e-7 +1.5386287441293155e-7 +-1.538628744129376e-7 +-1.538628744129376e-7 +1.5386287441294365e-7 +1.529069548477213e-7 +-1.529069548477281e-7 +-1.529069548477281e-7 +1.529069548477349e-7 +1.5196283897590498e-7 +-1.5196283897590516e-7 +-1.5196283897590516e-7 +1.5196283897590535e-7 +1.5103034441991394e-7 +-1.510303444199177e-7 +-1.510303444199177e-7 +1.5103034441992137e-7 +1.501092924032756e-7 +-1.5010929240327597e-7 +-1.5010929240327597e-7 +1.5010929240327626e-7 +1.491995076659693e-7 +-1.4919950766596433e-7 +-1.4919950766596433e-7 +1.491995076659593e-7 +1.4830081838206978e-7 +-1.4830081838206517e-7 +-1.4830081838206517e-7 +1.483008183820606e-7 +1.4741305607975476e-7 +-1.47413056079752e-7 +-1.47413056079752e-7 +1.474130560797492e-7 +1.4653605556332238e-7 +-1.4653605556331828e-7 +-1.4653605556331828e-7 +1.4653605556331418e-7 +1.456696548374893e-7 +-1.4566965483748704e-7 +-1.4566965483748704e-7 +1.456696548374848e-7 +1.448136950336299e-7 +-1.4481369503362262e-7 +-1.4481369503362262e-7 +1.448136950336154e-7 +1.4396802033802962e-7 +-1.4396802033802758e-7 +-1.4396802033802758e-7 +1.4396802033802555e-7 +1.431324779220955e-7 +-1.431324779220957e-7 +-1.431324779220957e-7 +1.4313247792209597e-7 +1.4230691787438004e-7 +-1.4230691787438403e-7 +-1.4230691787438403e-7 +1.42306917874388e-7 +1.4149119313441464e-7 +-1.4149119313442227e-7 +-1.4149119313442227e-7 +1.4149119313442994e-7 +1.4068515942838674e-7 +-1.406851594283937e-7 +-1.406851594283937e-7 +1.4068515942840066e-7 +1.39888675206341e-7 +-1.3988867520634705e-7 +-1.3988867520634705e-7 +1.39888675206353e-7 +1.391016015812982e-7 +-1.3910160158130104e-7 +-1.3910160158130104e-7 +1.3910160158130384e-7 +1.3832380226961105e-7 +-1.3832380226960882e-7 +-1.3832380226960882e-7 +1.383238022696066e-7 +1.3755514353324682e-7 +-1.3755514353324796e-7 +-1.3755514353324796e-7 +1.3755514353324907e-7 +1.3679549412331936e-7 +-1.3679549412331608e-7 +-1.3679549412331608e-7 +1.3679549412331277e-7 +1.3604472522517003e-7 +-1.3604472522517114e-7 +-1.3604472522517114e-7 +1.3604472522517223e-7 +1.3530271040489743e-7 +-1.3530271040489806e-7 +-1.3530271040489806e-7 +1.353027104048987e-7 +1.345693255571955e-7 +-1.3456932555719376e-7 +-1.3456932555719376e-7 +1.3456932555719204e-7 +1.338444488545479e-7 +-1.338444488545435e-7 +-1.338444488545435e-7 +1.338444488545391e-7 +1.3312796069781037e-7 +-1.3312796069780667e-7 +-1.3312796069780667e-7 +1.331279606978029e-7 +1.324197436678642e-7 +-1.3241974366786326e-7 +-1.3241974366786326e-7 +1.3241974366786228e-7 +1.3171968247869636e-7 +-1.3171968247870125e-7 +-1.3171968247870125e-7 +1.3171968247870615e-7 +1.3102766393151733e-7 +-1.3102766393152083e-7 +-1.3102766393152083e-7 +1.3102766393152432e-7 +1.3034357687009714e-7 +-1.3034357687010087e-7 +-1.3034357687010087e-7 +1.3034357687010455e-7 +1.2966731213723796e-7 +-1.2966731213724172e-7 +-1.2966731213724172e-7 +1.2966731213724548e-7 +1.2899876253228092e-7 +-1.2899876253227737e-7 +-1.2899876253227737e-7 +1.2899876253227385e-7 +1.2833782276969525e-7 +-1.2833782276969138e-7 +-1.2833782276969138e-7 +1.2833782276968755e-7 +1.2768438943873708e-7 +-1.2768438943873533e-7 +-1.2768438943873533e-7 +1.2768438943873363e-7 +1.270383609640099e-7 +-1.2703836096400866e-7 +-1.2703836096400866e-7 +1.2703836096400741e-7 +1.263996375671109e-7 +-1.2639963756710595e-7 +-1.2639963756710595e-7 +1.2639963756710108e-7 +1.2576812122910148e-7 +-1.257681212290997e-7 +-1.257681212290997e-7 +1.2576812122909793e-7 +1.251437156540166e-7 +-1.2514371565401468e-7 +-1.2514371565401468e-7 +1.2514371565401274e-7 +1.245263262331647e-7 +-1.2452632623315887e-7 +-1.2452632623315887e-7 +1.2452632623315305e-7 +1.2391586001032518e-7 +-1.2391586001031769e-7 +-1.2391586001031769e-7 +1.239158600103102e-7 +1.233122256478108e-7 +-1.2331222564781192e-7 +-1.2331222564781192e-7 +1.2331222564781298e-7 +1.22715333393359e-7 +-1.227153333933698e-7 +-1.227153333933698e-7 +1.2271533339338062e-7 +1.2212509504774231e-7 +-1.2212509504775767e-7 +-1.2212509504775767e-7 +1.2212509504777305e-7 +1.2154142393326322e-7 +-1.2154142393326846e-7 +-1.2154142393326846e-7 +1.2154142393327368e-7 +1.2096423486285028e-7 +-1.209642348628596e-7 +-1.209642348628596e-7 +1.2096423486286892e-7 +1.203934441101172e-7 +-1.2039344411012175e-7 +-1.2039344411012175e-7 +1.203934441101263e-7 +1.1982896937988464e-7 +-1.1982896937988935e-7 +-1.1982896937988935e-7 +1.198289693798941e-7 +1.1927072977957371e-7 +-1.192707297795741e-7 +-1.192707297795741e-7 +1.1927072977957448e-7 +1.1871864579119872e-7 +-1.1871864579120211e-7 +-1.1871864579120211e-7 +1.1871864579120551e-7 +1.1817263924401522e-7 +-1.1817263924401318e-7 +-1.1817263924401318e-7 +1.1817263924401114e-7 +1.1763263328784399e-7 +-1.1763263328783311e-7 +-1.1763263328783311e-7 +1.1763263328782222e-7 +1.1709855236701943e-7 +-1.1709855236700619e-7 +-1.1709855236700619e-7 +1.1709855236699294e-7 +1.1657032219486246e-7 +-1.1657032219485e-7 +-1.1657032219485e-7 +1.1657032219483752e-7 +1.1604786972886957e-7 +-1.1604786972885962e-7 +-1.1604786972885962e-7 +1.160478697288497e-7 +1.1553112314638157e-7 +-1.1553112314637644e-7 +-1.1553112314637644e-7 +1.1553112314637133e-7 +1.1502001182080987e-7 +-1.1502001182081089e-7 +-1.1502001182081089e-7 +1.1502001182081188e-7 +1.1451446629853945e-7 +-1.1451446629855195e-7 +-1.1451446629855195e-7 +1.1451446629856447e-7 +1.140144182761181e-7 +-1.1401441827613004e-7 +-1.1401441827613004e-7 +1.1401441827614198e-7 +1.135198005782757e-7 +-1.1351980057828287e-7 +-1.1351980057828287e-7 +1.1351980057829004e-7 +1.1303054713612068e-7 +-1.1303054713612084e-7 +-1.1303054713612084e-7 +1.1303054713612099e-7 +1.1254659296609718e-7 +-1.1254659296610119e-7 +-1.1254659296610119e-7 +1.125465929661052e-7 +1.1206787414923524e-7 +-1.1206787414923637e-7 +-1.1206787414923637e-7 +1.1206787414923747e-7 +1.1159432781100508e-7 +-1.1159432781102012e-7 +-1.1159432781102012e-7 +1.1159432781103515e-7 +1.1112589210153439e-7 +-1.1112589210153715e-7 +-1.1112589210153715e-7 +1.1112589210153992e-7 +1.1066250617624675e-7 +-1.1066250617623547e-7 +-1.1066250617623547e-7 +1.1066250617622421e-7 +1.1020411017705495e-7 +-1.1020411017703051e-7 +-1.1020411017703051e-7 +1.1020411017700608e-7 +1.0975064521389416e-7 +-1.0975064521387981e-7 +-1.0975064521387981e-7 +1.0975064521386543e-7 +1.0930205334654561e-7 +-1.0930205334656032e-7 +-1.0930205334656032e-7 +1.0930205334657506e-7 +1.0885827756715716e-7 +-1.0885827756720512e-7 +-1.0885827756720512e-7 +1.0885827756725314e-7 +1.0841926178290541e-7 +-1.0841926178296248e-7 +-1.0841926178296248e-7 +1.0841926178301958e-7 +1.0798495079905905e-7 +-1.079849507991297e-7 +-1.079849507991297e-7 +1.0798495079920036e-7 +1.0755529030258127e-7 +-1.0755529030264326e-7 +-1.0755529030264326e-7 +1.0755529030270524e-7 +1.0713022684585099e-7 +-1.0713022684587875e-7 +-1.0713022684587875e-7 +1.0713022684590656e-7 +1.0670970783090438e-7 +-1.0670970783089953e-7 +-1.0670970783089953e-7 +1.0670970783089463e-7 +1.0629368149398679e-7 +-1.0629368149394343e-7 +-1.0629368149394343e-7 +1.0629368149390009e-7 +1.058820968903933e-7 +-1.0588209689035766e-7 +-1.0588209689035766e-7 +1.0588209689032203e-7 +1.0547490387973283e-7 +-1.0547490387973877e-7 +-1.0547490387973877e-7 +1.0547490387974473e-7 +1.050720531114935e-7 +-1.050720531115195e-7 +-1.050720531115195e-7 +1.050720531115455e-7 +1.046734960107689e-7 +-1.0467349601078425e-7 +-1.0467349601078425e-7 +1.0467349601079959e-7 +1.04279184764344e-7 +-1.0427918476439673e-7 +-1.0427918476439673e-7 +1.0427918476444947e-7 +1.0388907230739545e-7 +-1.0388907230742393e-7 +-1.0388907230742393e-7 +1.0388907230745237e-7 +1.0350311230992973e-7 +-1.0350311230993286e-7 +-1.0350311230993286e-7 +1.0350311230993599e-7 +1.0312125916382536e-7 +-1.0312125916379995e-7 +-1.0312125916379995e-7 +1.0312125916377454e-7 +1.0274346797020671e-7 +-1.0274346797015793e-7 +-1.0274346797015793e-7 +1.0274346797010919e-7 +1.023696945270059e-7 +-1.0236969452699522e-7 +-1.0236969452699522e-7 +1.0236969452698455e-7 +1.0199989531684291e-7 +-1.0199989531679633e-7 +-1.0199989531679633e-7 +1.0199989531674977e-7 +1.0163402749472205e-7 +-1.0163402749468093e-7 +-1.0163402749468093e-7 +1.0163402749463982e-7 +1.0127204887680942e-7 +-1.0127204887678612e-7 +-1.0127204887678612e-7 +1.0127204887676278e-7 +1.0091391792865316e-7 +-1.0091391792864684e-7 +-1.0091391792864684e-7 +1.0091391792864046e-7 +1.0055959375430858e-7 +-1.0055959375429565e-7 +-1.0055959375429565e-7 +1.0055959375428275e-7 +1.0020903608496104e-7 +-1.002090360849422e-7 +-1.002090360849422e-7 +1.0020903608492338e-7 +9.986220526851165e-8 +-9.986220526848385e-8 +-9.986220526848385e-8 +9.986220526845602e-8 +9.951906225896294e-8 +-9.951906225892039e-8 +-9.951906225892039e-8 +9.951906225887783e-8 +9.917956860609488e-8 +-9.917956860604515e-8 +-9.917956860604515e-8 +9.917956860599543e-8 +9.884368644532721e-8 +-9.884368644526887e-8 +-9.884368644526887e-8 +9.884368644521052e-8 +9.85113784879374e-8 +-9.851137848788538e-8 +-9.851137848788538e-8 +9.851137848783334e-8 +9.818260801130229e-8 +-9.818260801127734e-8 +-9.818260801127734e-8 +9.818260801125242e-8 +9.785733884951123e-8 +-9.785733884952711e-8 +-9.785733884952711e-8 +9.785733884954298e-8 +9.75355353840552e-8 +-9.753553538410442e-8 +-9.753553538410442e-8 +9.753553538415365e-8 +9.721716253460501e-8 +-9.721716253465035e-8 +-9.721716253465035e-8 +9.721716253469574e-8 +9.690218575025071e-8 +-9.690218575026977e-8 +-9.690218575026977e-8 +9.690218575028885e-8 +9.659057100066226e-8 +-9.659057100062446e-8 +-9.659057100062446e-8 +9.659057100058666e-8 +9.628228476742921e-8 +-9.62822847674291e-8 +-9.62822847674291e-8 +9.6282284767429e-8 +9.59772940361086e-8 +-9.597729403606213e-8 +-9.597729403606213e-8 +9.597729403601572e-8 +9.567556628737413e-8 +-9.567556628734488e-8 +-9.567556628734488e-8 +9.567556628731564e-8 +9.537706948950078e-8 +-9.537706948949262e-8 +-9.537706948949262e-8 +9.537706948948445e-8 +9.5081772090249e-8 +-9.508177209028808e-8 +-9.508177209028808e-8 +9.508177209032722e-8 +9.478964300914992e-8 +-9.478964300919939e-8 +-9.478964300919939e-8 +9.478964300924888e-8 +9.450065162988533e-8 +-9.450065162992608e-8 +-9.450065162992608e-8 +9.450065162996686e-8 +9.421476779291359e-8 +-9.421476779292175e-8 +-9.421476779292175e-8 +9.421476779292988e-8 +9.393196178806377e-8 +-9.393196178810655e-8 +-9.393196178810655e-8 +9.393196178814934e-8 +9.365220434774429e-8 +-9.36522043477438e-8 +-9.36522043477438e-8 +9.36522043477433e-8 +9.337546663943441e-8 +-9.337546663943961e-8 +-9.337546663943961e-8 +9.337546663944484e-8 +9.310172025926421e-8 +-9.310172025926538e-8 +-9.310172025926538e-8 +9.310172025926654e-8 +9.283093722503449e-8 +-9.283093722504051e-8 +-9.283093722504051e-8 +9.283093722504653e-8 +9.25630899697581e-8 +-9.256308996975788e-8 +-9.256308996975788e-8 +9.256308996975768e-8 +9.229815133511052e-8 +-9.229815133510147e-8 +-9.229815133510147e-8 +9.229815133509242e-8 +9.203609456513546e-8 +-9.203609456512817e-8 +-9.203609456512817e-8 +9.203609456512082e-8 +9.177689330003368e-8 +-9.177689330003013e-8 +-9.177689330003013e-8 +9.177689330002658e-8 +9.152052157005214e-8 +-9.152052157004736e-8 +-9.152052157004736e-8 +9.152052157004256e-8 +9.126695378948333e-8 +-9.126695378949455e-8 +-9.126695378949455e-8 +9.126695378950579e-8 +9.101616475089322e-8 +-9.101616475090217e-8 +-9.101616475090217e-8 +9.101616475091113e-8 +9.076812961928585e-8 +-9.076812961929259e-8 +-9.076812961929259e-8 +9.076812961929939e-8 +9.052282392651311e-8 +-9.052282392651618e-8 +-9.052282392651618e-8 +9.052282392651922e-8 +9.028022356574706e-8 +-9.028022356574422e-8 +-9.028022356574422e-8 +9.028022356574139e-8 +9.004030478603944e-8 +-9.004030478604057e-8 +-9.004030478604057e-8 +9.00403047860417e-8 +8.980304418703861e-8 +-8.980304418703873e-8 +-8.980304418703873e-8 +8.980304418703885e-8 +8.956841871376713e-8 +-8.956841871376561e-8 +-8.956841871376561e-8 +8.956841871376406e-8 +8.933640565148889e-8 +-8.933640565149047e-8 +-8.933640565149047e-8 +8.933640565149203e-8 +8.910698262073079e-8 +-8.91069826207274e-8 +-8.91069826207274e-8 +8.910698262072404e-8 +8.88801275723054e-8 +-8.888012757229941e-8 +-8.888012757229941e-8 +8.88801275722934e-8 +8.865581878259617e-8 +-8.865581878259138e-8 +-8.865581878259138e-8 +8.86558187825866e-8 +8.843403484869001e-8 +-8.843403484869074e-8 +-8.843403484869074e-8 +8.843403484869144e-8 +8.821475468384373e-8 +-8.821475468384787e-8 +-8.821475468384787e-8 +8.821475468385202e-8 +8.799795751286313e-8 +-8.799795751287142e-8 +-8.799795751287142e-8 +8.799795751287966e-8 +8.77836228676781e-8 +-8.778362286768674e-8 +-8.778362286768674e-8 +8.778362286769536e-8 +8.757173058292897e-8 +-8.757173058293683e-8 +-8.757173058293683e-8 +8.757173058294471e-8 +8.736226079169203e-8 +-8.736226079169633e-8 +-8.736226079169633e-8 +8.736226079170061e-8 +8.715519392123347e-8 +-8.715519392123633e-8 +-8.715519392123633e-8 +8.715519392123919e-8 +8.695051068891944e-8 +-8.695051068892295e-8 +-8.695051068892295e-8 +8.695051068892647e-8 +8.674819209809639e-8 +-8.674819209809691e-8 +-8.674819209809691e-8 +8.674819209809741e-8 +8.654821943415526e-8 +-8.654821943415487e-8 +-8.654821943415487e-8 +8.654821943415448e-8 +8.635057426060031e-8 +-8.635057426059574e-8 +-8.635057426059574e-8 +8.635057426059119e-8 +8.615523841522674e-8 +-8.61552384152262e-8 +-8.61552384152262e-8 +8.615523841522564e-8 +8.596219400636692e-8 +-8.59621940063611e-8 +-8.59621940063611e-8 +8.596219400635526e-8 +8.57714234091728e-8 +-8.577142340916521e-8 +-8.577142340916521e-8 +8.57714234091576e-8 +8.55829092620026e-8 +-8.558290926199773e-8 +-8.558290926199773e-8 +8.558290926199284e-8 +8.539663446290553e-8 +-8.539663446290815e-8 +-8.539663446290815e-8 +8.539663446291076e-8 +8.52125821660796e-8 +-8.521258216608359e-8 +-8.521258216608359e-8 +8.521258216608761e-8 +8.503073577850481e-8 +-8.503073577850835e-8 +-8.503073577850835e-8 +8.503073577851188e-8 +8.485107895652768e-8 +-8.485107895652767e-8 +-8.485107895652767e-8 +8.485107895652764e-8 +8.467359560262121e-8 +-8.467359560262562e-8 +-8.467359560262562e-8 +8.467359560263002e-8 +8.449826986214189e-8 +-8.449826986214312e-8 +-8.449826986214312e-8 +8.449826986214435e-8 +8.432508612013915e-8 +-8.43250861201421e-8 +-8.43250861201421e-8 +8.432508612014505e-8 +8.415402899825784e-8 +-8.415402899825923e-8 +-8.415402899825923e-8 +8.41540289982606e-8 +8.39850833516869e-8 +-8.398508335168924e-8 +-8.398508335168924e-8 +8.398508335169152e-8 +8.381823426617242e-8 +-8.381823426617071e-8 +-8.381823426617071e-8 +8.381823426616899e-8 +8.365346705507228e-8 +-8.365346705507052e-8 +-8.365346705507052e-8 +8.365346705506875e-8 +8.349076725645865e-8 +-8.349076725645633e-8 +-8.349076725645633e-8 +8.3490767256454e-8 +8.3330120630324e-8 +-8.333012063032236e-8 +-8.333012063032236e-8 +8.33301206303207e-8 +8.317151315577128e-8 +-8.317151315576786e-8 +-8.317151315576786e-8 +8.317151315576444e-8 +8.301493102831158e-8 +-8.301493102831568e-8 +-8.301493102831568e-8 +8.301493102831979e-8 +8.286036065720098e-8 +-8.286036065720464e-8 +-8.286036065720464e-8 +8.286036065720828e-8 +8.270778866277722e-8 +-8.27077886627808e-8 +-8.27077886627808e-8 +8.270778866278438e-8 +8.255720187394226e-8 +-8.255720187394278e-8 +-8.255720187394278e-8 +8.255720187394328e-8 +8.240858732562106e-8 +-8.240858732562074e-8 +-8.240858732562074e-8 +8.240858732562043e-8 +8.226193225624707e-8 +-8.226193225624955e-8 +-8.226193225624955e-8 +8.226193225625205e-8 +8.211722410540642e-8 +-8.211722410540957e-8 +-8.211722410540957e-8 +8.211722410541269e-8 +8.197445051140143e-8 +-8.197445051140278e-8 +-8.197445051140278e-8 +8.197445051140416e-8 +8.183359930893613e-8 +-8.18335993089361e-8 +-8.18335993089361e-8 +8.183359930893604e-8 +8.169465852682462e-8 +-8.169465852682157e-8 +-8.169465852682157e-8 +8.169465852681854e-8 +8.155761638573034e-8 +-8.155761638572725e-8 +-8.155761638572725e-8 +8.155761638572418e-8 +8.142246129598369e-8 +-8.142246129597967e-8 +-8.142246129597967e-8 +8.142246129597564e-8 +8.128918185540988e-8 +-8.128918185540895e-8 +-8.128918185540895e-8 +8.128918185540801e-8 +8.115776684719861e-8 +-8.115776684719734e-8 +-8.115776684719734e-8 +8.115776684719608e-8 +8.10282052378401e-8 +-8.102820523784005e-8 +-8.102820523784005e-8 +8.102820523784e-8 +8.090048617506617e-8 +-8.090048617506954e-8 +-8.090048617506954e-8 +8.090048617507289e-8 +8.077459898589326e-8 +-8.077459898589686e-8 +-8.077459898589686e-8 +8.077459898590042e-8 +8.065053317459498e-8 +-8.065053317459617e-8 +-8.065053317459617e-8 +8.065053317459736e-8 +8.052827842084925e-8 +-8.052827842085173e-8 +-8.052827842085173e-8 +8.052827842085422e-8 +8.040782457780151e-8 +-8.04078245778052e-8 +-8.04078245778052e-8 +8.040782457780891e-8 +8.028916167023724e-8 +-8.028916167024279e-8 +-8.028916167024279e-8 +8.028916167024836e-8 +8.017227989278041e-8 +-8.01722798927847e-8 +-8.01722798927847e-8 +8.017227989278898e-8 +8.005716960810797e-8 +-8.005716960810669e-8 +-8.005716960810669e-8 +8.005716960810542e-8 +7.994382134519399e-8 +-7.994382134519196e-8 +-7.994382134519196e-8 +7.994382134518996e-8 +7.983222579763931e-8 +-7.983222579763633e-8 +-7.983222579763633e-8 +7.983222579763336e-8 +7.972237382197134e-8 +-7.972237382196771e-8 +-7.972237382196771e-8 +7.97223738219641e-8 +7.961425643602162e-8 +-7.961425643601868e-8 +-7.961425643601868e-8 +7.961425643601577e-8 +7.950786481732615e-8 +-7.950786481732424e-8 +-7.950786481732424e-8 +7.950786481732231e-8 +7.940319030152704e-8 +-7.940319030152754e-8 +-7.940319030152754e-8 +7.940319030152803e-8 +7.93002243808678e-8 +-7.930022438086848e-8 +-7.930022438086848e-8 +7.930022438086911e-8 +7.91989587026622e-8 +-7.919895870266219e-8 +-7.919895870266219e-8 +7.919895870266216e-8 +7.909938506782254e-8 +-7.909938506782425e-8 +-7.909938506782425e-8 +7.909938506782596e-8 +7.900149542943237e-8 +-7.900149542943214e-8 +-7.900149542943214e-8 +7.90014954294319e-8 +7.890528189129613e-8 +-7.890528189129858e-8 +-7.890528189129858e-8 +7.8905281891301e-8 +7.881073670659351e-8 +-7.8810736706596e-8 +-7.8810736706596e-8 +7.881073670659851e-8 +7.871785227647899e-8 +-7.871785227648222e-8 +-7.871785227648222e-8 +7.871785227648546e-8 +7.862662114880513e-8 +-7.862662114880518e-8 +-7.862662114880518e-8 +7.862662114880521e-8 +7.853703601678708e-8 +-7.85370360167857e-8 +-7.85370360167857e-8 +7.853703601678436e-8 +7.844908971774367e-8 +-7.844908971774207e-8 +-7.844908971774207e-8 +7.844908971774046e-8 +7.836277523186164e-8 +-7.836277523186098e-8 +-7.836277523186098e-8 +7.836277523186033e-8 +7.827808568097289e-8 +-7.827808568097096e-8 +-7.827808568097096e-8 +7.827808568096899e-8 +7.819501432736765e-8 +-7.819501432736851e-8 +-7.819501432736851e-8 +7.819501432736934e-8 +7.811355457264976e-8 +-7.811355457265075e-8 +-7.811355457265075e-8 +7.81135545726517e-8 +7.803369995656997e-8 +-7.803369995657259e-8 +-7.803369995657259e-8 +7.803369995657523e-8 +7.79554441559495e-8 +-7.795544415594985e-8 +-7.795544415594985e-8 +7.79554441559502e-8 +7.787878098357446e-8 +-7.787878098357578e-8 +-7.787878098357578e-8 +7.787878098357713e-8 +7.780370438716562e-8 +-7.780370438716793e-8 +-7.780370438716793e-8 +7.780370438717022e-8 +7.773020844831041e-8 +-7.77302084483137e-8 +-7.77302084483137e-8 +7.773020844831706e-8 +7.765828738148963e-8 +-7.765828738149305e-8 +-7.765828738149305e-8 +7.765828738149648e-8 +7.758793553306736e-8 +-7.758793553306995e-8 +-7.758793553306995e-8 +7.758793553307254e-8 +7.75191473803582e-8 +-7.75191473803563e-8 +-7.75191473803563e-8 +7.751914738035443e-8 +7.745191753066191e-8 +-7.745191753065937e-8 +-7.745191753065937e-8 +7.745191753065681e-8 +7.738624072039284e-8 +-7.738624072038847e-8 +-7.738624072038847e-8 +7.738624072038412e-8 +7.732211181414312e-8 +-7.732211181414192e-8 +-7.732211181414192e-8 +7.732211181414069e-8 +7.725952580386593e-8 +-7.725952580386332e-8 +-7.725952580386332e-8 +7.72595258038607e-8 +7.719847780800255e-8 +-7.719847780800074e-8 +-7.719847780800074e-8 +7.719847780799894e-8 +7.713896307067133e-8 +-7.713896307067108e-8 +-7.713896307067108e-8 +7.713896307067087e-8 +7.70809769608813e-8 +-7.708097696088405e-8 +-7.708097696088405e-8 +7.708097696088685e-8 +7.702451497174644e-8 +-7.702451497174664e-8 +-7.702451497174664e-8 +7.702451497174685e-8 +7.696957271972295e-8 +-7.69695727197242e-8 +-7.69695727197242e-8 +7.696957271972543e-8 +7.691614594391399e-8 +-7.691614594391537e-8 +-7.691614594391537e-8 +7.691614594391677e-8 +7.68642305053122e-8 +-7.68642305053178e-8 +-7.68642305053178e-8 +7.68642305053234e-8 +7.68138223861567e-8 +-7.681382238616062e-8 +-7.681382238616062e-8 +7.681382238616454e-8 +7.676491768922936e-8 +-7.676491768923245e-8 +-7.676491768923245e-8 +7.676491768923552e-8 +7.671751263724084e-8 +-7.671751263724208e-8 +-7.671751263724208e-8 +7.671751263724332e-8 +7.667160357217207e-8 +-7.667160357217026e-8 +-7.667160357217026e-8 +7.667160357216844e-8 +7.662718695470333e-8 +-7.662718695470119e-8 +-7.662718695470119e-8 +7.662718695469903e-8 +7.658425936359661e-8 +-7.658425936359492e-8 +-7.658425936359492e-8 +7.658425936359325e-8 +7.654281749515688e-8 +-7.65428174951558e-8 +-7.65428174951558e-8 +7.654281749515475e-8 +7.650285816267564e-8 +-7.650285816267578e-8 +-7.650285816267578e-8 +7.650285816267593e-8 +7.646437829591716e-8 +-7.646437829591566e-8 +-7.646437829591566e-8 +7.646437829591413e-8 +7.642737494058477e-8 +-7.642737494058548e-8 +-7.642737494058548e-8 +7.64273749405862e-8 +7.639184525787508e-8 +-7.639184525787649e-8 +-7.639184525787649e-8 +7.63918452578779e-8 +7.635778652398764e-8 +-7.635778652398778e-8 +-7.635778652398778e-8 +7.635778652398797e-8 +7.632519612968073e-8 +-7.63251961296825e-8 +-7.63251961296825e-8 +7.632519612968426e-8 +7.629407157985071e-8 +-7.62940715798539e-8 +-7.62940715798539e-8 +7.62940715798571e-8 +7.626441049311481e-8 +-7.626441049311751e-8 +-7.626441049311751e-8 +7.626441049312023e-8 +7.623621060142782e-8 +-7.623621060142949e-8 +-7.623621060142949e-8 +7.623621060143114e-8 +7.620946974972362e-8 +-7.620946974972264e-8 +-7.620946974972264e-8 +7.620946974972168e-8 +7.61841858955297e-8 +-7.618418589552819e-8 +-7.618418589552819e-8 +7.61841858955267e-8 +7.616035710867136e-8 +-7.616035710867114e-8 +-7.616035710867114e-8 +7.616035710867093e-8 +7.61379815709252e-8 +-7.613798157092338e-8 +-7.613798157092338e-8 +7.613798157092157e-8 +7.611705757575653e-8 +-7.61170575757579e-8 +-7.61170575757579e-8 +7.611705757575925e-8 +7.609758352801298e-8 +-7.60975835280124e-8 +-7.60975835280124e-8 +7.609758352801181e-8 +7.607955794367915e-8 +-7.607955794367865e-8 +-7.607955794367865e-8 +7.607955794367813e-8 +7.606297944961897e-8 +-7.606297944961748e-8 +-7.606297944961748e-8 +7.606297944961598e-8 +7.604784678338457e-8 +-7.604784678338601e-8 +-7.604784678338601e-8 +7.604784678338744e-8 +7.603415879298317e-8 +-7.603415879298909e-8 +-7.603415879298909e-8 +7.603415879299503e-8 +7.602191443669722e-8 +-7.60219144366995e-8 +-7.60219144366995e-8 +7.602191443670178e-8 +7.60111127829102e-8 +-7.601111278291251e-8 +-7.601111278291251e-8 +7.601111278291482e-8 +7.600175300997683e-8 +-7.600175300998109e-8 +-7.600175300998109e-8 +7.600175300998537e-8 +7.599383440606727e-8 +-7.599383440606809e-8 +-7.599383440606809e-8 +7.599383440606888e-8 +7.598735636905096e-8 +-7.598735636905122e-8 +-7.598735636905122e-8 +7.598735636905149e-8 +7.598231840641807e-8 +-7.598231840641624e-8 +-7.598231840641624e-8 +7.59823184064144e-8 +7.597872013518992e-8 +-7.597872013518946e-8 +-7.597872013518946e-8 +7.597872013518902e-8 +7.597656128184475e-8 +-7.597656128184352e-8 +-7.597656128184352e-8 +7.597656128184226e-8 +3.7987920841149235e-8 +-3.7987920841148494e-8 +-3.7987920841148494e-8 +3.798792084114774e-8 diff --git a/test/data/noise.txt b/test/data/noise.txt new file mode 100644 index 000000000..40ee59d24 --- /dev/null +++ b/test/data/noise.txt @@ -0,0 +1,1024 @@ +0.8221964525968986 +0.7982766940268844 +-0.211002697335672 +-0.43697493121003017 +0.24218255608468464 +0.5540536653112489 +-0.9174034800140198 +-0.2575296374216771 +-0.6908652731003788 +0.5454796440818206 +0.6596285939212674 +-0.6289299111134916 +-0.8112173917338072 +-0.12895412100097792 +-0.15144192217226982 +0.5955960033889656 +0.7353532600075998 +-0.3984613417745959 +0.9576046904708768 +-0.657049148517693 +-0.8322719405740928 +0.1951816288929713 +-0.9975417740082531 +0.769129613803091 +-0.25150941477883215 +0.6806295307322743 +0.7349907950522709 +0.41055661218405515 +-0.5425141058567586 +0.14905403238325787 +-0.1960534077259246 +0.486203401918472 +-0.08514275339337374 +-0.17772108140170273 +0.4515224557286075 +-0.28339782076274744 +0.7493665235794222 +0.18636106831927846 +-0.897758086838937 +-0.8308418415046792 +0.35252387142928754 +-0.9914272380707012 +0.007279856074223101 +0.04547262795813456 +0.34929180335208043 +0.2380546316575627 +-0.055898767438518515 +-0.2479591967878747 +-0.7505429978321456 +0.48727000891577177 +0.46597768311499665 +0.985229080213037 +0.53487192296486 +-0.9919354420815871 +-0.7382931587780188 +0.9920651243637759 +0.7699029231052927 +0.5645152573347216 +0.382223568066407 +0.6863850618240184 +0.02873022721835561 +-0.954855776984401 +-0.40735927479240974 +-0.49155925875031814 +0.3641242881912863 +0.034599193649899274 +0.1721736491218584 +-0.15750247729467226 +-0.14191522539771784 +0.38902008298242263 +-0.7376949915649003 +0.9702387126295009 +-0.2683985211383022 +0.09870110548008526 +-0.6515699764632794 +-0.9334619735279635 +-0.5455248350151165 +-0.22292322494994377 +0.7155209055434151 +-0.6333700232586552 +-0.05588867618837767 +0.7853804721209454 +0.4039116791745463 +0.38954656509931596 +0.6870011635456574 +0.5174623402361762 +-0.1028170555203114 +-0.0032177426839510304 +-0.813771928298876 +-0.37857442818184417 +0.05576573998106493 +-0.7290848993738228 +-0.12836450694727652 +0.4201715876111658 +0.28541368060802785 +-0.10282899648285992 +-0.4564615258322071 +-0.36411021444503966 +-0.6579602192777809 +-0.765878372886625 +0.6752145362248454 +0.9402550147375064 +-0.12177329728473296 +-0.7257078611766281 +0.8793200266099479 +0.34415466962066166 +0.07809692388398837 +-0.45996177791835846 +0.5464964397042564 +0.23737721757009878 +-0.38413804018140363 +-0.850057973408302 +-0.7784159474967449 +-0.34081962896439144 +0.5618535449580646 +-0.04240293143900997 +-0.6094110991430859 +0.7195608210152322 +0.1456092110377818 +-0.5640856569597896 +-0.14799100586670821 +0.010499258810168666 +-0.5791901728956912 +-0.5330473897412551 +-0.44303499138073965 +-0.2072940775054164 +0.12555358316123533 +-0.7598361263316624 +-0.9588760026624872 +-0.17693805731703982 +-0.6873252885460794 +-0.5364131818246292 +0.7882930778641968 +0.8204428540140611 +0.4249567927657889 +-0.28499255789268707 +0.772600558071677 +-0.9971297637107481 +0.8480750741137846 +0.11501242818218405 +0.5513771299842363 +0.6211985096616761 +-0.9672688755896188 +-0.7018048415430806 +0.10037360029071829 +-0.8996301933834934 +-0.7678156836817043 +-0.04027948701944073 +-0.7324408659228916 +0.16038385052341386 +-0.8837215829690739 +0.8678366420477128 +-0.8960971963919504 +-0.40731010613013074 +0.17575493227362493 +-0.7719216274593395 +0.4060149596095277 +0.5302202329680998 +0.39351358396768 +0.7300170511881521 +0.6651747325493051 +-0.6046743765473162 +-0.5610701885157332 +-0.7000663689389697 +-0.15203571414343964 +-0.5444011000519255 +-0.4877827976347704 +0.9009585646700886 +-0.1225770947824314 +-0.3524565705774618 +0.42531231994599583 +-0.6781300660462639 +0.80708014183804 +-0.003915240993556335 +0.7080161901658597 +-0.8093118381096072 +0.10153032486799196 +0.9288188856371278 +0.05718190064296902 +0.27851316140504245 +-0.5578917086891568 +0.491596461922712 +0.8218553235836485 +-0.69604802551348 +0.9235950233692058 +-0.8693053016968175 +-0.40154138670758677 +-0.3985602893545246 +0.7733769086136655 +0.2223254345672938 +0.39924169087816797 +0.0959117920296011 +-0.17537290166348551 +-0.6430644766973779 +-0.08558031624749152 +0.6021142582096961 +-0.15619963137407034 +0.6343650406054961 +0.46067428048216685 +0.2885053165409279 +-0.00010349173932810984 +0.08158635742117859 +0.010414151944123873 +0.2556916302465737 +0.4205951040637719 +0.9128581897074932 +-0.6462668627720403 +0.07957461543819155 +0.21724698096178807 +-0.6098674867663054 +-0.22906147005360156 +-0.24333265477283472 +-0.24989204050816438 +0.6878054166356926 +0.504752660714439 +0.16142472533564778 +0.30422478164097866 +0.6883016981732495 +0.6225922909369217 +0.6444421853331246 +0.9589936506784023 +-0.9641037309687444 +-0.5892506625801519 +-0.2762791046709241 +0.17377991541010163 +0.29698304800126163 +0.770427754300651 +-0.41619787235167394 +0.3299843834484264 +0.8349951751660982 +0.14713523125686434 +0.3080920048901765 +-0.696355825618769 +0.4875675429298494 +0.8407619674204927 +0.1382706557030895 +0.11591556756026522 +0.9490884970830873 +0.6110290197097701 +-0.4911729652428405 +-0.5204019904939634 +0.8112664643956364 +-0.05875337942170811 +-0.9089935629979311 +0.7548599460330068 +0.35010797216475087 +0.7699658982247706 +0.5789457221539291 +0.396914227133744 +0.27126242355435215 +-0.561401812902508 +0.3412344401312555 +-0.1974104809742636 +-0.5244608734347631 +-0.11925746052917718 +-0.10830258017036076 +-0.6152443572194546 +0.4714223919031988 +-0.029550867636295663 +-0.8180840629568285 +0.9254717017028797 +0.8183993563061338 +0.9674032180329672 +-0.44178764307193674 +-0.7296840194705676 +0.1713591811771198 +0.2847177535333927 +-0.5632179680933032 +-0.948343415462646 +-0.6701227306179116 +-0.7190841125851377 +0.49208269518227477 +0.9677141858127221 +0.14836326047507864 +-0.44155335247728544 +-0.3552532206169978 +-0.9410742937991747 +0.23788928307148494 +0.8348625095026341 +0.5265041313612961 +-0.13605417595910607 +-0.7300080934568736 +0.7282658179206458 +-0.6980942833440573 +-0.7422448846518024 +-0.024410111170419135 +-0.37356520628537915 +-0.5784214120263593 +0.9047307476169486 +-0.5376645539756377 +0.43911694813722946 +0.33210702562957284 +0.10177352250919114 +0.10155449133940264 +0.3526296972880112 +0.2242580562432881 +0.03723525777960024 +0.24169864153015963 +-0.6153307205134584 +-0.8684119541178883 +0.06865724930163308 +0.6920658860675228 +-0.768785514369037 +0.9968228434989501 +-0.9093843136098592 +-0.7839772323670169 +-0.8443329169580149 +-0.437098306125034 +0.20739298728801847 +-0.16772571949034587 +0.40055222049856587 +-0.5375275852702601 +-0.7399357896926437 +-0.608446848636564 +0.17116441352150513 +0.7293158749251503 +-0.7414887192077884 +-0.9107362793922786 +-0.37848085483638005 +0.6954424608169902 +-0.6895422501603412 +-0.8758562728218098 +-0.8302091510958927 +0.055150401374847835 +-0.0844659149780762 +0.07496517695298799 +0.43723007651625334 +-0.6054307317536023 +-0.019607156948143523 +0.01528421937971114 +0.580106511866811 +0.05202782765169012 +-0.4791583962241228 +-0.0030385925672815617 +0.6931367651476905 +0.13060137187746879 +-0.6694620975413623 +0.9642144309248222 +0.6343568825701573 +-0.49076819312380415 +-0.5033590225590845 +-0.09770760918778398 +-0.30347428447540326 +0.8882002487747163 +0.9080311920877602 +0.2535452233928428 +0.9835092143946937 +0.5497110983584492 +-0.5028950950587183 +0.16069370989735354 +-0.0020624388402468163 +-0.32026698456840563 +-0.016245603633809225 +-0.4756793104518926 +-0.9479060407544964 +-0.06577668499117495 +-0.6549867818290767 +-0.2878316415770641 +-0.25768671131806187 +0.16940138192306575 +0.7247073100915222 +0.19803622659085152 +-0.30070515340566706 +0.553228287621661 +0.5952718995558737 +0.42595637826870414 +0.24660394934577567 +-0.8784180026254287 +0.5233799521981468 +-0.010948074526117235 +-0.3411563389591472 +0.606238142971431 +-0.12673784595932114 +0.8270885650602078 +0.3125205392117012 +0.8248838628932629 +-0.6208267461917631 +-0.49699565650551003 +-0.40836166976590826 +-0.6936402101963259 +-0.42693298084730147 +0.04421081333329058 +-0.0483961480458146 +0.26991052049040887 +-0.7621249155523087 +-0.5811400288835058 +0.008695601468650782 +0.5187017739407964 +0.6941161914419371 +0.6735816247935382 +-0.6552488631604683 +0.6086891909274095 +0.5109052494646416 +-0.5453786370314702 +-0.1361407866276716 +0.023539421711613162 +-0.8986163067552084 +-0.9437930842682483 +0.6248086962482211 +0.1168757548239121 +0.8845628483879011 +-0.3393281933342256 +-0.5941478617220683 +0.21703127641220155 +-0.8953560651695791 +-0.07033532219140115 +-0.6752545162361718 +-0.08064493704297826 +-0.4939423427614562 +0.016782947032842443 +-0.9349360620552023 +0.8441150779495206 +-0.32890468015058527 +-0.3181696637762861 +0.8564948744045142 +0.7118703460784785 +0.20075779745994726 +-0.357986139701846 +-0.9236463754692279 +0.4144057976205029 +0.6920868366639055 +-0.5351070282435613 +-0.004469711711744484 +0.3771926422131031 +-0.6028663996543933 +0.8877940322192237 +-0.49616148653837744 +0.9383547772999523 +0.33127938784837907 +-0.31541589646478396 +0.5088790360409203 +0.5765295305113205 +0.9104036083033664 +0.8233317208036959 +0.14855631243986922 +0.3124478418227108 +-0.16556353792750889 +0.9914507851681984 +-0.8964517536899135 +0.41831149180957095 +0.8373434507287589 +-0.24608718570866728 +0.5764450656193372 +-0.10892598360452466 +0.36941590482884745 +0.2368606951164014 +0.5067290938208968 +-0.8857859946907491 +0.25929471898783607 +0.03731153867644332 +0.6095739918404162 +0.5215398020716977 +0.46282859214312033 +-0.5706659457271992 +0.7563638665668773 +-0.2649607843382187 +-0.0511860071553607 +-0.4815960495670484 +-0.27771706277715547 +-0.03556600462323933 +0.263858880156532 +-0.2745408404046876 +0.3616016454066795 +-0.1080471633903275 +0.873961603688084 +-0.006571614284035743 +0.4704609698306621 +-0.5451532832235042 +0.14688667280893108 +0.2261727403225593 +0.627757183098475 +0.3873270979748429 +-0.35479179297510033 +-0.2623809818179441 +0.406432936688244 +0.4319787484968889 +0.06608853748605314 +0.07826245945560117 +0.47663946769361853 +-0.030776581287770277 +0.6398224788431297 +0.4574414177771824 +0.8884219545227534 +0.3645327842353643 +-0.1688823424349164 +0.6537094876867293 +0.8514233925075287 +0.49208863231779887 +0.9208612130305367 +-0.6403458498286545 +-0.2248450059892546 +0.1480547616592056 +0.1551622002331352 +0.5796115152000976 +-0.535960114342795 +-0.2861461424955012 +0.056393467769750405 +0.6616309444982273 +0.9861412348615821 +0.07086222465470904 +0.48610182476851627 +-0.6514975620371035 +-0.47378160452410345 +-0.096475219938847 +-0.877705979341274 +-0.5559673222179966 +-0.322932150868092 +-0.1369782547987719 +0.1139769981183365 +-0.012458054446833788 +-0.1617765863617575 +0.9911658081938972 +-0.40953052664096834 +-0.21960088255040455 +0.09602281040726135 +-0.7190614995026547 +0.8958701131008056 +0.16962742262028518 +0.32384763487436796 +0.4427935217780208 +-0.2912293938146253 +-0.19613703058098375 +-0.33182192690352474 +0.4287830022763215 +0.6508727589987267 +-0.571546258269906 +0.0841829338129747 +0.4746019755533637 +-0.9383040635840931 +0.568508428291977 +0.32305476146943635 +0.7818480066922695 +-0.0039119539225729305 +0.2764362441960664 +0.033691695009120615 +0.20720926905342152 +0.6022258385164383 +0.3560299490522496 +0.07247918907712458 +-0.35653730501705594 +0.843620126041912 +-0.6205756437069914 +0.46937982786591537 +0.7879491922261788 +0.6248920870326446 +0.7261263853258599 +0.565508822881374 +-0.4554089952922089 +-0.06324068024176466 +0.5646068473380761 +0.7442392071563688 +-0.7542209416605816 +-0.39043288582629554 +-0.061178417129096996 +-0.8015327747457053 +-0.4575916079851363 +0.0723586202159261 +0.09883838382395149 +-0.8984710706750274 +-0.4178081700872207 +0.05421456759198051 +-0.019507954727135512 +0.5095061945676647 +0.5671164360360961 +-0.20471102543850384 +-0.4321998697366696 +0.9268078392222221 +-0.5678987340435353 +0.03203206238636902 +-0.21126014977609753 +-0.25461581885660367 +-0.39796011035125733 +0.3866593469829058 +-0.3370167254923957 +-0.9628703844873461 +0.09680573848589669 +-0.4376217032807759 +0.5322920597576202 +0.3119464480045173 +-0.577612262000295 +0.10892248601369081 +-0.7807853732227286 +0.9569123661345542 +0.09046021960036787 +0.7166389210058117 +0.5265978039785439 +0.1935663231802902 +-0.5139738972716823 +0.28492014057898185 +-0.10654131897163222 +0.21814483252212424 +-0.026959185256665297 +-0.9187886933901859 +0.8457753486120869 +0.2255520891009044 +0.3301971629502707 +-0.46694353905585606 +0.7279105416355303 +0.8177384613969578 +-0.02497968395686767 +-0.6674256819741289 +0.1250488322533334 +-0.9268501079333382 +-0.43582548113622144 +-0.5713970578704224 +-0.6721279089825622 +0.13454776873826413 +0.10709697718813116 +0.6459315197081716 +0.510196562618543 +-0.6320197249395498 +-0.6211551421181669 +0.4670251945953683 +0.7496474590041764 +-0.9276433029938373 +0.7162414088744029 +0.5467193001949915 +0.6759822624480276 +-0.817821215829635 +0.529936787686311 +-0.0828031238943181 +0.2731082225910937 +-0.9853595129657053 +-0.8846556255441747 +-0.18583087700324086 +-0.737084857335272 +0.7562635084150262 +-0.9234472825040942 +-0.2405095150044092 +-0.7261428431401487 +-0.02928759346523835 +-0.7752597495621854 +0.6625984900416753 +0.01987442939102424 +0.1204396858863852 +-0.6211004726344105 +-0.9744701119258266 +-0.048313131846669854 +-0.1533481185315435 +-0.9380657671889878 +-0.3878614278911492 +-0.5836798042749085 +0.3147271662973985 +0.07625677457271873 +-0.29046519141989835 +-0.5979917363097198 +0.17410273338340376 +0.37577978555533154 +-0.6746135295698958 +0.7555555100000766 +0.5127832860423709 +0.30629656742911315 +-0.7071633848277341 +-0.21589733817673817 +0.831939783648687 +-0.9538083597942877 +0.45403162704708633 +-0.3230360266687762 +0.030880262369038736 +-0.3834471518908642 +-0.02131395922993251 +-0.5940672790038293 +0.17097752516718367 +0.6515645100153167 +-0.5260121353823743 +0.009865769071639274 +-0.2661282343329239 +-0.008342660878419395 +0.5732482062749309 +0.5182232053112057 +0.22381261325491053 +-0.24440762743234723 +0.24356138999420907 +-0.4339232798479875 +0.22627029193123915 +-0.10831862918386737 +0.15585179300539753 +-0.4470007546488608 +-0.4492666316154992 +0.3742890063530919 +0.9644614724228631 +0.6692461829055443 +0.9601929466462562 +-0.1363320982194578 +-0.33569326571592617 +-0.13643393978138674 +0.7355770667875601 +0.03670964337086868 +0.3309101128512153 +-0.8779241135954705 +-0.7021662813864067 +-0.3386757794659152 +0.7026360312641757 +-0.016936686099933596 +0.40200712045789677 +-0.7941113051720845 +0.1560181216186045 +0.5065258564910131 +0.36605225707788325 +0.38130506624469973 +0.241500549517355 +-0.5205459664437484 +-0.3733736219994599 +-0.5753147150997715 +-0.6632004034052472 +0.8639524782596912 +-0.6394633133972287 +-0.326281170721324 +0.9695245995170776 +0.9530587193937752 +-0.9999032629526607 +-0.3245974795924744 +-0.210263785813114 +-0.4525929172111467 +-0.4430851087054646 +0.3506159083560738 +-0.36172521383109 +0.771057043923538 +-0.1772750100976408 +0.9536229244673571 +-0.04616286532664926 +0.2658584071442651 +-0.4377219701495112 +-0.5718868353629354 +-0.7668505803020245 +0.6199476783323608 +-0.641282199972034 +-0.7514024602378546 +0.044654815225369404 +0.14925013318459168 +-0.5361500527913132 +0.23312849359022092 +0.1615451038595368 +0.4331368997642362 +-0.9742764297596596 +0.8290808767624629 +-0.14435415293908482 +-0.33742274518910653 +0.3145562173517491 +0.09773177980919989 +0.13064123342418332 +-0.2385626009175148 +-0.9713852038525124 +-0.9279610748730307 +-0.2813827199863348 +0.7911350877594008 +0.14604125425586423 +0.13621034080158623 +0.6635068317992219 +0.002327021924219519 +0.42332865118647467 +-0.731380259475515 +-0.16623778519020327 +0.06269680505351216 +-0.27458302811373203 +0.570947016123347 +-0.2271822573054183 +0.28547099126072073 +-0.49868474870102286 +-0.7349967765872334 +-0.8133163545575708 +0.7077621719364435 +0.8452873639259679 +-0.07742635220945626 +0.12229605038476121 +-0.3499269659311337 +0.3701886166059758 +0.49576621329555115 +0.1572972226748912 +-0.6595524546576139 +-0.2998462338817509 +0.9541045960197385 +0.028425964584792407 +-0.7255673792306792 +-0.14603582908485357 +0.4231984796580628 +0.29818347495652153 +-0.41997475465007117 +0.5575688187640782 +0.033614115511162 +-0.8202100840034925 +0.0854633787778658 +-0.09447154410828018 +0.5828874372262396 +-0.8218429897360227 +-0.8302775774160636 +0.7089526164901776 +-0.862844671909222 +0.4709179474867411 +-0.5645822003880454 +0.8703255367893963 +-0.43716515953717794 +0.028061558143427145 +-0.5397339119353468 +0.3120673301521144 +-0.38188984283406 +0.3159383283147368 +-0.6030259610223738 +-0.025645045354914853 +-0.02592889005223098 +0.4472169618672188 +0.30595808930561175 +-0.6848281714911799 +0.41037710509762704 +-0.17329077998820885 +0.003638441613022181 +-0.9485666807159272 +-0.7349148976406479 +-0.1495479613592634 +-0.6971762379402042 +-0.27132653051758915 +-0.11665317472883929 +0.19237209120889753 +-0.12352965169556462 +-0.17888928497323864 +0.8087027195095029 +-0.7324360480446854 +0.31535095194053797 +0.08789305680624482 +-0.3255386048958635 +0.15406766160204421 +-0.9602301271185141 +0.4740790148108167 +0.17826932975788834 +0.8840993358513707 +0.26140008215513344 +-0.8314591478722262 +-0.660207008141779 +-0.6071783667759547 +-0.5674080910732107 +0.32382237226448085 +-0.31284051817644754 +-0.8355529644453705 +-0.5783556427974825 +-0.7609373753089832 +0.552167239114226 +0.0284945695150971 +-0.36353308370485804 +-0.07938459640534168 +-0.9039006983054958 +-0.9648382495881394 +0.7844950094959082 +-0.41914166671136766 +-0.6116157406951648 +-0.6293960751289469 +0.030631434003460356 +-0.49191772447146587 +-0.5296805913842175 +0.7031725160050954 +-0.7659081790370679 +-0.18912289272958605 +-0.277336785077241 +0.6835081083089021 +-0.4911535038383197 +-0.3674888432833594 +-0.7136956519183739 +-0.08324063624298983 +-0.1713335586431075 +0.752920745134591 +0.4012492633892939 +0.9035727649043697 +0.751368191268829 +0.9201768228552263 +-0.2596453625984676 +0.45540609513893004 +0.21758295827598806 +0.5731683938682064 +0.21432367219267023 +-0.02789603811951391 +-0.9482558118802982 +0.6745106438982686 +0.3351597876072443 +0.3830059963280812 +0.14065719032950463 +-0.8242390169182867 +-0.7277667662584197 +-0.33287819377342975 +-0.8794503109816936 +-0.24285082339183095 +0.6628606986908165 +-0.883109361026523 +0.3493611467497586 +-0.47644316629827355 +0.6329884318692223 +0.48098837559719865 +0.07931948767431996 +0.7404131752655712 +0.17833172149085863 +-0.014038739996235616 +0.5836127219948573 +-0.7134762149595262 +0.4599005886768732 +0.36691722724320597 +0.9246062948887963 +0.4551051828173591 +-0.42886544666656956 +-0.42123715897103375 +0.3111367147551083 +0.16217180937134978 +0.23252566615007497 +0.5863529132918286 +0.28586800226837106 +0.6031069558576374 +-0.6357428263693703 +-0.8578878451282961 +0.9736329327811357 +0.31700047477921656 +0.9479675002709498 +0.8449583598289463 +-0.8230622036739579 +0.27473763150684105 +0.5400315539788183 +0.19294781846918152 +0.9837350334807402 +0.5937011164570842 +-0.5711013213796239 +-0.5555847619756031 +0.824750949669192 +-0.5799546996341056 +-0.600226350940023 +0.894046651077304 +0.8379929493854568 +0.1559599530317386 +0.5089997580994776 +-0.7123787384911777 +0.932102728846465 +-0.42213560357416036 +-0.3717272728003249 +0.5346975026256549 +0.6774708609910793 +-0.98953601353324 +-0.5008711690870102 +-0.08777052004582275 +0.13243545773432963 +0.7240650557027299 +0.6189628742038407 +-0.5034063116921765 +0.7413936819871565 +0.05729729865037925 +0.9463386693094131 +0.9828644050141948 +-0.40129196730225347 +-0.8038089096952064 +0.3160371933478272 +0.06910257346431559 +0.1776855507162498 +-0.7865301117342263 +0.6873040244878448 +0.9196812887520562 +0.7770790120777518 +-0.09747387940221941 +0.191253911826478 +0.7667193244041202 +0.24774769316959455 +0.16589268928770906 +0.07962206970944674 +0.17355951578491435 +0.506746467907695 +0.3661450143638687 +0.011303317018155568 +-0.05285612835114817 +-0.8932546532741004 +-0.8467886990487252 +0.0016020302167523148 +-0.456463805803756 +0.3326088881752982 +-0.26481266835878836 +0.21177674604806285 +-0.12249680328480395 +-0.4413675964569532 +-0.0637248215348647 +0.9237603352860417 +0.9230025153130779 +-0.4769508568988061 +-0.793342806239802 +-0.5536545282765659 +0.45556600527380287 +-0.7908467717035044 +-0.2583731863141234 +0.4224300462068995 +0.0440279794696945 +0.3762610794505914 +-0.7832793289369935 +-0.2248220509759271 +-0.09438003861852717 +-0.5875261973925818 +0.3839000573447473 +-0.7736655796625 +-0.29546670166810873 +-0.11923262269985058 +0.7619127280726516 +-0.9853906315869638 +-0.04510518475888059 +0.33552968711783304 +0.6543679479635505 +0.031032886291715744 +0.4325902802645918 +0.6444808087085669 +-0.8983612356132107 +0.5408698940234808 +-0.6732698054798569 +-0.31198815268384594 +0.7117487384498578 +-0.22335521238354028 +-0.3945958256383162 +0.6099089089591043 +0.0813841491365972 +0.002694171084826724 +-0.6507275969295359 +0.5654179512624324 +-0.8076019845382718 +-0.16761270406905338 +-0.5518169311971759 +0.7355472727914001 +-0.5640996238062517 +0.9120103857708539 +0.481197129119713 +0.12112619676864078 +0.9875766992317851 +-0.5542105833690991 +-0.4827528625047881 +-0.009198586612962245 +-0.19796583936617784 +-0.9751071220935632 diff --git a/test/data/pmtm_fx.txt b/test/data/pmtm_fx.txt new file mode 100644 index 000000000..8275404e4 --- /dev/null +++ b/test/data/pmtm_fx.txt @@ -0,0 +1,1025 @@ +0.0 +0.48828125 +0.9765625 +1.46484375 +1.953125 +2.44140625 +2.9296875 +3.41796875 +3.90625 +4.39453125 +4.8828125 +5.37109375 +5.859375 +6.34765625 +6.8359375 +7.32421875 +7.8125 +8.30078125 +8.7890625 +9.27734375 +9.765625 +10.25390625 +10.7421875 +11.23046875 +11.71875 +12.20703125 +12.6953125 +13.18359375 +13.671875 +14.16015625 +14.6484375 +15.13671875 +15.625 +16.11328125 +16.6015625 +17.08984375 +17.578125 +18.06640625 +18.5546875 +19.04296875 +19.53125 +20.01953125 +20.5078125 +20.99609375 +21.484375 +21.97265625 +22.4609375 +22.94921875 +23.4375 +23.92578125 +24.4140625 +24.90234375 +25.390625 +25.87890625 +26.3671875 +26.85546875 +27.34375 +27.83203125 +28.3203125 +28.80859375 +29.296875 +29.78515625 +30.2734375 +30.76171875 +31.25 +31.73828125 +32.2265625 +32.71484375 +33.203125 +33.69140625 +34.1796875 +34.66796875 +35.15625 +35.64453125 +36.1328125 +36.62109375 +37.109375 +37.59765625 +38.0859375 +38.57421875 +39.0625 +39.55078125 +40.0390625 +40.52734375 +41.015625 +41.50390625 +41.9921875 +42.48046875 +42.96875 +43.45703125 +43.9453125 +44.43359375 +44.921875 +45.41015625 +45.8984375 +46.38671875 +46.875 +47.36328125 +47.8515625 +48.33984375 +48.828125 +49.31640625 +49.8046875 +50.29296875 +50.78125 +51.26953125 +51.7578125 +52.24609375 +52.734375 +53.22265625 +53.7109375 +54.19921875 +54.6875 +55.17578125 +55.6640625 +56.15234375 +56.640625 +57.12890625 +57.6171875 +58.10546875 +58.59375 +59.08203125 +59.5703125 +60.05859375 +60.546875 +61.03515625 +61.5234375 +62.01171875 +62.5 +62.98828125 +63.4765625 +63.96484375 +64.453125 +64.94140625 +65.4296875 +65.91796875 +66.40625 +66.89453125 +67.3828125 +67.87109375 +68.359375 +68.84765625 +69.3359375 +69.82421875 +70.3125 +70.80078125 +71.2890625 +71.77734375 +72.265625 +72.75390625 +73.2421875 +73.73046875 +74.21875 +74.70703125 +75.1953125 +75.68359375 +76.171875 +76.66015625 +77.1484375 +77.63671875 +78.125 +78.61328125 +79.1015625 +79.58984375 +80.078125 +80.56640625 +81.0546875 +81.54296875 +82.03125 +82.51953125 +83.0078125 +83.49609375 +83.984375 +84.47265625 +84.9609375 +85.44921875 +85.9375 +86.42578125 +86.9140625 +87.40234375 +87.890625 +88.37890625 +88.8671875 +89.35546875 +89.84375 +90.33203125 +90.8203125 +91.30859375 +91.796875 +92.28515625 +92.7734375 +93.26171875 +93.75 +94.23828125 +94.7265625 +95.21484375 +95.703125 +96.19140625 +96.6796875 +97.16796875 +97.65625 +98.14453125 +98.6328125 +99.12109375 +99.609375 +100.09765625 +100.5859375 +101.07421875 +101.5625 +102.05078125 +102.5390625 +103.02734375 +103.515625 +104.00390625 +104.4921875 +104.98046875 +105.46875 +105.95703125 +106.4453125 +106.93359375 +107.421875 +107.91015625 +108.3984375 +108.88671875 +109.375 +109.86328125 +110.3515625 +110.83984375 +111.328125 +111.81640625 +112.3046875 +112.79296875 +113.28125 +113.76953125 +114.2578125 +114.74609375 +115.234375 +115.72265625 +116.2109375 +116.69921875 +117.1875 +117.67578125 +118.1640625 +118.65234375 +119.140625 +119.62890625 +120.1171875 +120.60546875 +121.09375 +121.58203125 +122.0703125 +122.55859375 +123.046875 +123.53515625 +124.0234375 +124.51171875 +125.0 +125.48828125 +125.9765625 +126.46484375 +126.953125 +127.44140625 +127.9296875 +128.41796875 +128.90625 +129.39453125 +129.8828125 +130.37109375 +130.859375 +131.34765625 +131.8359375 +132.32421875 +132.8125 +133.30078125 +133.7890625 +134.27734375 +134.765625 +135.25390625 +135.7421875 +136.23046875 +136.71875 +137.20703125 +137.6953125 +138.18359375 +138.671875 +139.16015625 +139.6484375 +140.13671875 +140.625 +141.11328125 +141.6015625 +142.08984375 +142.578125 +143.06640625 +143.5546875 +144.04296875 +144.53125 +145.01953125 +145.5078125 +145.99609375 +146.484375 +146.97265625 +147.4609375 +147.94921875 +148.4375 +148.92578125 +149.4140625 +149.90234375 +150.390625 +150.87890625 +151.3671875 +151.85546875 +152.34375 +152.83203125 +153.3203125 +153.80859375 +154.296875 +154.78515625 +155.2734375 +155.76171875 +156.25 +156.73828125 +157.2265625 +157.71484375 +158.203125 +158.69140625 +159.1796875 +159.66796875 +160.15625 +160.64453125 +161.1328125 +161.62109375 +162.109375 +162.59765625 +163.0859375 +163.57421875 +164.0625 +164.55078125 +165.0390625 +165.52734375 +166.015625 +166.50390625 +166.9921875 +167.48046875 +167.96875 +168.45703125 +168.9453125 +169.43359375 +169.921875 +170.41015625 +170.8984375 +171.38671875 +171.875 +172.36328125 +172.8515625 +173.33984375 +173.828125 +174.31640625 +174.8046875 +175.29296875 +175.78125 +176.26953125 +176.7578125 +177.24609375 +177.734375 +178.22265625 +178.7109375 +179.19921875 +179.6875 +180.17578125 +180.6640625 +181.15234375 +181.640625 +182.12890625 +182.6171875 +183.10546875 +183.59375 +184.08203125 +184.5703125 +185.05859375 +185.546875 +186.03515625 +186.5234375 +187.01171875 +187.5 +187.98828125 +188.4765625 +188.96484375 +189.453125 +189.94140625 +190.4296875 +190.91796875 +191.40625 +191.89453125 +192.3828125 +192.87109375 +193.359375 +193.84765625 +194.3359375 +194.82421875 +195.3125 +195.80078125 +196.2890625 +196.77734375 +197.265625 +197.75390625 +198.2421875 +198.73046875 +199.21875 +199.70703125 +200.1953125 +200.68359375 +201.171875 +201.66015625 +202.1484375 +202.63671875 +203.125 +203.61328125 +204.1015625 +204.58984375 +205.078125 +205.56640625 +206.0546875 +206.54296875 +207.03125 +207.51953125 +208.0078125 +208.49609375 +208.984375 +209.47265625 +209.9609375 +210.44921875 +210.9375 +211.42578125 +211.9140625 +212.40234375 +212.890625 +213.37890625 +213.8671875 +214.35546875 +214.84375 +215.33203125 +215.8203125 +216.30859375 +216.796875 +217.28515625 +217.7734375 +218.26171875 +218.75 +219.23828125 +219.7265625 +220.21484375 +220.703125 +221.19140625 +221.6796875 +222.16796875 +222.65625 +223.14453125 +223.6328125 +224.12109375 +224.609375 +225.09765625 +225.5859375 +226.07421875 +226.5625 +227.05078125 +227.5390625 +228.02734375 +228.515625 +229.00390625 +229.4921875 +229.98046875 +230.46875 +230.95703125 +231.4453125 +231.93359375 +232.421875 +232.91015625 +233.3984375 +233.88671875 +234.375 +234.86328125 +235.3515625 +235.83984375 +236.328125 +236.81640625 +237.3046875 +237.79296875 +238.28125 +238.76953125 +239.2578125 +239.74609375 +240.234375 +240.72265625 +241.2109375 +241.69921875 +242.1875 +242.67578125 +243.1640625 +243.65234375 +244.140625 +244.62890625 +245.1171875 +245.60546875 +246.09375 +246.58203125 +247.0703125 +247.55859375 +248.046875 +248.53515625 +249.0234375 +249.51171875 +250.0 +250.48828125 +250.9765625 +251.46484375 +251.953125 +252.44140625 +252.9296875 +253.41796875 +253.90625 +254.39453125 +254.8828125 +255.37109375 +255.859375 +256.34765625 +256.8359375 +257.32421875 +257.8125 +258.30078125 +258.7890625 +259.27734375 +259.765625 +260.25390625 +260.7421875 +261.23046875 +261.71875 +262.20703125 +262.6953125 +263.18359375 +263.671875 +264.16015625 +264.6484375 +265.13671875 +265.625 +266.11328125 +266.6015625 +267.08984375 +267.578125 +268.06640625 +268.5546875 +269.04296875 +269.53125 +270.01953125 +270.5078125 +270.99609375 +271.484375 +271.97265625 +272.4609375 +272.94921875 +273.4375 +273.92578125 +274.4140625 +274.90234375 +275.390625 +275.87890625 +276.3671875 +276.85546875 +277.34375 +277.83203125 +278.3203125 +278.80859375 +279.296875 +279.78515625 +280.2734375 +280.76171875 +281.25 +281.73828125 +282.2265625 +282.71484375 +283.203125 +283.69140625 +284.1796875 +284.66796875 +285.15625 +285.64453125 +286.1328125 +286.62109375 +287.109375 +287.59765625 +288.0859375 +288.57421875 +289.0625 +289.55078125 +290.0390625 +290.52734375 +291.015625 +291.50390625 +291.9921875 +292.48046875 +292.96875 +293.45703125 +293.9453125 +294.43359375 +294.921875 +295.41015625 +295.8984375 +296.38671875 +296.875 +297.36328125 +297.8515625 +298.33984375 +298.828125 +299.31640625 +299.8046875 +300.29296875 +300.78125 +301.26953125 +301.7578125 +302.24609375 +302.734375 +303.22265625 +303.7109375 +304.19921875 +304.6875 +305.17578125 +305.6640625 +306.15234375 +306.640625 +307.12890625 +307.6171875 +308.10546875 +308.59375 +309.08203125 +309.5703125 +310.05859375 +310.546875 +311.03515625 +311.5234375 +312.01171875 +312.5 +312.98828125 +313.4765625 +313.96484375 +314.453125 +314.94140625 +315.4296875 +315.91796875 +316.40625 +316.89453125 +317.3828125 +317.87109375 +318.359375 +318.84765625 +319.3359375 +319.82421875 +320.3125 +320.80078125 +321.2890625 +321.77734375 +322.265625 +322.75390625 +323.2421875 +323.73046875 +324.21875 +324.70703125 +325.1953125 +325.68359375 +326.171875 +326.66015625 +327.1484375 +327.63671875 +328.125 +328.61328125 +329.1015625 +329.58984375 +330.078125 +330.56640625 +331.0546875 +331.54296875 +332.03125 +332.51953125 +333.0078125 +333.49609375 +333.984375 +334.47265625 +334.9609375 +335.44921875 +335.9375 +336.42578125 +336.9140625 +337.40234375 +337.890625 +338.37890625 +338.8671875 +339.35546875 +339.84375 +340.33203125 +340.8203125 +341.30859375 +341.796875 +342.28515625 +342.7734375 +343.26171875 +343.75 +344.23828125 +344.7265625 +345.21484375 +345.703125 +346.19140625 +346.6796875 +347.16796875 +347.65625 +348.14453125 +348.6328125 +349.12109375 +349.609375 +350.09765625 +350.5859375 +351.07421875 +351.5625 +352.05078125 +352.5390625 +353.02734375 +353.515625 +354.00390625 +354.4921875 +354.98046875 +355.46875 +355.95703125 +356.4453125 +356.93359375 +357.421875 +357.91015625 +358.3984375 +358.88671875 +359.375 +359.86328125 +360.3515625 +360.83984375 +361.328125 +361.81640625 +362.3046875 +362.79296875 +363.28125 +363.76953125 +364.2578125 +364.74609375 +365.234375 +365.72265625 +366.2109375 +366.69921875 +367.1875 +367.67578125 +368.1640625 +368.65234375 +369.140625 +369.62890625 +370.1171875 +370.60546875 +371.09375 +371.58203125 +372.0703125 +372.55859375 +373.046875 +373.53515625 +374.0234375 +374.51171875 +375.0 +375.48828125 +375.9765625 +376.46484375 +376.953125 +377.44140625 +377.9296875 +378.41796875 +378.90625 +379.39453125 +379.8828125 +380.37109375 +380.859375 +381.34765625 +381.8359375 +382.32421875 +382.8125 +383.30078125 +383.7890625 +384.27734375 +384.765625 +385.25390625 +385.7421875 +386.23046875 +386.71875 +387.20703125 +387.6953125 +388.18359375 +388.671875 +389.16015625 +389.6484375 +390.13671875 +390.625 +391.11328125 +391.6015625 +392.08984375 +392.578125 +393.06640625 +393.5546875 +394.04296875 +394.53125 +395.01953125 +395.5078125 +395.99609375 +396.484375 +396.97265625 +397.4609375 +397.94921875 +398.4375 +398.92578125 +399.4140625 +399.90234375 +400.390625 +400.87890625 +401.3671875 +401.85546875 +402.34375 +402.83203125 +403.3203125 +403.80859375 +404.296875 +404.78515625 +405.2734375 +405.76171875 +406.25 +406.73828125 +407.2265625 +407.71484375 +408.203125 +408.69140625 +409.1796875 +409.66796875 +410.15625 +410.64453125 +411.1328125 +411.62109375 +412.109375 +412.59765625 +413.0859375 +413.57421875 +414.0625 +414.55078125 +415.0390625 +415.52734375 +416.015625 +416.50390625 +416.9921875 +417.48046875 +417.96875 +418.45703125 +418.9453125 +419.43359375 +419.921875 +420.41015625 +420.8984375 +421.38671875 +421.875 +422.36328125 +422.8515625 +423.33984375 +423.828125 +424.31640625 +424.8046875 +425.29296875 +425.78125 +426.26953125 +426.7578125 +427.24609375 +427.734375 +428.22265625 +428.7109375 +429.19921875 +429.6875 +430.17578125 +430.6640625 +431.15234375 +431.640625 +432.12890625 +432.6171875 +433.10546875 +433.59375 +434.08203125 +434.5703125 +435.05859375 +435.546875 +436.03515625 +436.5234375 +437.01171875 +437.5 +437.98828125 +438.4765625 +438.96484375 +439.453125 +439.94140625 +440.4296875 +440.91796875 +441.40625 +441.89453125 +442.3828125 +442.87109375 +443.359375 +443.84765625 +444.3359375 +444.82421875 +445.3125 +445.80078125 +446.2890625 +446.77734375 +447.265625 +447.75390625 +448.2421875 +448.73046875 +449.21875 +449.70703125 +450.1953125 +450.68359375 +451.171875 +451.66015625 +452.1484375 +452.63671875 +453.125 +453.61328125 +454.1015625 +454.58984375 +455.078125 +455.56640625 +456.0546875 +456.54296875 +457.03125 +457.51953125 +458.0078125 +458.49609375 +458.984375 +459.47265625 +459.9609375 +460.44921875 +460.9375 +461.42578125 +461.9140625 +462.40234375 +462.890625 +463.37890625 +463.8671875 +464.35546875 +464.84375 +465.33203125 +465.8203125 +466.30859375 +466.796875 +467.28515625 +467.7734375 +468.26171875 +468.75 +469.23828125 +469.7265625 +470.21484375 +470.703125 +471.19140625 +471.6796875 +472.16796875 +472.65625 +473.14453125 +473.6328125 +474.12109375 +474.609375 +475.09765625 +475.5859375 +476.07421875 +476.5625 +477.05078125 +477.5390625 +478.02734375 +478.515625 +479.00390625 +479.4921875 +479.98046875 +480.46875 +480.95703125 +481.4453125 +481.93359375 +482.421875 +482.91015625 +483.3984375 +483.88671875 +484.375 +484.86328125 +485.3515625 +485.83984375 +486.328125 +486.81640625 +487.3046875 +487.79296875 +488.28125 +488.76953125 +489.2578125 +489.74609375 +490.234375 +490.72265625 +491.2109375 +491.69921875 +492.1875 +492.67578125 +493.1640625 +493.65234375 +494.140625 +494.62890625 +495.1171875 +495.60546875 +496.09375 +496.58203125 +497.0703125 +497.55859375 +498.046875 +498.53515625 +499.0234375 +499.51171875 +500.0 diff --git a/test/data/pmtm_fz.txt b/test/data/pmtm_fz.txt new file mode 100644 index 000000000..2323e9097 --- /dev/null +++ b/test/data/pmtm_fz.txt @@ -0,0 +1,2048 @@ +0.0 +0.48828125 +0.9765625 +1.46484375 +1.953125 +2.44140625 +2.9296875 +3.41796875 +3.90625 +4.39453125 +4.8828125 +5.37109375 +5.859375 +6.34765625 +6.8359375 +7.32421875 +7.8125 +8.30078125 +8.7890625 +9.27734375 +9.765625 +10.25390625 +10.7421875 +11.23046875 +11.71875 +12.20703125 +12.6953125 +13.18359375 +13.671875 +14.16015625 +14.6484375 +15.13671875 +15.625 +16.11328125 +16.6015625 +17.08984375 +17.578125 +18.06640625 +18.5546875 +19.04296875 +19.53125 +20.01953125 +20.5078125 +20.99609375 +21.484375 +21.97265625 +22.4609375 +22.94921875 +23.4375 +23.92578125 +24.4140625 +24.90234375 +25.390625 +25.87890625 +26.3671875 +26.85546875 +27.34375 +27.83203125 +28.3203125 +28.80859375 +29.296875 +29.78515625 +30.2734375 +30.76171875 +31.25 +31.73828125 +32.2265625 +32.71484375 +33.203125 +33.69140625 +34.1796875 +34.66796875 +35.15625 +35.64453125 +36.1328125 +36.62109375 +37.109375 +37.59765625 +38.0859375 +38.57421875 +39.0625 +39.55078125 +40.0390625 +40.52734375 +41.015625 +41.50390625 +41.9921875 +42.48046875 +42.96875 +43.45703125 +43.9453125 +44.43359375 +44.921875 +45.41015625 +45.8984375 +46.38671875 +46.875 +47.36328125 +47.8515625 +48.33984375 +48.828125 +49.31640625 +49.8046875 +50.29296875 +50.78125 +51.26953125 +51.7578125 +52.24609375 +52.734375 +53.22265625 +53.7109375 +54.19921875 +54.6875 +55.17578125 +55.6640625 +56.15234375 +56.640625 +57.12890625 +57.6171875 +58.10546875 +58.59375 +59.08203125 +59.5703125 +60.05859375 +60.546875 +61.03515625 +61.5234375 +62.01171875 +62.5 +62.98828125 +63.4765625 +63.96484375 +64.453125 +64.94140625 +65.4296875 +65.91796875 +66.40625 +66.89453125 +67.3828125 +67.87109375 +68.359375 +68.84765625 +69.3359375 +69.82421875 +70.3125 +70.80078125 +71.2890625 +71.77734375 +72.265625 +72.75390625 +73.2421875 +73.73046875 +74.21875 +74.70703125 +75.1953125 +75.68359375 +76.171875 +76.66015625 +77.1484375 +77.63671875 +78.125 +78.61328125 +79.1015625 +79.58984375 +80.078125 +80.56640625 +81.0546875 +81.54296875 +82.03125 +82.51953125 +83.0078125 +83.49609375 +83.984375 +84.47265625 +84.9609375 +85.44921875 +85.9375 +86.42578125 +86.9140625 +87.40234375 +87.890625 +88.37890625 +88.8671875 +89.35546875 +89.84375 +90.33203125 +90.8203125 +91.30859375 +91.796875 +92.28515625 +92.7734375 +93.26171875 +93.75 +94.23828125 +94.7265625 +95.21484375 +95.703125 +96.19140625 +96.6796875 +97.16796875 +97.65625 +98.14453125 +98.6328125 +99.12109375 +99.609375 +100.09765625 +100.5859375 +101.07421875 +101.5625 +102.05078125 +102.5390625 +103.02734375 +103.515625 +104.00390625 +104.4921875 +104.98046875 +105.46875 +105.95703125 +106.4453125 +106.93359375 +107.421875 +107.91015625 +108.3984375 +108.88671875 +109.375 +109.86328125 +110.3515625 +110.83984375 +111.328125 +111.81640625 +112.3046875 +112.79296875 +113.28125 +113.76953125 +114.2578125 +114.74609375 +115.234375 +115.72265625 +116.2109375 +116.69921875 +117.1875 +117.67578125 +118.1640625 +118.65234375 +119.140625 +119.62890625 +120.1171875 +120.60546875 +121.09375 +121.58203125 +122.0703125 +122.55859375 +123.046875 +123.53515625 +124.0234375 +124.51171875 +125.0 +125.48828125 +125.9765625 +126.46484375 +126.953125 +127.44140625 +127.9296875 +128.41796875 +128.90625 +129.39453125 +129.8828125 +130.37109375 +130.859375 +131.34765625 +131.8359375 +132.32421875 +132.8125 +133.30078125 +133.7890625 +134.27734375 +134.765625 +135.25390625 +135.7421875 +136.23046875 +136.71875 +137.20703125 +137.6953125 +138.18359375 +138.671875 +139.16015625 +139.6484375 +140.13671875 +140.625 +141.11328125 +141.6015625 +142.08984375 +142.578125 +143.06640625 +143.5546875 +144.04296875 +144.53125 +145.01953125 +145.5078125 +145.99609375 +146.484375 +146.97265625 +147.4609375 +147.94921875 +148.4375 +148.92578125 +149.4140625 +149.90234375 +150.390625 +150.87890625 +151.3671875 +151.85546875 +152.34375 +152.83203125 +153.3203125 +153.80859375 +154.296875 +154.78515625 +155.2734375 +155.76171875 +156.25 +156.73828125 +157.2265625 +157.71484375 +158.203125 +158.69140625 +159.1796875 +159.66796875 +160.15625 +160.64453125 +161.1328125 +161.62109375 +162.109375 +162.59765625 +163.0859375 +163.57421875 +164.0625 +164.55078125 +165.0390625 +165.52734375 +166.015625 +166.50390625 +166.9921875 +167.48046875 +167.96875 +168.45703125 +168.9453125 +169.43359375 +169.921875 +170.41015625 +170.8984375 +171.38671875 +171.875 +172.36328125 +172.8515625 +173.33984375 +173.828125 +174.31640625 +174.8046875 +175.29296875 +175.78125 +176.26953125 +176.7578125 +177.24609375 +177.734375 +178.22265625 +178.7109375 +179.19921875 +179.6875 +180.17578125 +180.6640625 +181.15234375 +181.640625 +182.12890625 +182.6171875 +183.10546875 +183.59375 +184.08203125 +184.5703125 +185.05859375 +185.546875 +186.03515625 +186.5234375 +187.01171875 +187.5 +187.98828125 +188.4765625 +188.96484375 +189.453125 +189.94140625 +190.4296875 +190.91796875 +191.40625 +191.89453125 +192.3828125 +192.87109375 +193.359375 +193.84765625 +194.3359375 +194.82421875 +195.3125 +195.80078125 +196.2890625 +196.77734375 +197.265625 +197.75390625 +198.2421875 +198.73046875 +199.21875 +199.70703125 +200.1953125 +200.68359375 +201.171875 +201.66015625 +202.1484375 +202.63671875 +203.125 +203.61328125 +204.1015625 +204.58984375 +205.078125 +205.56640625 +206.0546875 +206.54296875 +207.03125 +207.51953125 +208.0078125 +208.49609375 +208.984375 +209.47265625 +209.9609375 +210.44921875 +210.9375 +211.42578125 +211.9140625 +212.40234375 +212.890625 +213.37890625 +213.8671875 +214.35546875 +214.84375 +215.33203125 +215.8203125 +216.30859375 +216.796875 +217.28515625 +217.7734375 +218.26171875 +218.75 +219.23828125 +219.7265625 +220.21484375 +220.703125 +221.19140625 +221.6796875 +222.16796875 +222.65625 +223.14453125 +223.6328125 +224.12109375 +224.609375 +225.09765625 +225.5859375 +226.07421875 +226.5625 +227.05078125 +227.5390625 +228.02734375 +228.515625 +229.00390625 +229.4921875 +229.98046875 +230.46875 +230.95703125 +231.4453125 +231.93359375 +232.421875 +232.91015625 +233.3984375 +233.88671875 +234.375 +234.86328125 +235.3515625 +235.83984375 +236.328125 +236.81640625 +237.3046875 +237.79296875 +238.28125 +238.76953125 +239.2578125 +239.74609375 +240.234375 +240.72265625 +241.2109375 +241.69921875 +242.1875 +242.67578125 +243.1640625 +243.65234375 +244.140625 +244.62890625 +245.1171875 +245.60546875 +246.09375 +246.58203125 +247.0703125 +247.55859375 +248.046875 +248.53515625 +249.0234375 +249.51171875 +250.0 +250.48828125 +250.9765625 +251.46484375 +251.953125 +252.44140625 +252.9296875 +253.41796875 +253.90625 +254.39453125 +254.8828125 +255.37109375 +255.859375 +256.34765625 +256.8359375 +257.32421875 +257.8125 +258.30078125 +258.7890625 +259.27734375 +259.765625 +260.25390625 +260.7421875 +261.23046875 +261.71875 +262.20703125 +262.6953125 +263.18359375 +263.671875 +264.16015625 +264.6484375 +265.13671875 +265.625 +266.11328125 +266.6015625 +267.08984375 +267.578125 +268.06640625 +268.5546875 +269.04296875 +269.53125 +270.01953125 +270.5078125 +270.99609375 +271.484375 +271.97265625 +272.4609375 +272.94921875 +273.4375 +273.92578125 +274.4140625 +274.90234375 +275.390625 +275.87890625 +276.3671875 +276.85546875 +277.34375 +277.83203125 +278.3203125 +278.80859375 +279.296875 +279.78515625 +280.2734375 +280.76171875 +281.25 +281.73828125 +282.2265625 +282.71484375 +283.203125 +283.69140625 +284.1796875 +284.66796875 +285.15625 +285.64453125 +286.1328125 +286.62109375 +287.109375 +287.59765625 +288.0859375 +288.57421875 +289.0625 +289.55078125 +290.0390625 +290.52734375 +291.015625 +291.50390625 +291.9921875 +292.48046875 +292.96875 +293.45703125 +293.9453125 +294.43359375 +294.921875 +295.41015625 +295.8984375 +296.38671875 +296.875 +297.36328125 +297.8515625 +298.33984375 +298.828125 +299.31640625 +299.8046875 +300.29296875 +300.78125 +301.26953125 +301.7578125 +302.24609375 +302.734375 +303.22265625 +303.7109375 +304.19921875 +304.6875 +305.17578125 +305.6640625 +306.15234375 +306.640625 +307.12890625 +307.6171875 +308.10546875 +308.59375 +309.08203125 +309.5703125 +310.05859375 +310.546875 +311.03515625 +311.5234375 +312.01171875 +312.5 +312.98828125 +313.4765625 +313.96484375 +314.453125 +314.94140625 +315.4296875 +315.91796875 +316.40625 +316.89453125 +317.3828125 +317.87109375 +318.359375 +318.84765625 +319.3359375 +319.82421875 +320.3125 +320.80078125 +321.2890625 +321.77734375 +322.265625 +322.75390625 +323.2421875 +323.73046875 +324.21875 +324.70703125 +325.1953125 +325.68359375 +326.171875 +326.66015625 +327.1484375 +327.63671875 +328.125 +328.61328125 +329.1015625 +329.58984375 +330.078125 +330.56640625 +331.0546875 +331.54296875 +332.03125 +332.51953125 +333.0078125 +333.49609375 +333.984375 +334.47265625 +334.9609375 +335.44921875 +335.9375 +336.42578125 +336.9140625 +337.40234375 +337.890625 +338.37890625 +338.8671875 +339.35546875 +339.84375 +340.33203125 +340.8203125 +341.30859375 +341.796875 +342.28515625 +342.7734375 +343.26171875 +343.75 +344.23828125 +344.7265625 +345.21484375 +345.703125 +346.19140625 +346.6796875 +347.16796875 +347.65625 +348.14453125 +348.6328125 +349.12109375 +349.609375 +350.09765625 +350.5859375 +351.07421875 +351.5625 +352.05078125 +352.5390625 +353.02734375 +353.515625 +354.00390625 +354.4921875 +354.98046875 +355.46875 +355.95703125 +356.4453125 +356.93359375 +357.421875 +357.91015625 +358.3984375 +358.88671875 +359.375 +359.86328125 +360.3515625 +360.83984375 +361.328125 +361.81640625 +362.3046875 +362.79296875 +363.28125 +363.76953125 +364.2578125 +364.74609375 +365.234375 +365.72265625 +366.2109375 +366.69921875 +367.1875 +367.67578125 +368.1640625 +368.65234375 +369.140625 +369.62890625 +370.1171875 +370.60546875 +371.09375 +371.58203125 +372.0703125 +372.55859375 +373.046875 +373.53515625 +374.0234375 +374.51171875 +375.0 +375.48828125 +375.9765625 +376.46484375 +376.953125 +377.44140625 +377.9296875 +378.41796875 +378.90625 +379.39453125 +379.8828125 +380.37109375 +380.859375 +381.34765625 +381.8359375 +382.32421875 +382.8125 +383.30078125 +383.7890625 +384.27734375 +384.765625 +385.25390625 +385.7421875 +386.23046875 +386.71875 +387.20703125 +387.6953125 +388.18359375 +388.671875 +389.16015625 +389.6484375 +390.13671875 +390.625 +391.11328125 +391.6015625 +392.08984375 +392.578125 +393.06640625 +393.5546875 +394.04296875 +394.53125 +395.01953125 +395.5078125 +395.99609375 +396.484375 +396.97265625 +397.4609375 +397.94921875 +398.4375 +398.92578125 +399.4140625 +399.90234375 +400.390625 +400.87890625 +401.3671875 +401.85546875 +402.34375 +402.83203125 +403.3203125 +403.80859375 +404.296875 +404.78515625 +405.2734375 +405.76171875 +406.25 +406.73828125 +407.2265625 +407.71484375 +408.203125 +408.69140625 +409.1796875 +409.66796875 +410.15625 +410.64453125 +411.1328125 +411.62109375 +412.109375 +412.59765625 +413.0859375 +413.57421875 +414.0625 +414.55078125 +415.0390625 +415.52734375 +416.015625 +416.50390625 +416.9921875 +417.48046875 +417.96875 +418.45703125 +418.9453125 +419.43359375 +419.921875 +420.41015625 +420.8984375 +421.38671875 +421.875 +422.36328125 +422.8515625 +423.33984375 +423.828125 +424.31640625 +424.8046875 +425.29296875 +425.78125 +426.26953125 +426.7578125 +427.24609375 +427.734375 +428.22265625 +428.7109375 +429.19921875 +429.6875 +430.17578125 +430.6640625 +431.15234375 +431.640625 +432.12890625 +432.6171875 +433.10546875 +433.59375 +434.08203125 +434.5703125 +435.05859375 +435.546875 +436.03515625 +436.5234375 +437.01171875 +437.5 +437.98828125 +438.4765625 +438.96484375 +439.453125 +439.94140625 +440.4296875 +440.91796875 +441.40625 +441.89453125 +442.3828125 +442.87109375 +443.359375 +443.84765625 +444.3359375 +444.82421875 +445.3125 +445.80078125 +446.2890625 +446.77734375 +447.265625 +447.75390625 +448.2421875 +448.73046875 +449.21875 +449.70703125 +450.1953125 +450.68359375 +451.171875 +451.66015625 +452.1484375 +452.63671875 +453.125 +453.61328125 +454.1015625 +454.58984375 +455.078125 +455.56640625 +456.0546875 +456.54296875 +457.03125 +457.51953125 +458.0078125 +458.49609375 +458.984375 +459.47265625 +459.9609375 +460.44921875 +460.9375 +461.42578125 +461.9140625 +462.40234375 +462.890625 +463.37890625 +463.8671875 +464.35546875 +464.84375 +465.33203125 +465.8203125 +466.30859375 +466.796875 +467.28515625 +467.7734375 +468.26171875 +468.75 +469.23828125 +469.7265625 +470.21484375 +470.703125 +471.19140625 +471.6796875 +472.16796875 +472.65625 +473.14453125 +473.6328125 +474.12109375 +474.609375 +475.09765625 +475.5859375 +476.07421875 +476.5625 +477.05078125 +477.5390625 +478.02734375 +478.515625 +479.00390625 +479.4921875 +479.98046875 +480.46875 +480.95703125 +481.4453125 +481.93359375 +482.421875 +482.91015625 +483.3984375 +483.88671875 +484.375 +484.86328125 +485.3515625 +485.83984375 +486.328125 +486.81640625 +487.3046875 +487.79296875 +488.28125 +488.76953125 +489.2578125 +489.74609375 +490.234375 +490.72265625 +491.2109375 +491.69921875 +492.1875 +492.67578125 +493.1640625 +493.65234375 +494.140625 +494.62890625 +495.1171875 +495.60546875 +496.09375 +496.58203125 +497.0703125 +497.55859375 +498.046875 +498.53515625 +499.0234375 +499.51171875 +500.0 +500.48828125 +500.9765625 +501.46484375 +501.953125 +502.44140625 +502.9296875 +503.41796875 +503.90625 +504.39453125 +504.8828125 +505.37109375 +505.859375 +506.34765625 +506.8359375 +507.32421875 +507.8125 +508.30078125 +508.7890625 +509.27734375 +509.765625 +510.25390625 +510.7421875 +511.23046875 +511.71875 +512.20703125 +512.6953125 +513.18359375 +513.671875 +514.16015625 +514.6484375 +515.13671875 +515.625 +516.11328125 +516.6015625 +517.08984375 +517.578125 +518.06640625 +518.5546875 +519.04296875 +519.53125 +520.01953125 +520.5078125 +520.99609375 +521.484375 +521.97265625 +522.4609375 +522.94921875 +523.4375 +523.92578125 +524.4140625 +524.90234375 +525.390625 +525.87890625 +526.3671875 +526.85546875 +527.34375 +527.83203125 +528.3203125 +528.80859375 +529.296875 +529.78515625 +530.2734375 +530.76171875 +531.25 +531.73828125 +532.2265625 +532.71484375 +533.203125 +533.69140625 +534.1796875 +534.66796875 +535.15625 +535.64453125 +536.1328125 +536.62109375 +537.109375 +537.59765625 +538.0859375 +538.57421875 +539.0625 +539.55078125 +540.0390625 +540.52734375 +541.015625 +541.50390625 +541.9921875 +542.48046875 +542.96875 +543.45703125 +543.9453125 +544.43359375 +544.921875 +545.41015625 +545.8984375 +546.38671875 +546.875 +547.36328125 +547.8515625 +548.33984375 +548.828125 +549.31640625 +549.8046875 +550.29296875 +550.78125 +551.26953125 +551.7578125 +552.24609375 +552.734375 +553.22265625 +553.7109375 +554.19921875 +554.6875 +555.17578125 +555.6640625 +556.15234375 +556.640625 +557.12890625 +557.6171875 +558.10546875 +558.59375 +559.08203125 +559.5703125 +560.05859375 +560.546875 +561.03515625 +561.5234375 +562.01171875 +562.5 +562.98828125 +563.4765625 +563.96484375 +564.453125 +564.94140625 +565.4296875 +565.91796875 +566.40625 +566.89453125 +567.3828125 +567.87109375 +568.359375 +568.84765625 +569.3359375 +569.82421875 +570.3125 +570.80078125 +571.2890625 +571.77734375 +572.265625 +572.75390625 +573.2421875 +573.73046875 +574.21875 +574.70703125 +575.1953125 +575.68359375 +576.171875 +576.66015625 +577.1484375 +577.63671875 +578.125 +578.61328125 +579.1015625 +579.58984375 +580.078125 +580.56640625 +581.0546875 +581.54296875 +582.03125 +582.51953125 +583.0078125 +583.49609375 +583.984375 +584.47265625 +584.9609375 +585.44921875 +585.9375 +586.42578125 +586.9140625 +587.40234375 +587.890625 +588.37890625 +588.8671875 +589.35546875 +589.84375 +590.33203125 +590.8203125 +591.30859375 +591.796875 +592.28515625 +592.7734375 +593.26171875 +593.75 +594.23828125 +594.7265625 +595.21484375 +595.703125 +596.19140625 +596.6796875 +597.16796875 +597.65625 +598.14453125 +598.6328125 +599.12109375 +599.609375 +600.09765625 +600.5859375 +601.07421875 +601.5625 +602.05078125 +602.5390625 +603.02734375 +603.515625 +604.00390625 +604.4921875 +604.98046875 +605.46875 +605.95703125 +606.4453125 +606.93359375 +607.421875 +607.91015625 +608.3984375 +608.88671875 +609.375 +609.86328125 +610.3515625 +610.83984375 +611.328125 +611.81640625 +612.3046875 +612.79296875 +613.28125 +613.76953125 +614.2578125 +614.74609375 +615.234375 +615.72265625 +616.2109375 +616.69921875 +617.1875 +617.67578125 +618.1640625 +618.65234375 +619.140625 +619.62890625 +620.1171875 +620.60546875 +621.09375 +621.58203125 +622.0703125 +622.55859375 +623.046875 +623.53515625 +624.0234375 +624.51171875 +625.0 +625.48828125 +625.9765625 +626.46484375 +626.953125 +627.44140625 +627.9296875 +628.41796875 +628.90625 +629.39453125 +629.8828125 +630.37109375 +630.859375 +631.34765625 +631.8359375 +632.32421875 +632.8125 +633.30078125 +633.7890625 +634.27734375 +634.765625 +635.25390625 +635.7421875 +636.23046875 +636.71875 +637.20703125 +637.6953125 +638.18359375 +638.671875 +639.16015625 +639.6484375 +640.13671875 +640.625 +641.11328125 +641.6015625 +642.08984375 +642.578125 +643.06640625 +643.5546875 +644.04296875 +644.53125 +645.01953125 +645.5078125 +645.99609375 +646.484375 +646.97265625 +647.4609375 +647.94921875 +648.4375 +648.92578125 +649.4140625 +649.90234375 +650.390625 +650.87890625 +651.3671875 +651.85546875 +652.34375 +652.83203125 +653.3203125 +653.80859375 +654.296875 +654.78515625 +655.2734375 +655.76171875 +656.25 +656.73828125 +657.2265625 +657.71484375 +658.203125 +658.69140625 +659.1796875 +659.66796875 +660.15625 +660.64453125 +661.1328125 +661.62109375 +662.109375 +662.59765625 +663.0859375 +663.57421875 +664.0625 +664.55078125 +665.0390625 +665.52734375 +666.015625 +666.50390625 +666.9921875 +667.48046875 +667.96875 +668.45703125 +668.9453125 +669.43359375 +669.921875 +670.41015625 +670.8984375 +671.38671875 +671.875 +672.36328125 +672.8515625 +673.33984375 +673.828125 +674.31640625 +674.8046875 +675.29296875 +675.78125 +676.26953125 +676.7578125 +677.24609375 +677.734375 +678.22265625 +678.7109375 +679.19921875 +679.6875 +680.17578125 +680.6640625 +681.15234375 +681.640625 +682.12890625 +682.6171875 +683.10546875 +683.59375 +684.08203125 +684.5703125 +685.05859375 +685.546875 +686.03515625 +686.5234375 +687.01171875 +687.5 +687.98828125 +688.4765625 +688.96484375 +689.453125 +689.94140625 +690.4296875 +690.91796875 +691.40625 +691.89453125 +692.3828125 +692.87109375 +693.359375 +693.84765625 +694.3359375 +694.82421875 +695.3125 +695.80078125 +696.2890625 +696.77734375 +697.265625 +697.75390625 +698.2421875 +698.73046875 +699.21875 +699.70703125 +700.1953125 +700.68359375 +701.171875 +701.66015625 +702.1484375 +702.63671875 +703.125 +703.61328125 +704.1015625 +704.58984375 +705.078125 +705.56640625 +706.0546875 +706.54296875 +707.03125 +707.51953125 +708.0078125 +708.49609375 +708.984375 +709.47265625 +709.9609375 +710.44921875 +710.9375 +711.42578125 +711.9140625 +712.40234375 +712.890625 +713.37890625 +713.8671875 +714.35546875 +714.84375 +715.33203125 +715.8203125 +716.30859375 +716.796875 +717.28515625 +717.7734375 +718.26171875 +718.75 +719.23828125 +719.7265625 +720.21484375 +720.703125 +721.19140625 +721.6796875 +722.16796875 +722.65625 +723.14453125 +723.6328125 +724.12109375 +724.609375 +725.09765625 +725.5859375 +726.07421875 +726.5625 +727.05078125 +727.5390625 +728.02734375 +728.515625 +729.00390625 +729.4921875 +729.98046875 +730.46875 +730.95703125 +731.4453125 +731.93359375 +732.421875 +732.91015625 +733.3984375 +733.88671875 +734.375 +734.86328125 +735.3515625 +735.83984375 +736.328125 +736.81640625 +737.3046875 +737.79296875 +738.28125 +738.76953125 +739.2578125 +739.74609375 +740.234375 +740.72265625 +741.2109375 +741.69921875 +742.1875 +742.67578125 +743.1640625 +743.65234375 +744.140625 +744.62890625 +745.1171875 +745.60546875 +746.09375 +746.58203125 +747.0703125 +747.55859375 +748.046875 +748.53515625 +749.0234375 +749.51171875 +750.0 +750.48828125 +750.9765625 +751.46484375 +751.953125 +752.44140625 +752.9296875 +753.41796875 +753.90625 +754.39453125 +754.8828125 +755.37109375 +755.859375 +756.34765625 +756.8359375 +757.32421875 +757.8125 +758.30078125 +758.7890625 +759.27734375 +759.765625 +760.25390625 +760.7421875 +761.23046875 +761.71875 +762.20703125 +762.6953125 +763.18359375 +763.671875 +764.16015625 +764.6484375 +765.13671875 +765.625 +766.11328125 +766.6015625 +767.08984375 +767.578125 +768.06640625 +768.5546875 +769.04296875 +769.53125 +770.01953125 +770.5078125 +770.99609375 +771.484375 +771.97265625 +772.4609375 +772.94921875 +773.4375 +773.92578125 +774.4140625 +774.90234375 +775.390625 +775.87890625 +776.3671875 +776.85546875 +777.34375 +777.83203125 +778.3203125 +778.80859375 +779.296875 +779.78515625 +780.2734375 +780.76171875 +781.25 +781.73828125 +782.2265625 +782.71484375 +783.203125 +783.69140625 +784.1796875 +784.66796875 +785.15625 +785.64453125 +786.1328125 +786.62109375 +787.109375 +787.59765625 +788.0859375 +788.57421875 +789.0625 +789.55078125 +790.0390625 +790.52734375 +791.015625 +791.50390625 +791.9921875 +792.48046875 +792.96875 +793.45703125 +793.9453125 +794.43359375 +794.921875 +795.41015625 +795.8984375 +796.38671875 +796.875 +797.36328125 +797.8515625 +798.33984375 +798.828125 +799.31640625 +799.8046875 +800.29296875 +800.78125 +801.26953125 +801.7578125 +802.24609375 +802.734375 +803.22265625 +803.7109375 +804.19921875 +804.6875 +805.17578125 +805.6640625 +806.15234375 +806.640625 +807.12890625 +807.6171875 +808.10546875 +808.59375 +809.08203125 +809.5703125 +810.05859375 +810.546875 +811.03515625 +811.5234375 +812.01171875 +812.5 +812.98828125 +813.4765625 +813.96484375 +814.453125 +814.94140625 +815.4296875 +815.91796875 +816.40625 +816.89453125 +817.3828125 +817.87109375 +818.359375 +818.84765625 +819.3359375 +819.82421875 +820.3125 +820.80078125 +821.2890625 +821.77734375 +822.265625 +822.75390625 +823.2421875 +823.73046875 +824.21875 +824.70703125 +825.1953125 +825.68359375 +826.171875 +826.66015625 +827.1484375 +827.63671875 +828.125 +828.61328125 +829.1015625 +829.58984375 +830.078125 +830.56640625 +831.0546875 +831.54296875 +832.03125 +832.51953125 +833.0078125 +833.49609375 +833.984375 +834.47265625 +834.9609375 +835.44921875 +835.9375 +836.42578125 +836.9140625 +837.40234375 +837.890625 +838.37890625 +838.8671875 +839.35546875 +839.84375 +840.33203125 +840.8203125 +841.30859375 +841.796875 +842.28515625 +842.7734375 +843.26171875 +843.75 +844.23828125 +844.7265625 +845.21484375 +845.703125 +846.19140625 +846.6796875 +847.16796875 +847.65625 +848.14453125 +848.6328125 +849.12109375 +849.609375 +850.09765625 +850.5859375 +851.07421875 +851.5625 +852.05078125 +852.5390625 +853.02734375 +853.515625 +854.00390625 +854.4921875 +854.98046875 +855.46875 +855.95703125 +856.4453125 +856.93359375 +857.421875 +857.91015625 +858.3984375 +858.88671875 +859.375 +859.86328125 +860.3515625 +860.83984375 +861.328125 +861.81640625 +862.3046875 +862.79296875 +863.28125 +863.76953125 +864.2578125 +864.74609375 +865.234375 +865.72265625 +866.2109375 +866.69921875 +867.1875 +867.67578125 +868.1640625 +868.65234375 +869.140625 +869.62890625 +870.1171875 +870.60546875 +871.09375 +871.58203125 +872.0703125 +872.55859375 +873.046875 +873.53515625 +874.0234375 +874.51171875 +875.0 +875.48828125 +875.9765625 +876.46484375 +876.953125 +877.44140625 +877.9296875 +878.41796875 +878.90625 +879.39453125 +879.8828125 +880.37109375 +880.859375 +881.34765625 +881.8359375 +882.32421875 +882.8125 +883.30078125 +883.7890625 +884.27734375 +884.765625 +885.25390625 +885.7421875 +886.23046875 +886.71875 +887.20703125 +887.6953125 +888.18359375 +888.671875 +889.16015625 +889.6484375 +890.13671875 +890.625 +891.11328125 +891.6015625 +892.08984375 +892.578125 +893.06640625 +893.5546875 +894.04296875 +894.53125 +895.01953125 +895.5078125 +895.99609375 +896.484375 +896.97265625 +897.4609375 +897.94921875 +898.4375 +898.92578125 +899.4140625 +899.90234375 +900.390625 +900.87890625 +901.3671875 +901.85546875 +902.34375 +902.83203125 +903.3203125 +903.80859375 +904.296875 +904.78515625 +905.2734375 +905.76171875 +906.25 +906.73828125 +907.2265625 +907.71484375 +908.203125 +908.69140625 +909.1796875 +909.66796875 +910.15625 +910.64453125 +911.1328125 +911.62109375 +912.109375 +912.59765625 +913.0859375 +913.57421875 +914.0625 +914.55078125 +915.0390625 +915.52734375 +916.015625 +916.50390625 +916.9921875 +917.48046875 +917.96875 +918.45703125 +918.9453125 +919.43359375 +919.921875 +920.41015625 +920.8984375 +921.38671875 +921.875 +922.36328125 +922.8515625 +923.33984375 +923.828125 +924.31640625 +924.8046875 +925.29296875 +925.78125 +926.26953125 +926.7578125 +927.24609375 +927.734375 +928.22265625 +928.7109375 +929.19921875 +929.6875 +930.17578125 +930.6640625 +931.15234375 +931.640625 +932.12890625 +932.6171875 +933.10546875 +933.59375 +934.08203125 +934.5703125 +935.05859375 +935.546875 +936.03515625 +936.5234375 +937.01171875 +937.5 +937.98828125 +938.4765625 +938.96484375 +939.453125 +939.94140625 +940.4296875 +940.91796875 +941.40625 +941.89453125 +942.3828125 +942.87109375 +943.359375 +943.84765625 +944.3359375 +944.82421875 +945.3125 +945.80078125 +946.2890625 +946.77734375 +947.265625 +947.75390625 +948.2421875 +948.73046875 +949.21875 +949.70703125 +950.1953125 +950.68359375 +951.171875 +951.66015625 +952.1484375 +952.63671875 +953.125 +953.61328125 +954.1015625 +954.58984375 +955.078125 +955.56640625 +956.0546875 +956.54296875 +957.03125 +957.51953125 +958.0078125 +958.49609375 +958.984375 +959.47265625 +959.9609375 +960.44921875 +960.9375 +961.42578125 +961.9140625 +962.40234375 +962.890625 +963.37890625 +963.8671875 +964.35546875 +964.84375 +965.33203125 +965.8203125 +966.30859375 +966.796875 +967.28515625 +967.7734375 +968.26171875 +968.75 +969.23828125 +969.7265625 +970.21484375 +970.703125 +971.19140625 +971.6796875 +972.16796875 +972.65625 +973.14453125 +973.6328125 +974.12109375 +974.609375 +975.09765625 +975.5859375 +976.07421875 +976.5625 +977.05078125 +977.5390625 +978.02734375 +978.515625 +979.00390625 +979.4921875 +979.98046875 +980.46875 +980.95703125 +981.4453125 +981.93359375 +982.421875 +982.91015625 +983.3984375 +983.88671875 +984.375 +984.86328125 +985.3515625 +985.83984375 +986.328125 +986.81640625 +987.3046875 +987.79296875 +988.28125 +988.76953125 +989.2578125 +989.74609375 +990.234375 +990.72265625 +991.2109375 +991.69921875 +992.1875 +992.67578125 +993.1640625 +993.65234375 +994.140625 +994.62890625 +995.1171875 +995.60546875 +996.09375 +996.58203125 +997.0703125 +997.55859375 +998.046875 +998.53515625 +999.0234375 +999.51171875 diff --git a/test/data/pmtm_pxx.txt b/test/data/pmtm_pxx.txt new file mode 100644 index 000000000..6e2ea85bc --- /dev/null +++ b/test/data/pmtm_pxx.txt @@ -0,0 +1,1025 @@ +0.0010212840623964501 +0.002024574195394269 +0.001989822564981214 +0.001667285811316307 +0.001271428674648794 +0.0005357970929908455 +0.0007964089524379447 +0.0009318148931523564 +0.0011268684130036272 +0.0011042338349326309 +0.0013317150583255196 +0.0017670576615336404 +0.0021542301452707234 +0.002003612548175252 +0.0019886040936991714 +0.0019435500411312933 +0.0019808659918382713 +0.002365568545853578 +0.001954781790399824 +0.0018777147466346048 +0.0017372722045909267 +0.002709224226762202 +0.0032312040350730223 +0.003602251620971264 +0.004199365358997943 +0.0038991670171027774 +0.003901431099536945 +0.003175204970294627 +0.003062103562342425 +0.002715638223012326 +0.0024172080709160336 +0.0021419775853147934 +0.0015349365582112543 +0.0014360396332456567 +0.0022588002811723446 +0.002185719948728578 +0.0020347249220151204 +0.002252328145455655 +0.002729122842975552 +0.002769455691944606 +0.0029680911753834816 +0.0027690347051542302 +0.0019426026879111188 +0.002082562832259863 +0.0016296888447755288 +0.0014103924144586862 +0.0011226366684185588 +0.0007605467691014341 +0.0009629997698764896 +0.0009606223468805916 +0.0012490948940693134 +0.0010274053054336839 +0.0010025344816200297 +0.001103293030141405 +0.0013004610992905679 +0.0015849144492811227 +0.001351789075089836 +0.0012850143625846608 +0.000801306014343277 +0.0009379306978774492 +0.0011409809897301492 +0.001100984933051231 +0.001119171668241557 +0.0013518282034690932 +0.0014371237051345978 +0.0015396666466382229 +0.0014634258804273657 +0.0017239990335845025 +0.00204051654307295 +0.002396593968502446 +0.002099003086583613 +0.0018338498976247061 +0.001856004086541519 +0.0017577073451750865 +0.002266577358363456 +0.0023400066306589005 +0.0022091400950215822 +0.00171146394053754 +0.0018774512252689249 +0.0026485518873737394 +0.0027821075706731097 +0.0037846628447799967 +0.0038597389677297624 +0.003681208629774061 +0.0041397518431508 +0.004281943490031353 +0.00407672730255364 +0.0042917196083032145 +0.004006958622751188 +0.0014201560943946756 +0.001715102636134811 +0.0015015430241210061 +0.001512984551691416 +0.0015880375508538361 +0.0012292306113768467 +0.0020989365971776333 +0.0019591568524755867 +0.002054994297197899 +0.0027096510603298193 +0.00268322883779619 +0.0027709682627851187 +0.002778949779513938 +0.0025161474520981066 +0.0015481646966660804 +0.0016219670096427048 +0.002020114659367345 +0.00144065774463038 +0.0016112554807562406 +0.0019534478566474254 +0.0020192857848536894 +0.002064960127171173 +0.0023819215821337236 +0.002293555944226718 +0.0020996164505824406 +0.0015363292356627373 +0.001771546052785761 +0.001421474870979462 +0.0019201063528093108 +0.0025040107441869686 +0.002290732353411184 +0.00238412806264249 +0.0024625143032425724 +0.002043599170667254 +0.0019359781707485976 +0.0020084300353476023 +0.0014258936111456741 +0.00145645493920058 +0.0016827082916254991 +0.002123664833989833 +0.0023815940745418743 +0.0025743778505616234 +0.003797258983121598 +0.0038961900142017057 +0.004055747985535901 +0.0034590626084778655 +0.0033745910712877896 +0.0025634757779493824 +0.002766808495795222 +0.001540530299355128 +0.0011042193403954944 +0.0010751609845079616 +0.0015022152703938535 +0.0015474137627318895 +0.0018689982413334048 +0.0025114488199995087 +0.002396649112794823 +0.002361149241669925 +0.002852073751886947 +0.002809725372441426 +0.0017590877224238995 +0.0018926255116478604 +0.0018060956048448784 +0.0014911503345740765 +0.0022374063715413757 +0.0022104733454051512 +0.0018201756221235639 +0.0019412275917615577 +0.00279290465639514 +0.0026496079961366163 +0.0026124169375659856 +0.002823148642671603 +0.002086726698857913 +0.0019325959939938168 +0.002028425647801108 +0.0012404580363733222 +0.0009321389196551356 +0.0015273277165377638 +0.001375983484193957 +0.0013937255787996661 +0.0023983184997906242 +0.0025761115436398582 +0.0025883776502506977 +0.0027609614675949083 +0.0031443098707883113 +0.002831759182258551 +0.0027101218281584956 +0.0033486403965727616 +0.0023318533154658002 +0.002724768605589041 +0.0017681699695074752 +0.003211628860870998 +0.002642958208460669 +0.0027830643816519917 +0.002819093874553851 +0.0020541404467837076 +0.002137134151194807 +0.0023636830461407667 +0.0021983519116138715 +0.0025932172086536626 +0.0028442378837961945 +0.0027165240240292444 +0.002327818046224664 +0.0023700030119475778 +0.0015557431807791263 +0.0007878182404340384 +0.0006188703924402113 +0.00041790065183409345 +0.0011221244959322848 +0.001347932863824925 +0.0022136010496098145 +0.003186357575843313 +0.06549388634333743 +0.11975258161914884 +0.12529719723782254 +0.12987362674160047 +0.12994421094195135 +0.13053713232570163 +0.1292894560131528 +0.1270100077896899 +0.012552929201780371 +0.0037537751680317218 +0.004313276942149164 +0.0037616796067728797 +0.0038186797337119494 +0.003438325577784792 +0.002851881297671961 +0.0029267379252618363 +0.00199163388243185 +0.0018072933681588777 +0.00108886988538191 +0.0014297972904287418 +0.0012880151981752661 +0.0011516270975026662 +0.0011101292061841028 +0.0017848297832118213 +0.0016895584237647534 +0.0010253899950820365 +0.0012324867636544776 +0.0019930616507929143 +0.0019129126343736542 +0.0018749620407688481 +0.0024260827662990502 +0.002081948812354809 +0.002789525772195836 +0.002618781171541498 +0.003416362956758391 +0.0028570632502207213 +0.0041109755390582 +0.0039199229477089705 +0.0034331760229508674 +0.003456184373793998 +0.003164692462042758 +0.003048794422632483 +0.0025538026287899576 +0.0022213764572063728 +0.0012273636185753092 +0.0011965965041745598 +0.0013048442871902905 +0.0011984542192986904 +0.0013146981480088435 +0.0007798340051074215 +0.0008628345553167532 +0.0009009424085669357 +0.0008971666026675714 +0.0009369369956526909 +0.0017988234485041552 +0.0014367668098798408 +0.0014018537563709316 +0.0013590474763244822 +0.0014351050682162188 +0.0016344282109052226 +0.0015900357054235684 +0.001348343323673871 +0.001174515693527234 +0.0016736720663901557 +0.0020142627472967906 +0.0020314173748469423 +0.0019433163587144928 +0.0027176120336699747 +0.0028376279632547395 +0.0029340279242213675 +0.0020055944176218415 +0.0016321126450397642 +0.0015669573340252744 +0.0018033110540807869 +0.0019663232519552066 +0.0020925915979652554 +0.0024662164945212918 +0.0026123205758213984 +0.0027195532721346646 +0.0029599382868378704 +0.0030359151067547835 +0.0030340542632761123 +0.0024480957985407704 +0.0023905952058927097 +0.0016463523763555624 +0.0024411845320382363 +0.0025118897738727465 +0.0024636876715406564 +0.002471816317300813 +0.002208515679473524 +0.0019605111420333133 +0.002834549188754664 +0.002654795862343989 +0.00192609521772867 +0.0017699141950543904 +0.0018234610881451999 +0.0019634530476418262 +0.002885160994419151 +0.0027292352158477407 +0.002208047794681599 +0.0023541646666631693 +0.0021173330233506867 +0.0023273994910081863 +0.0021925831728246085 +0.0012372745998919332 +0.0013406193509869324 +0.0014161880794485025 +0.0014628572316182022 +0.001479121964277687 +0.0016145605110361864 +0.001847682800314794 +0.0016476952388298665 +0.001617494759535939 +0.001418825952798698 +0.001866639894389003 +0.0016739884334093368 +0.0017437002271994224 +0.0014051249874116383 +0.001409824974386788 +0.0014172628415391958 +0.0011742562020060378 +0.0018717330722154268 +0.0016672249213010855 +0.0015393739746179427 +0.0014003383791049674 +0.0015380746562920018 +0.00202994891728778 +0.0019077365193149267 +0.0019012042780434564 +0.001712127687004054 +0.0017676788268136134 +0.0016136799159499951 +0.0017003381077935966 +0.0015490134042839547 +0.0009161860734082061 +0.001250128010892071 +0.0017402628786463946 +0.002571974232564553 +0.002630463668431215 +0.0026905250662068014 +0.002310281004084867 +0.002481263660919892 +0.002584605114976707 +0.0019325113630949368 +0.0017299769904094845 +0.0020009481418820124 +0.0021949662316085193 +0.002221985988499941 +0.0033942126050972472 +0.003248700631570018 +0.002965947864942502 +0.0028473791874002704 +0.0029486122597150682 +0.002164960390995279 +0.0021171699731716495 +0.0016231799113439567 +0.0014711920693534688 +0.0015624494825250326 +0.0015118406297993288 +0.0017186496698060286 +0.0020285754754467223 +0.0020384730253008446 +0.0018192915869857643 +0.0018918128539946646 +0.001613040020620637 +0.001698156169070179 +0.0018218701420126865 +0.0010168322381859925 +0.0010748734993835808 +0.0020960085618167454 +0.0033575166033141183 +0.0034019080433209926 +0.0035127762423141817 +0.003342317795817774 +0.003555012326462065 +0.0035176225673413625 +0.0034276231396708464 +0.002580329718219321 +0.00146657840909536 +0.0015161466127761429 +0.0014834846089591847 +0.0020426958677322196 +0.002040867789851429 +0.002237858238061883 +0.0019663177122598552 +0.0023178849788560896 +0.0023472534302881533 +0.002244978732906003 +0.0015094913362034483 +0.0017102879936102308 +0.0016848427915300656 +0.0017512289529073612 +0.0019326917121390268 +0.0019004876385460658 +0.0018846702008259793 +0.0021070707804535997 +0.0019245847734262146 +0.0021053202758138183 +0.001224912058136424 +0.0012321630051133803 +0.001405667609128664 +0.001681582331160492 +0.0012199066185046288 +0.0013198914714039837 +0.0014438285614450197 +0.0011700982508952643 +0.0015417664027956271 +0.0015992582395924144 +0.0013065676819100668 +0.001076277108433377 +0.0012976540481879318 +0.0010702922906116157 +0.001400724411599138 +0.001252918853780528 +0.0014294357699886325 +0.002013342787579 +0.002202792281011051 +0.002306381965382747 +0.0021031820960733983 +0.002175238690916522 +0.00203995248302124 +0.0018779458073920072 +0.0019176376676484108 +0.0016237640196069775 +0.0014997804294435758 +0.001327878477187846 +0.002349711154712758 +0.0016295659348287684 +0.001923776935280042 +0.001868181498571951 +0.001860174636031727 +0.002110178100457018 +0.0024717753726841486 +0.0022305891392474238 +0.0014703189236093936 +0.0014440671346516694 +0.0013602580601178552 +0.001400099473448384 +0.001661861626247916 +0.001548160425195521 +0.0017598416520401968 +0.0017693455583035719 +0.0018170882949523819 +0.0018265500611745456 +0.001394936188040822 +0.0012316826421717886 +0.0009473524902008409 +0.0006481345876670382 +0.0004891112201790936 +0.0006346598859993087 +0.0006467714833632554 +0.0012606795038714493 +0.0014078710059918348 +0.00207991599014935 +0.001978708154775182 +0.00226367547985912 +0.0022353044957344336 +0.002040633187557012 +0.0020291063277145267 +0.0016888794352971546 +0.0011987238177090715 +0.0012360373888516542 +0.0013418726550032997 +0.001162269631926609 +0.0020539071471605474 +0.002037300237316222 +0.002051672552231992 +0.0019916897432146535 +0.0020240506797702625 +0.0020130961186137484 +0.0017914315718135943 +0.0017466120259583035 +0.0015172229016040613 +0.0011199528943898476 +0.0011918277022060274 +0.0012058359289024375 +0.0013662430102228118 +0.0015281534565671528 +0.001507086044350822 +0.0017648158067851722 +0.0016293754780125232 +0.001704245239378863 +0.0016647908029705516 +0.001462665728938213 +0.001511996814906158 +0.0011540858726311234 +0.0010477122046125872 +0.0009825301912104712 +0.0019655993285289724 +0.0021480997556770137 +0.0022147832192677378 +0.0021884427775184113 +0.0021288208899703015 +0.002341303749990536 +0.0021105303788928097 +0.0022438491586281545 +0.0019877795386971904 +0.002080598499289026 +0.0020963658951098072 +0.002121433474842941 +0.002061278549543846 +0.0024089775857764123 +0.0031226172618949504 +0.001979821050880481 +0.0018986476511915454 +0.001995837873398546 +0.0019439802223800429 +0.0028564099978394698 +0.002742230053908759 +0.00227722687088477 +0.002143297204282081 +0.0021092387967845145 +0.001791832396156592 +0.0019458938327206459 +0.0016669143470419386 +0.0012315506309754577 +0.002194054375856007 +0.0022482004228886196 +0.002576009144525453 +0.00320528078529867 +0.0031601683363122104 +0.003176256850981844 +0.003205311944501439 +0.003206994494967349 +0.002693449081193468 +0.0024558214376509476 +0.002356721112143083 +0.0017225983621532773 +0.0014896294655161893 +0.0015332370185422908 +0.0017345750565899787 +0.0016622910070450416 +0.0015633851375357717 +0.001882330847554932 +0.0019075090035610687 +0.0015683262549529642 +0.0012988436859424637 +0.001941187006243121 +0.0018296802388001801 +0.0017274329298520618 +0.0017205613138400813 +0.0013068200762599506 +0.0012071268607381522 +0.002015029509985049 +0.0019354116708940334 +0.0012273307088702483 +0.0015332095705527264 +0.0019608180077547977 +0.0020605446979174657 +0.002729337669054211 +0.0022238535415337805 +0.002203058014887173 +0.0022012216068004716 +0.002111450890495622 +0.0018141477197271604 +0.00170727863273363 +0.0010182817824523336 +0.0011505540520848209 +0.001162041580067432 +0.0017699592779999106 +0.0017881140420856485 +0.0025740584433339795 +0.002777668168757553 +0.002601512541220063 +0.0022428827583686377 +0.0023731644055719437 +0.0020715261011560043 +0.0017227486918517355 +0.0017950815391040637 +0.0009292649120004032 +0.0010484607485691424 +0.0013035647847916701 +0.0015001753929751995 +0.0018327553981814834 +0.0019501616243084066 +0.0017999579992038935 +0.0016354725399801017 +0.0018388675199150055 +0.0021706224122299803 +0.0021859389823627824 +0.002153428774036853 +0.0019368534343694622 +0.0016229244207833227 +0.001471230989577157 +0.001570189226137763 +0.0013912838287468805 +0.0014241246973881144 +0.0015488534388582928 +0.0014796367373741267 +0.0015974851039016152 +0.0017157729291966003 +0.0015925334724012394 +0.0016293322152243976 +0.0009849178818548676 +0.0010350432343947966 +0.0007535502511294773 +0.0012430841513232148 +0.0016254814697001215 +0.0018446496335008608 +0.0015769033604801572 +0.0017716065466664385 +0.001841965406670359 +0.0018193835953629414 +0.0017140661301633068 +0.001853112408983926 +0.0015416500631314516 +0.0014296650954015255 +0.0015290858525616427 +0.0015227245228951823 +0.001635811043253166 +0.0016035472687903668 +0.0016753200875536736 +0.0017255270495080573 +0.0018412598702456148 +0.0019415662343292722 +0.0019346898737947745 +0.00234800553172706 +0.0022003289044336726 +0.003597808217330663 +0.0033846943032327047 +0.0031775232928143004 +0.0028337938496823503 +0.002931976811778736 +0.0033443021473830684 +0.003314412034713116 +0.0031537639380158217 +0.0021931906634358126 +0.00273856703966312 +0.0030918364059326947 +0.0032632693261948347 +0.00379791137290009 +0.0031786733318186757 +0.0036740024021943815 +0.0036730639230394472 +0.003439268054606288 +0.003296995573585484 +0.0030955497726702775 +0.003128401032289353 +0.0026550221718061365 +0.002111171365049293 +0.0019463297022721958 +0.0017520232672068694 +0.0018251913459720421 +0.001447309149645624 +0.0016574879557536264 +0.0010339510008690546 +0.0010784484044764622 +0.0015060746442264292 +0.0016588916068207974 +0.0022373800095917933 +0.002271502352690769 +0.0029556919017077864 +0.0029701110430848804 +0.0031038544427826648 +0.0024510960925167497 +0.002206418619520814 +0.0014291354163750679 +0.0025245411984127 +0.002425142072249539 +0.0017028612632932981 +0.0017408137706521178 +0.002100437124300479 +0.002094868538875851 +0.0018347444615004161 +0.0020311656694649055 +0.0013562575078680478 +0.0013767770779056713 +0.0017273607314212392 +0.001583106943085226 +0.001821081721473028 +0.0017607077239147704 +0.0012077078167596392 +0.0012625413788525338 +0.001656203718869623 +0.002150902789418191 +0.0023858501483191874 +0.002218048126434472 +0.0024281117022311024 +0.002867749051733736 +0.0026039056353051957 +0.0022807169734183883 +0.0018831282392379844 +0.0018330458425811107 +0.0017306119580481176 +0.0018417260409969057 +0.001706750777137674 +0.00170636577027478 +0.002320895720801059 +0.0023887663714450853 +0.0033555462253882307 +0.003284762677413732 +0.00317792730911273 +0.0033242080774841917 +0.002963154127400649 +0.0024432257834884783 +0.0020404797365507128 +0.0011849022999118476 +0.001107544171784956 +0.0013365676976682 +0.0013211476758327762 +0.0011647815342165425 +0.0015007909177870017 +0.001509566951887139 +0.0016345232532015551 +0.0016053101148592397 +0.0012733102058596476 +0.0012167386550881291 +0.0012418255487883169 +0.0018356714545252565 +0.0019036964612673696 +0.0027402812497837386 +0.0023878114679105507 +0.002276817501744934 +0.002247426817593485 +0.0028963951451768132 +0.00293682200824502 +0.0024024687130369316 +0.002555777177148078 +0.0029779764880775764 +0.004096944527230797 +0.004556575504591699 +0.004438205992935487 +0.0029142530174701897 +0.0028094180014653003 +0.0025056903016576156 +0.002058718673772176 +0.001703176256594826 +0.0014920097853826733 +0.0013952581461756195 +0.002290836972100273 +0.0024080098394439805 +0.002772323649687258 +0.0027041123394631766 +0.002823442904461199 +0.002166286359984896 +0.001953234309079457 +0.001902593538934692 +0.001948353069802899 +0.00202881609146549 +0.002271896595508171 +0.0035786939906683117 +0.0034571447608851475 +0.003514511031933985 +0.004634317184734056 +0.004112897498702253 +0.00273126447253586 +0.0027694161614187497 +0.002278965699565309 +0.0020132196406111805 +0.0015230335818482087 +0.0018650089404412724 +0.0011422341512131757 +0.0013896546363821852 +0.001434223184474694 +0.0018432711858934721 +0.0017510136358023997 +0.002047217784339349 +0.002085615973577667 +0.002137326429664411 +0.002069454372557105 +0.0020916741388324256 +0.002273245370336259 +0.001143158508749902 +0.0007542202966577198 +0.0008629442723251089 +0.0009115943438295739 +0.0009380398490565483 +0.0013449754643218722 +0.001044121740100213 +0.0010504762056567007 +0.001773711938062942 +0.0023285533289733357 +0.002571773681478504 +0.002732242965925026 +0.0021655498822608058 +0.0023652448978328192 +0.0020538799615371015 +0.0013320081650538102 +0.0011647766661951912 +0.001059388918619836 +0.0012644305943522263 +0.0018040871744439409 +0.0019020355901445394 +0.001964381926112995 +0.001906002732454375 +0.001909644274596692 +0.0014430562358667932 +0.0013786516493978981 +0.0015503206297611328 +0.0007240870406367789 +0.0008208388200575441 +0.0006880934903533191 +0.0006923422643616356 +0.000737177048008618 +0.0007423502877006822 +0.0005289908408172462 +0.0011369386982335316 +0.0009960542204797821 +0.0010329144227678411 +0.0011817945073023968 +0.001905851840070898 +0.001895975844999175 +0.0017739101692063391 +0.0019128832047260193 +0.0020680355273730595 +0.0019992137467735828 +0.0019758049069849705 +0.002248903635317372 +0.002255758195149725 +0.0028262247588709847 +0.0026306468494173424 +0.0026967952041454333 +0.0032758000849885164 +0.0031479878300998848 +0.0029405040127043775 +0.0030975997090008276 +0.0028434488519481415 +0.0030947531753478304 +0.0029738202335959432 +0.0024934612763297995 +0.0022515235884533196 +0.0016506726776042448 +0.0020591869497280607 +0.001810592161259835 +0.0025942114548260513 +0.0023868578760778167 +0.0022896595095622313 +0.0021408475173135748 +0.002197114077552019 +0.0014922731715091807 +0.0019329305491748324 +0.0012313069219224496 +0.0014084150412259702 +0.0014538954177266297 +0.000949345711663524 +0.0009733377509111375 +0.0009303306748964248 +0.0009585701710139999 +0.00142808936006825 +0.0013251542558802777 +0.0016841111718673295 +0.0017466602817678965 +0.0018425379024174509 +0.00178485358403726 +0.001945397483841488 +0.0018755189871084374 +0.0016056717767852743 +0.002168974426593372 +0.001942642117131504 +0.0018801589715888142 +0.002910786987344437 +0.002904585122279607 +0.0027203071517180747 +0.0026036200806606067 +0.0024727006883030513 +0.0020127149821360575 +0.0020581012414210204 +0.0018441490800071 +0.0012837749881843311 +0.0011469693931414632 +0.00115776344904442 +0.0010170883789861432 +0.000988375595049697 +0.001101720978316945 +0.0009033750578608807 +0.0011988203414494312 +0.0008887525169919376 +0.0009991097025234795 +0.0009414986375173007 +0.0008832656339552898 +0.0014068199329688523 +0.0015851260221298328 +0.0016380067707284236 +0.0013742136988621639 +0.0013416965326883497 +0.0014215796358467488 +0.0012799485960907073 +0.0010801748902157405 +0.0018691713909208068 +0.0019771733847447847 +0.002129549621586207 +0.002087200638817239 +0.002890195869882304 +0.0030691013548016658 +0.0033921236312528 +0.0034316546946126457 +0.0025557991618299692 +0.0027180041755421546 +0.0026271444917826607 +0.0030944627183987204 +0.002828674726373517 +0.0017237191867853327 +0.001730706995715481 +0.0017357410344856132 +0.00256999301736938 +0.002632374896226215 +0.0026840204992015257 +0.001972444792294508 +0.001916444596947953 +0.0022549821546561212 +0.0024344567470359676 +0.0021868171786487882 +0.0014907924892428406 +0.0013477125282437305 +0.0018884342165872464 +0.001854948700289649 +0.0018324070984036755 +0.0012476088708452083 +0.0014087002368438567 +0.0014895453656757784 +0.0013339398337229144 +0.0013594335938433943 +0.001873710483983172 +0.00193102869592523 +0.0014069986069188154 +0.00130255119107733 +0.001289340692648238 +0.0010716779429477134 +0.0014626154727058638 +0.0013981966473966508 +0.001397996079236543 +0.002625136707080338 +0.0025579705561180445 +0.0026870862873720836 +0.0028856759253988703 +0.002365202828074847 +0.0022196421903252985 +0.0025270950140209923 +0.0022697599891534624 +0.0015647459037184182 +0.001656268743835724 +0.0015839422458600537 +0.0018222401879853238 +0.0019214664177850495 +0.0018845745211524883 +0.0017873130700930646 +0.0013762198384964005 +0.0013032148002675027 +0.0014885171922483817 +0.0015644512203334979 +0.0008373296068791857 +0.0009142167712147194 +0.0008703251160720484 +0.0007131461354668236 +0.0010006525168879965 +0.0012865547446655043 +0.0007944509855342492 +0.0007181598262590439 +0.001084231596721173 +0.001317875813928359 +0.0014024042523724208 +0.0014365934839136024 +0.0013461323967912124 +0.0014392231907380225 +0.0015223957414383738 +0.0018636716081762506 +0.0016575611689406099 +0.0014304755736336645 +0.001497236613892168 +0.001822956528210549 +0.0017106384662558705 +0.0018390480806870031 +0.0016463456204459479 +0.001455542144745603 +0.0016480122969867767 +0.0018883507668616935 +0.002187467806368137 +0.0018202815622467249 +0.0014497939081053524 +0.0014160998977943164 +0.0025248093806561596 +0.0029230715732203455 +0.0027413475990738794 +0.0020641885879146126 +0.002906011168161753 +0.002657110879743891 +0.002383708335929947 +0.0019547601678521222 +0.001580267456334979 +0.001928010961170381 +0.0016950510917504628 +0.0014976205066158353 +0.0011123719771800945 +0.0011525008090944161 +0.0012653041798114917 +0.001961835061839728 +0.0016276233589607638 +0.0014853235464538652 +0.0021059959514046346 +0.0020238197029343865 +0.0017149216204159334 +0.0015336956308544412 +0.0014200937278443977 +0.001573018673910848 +0.00178189343627622 +0.0016439861219326116 +0.001723899746061224 +0.0019473913737088821 +0.0019870414883910465 +0.00182114620795281 +0.0017204045691575143 +0.002559210592605646 +0.0024235076208938486 +0.0024285005911287953 +0.0020057478369157004 +0.001843286420970631 +0.0018462970967635965 +0.002312979604648087 +0.0021578786268559 +0.0018026121490777721 +0.0019357854718099513 +0.001955842208873817 +0.0016139849772116555 +0.0018695160120582772 +0.002205854202208821 +0.0017184648236943036 +0.001940858989501963 +0.0020218418184805072 +0.0022279624940759416 +0.0021755970466133946 +0.0020699801563798708 +0.0015139990155660006 +0.0017432258052761818 +0.0007584130444180133 diff --git a/test/data/pmtm_pzz.txt b/test/data/pmtm_pzz.txt new file mode 100644 index 000000000..70189e9d2 --- /dev/null +++ b/test/data/pmtm_pzz.txt @@ -0,0 +1,2048 @@ +0.0013546068416517617 +0.0013429368058176065 +0.0014187758442020014 +0.0008388725051523952 +0.000919350295471597 +0.0009017324802022146 +0.0010259811831627112 +0.0017042696771464793 +0.0016755320596951804 +0.0017253381407712357 +0.0017542849247189742 +0.001938248907794907 +0.0019992166584506363 +0.0016432429414777372 +0.0013802313168583917 +0.0014076484736792602 +0.0015714502371616155 +0.001596689334443683 +0.001366414164508883 +0.0013564041300962745 +0.0012332646165361559 +0.0011402602156663712 +0.0014114543361006414 +0.001577359859011764 +0.0017177305970414575 +0.001433537828146207 +0.0021779055793352095 +0.0019133494931052742 +0.0022907558602524233 +0.0022920535440700378 +0.002020880539353853 +0.0019971143622517285 +0.0016958467930140641 +0.0014993414960967537 +0.0019163146932809666 +0.001716097439017226 +0.0016698363009434558 +0.001992171813119397 +0.0021006536734739668 +0.0021530998397465665 +0.002323718994818609 +0.0020757895454645904 +0.0016548253560708227 +0.001692873017674753 +0.001434207975058438 +0.0013043340528347159 +0.0010352761896200585 +0.0009088763216699996 +0.0006556630702313843 +0.0005327981621311551 +0.0008561578596372945 +0.0008253565589804079 +0.0009012385210258602 +0.0009740923876571824 +0.0017173157548152815 +0.0019733859982819404 +0.002174756638387627 +0.001926729780056358 +0.0018525833741704558 +0.0018873805445664613 +0.001598674396578892 +0.0015143457967976125 +0.0010658103768223103 +0.0014840550140136372 +0.001519277237072274 +0.0015698724514485506 +0.001637189974256069 +0.001992789112596083 +0.002233319744587672 +0.0023687317815041767 +0.002596751453933657 +0.0019422383587348242 +0.0021627323485102837 +0.0018951886935223803 +0.0020663648975352868 +0.0019388897841231322 +0.001957297463230639 +0.0018366937507042285 +0.0016934708318412268 +0.0019752421131464556 +0.0023588147743337736 +0.002794835761433759 +0.0025773617292986543 +0.002594200680902634 +0.003086483768036804 +0.003281871154073266 +0.0031610680399491472 +0.0031937048284722603 +0.0025655270386766398 +0.0014059205014649112 +0.0013412235436421746 +0.0011999356200040714 +0.001759698133871715 +0.0020992749021593723 +0.0020182595170532953 +0.00232699123943192 +0.0027242174590961406 +0.0026560858829905933 +0.0035805942024923713 +0.0026699559948552853 +0.0026183957779658713 +0.0024511684151044166 +0.003631139508688254 +0.003060128690646036 +0.0027981588767860516 +0.003293062621063411 +0.002585790446795503 +0.002643450855820442 +0.002086705172055231 +0.0015386807968710452 +0.001384743128645916 +0.0015173995299262379 +0.001575942445693716 +0.0011597804506155239 +0.0011536350245302054 +0.0017067780560824635 +0.001696507790892637 +0.0015373052528629952 +0.0016006603463753547 +0.0013691177808904695 +0.0012444242205128149 +0.0021347089876236655 +0.0009724056925292708 +0.001192913969168172 +0.0012689034978962215 +0.001539298231436866 +0.0022191716774499935 +0.0026323298883978823 +0.0028256353974664868 +0.002632157720261361 +0.002685201265789644 +0.002776263710468567 +0.0025981916812768484 +0.0025852458256970085 +0.0018159268733630202 +0.0014378427598941937 +0.0009787218305232195 +0.0011891118696417452 +0.0009102468938175106 +0.000824371902185651 +0.000893819571346268 +0.0007708058732319544 +0.002052293806350454 +0.002498099577794874 +0.0023727483092428584 +0.00263917227705744 +0.0027399729180860497 +0.0036507450600521563 +0.003338349676512936 +0.0035136289100799727 +0.0023608636812521883 +0.0018724818151090175 +0.0019250118097223954 +0.0021413495784837707 +0.0025519564938296536 +0.0022196669673666724 +0.002171659820525519 +0.0022140970306640416 +0.0019493590283170665 +0.0021396596374238493 +0.00240577684508578 +0.0020007596382124837 +0.0016244128888356852 +0.0022954836496168517 +0.003164645160299762 +0.0031494167132989984 +0.0031209093790468038 +0.00283021383308582 +0.0026121387729688837 +0.003074589525066412 +0.0030683839373087407 +0.0020394924282133237 +0.002011567799077394 +0.0019537921972191605 +0.0022255667232028904 +0.0016020110509522903 +0.0019499469612712147 +0.001976275366554209 +0.001923070579093713 +0.0015133360124524934 +0.0018677683158177078 +0.0016017729831001482 +0.001760738888835818 +0.001625613697437845 +0.0019252706130109608 +0.0016911884575341206 +0.002060958738344749 +0.001783165032599466 +0.0018570094141457073 +0.0033719523466127868 +0.0025310741927548385 +0.002249961851965415 +0.002378987845751426 +0.00216646533336685 +0.0018345663444529496 +0.0012311558335113442 +0.0011728890454967883 +0.0008983372783445639 +0.001045761304517159 +0.002450326196959805 +0.006232644065338 +0.13639344645489987 +0.24845031460523578 +0.26108689874484853 +0.2677364133413547 +0.2689742314958818 +0.27082194592015035 +0.26739449259887155 +0.2636895833003804 +0.020500211855873494 +0.003403348033950567 +0.0026876338456950813 +0.0025123682068808437 +0.002171946516179172 +0.0018577202618510315 +0.0015389603743401464 +0.001271593136913506 +0.0014789812040395848 +0.001469364587773594 +0.0015073826284730278 +0.0017967033109973355 +0.0017208924483149246 +0.0012734629156270993 +0.001379002073350609 +0.0014441346976199632 +0.0013797443309623467 +0.0011729973176001203 +0.001119840688545897 +0.0013873079699370373 +0.0013300206917026746 +0.0014572536052014993 +0.0018671802669936392 +0.0019294680049315568 +0.0031801710929224214 +0.0029914655981616313 +0.0036301788078503447 +0.004069655791948053 +0.005833670486841351 +0.005792450912946813 +0.005121505742153546 +0.004721666797356966 +0.003960906670732818 +0.0036096011705191344 +0.002973540136220652 +0.0023523595091415887 +0.0009953576246463458 +0.0013067327680652459 +0.0013682419294843077 +0.0015080591048168312 +0.0015483194312195803 +0.0014363535475168702 +0.0016724904736057074 +0.0017146921607972257 +0.0015868285333450196 +0.001238225121245613 +0.0016570141171298011 +0.0015202309136389427 +0.0015646238172029054 +0.0009176085821679504 +0.0011035145118852851 +0.0011754528402252472 +0.0012146896253212962 +0.0013309832866139383 +0.0012189870888179748 +0.0013423798175181292 +0.0016687017825876462 +0.0019837343160780474 +0.0020294970290146573 +0.002013840625550167 +0.0023328729199507416 +0.002435002451906236 +0.0020720365140625475 +0.002265835707163118 +0.0016952926724651206 +0.0013427782205619832 +0.0013140615281141538 +0.0015999246119094554 +0.0019888304189751077 +0.0025069742233185185 +0.0024987566311516817 +0.0024317537407692377 +0.002464046930162079 +0.0027158613251682825 +0.0026097796155157772 +0.002765846295374755 +0.0025824246623272914 +0.002759706440443432 +0.00271349877329632 +0.0027432744165514257 +0.0023998896043581114 +0.0023102857393919886 +0.0023025233010711328 +0.002093141157666837 +0.0017615237121746303 +0.0007547558218761987 +0.0007696391526503916 +0.0008773450451451868 +0.002055349065489865 +0.0019959376856992853 +0.002007014208704226 +0.002172286875887953 +0.002346266823997617 +0.0024825629678908875 +0.00234556602309615 +0.0018956571280284247 +0.0012546482718645059 +0.0013880384203231058 +0.0016336868077091997 +0.0011108030000416692 +0.0011794947269162528 +0.001238947591432516 +0.0014360858532567506 +0.0012477830537645717 +0.0012426639084231954 +0.0017270071893553418 +0.00247586999512853 +0.0024705705869133916 +0.002620505781224673 +0.0026770146492843196 +0.002472432302465878 +0.0026905835052187786 +0.0019478011332119262 +0.002408019065620633 +0.0021533422892380093 +0.0017665989520918796 +0.001974889764304832 +0.0017301003436062967 +0.0016626905437210377 +0.0014941994095168387 +0.0013588252512760112 +0.0017957238883436867 +0.0018700969144160833 +0.0016189690944483743 +0.001517976652816566 +0.0013881877077364503 +0.001542462177289246 +0.001518455094058178 +0.0015183304673655525 +0.0016220942931107064 +0.0014251739138277288 +0.0015207160743982405 +0.001554314067519927 +0.0019204967403476105 +0.001946798867165769 +0.002108822119672189 +0.002277805304357596 +0.0028031180118363286 +0.0031438178678026775 +0.0030086240472792453 +0.003984495451236279 +0.003056833682231928 +0.0031256170991019656 +0.0029127246663162693 +0.0033913846167715504 +0.0029400763037293783 +0.002811359054797812 +0.002734554948465124 +0.002741524051256626 +0.0026466293343126294 +0.0026427938613099405 +0.00258783523814922 +0.0026089151082003843 +0.0025083895717493863 +0.0027700853367595936 +0.0025487834720473008 +0.0023703452837073925 +0.0024042581458523066 +0.002356426771282252 +0.0019174110946051468 +0.0008985203886728169 +0.0009276087742021236 +0.0017378959919620003 +0.001611598736958302 +0.0013720688832505028 +0.0012682820809457186 +0.0015459563136650816 +0.0016105597381661596 +0.002362513617563726 +0.002485026308075387 +0.001994247642567178 +0.0024562395456409506 +0.0027843638758464485 +0.003180426483233613 +0.0029843845471520998 +0.0027013665566975437 +0.00181621609314328 +0.0017145818815982015 +0.0017442353854536636 +0.0016493489798074046 +0.0012949121568140167 +0.0009243663763240004 +0.0011718735675755113 +0.0015138118229860175 +0.0016232610661173256 +0.0013514433158324233 +0.0015660233208314078 +0.0014348049377536586 +0.0013204618492122513 +0.0015197495594529897 +0.0007262505937698824 +0.000687995263415704 +0.0007433946385961142 +0.000851807588533591 +0.0006836575020829508 +0.0005127077340384562 +0.0005821553868902384 +0.0005150181416939696 +0.0008124119938422597 +0.0008536740240413516 +0.0007383476899840701 +0.000995525286151931 +0.0010489118212207366 +0.0009224584827803069 +0.0014845192233888878 +0.0017809312875325608 +0.0016425721337472404 +0.0022315748121970558 +0.002077351186173803 +0.0018103382057319446 +0.0015655995741669737 +0.001551316762535082 +0.0012163235235291608 +0.0012921935454242937 +0.001001009183168537 +0.0008096201344798881 +0.0010390093823429937 +0.0010637350665156817 +0.0024521299875738234 +0.002285589925682376 +0.002487965119435832 +0.002480582663346007 +0.002385576301561232 +0.002544534746783837 +0.0025573918087294797 +0.002500894331943911 +0.0016502769182272878 +0.0012560413809500405 +0.0010995849977050516 +0.0010778080347938932 +0.0013883173544555396 +0.0009590231334880395 +0.00100190099795358 +0.0005273522772311417 +0.0004984817209568085 +0.0007311483100301051 +0.0006178510702848258 +0.0005318153366181592 +0.0004727333879533781 +0.0005253713566089692 +0.0008617458022384916 +0.0008024624134945702 +0.00081248315357978 +0.0012042218529526706 +0.0011122999966893669 +0.002040192070486392 +0.0021082216328167916 +0.0021099687407412594 +0.0022604791610878745 +0.002655849980646071 +0.002212757232843806 +0.002480264819127583 +0.00282321343534371 +0.0022004470820427735 +0.002683378086749246 +0.002047642965745363 +0.002609495433612917 +0.00247350410012945 +0.003080396949927608 +0.002736938666083636 +0.0024391828260427713 +0.001945931841809436 +0.0018577286452523952 +0.0018847863037536976 +0.0012864877713515844 +0.0009822581573872453 +0.0009160706823562984 +0.0011619321020152628 +0.0013159597173675308 +0.0013476228938418208 +0.001445941671749042 +0.0013708356107156765 +0.0014616466963071682 +0.0012967352950663102 +0.0014121645011066727 +0.0011928250976739828 +0.001472334674097 +0.002340934427024134 +0.00213542575279282 +0.0023011129431818726 +0.0029630973486848696 +0.0029650291005491125 +0.0032628910156980656 +0.002807889921555517 +0.0026142080591577107 +0.0022405240448053363 +0.0022273119578323803 +0.0025102737990421345 +0.0026136984247589782 +0.0031070840002791586 +0.0031016121872302974 +0.0030199343714754 +0.0026247872632701843 +0.0028653763873963604 +0.0034819100154548006 +0.001802022603809874 +0.0017319455779480132 +0.0013608683706249917 +0.0013203799097688833 +0.0018416896286042525 +0.001366906438234317 +0.001664832041514271 +0.0012375768489682622 +0.0012221692759515547 +0.0012991671115618506 +0.001358023206435477 +0.0013815120820635436 +0.0011688334254267392 +0.0011133790104294991 +0.0015758545022906997 +0.0020057514066255176 +0.0022711927494363997 +0.0020344302882310647 +0.0021826972231521616 +0.0022369986556705994 +0.0018741286571315199 +0.0022149236785025043 +0.0019565681738440703 +0.0019242133601458204 +0.0016990311744440195 +0.0022548798250906295 +0.002423959044640486 +0.0026726886365554055 +0.00235376871053127 +0.0021001536198553884 +0.0020640179065998694 +0.0019834212183042705 +0.0012391071367946797 +0.0008863711588269681 +0.0010929049452728479 +0.0016689880874954726 +0.0019739137001755923 +0.002061531973426179 +0.0015289602473514655 +0.001424529356836171 +0.001748308370205207 +0.002120778222161519 +0.0017851227034692094 +0.0016502162265296704 +0.0021487012660140457 +0.0027547002409934263 +0.0026477756710858212 +0.0022069009441742973 +0.002274084829214295 +0.0018447216763682016 +0.0019508884455028865 +0.0018876062063500386 +0.0012912476126595784 +0.0007346989312389942 +0.0008961102201247939 +0.0015844657103167765 +0.0017445521325713134 +0.0022172012392648924 +0.0029927316308172003 +0.0036484980474252387 +0.003858207014282727 +0.003670399890676154 +0.003508460947695977 +0.0029761643357880535 +0.003107606747540463 +0.00274170792542836 +0.0020096926352345984 +0.001392635440936844 +0.0021740460476128588 +0.0027938827239115125 +0.0026457847284836523 +0.0026260635596249003 +0.002629050408791218 +0.002259924714403125 +0.0018326164757318149 +0.0015442694402493385 +0.0014481055076071467 +0.0013305674172743608 +0.0012194532905768047 +0.0010595059484392742 +0.0008796826568016869 +0.0010773419332056776 +0.0009601583260813051 +0.0009577281978577129 +0.0019879064109632107 +0.002066408121287641 +0.0019813246755553187 +0.0019509203893083543 +0.0016355733252220279 +0.0015390926963774311 +0.0013098692987160926 +0.0007259747726626839 +0.0004836311388167077 +0.000705864680235088 +0.001022194584442771 +0.0008131161288716837 +0.0009135857999294617 +0.0010039491735167256 +0.0010938252081104595 +0.0010903081883136656 +0.0012618330541778406 +0.0016532220119084098 +0.0015867377187681112 +0.0019235675822063655 +0.0018778513784370261 +0.001788440665677287 +0.0017976685667702836 +0.0016094948405308666 +0.0010829082469809728 +0.001063488776741893 +0.0009548475493152281 +0.0012125891432975095 +0.0019948837935976006 +0.0023042555295577825 +0.0027796837296869877 +0.003452624480378557 +0.003914515378054674 +0.0040136567522246905 +0.004137281978683868 +0.0034263634962570753 +0.003875099805013106 +0.0034060919961092897 +0.003471051743114085 +0.002838378904898494 +0.0031613971988295616 +0.003624809564678944 +0.0037607358832038237 +0.003744883410028047 +0.002910511872734333 +0.003107244414595962 +0.003075981228393793 +0.002645764995436512 +0.0023055799856455893 +0.0019666110461245435 +0.0019078844045924582 +0.0020910204219622653 +0.00215486809471994 +0.0017511623360402762 +0.001366923388776019 +0.0015438077236532893 +0.0016284851907811108 +0.0014428257910662585 +0.0017613289544774272 +0.0012788884507933453 +0.0017131738536977032 +0.0016440213627486018 +0.0017194281216384485 +0.0013178475998212983 +0.0013511672517017542 +0.00119529044329674 +0.0008525373496382569 +0.0007558063588938371 +0.0007631803054330196 +0.0007707296155511601 +0.0009270121917363897 +0.0010564810551990259 +0.0009872699661282044 +0.0009780002981166133 +0.0010623800895244795 +0.001113802079640692 +0.0008155441998686216 +0.001569882954849261 +0.0015248012070372152 +0.001803527848934296 +0.0018099633062373891 +0.0017504175442676897 +0.0017711524536593946 +0.0014431819964805328 +0.0013210311869176223 +0.0010743292938791627 +0.0009957448060915032 +0.0008204927128975628 +0.0007584893598262691 +0.0007548711359874282 +0.0010245587224307817 +0.0012958522610620605 +0.0009757157245450205 +0.001278414727827014 +0.0013010521396817024 +0.0017455539060421575 +0.0023529537532616324 +0.0025142687806626873 +0.0028037429360444318 +0.0031714702433278817 +0.0034383288339384266 +0.003203360053484925 +0.003634471891394088 +0.0034006092343573054 +0.0029421765726345946 +0.0024686179958280895 +0.0022557061787145246 +0.0016041977349238277 +0.0012678083023370452 +0.0004924759422918305 +0.000768065747006836 +0.0006338664641086426 +0.0011808812522251858 +0.0009991772397234622 +0.0013074242447802286 +0.001169843790155528 +0.0012600651949496234 +0.0011475232857025514 +0.0017441130732463613 +0.0014174764456159094 +0.001900594567622098 +0.002429293493786574 +0.002488139037647971 +0.0028551876597356176 +0.0029804850498906677 +0.0025473801968024074 +0.002582256555182905 +0.0026257199716261505 +0.002904300081987204 +0.0026872846843641234 +0.0028148745984452102 +0.003609666302783853 +0.004660944226771784 +0.004666903861973064 +0.004759993432993713 +0.0034653540383016903 +0.003954661646621122 +0.004013336626325232 +0.003002784046350426 +0.002366087464707814 +0.0015413928347888003 +0.0018045691251293487 +0.0029703204327540442 +0.002071040613981661 +0.003334852833693972 +0.0030226309007601263 +0.0029162760554938324 +0.0029396471060613577 +0.0029261709516939936 +0.0028412700771974653 +0.002352423271381801 +0.0016334578782521818 +0.0016362266511913686 +0.0022762077595273266 +0.0024766887006076287 +0.0024244716103528647 +0.0025527157638146857 +0.002306084139580236 +0.001486118402499504 +0.0012608307002764487 +0.000890290558179208 +0.0007668125963211051 +0.0005376041438117724 +0.000829555940809361 +0.0006173619489993649 +0.001035688928687208 +0.001137885483850162 +0.001600436146296045 +0.0017770814468953129 +0.001755846406581304 +0.0015670844880408695 +0.001702785843424466 +0.0015289615266803763 +0.002433496713739721 +0.0025136842785299486 +0.0012102607149000273 +0.0011979583521375546 +0.0012856469488160783 +0.001264489851538455 +0.0012045995993878848 +0.0018665367504998567 +0.0015848406627785058 +0.001676589119154189 +0.0016715688609235154 +0.002114784951071815 +0.0022796606107511556 +0.002608717511307494 +0.002329133560160773 +0.0019472737370077999 +0.001614025262960699 +0.0018002806474956164 +0.0023537194237916296 +0.002442604664576185 +0.0021945264124885013 +0.0021894861118508346 +0.0023994692623547807 +0.00269684474008908 +0.0024369490720144824 +0.0022865337512029266 +0.0017258216981937394 +0.0016889788447049436 +0.0016859157072407018 +0.001031712241315533 +0.001048837282069762 +0.0010333962896892082 +0.0007614135163600215 +0.0006855338100953594 +0.0008447667814381592 +0.0007135736914229795 +0.0013171412858128135 +0.001349602700651636 +0.001650723686832263 +0.0018034635453053223 +0.0023326519874703124 +0.002564697518316003 +0.002071773461408673 +0.0017612326645332277 +0.001824745918100856 +0.0015639790295617266 +0.0014945100086948345 +0.001498070921370908 +0.001969165194638984 +0.0023682454298364895 +0.002286134765923748 +0.001788913529429293 +0.0026073679244439873 +0.002818983500138855 +0.0026509383590974096 +0.0029250184252847303 +0.002515492420823293 +0.0026515470481439664 +0.002615928723756078 +0.0026521022575550055 +0.0033545951443995797 +0.0033368631148089785 +0.0026679210624478786 +0.0027714001406917723 +0.003169129430199353 +0.0043121290405200765 +0.003504373843576879 +0.002886132871830185 +0.002848134119216908 +0.0029951482271800118 +0.002859744422350758 +0.0018050111281011877 +0.0017650584790632827 +0.002044496617764721 +0.0013696849372380508 +0.0015284398084292078 +0.0015152422319364097 +0.0017120932329851716 +0.0018996886816609767 +0.0015545143759242393 +0.0017796667084343757 +0.0017392434742793982 +0.0016795353749422487 +0.0015362691124767723 +0.001439990964128784 +0.0009950039368768692 +0.0009747290145287083 +0.00138910366673834 +0.0011521170966187124 +0.0011114486523200893 +0.001567703292306496 +0.0017876220836843847 +0.0017431843339854461 +0.002089038137192583 +0.002448745853840305 +0.001820271542318292 +0.0018719357887934584 +0.0016352977393073343 +0.0014692360486704011 +0.0011971071839862926 +0.0015086225993353412 +0.000950633100164712 +0.0008985132819318288 +0.0009249460623829412 +0.0008861289735526993 +0.0009887525625027454 +0.0009278729971910605 +0.0011052838999973174 +0.0008767733849021103 +0.0006664546686704635 +0.0012882864804006735 +0.0011624072116529275 +0.001338543356184318 +0.0012507314742030466 +0.001114259190861901 +0.0014326185961435099 +0.0012857728968638411 +0.0010637831488718272 +0.0016790566771141063 +0.0017042876710896605 +0.001843239425740261 +0.0020564505211824033 +0.0027507269571120704 +0.0029551685636266204 +0.0032735314576263544 +0.0037130171554693127 +0.002588203392703324 +0.0024254885340152074 +0.0024242270515601088 +0.0027311631636568355 +0.002508726231870015 +0.0017339754350951852 +0.0016734188626069393 +0.0019845866629391506 +0.0029254854352358576 +0.003349993352919957 +0.003267769817302576 +0.0024482273811354057 +0.0026339942286083013 +0.0034649239950849697 +0.003618236074947805 +0.0027194947907913324 +0.002897274622726712 +0.0024447374680887403 +0.0028304108785762237 +0.0030383341282390077 +0.0026214682264608736 +0.0016922941691128164 +0.0018589013503847798 +0.0009054653531992843 +0.0008662162955491622 +0.0007617133311029179 +0.0008493960438662256 +0.0008321258497551783 +0.000745020899902716 +0.0005312789327127179 +0.0005754647680282259 +0.00043706556132031677 +0.0006814558724606617 +0.0005944077865635589 +0.0008341880312018704 +0.0016417041027934592 +0.0019505670617385427 +0.0020298627284561807 +0.0020199004708327333 +0.0018463993876616232 +0.0018606120156673658 +0.0017538804271703505 +0.0014419391212266092 +0.0012122297290529042 +0.0011350147903476057 +0.0011709895956646536 +0.0014493670454572987 +0.0015129642905274718 +0.0015869240820297235 +0.0015783832697618468 +0.002043500644424023 +0.0017640655026657883 +0.0018354547173416987 +0.001978607916558783 +0.0009630000275662607 +0.0010415107945090157 +0.0012782207704837671 +0.0010679972618248823 +0.0011464252680687347 +0.0010921550853621254 +0.0008102583892147273 +0.0007703998919932261 +0.0007347349723200908 +0.0008971092530988036 +0.0009575385898700305 +0.0011534513973933183 +0.0014771574948694336 +0.0014743455898440447 +0.0014438779624276754 +0.0020626198994334916 +0.0020949699652463116 +0.0020017697902418043 +0.002145034552697372 +0.002039658756455425 +0.0018077191702339124 +0.0016951119017253866 +0.0018594683966262813 +0.0011670595223267 +0.001695475199445081 +0.001852973666381106 +0.0019218871833041149 +0.002123515796444696 +0.0016316274888199345 +0.001466041142021225 +0.0016264047476621825 +0.002048597702799995 +0.0013890239806737506 +0.0011576718839872383 +0.001626371195006799 +0.001029912308720613 +0.0017317135877751044 +0.0015667385799519415 +0.0012453323948550222 +0.0014502815274648735 +0.0013690956989568564 +0.0013347190248481832 +0.0009106472830538985 +0.0010045351980276088 +0.0009066612157767035 +0.0013724317518805916 +0.001473470607852967 +0.0015912676171773842 +0.002496752099541413 +0.0026183172712472293 +0.0023347545116940496 +0.002016002817389704 +0.002002685902671769 +0.0017529609067272955 +0.001691117801810675 +0.0011486027793058892 +0.001174088856930048 +0.001602298036963385 +0.0015644946315026451 +0.0015176813334575353 +0.0013958275069267472 +0.002183429663992711 +0.002195179885339059 +0.0023539577011011652 +0.0034164885075620927 +0.0035743807991672127 +0.0032999232266135033 +0.0042038277284328395 +0.004583285521295785 +0.004179210661901114 +0.004077709482812046 +0.003519475208109194 +0.002696533249903891 +0.0032689248331604754 +0.003204677916518693 +0.0025445405878251346 +0.0020169839273464656 +0.0020365256839426963 +0.0023301632749203444 +0.0015107714609288877 +0.0014255580118409778 +0.0005731900705933221 +0.0012221151808180278 +0.0014867045261714577 +0.002064984399530158 +0.002341315256179311 +0.0021146026466459427 +0.002203255574613442 +0.0024709797393821066 +0.0025725163191314964 +0.00215280277339963 +0.0013690711340715095 +0.0015124347848757907 +0.0015348963340737658 +0.0018026799853985928 +0.0013076229720009802 +0.0016659512571185278 +0.0016033194953010569 +0.0014169017329386127 +0.0012946246528177795 +0.0013695230163832204 +0.0013792946874216802 +0.0011711321068451368 +0.0013089431815557922 +0.0014238697959877385 +0.0018420371988564382 +0.0018520964663836673 +0.0017753410542228547 +0.0017910894985230677 +0.0017003622961848876 +0.001734874019893483 +0.001516510913817306 +0.0014276520923195363 +0.0011135822304182657 +0.0010177022758038278 +0.0010095230633194966 +0.0007768646076401275 +0.0009996926414815419 +0.0010890931938639277 +0.0012241075234739791 +0.0014184042479651914 +0.0017114050008838289 +0.00155854466189357 +0.0016613749213363 +0.0017460526914481285 +0.001589985664014632 +0.001538676683544848 +0.0017310285832361036 +0.001369340951258519 +0.0015958676353537112 +0.001954585311464036 +0.002335220960494786 +0.002198445532132887 +0.001993132093197508 +0.0024534411750235783 +0.0020744343674159752 +0.002090446730955187 +0.0014590820684647833 +0.0017940505513707008 +0.0019232664419258914 +0.0021046798463417345 +0.0018735894047510317 +0.0021334769674048546 +0.002179178978725754 +0.0021914403335040514 +0.0018239791533679218 +0.0014766166112294666 +0.0016896761501938207 +0.0020256273942401088 +0.0017907032725674856 +0.0018299165494130149 +0.0017668189859497503 +0.0020220619476795034 +0.0018688754171677603 +0.0016521346407034976 +0.0014620401931365666 +0.0012098133727934468 +0.001213265663898009 +0.0011094330917876625 +0.0008417918791941173 +0.0009092863374413209 +0.001104085511281821 +0.0010108842393363156 +0.0011832390839444844 +0.0010006184244391611 +0.0010765456578498119 +0.0011110297774675395 +0.0009235946084853595 +0.0011808169277555689 +0.001200757871955132 +0.0013154746319475256 +0.0018281594869814727 +0.001963344892157987 +0.002067203219774455 +0.0021699919321851763 +0.002129278110482526 +0.0017537791921332737 +0.0020520341896125855 +0.00281684934766058 +0.0030287959716986607 +0.003080718790219115 +0.0033067477121174645 +0.003338807677929765 +0.0031142297460023897 +0.003039585101025026 +0.0030012104044456448 +0.0020306302007940653 +0.0025949834588351386 +0.002113056546824459 +0.0017646470291355144 +0.0019226329784148518 +0.0019216064491623791 +0.0018575359049083544 +0.0020418425236413914 +0.001870845399568798 +0.001265392394893248 +0.001164491155803588 +0.001413290522439137 +0.001511600445489673 +0.0016082859918547068 +0.0016313928584888431 +0.0014142988887664032 +0.0013693556326885763 +0.001361764287201311 +0.0011854089831655585 +0.0014458729017526773 +0.0010278215918830852 +0.0011569151300015947 +0.001359283040546003 +0.0015835248463880389 +0.0017190183590991108 +0.0017668396602611653 +0.0025156090546961645 +0.0029030239942858366 +0.00257558867974295 +0.002742128092492357 +0.0031959121540031847 +0.004075317249942818 +0.003857843856245122 +0.003734032265591271 +0.002795966520246709 +0.0028807409445797383 +0.003040088156193046 +0.0031230993882538525 +0.002534222874734464 +0.0014906072051510736 +0.001874763302431324 +0.0015642131234138734 +0.001629267647459072 +0.001414457118471585 +0.001382197511843962 +0.0015750430829188104 +0.0017911825798434624 +0.0012666768741630653 +0.0014941685014634143 +0.0011247945964528963 +0.0007621928016128992 +0.0009041652791215519 +0.0009277810844487922 +0.0008073159944239661 +0.0008218976938193777 +0.0013311847876462024 +0.0011510312780303085 +0.0011619786390128298 +0.0012245661208187073 +0.001404651081365216 +0.0015391556641847174 +0.0012641620170345236 +0.0011660404949617586 +0.0016436026784621951 +0.001550914738181903 +0.001358911416635732 +0.0017456747465842638 +0.0022079993420062107 +0.0027699680165277404 +0.0031262532504707443 +0.003151439173300557 +0.002631582693312619 +0.0028150282258800527 +0.0029502565734817686 +0.0026863493393866084 +0.002795136064323299 +0.0025257265638736633 +0.0021638827735154507 +0.0019399057025318179 +0.0018059267131384721 +0.0018656847984418537 +0.0017918616324488139 +0.0016323567058273147 +0.001110562171652468 +0.0011209341412439604 +0.001181210937388099 +0.001124966317034035 +0.0011352831293217327 +0.0012453794374229599 +0.0013868622555520778 +0.0016819141803911199 +0.0015464704507110372 +0.0024823267983561737 +0.002921657395491361 +0.0029247930467255143 +0.0029454061776768028 +0.002374500054857707 +0.0023096883352231763 +0.002377348927848778 +0.0009548516827101734 +0.001372669992677336 +0.00209158629593992 +0.001874853667773215 +0.002044133545069046 +0.001962321227088259 +0.0024322186147460274 +0.002345832026326394 +0.002164889102069468 +0.0023350993070323754 +0.0024639646503987673 +0.002183145018941848 +0.002225204234263658 +0.0018791659362921236 +0.0016280385990418201 +0.0013844406847036519 +0.0014860725972073252 +0.0016227908631948067 +0.0014143564394589326 +0.0014330428912740789 +0.0014002425103651502 +0.0016675970257487378 +0.0015205816091763411 +0.0013388539237305255 +0.00084581071498459 +0.0008409139924227686 +0.0007292975081657993 +0.0007735547308555859 +0.000738127570057779 +0.0005380078655868453 +0.0006067404321220099 +0.0006899162907402167 +0.0010291480830252467 +0.0011643072310300996 +0.0010339326294882478 +0.0013114873121201473 +0.0014137720548043045 +0.0019513930048755499 +0.0020685303487535753 +0.002108216100148305 +0.002280316049510922 +0.0018194383709917866 +0.001661131423152353 +0.00133622252603454 +0.001045334928099157 +0.0017327692109940852 +0.001977258376823936 +0.001844761761844379 +0.002188784568484658 +0.0021485631010200465 +0.0021939834508306103 +0.002144482555356565 +0.0015516871728763406 +0.0015815531168259912 +0.0011909926880226177 +0.00113398137965317 +0.000997558262997939 +0.001172965363478555 +0.0013054084420385946 +0.0016383991074035383 +0.0017470387760616215 +0.00145787158845913 +0.0016019461678964163 +0.0016202145952259508 +0.0015790380887963187 +0.001232900559877373 +0.0008184636950364092 +0.0010602763661249348 +0.0011512921299506077 +0.0014252050816994505 +0.001552580293904843 +0.002232253874852834 +0.0021514044302532787 +0.0022158503474242765 +0.0023308679657479004 +0.0022285215050744677 +0.001855732753146098 +0.0027351703019844417 +0.0030688336526349534 +0.0025609549878140504 +0.0026069020428175346 +0.003064158627535334 +0.0024603003285662444 +0.0019918278619360345 +0.0017304867113993475 +0.0013726777868089705 +0.001484135050308821 +0.0012286029115407178 +0.001845701043142371 +0.0014781698914833434 +0.0012946411900580893 +0.0015729381532731243 +0.0022504148012825478 +0.0021128418577838837 +0.0024265444021343507 +0.002332118281889784 +0.002277760205079083 +0.002412419762633574 +0.0031320999647207275 +0.0026510545296215124 +0.0027031788310780437 +0.0027796519091242006 +0.0026406532928821926 +0.0019196350101672252 +0.001816776399298537 +0.0016490513269456675 +0.0016300883312587778 +0.002413279317674328 +0.0022082050581741608 +0.0021032335720508923 +0.002379934159696584 +0.002227288877123771 +0.0019729074440518897 +0.0015129222658431156 +0.0013499006217144313 +0.0011050085657716023 +0.0010932298963383586 +0.0022018794538094856 +0.001977420992660168 +0.0018502590509051362 +0.001981914949186693 +0.0017709983435048174 +0.0017930875432439098 +0.002368540959123942 +0.0019221846392794859 +0.0024764649110481105 +0.0027273291627807755 +0.002837885872872396 +0.0026262537107080465 +0.002515123815650753 +0.0018726439376657296 +0.0021738590845615164 +0.0018127018397734872 +0.0012901228718872216 +0.001042293513934271 +0.0007160968959587218 +0.0008505231498072946 +0.001825700376682638 +0.002297846121332516 +0.0024052344991604686 +0.0025875181726375987 +0.003054267942557216 +0.0033032261129762484 +0.0032870006518804073 +0.002615487529183707 +0.0025511671272627576 +0.002709773367597414 +0.0024205276832689982 +0.0017524274227169396 +0.0014556871043983645 +0.0014497990678889053 +0.0023573009779589292 +0.0028398393366279137 +0.002576273267819484 +0.002228976930754247 +0.002184880869647945 +0.0026809210317494787 +0.003348711534177171 +0.0034467897919687085 +0.002887521029054542 +0.002684783501969932 +0.0023481985720237284 +0.002184965619000652 +0.0029011170302296846 +0.002786671368659346 +0.0018199185991730656 +0.0028141755408468134 +0.0031920585879844235 +0.0038629271098542073 +0.0041619578460849104 +0.0041290765632052895 +0.0037451775655791223 +0.003174804052429969 +0.0025857198397416714 +0.0020584594781099513 +0.0019336768525469842 +0.0014533514440786181 +0.0016986243544265809 +0.0014848699748581829 +0.0016608274828848624 +0.001695886311640714 +0.0018822609176114113 +0.001785724708827104 +0.002233088745490533 +0.0028358853588197792 +0.002613924966701972 +0.002530001072097055 +0.0025671133967766703 +0.0025610404047990403 +0.002439643492199044 +0.002232084470413327 +0.002274500370347877 +0.0015882568038269155 +0.0015355406570830132 +0.0018433875055387785 +0.0015334638124114804 +0.0018243068427430838 +0.0012452007964718318 +0.001259466092402075 +0.0011729674288371644 +0.0013299521814193222 +0.0018047314660598393 +0.0015499899357750836 +0.0018770006091519019 +0.0013103339891501987 +0.001190374393276177 +0.0012751775304183873 +0.0021207885759584005 +0.0025120180750531317 +0.002417440285893695 +0.0025249965564953115 +0.002406103073599884 +0.0022066301878305565 +0.0019134201481351136 +0.001726341253914269 +0.0013931104045800987 +0.0012607814166120546 +0.0019244022505232443 +0.0017885906485947411 +0.001853667010578402 +0.0018111092500595067 +0.0018421669513757535 +0.001457116903568313 +0.001933595805162838 +0.0016588792595964809 +0.001484146423817435 +0.0012210268137259797 +0.001287524868872771 +0.0015836058147175988 +0.002376918856143626 +0.002161404812928594 +0.0018374601072662462 +0.0017789365678588503 +0.0013894316555642995 +0.0012821747522513596 +0.0014120301901338539 +0.001317534076394558 +0.0013742725668300614 +0.0014383883718972561 +0.0017015238390068888 +0.0021834809361937226 +0.003536794118695389 +0.00341641004944285 +0.0033594662578885362 +0.003377549542345421 +0.0028495889005257027 +0.002566832406366509 +0.0024447030288968796 +0.0019269647540764276 +0.00035550943213526854 +0.00040227195351794076 +0.0004181354753441848 +0.0009109923071289289 +0.0010403683577077777 +0.0009178483593180102 +0.0014244758302943777 +0.0014577277409880292 +0.001896359694372179 +0.0020643819098914037 +0.0019273445913145797 +0.0016703732727291224 +0.001580446684266752 +0.001964302571876798 +0.0012898011749161574 +0.0009713284220496686 +0.0010451968761536336 +0.0013711479234681644 +0.001008258164166626 +0.001248005133555606 +0.001434311173579476 +0.0015374848231327648 +0.0017701393582016855 +0.0016788373215837048 +0.0013489901768218553 +0.0014208512234471294 +0.0018373166817946063 +0.0018062683878122268 +0.0016011339703616266 +0.0018080711650115568 +0.001456372348770261 +0.0020838688807928037 +0.0019690208785023717 +0.0019846358929843963 +0.001789791982556099 +0.001914389004732232 +0.0013303863910712034 +0.0012432225619453323 +0.0011558254387518576 +0.0007627509892838889 +0.0006814000917572535 +0.0006434092519668401 +0.000610055655259896 +0.0005710025690471003 +0.0005905693846169483 +0.0013456449381400292 +0.0016740656192061895 +0.0015252388264522208 +0.0016710995625998947 +0.003038182039438629 +0.002704826217061244 +0.0029052686523270478 +0.0028243119108693634 +0.0026424193131284325 +0.0023456121685159416 +0.002465361446565011 +0.0026916066361351862 +0.0014056717463072084 +0.0015342104752333419 +0.0017327222710101424 +0.0015304630306287178 +0.0020028714522441846 +0.0020260050240414923 +0.0016040455810211183 +0.002074395996644976 +0.0019247822947995074 +0.0014136612092303055 +0.0016740038560061061 +0.0014703275943249098 +0.0015528804005048046 +0.0015140511538415853 +0.0013224435449756505 +0.0011572923755454989 +0.0013872407088620347 +0.0013377460143478362 +0.0008962454442025912 +0.0013237296290581147 +0.0014132575414727846 +0.0014743638196547456 +0.001706538765347506 +0.002141071021312507 +0.0020059980330215154 +0.0021412660608559437 +0.002399949375411065 +0.0021636155277885514 +0.0019728627669699534 +0.00205237940263827 +0.001871520164544576 +0.001660776434357541 +0.001713543130773269 +0.0017002628063536773 +0.0015642182080518637 +0.0016885534456435498 +0.0018997699985513863 +0.0019489483495013621 +0.0019951236353317856 +0.002167361125372509 +0.0020245491830768745 +0.0016934184657628618 +0.0015097303882062505 +0.0014309136745866166 +0.00198186321830956 +0.001802558702863394 +0.0018377529410389302 +0.0017533336379711214 +0.001917646279470753 +0.001644143963649688 +0.002010663145194269 +0.0015946902071946195 +0.0008038878395286096 +0.0005350660836723906 +0.0009403444611618854 +0.0010767813445741584 +0.00184561343284529 +0.002051988747241139 +0.0019473785846801503 +0.002490164865401808 +0.0027665978662593897 +0.0029359802816807884 +0.0029743865632032036 +0.0026294288183735235 +0.0023906546877495247 +0.0021676440179453685 +0.0023105188531528493 +0.0020250078177619594 +0.002012272362929765 +0.0021682427437625137 +0.0021128542335314675 +0.0022395079212785807 +0.002250991612893513 +0.0026123781571134853 +0.002449625127534584 +0.0023279105078777037 +0.0023707971087521098 +0.0021331205216404167 +0.0020341731380734175 +0.002012698672713032 +0.0020614763191023015 +0.0015089484121018348 +0.0016960262005644372 +0.001439923134977352 +0.001034633333477274 +0.001219068606921613 +0.001417794078710601 +0.0015042024528106911 +0.0014714428409035617 +0.0017512907334292145 +0.0016434134879544033 +0.002156379835290468 +0.0019745100097372107 +0.002220978271603793 +0.002351672633035039 +0.002981900346830428 +0.002682256552367199 +0.0025500466829466444 +0.002360778793754842 +0.002248822523310137 +0.0020766454806280476 +0.0019178192994747263 +0.0013163473020535307 +0.0010083074213196714 +0.0010062672015084745 +0.001101247494476558 +0.0012496669680718856 +0.001245337427896263 +0.0012330576954978209 +0.0014615586457593038 +0.001347121601923195 +0.001600304367274658 +0.0015570272218030936 +0.0014436614329065166 +0.0016853138354584016 +0.001986799400123757 +0.0018759814982727962 +0.0019580795059761075 +0.0018336516414558812 +0.00227752359637285 +0.0023352182317261726 +0.0016562084408951318 +0.0017462070734701744 +0.001854676200457687 +0.001771580536076635 +0.002330851655411706 +0.0024604561130957144 +0.001986173927003005 +0.002469756098945203 +0.0023774024881031658 +0.00201745933651808 +0.002336774588466657 +0.0024271360526787284 +0.0018845574480684999 +0.0016593675927937688 +0.0017295800841384647 +0.0016604601887230913 +0.0021119589716947196 +0.002570482825945053 +0.0026812919695442484 +0.003513616731363589 +0.0035994564340811174 +0.003645801485720614 +0.0035279253537949555 +0.003932912182161456 +0.003937845642927106 +0.0037541109441986795 +0.0026484915038010124 +0.0030921266970567 +0.003259344383469494 +0.0030078815533613515 +0.0029664817239166866 +0.0027592222605759345 +0.0028017241161430125 +0.0025766146254222063 +0.0030100045167336313 +0.0019998598392075673 +0.0019491420006582571 +0.0019116174166842108 +0.0018483725731515193 +0.0017769563607565092 +0.0020958207902506245 +0.0020484101379237597 +0.0021774221933371874 +0.0019220730787466824 +0.002035159617493928 +0.0022253215828325307 +0.0024289257156803108 +0.001853792163360292 +0.0016455074466532656 +0.0017140953280100066 +0.0015999835154103207 +0.0015555250428278692 +0.002164414848562245 +0.00208829324654128 +0.002026131724758726 +0.0023033785230052338 +0.0023783343241250213 +0.002428015117884751 +0.001981939654694527 +0.001741920512205912 +0.0012444808462419353 +0.0015871601786118347 +0.0014704454491446437 +0.000998349573172648 +0.0011414455274423425 +0.0010909762928515334 +0.0011776629570578237 +0.001154786336571728 +0.0010793843415738149 +0.00064312731765451 +0.000900360570142109 +0.0009829483534848542 +0.0012498018594651265 +0.0013255464710877909 +0.0010911338008022012 +0.0009271978999481113 +0.0009681053983274682 +0.0023140844808448996 +0.0023453459394482215 +0.0024765530174991747 +0.002621937913071346 +0.0029026827418233247 +0.003492848590233026 +0.0035077768007627237 +0.0037320572699485804 +0.002571597161964415 +0.0026917208562226283 +0.0022625226432268636 +0.0020794612380070515 +0.0017675713021167623 +0.0016629274703484041 +0.0020309162786200574 +0.0017490504562168822 +0.0017391206382747282 +0.0013943623116697966 +0.0014809686365960257 +0.002683519682173817 +0.002526307375321088 +0.0017332821768144971 +0.0023157949500898 +0.0022182157518201517 +0.002480227455937911 +0.002704914265832317 +0.002575988952009367 +0.0009679570129530813 +0.0014473205152424255 +0.0014325808099102412 +0.002008902646549598 +0.002183731140476867 +0.0026067671806012894 +0.002935247372607037 +0.0031644299182711478 +0.002984764497910899 +0.0034801899355354268 +0.004664670646552076 +0.00422149327075065 +0.003807108084325363 +0.0027947948927368816 +0.002392771631667357 +0.0030427569276927613 +0.003224224573073701 +0.0029464668434318743 +0.002509732634758392 +0.002495083588568843 +0.00279679924545442 +0.0034987931978764223 +0.003382158739489147 +0.0029665457869760487 +0.0025393749645622465 +0.003023978138389165 +0.0034192770758470162 +0.002763623435768101 +0.002294737072476575 +0.0024186282792439647 +0.002758571680925917 +0.00281837177196259 +0.002599387003798367 +0.001824921945730064 +0.0018425029331127017 +0.0018538770835725828 +0.002017440522629229 +0.0016783440860530594 +0.0017189847772773063 +0.001690668894875948 +0.001647046383728715 +0.001252284760667601 +0.0013480458196940537 +0.001270605220088846 +0.00152893888317621 +0.001375824555066776 +0.0012648306618408527 +0.0013628659547518143 +0.0014425561366355024 +0.0014558963135504512 +0.0011244521456594259 +0.0009633508284218122 +0.0012577849608870703 +0.0011920027489217182 +0.001157545343810956 +0.0018993042401264334 +0.0021464387863035493 +0.0022732984038273197 +0.0023206561334872798 +0.0019496112699865964 +0.0023277172572555224 +0.002073037799018761 +0.0019218224228165124 +0.0017278491922379177 +0.0009543585053833021 +0.0010887158982818652 +0.0013202877369397463 +0.0015165503734080026 +0.0013460503966021317 +0.0014837997261616068 +0.0017935194061856838 +0.001805173696937267 +0.001876299581190685 +0.0027656106196246306 +0.0036239020170925 +0.004122523777031446 +0.0046600154340645916 +0.0045588396415546725 +0.004562929443015054 +0.004554579520227091 +0.004622473644610646 +0.002594883629036134 +0.0027283805535028944 +0.0022041620929624936 +0.0017203741824648553 +0.001725987509756387 +0.0018085430092528588 +0.0023478727402576494 +0.0022318357345294105 +0.0020322623452547284 +0.0018678118726718116 +0.0018537111626456154 +0.0016778575636814796 +0.0013369411732067757 +0.0011035359066974217 +0.000607728746395695 +0.001288016366236112 +0.0012443566877791666 +0.0014996698938303508 +0.0019840086902569365 +0.0022072511096383044 +0.0024531895429399167 +0.0026158067846425476 +0.0025030072786413624 +0.0021753708953334643 +0.001996268212340788 +0.002299201239210998 +0.001737192323150878 +0.0025130331031159464 +0.002301464410790623 +0.0024489909323100875 +0.003088949315009329 +0.0023325419298894485 +0.0028218707895058324 +0.00264155271148949 +0.0029597555089952102 +0.002819456068135526 +0.0027787062724435496 +0.003756001144510418 +0.003219001542117513 +0.0032805185483495048 +0.0032184172609204214 +0.0027703566413251252 +0.0025875489400554344 +0.002549565669389635 +0.002364849807174405 +0.0015973184494869818 +0.0021616745037577874 +0.00265171735286717 +0.0026120109731607253 +0.002487767365682623 +0.002431878306561368 +0.0024361842274177427 +0.002481295316309494 +0.0023831991509335117 +0.0014399761460050695 +0.0013445369381315706 +0.0013708622994200604 +0.0012211200399552182 +0.0009080694719581158 +0.002766036776101433 +0.002404457052894092 +0.0025380896815794265 +0.0036068318690988597 +0.0034996119700179706 +0.003722981138961085 +0.0031424907713511947 +0.0027856401082493078 +0.0015701967472641913 +0.001594143147675388 +0.0017384960445961325 +0.0006801640878181938 +0.0006960026551178005 +0.0012482172784695734 +0.002268044185534342 +0.0022353106877027818 +0.0028694851692263753 +0.0027635174672025176 +0.003253826984486165 +0.0032589037491137307 +0.0030385077639078517 +0.001738256613788719 +0.0015967781347547957 +0.0014344749348601945 +0.001663902993870286 +0.0018093228552234246 +0.002265888266539085 +0.00327379476488667 +0.003266839129159341 +0.0036035915126590304 +0.0036040291105131532 +0.003361157904864194 +0.0031715246268244823 +0.00334884024084126 +0.0027838066282509103 +0.0015056490357558047 +0.0017544042529046055 +0.00208289299587425 +0.0024082001360755485 +0.0023069694197820536 +0.0023959980491509328 +0.0020685736262284252 +0.0021185745388817806 +0.0025539371079693987 +0.002418815389926876 +0.0023886608385265524 +0.0025604112291220268 +0.0029830535719924793 +0.0028316214645555298 +0.003194148448768831 +0.003531421843602168 +0.0035002911814924157 +0.0035149997802076905 +0.0034031693264258865 +0.002754959780205209 +0.002429966648972463 +0.002274528747720563 +0.0015358135454022186 +0.0014554437200754791 +0.0015509108302438396 +0.0015575138581790323 +0.0013730659432645016 +0.001252144758932984 +0.00273509011095111 +0.0028736620620314506 +0.00290119078001824 +0.00271448134473657 +0.002863783932173312 +0.003059057611349415 +0.0034351819983989176 +0.0030311441970442324 +0.002644909992354464 +0.002556551736839155 +0.002114008840774838 +0.0023147904793066327 +0.0024841818440472963 +0.002358325873146775 +0.00203575947888605 +0.0019179852668363999 +0.0015532213675763511 +0.0018176972418094137 +0.0017026831459056322 +0.0020669570474438114 +0.0018336737074981777 +0.001569921440094358 +0.0016850577986521047 +0.0021167729901023463 +0.002272237461279224 +0.0016411526467760436 +0.001520276583972585 +0.0013361336539773113 +0.0012869042833755927 +0.001057219103156465 +0.0009146736693827216 +0.0010427338823668707 +0.0008712801178375175 +0.0014574485648216576 +0.0015024427128402 +0.0014894118094569329 +0.0014039848199497542 +0.0013522728818412414 +0.002003242989252543 +0.0018220122207024245 +0.0018581059816364645 +0.0015273228160177497 +0.0019250058011493982 +0.001876168836220528 +0.0018205206586886364 +0.0020919205739052997 +0.0018244551910424403 +0.002300703617371446 +0.0024870777202780922 +0.002310168737151616 +0.0022344308250755902 +0.002002001517806678 +0.0021109147068217584 +0.0018986157660316947 +0.0018767240091875526 +0.0012557322627110101 +0.0013139429229161396 +0.0017680232961976958 +0.002029604276385748 +0.0021904392878139612 +0.00253686167645725 +0.003071685009727086 +0.0035198094141755116 +0.004013343775193983 +0.003995771055803587 +0.0030580120439160346 +0.0027277249460230537 +0.002443434318390519 +0.001454072991879999 +0.0013822572886506726 +0.0016887582812376326 +0.001709968080236253 +0.0016840986757848742 +0.0018941153637072833 +0.0018841236589597448 +0.001833009308180253 +0.001821143863089563 +0.0016009510248277568 +0.001131412968697226 +0.0009356588162810765 +0.0010423764766614948 +0.0010195309244488378 +0.001097183724080815 +0.0010138361329076041 +0.0016647572373122835 +0.001894967467229699 +0.0019172166675176965 +0.0018803466731010397 diff --git a/test/data/pmtm_x.txt b/test/data/pmtm_x.txt new file mode 100644 index 000000000..80a232855 --- /dev/null +++ b/test/data/pmtm_x.txt @@ -0,0 +1,2000 @@ +1.2332419216924082 +2.910361798994742 +-0.5676493170845432 +1.6397715537269595 +-1.2742891784459442 +-1.651917199490056 +-0.19938640587951473 +0.4001070215854926 +0.5888130392640906 +-0.6584390574419591 +0.3086826902977877 +-0.0589714617083863 +-0.20349074224389135 +-1.091103484684142 +-0.3832278336966572 +0.01154049577289551 +-1.0596843619763976 +0.24521907035392865 +1.0678977901511288 +0.9428596540380452 +0.7274385035346738 +0.2663893423262965 +-0.8540875577960954 +-0.5825343896144174 +-0.6495131194088436 +-1.1867081226032423 +-0.5911128477026739 +-0.2627786941887874 +0.9793419607374393 +0.1785160510738163 +0.8815898418169517 +1.0510815782605434 +-0.06706763080012346 +-0.0285725876660321 +-2.58346913656774 +-0.5414221853076968 +-0.3471941048223799 +-0.31020448092692887 +-0.04392175952288435 +0.3760257386453225 +-0.7047741038248563 +1.904733731412094 +0.9447891101382806 +-1.3962013119254428 +-2.28628242470546 +-1.3852494147349619 +-0.12818033680812557 +0.5236323543133363 +0.8436152309974279 +1.5770415634926476 +2.7548876705052012 +-0.8952954467563039 +0.7785252186499759 +-0.3633208393678905 +-1.5578919758862044 +-0.28323595829625225 +-0.8145298957919912 +0.891097324720761 +-0.7250001445056138 +-0.03855076009121905 +1.4334220368729658 +-0.07850698505080944 +0.4302496151777095 +-0.7109218848576948 +0.2876613288356977 +-0.5633253517817257 +-1.2160216848041392 +-0.94770716137957 +-0.09586420552938368 +3.20287945086268 +0.9503769863542256 +0.6064410860080519 +0.11148294343520726 +1.2072990321623203 +-2.541225103131598 +0.11247251331936092 +-1.5282980211067185 +-0.5823825728742944 +0.9864214135616218 +-0.12743382702958816 +1.425716850556778 +0.7344738909914487 +-1.0897902924810448 +-0.11671089021713046 +-0.22862727846945574 +-0.36214073619632026 +-1.3749986188004402 +-0.32515462069175094 +0.9313395597101481 +1.3424533561301017 +0.6106592443644643 +-0.46265079383607144 +0.5816180560167779 +0.00845147051302042 +0.6893512815515865 +-2.5538007911498877 +-1.1633086173170588 +0.1252106277774559 +0.20753897397089868 +2.8377849797489905 +0.6327881216177204 +-1.5547578536169409 +1.038875339736731 +-1.708037753653349 +0.5058700427592142 +-0.5961746253274796 +-1.1531832221379847 +-1.2890812516782268 +2.16636241426204 +1.118555446985391 +0.5108972739741016 +0.11413369634508408 +0.12862439275827045 +0.9472663498198786 +1.1017266246864628 +-0.97280703903843 +-0.3818875584655434 +0.014347841695359242 +-1.3399510396533771 +0.9493549818513443 +0.5019572624355171 +0.3812439693651032 +0.1581426513928754 +-3.1998270523133705 +-1.5435590552351974 +-0.24378478322238484 +-0.6882241518598918 +-0.8249226410247683 +-0.03184142476447188 +-0.2709751569830692 +0.3026110880065389 +0.2260202817202389 +0.12289158091241187 +0.2789436239513657 +-0.8300583913849435 +-1.0797613083325863 +-1.644531779917999 +0.6696030832156685 +0.5444949059857387 +1.3750647360762973 +1.2192902537022439 +1.6167280071479726 +1.8215437349283217 +-0.7406504169346316 +-0.26645641333313086 +-0.3207001075848199 +-0.8177839053801832 +1.6029243228718815 +-0.6695988603155754 +0.3228877916242051 +1.0778979515541982 +0.8352179974897377 +0.086233120591585 +-0.7887224935592686 +0.015570319590701986 +-1.0604033266660626 +-1.6157808245093959 +1.4038208071167881 +1.2211753455379666 +2.297858701540512 +0.9732519509760384 +2.724841228747108 +1.2286941027971083 +-2.1171156810752096 +-2.074324844795234 +-0.4163693844964603 +-0.9252049528612908 +-0.4528292629822389 +1.38378655072086 +2.5112060277122783 +1.3912353364083265 +0.9363485670922036 +2.5599480181107426 +-0.31969492560975576 +-1.2595661767344948 +-1.595049578928503 +-1.5446865779037724 +-0.22732193250578386 +-0.5518399685791222 +-1.0493934871104067 +-0.28488688986272215 +1.2452191600187832 +1.4002997971200135 +0.8935851972110228 +1.5038466374264536 +-2.0839793468450334 +0.55551723994344 +-0.22733677183375545 +-0.15876523170862056 +0.38263731830132475 +1.8896246350430879 +1.4587670176899747 +-1.497161606040225 +0.7156794043585843 +0.016215269299688195 +-1.2363322648771262 +-1.7902828616550335 +-1.0786052266681938 +-0.9271058811101839 +0.7588022877412228 +0.6113359978265158 +0.4970718834038964 +0.5303816939706686 +-0.6063419794346019 +-2.5062117204203953 +-1.5987092902973687 +-1.332363806038158 +-2.024845838896398 +1.194694850522317 +-1.3576283776995792 +1.4221268805161646 +0.5142078975462676 +-0.0552343325340659 +0.33863901659804374 +-1.1125492028327677 +-1.2268379330931642 +-1.680597828627236 +0.8167425063511761 +1.300635783203076 +1.495454248596918 +1.5312542920757477 +1.5354540368185234 +1.0032708586815235 +0.08508362624253302 +-0.17739285840799002 +-1.7091033897928543 +-0.779670333953882 +0.2413599135208856 +-0.4164656360317411 +0.8097813664868218 +0.8124886867374047 +2.050441230908795 +0.7815052856281212 +0.7854554156654425 +-0.1863469038834038 +0.009233809813885108 +-0.9035142284128447 +-0.19386418582925413 +-0.31913999593775616 +1.196589459145498 +4.074272857910987 +0.9066033559450513 +0.26342235525306196 +0.5492386822306453 +-2.3726357431976997 +0.12822835447902103 +-1.6565887003813526 +0.25849016804487235 +0.5856139154393447 +0.7419917523984044 +0.2827217681606117 +1.2263287143561095 +1.4335769027480367 +0.37362624626639906 +0.5870746594856115 +-2.3885891501586882 +-0.7897545136472344 +-1.6593704748167877 +0.423652495417755 +1.3506487486082308 +0.2323341367592635 +2.0918420753473805 +-0.16583938378843144 +0.3144140520182393 +-1.1567143624377447 +-1.7583241190216587 +-1.5461821161342786 +-1.7600527562453772 +1.8297707326547794 +-1.638220237032563 +-0.29004640713565233 +-1.1755567957490238 +-1.0339298197397284 +-3.1008556716312237 +-0.20683065406497347 +-0.9595572954260836 +-1.8399346679564341 +-1.6099925781525137 +-1.008962039182543 +0.5305615547386352 +-1.022092991007391 +1.2157468370795108 +0.2191909429978788 +-0.6512794149930498 +-0.1567912247472234 +-0.654255121300569 +-1.1537026845886178 +-0.2782310481463532 +0.17566913898837283 +0.18297964652360832 +2.1114397332933166 +2.0111832535717387 +0.3813988511870663 +-1.3357645657755475 +-1.9819874820824195 +-0.7489957828600049 +-1.073639203572011 +-1.1222077683144647 +0.4410337773364291 +-0.3756347005730033 +1.3404205543227987 +-0.7830764237167246 +-2.144746341302755 +-0.5171375723794291 +-1.7909468786216214 +0.5311191174875418 +0.5636527065924821 +-0.9211349012368182 +-0.6577200281713517 +0.5926215949741094 +0.6839175382679443 +2.1943344223438555 +-0.039278330360410396 +0.8964939864027908 +0.4282264883250867 +1.5197235388740844 +-1.1884671298388911 +-0.7842855352349457 +1.9847423417028212 +0.07064799232929753 +-0.8155029699210969 +0.8957453114562957 +0.8092744998362928 +-0.6719978246275902 +-1.1597090425835272 +-2.362909929145892 +0.9137869361644192 +-0.10764484304986296 +-0.2386697978064241 +1.2108293583005274 +1.8343950087958736 +-0.2392797175028223 +0.5342802044631758 +-0.7913867239398923 +0.8416983551478779 +-0.8410742492010743 +-1.9337023751424498 +-0.4200804711267556 +0.7580679731326514 +2.909600370031535 +1.0395674680807685 +1.3805895754760806 +1.5097431458701571 +0.19975497749480697 +-1.6787787051130862 +-1.1610645542809734 +-1.4668419406383428 +0.39773484104879375 +1.84933415543883 +0.7870753479386345 +2.0547617433798706 +0.11225917214045467 +0.4683183843712028 +-0.48548712956742524 +0.8212422160372694 +-0.7060360769730122 +-0.04130382824951673 +-0.6502036010023184 +-0.32438564584565444 +1.203719968425815 +0.18156140346386618 +-0.5527126885867486 +0.006899600334447975 +1.2901574861850542 +-1.2013380984852111 +-0.7791715590731996 +-1.4027388567827201 +-2.3594099179539043 +0.30944408733173456 +2.502676890729204 +0.6684716963303857 +-0.3411275677658192 +-0.681655229869306 +0.055172879240954154 +-1.2293482888670413 +-0.016378314580462017 +-1.0847821722434037 +-2.394540879820492 +-0.13045426942618338 +1.520941466155255 +2.0264761124712662 +2.0939515703064746 +1.3097373037770115 +0.7643743518987893 +1.0850155050953967 +0.5344323803880655 +-0.6334284215072281 +-0.7851347649180489 +0.02926839410280513 +1.5116473491119653 +2.208174834412731 +0.5614576904292415 +1.8216874818687077 +-1.0339641257001682 +-1.2743481231994678 +-1.3869508765888692 +-1.4709673905870781 +0.5608842932552034 +0.12193109139551178 +2.6605542539362843 +0.9938714736685968 +2.675297249205561 +-2.1209514331269426 +0.052799768867023755 +-0.5255335151504801 +0.9351889633997552 +-0.547292996867391 +1.4701445569125362 +2.2017528454925035 +0.18870122287341173 +-0.19065664915876912 +1.667211007773195 +-0.506059999178022 +-0.4661701884735241 +-1.3802457763094103 +-0.8991893434281207 +-0.2125920753676953 +0.403186763927702 +0.4446583257562595 +-0.13789165577215 +0.15307228786518834 +1.1013197527307341 +-1.8752839930233745 +-1.4834616763165382 +-2.3747857874701417 +-1.3279467602072343 +-0.3237956800478681 +2.0557332369448806 +0.3048899975231223 +-0.2586212703322621 +0.546451187212676 +1.267238259901895 +1.3308638190430293 +-0.7680917677565253 +-0.8136268429069078 +0.18586171245979477 +-0.5852776092939447 +-0.2286248479183285 +-0.02205057323630094 +0.4243888095613974 +2.058003564006352 +0.2773574909354787 +0.26174651074496447 +-1.3428363366311324 +-0.20527158144374913 +-0.7508238706973115 +-0.36747323508860613 +-0.33594319387243327 +-0.43308132547470457 +0.7237020286836725 +-0.28410901693445734 +0.47042126435362175 +2.6162067347507527 +1.363296149188449 +0.058758599597730665 +-0.5619356388738933 +0.01753836417900656 +0.0804837765889505 +1.2407671709889763 +2.0147800432533787 +-0.021257746164710323 +0.6180275741271027 +0.28186615743364735 +-0.8641358973426043 +-1.8032005831119506 +0.27212028110038866 +-0.14120365287422565 +-1.2197930104532755 +-0.7436610366153886 +1.2362162878058327 +0.31116166099796894 +-0.3892822349000674 +0.061559042249668405 +-1.153750706336038 +0.040600308303838206 +1.3065729731747777 +-2.509969699087442 +0.5284858507458567 +0.7314494890535841 +-0.033538523330313375 +1.9616579572233284 +-0.07935770791749885 +-1.573232702782509 +-1.4323312539633368 +-0.2308536536997211 +-0.5896897741716953 +0.19363790548718862 +0.18175605417361484 +1.5693715127902141 +-1.1957961959926675 +0.6954948821392181 +0.44581332854008526 +0.25113259592577564 +0.7581664260959644 +-1.4854412320475903 +-0.7475464492930753 +-2.7196841851601983 +-1.2243739133749758 +1.2491619366411606 +-0.9344469973335134 +2.414845832812527 +0.32491473972204593 +0.8367842817216118 +-1.4852950555115616 +-0.05420832696353628 +-1.0014105487332634 +0.4450442133596958 +-0.855761428051576 +-0.42633804683347815 +0.052939137970500205 +2.9747074872978843 +0.47930556937731855 +-1.299995856643692 +0.6395501974000526 +-0.7840645609559588 +-1.3558722790700313 +-0.29219955572308487 +0.5784624102124356 +-0.3281614928261635 +0.9199145440812324 +0.6893450881069259 +0.2309169865470413 +0.7845416597734298 +0.41234999683213497 +-2.179154157680663 +0.11012753486937976 +-0.660177218950498 +-0.5450526392303909 +-1.2794641366464479 +0.5518050848537388 +0.930440229881708 +0.9128160335642724 +-0.1274841540505895 +0.617078005096263 +0.7590115263558871 +0.24362970575866516 +-1.039566266912434 +0.02658682770132198 +0.7157382677068967 +0.1872179030334843 +0.9885127738658958 +0.2192984563744772 +0.37777254770427515 +1.3010200843568298 +-0.996051366607688 +-1.7307613867762184 +0.5684215090952833 +0.5640512221324884 +-0.21638465817499436 +0.07201914761516137 +2.410895255441938 +0.840387400642978 +0.4942716963519709 +0.040264913557590376 +-1.4380749272957543 +0.08888301706388924 +1.5441197408256004 +-2.7968414484192152 +0.5069825664702075 +1.754378169995101 +0.20416367163130256 +0.8987535294215698 +0.47961025090319404 +-0.9087674355525999 +-0.10244892163765973 +0.2148500102553541 +-0.5857912522835641 +0.06064545635278984 +-0.23748415815363288 +1.9275066982279645 +0.9097294174157511 +1.249673806512507 +1.4837787362406558 +-0.6062571452780445 +-1.0032005731228208 +-0.9094430754574975 +-1.0323325102969034 +-1.577945620623389 +0.7914211830253279 +-0.6325167606050742 +0.6955469966981966 +-0.5993743174902038 +1.6104652495983438 +-0.22362650824374475 +-0.33006388298604655 +-1.2628370514623135 +0.7778230982997674 +-0.7129989281458282 +1.4607199520279095 +1.9621421079985875 +0.47440493599562183 +1.2383759059444868 +0.43561716573921094 +1.8059727796210894 +-1.8032365223944573 +-2.5845486053733993 +-0.49816632324777843 +-1.2786253969394508 +-0.28013215303448746 +1.1404503688959728 +-0.2980531234625121 +1.8807194425209088 +0.730423619571954 +1.1133918248279524 +-1.1208679777011645 +-0.08697136305168851 +-1.92792729078226 +-0.06818271622468 +1.4324394728271583 +0.16080660969181804 +1.0873710710727538 +2.4436961845845824 +-0.4754893620434411 +-1.4194061687394899 +0.12459451834012958 +-1.0234872754045412 +-1.9096958154315127 +-1.2027271533619017 +0.6552857595282531 +1.0539008520202624 +0.6484216628897616 +1.0380769579359195 +0.8734494242121554 +-1.0399852959889186 +-1.1287768693729405 +-1.7256567937219174 +0.5308720718711114 +-1.5877100788962195 +1.9231176923524969 +0.23924831409476066 +0.997968476476845 +1.7665560894673094 +1.0467990896918349 +-0.6504113095667421 +0.07956033158128972 +-2.179723589109857 +0.5724577984678281 +0.8514270027398886 +0.32752959689361394 +1.2129093089234506 +1.9795070846861131 +0.4812810227298674 +0.8544241933191221 +0.3781816449699303 +-0.43706596526183866 +-2.4205322333200865 +-1.144683473641942 +-2.285259951721635 +-0.07399446780118896 +0.019159190116537994 +0.9039596179632647 +1.1864237337665635 +1.1390315004084426 +-0.45218361143601793 +-0.7688735932866452 +0.013283313532826968 +0.4876961294891775 +-0.09142518888149248 +1.1702734937166002 +0.07911599659749513 +2.5856216216432193 +0.14624443874512028 +-0.4585174607852933 +0.22910731689331876 +-0.8743495451800923 +-2.5864911029997604 +0.2684508520554916 +0.3861884199132957 +1.9566421870428217 +1.103857333915725 +1.7049827622955562 +-0.34243339274742446 +2.1684818169114894 +2.062441570091008 +-1.1903369625118103 +-1.6947811907609829 +0.19109326861013687 +-1.4442960261573559 +0.4626263669585291 +0.6741984766054967 +1.8266300037296408 +-1.1598286704511385 +0.4324548239039245 +-0.04710043054358992 +-2.5801123093140435 +-1.1588401633151337 +-0.1798413560614982 +-1.584787445152326 +0.008977142993784604 +1.0058662210083464 +0.4774159582034394 +2.382197312155619 +1.0784522772082021 +-0.8877754825488398 +-0.4773941320360044 +0.12881659686397118 +-0.5607978352208326 +0.24790531121328246 +0.9521576922223434 +1.548162317845935 +-0.322744595462678 +0.13222342568742285 +-0.04387090444612468 +-1.9064456848904459 +-2.2109018453853406 +-0.6423544241153232 +-0.4501074152442235 +0.6155819373704057 +0.674614732191209 +0.042234726905720055 +0.9842764304540197 +0.09250528783070999 +1.176174844077723 +-1.819967412591733 +0.05042994775422083 +-0.501903034680766 +-0.03592334725578983 +-0.8876352354890306 +0.506148542149761 +0.7679827022415548 +-0.5108492932690507 +1.2938010536658824 +0.7516120768623055 +-1.0521220376267824 +0.4310120810472867 +-2.7651225824551386 +-1.2200111412201 +-0.699847110864385 +-0.40469957626405567 +0.145072296588588 +1.4830469802028772 +-0.06477845655870396 +0.3778974302889065 +-0.734139107355092 +-0.9373794058796764 +0.9323487712141747 +-1.350874591293173 +0.5765043127821095 +0.34688568184357405 +0.8404965886242717 +-0.9026101835738953 +1.8297903534764748 +0.4635405642795151 +-0.743033257779204 +-0.7715896219390788 +-1.1090075690107324 +1.0230061536561474 +-1.415863151906529 +-0.25251611747012526 +1.0718229592373576 +2.8541636883709693 +1.0663532097065527 +1.4201538833469693 +0.44360235088288474 +-0.09007139704873834 +0.2875389976660634 +1.4822125632466814 +-0.16143194892743112 +0.018996869865972932 +0.9962312310203028 +0.6968183565006814 +-1.502327376500189 +0.19306609942023673 +-0.14117767582735272 +-1.1753157571033563 +-1.216873656269027 +0.4272204235996855 +-0.2264969225436561 +0.2791191529207574 +0.14767103297728157 +0.44275616745047197 +0.7081138382976617 +0.4369438154338158 +0.07959221120653609 +0.8262254240997218 +0.35656475154124356 +-2.006213631147217 +1.4475718212008695 +-0.6764816825249234 +3.3802284300880707 +1.1992869931633914 +0.37028920789695235 +-1.7122864056557072 +-0.7069977559247285 +0.7331271114507282 +-1.4126604306629365 +-1.2598375477422672 +-1.6220269745874116 +-0.8649041756171537 +0.2303307734195449 +1.360030261727629 +-1.2532674726414088 +0.9763716667661186 +-0.7901303111385397 +-0.004688850438462344 +-1.0043457316169628 +-1.2517104626874551 +0.19374679672677486 +0.8141707566529297 +2.8341380432760133 +-0.30120266954646135 +0.10698634149792474 +-0.914429595732889 +-0.8791414232233001 +-1.314411006571548 +-1.4414278455162484 +-1.2779436551453556 +-0.8194043226375074 +0.07188516378567297 +1.237252244063275 +2.113710723628235 +0.44405838490926286 +2.136446014759455 +0.5637404627995009 +0.4106518557886545 +-1.9802005683037063 +-2.637204431123524 +0.017927442235995628 +0.6533454500856799 +-0.8912451503647937 +-0.48587370377393735 +1.1610791642472948 +1.3454674104226543 +1.0473294560735502 +-1.7272799464325497 +-0.39537779151903907 +-0.1947726138130007 +-0.34109215641508395 +-0.7428537450584043 +-0.29545995432405137 +1.740518464413358 +-0.873050129820826 +0.014086711153756148 +-0.1685418202169837 +0.28395187228044083 +-1.3591503360130583 +-2.201503731669546 +0.03902347626244124 +-0.41064368037797977 +2.586497312044667 +0.13205797007496645 +0.9800219243536842 +2.351432300176388 +0.7450928530932669 +-0.8259326888198306 +-0.5208345590266783 +1.593728206252793 +1.0916272440006638 +-1.0193831051570656 +0.9937311813804041 +2.064854968892644 +-0.7258325492683304 +0.5976880703612267 +-0.37718072002820846 +-0.5206438429915573 +-1.805075996175117 +-2.6360020843038754 +-1.3814495917723202 +2.18390918506009 +0.6792825549980186 +0.04846924102025385 +2.2768767237261036 +1.2280024037255224 +-1.171611347837584 +0.2659345305277876 +0.11039624656041247 +-1.5827763098967087 +0.23086819275212755 +-0.061723262535219814 +2.0598180812790834 +-0.26206580300249604 +0.40048309807987226 +1.1298069901216112 +-0.38855078897880097 +-0.2326239195450137 +0.7375452090410182 +-1.2353759622019616 +-1.4048415619919814 +1.8713020960721483 +0.3716170727601926 +1.3182841083724381 +0.22705434354533893 +-1.2597786223025684 +-1.2563522464984982 +0.5032206669074014 +-1.4151422577341664 +-0.9591998001674712 +-0.008979256837602145 +1.485835173464497 +0.9614142516567511 +0.741510812806945 +-0.043454091193178446 +0.8918320433336695 +-2.397323740766662 +-1.9839988571697704 +-0.26367519627700875 +-0.362147581856982 +-1.585856908604692 +0.846033825498475 +1.2784862727879773 +-0.18430146870119657 +0.7372400293858137 +1.9111060192656442 +-0.8025377851779525 +-2.1565629348320656 +-0.8412448799993402 +-1.3691717263791625 +-0.6677224431934842 +0.7191807135047807 +0.7541837856959894 +0.6185585539052959 +-0.2227101406527291 +-0.5112343919109588 +-1.3325278957406548 +-1.4141817408105797 +0.7605225557839281 +-0.6613627242852436 +-0.8583715078685565 +0.1811525382513937 +1.054345158192759 +1.2760742877435218 +1.1277349060683537 +1.3995569245340476 +-0.6528990322732655 +-0.4539005856358583 +-1.6186153544526463 +-2.6679671665315325 +-0.880953344647513 +1.7269943445783187 +0.45442207524604294 +2.02188000480847 +1.4108366351533679 +-0.28823379039271974 +1.604338478187809 +0.06441490411623318 +-0.09742279580781255 +-1.7186506891890954 +-0.9560919403175041 +0.9554600190766047 +2.008769960098965 +0.9736199285724071 +2.520952120927291 +0.18121805132156305 +0.4090376085006969 +-0.80565031280748 +0.09395094880752586 +-1.136096394735381 +-0.34040223295975686 +-1.1992981750071674 +1.1112712633635942 +1.0897357446064784 +1.3371122695477995 +0.6472164810581216 +-0.9783520987737324 +-0.14497890978193462 +1.610157546090484 +-1.450480973681409 +0.6232683452380379 +-0.2687493490120867 +-0.09940905234477049 +-0.12281186367620278 +1.3843848411438398 +0.34226111771484574 +0.5646820060707873 +-0.9990305877435499 +-2.1753622829800294 +-1.0073654437302753 +-0.3827845692558496 +0.9214171363049896 +-0.4014161783484659 +-0.843127499412945 +1.2678586254646655 +-0.4675291223280276 +-0.7997903289117677 +-0.2586342719476117 +-0.9816676375804011 +-0.6440926020199688 +0.8752865516461977 +1.3749229419480944 +0.8126095180180791 +0.4683282226293315 +-0.3847712174645772 +0.6247816447189075 +2.004060259902076 +0.23806146241255854 +-0.7750426779620175 +-1.9069071170893963 +-1.5348785146523438 +-0.2210075411000963 +-2.9331649059313167 +1.4173884611352532 +2.0525114861348186 +0.41960080628171076 +-0.6361007012849953 +0.5438791119258416 +-1.4277428227130633 +-1.3883901349665575 +0.61695138720312 +0.3145274026239255 +0.17452614156710455 +1.8583265348839881 +0.32824054776953077 +1.7987242012952254 +-0.9384082009142449 +-1.4029677507690508 +-1.6286940408678863 +-0.4527653447768051 +0.9960687884892242 +0.6746914455090296 +1.5810948703924856 +2.255326003545583 +0.6806821509243246 +1.2576403401989973 +-0.4335165285745477 +1.29092354037775 +-0.7397181565118636 +-1.3544962181259694 +-0.2085854838801083 +-0.4238870936771257 +-0.7151411873042104 +1.3497802937134569 +1.0418759335076584 +0.9630181240735485 +-1.1539715302060294 +-1.6141320620272863 +-1.490750823593307 +-1.8147266862244333 +2.382337259038976 +0.6805505156601842 +0.15589066992028444 +1.4243229052749553 +2.038545258622116 +0.9866137809426152 +0.607632650619458 +-0.3282715119682066 +-2.50714489910058 +-1.5689103151185537 +0.7508257784929804 +0.11093204477831253 +1.0682184563183281 +1.5549245051230116 +-0.21240468214450214 +0.49912978431302013 +-0.7438053329002858 +-2.2831836502650447 +-0.6067670307453319 +-1.6530981964299318 +-0.8118514387306736 +-1.030202852894789 +0.2060533089753649 +1.4395324245254117 +2.3805232625182127 +-0.8225316970414502 +0.036301671962804205 +-0.2856293168033026 +0.04396400912135623 +0.450852067819704 +-1.4148965012648071 +0.3703901409521204 +2.0397106804748772 +1.5451057319615618 +2.20899294711105 +1.5255053137992167 +2.034782608899523 +-3.429040255181712 +-1.331850562254933 +-1.1476505222938957 +-1.7326398007406394 +-0.21221972139550493 +2.231250198588125 +1.059293463203203 +1.7696022249465684 +1.9439242146989686 +-0.5992859901723602 +-1.218634365820559 +-2.3171196469757263 +-1.0863137587309035 +-1.0237097169784066 +0.08973156140181657 +0.5834338775288014 +0.27163599688892326 +-0.33566579265877317 +-0.06867031742755503 +-0.29439109087685855 +-1.7046882691848337 +-0.6477606254091577 +-0.9531450018439726 +-0.569673388823721 +1.2207502843345386 +3.115199414531648 +1.847643437628613 +1.4517078638547893 +0.3137370390185032 +-0.1792304822155688 +-0.22758772196469979 +-1.552980282978161 +-2.301575789530268 +0.12009486274763043 +-0.3928492556111663 +1.2027339863794848 +0.1694577350889065 +-0.44440017896182415 +-1.0944131228513487 +-0.027915532491460893 +1.145522206089078 +-0.7995619536230666 +-0.31851347583413175 +-0.16520796013274117 +0.5391128800739351 +3.174492083605697 +0.21873178557957196 +0.6501277210616422 +-0.36469235802475547 +0.4050311994353188 +-0.5538277575873468 +-1.3272622873301172 +-0.06690990056123591 +-1.31472092970336 +0.4284376716471935 +1.0094587506623516 +2.5738512386036305 +1.3476445718370775 +0.34207770137717386 +-1.6507630746971267 +-2.2799254013097348 +-0.4093690486264211 +-1.50920061354866 +-0.5502077055906434 +-0.5603999740307608 +0.9906201755997676 +1.2278798444100658 +2.5537369278811264 +2.126891124415772 +0.7526159102215215 +0.27496839122199257 +-2.169672009135466 +0.4667564744691577 +-1.2505893923537652 +-1.2904334212535415 +3.975270107181644 +1.3186673120677155 +0.1460803185238595 +0.31694288893506434 +-0.24000757527486588 +-2.8790450269602137 +-1.7155500640528012 +-0.279697541007498 +-0.27347668322341345 +-1.353877862072319 +0.3175246644920273 +0.849933121306011 +0.8903493409795402 +-1.3697599769142004 +-0.05368090725305946 +0.7200343492053799 +-2.5927266022625313 +-0.3702267045543534 +1.0346344226839863 +0.6893647026588368 +1.3980812492097283 +0.5249617918187336 +0.623827959686145 +-0.8356984291283536 +-0.4305230558379274 +-1.3616349702095463 +-1.6580327756250943 +0.6382340036487525 +-0.42607435900213586 +0.9389517843996538 +1.184324190477474 +-0.01488733569272127 +-1.0808412216113001 +-1.1247394976827603 +-0.03307597165957227 +-1.1102250197391907 +-0.24049709111579187 +-1.1889644792583636 +-1.631319924855389 +0.4053485714792577 +1.910064910286076 +1.2654188321563695 +0.6230616351222913 +-0.11191616985179675 +0.9591051199828973 +0.10529016207274744 +-1.4296514555111313 +-2.155410837522963 +-1.222567358157101 +0.6423436885322478 +-0.2835717720358154 +0.6130488916753453 +0.6865818166943627 +-0.350760528241071 +-0.9334944334786449 +-1.0353294769326302 +-1.550840953652335 +-2.151282076789732 +0.42757225403980564 +-0.6105318796443295 +1.8440562893542025 +0.6565926295926685 +0.5011341367318765 +1.6045878199771937 +-0.047928437093216036 +-1.2112893958930167 +-1.8269556468050245 +-1.3262340715409469 +0.09089237257152916 +1.1561512274929773 +0.8570279510772438 +0.5070769245242976 +1.1444540695545098 +0.9802314430260323 +-0.7306793466649909 +0.634109508387203 +-1.3642809912724148 +0.0892711562645706 +0.6593268337557774 +0.36564442073533604 +0.7243505284572709 +1.8720104110241527 +-0.9946383328856778 +0.3427570712113164 +-0.23987838486168 +-0.44343021576799235 +-1.8848596949512098 +-2.219192360400584 +-2.947396599976102 +0.8541186777190245 +1.8870233375751664 +0.5556696387827581 +3.1883439723379814 +-0.3319584239858954 +-1.6202985837431405 +-0.9547050554718324 +-0.8942149641022182 +-0.12666469665219926 +-0.18797719601055282 +-0.4546041527667241 +-0.7140060773176677 +0.4133070679826082 +-0.5547269503670188 +1.0326117858192627 +-0.4126445715085563 +-2.6620228126072902 +-0.6344053251942028 +-1.7314251012136945 +1.0413605392786056 +0.3612148610476124 +1.0382502632084183 +0.21262066334285534 +1.3320333974125764 +0.3739200332083303 +-0.09284986231101164 +-1.129290386968146 +-0.35661999723793925 +-3.248223135970596 +-0.14333664651781391 +1.3572235495282552 +0.6183503487466739 +1.57813357919509 +0.21352173716933498 +0.4817652118311288 +-0.8929939003859642 +0.33600886594990087 +-0.5300571643736273 +0.5669097778516465 +-0.35077687664932306 +0.24970776094530636 +1.1223210657032523 +2.4483907046821276 +-1.5811308526772558 +-1.3675369616556279 +0.9577361858793696 +1.0845175346512246 +-1.2047738230884668 +0.5447964349635223 +1.8611762757674137 +0.49871297874674325 +0.35348997264471904 +0.5228059931003846 +0.5528874612006056 +1.1076908726587018 +-0.4796641807467734 +1.2282921391726442 +-1.3396812064210222 +-1.5248730026563213 +0.23550267173279987 +0.5443279134079759 +1.271543262868823 +-1.0938763592943843 +0.6590144715126816 +-1.5245084801965973 +-0.12367823263381239 +-0.044027927718631066 +0.1795790261713186 +-0.056049244327946446 +0.17506054597818071 +1.0844545917442374 +0.7523556973519538 +0.9614985875661278 +1.8294644663101176 +1.3963008871599394 +-0.7798472167173094 +-2.6062967348605817 +-3.2953226877787034 +-2.4315955675697065 +-1.3090888997997376 +0.7561345529413628 +0.03317608317734688 +0.9146656071501708 +1.1784079637872777 +-1.0771938594860093 +-1.1592668139155045 +-1.5583986400043526 +-1.801789419140354 +-1.2482664131962773 +0.4781624786496978 +-0.1984540519411363 +1.5033274970822703 +1.3403270058701617 +1.000872838198125 +1.2840494001348057 +1.8311438631228245 +0.6583158212862323 +-2.5840338271802556 +-0.27910513471404275 +-1.5558613248994353 +-1.7017793126157903 +-0.4016918742475456 +-1.1819121763736677 +-0.32225802441899587 +1.663313894761291 +-0.7855040263036648 +1.871704954165304 +-0.6091829256612462 +0.19498029385117244 +-0.45501090688109974 +0.029438645516814854 +0.02564898763211021 +1.1608165446256058 +-0.6739183432715462 +-0.5410494933269168 +-1.3782415733174633 +-0.6406786727298686 +0.5159018195738392 +1.348511884682904 +-2.0647191536141993 +0.6557643125426615 +0.1549155093332858 +-0.08147811125080251 +0.9123972286743354 +-0.16284739963125078 +-0.2578981828455851 +-0.04051122709682231 +-1.9354805374346054 +-0.9617275940565928 +-2.0093742278483013 +-0.07423555270280247 +1.7978687984080732 +-0.7456983707535527 +1.1998679791767692 +-1.0429830117705579 +-0.09002274034430915 +-1.2593086470502735 +-1.2785286622080303 +-2.4129057656778685 +-1.2200855807436035 +0.11599567355178378 +0.880695858424007 +0.8086866147910506 +0.16778737070071348 +1.6375716732037535 +-0.5034804104323671 +-1.584913865770404 +-1.7586471252092202 +-0.884615659722096 +0.6199871849581818 +-0.11555053322806802 +1.6805825668080112 +1.226524455388796 +0.24569098381831378 +-0.5082052139927986 +-0.13167294839049806 +-0.9123440108717465 +-1.9049905895403576 +-1.603359640654103 +0.23011120857390893 +0.8306809112737368 +0.49761659920455886 +1.8261277035421306 +0.4590763354017799 +0.1935143044242566 +0.9258047239206255 +-1.3489379808338375 +-3.042955416089744 +-2.097897148525261 +-0.018168238097199862 +0.09322475105578124 +3.5603572709416498 +-0.41507661593414746 +0.5651479853239274 +0.3492676951600188 +-1.6828464241768086 +0.27017032046208 +-0.25606884050166545 +0.7338436557232778 +0.3785051523686426 +-3.241151309527476 +-0.1580361582266827 +1.311790428200211 +-0.006051948492205583 +0.5923874458569991 +-0.37525485909288714 +-1.3565137787939543 +-0.9319437520976266 +-0.2960432581643516 +0.8340790572817981 +-0.584928123038905 +0.23724455629793184 +0.2793569776494722 +1.6569130046709761 +1.8816438483269415 +0.7467040249422504 +0.5319967724882857 +-0.7507246265562677 +-1.6107228336461943 +0.3707308595705418 +2.035396832416637 +1.3150765006091232 +1.929211461381279 +-0.7344808369371794 +0.8800729165886421 +-0.4629389468830114 +-0.2556884235751373 +0.2767842596003838 +-1.4484293712300964 +1.1969178398883962 +-0.6343765790221326 +0.8498486878287108 +1.306955631164682 +1.8758400710996517 +-0.014129339023829679 +-1.2448911399541376 +0.6075971226138266 +-0.6373570718099641 +-2.722694871484799 +0.01090542780001702 +-1.3915698036171447 +1.5999329826892055 +2.3871665848155326 +0.6262391195110626 +-0.5993763624722058 +0.917912855135301 +-1.3197202937813064 +-1.818471951493772 +-2.070787538436478 +-1.7766650238302244 +0.5847961810672433 +0.4772706805343061 +1.7884844088457457 +0.7523230289550502 +0.09933052182462151 +-2.030482508319325 +-1.5844809018208708 +-0.8955703739517089 +-1.2371621319962895 +0.9660298461092851 +-1.5224135243989616 +0.6278190553206613 +1.1145755749104902 +0.08665939722631677 +0.4210198218796654 +1.3522505001202927 +-1.8594057803310036 +-1.350881516799212 +-2.2280975374190977 +0.4189205203522546 +-0.897037637298436 +-0.049177231772083774 +2.4229533059533552 +1.6324372921119972 +-0.44695319403314054 +0.7075261109118075 +-1.468113058701244 +-0.8939726496880837 +1.0253497789828498 +1.9481463341355125 +-0.13413489322209182 +0.7790060229046905 +2.039090689433083 +1.4165288580327027 +0.07599521738718187 +-0.5184867592908279 +-1.593045481584377 +-3.2719804418797738 +-0.9656686676801727 +-1.5068856031854896 +0.08107654519203966 +3.2773163995138894 +1.033886040215193 +2.3185446861122934 +-0.8016974804108495 +0.9665556624791403 +-2.482631207574253 +-1.2799262236339446 +-0.5182635104014277 +0.31108572086020153 +0.18475466751118996 +-0.27320677444500907 +-0.21767621210849053 +0.08685962937378333 +-0.7101491617571538 +-0.8881031325921771 +-1.7595406855789726 +0.24205740390784225 +-0.5391012661007059 +-0.02554983987561882 +-0.5299669804324937 +1.0858285916540753 +1.3230121604477627 +-0.12703215804554624 +-0.8801567522583447 +-2.2439524783584917 +0.06377627719837342 +-2.012148326101458 +-0.7622791224176071 +-0.22590607537321494 +0.4002332744413102 +0.1708124479930666 +0.7736485409351066 +0.5021022652426516 +1.6585878959605926 +-1.4652005567656081 +-1.0149291291962357 +0.06640223428757297 +-0.3879489509613465 +-1.3972263514248027 +1.102168502535744 +-1.8928189818153518 +0.5074102111752583 +2.376764065535254 +0.8074777086574205 +0.4825913293165733 +-0.901970052654865 +-1.3802164084718125 +-0.11310063442050844 +2.0080426582367017 +0.04061788914622172 +2.2460377042857176 +0.46069742819567594 +0.3789451649539444 +0.9597522792908786 +-1.2110696051582308 +0.13325866520894392 +-2.683266520930193 +-3.2297653745459107 +-0.46793805547443734 +0.6378988660170866 +2.0844205501251722 +1.1196683216636971 +1.7634461473893035 +0.5495772845827593 +0.3704795336767446 +-1.777787182658964 +-1.0764070758290478 +-1.40680687789982 +-0.5460062890098983 +2.6056672599724306 +-0.5951391063656357 +1.0341771376377267 +0.4881163276313664 +0.6883997011556172 +1.4836618994851896 +0.10329765671246582 +-1.6569137707293982 +-2.2427834134980182 +0.5389761423017596 +-0.6831009036025061 +0.09375400788024457 +1.465350036224374 +-0.7134313227648182 +1.8652643537256846 +-0.20619574433628662 +-1.0431063433961185 +-0.19217528058126132 +-0.0028038678422194208 +-0.5581879243997376 +1.4113500036704933 +1.1763282940637736 +2.100002729547998 +1.0724917774290308 +0.11792419503922988 +1.4397287866087307 +-1.5922230395513706 +-0.366915409929388 +1.2133725219386648 +-0.7223652135186738 +0.9436529238029085 +1.1285699079077764 +0.6517543240352595 +0.8054627514198313 +0.9268017936933436 +2.019462555422055 +0.07741095471871662 +-1.2440854857514407 +-2.782139011849625 +-0.05995688041956479 +0.5699944977695166 +0.017536308644119702 +2.0093332578503933 +1.1998897175731789 +0.8959173512640383 +-0.7952037142841872 +-1.4928713762452062 +-1.4674247764654107 +-1.9195975651234756 +-0.8315579159685427 +1.0358593766434292 +-1.446329755037992 +-0.7719723912807623 +0.8356068871648481 +0.6375100161385856 +-1.2578468717416236 +-0.2725748233810711 +0.2590219231566049 +-0.1252741716023107 +-1.8724116431001412 +-0.42154668502598064 +-0.044793663184319654 +0.6612472310127713 +0.1377323710811228 +-0.5325976112769941 +1.6008963963365903 +-1.141986202067986 +-1.1524265411545112 +-0.5226547362347524 +-2.0412389857162436 +-0.8326160659179003 +1.2788817930709306 +1.351389653603671 +-0.3520013621391278 +1.4346750269470636 +-0.3757560451692487 +-0.6673263455683162 +-0.8907163457085057 +-1.3589894543062566 +-2.1402980853197273 +0.17814006666128018 +-0.7559540397841998 +0.8353333088439274 +1.0163634616433916 +0.5069792409766699 +-1.695288910495907 +-0.44241701329589406 +-2.210466103301421 +-0.5573445340754222 +0.2941843280901765 +1.9074228797988049 +-1.2417871940498744 +1.8292621788145182 +0.6468618827678553 +0.2337068613929728 +-0.8714211620987672 +-0.5748622699056265 +-1.2586185386094388 +-1.4277804419058164 +-0.847622716958131 +0.9252989401349829 +1.3006440581821939 +2.100619889334106 +1.1719616195627478 +0.16312293341471745 +-1.4473886346237745 +-0.49423306841467807 +-1.3065850732756867 +-0.5875016795570682 +0.5655626339142146 +-0.18383045640372725 +0.3267565500427183 +0.7408065600944987 +1.0216132858417841 +2.345954095314933 +-1.1819118261733363 +0.5309098896031996 +-1.2154324136924992 +0.08887926235417154 +-0.24931023292007648 +-0.22519482565970528 +0.5498173098683272 +1.958874052259568 +2.075802582774038 +1.2700385978851187 +-0.8727783667615527 +-2.0978408964599815 +-0.5991323103624775 +-0.2810367402812852 +-2.8215677341152223 +0.3332479325989897 +2.904577085350172 +0.8115634472954021 +0.1648248690411832 +-0.6987495801696426 +-2.119976751014614 +-1.2984569935670365 +-0.6985711614588594 +-1.7929241948216217 +-0.05555082148863805 +1.0969854263490264 +0.2157210663411182 +1.4922037402783568 +1.3745016662466811 +0.2662114532706753 +1.6474315225485505 +-2.0812191867224863 +-0.7249339246595823 +-1.7357611292722117 +-1.0307788046041386 +0.7499908726853919 +1.9019115201319412 +1.1701030601980882 +2.1138667734515404 +-0.6211143077028485 +0.029141090795600844 +-1.3399109240956033 +-1.7573567834244341 +-3.440576984680601 +0.45116512994863067 +2.1838672540279322 +1.3086575537503293 +2.37632305174892 +0.8679974206887164 +-0.9214026000230244 +-1.1814887175715958 +-1.6116829034968072 +0.10237615969032832 +-1.2893784304449367 +-0.2175747074639759 +-1.024131604957499 +0.6259520695416863 +-0.6258668092315951 +0.10659345655486097 +1.0685092458823457 +1.4006365042930937 +-0.323575837175763 +-0.9027617552828076 +0.26424414811053754 +0.4190024633268112 +-2.1398537456041318 +-0.9825496315998671 +0.16664435492626484 +-0.06459148390269076 +-1.2912136388153201 +-0.9872706457877194 +-1.7401935013306031 +0.10022155928629473 +-1.418992327812687 +-1.5850332404008225 +-0.10724922192518505 +0.12404957528936789 +1.2621605412844863 +0.5777312541561722 +-1.176499914149598 +0.2713061732464675 +-1.1729683653250318 +-1.6000299687382977 +-1.6608131303196685 +0.48487098639886494 +0.2000871590658469 +-0.7437960555649009 +3.1707943643457877 +0.4673208364706461 +0.5800748479979871 +0.0458101363947267 +-2.115542765566132 +0.22114252809720103 +-0.5578995683827986 +-0.1653634073259738 +1.6596570122209013 +0.968112139245159 +-0.7222848527452941 +0.792957216536641 +1.4760104085470425 +0.9036158425794213 +-0.544340984141682 +-2.6934734382022043 +0.28742517276319546 +-0.3664014463092403 +0.5009097514734536 +2.09028932218906 +1.4027568388197929 +-2.913194252803969 +-1.3547193790930898 +-1.1370255266588536 +-2.1003100408159945 +-0.8465358775575553 +-0.6570573342976616 +-1.0021301848478628 +1.4784745888937816 +0.020934510583214716 +0.6544069952587701 +0.14163905888808748 +-0.5874463035353952 +-0.2543999116113212 +-2.2031730862338197 +-1.312191670761521 +0.021307397362512415 +0.504763187646487 +-1.6370598782076107 +1.2157361828902538 +0.5420160022821077 +1.2595532553063737 +0.4811355215848761 +-0.6250972108946848 +-0.8223332990444178 +-0.3920976489068848 +-0.08299226461501108 +-1.058706238951727 +-1.0183363486803927 +0.3899646650974197 +2.019997326180089 +1.1518294682810888 +0.70301619779403 +-0.7515501555808961 +-1.5746767696045372 +1.077032471038267 +-0.9141820110469856 +-0.34226445401267547 +0.03532015428729618 +0.8787319265371778 +0.6804903400819258 +-0.23520002499911363 +0.8019597336862947 +1.130771657754716 +-0.6241481781837019 +-1.7441490852486803 +-0.752588799587144 +0.7112864712903336 +2.0921602987003767 +-0.5962267546355804 +1.1140099389911147 +0.3757330087750199 +0.8536185911014693 +-0.14010053654909885 +-1.3976451997072794 +-2.80718819866029 +-2.0231922909879207 +-0.9154173971854191 +0.03531483728639517 +1.9847601428913781 +0.4054279714476948 +1.1810509054241003 +1.2148405745495738 +-0.07735402741878428 +-0.7242190221679581 +-1.6105474336717398 +0.0323026048631897 +1.3196002979781636 +0.7845549997676037 +1.116331199842738 +1.2353697835526292 +1.8430554831906898 +-0.021880458308059847 +-0.8212099888633873 +-0.27715317601381584 +-1.3064812665627294 +0.08280669682446096 +-1.772885821763012 +1.6353830330059576 +0.07839788970624062 +1.238549415338402 +0.3411377083771867 +1.0225876092231216 +-1.7265132472572724 +-1.8763107257068012 +0.6323796970538291 +-1.7844060031450732 +-1.0073785699827522 +0.3713340963810567 +0.01031202137464593 +1.1467066683299811 +1.984943058709378 +0.3777009711160944 +1.4171693868046804 +-2.258757157480893 +-1.2846429405497233 +-1.6830585483663665 +0.05948320181352934 +-0.9526514908265047 +-0.950577510786185 +0.6064668696343982 +-1.0060205498720411 +-0.5890881094566696 +-0.8563191918881872 +-2.479409093062377 +-0.4360806251477404 +-0.5034046341010138 +-0.936165702061527 +-1.083322189456776 +0.5337213664933018 +0.8321498737259636 +-1.3639301850380021 +1.6164345368460313 +0.1265127028030278 +-2.5625628824993956 +0.9780794732876494 +-0.9625635607110111 +-1.7824077149709232 +-0.6170276801039343 +1.0717241983412817 +-0.43979462291374793 +0.3354725470097886 +0.2075111464388784 +-0.7339863266447478 +-0.6053501311213297 +-1.7120134581146322 +-1.0595332354715188 +-0.11828962646801508 +-1.9110699462789689 +-1.1091900405937989 +-0.06707838896214358 +0.8888708299222445 +0.5118116655812203 +-1.0401385304181132 +0.5034165175695929 +0.13300428580090196 +-0.9861234563959167 +3.0165188312808535 +-0.056292987318715904 +1.792409526859303 +0.9369784281614584 +-0.9158348665284223 +2.1888513703111503 +-1.3725685247524129 +-0.7352858646175291 +0.9208149102693697 +-0.16628584340394825 +0.061979682094687516 +0.1635971598827578 +1.0542188929889953 +2.89016798986642 +0.3480569559943468 +0.08747795862214489 +-0.7645951477578474 +-1.2210664183204893 +-1.1724815977966516 +-0.1901428655254701 +-0.22080752705842221 +-0.45170316339702 +2.460978457993895 +0.13043029162274877 +0.4785803722827694 +0.38911440061699576 +-1.9912221764784475 +-1.8180986947236684 +-2.29366185768738 +-3.473313957097103 +1.8239830146468445 +-0.4213364361853486 +1.6490764720803286 +1.0171940815300242 +-0.18512133630366112 +0.2686271928050488 +0.09572757642869001 +-1.951830556939675 +0.19810444742255995 +0.38782173028834976 +-0.40639347234878637 +0.9233643997117926 +-0.4095840633379271 +1.5718737915999004 +0.6807069734163109 +1.9175349478967987 +-1.266090129711366 +1.2024922212632276 +-0.979915126430636 +-0.3635092225050928 +1.1405123084428685 +1.4119673374432158 +-0.06684657323564847 +0.08476057232128975 +-0.10580502195433528 +1.3837672906950127 +-0.444715082053202 +-1.253727868555588 +-0.9174829771892822 +0.2267511468154223 +-0.4679066699960889 +0.6182991766470818 +-1.5063879483026903 +0.33241613454687424 +-0.25756820488258514 +-0.33013903446410026 +-1.070984650476019 +-1.2311227735606722 +-1.491328110606156 +-0.15127168023673243 +1.1270660326610715 +-1.2260160205399677 +2.561861526332707 diff --git a/test/data/pmtm_y.txt b/test/data/pmtm_y.txt new file mode 100644 index 000000000..23064f0ee --- /dev/null +++ b/test/data/pmtm_y.txt @@ -0,0 +1,2000 @@ +1.2830508519408894 +0.6814276716581166 +2.531155344484434 +1.1958401922903032 +-0.43246910341953415 +1.127840681827992 +1.6446834492206097 +-1.725303609735589 +-1.9525138027572466 +0.5505410964567631 +-0.02395158871240476 +-0.7760470432609001 +2.1873726997013705 +0.7969811724379617 +-0.20742133419980135 +-0.5815725836713143 +-1.0854492486530134 +-0.013628510444493425 +-2.1067839173636944 +-0.11856139177385472 +1.004411364284748 +-0.27205737106703254 +1.2854430396967844 +-0.7024126959030604 +1.2846638756054691 +-1.1222094270036624 +0.21857804424369442 +-0.5174914508676562 +-1.3624564875456664 +-2.067653430072382 +1.3315868262693333 +0.7404880996301604 +2.6283557350645643 +0.959621609206085 +-1.1905999692829607 +1.6900665829948105 +-0.8791739870459776 +-0.02665630896121629 +-1.6732968006214097 +0.024049326765181456 +0.8349884630075636 +1.600871356900421 +1.4501054369457718 +0.9102455877185802 +0.7322629964530524 +0.30234499349487715 +-1.3262469875639347 +-0.40063328497222783 +-2.0155309341275442 +-2.4931630672989877 +0.1665657255428162 +0.7855170887019939 +1.171792817647587 +2.723900397013102 +1.8206677270483178 +1.8637929589789102 +-0.367434614965928 +-0.042421061437005636 +-1.5422267372479193 +-0.8187651066957975 +-1.7477694918439395 +0.6576174608422635 +1.8780374136814308 +-0.10711952704716432 +0.3653006982416702 +-0.7240814301753451 +-1.3961935444972609 +-0.04866303520232995 +-0.8837894388107559 +0.15180799034980053 +0.3967753097481118 +1.523576775735319 +-1.3061474510695483 +-0.07106635947489814 +0.4159004465692715 +0.34791213278601574 +0.560647270681015 +-1.590680237554783 +-1.5560039416115607 +-0.8729402676722079 +0.695220483162204 +0.6942200281615326 +2.0767581701582123 +0.17912461374617528 +0.9989188950859208 +0.38718843946713305 +-2.2317930195536344 +-0.6546677028266554 +0.7886371445418233 +-1.7855704638803582 +-0.6370812619518761 +-0.4289726539563279 +2.0801244737444504 +0.39454244100262237 +1.3391432414087436 +-1.6447598213201984 +-2.410337501284057 +0.046299271304535594 +-0.3577502499029046 +-0.307711025218745 +0.9670675872049028 +0.6553762840648805 +1.090961687783552 +0.0761641996609198 +0.5972908275074467 +-1.1003172519489046 +-1.4784850650815915 +-1.4282884678095886 +-0.8123211061933121 +1.0150496197606842 +0.37753002599239344 +0.9939301256932019 +1.4943359442343596 +2.1547243038570207 +1.1682041646138912 +0.06367244204669893 +-1.0208279672009768 +-0.3538364108603774 +-2.634573706309604 +-0.5460523467518656 +0.943244353413294 +0.3598334359474104 +1.5278757480818461 +1.1234867925156742 +1.1728135199445866 +-0.4934673103750951 +1.0834768881703152 +-0.5544456580125909 +-0.8100467681649927 +-1.7783838687828815 +-0.19314866614174656 +-0.8578205806232713 +0.6624690245198124 +-0.278083905205171 +0.5238194150193458 +0.15220691483953874 +-1.0723313554768348 +0.6818413214016286 +0.4178389897312541 +0.826115516054447 +0.5907285748075428 +1.3677873808090395 +0.2938122991731117 +1.082870779398474 +-0.5346319187104496 +0.2398464344174333 +0.5543708610060503 +-2.0519231204626447 +-1.1599389713060329 +-2.0538666123000135 +0.6062810028472617 +1.8186146884155918 +2.094508245912679 +-0.07460913414767889 +-0.12124956583199797 +-0.10215852079762335 +-0.982908645623789 +-1.4786108073925668 +-3.4755914621770323 +0.048891475775269644 +-0.2344221750594549 +1.281146685116406 +1.2155851082513853 +-2.027487488048307 +0.2864721200388702 +0.7860849753577168 +0.45738022528716504 +-1.2682756379224271 +-0.4305408775185098 +-0.34980416852509 +0.9218744254191823 +2.5513893895431643 +0.03962125438833297 +3.050993046548421 +0.802249347455348 +-0.7990345528045993 +-1.3981248190551248 +-0.8332882019852732 +-0.8130336218485931 +-0.17687396388831045 +0.8270066973995961 +0.9493783663547668 +-0.07345347499156019 +0.2608974028250425 +-0.17110337952083843 +-0.5904527415066269 +-0.23263230763331688 +-0.6103407676334385 +-1.1785946840356327 +-1.5866212112831128 +-0.3258495883326323 +1.1848328112814386 +0.8214505490716839 +2.391396279840689 +-0.23060822089741473 +0.29417920908905315 +0.5635868178523724 +-1.8113218270334266 +-1.0071516358828576 +-1.8025322969030293 +-0.9311035061237245 +-0.8595012451946009 +0.016307466770255963 +1.3186877510128983 +0.3476341391859302 +0.5830396199243429 +0.43995470560306504 +-0.5884996209947316 +-0.17557550636665897 +0.1671964845866557 +2.3573184668348657 +1.3449896653347633 +-0.5409422433709727 +1.2468250769896985 +1.2551953738390889 +0.942656022330899 +0.22935331367927647 +-1.4429626468043308 +-0.9233650655605858 +-0.24258976815319516 +0.21573698393155052 +2.6167806966898413 +-0.6534607992001176 +1.8067353790434564 +1.7742088681546624 +-0.5905990705467253 +-0.09212932844269345 +-1.0400581911250637 +-1.984483861649284 +-0.4871129556783398 +1.668133274847552 +0.18863813833367116 +1.5785763318362394 +-0.17028302743481294 +-0.3338738612845634 +-1.239045479045436 +-2.022469589809576 +-1.8935810883968691 +-1.850699542952939 +-1.0298487896427302 +-1.6435381864862024 +0.08093195489503235 +0.17613783120315996 +0.1573244930694142 +0.27094903892604644 +1.1717675078340395 +-0.592583128276642 +-0.5300287428193706 +0.6344407268423926 +0.09681713235863021 +0.1293868501992837 +1.673802409958094 +3.180929154179876 +0.4340918012959025 +1.436158107560496 +-0.8139940607777437 +-1.836250496066918 +-1.6284655078300474 +-1.0247884789894397 +-2.549516479496121 +-1.5985947029091983 +0.5307191071444863 +1.551620123720412 +1.7365092404592497 +1.0251255499617433 +-0.17980469422565315 +-0.057769409519556 +1.5417936861659371 +1.0257582112271322 +-0.6471666045367209 +1.4144322284093356 +-0.03279857768186534 +1.3018581436369618 +1.0954792566060312 +1.3510824300699262 +-1.2149384607490954 +0.03647178545255292 +-0.7824302802913393 +-0.6222979236806598 +-1.6163967619727486 +-0.3935763319664896 +-0.9563551035896046 +0.21719393552603505 +-0.018843425601478003 +0.23815835229647225 +0.16924131061116793 +0.2601734320490675 +-2.020119336660189 +-0.657434332691303 +0.4987003086597672 +0.9613152331875047 +-1.006661105798968 +1.683074500770592 +0.7822894835803273 +1.9691929807433715 +0.92930207348679 +-0.9366309982583612 +-0.681633977627137 +-0.44020501198360074 +-3.048963703731741 +-0.6139882225558844 +0.19233836276561778 +-0.19369715606523374 +-1.2813118132694707 +1.4278227593953847 +-0.6137859682115238 +0.5843740879211768 +-1.9092969256250516 +0.0020692785490347143 +0.11566137493093387 +0.5598950453274538 +-0.45021264892714696 +0.7727408728711742 +0.48111797040984183 +-0.3721014835627314 +-0.445025297781192 +-2.208958993388654 +-1.108450899795833 +-1.1485147704638243 +-1.4191527029821258 +0.6373339366838631 +-0.4608134288694994 +0.7028733314989226 +1.4759696752606106 +0.8010091616674008 +-2.397377049454392 +-1.3602040916922944 +-1.3571598232788 +-1.5043762370448972 +-1.940751225276092 +-0.043116228754539895 +0.4201544617146789 +2.230649645197575 +1.0632756235745733 +1.2932666445123338 +-0.13039695546776753 +-2.4132496816748876 +-2.4243358932203414 +-1.7024604348028376 +-1.0215151685263466 +0.5763510407826027 +-0.2466708989650751 +0.32226115478189776 +1.206908309241748 +0.025735669354588486 +-1.228419863420578 +-1.141826189924571 +-1.6313321037992077 +-0.25989191685195456 +-0.3658471978706279 +0.5459311432878085 +0.12803825339000485 +3.0677691842300088 +1.0601580094765217 +-0.33204079318905777 +-1.323605997553438 +-0.48913506784707056 +-1.3576965452489282 +-2.3029483485758506 +-1.0576004594467 +-1.6280107735275662 +1.2702024066448536 +2.8947649066570427 +1.6912944711369025 +0.2646080679535612 +1.3596459422624192 +-0.2967549962188744 +-3.1700512275928183 +-1.0956837709177962 +-0.5090851910466729 +0.5622180614723502 +0.423509444697674 +2.124759684927095 +-0.3773385948429714 +3.0469987147152775 +1.3522048262091533 +-0.8345585392552478 +-0.6630398443932517 +-1.8237306178136399 +-1.518540959062666 +0.0761553777247292 +1.573449719943389 +1.8768980732555105 +3.0825562460424742 +0.2619523260825833 +-0.22301346388388985 +-3.3220865254349023 +-1.2596048291365756 +-0.8049481744831302 +-0.5500525839669838 +-0.6476466184503112 +-0.6996217633086547 +0.5400409166440157 +3.1516018534115195 +-0.3412618352724721 +0.0026644040350366893 +-1.7454070137930118 +0.213474735071149 +-0.1646204987527895 +-0.427443581486887 +-0.047538592959894904 +2.0666600277697564 +1.5288273402015773 +0.9475247640119882 +0.7244502221945905 +1.538983794692802 +-0.09294687120242551 +-0.6821969426208552 +-0.3824837797944023 +-0.6863762099968568 +-0.9872230158838493 +0.9553932061368242 +-0.6712431677401431 +0.25690877399918 +1.6457276930003548 +-0.6945782601712477 +-0.3176725770234701 +-1.1663259540347182 +-0.6735997578498081 +-0.16418546254100858 +-0.5009233980538205 +-1.5367823635888125 +1.9722092599452519 +0.39313646495264243 +0.8725885786808687 +0.9695649985349678 +-1.670186496421507 +0.3051112942648082 +-0.2098909363896686 +-0.46540516435031665 +-0.3587899706620375 +1.7929802518882365 +1.3968399563353933 +1.4833916788665913 +3.280669501415231 +0.554637302035974 +0.5887331984307709 +-1.0017407037798713 +0.8512090324136381 +-0.6828827351534053 +-0.9949939017217688 +0.5711421688184595 +-0.7649905086719977 +2.2086522634434225 +-0.5963705910322383 +0.28164496197920225 +0.32656420709302736 +-0.46830885855607896 +-0.5775059086009151 +-1.4522616726226771 +-0.0550505225013113 +1.5181863341978143 +0.18747572181267358 +-0.28464128981531434 +-0.11088151149623038 +0.8544410341801735 +-0.8623508645244322 +-0.7281854232494381 +-2.695891052165438 +-1.360416515355464 +-0.6994805103644423 +-0.6781451204320273 +2.1250250425793844 +1.9909509373597136 +-0.9794313257493109 +0.24986869919326118 +-1.5533378774621713 +-1.1168021939129733 +-0.9053777365386568 +1.1217699134256427 +0.3704364499335712 +-0.06866785247940888 +1.782439599378839 +1.827057368141166 +0.726093234946792 +2.242231433706492 +-0.7545519372102039 +-1.4101029308670687 +-0.4048630609313024 +-1.8900880510395626 +-0.4115240188869132 +0.04770757677466231 +2.31752643365024 +1.6579057143828924 +1.1953554686988284 +0.919815411239151 +0.31160802493634876 +-0.918339137692899 +-2.3669134899275672 +-2.268645462219796 +0.037781185575298484 +2.251247713385422 +1.7820562098771318 +1.998711155812167 +2.381602835474257 +-0.48512178795661803 +-1.2214144018803372 +0.150843845381198 +-1.6680776904579653 +1.6122362257240217 +0.8906168359867558 +-0.04764650269998638 +0.5775538070241774 +1.4729328942926452 +1.3006846827049778 +1.1684062120326855 +-0.24781702395566008 +-1.965786268205105 +-0.8579109764290505 +-2.123990551716143 +0.5762176568856768 +1.1598473717484141 +1.0977365846746605 +0.025333026702017203 +1.8609258329789957 +0.9879208655472527 +-1.2996470873366717 +-2.285359607203865 +0.05318015194801429 +0.020725422945831462 +0.03592442408756735 +0.8431353062781468 +1.6482187126803503 +0.5198771244633369 +2.141698418939743 +0.34665075541038837 +-1.3542703524502029 +-1.4445087163076686 +0.5534801535191148 +-1.2376419739085054 +-1.0604868542646402 +1.7425120739059998 +1.2703134838009578 +3.154584978879271 +0.31987846627869065 +0.6380547399746985 +-0.6071544065523552 +-0.5188013219472919 +-2.540797700045881 +-0.3381347785825871 +0.7631092033232316 +0.5820529899720819 +0.5913666683229573 +0.9769609808390716 +-1.5014717736917973 +1.2418682816871354 +-0.24564264196604424 +-0.40046374528447903 +-0.29635576739287706 +-0.300974051250613 +1.418357597818464 +-0.53114656368793 +0.8763688384817615 +2.0351760019073293 +0.5732356899021817 +0.6429255414389808 +-2.2076544951199417 +-0.602308987090495 +0.1323569761845974 +-2.8279051150266308 +-0.23564427995885334 +-0.6653860321740569 +-0.079139550250508 +1.5438922078237494 +1.6780378296332126 +-0.20946140384168305 +-1.1070064643531645 +0.851189568557921 +-1.0371816729149343 +-0.20717482197917791 +-0.3479254962059404 +1.095114939882436 +-0.27111098640677456 +0.9726208175546731 +-0.2979230821988872 +-0.19162281671136516 +0.1017293010757645 +1.008275479279395 +-1.40309794079653 +-0.05453062551281185 +-0.4570554443207401 +0.6772313838398155 +3.7336426318969855 +1.1323856510015464 +-0.009159899067147093 +1.0022243844798266 +0.33702684806612027 +-2.472735988883839 +-1.5911418540040845 +-1.0358004619687828 +-0.25366668318712327 +0.6926945696400307 +0.3906947666982159 +1.384498088361957 +1.0585416041098439 +-0.8425704527608152 +-0.2118662428652579 +-2.072912987481248 +-0.1261669257275604 +-0.8016320143211721 +0.7200252243939856 +-0.40568299871646796 +1.7329213335852098 +0.6747893236449024 +0.5151439625722524 +-0.27172374742737754 +0.08345571819212672 +0.8516632237076885 +-0.05495799898284581 +-0.5583353358244647 +-0.7475762176852113 +0.6718324792742058 +-0.0465630782458647 +0.863699324843415 +1.5298581704697891 +-0.08749846035848145 +0.6049907539937472 +-1.4492247316161455 +-0.5135102465654799 +-0.2577410634082226 +-1.400141860139947 +0.06590416823901313 +1.9559749098629164 +-0.1867328694622784 +0.4345372546982008 +-0.9742493462099004 +-1.5672864414569958 +-1.8725086007644438 +-0.12791812798002655 +-0.5812201757849427 +0.37413278170370656 +0.03259003348920997 +0.8264180502667754 +1.788030766727393 +-0.6996909507735163 +-0.7585127542204093 +0.43279183741714744 +0.7433708761478987 +-1.8142447966000927 +-0.14850467478872165 +-1.2468780385750249 +1.245487024065996 +1.084184280975807 +-0.06273354809875364 +1.0967518702804748 +1.2645010247578514 +-0.7453902779674821 +-1.849687765514063 +-2.0690228153426045 +-1.8296686554936363 +0.3984553003117967 +0.9271783852247166 +0.16747943356917938 +1.7050850494163123 +-0.4777984653579783 +1.4873628371894032 +-2.715517677987015 +-1.2248309603400647 +-0.19774688022785603 +-0.5755101926362489 +0.04907010396410844 +0.07926503584247657 +2.9163140639606855 +0.49072139624114414 +1.2857834304946947 +1.2112565877791428 +-0.9275443731109052 +0.4975890640322298 +-0.5071459526317357 +-2.0755876287828423 +-0.4712756891971778 +0.44257014156556646 +1.5889797033839634 +1.6637637024570968 +1.2848494114943212 +-1.4469988083826806 +-2.1135373078888424 +0.394455138573947 +-0.12760991309134917 +-0.17560070330849292 +1.5461897541359206 +2.4347339700410986 +0.17876048519434218 +0.9929593633504137 +1.0188526739862742 +0.1203653664976821 +-0.3849799708119912 +-0.7569017891266479 +0.13551482239617862 +-3.336508893268374 +-0.005891802541197931 +0.33735227899490533 +0.4823524947970298 +1.0950659224828287 +1.1219962135747035 +-0.2849404244944846 +-0.5696517034337486 +-2.6009743256390485 +-2.065347456786956 +-0.9610959637236058 +-0.17038104725753783 +-0.47919188011260316 +-0.2295878292680018 +1.5639733311115522 +0.7226139054853906 +1.3769032701274337 +-0.04204646707985793 +-2.1166923700297056 +-3.1696297957852098 +-0.44854854926758353 +-0.22714160714259146 +1.142344755980558 +1.8650286992715523 +0.7508731062555867 +0.7365722439531683 +-0.7213574825909884 +0.6135078445596525 +-0.89917131237926 +-1.4836457630156439 +-1.04523872877832 +1.818272819445737 +1.0957438660638963 +1.3714967972196983 +1.2879848286875832 +1.0421153604831925 +0.4722543597475016 +-0.5814090170583617 +0.760534090455254 +-1.1904855624008852 +-1.43122335673296 +-0.4127512930724097 +1.7707513254289262 +1.7325771591486938 +2.1230185276227864 +0.3736323194656129 +0.1509365247027896 +-2.402095044712748 +-0.005459817911786735 +-1.0585436921556157 +-0.5317467087188009 +1.0134945341619883 +0.3144126249596848 +1.3818978267513171 +0.23320865396655222 +0.05594590066035143 +0.5416625088551567 +-0.7995574469863592 +-2.516707040206044 +-1.488921582388402 +2.3217239081337357 +0.49282718712738743 +0.8028835914686321 +0.5420417724157859 +-0.868394452916101 +0.7233835591065298 +-3.078963217553103 +-1.5111667106576072 +-2.4061789843422554 +-1.164350366705761 +0.48583200196210574 +0.51594970924856 +0.14411929911857224 +-0.6754814413224568 +0.41788840568151464 +-0.5977930738792903 +0.42948183884039903 +-1.1734058671489396 +0.46568755334091216 +-1.0684334715028996 +-2.1066454389386595 +0.07923613019905411 +1.305152920128963 +0.45511769277969 +1.568794890874111 +0.927089310722141 +0.38444738787647637 +-0.9143346503845653 +-1.0787010489202835 +-1.0853239065557065 +-0.7162640310200663 +-1.4557338503694157 +0.569519261944446 +-0.23938030352436301 +1.079003096481667 +-0.5786600802931636 +1.3627652180050318 +0.23318990348078872 +-1.490249640998662 +1.1135561158054887 +0.5515718666513003 +0.8533971610994062 +-1.4849654746477547 +-0.314697489683035 +0.24877568015791096 +0.2600915667119364 +-1.3115513643513936 +0.06729536459256735 +-1.473768560745805 +-1.1164283177125636 +-1.1363309520880007 +-0.08825938281967137 +1.9599652020733487 +-0.8794149245300397 +-0.01040794712728299 +0.11687063762373501 +0.554739930695841 +-1.6108703917681835 +-1.4758373017514765 +-0.24757275520296462 +-1.815719970047857 +1.0476089846214427 +0.9299639201166949 +1.5209689273309606 +0.9361675476527169 +-0.40966670612403255 +-1.59952764500173 +-0.4344045504467457 +-0.23549916369179713 +-0.2268538048958032 +-0.6738310000222264 +1.6481364412467276 +0.7728130685852982 +0.5480711060377301 +1.0562793029786481 +-0.028184894364378987 +0.6875305504366235 +0.9689675214241521 +0.08902966565003456 +-0.7027949014746351 +-1.948588880267896 +-0.6366716311023298 +0.9908295850241498 +0.8744565418042145 +2.3334923513569508 +1.2486413311214453 +-1.433693610850153 +0.04519067025273049 +-0.2824470094365513 +0.799643703776301 +-0.5024595352888935 +0.26301530447600924 +-0.9876238740627308 +0.49071741899662297 +-0.542492693964192 +0.43982023253834857 +-0.779475521158071 +-1.8758624129689818 +-0.9555417077677993 +-1.791756477596791 +0.6799959188494533 +2.2273835283586028 +0.7404472647643132 +1.23331681646268 +-1.0072884326886506 +2.0851793066960975 +-0.6238256270765864 +-0.19688669687641375 +-1.1523545569836604 +-0.6074945322715739 +-0.6741775251310381 +0.1306921576224292 +-0.47627140816432956 +1.0837513216311936 +-0.5373135127211587 +0.4792187027689301 +0.1825896233698777 +-0.8662308654641877 +-0.6253369865252589 +-0.06606117649585697 +-2.1817837740246007 +-1.4553606740121963 +-0.031990437154281404 +1.379264260174232 +1.296759679739484 +0.2324444972906568 +0.5801047798228592 +1.490987078818514 +-2.0301058789987194 +-1.797141446842844 +-2.417781398020316 +0.1336107446323713 +1.382578795581868 +0.5795556891719156 +2.0411056045009244 +0.35622449767470676 +0.24370435026169807 +0.4260981775096927 +-0.36314346951431553 +-0.6353714046934745 +0.8386914802737202 +-0.9140585126485149 +0.12303745636220348 +1.2472573322874028 +0.5940139819005497 +0.02392858014474042 +0.7203819946525373 +-1.0954203103535436 +-0.5559950006824466 +-1.134427787852531 +-1.023587690869415 +0.45725417291508835 +0.8788835968277533 +-1.0226505489098496 +0.6119999616890712 +-0.49082784082528375 +0.11189566468596386 +-1.305250721650232 +-0.9652155862403736 +0.30252144035230455 +1.1139675758596352 +0.7985458630745409 +-1.010334491494905 +2.4182551985874507 +2.0261281371695126 +0.8412233461053618 +2.4304721848591253 +-1.0487373121968242 +0.8426266351992685 +-2.0575558387463597 +-0.9850172418420844 +-1.1725544998966162 +1.1503995158312388 +1.3149990918221237 +0.29983865596108195 +-0.8191860772307016 +-2.69761358456779 +-1.5414065542523412 +-2.3855857947154258 +-0.28997306905405296 +0.48964246751521623 +-2.002162696442314 +-1.159602468241527 +0.47210834607286173 +1.898393843895672 +1.8409834982081525 +1.4704730772698227 +-0.9841757467555414 +-1.6086702138967668 +-1.984812760413389 +-0.03685525236396581 +0.7647989197948177 +-0.942360148200056 +0.811229735006565 +0.4197487809472672 +1.189943783064966 +1.1438891838649514 +0.6117270552920154 +-0.4635658400349894 +-1.3697742848561105 +-1.065440937293281 +-1.174335304941962 +1.7521330421303185 +0.05269860861625142 +-0.9962847920957083 +-0.23922681758860997 +1.451055597582522 +-0.3349537288792301 +-1.317815016139419 +-0.7467585983883805 +-0.19934600249011702 +0.437946868983334 +0.40750316446680285 +3.235479161182054 +2.0092896966489913 +-1.8891613081836078 +-0.951413362471371 +-0.6202766773399483 +-0.4538784445238463 +-1.2358076014095316 +-0.6336498580678472 +-0.32491530959441967 +-0.7285805421610243 +3.080817888016408 +0.7549337930065865 +2.9124429282295536 +-0.8902190124189796 +-0.8449702278746845 +-2.2598977737481345 +-1.8066603305833904 +0.31425249638115316 +0.7557649825617208 +-0.2876869949964065 +1.1020168894251987 +0.5106614726640171 +1.4154312865453829 +-0.7693246875637878 +0.967990727471571 +-2.501407881948451 +-0.6603105004643456 +-2.1008099331999097 +-0.725653514881836 +-0.4878234087757778 +2.4998740697664967 +0.7885356039833267 +0.9136060500722809 +-1.44190810038097 +-1.5478598062707207 +-0.6034787706920847 +-1.0541746459504293 +0.07284613567648301 +1.1571100521981497 +-0.3316038375451341 +-0.01946784327522011 +1.4071542915616202 +0.46696962631264655 +0.012898734542188846 +-1.4733493551733194 +-1.8996420819688642 +-0.5042605058557146 +0.9723611952638146 +-0.34651577449094034 +1.6959551518924323 +2.3207683639616326 +2.0230547055549173 +2.1042014264382507 +0.35878063244202296 +-2.202028033476479 +-1.7748253080025505 +-1.1056161861477682 +-2.039734482359779 +-0.5242048315829413 +1.8624821005954444 +0.17058355601564112 +1.1540363530352433 +0.8690686748550115 +1.8452467666831138 +-0.839608530073906 +-0.30569559101251487 +-2.182404820090105 +-1.4649269779482037 +0.326549586048581 +1.1121380663554725 +0.4788888670972451 +1.2257906208432146 +-0.08494674113751566 +0.5742491155481468 +-1.2901328334634918 +-0.6997573587237778 +-0.5986436235065734 +0.8450957684737781 +-1.1094537638559965 +0.8015439912150107 +-0.7753505295336391 +1.077889657509431 +1.3720963921975124 +-1.0671827045516395 +-0.7929297044635653 +0.2775609026064577 +0.7047329129219569 +-0.5857361017319529 +1.4858260521875002 +0.4292324873162161 +0.0771213042443889 +0.8472156779947226 +-1.1548154900980152 +-0.8262543715364135 +-1.2090088671087416 +0.42737168202303977 +-0.7285016093061113 +1.45635674178123 +0.44513384581423265 +0.9414219581829825 +0.7273235869484658 +0.05951575917744445 +0.757256552225102 +-0.3761389632453571 +-2.1450386620350144 +-0.4361195912445254 +-1.1160475296767114 +-0.3257872360296024 +-0.5203958686013769 +1.2731814797966452 +0.35251897543315847 +1.3068426135844864 +1.255976800188431 +-0.12535072110633516 +-1.5081537923336352 +-0.7124164854206378 +0.12613657226244923 +-2.7658231407796245 +0.1140048955838021 +0.7289226839452432 +1.301009928704211 +0.5723805462451024 +0.925966447791498 +-0.5540884297505375 +-0.3324880261738671 +0.19708216565654746 +-1.041825687720739 +-1.6670069770068532 +-0.1033713945758542 +1.0218812596078592 +0.6808321765089135 +2.6123367745596138 +0.14661591920122746 +-0.42507749983018067 +1.0418805458848324 +-0.6524160088424142 +-0.4157471414081554 +0.7458498195966479 +-0.6551841877990672 +0.40208463272044664 +1.820547860687031 +0.15439656720699368 +0.8266468636835648 +-1.1634133475805595 +-0.07846826036406929 +1.2846025087169624 +-1.1135941636995 +-0.9900520149634604 +1.6610853918435706 +-0.3502194567764859 +0.5744645115344484 +0.9182661490508168 +1.1947803070747707 +-1.0890428195437283 +-1.5555616710874256 +-0.6466159996685314 +-1.1401978733392004 +-2.263791829586804 +-1.7235991973019658 +-1.1443397842499285 +0.9708662341227527 +1.4041895923407295 +1.2548537194673788 +-1.061987685654224 +-2.5986246639306962 +-0.35882506415963134 +-1.0352617854759414 +-0.6055319602939515 +-0.4060950650611064 +0.27622132614576095 +2.852811436697652 +0.7972068141145521 +1.0985736804525859 +-2.1712977453024225 +-2.075126707592169 +-1.7327601024186745 +-0.8042637206316989 +-0.22612696751791211 +2.5097858389298344 +-1.169548255993286 +-0.7770899982881777 +0.6698754900656336 +-0.2816393565363299 +-1.038585105133035 +0.3651086509874063 +-1.3777346738922827 +-0.4825349014153551 +-0.3843399730616587 +-1.6006547854383524 +1.3536465094610968 +0.6947506943024002 +0.28890146939170425 +0.4345986542005159 +0.39334495079354254 +0.5171733298988168 +-0.8489668220006167 +-2.6757355692418536 +0.24654144920567544 +-0.5464778236971924 +2.432990259689988 +1.5610903848028088 +1.605203302785099 +0.24675854568097771 +-0.8432501243925737 +-1.3176853391022108 +-2.2476705618299824 +-1.7747339415750691 +0.5941419339391067 +-0.5982592484214931 +0.5282135763748793 +2.508441940243754 +0.45234651906050205 +0.38633798976447253 +0.6913373355001353 +-0.3883746076793889 +-0.48845475487048456 +-1.3294156506529309 +-0.7646790596992399 +1.6199006611747477 +2.6092766897371935 +0.9166974931288034 +0.17699351627149607 +0.496957387019652 +-0.5774241659326788 +-1.3063370173199995 +-2.9254359766834397 +-2.5011493038618466 +-0.6171606415954051 +-0.6470919031327914 +1.9100682455190954 +-0.900149391617399 +0.022366225078421786 +1.0905444826451856 +0.4690041082690113 +-1.0279971656163867 +-1.9544876361791288 +-3.3223025658126364 +-1.0636102464389912 +0.46954085500927256 +0.4668185023836576 +-0.41813871850454054 +1.9068127502191219 +1.324750539029898 +-0.1903657225157303 +-0.5055810170597124 +-0.8774066309979229 +-0.7726755727703772 +0.18405712639577498 +-0.3603218365394779 +2.176776498523962 +-0.1936851647472717 +0.6291050898371817 +-0.21308914224772935 +-0.6657424295988846 +-2.239721078203847 +0.2146804899089878 +-0.8747747757608093 +-0.7147039948003031 +0.09621531450219999 +-0.12297030121357311 +0.5811028930631712 +1.8484302215001949 +0.5212176158903336 +0.5110221049622732 +0.06758017784972004 +0.07710363980906187 +-1.4860287494372824 +-1.3330453274168292 +0.3794463201334171 +-0.3550447632074235 +2.1266509736022 +-0.12228152510332624 +1.6794002451515957 +1.6264491335754374 +-1.8762815750556256 +0.2310571281887217 +-0.43207150657349513 +-0.47212765534747575 +-0.23796502311115963 +0.40208355978773747 +1.8339755614716706 +0.30435515562898474 +-0.022010710551283008 +3.090313522579562 +1.0037105698704656 +0.13619855796896752 +0.0069517985089757595 +-0.6131589600011607 +-1.7395502135931635 +0.39675715335345885 +1.712494767971579 +1.6226131651769817 +2.1922198690111907 +1.222163316484849 +-0.1339581757930779 +-1.5027834521739396 +-1.2337278325374277 +-0.07716759690862884 +-0.4710079835669531 +0.14302838268943174 +2.40542863704247 +0.8172755984954362 +-0.9934528530556298 +-2.192751424726928 +-0.34259195814668664 +-1.430116710605411 +-1.3484767995918017 +-0.7274049117052441 +0.03723259107837334 +-0.4313190313773725 +0.9257096508795717 +-1.2446076516341174 +-0.3460888205117103 +-0.39416463306011806 +-0.3103970521632573 +-0.673242743081395 +0.3156993351403927 +1.0945375507792932 +0.44496020229747596 +-0.23878950169279145 +1.4843160675518998 +2.2037480480462133 +1.7160362656758275 +0.10247871314385366 +-2.04338927473251 +-2.239771202329007 +-1.3171614241030032 +-0.06716477989691383 +-0.5894074059612532 +-0.9810442248384508 +2.272046397951769 +0.4984950344002875 +1.5881587549652108 +0.4371042941351404 +-1.8930426328573913 +-0.8959133706654007 +-0.27719009050530674 +-1.2735167908815626 +-0.6943167244516195 +0.9081112530274998 +-0.08679068945034829 +0.26936537325486454 +1.913593819551207 +-0.3438292757697595 +-0.13312746696749322 +-1.4398690702561328 +-2.4947187848208667 +-1.0662278615129788 +-0.5615347357007338 +0.7888658419064778 +0.44800963660580906 +1.961448132262107 +-1.468021809411553 +0.38899005478991877 +-1.1200072957776084 +0.013540794822378355 +-0.8828122100105427 +1.0440692722249088 +-0.4085158813119895 +0.2702739299157687 +1.4263097833517175 +2.0045411187496995 +-0.6201495463913165 +-2.650045845034651 +-0.7781989885496974 +-0.7021470053265291 +0.5721301853583745 +-0.8484824163054856 +0.09181420895161765 +1.2582586063260885 +0.33258039787255667 +-0.06293993511272322 +0.35786443744888685 +-1.7766442001591998 +-0.0822399478897935 +-1.987409640922535 +-2.506665145487097 +-0.5292448744696959 +0.47839827988055933 +0.35325378066094687 +1.4819584659085336 +1.705235709312676 +1.2696521196216288 +-0.20792044571791857 +-0.3224378416674114 +-1.5033267449787218 +0.5586370652662641 +-1.307757820119169 +-1.1525593733445618 +-0.03839186940416062 +0.25679475881472724 +-0.327492947874635 +-0.6891593784706069 +1.729337440009176 +-0.5206520904037514 +-1.874823270669946 +0.11605116432627882 +-1.546231495170121 +1.5342374889616794 +0.2961562039092481 +0.18240275332805744 +2.2713569977404213 +0.030080484188658496 +0.008944339363617467 +0.13937530070647064 +-0.6606756555178894 +-1.590106015777005 +-2.694078071304368 +-0.7821047272181917 +1.270282552817862 +2.0274731634070156 +1.1966901857173684 +1.514898608001612 +0.3228142494912969 +0.8644676430878341 +0.548075588922233 +-1.534371447696154 +-0.5676241936558071 +0.6012759313647452 +1.871110320882413 +1.0987085320736198 +0.43622398612540914 +0.5578812389232113 +-1.332975452804961 +-1.1199863736488709 +-1.810590229261415 +-0.768751062969121 +-0.8319170763072059 +1.1456638078813346 +0.7842174292797923 +-0.18247807305564467 +1.3903172253584126 +-0.4074270261594719 +0.207316467633755 +1.8574738099541417 +-1.3886988425103655 +-0.7493908654119342 +0.5580271619587804 +-1.0150919300697099 +1.8421083432791066 +0.550228818209539 +1.7837516129320101 +0.05398805218209657 +1.730709936214555 +0.6054115549517154 +-1.6371832114371256 +0.8781533199577419 +-0.8672246849423011 +0.8066081127740026 +0.7656625339071063 +0.9461840266347648 +2.982051428703033 +-0.9508320634492072 +-1.5174458747593118 +0.22409557269148916 +-3.1146202817591906 +-0.12940111354760553 +0.7192312095078727 +-1.4864023340232837 +0.555259180416197 +0.3522936112763275 +1.883735804473234 +-0.0454829899302186 +0.8037887950483479 +-1.3520898952307452 +0.12634200196825873 +-0.5782429183908682 +-1.7736734287417675 +-1.151096179451672 +0.6444340044951375 +-1.0269928165569495 +1.8668037724774216 +2.0642439629522618 +0.6613477113645968 +-1.735259646893513 +-0.7105709727831625 +1.2866499443117259 +0.6698952344352891 +0.5457977466980627 +1.4618990978892268 +2.2944710209116055 +1.1431319671064497 +0.48126915703972906 +-0.2697765236062796 +-0.4262535085894904 +-1.183334511442131 +-1.7151723288317324 +-1.5174436816175734 +0.6078671219403694 +0.022674326120039168 +0.009877642603100312 +-0.4202803494541293 +-0.7857796302313166 +0.6866086340251543 +-0.9518398293911718 +-0.33200546372112516 +0.2643484326052551 +-0.8546151453676041 +0.7254524104135979 +3.48373692291206 +0.6156892224333207 +1.3986661595179088 +0.28231186112747003 +1.1169479194686833 +-0.9880085471810462 +-1.3682096030752176 +-0.28807722618305 +-0.6095380255393976 +-0.6846371284099255 +-1.579031873373816 +-0.45681308463899095 +0.41039918672813014 +1.376098687436338 +0.6989265720991412 +-0.04159817660645748 +0.07676736730689859 +-1.1504272594658533 +-0.20621398845601796 +-0.06185425310908432 +1.0370159783801647 +0.7655569550953907 +1.9838310363884815 +-0.9739017682351734 +2.361924374432542 +-0.8580406070076163 +-2.1831618757929574 +-2.0960856780776718 +-0.6290537548297805 +1.3018000918544894 +-0.35552048184413576 +1.3700797918726946 +0.12528410633894083 +1.5424574755403113 +-0.5516708524660423 +-1.385300246212751 +1.2253501372709876 +-0.6715802318537158 +0.7204212656293337 +0.9574907893069933 +0.798054150984473 +2.3044575446403344 +0.836974487656926 +1.1338408083303535 +-1.5537767547006063 +-1.8097479940104444 +-0.18583035764702427 +-1.3051581617722245 +-0.9979565345057204 +0.3842415891553961 +-2.041265879518362 +0.5907535292036048 +-0.12881574428815679 +1.060114526729195 +0.030547890842851807 +-2.1197872393777026 +-1.0504042529877866 +-1.176839753414571 +-0.06344728189573956 +-0.6256999105046596 +-0.7617054770708969 +0.8754806626836483 +1.4523536828215104 +0.9486812755794015 +0.6605954729422193 +-1.524533204551477 +-1.802976102755356 +-1.620187583809792 +0.02946986111278649 +0.28364060362428856 +0.9387609543264411 +1.9685604305596853 +1.6287127212783146 +0.41362322145016917 +0.16160545085845657 +1.640296283962547 +0.4906199919454133 +-1.399592072236806 +-2.4524127854690607 +-0.3924209142846467 +0.7220155988312289 +-1.0465784240718476 +2.253937846465626 +2.007114556382521 +-0.01165166663628176 +-0.9799569789126445 +-0.1996509430913309 +-0.21997977122962986 +-0.7158751569848655 +-0.5563320725427868 +0.8453711087203424 +2.812547177091722 +-0.5039697237579788 +2.3058193816093606 +-1.8362303190565903 +-1.4247191296980706 +-0.3765826847656458 +0.15845253080729305 +-1.4512717983930645 +-0.18380064421869532 +-0.22839629001143513 +-0.5901604416596802 +2.092016514801237 +0.10641999470799529 +0.03057942749573306 +1.5252389833101718 +-0.6092833236376813 +-0.9772599235982247 +0.1324928054258232 +0.24031987748066672 +-0.6186248276045213 +1.6853325890589401 +0.9594579023406122 +0.49879136081524017 +0.7619167677563119 +-0.3922687356348708 +-1.4990136460689583 +-2.158459189421389 +0.06340215956461759 +0.7874476952004026 +0.791022571121501 +1.0427906519139647 +0.861314557687654 +0.46947886961194807 +-0.210051165071386 +0.8458064657604706 +0.2095539444892457 +-1.3239109518058092 +0.1519376836786822 +-0.579779414277384 +-0.12902591988333778 +0.8287965523940916 +1.1583303451649076 +0.02231852435897219 +-1.4392194387216528 +0.21255933486710987 +-1.3971827388291358 +-0.9280989783014756 +-0.003056375200794381 +0.0833848408418958 +0.6104440735030789 +1.308548947159345 +1.4997729997792892 +0.011293494581975705 +0.35201148535155213 +0.018943628124891143 +-0.5983059088064879 +-2.4737520487268623 +0.5596285714741202 +-1.0403034359811214 +2.5330421072421694 +0.28964077073692407 +0.7314977423634694 +1.6771242187102668 +-1.3581427771249068 +-0.12401028329337266 +-0.21537955229249395 +-0.4131164202001364 +-1.314905922104296 +0.45516013717914905 +-0.39175985173252503 +1.249861296284762 +0.3992786461974577 +0.7770715509962933 +-0.8157793553900888 +-0.1746558371904361 +-1.443010850170975 +-1.8029358714271218 +-2.794260089522646 +0.47055150451207 +2.326250530777976 +0.39569081405950224 +2.3899217028143624 +0.403089838698779 +-0.8122325049266725 +-0.505147655052066 +-1.3593216581721128 +-0.25664529425580196 +-1.4470648541837865 +0.12940182905028846 +0.8755563237655047 +1.0783015528459825 +1.2375932043952693 +0.16420649304345059 +-1.4789589930547102 +-0.24970920657720114 +-1.896683271156466 +0.16256793833601824 +-0.895791502681418 +0.8627350357306411 +2.3120482406746232 +0.6117024020433623 +0.349274313285301 +1.6994967079700838 +0.3168986855522195 +-0.5505024181667658 +-0.8088349511553533 +-1.6900722952313152 +0.46205987298869666 +-0.45989061603086323 +1.6978948992416227 +0.4649065772271616 +2.406979528357422 +0.8849153335797569 +-3.102703946701629 +-0.7703793579693443 +0.3089106925061914 +-1.2699235161930729 +-1.2384247101866948 +0.44883674665042 +2.0517853174121754 +1.692983409638226 +1.064340953090136 +1.1030018413946039 +0.5183308168174039 +-0.7679318806327436 +-0.5534546736464321 +-0.9639877956261236 +0.11368439375842054 +0.621093444614392 +-0.8397568547789694 +0.4041258857169565 +-0.2794470956850721 +0.6838531659089011 +-2.2777238716446564 +-0.705828905198969 +0.10709808628607542 +-0.514761568289932 +0.823738415856352 +-0.014612171217561028 +0.04999381477958542 +-0.883704451687266 +3.5865899128160423 +0.8785591345063226 +1.0655986446737977 +-0.052557969690434136 +-1.3384004441413606 +-1.2706957189470343 +-3.1123083462795 +-1.0062838497056112 +0.16362817511448918 +0.2898494056180675 +1.6786238413090886 +1.0443994322319474 +-0.5061706982278279 +-1.7724308397563502 +-0.16926904029359813 +-1.031439238719734 +-0.25362283895786625 +0.3460399136251195 +0.46829341888541387 +1.6672613217442622 +1.1790005445139435 +0.6344416920660837 +-1.064746522092816 +-0.5479252786288464 +-0.03419246015340294 +-1.3598144307374758 +-0.18670865214990995 +0.634977399225106 +3.9183702517377146 +0.23259865530277946 +0.7470898108664469 +0.1578729296459528 +-1.5329695944183617 +-0.40408739173043395 +-0.6256386807550213 +-1.313512897976687 +-0.6327382979417151 +-0.10238021433226119 +0.2855777754612538 +0.0974616473981994 +0.2317605763901337 +-0.32924694650664577 +0.6989119190719187 +-0.6136628131333147 +-0.6230061731119245 +-1.6521138910644928 +-2.754123775110071 +0.04977325807883739 +1.2139014313656316 +2.09463175849378 +-0.8706004913115396 +0.8846702807201423 +0.15851391006233323 +-0.5416355618489352 +-1.0616621590065372 +0.9935970951549642 +-1.745760227532708 +0.2013905993060392 +1.0295728637370596 +-1.0256622179541321 +1.3898630885160528 +2.0458128331253453 +-0.28683414768770266 +-0.8790572924450567 +-2.4072672343510595 +-0.6480039539632156 +0.44876899442273155 +-1.2574176870882974 +-0.7636473118809038 +0.35063651469828283 +1.047117646544083 +1.7085274165141322 +0.5620567333545958 +-0.6700414419214253 +-1.7946345477768677 +-0.8901574095946728 +-0.04891838459789477 +-0.72178469140487 +0.8177874260153483 +1.221183250494122 +2.277657293280246 +2.143915914501515 +-1.8632330983028544 +0.5066721757088901 +-1.6005406371111057 +-2.263450717271809 +-1.1941679196308317 +-0.47735346746598895 +0.9002055602268693 +0.7352979657891514 +-0.401060457963726 +0.23951988075486397 +-1.9072941689307026 +0.9945307625848414 +-1.5947408786328476 +-0.25566375474547554 +0.0795039110020338 +-0.6544132039877467 +-0.9394552784191776 +-0.5805113660171503 +1.7580662310374198 +0.46811000846759837 +1.0628963509416796 +-1.0556939817362516 +-3.8783463060866317 +-2.036187522113993 +0.20792993266383253 +0.20781778403381804 +2.4584876159411855 +1.297581327772405 +-0.8420553172116854 +3.0704622936248045 +1.0729534851382057 +-2.0477328679632425 +-0.7300572809890971 +-0.9955730610040233 +-1.345549153365861 +-1.8136507657770877 +-0.3591326270619932 +1.2256180992497985 +0.39514927347804707 +-0.2693522939660836 +0.04914047499113456 +2.017980021984661 +-0.705421428687684 +-0.18172312361055687 +-1.1291669998858391 +-1.557411361724021 +-0.5393009716827105 +1.4933435115332243 +0.9992304005724918 +0.5406500961625815 +0.8609249146552537 +1.4933581319609195 +0.011873126363226127 +-1.2858563924490911 +-0.28665373852486586 +0.9411248355129069 +0.6581832218926129 +2.424475502352127 +2.1870768824196976 +1.1869499226498048 +-1.5563869169940032 +-1.7838555617207268 +-1.9599967438383927 +0.09656542389453437 +-0.6137109445914574 +1.9011163092424037 +0.4674067678533552 +0.9405175090996775 +0.7269649799800388 +1.8717058082471154 +1.053820920176824 +-0.40119848596039054 +-1.4513172311584617 +-1.326441821986831 +-0.9508102363634472 +0.6812266053253716 +1.6016840454737558 +2.59608732269255 +1.9893037377309408 +-0.4901576581392191 +1.006039465324733 +-0.461333782708073 +-1.6602312090608689 +-1.1519047686571486 +-0.7321233985563663 +0.0019629073184969504 +0.7295055829796142 +0.8155528333992436 +0.5064067576624414 +1.8202883608203966 +1.4470700932090814 +-0.04267897096431117 +-0.8812158427044103 +0.47111354118443205 +-0.9565824755961774 +-0.30136636360041 +0.6445606083682941 +1.9471617365102174 +0.8491833075038903 +1.1370114049526325 +-0.10012667792198902 +-0.3647793196719613 +-2.929094129110296 +0.44565439613396074 +0.41877083211775445 +-1.0602004669393406 +-1.8870685096807647 +2.6078914943599605 +1.0101317917948265 +1.5216539618621199 +0.5929238747110412 +-0.17413516495342812 +0.22258007527305002 +-0.4750591546494399 +-2.292758132888785 +0.6796705674512981 +0.24744538748620903 +1.144982788841706 +1.1706447208936297 +0.9310024033753237 +-0.5577055970246613 +-1.1592243194916012 +-2.025240284496051 +0.14597740836288908 +-0.49385496346478325 +0.4532169616004361 +1.6226180072085774 +-0.20497649015215946 +-0.18371239417776075 +0.41151568924485726 +0.690617470849595 +-1.456710493591622 +-1.7025977850967413 +-0.41687867040342197 +-0.27349095699596354 +0.557116718559201 +1.2803180726969208 +1.9955817755724428 +-0.7856831882071497 +0.7324649319549483 +0.36828271336757784 +-2.28918109307081 +-0.8578463509791749 +0.11638483246090892 +-2.108598610176682 +0.0422612005418078 +0.011728414765267425 +1.6580112852639586 +-0.17124976859008323 +-0.5427515479334745 +1.294699338757268 +-0.10555759626868239 +0.4189360756423566 +-0.08397348130772042 +0.027626868245141156 +0.12011437979412183 +-0.7339787260005508 +0.9442476140899241 +1.1572778910168204 +1.0944231032467706 +-0.9123969467509568 +-0.496465254250702 +0.7670970834463935 +-1.5024803244753389 +-0.48167948216649764 +0.1775985047333738 +-0.3297428516133061 +1.3131849939146816 +1.1626451156696054 +-1.7893019646019237 +2.2158032291559207 +0.787483035278866 +0.25980661322010046 +-0.09350117899803578 +-0.9300583573651209 +-1.199149221251011 +0.11797896493482579 +1.453615450983761 +2.86173443314188 +-0.41426405467612326 +1.8676041082849235 +-1.6400841709649412 +-0.14740777141834616 +-1.023724155597747 +-2.5397922910506043 +2.4996561538353617 +-0.6187753930514912 +0.24364079471364952 +0.5001219149254802 +0.21236577237581672 +0.2128702573019677 +-0.2585097796724961 +1.1410103321503038 +0.47071849148945544 +0.37543823219851147 +-0.6574009592985306 +1.6620445642698933 +0.7521838637022826 +0.6623390974397281 +1.1336664258242677 +-1.1953535444556234 +-2.992874907314844 +-1.3646027234254716 +-1.7944139808664206 +0.2655668044471651 +-0.26254909551675004 +2.0273837297372292 +0.42627601366357715 +1.5773579747637463 +1.078159087862526 +0.39213359205536336 +-1.5570704178122767 +-0.8909048623500362 +-1.0776343773763493 +-1.164949270796592 +-0.3051762160492005 +0.10450738286946037 +0.6407685138795532 +0.08951104894206452 +-0.632237959455922 +-0.645496405548631 +-0.8769276247201554 +0.04936532158129736 +-1.5391202041943126 +0.9696981794967102 diff --git a/test/multitaper.jl b/test/multitaper.jl new file mode 100644 index 000000000..1ca09ebe1 --- /dev/null +++ b/test/multitaper.jl @@ -0,0 +1,343 @@ +const epsilon = 10^-3 + +@testset "Configuration objects" begin + @test_throws ArgumentError MTConfig{Float64}(100; nfft = 99) + @test_throws ArgumentError MTConfig{Float64}(100; fs=-1) + @test_throws DimensionMismatch MTConfig{Float64}(100; window = rand(1, 200)) + @test_throws ArgumentError MTConfig{Complex{Float64}}(100; onesided=true) + + @testset "`MTSpectrogramConfig` with `n_samples`=$(n_samples), `n_samples_per_window`=$(n_samples_per_window), `n_overlap`=$(n_overlap) " for n_samples in (20:20:100), n_samples_per_window in (20:20:100), n_overlap in (0:20:(n_samples_per_window-1)) + config = MTSpectrogramConfig{Float64}(n_samples, n_samples_per_window, n_overlap) + @test length(config.time) == length(arraysplit(1:n_samples, n_samples_per_window, n_overlap)) + end + + @testset "`MTConfig` inner constructor errors" begin + n_samples = 100 + nfft = 200 + ntapers = 5 + fs = 1 + window = rand(n_samples, ntapers) + for T in (Float32, Float64, Complex{Float32}, Complex{Float64}) + fft_input_tmp = Vector{T}(undef, nfft) + onesided = T <: Real + fft_flags = FFTW.ESTIMATE + freqs = onesided ? rfftfreq(nfft, fs) : fftfreq(nfft, fs) + fft_output_tmp = Vector{fftouttype(T)}(undef, length(freqs)) + r = fs*ntapers*ones(ntapers) + plan = onesided ? plan_rfft(fft_input_tmp; flags=fft_flags) : + plan_fft(fft_input_tmp; flags=fft_flags) + # Test that the current configuation is valid so we know if it errors later + # it's because we changed it, not that it was always broken + @test MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) isa MTConfig + # now do a series of changes (in let-blocks to introduce new local bindings) + # and check that they are each invalid + let n_samples = 201 + @test_throws ArgumentError MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) + end + let n_samples = -1 + @test_throws ArgumentError MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) + end + let ntapers = -1 + @test_throws ArgumentError MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) + end + let fs = -1 + @test_throws ArgumentError MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) + end + let fft_input_tmp = Vector{T}(undef, 2*nfft) + @test_throws DimensionMismatch MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) + end + let nfft = 2*nfft, fft_input_tmp = Vector{T}(undef, 2*nfft) + @test_throws DimensionMismatch MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) + end + let window = rand(2*ntapers, n_samples) + @test_throws DimensionMismatch MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) + end + let r = 1.0 + @test_throws DimensionMismatch MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) + end + if T <: Complex + let onesided=true, freqs=rfftfreq(nfft, fs), fft_output_tmp=Vector{fftouttype(T)}(undef, length(freqs)), plan=plan_fft(fft_input_tmp; flags=fft_flags) + @test_throws ArgumentError MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) + end + end + # let's check that our original config is still valid, meaning we haven't + # accidentally broken the config by not properly scoping our changes + # (and therefore invalidating the tests that follow). + @test MTConfig{T}(n_samples, nfft, ntapers, freqs, fs, plan, fft_input_tmp, fft_output_tmp, window, onesided, r) isa MTConfig + end + end + +end + +@testset "`dpss_config`" begin + dpss_config = DSP.Periodograms.dpss_config(Float64, 1024; keep_only_large_evals=false, weight_by_evals=false) + mt_config = MTConfig{Float64}(1024) + + @test dpss_config.window ≈ mt_config.window + @test dpss_config.ntapers == mt_config.ntapers + @test dpss_config.r ≈ mt_config.r + + dpss_config = DSP.Periodograms.dpss_config(Float64, 1024; keep_only_large_evals=false, weight_by_evals=true) + @test dpss_config.window ≈ mt_config.window + @test dpss_config.ntapers == mt_config.ntapers + # should be different since we're weighting by eigenvalues now + @test sum(abs, dpss_config.r - mt_config.r) > 0.1 +end + +avg_coh(x) = dropdims(mean(coherence(x); dims=3); dims=3) + +@testset "Coherence (synthetic data)" begin + fs = 1000.0 + n_samples = 1024 + t = (0:1023) ./ fs + sin_1 = sin.(2 * π * 12.0 * t) # 12 Hz sinusoid signal + sin_2 = sin.(2 * π * 12.0 * t .+ π) + noise = rand(1024) * 2 .- 1 + + same_signal = Matrix{Float64}(undef, 2, n_samples) + same_signal[1, :] = sin_1 + same_signal[2, :] = sin_1 + coh = avg_coh(mt_coherence(same_signal; demean=true, fs=fs, freq_range = (10, 15))) + same_signal_coherence = coh[2,1] + + # test in-place gets the same result + config = MTCoherenceConfig{eltype(same_signal)}(size(same_signal)...; demean=true, fs=fs, freq_range = (10, 15)) + out = allocate_output(config) + coh2 = avg_coh(mt_coherence!(out, same_signal, config)) + @test coh ≈ coh2 + + # check that the output object has the right frequency information and properties + coh_object = mt_coherence!(out, same_signal, config) + @test freq(coh_object) == coh_object.freq == config.cs_config.freq + @test all(x -> 10 <= x <= 15, freq(coh_object)) + # Check symmetries + for i in 1:2, j in 1:2, f in eachindex(freq(coh_object)) + @test coherence(coh_object)[i, j, f] == coherence(coh_object)[j, i, f] + if i == j + @test coherence(coh_object)[i,j, f] == 1 + end + end + + # check that manually demeaning with `demean=false` gives the same result + same_signal_demeaned = same_signal .- mean(same_signal; dims = 2) + coh3 = avg_coh(mt_coherence(same_signal_demeaned; demean = false)) + @test coh3 ≈ coh2 + + + @test_throws DimensionMismatch mt_coherence!(zeros(size(out,1), 2*size(out, 2), size(out, 3)), same_signal, config) + @test_throws DimensionMismatch mt_coherence!(out, vcat(same_signal, same_signal), config) + + + @test abs(same_signal_coherence - 1) < epsilon + + phase_shift = Matrix{Float64}(undef, 2, n_samples) + phase_shift[1, :] = sin_1 + phase_shift[2, :] = sin_2 + coh = avg_coh(mt_coherence(phase_shift; fs=fs, freq_range = (10, 15))) + phase_shift_coherence = coh[2,1] + @test abs(phase_shift_coherence - 1) < epsilon + @test coh[1,1] ≈ 1 + @test coh[2,2] ≈ 1 + + # test in-place gets the same result + config = MTCoherenceConfig{eltype(phase_shift)}(size(phase_shift)...; fs=fs, freq_range = (10, 15)) + out = allocate_output(config) + coh2 = avg_coh(mt_coherence!(out, phase_shift, config)) + @test coh ≈ coh2 + + # test out-of-place with config the same result + config = MTCoherenceConfig{eltype(phase_shift)}(size(phase_shift)...; fs=fs, freq_range = (10, 15)) + coh3 = avg_coh(mt_coherence(phase_shift, config)) + @test coh ≈ coh3 + + # test in-place without config the same result + coh4 = avg_coh(mt_coherence!(out, phase_shift; fs=fs, freq_range = (10, 15))) + @test coh ≈ coh4 + + # Construct the config via an `MTConfig` + mt_config = MTConfig{eltype(phase_shift)}(size(phase_shift, 2); fs=fs) + config = MTCoherenceConfig(size(phase_shift, 1), mt_config; freq_range = (10, 15)) + coh5 = avg_coh(mt_coherence(phase_shift, config)) + @test coh ≈ coh5 + + # Construct the config via an `MTCrossSpectraConfig` + config = MTCoherenceConfig(MTCrossSpectraConfig(size(phase_shift, 1), mt_config; freq_range = (10, 15))) + coh5 = avg_coh(mt_coherence(phase_shift, config)) + @test coh ≈ coh5 + + different_signal = Matrix{Float64}(undef, 2, n_samples) + different_signal[1, :] = sin_1 + different_signal[2, :] = noise + coh = avg_coh(mt_coherence(different_signal; fs=fs, freq_range = (10, 15))) + different_signal_coherence = coh[2,1] + # .8 is arbitrary, but represents a high coherence, so if a sine wave is + # that coherent with noise, there is a problem + @test different_signal_coherence < 0.8 + + # test in-place gets the same result + config = MTCoherenceConfig{eltype(different_signal)}(size(different_signal)...; fs=fs, freq_range = (10, 15)) + out = allocate_output(config) + coh2 = avg_coh(mt_coherence!(out, different_signal, config)) + @test coh ≈ coh2 + + less_noisy = Matrix{Float64}(undef, 2, n_samples) + less_noisy[1, :] = sin_1 + less_noisy[2, :] .= sin_1 .+ noise + coh = avg_coh(mt_coherence(less_noisy; fs=fs, freq_range = (10, 15))) + less_noisy_coherence = coh[2, 1] + + # test in-place gets the same result + config = MTCoherenceConfig{eltype(less_noisy)}(size(less_noisy)...; fs=fs, freq_range = (10, 15)) + out = allocate_output(config) + coh2 = avg_coh(mt_coherence!(out, less_noisy, config)) + @test coh ≈ coh2 + + more_noisy = Matrix{Float64}(undef, 2, n_samples) + more_noisy[1, :] = sin_1 + more_noisy[2, :] .= sin_1 .+ 3 * noise + coh = avg_coh(mt_coherence(more_noisy; fs=fs, freq_range = (10, 15))) + more_noisy_coherence = coh[2, 1] + @test less_noisy_coherence < same_signal_coherence + @test more_noisy_coherence < less_noisy_coherence + @test different_signal_coherence < more_noisy_coherence + + # test in-place gets the same result + config = MTCoherenceConfig{eltype(more_noisy)}(size(more_noisy)...; fs=fs, freq_range = (10, 15)) + out = allocate_output(config) + coh2 = avg_coh(mt_coherence!(out, more_noisy, config)) + @test coh ≈ coh2 + + several_signals = Matrix{Float64}(undef, 3, n_samples) + several_signals[1, :] = sin_1 + several_signals[2, :] = sin_2 + several_signals[3, :] = noise + several_signals_coherences = avg_coh(mt_coherence(several_signals; fs=fs, freq_range = (10, 15))) + @test length(several_signals_coherences) == 9 + @test several_signals_coherences[2, 1] ≈ phase_shift_coherence + @test several_signals_coherences[3, 1] ≈ different_signal_coherence + + # test in-place gets the same result + config = MTCoherenceConfig{Float64}(size(several_signals)...; fs=fs, freq_range = (10, 15)) + out = allocate_output(config) + @test eltype(out) == Float64 + coh2 = avg_coh(mt_coherence!(out, several_signals, config)) + @test coh2 ≈ several_signals_coherences + + # Float32 output: + config = MTCoherenceConfig{Float32}(size(several_signals)...; fs=fs, freq_range = (10, 15)) + out = allocate_output(config) + @test eltype(out) == Float32 + coh3 = avg_coh(mt_coherence!(out, several_signals, config)) + @test coh3 ≈ several_signals_coherences + + # Float32 input and output: + coh4 = avg_coh(mt_coherence!(out, Float32.(several_signals), config)) + @test coh4 ≈ several_signals_coherences +end + +@testset "`mt_coherence` reference test" begin + fs = 1000.0 + n_samples = 1024 + t = (0:1023) ./ fs + sin_1 = sin.(2 * π * 12.0 * t) # 12 Hz sinusoid signal + sin_2 = sin.(2 * π * 12.0 * t .+ π) + noise = vec(readdlm(joinpath(@__DIR__, "data", "noise.txt"))) # generated by `rand(1024) * 2 .- 1` + more_noisy = Array{Float64}(undef, 1, 2, n_samples) + more_noisy[1, 1, :] = sin_1 + more_noisy[1, 2, :] .= sin_1 .+ 3 * noise + + ## to generate the reference result: + # using PyMNE + # mne_coherence_matrix, _ = PyMNE.connectivity.spectral_connectivity(more_noisy, method="coh",sfreq=fs,mode="multitaper",fmin=10,fmax=15,verbose=false) + # coh = dropdims(mean(mne_coherence_matrix; dims=3); dims=3)[2, 1] + coh = 0.982356762670818 + + mt_config = DSP.Periodograms.dpss_config(Float64, n_samples; fs=fs, keep_only_large_evals=true, weight_by_evals=true) + config = MTCoherenceConfig(2, mt_config; freq_range = (10,15), demean=true) + result = avg_coh(mt_coherence(dropdims(more_noisy;dims=1), config)) + @test result[2, 1] ≈ coh +end + +@testset "`mt_cross_power_spectra`" begin + fs = 1000.0 + n_samples = 1024 + t = (0:1023) ./ fs + data = Array{Float64, 3}(undef, 1, 2, n_samples) + data[1,1,:] = sin.(2 * π * 12.0 * t) # 12 Hz sinusoid signal + data[1,2,:] = sin.(2 * π * 12.0 * t .+ π) + ## Script to generate reference data: + # using PyMNE, DelimitedFiles + # result = PyMNE.time_frequency.csd_array_multitaper(data, fs, n_fft = nextpow(2, n_samples), low_bias=true, adaptive=false) + # csd_array_multitaper_frequencies = result.frequencies + # csd_array_multitaper_values = reduce((x,y) -> cat(x,y; dims=3), [ r.get_data() for r in result]) + # writedlm("data/csd_array_multitaper_frequencies.txt", csd_array_multitaper_frequencies) + # writedlm("data/csd_array_multitaper_values_re.txt", real(csd_array_multitaper_values)) + # writedlm("data/csd_array_multitaper_values_im.txt", imag(csd_array_multitaper_values)) + csd_array_multitaper_frequencies = readdlm(joinpath(@__DIR__, "data", "csd_array_multitaper_frequencies.txt")) + csd_array_multitaper_values_re = reshape(readdlm(joinpath(@__DIR__, "data", "csd_array_multitaper_values_re.txt")), (2,2,512)) + csd_array_multitaper_values_im = reshape(readdlm(joinpath(@__DIR__, "data", "csd_array_multitaper_values_im.txt")), (2,2,512)) + csd_array_multitaper_values = csd_array_multitaper_values_re + im*csd_array_multitaper_values_im + + signal = dropdims(data; dims=1) + mt_config = DSP.Periodograms.dpss_config(Float64, n_samples; fs=fs, keep_only_large_evals=true, weight_by_evals=true) + config = MTCrossSpectraConfig(2, mt_config; demean=true) + result = mt_cross_power_spectra(signal, config) + @test signal isa Matrix{Float64} + @test freq(result)[2:end] ≈ csd_array_multitaper_frequencies + @test power(result)[:,:,2:end] ≈ csd_array_multitaper_values + + # Test in-place. Full precision: + config = MTCrossSpectraConfig(size(signal, 1), mt_config; demean=true) + out = allocate_output(config) + @test eltype(out) == Complex{Float64} + result2 = mt_cross_power_spectra!(out, signal, config) + @test freq(result) ≈ freq(result2) + @test power(result) ≈ power(result2) + + # Float32 output: + mt_config32 = DSP.Periodograms.dpss_config(Float32, n_samples; fs=fs, keep_only_large_evals=true, weight_by_evals=true) + config = MTCrossSpectraConfig(size(signal, 1), mt_config32; demean=true) + out = allocate_output(config) + @test eltype(out) == Complex{Float32} + result2 = mt_cross_power_spectra!(out, signal, config) + @test freq(result2) ≈ freq(result) + @test power(result2) ≈ power(result) + + # Float32 input and output: + result3 = mt_cross_power_spectra!(out, Float32.(signal), config) + @test freq(result3) ≈ freq(result) + @test power(result3) ≈ power(result) + + @test_throws DimensionMismatch mt_cross_power_spectra!(similar(out, size(out, 1) + 1, size(out, 2), size(out, 3)), signal, config) + @test_throws DimensionMismatch mt_cross_power_spectra!(out, vcat(signal, signal), config) + +end + + +@testset "`mt_cross_power_spectra` agrees with `mt_pgram`" begin + fs = 1000.0 + n_samples = 1024 + t = (0:1023) ./ fs + noise = vec(readdlm(joinpath(@__DIR__, "data", "noise.txt"))) + signal = sin.(2 * π * 12.0 * t) .+ 3 * noise + cs = mt_cross_power_spectra(reshape(signal, 1, :); fs=fs) + p = mt_pgram(signal; fs=fs) + + @test freq(cs) ≈ freq(p) + @test dropdims(power(cs); dims=(1,2)) ≈ power(p) + + # out-of-place with config + config = MTCrossSpectraConfig{Float64}(1, length(signal); fs=fs) + cs = mt_cross_power_spectra(reshape(signal, 1, :), config) + @test freq(cs) ≈ freq(p) + @test dropdims(power(cs); dims=(1,2)) ≈ power(p) + + # in-place without config + out = allocate_output(config) + cs = mt_cross_power_spectra!(out, reshape(signal, 1, :); fs=fs) + @test freq(cs) ≈ freq(p) + @test dropdims(power(cs); dims=(1,2)) ≈ power(p) + + # rm once two-sided FFTs supported + @test_throws ArgumentError mt_cross_power_spectra(reshape(complex.(signal), 1, :); fs=fs) +end diff --git a/test/periodograms.jl b/test/periodograms.jl index 4d651b25d..bfc8d2bbf 100644 --- a/test/periodograms.jl +++ b/test/periodograms.jl @@ -30,6 +30,68 @@ using FFTW: fftfreq @test p0 ≈ p @test f0 ≈ f @test t0 ≈ t + + + mt_spec = mt_spectrogram(x0, 256, 128; fs=10) + @test freq(mt_spec) == f + @test time(mt_spec) == t + @test power(mt_spec)[:,1] ≈ power(mt_pgram(x0[1:256]; fs=10)) + + # in-place full precision version: + spec_config = MTSpectrogramConfig{Float64}(length(x0), 256, 128; fs=10) + out = allocate_output(spec_config) + mt_spec2 = mt_spectrogram!(out, x0, spec_config) + @test power(mt_spec2) ≈ power(mt_spec) + @test freq(mt_spec2) == freq(mt_spec) + @test time(mt_spec2) == time(mt_spec) + + # out-of-place with config: + r = mt_spectrogram(x0, spec_config) + @test power(r) ≈ power(mt_spec) + @test freq(r) == freq(mt_spec) + @test time(r) == time(mt_spec) + + # in-place without config: + r = mt_spectrogram!(out, x0, 256, 128; fs=10) + @test power(r) ≈ power(mt_spec) + @test freq(r) == freq(mt_spec) + @test time(r) == time(mt_spec) + + # in-place half precision version: + spec_config = MTSpectrogramConfig{Float32}(length(x0), 256, 128; fs=10) + out = allocate_output(spec_config) + mt_spec3 = mt_spectrogram!(out, x0, spec_config) + @test power(mt_spec3) ≈ power(mt_spec) + @test freq(mt_spec3) == freq(mt_spec) + @test time(mt_spec3) == time(mt_spec) + + mt_spec4 = mt_spectrogram!(out, Float32.(x0), spec_config) + @test power(mt_spec4) ≈ power(mt_spec) + @test freq(mt_spec4) == freq(mt_spec) + @test time(mt_spec4) == time(mt_spec) + + # We can also only pass the window config. Full precision: + config = MTConfig{Float64}(256; fs=10) + mt_spec5 = mt_spectrogram(x0, config, 128) + @test power(mt_spec5) ≈ power(mt_spec) + @test freq(mt_spec5) == freq(mt_spec) + @test time(mt_spec5) == time(mt_spec) + + # We can also only pass the window config. Half precision: + config = MTConfig{Float32}(256; fs=10) + mt_spec6 = mt_spectrogram(x0, config, 128) + @test power(mt_spec6) ≈ power(mt_spec) + @test freq(mt_spec6) == freq(mt_spec) + @test time(mt_spec6) == time(mt_spec) + + # with Float32 input: + mt_spec7 = mt_spectrogram(Float32.(x0), config, 128) + @test power(mt_spec7) ≈ power(mt_spec) + @test freq(mt_spec7) == freq(mt_spec) + @test time(mt_spec7) == time(mt_spec) + + @test_throws DimensionMismatch mt_spectrogram!(similar(out, size(out, 1), size(out, 2)+1), x0, spec_config) + @test_throws DimensionMismatch mt_spectrogram!(out, vcat(x0, x0), spec_config) end @testset "0:7" begin @@ -309,4 +371,91 @@ end @assert isa(x, Vector) @test pointer(x) == pointer(q.buf) end + + x = vec(readdlm(joinpath(dirname(@__FILE__), "data", "pmtm_x.txt"))) + @test eltype(x) <: Float64 + + # MATLAB code: + # fft = 2^nextpow2(length(x)); + # [pxx,fx] = pmtm(x,4,nfft,1000,'unity'); + fx = vec(readdlm(joinpath(dirname(@__FILE__), "data", "pmtm_fx.txt"))) + pxx = vec(readdlm(joinpath(dirname(@__FILE__), "data", "pmtm_pxx.txt"))) + + fs = 1000 + nw=4 + nfft = nextpow(2, length(x)) + result = mt_pgram(x; fs=fs, nw=nw, nfft=nfft) + @test freq(result) ≈ fx + @test power(result) ≈ pxx + + # Test against in-place. Full precision: + config = MTConfig{Float64}(length(x); fs=fs, nw=nw, nfft=nfft) + out = allocate_output(config) + @test eltype(out) == Float64 + result2 = mt_pgram!(out, x, config) + @test freq(result2) ≈ fx + @test power(result2) ≈ pxx + + # in-place without config + r = mt_pgram!(out, x; fs=fs, nw=nw, nfft=nfft) + @test freq(r) ≈ fx + @test power(r) ≈ pxx + + # out-of-place with config + r = mt_pgram(x, config) + @test freq(r) ≈ fx + @test power(r) ≈ pxx + + # Lower precision output: + config = MTConfig{Float32}(length(x); fs=fs, nw=nw, nfft=nfft) + out = allocate_output(config) + @test eltype(out) == Float32 + result3 = mt_pgram!(out, x, config) + @test freq(result3) ≈ fx + @test power(result3) ≈ pxx + + # with Float32 input: + result4 = mt_pgram!(out, Float32.(x), config) + @test freq(result4) ≈ fx + @test power(result4) ≈ pxx + + @test_throws DimensionMismatch mt_pgram!(similar(out, length(out)+1), x, config) + @test_throws DimensionMismatch mt_pgram!(out, vcat(x, one(eltype(x))), config) + + y = vec(readdlm(joinpath(dirname(@__FILE__), "data", "pmtm_y.txt"))) + z = x + im*y + @test eltype(z) <: Complex{Float64} + + # MATLAB code: `[pzz,fz] = pmtm(z,4,nfft,1000, 'unity')` + fz = vec(readdlm(joinpath(dirname(@__FILE__), "data", "pmtm_fz.txt"))) + pzz = vec(readdlm(joinpath(dirname(@__FILE__), "data", "pmtm_pzz.txt"))) + result = mt_pgram(z; fs=fs, nw=nw, nfft=nfft) + result_mask = 0 .< freq(result) .< 500 + freqs = freq(result)[result_mask] + @test freqs ≈ fz[2:length(freqs)+1] + @test power(result)[result_mask] ≈ pzz[2:length(freqs)+1] + + # Test against in-place. Full precision: + config = MTConfig{Complex{Float64}}(length(z); fs=fs, nw=nw, nfft=nfft) + out = allocate_output(config) + @test eltype(out) == Float64 + + result2 = mt_pgram!(out, z, config) + @test freq(result2) == freq(result) + @test power(result2) ≈ power(result) + + # Lower precision output: + config = MTConfig{Complex{Float32}}(length(z); fs=fs, nw=nw, nfft=nfft) + out = allocate_output(config) + @test eltype(out) == Float32 + + result2 = mt_pgram!(out, z, config) + @test freq(result2) == freq(result) + @test power(result2) ≈ power(result) + + # Lower precision computation: + result3 = mt_pgram!(out, Complex{Float32}.(z), config) + @test freq(result3) == freq(result) + @test power(result3) ≈ power(result) + end diff --git a/test/runtests.jl b/test/runtests.jl index d418e2750..a4a0460e0 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,10 +1,10 @@ -using DSP, FFTW, Test - +using DSP, FFTW, Test +using DSP: allocate_output using Random: seed! -testfiles = [ "dsp.jl", "util.jl", "windows.jl", "filter_conversion.jl", +testfiles = ["dsp.jl", "util.jl", "windows.jl", "filter_conversion.jl", "filter_design.jl", "filter_response.jl", "filt.jl", "filt_stream.jl", - "periodograms.jl", "resample.jl", "lpc.jl", "estimation.jl", "unwrap.jl", + "periodograms.jl", "multitaper.jl", "resample.jl", "lpc.jl", "estimation.jl", "unwrap.jl", "remez_fir.jl" ] seed!(1776) diff --git a/test/util.jl b/test/util.jl index 73af99f72..b302a2744 100644 --- a/test/util.jl +++ b/test/util.jl @@ -90,7 +90,23 @@ end @test shiftin!([1,2,3,4],[5,6]) ≈ [3,4,5,6] ## arraysplit -@test collect(DSP.arraysplit(collect(1:10), 3, 1)) == [ collect(1.0:3), collect(3.0:5), collect(5.0:7), collect(7.0:9)] + +# utility for checking our definition off `size` for `arraysplit` matches how many times we can iterate it +function _length(itr) + c = 0 + for x in itr + c += 1 + end + return c +end + +@testset "`arraysplit`" begin + @test collect(DSP.arraysplit(collect(1:10), 3, 1)) == [ collect(1.0:3), collect(3.0:5), collect(5.0:7), collect(7.0:9)] + + @testset "`arraysplit` with `n_samples`=$(n_samples), `n_samples_per_window`=$(n_samples_per_window), `n_overlap`=$(n_overlap) " for n_samples in (20:20:100), n_samples_per_window in (20:20:100), n_overlap in (0:20:(n_samples_per_window-1)) + @test _length(arraysplit(1:n_samples, n_samples_per_window, n_overlap)) == length(arraysplit(1:n_samples, n_samples_per_window, n_overlap)) + end +end # DELAY FINDING UTILITIES